IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オラクル・インターナショナル・コーポレイションの特許一覧

特許7519476質問と要求とを自律エージェントが区別できるようにすること
<>
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図1
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図2
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図3
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図4
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図5
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図6
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図7
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図8
  • 特許-質問と要求とを自律エージェントが区別できるようにすること 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-10
(45)【発行日】2024-07-19
(54)【発明の名称】質問と要求とを自律エージェントが区別できるようにすること
(51)【国際特許分類】
   G06F 16/35 20190101AFI20240711BHJP
   G06F 40/279 20200101ALI20240711BHJP
【FI】
G06F16/35
G06F40/279
【請求項の数】 9
【外国語出願】
(21)【出願番号】P 2023006146
(22)【出願日】2023-01-18
(62)【分割の表示】P 2020517888の分割
【原出願日】2018-09-28
(65)【公開番号】P2023052487
(43)【公開日】2023-04-11
【審査請求日】2023-02-01
(31)【優先権主張番号】62/564,868
(32)【優先日】2017-09-28
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502303739
【氏名又は名称】オラクル・インターナショナル・コーポレイション
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ガリツキー,ボリス
(72)【発明者】
【氏名】ビシュノイ,ビシャル
(72)【発明者】
【氏名】シュ,シン
【審査官】三橋 竜太郎
(56)【参考文献】
【文献】特開2008-165718(JP,A)
【文献】特開2013-190985(JP,A)
【文献】特開2011-065380(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
G06F G06F 40/20-40/40
(57)【特許請求の範囲】
【請求項1】
テキストを分類するためのコンピュータによって実行される方法であって、
テキストを含む発話にアクセスするステップと、
前記発話の解析木を生成するステップとを含み、
前記解析木は、品詞を含む少なくとも1つの終端ノードを含み、
各終端ノードは、前記発話の単語または句を表し、
前記解析木は、前記発話の統語情報を識別し、
前記方法は、さらに、
(a)現在形または能動態であって、(b)法助動詞ではない、内的動詞ではない、または「to be」という単語形式ではない動詞を確認することによって前記解析木に(1)前記発話の最初の単語として命令形動詞を確認したことに応答して、または、前記解析木に(2)一人称代名詞および内的動詞を確認したことに応答して、前記発話が要求であると分類するステップと、
前記分類に基づいて、ユーザデバイスにメッセージを送るまたは外部装置の構成を調整するステップとを含む、方法。
【請求項2】
前記識別するステップは、
前記解析木に訓練済み分類モデルを適用するステップと、
前記分類モデルから前記発話の分類を受け付けるステップとを含み、
前記分類は、質問に関連付けられた第2の類似度スコアよりも高い、前記要求に関連付けられた第1の類似度スコアによって判断される、請求項1に記載の方法。
【請求項3】
前記分類モデルは、ツリーカーネルモデルまたはサポートベクターマシンである、請求項2に記載の方法。
【請求項4】
訓練データペアのセットを含む訓練データのセットにアクセスするステップをさらに含み、
各訓練データペアは、テキストと予想分類とを含み、
前記訓練データのセットは、
(1)要求を示す特徴量を含む第1の訓練データペアと、
(2)質問を示す特徴量を含む第2の訓練データペアとを含み、
前記訓練データペアのうちの一方を前記分類モデルに提供し、判断した前記分類と前記予想分類との差に基づいて前記分類の内部パラメータを調整する、ことを反復して行うことによって、前記分類モデルを訓練するステップをさらに含む、請求項2に記載の方法。
【請求項5】
前記解析木に、(1)最初の単語の位置に質問を意図する接頭辞を確認または(2)最後の単語の位置にある要求の接尾辞atの前にある目的語への参照を確認したことに応答して、前記発話を質問として分類するステップをさらに含む、請求項1~のいずれかに記載の方法。
【請求項6】
前記解析木に1つ以上の定義済みの質問キーワードを確認したことに応答して、前記発話を質問として分類するステップをさらに含む、請求項1~のいずれかに記載の方法。
【請求項7】
前記解析木に、(1)前記発話の最後の単語の位置に要求の接尾辞atを確認、(2)トランザクション動詞を確認、または(3)1つ以上の定義済みの要求キーワードを確認したことに応答して、前記発話を要求として分類するステップをさらに含む、請求項1~のいずれかに記載の方法。
【請求項8】
請求項1~のいずれかに記載の方法をシステムに実行させるための、プログラム。
【請求項9】
請求項に記載のプログラムを格納したメモリと、
前記プログラムを実行するための1つ以上のプロセッサとを備える、システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、2017年9月28日に出願された米国仮出願第62/564,868号の利益を主張するものであり、そのすべての記載内容を引用により本明細書に援用する。
【0002】
技術分野
本開示は、全体的に、言語学に関する。より具体的には、本開示は、発話を質問または自律エージェントに操作を実行させる要求として分類するための言語学を利用することに関する。
【0003】
政府支援の研究開発によってなされた発明に対する権利に関する声明
なし
【背景技術】
【0004】
背景
自律エージェントを利用して、様々なユーザの質問に対処することができる。たとえば、自律エージェントは、「what are the fees associated
with a checking account(当座預金に関連する手数料はいくらですか)」など、情報の要求をユーザから受け付ける。次に、ユーザは、「please open a new bank account for me(新しい銀行口座を開設してください)」と要求する可能性がある。
【0005】
しかし、現在のソリューションでは、質問に関するユーザの発話と、操作を実行させる要求である発話とを区別することができない。その理由として、1つには、要求が「please turn on the heat(暖房を入れてください)」など明示的ではなく、「I am too cold(すごく寒い)」など、暗示的であり得るからである。既存のソリューションでは、「I am too cold」を「coldness(寒さ)」に関する質問として誤って分類していまい、「in San Francisco、the temperature can sometimes be cold(サンフランシスコでは、気温が低いときがあります)」などの受け答えを提供してしまう場合がある。
【0006】
したがって、既存のソリューションでは、ユーザをイライラさせてしまう可能性がある。上記例を用いて進めると、自律エージェントがヒーターの電源を入れる、というユーザの希望が無視されるため、ユーザがイライラしてしまう可能性がある。これら2種類の発話を間違えてしまうことの関連性は高い。たとえば、エージェントがユーザの質問の解釈を誤ると、ユーザは、質問を明確に言い直す場合があるが、エージェントが質問を再び認識できない場合、ユーザは、どう続けてよいか戸惑ってしまうか、単純に、エージェントを利用することを完全に断念してしまう可能性があり、エージェントが全く役に立たなくなってしまう。ユーザがイライラすることで、結果的に、自律エージェントの受け入れ率が低くなり得る。
【0007】
このように、質問と要求とを区別するためのソリューションが必要である。
【発明の概要】
【課題を解決するための手段】
【0008】
概要
一般に、本発明のシステム、装置、および方法は、テキスト分類に関する。一態様において、システムは、言語エンジンと、ルールエンジンとを備える。言語エンジンは、少なくとも1つの単語を含む発話にアクセスするように構成される。言語エンジンは、さらに、この発話の解析木を生成するように構成される。解析木は、品詞を含む少なくとも1つの非終端ノードと、種類を含む少なくとも1つの終端ノードとを含む。各終端ノードは、発話の単語または句を表す。言語エンジンは、さらに、解析木に1つ以上の品詞を含む1つ以上の言語テンプレートを適用するように構成される。ルールエンジンは、言語エンジンから取得される1つ以上の照合結果を生成し、ルールを適用することによってテキストの分類を判断するように構成される。ルールは、言語テンプレート照合を判断することに応答して、発話を要求として分類することを含む。ルールは、発話が最初の単語として命令形動詞を含むと判断することに応答して、発話を要求として分類することをさらに含む。ルールは、さらに、発話に1つ以上の定義済みの要求キーワードを確認することに応答して、発話を要求として分類することを含む。ルールは、さらに、発話に1つ以上の定義済みの質問キーワードを確認することに応答して、発話を質問として分類することを含む。システムは、さらに、分類に基づいて、メッセージをユーザデバイスに送るまたは外部装置の構成を調整するように構成される。
【0009】
一態様において、ルールは、発話を質問または要求として識別できないことに応答して、発話を不明として分類することをさらに含む。
【0010】
一態様において、言語テンプレートは、一人称代名詞および名詞を含む。
一態様において、ルールは、発話が最初の単語の位置に質問接頭辞を含んでいると判断することに応答して、発話を質問として分類することをさらに含む。
【0011】
一態様において、1つ以上の定義済みの質問ワードは、内的動詞を含む。
一態様において、ルールは、発話が最後の単語の位置に要求の接尾辞を含んでいると判断することに応答して、発話を要求として分類することをさらに含む。
【0012】
一態様において、ルールは、発話がトランザクション動詞を含んでいると判断することに応答して、発話を要求として分類することをさらに含む。
【0013】
一態様において、言語エンジンは、解析木を決定する前に、発話から1つ以上のストップワードを取り除くように構成される。
【0014】
一態様において、分類モデルを利用して発話を質問または要求として分類するための方法は、テキストの発話にアクセスする。発話は、少なくとも1つの単語を含む。この方法は、発話の解析木を生成する。解析木は、品詞を含む少なくとも1つの非終端ノードと、種類を含む少なくとも1つの終端ノードとを含む。各終端ノードは、発話の単語または句を表す。方法は、解析木に分類モデルを適用することによって、発話の分類を判断する。発話の分類を判断するステップは、解析木について、発話と発話として識別された訓練クラスとの第1の一致を示す第1の類似度スコアを決定することを含む。発話の分類を判断するステップは、解析木について、発話と要求として識別された訓練クラスとの第2の一致を示す第2の類似度スコアを決定することを含む。方法は、分類モデルから、発話の分類を受け付けるステップを含む。この分類は、判断されたクラスの類似度スコアがその他の類似度スコアよりも高いことに基づくまたは不明である。
【0015】
一態様において、方法は、訓練データペアのセットを含む訓練データのセットにアクセスする。各訓練データペアは、テキストと予想分類とを含む。訓練データのセットは、質問を含む第1の訓練データペアと、要求を含む第2の訓練データペアとの両方を含む。方法は、訓練データペアのうちの1つを分類モデルに提供し、判断された分類を分類モデル
から受け付け、判断された分類と予想分類との差を算出することによって損失関数を算出し、分類モデルの内部パラメータを調整して損失関数を最小化する、ことを反復して行うことによって、分類モデルを訓練する。
【0016】
一態様において、分類発話への類似度が最も高い分類である。
上記方法は、有形のコンピュータ読み取り可能な媒体上で実行され得る、および/または、コンピュータプロセッサおよび付属のメモリ内で動作し得る。
【図面の簡単な説明】
【0017】
図1】一態様に係る、テキスト分類環境の例を示す図である。
図2】一態様に係る、解析木の例を示す図である。
図3】一態様に係る、テキスト分類環境において用いられる分類データの例を示す図である。
図4】一態様に係る、質問と要求とを区別するための処理例を説明するフローチャートである。
図5】一態様に係る、質問と要求とを区別するために用いられるルールの例を説明するフローチャートである。
図6】一態様に係る、発話が質問であるかまたは要求であるかを検出するように機械学習モデルを訓練するための例示的な処理のフローチャートである。
図7】態様のうちの1つを実装するための分散システムの簡略図である。
図8】一態様に係る、一態様のシステムの構成要素によって提供されるサービスがクラウドサービスとして提供され得るシステム環境の構成要素の簡略ブロック図である。
図9】本発明の様々な態様が実装され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【0018】
詳細な説明
本明細書に開示の態様は、テキストの分類を向上させることによって、コンピュータで実行される言語学の分野に対する技術改良を提供する。より具体的には、特定の態様は、言語学を用いて、テキストが質問であるか操作を実行させる要求であるかを判断する。上述したように、自律エージェントについての既存のソリューションでは、質問とトランザクション要求とを区別することができず、これによって、エージェントとユーザとのやり取りが失敗に終わってしまう。
【0019】
2人の人間同士の会話は、談話形式である。第1の人間と第2の人間との会話は、電子メールおよび音声会話など、ほかの従来の手段に加えて、電子メッセージ(たとえば、チャット)によるものであり得る。自律エージェント、ChatBot、Autonomous Digital Assistant(自立型デジタルアシスタント)、またはバーチャルアシスタントは、第2の人間に置き換わり得る「インテリジェント」マシンであり、程度の差はあっても、2人の人間同士の会話をまねることができる。このようなシステムの1つの目標は、第1の人間が、第2の人間がマシンであることがわからないようになることである(アラン・チューリングが1950年に開発したチューリングテスト)。
【0020】
たとえば、ユーザは、会話によるやり取りによって自律エージェントとやり取りすることができる。会話型ユーザインタフェースとも呼ばれるこのやり取りは、あたかも2人の人間同士の問答のような、エンドユーザとエージェントとの対話である。エンドユーザが「Hello」とエージェントに呼びかけて、エージェントが「Hi」で応答してユーザにご用件は何でしょうかとたずねるくらいに単純なものであり得る。あるいは、ある口座から別の口座にお金を振り込むなど、銀行業務エージェントにおける取引のやり取り、バケーション用の残高を確認するなど、HRエージェントにおける情報のやり取り、小売り
エージェントにおける、返品の取り扱い方法などの、よくある質問をたずねることであり得る。
【0021】
その他の手法と組み合わされた自然言語処理(NLP:Natural Language Processing)アルゴリズムおよび機械学習(ML:Machine Learning)アルゴリズムを用いて、エンドユーザの意図を分類することができる。上位意図は、エンドユーザが達成したい意図である(口座残高を知る、購入するなど)。意図は、バックエンド処理が実行する作業単位に顧客からの入力をマッピングすることであり得る。また、意図は、特定のエージェント操作(たとえば、要求)につながる発話のクラスであり得る。そのため、エージェントにおいてユーザが発した句に基づいて、個別のユースケースまたは作業単位にこれらの句がマッピングされる。たとえば、残高確認、送金、および支出管理はすべて、エージェントがサポートすべき「ユースケース」であり、エンドユーザが自然言語で入力する自由形式のテキスト入力からどの作業単位がトリガされるべきかを解決できなければならないユースケースである。
【0022】
上位では、通常、(1)何らかの操作を実行させる要求と、(2)質問など、情報を求める要求という2種類の要求があり得る。要求は、作業単位が作成される応答を有する。質問は、たとえば、適切な回答など、質問に対する応答を有する。いくつかの態様では、回答は、エージェントがその幅広い知識ベース(複数可)からまたはインターネットもしくはイントラネット、またはその他のパブリックまたはプライベートで利用可能なデータソースを探索して得られた最良の既存の回答に照合させることから回答を構成するという形態を取り得る。
【0023】
文脈解析、機械学習を含む人工知能、および自然言語処理は、チューリングテストに合格するという長期的な目標に向かって大きな一歩を踏み出した。非常に大きなデータのリポジトリを検索および処理でき、かつ、予測分析を備えるために複雑なデータ分析をコンピュータが行えるようになると、エージェントが人間のように振る舞い、コンピュータと組み合わされるようになることが長期的な目標になる。しかし、このようなソリューションでは、質問とトランザクション要求との区別ができない。
【0024】
発話を質問または要求として分類するために、特定の態様は、キーワード分析と連動して解析木およびテンプレートによる言語分析を利用する。命令形動詞など、特定のキーワードは、発話が操作要求であることを示し得る。同様に、内的動詞または特定の接頭辞など、特定の品詞の特定の組合せを発話が含んでいるかどうかによって、この文が操作を実行させる要求であるかどうかが示され得る。特定の態様は、言語処理を機械学習で補足し、たとえば、分析のさらなる向上や、カスタマイズを可能にする。
【0025】
発話は、明確に表現された要求(たとえば、「please turn up the
heat(暖房の温度を上げてください)」または暗黙的に表現された要求(たとえば、「it is cold(寒い)」)を含み得る。トランザクション要求は、質問形式であり得る。たとえば、「what is my account balance(私の口座残高はいくらですか)」という単純な質問は、アカウントを選択してデータベースクエリを実行し、口座残高を判断するためのトランザクション要求であり得る。さらに、ユーザは、所望の状態を実現するための明確な操作ではなく、当該状態を要求する場合がある。たとえば、「I am too cold(寒い)」という発話は、質問ではなく、暖房を入れることによって実現できる所望の状態をほのめかしている。有効な操作が「cold」に関連付けられていない場合、この発話は、「coldness(寒さ)」に関する質問として分類され得る。本明細書において説明する態様は、質問とトランザクション要求とを言語学的に区別することによって、このような曖昧であると思われる句を汎用的に扱うことができる。
【0026】
上述したように、質問であるかトランザクション要求であるかの認識を誤ることは、問題となり得る。自律エージェントがユーザの質問の誤って解釈して異なる質問に対する回答を返してしまった場合、ユーザは、質問を明確に言い直して再度要求し得る。自律エージェントがトランザクション要求を、意図されていないトランザクションとして認識すると、ユーザは、エージェントが要求を発行して不適切なパラメータを指定したときにそれを理解することになる。次に、ユーザは、要求をキャンセルして要求を明確に言い直す可能性がある。しかしながら、誤って理解された質問およびトランザクション要求に関連するエージェントのエラーは修正することができるものの、質問であるかトランザクション要求であるかの認識を誤るエージェントのエラーは、会話の流れを絶ってしまい、会話をどう継続すればよいのかとユーザを困惑させてしまい、その結果、ユーザをイライラさせ、おそらく、自律エージェントが無用なものとして拒否されてしまうことになる。
【0027】
これに加えて、質問とトランザクション要求とを区別することは、汎用的でなければならない(たとえば、銀行業務、カスタマーサービス、調査など、特定の案件に依存してはならない)。特定の態様は、専門知識を用いてマシンを訓練している自律エージェントのシステム開発者を、少なくとも質問であるかトランザクション要求であるかを区別するための訓練から解放する。また、特定の態様は、コンテキストに依存しないで動作する。たとえば、自律エージェントは、質問と要求に関する会話との切り替えに対応することができる。
【0028】
特定の態様を紹介するために、下記の非限定例を提供する。分類アプリケーションを実行する自律エージェントは、「how do I check my balance?(残高はどうやって確認できますか?)」というメッセージを受信する。分類アプリケーションは、定義済みの語彙およびテンプレートを含んだ分類データのセットにアクセスする。分類アプリケーションは、構文解析と意味的照合とを含む言語処理を発話に対して行い、発話にルールセットを適用して発話を質問として分類する。今度は、自律エージェントが銀行残高の確認の仕方についての情報をユーザデバイスに提供する。
【0029】
定義
本明細書において使用するとき、「発話」は、口頭または文書など、任意の形式の1つ以上の単語である。発話として、「please turn on the lights(照明を点けてください)」、「what’s the weather?(どんな天気ですか?)」などが挙げられる。
【0030】
本明細書において使用するとき、「解析木」または「構文木」は、テキストの統語構造を表す根付きの順序木を指す。たとえば、
本明細書において使用するとき、「品詞」は、単語の属性を指す。動詞、名詞、名詞句、前置詞などが挙げられる。
【0031】
本明細書において使用するとき、「接頭辞」は、文中のすべての単語のうち、最初の単語またはその一部を指す。「please」、「kindly」、または「help」などが挙げられる。
【0032】
本明細書において使用するとき、「接尾辞」は、文中のすべての単語のうち、最後にある単語またはその一部を指す。「off」または「on」などが挙げられる。
【0033】
ここで、図面を参照すると、図1は、一態様に係る、テキスト分類環境の例を示す図である。図1は、ユーザデバイス170と、自律エージェント101と、外部装置180とを備えるテキスト分類環境100を示す図である。ユーザデバイス170は、メッセージ
によって自律エージェント101と対話するように構成される。今度は、自律エージェント101がユーザのメッセージを分析し、ユーザの意図、具体的には、メッセージが質問を示しているか要求を示しているかを判断する。ユーザの要求に応答して、外部装置180を起動または再構成し得る。外部装置として、照明、車庫の扉、音楽プレーヤ、車などが挙げられる。
【0034】
ユーザデバイス170は、携帯電話、スマートフォン、タブレット端末、ラップトップ、スマートウォッチなど、任意のモバイル機器であり得る。ユーザデバイス170の機能は、たとえば、アプリケーションまたはウェブアプリケーションを介してソフトウェアで実現され得る。ユーザデバイス170は、ディスプレイ171を含む。ディスプレイ171として、コンピュータ画面、モバイル機器画面、LCD、またはLEDバックライト付きディスプレイなどが挙げられる。ディスプレイ171は、4つのメッセージ181~184を表示する。
【0035】
自律エージェント101は、分類アプリケーション102、分類データ120、言語エンジン130、ルールエンジン140、分類モデル150、または訓練データ160のうちの1つ以上を含む。分類データ120は、語彙、テンプレート、ならびに、言語エンジン130およびルールエンジン140によって利用される構成部品を含み得る。たとえば、分類データ120は、発話が要求であると示す先頭動詞(leading verb)の一覧を含む。「turn on the lights」において用いられる動詞「turn」、および「open the garage door」において用いられる「open」などがある。これに加えて、分類データ120は、発話中に存在する、ユーザが何かを欲しがっていることを示す表現を含む。「Please do … for me」などの句、または、「Give me my … 」など、情報の要求を示す句などが挙げられる。また、これらの表現は、「please tell me…」などの質問へのユーザによる異なる対処方法を含む。分類データ120に含まれるデータのさらに別の例を、図3で説明する。
【0036】
言語エンジン130は、1段階以上の言語分析を発話に対して実行する。たとえば、言語エンジン130は、先頭動詞の存在、および所有格に含まれる目的語への参照(たとえば、「my house」)を検出することができる。言語エンジン130は、パーサ131と、照合部132とを備える。照合部132は、1つ以上のテンプレートを構文解析された発話に適用して、発話が質問であるか要求であるかを判断することができる。テンプレートとして、文字列テンプレートおよび言語テンプレートなどが挙げられる。文字列テンプレートは、発話中の文字列の存在を検出する一方、言語テンプレートは、1つ以上の特定の品詞(たとえば、名詞、動詞、代名詞)の一致の存在を判断する。
【0037】
ルールエンジン140は、キーワードベースのルール、語彙ベースのルール、および言語ベースのルールのシーケンスを適用する。これらのルールは、特定の順番で適用され得る。一態様において、ルールエンジン140は、発話に含まれる要求を識別しようと試みる。識別される要求がなかった場合、ルールエンジン140は、デフォルト決定にフォールバックして発話を質問として分類することができる。しかし、質問を示すルールも可能である。分類アプリケーション102は、ルールエンジン140によって行われた決定を受け付けて分類を出力する。
【0038】
一例では、ユーザデバイス170は、自律エージェント101と対話を行い、ユーザが質問および要求することを容易にする。分類アプリケーション102は、ユーザデバイス170からメッセージ181を受信する。メッセージ181は、「Transfer funds from checking to savings(資金を当座預金から普通預金に移動してください)」というユーザの発話である。この例を引き続き使用すると
、分類アプリケーション102は、先頭の命令形動詞「transfer(移動する)」の存在を判断して、メッセージ181が要求であると判断する。ユーザデバイス170にメッセージ182を送信することによって、自律エージェント102は、「please
confirm the amount(金額を確認してください)」というメッセージをユーザに表示する。次に、ユーザデバイス170は、自律エージェント101に、「how do I check my balance?(残高はどうやって確認できますか?)」という返信メッセージ183を送る。今度は、ユーザの意図、具体的には、情報の要求を分類アプリケーション102が判断し、ユーザが残高を確認するのを助けるメッセージ184を返送する。
【0039】
これに加えて、特定の態様は、機械学習を利用してルールの適用を自動化することができる。たとえば、特定の態様は、分類モデル150を利用して、質問であるか要求であるかの分類を取得する。分類モデル150は、ルールエンジン140の代わりに、またはルールエンジン140に加えて利用され得る。訓練データ160は、テキストと予想分類(質問または要求)とを含む訓練ペアを含んでいる。分類アプリケーション102は、訓練データ160を利用して分類モデル150を訓練し得る。自律エージェントに加えて、本明細書に記載の態様の実際の適用例には、Autonomous Mobile Cloud Enterpriseを含む、モバイルクラウドの実装などがある。
【0040】
図2は、一態様に係る、解析木の例を示す図である。図2は、パーサ131が「Turn on the light」という文から生成した解析木200を示す図である。解析木200は、ノード201~204を含む。各ノードは、種類ごとに示される。種類は、より詳細な分析によってさらに絞り込まれ得る。表1は、種類の例を説明するが、その他の種類も可能である。
【0041】
【表1】
【0042】
図2から分かるように、パーサ131は、ノード201によって図示される動詞句「turn」、ノード202の句動詞の冠詞「on」、ノード203の「the」、およびノード204の「light」を判断する。これらは、「dobj」および「det」など、異なる関係で結びつけられている。スタンフォードNLPパーサなどの標準パーサが用いられ得る。
【0043】
発話内の特定の予測品詞の位置に基づいて、分類アプリケーション102は、1つ以上のキーワードを識別する、または1つ以上の言語テンプレートを発話と照合させることができる。たとえば、ノード202は、発話内の最初の位置、すなわち、開始位置にある単語「Turn」を参照する。「On」ノード203は、発話内の2番目の位置にあり、以下同様である。ノード204または「lights」は、最終位置または発話の終わりに位置する。
【0044】
図3は、一態様に係る、テキスト分類環境において用いられる分類データの例を示す図である。分類データ301は、図1に示す分類データ120の例である。分類アプリケーション102は、分類データ301を用いて構文解析、構文照合、および言語処理を支援する。分類データ301は、質問を意図する接頭辞311と、内的動詞312と、命令形動詞313と、要求接尾辞314と、要求接頭辞315と、要求動詞316と、ストップ接頭辞317と、テンプレート318とを含む。その他の語彙単語、または分類アプリケーション102が時間をかけて学習した単語も可能である。分類データ301は、1つ以上のアレイ、リスト、データベース、またはその他のデータ構造で配置され得る。
【0045】
分類アプリケーション102は、分類データ301を用いることによって、発話に含まれる1つ以上の語彙単語またはテンプレートの一致を識別する。しかし、図4でさらに説明するが、各照合結果は、ルールセットによって重み付けされ得る。このように、特定の照合単体だけでは、必ずしも特定の分類が判断されるわけではない。
【0046】
質問を意図する接頭辞311は、分類アプリケーション102が発話内の質問を識別するのに役立つ接頭辞の単語を含む。たとえば、「I want to know」を含んだ発話は、「I want」という意図を示す接頭辞を含む。意思を示す接頭辞の例を表2に示す。質問を意図する接頭辞311は、短縮形またはインターネットベースのコミュニケーションで用いられていると思われる綴り違いおよび略式の語形変化を含む。
【0047】
【表2】
【0048】
分類アプリケーション102は、内的動詞312のデータベースを保持し得る。内的動詞312は、内的活動に関する動詞を含む。「know」、「think」、「recognize」などが挙げられる。内的動詞312は、各動詞の異なる時制の語形変化を含み得る(たとえば、know、knew、thoughtなど)。1つ以上の内的動詞312の存在を検出すると、分類アプリケーション102は、発話310を質問として分類し得る。
【0049】
命令形動詞313を用いて、照合部132は、発話に含まれる1つ以上の命令形動詞313を識別することができる。命令形動詞313は、命令形動詞、動詞句、および、綴り違い、句点に誤りがある動詞などの語形変化、または、異なる時制の同じ動詞を含む。1つ以上の命令形動詞313の存在を検出すると、分類アプリケーション102は、発話を要求として分類することができる。表3は、命令形動詞および語形変化のいくつかの例を示す。
【0050】
【表3】
【0051】
一態様において、照合部132は、発話の最初の単語が現在形の動詞または能動態の動詞であって、法助動詞や、内的動詞、または「to be」という単語形式ではないと判断する。このような制約によって、たとえば、「drop the temperature in the room」など、動詞が必ず命令形である。
【0052】
また、別の態様では、言語エンジン130は、発話が発話の作成者が所有する物に関する発話であるかまたは当該物に関連付けられている発話であるかを検出することもできる。「my account balance」および「my car」などがある。これらの発話を識別することによって、言語エンジン130は、特定の物(複数可)についてではなく一般知識を共有する要求を表現する質問と比較して、発話に含まれる物(複数可)を用いて操作を行う意図、または、物(複数可)についての情報を求める要求を検出することができる。
【0053】
さらなる態様では、分類アプリケーション102は、さらなる動詞の語形変化を判断することができる。動詞の語形変化は、「re」、「dis」、または「un」などの接頭辞を有するさらなる動詞を識別することを含む。「re-load」、「re-heat」、「disassemble」、および「unmake」などがある。さらなる態様で
は、分類アプリケーション102は、「can you turn on the light」において用いられる「can you」など、命令形の動詞接頭辞の一覧を保持する。分類アプリケーション102は、このような接頭辞の存在を検出して発話を要求として分類することができる。
【0054】
発話が要求であるかどうかの判断を支援するために、分類アプリケーション102は、要求接尾辞314にアクセスすることができる。要求接尾辞314は、物の状態など、状態を説明する形容詞を含む。表4は、要求接尾辞の例を示す。
【0055】
【表4】
【0056】
発話が要求であるかどうかの判断を支援するために、分類アプリケーション102は、要求接頭辞315にアクセスすることができる。要求接頭辞315は、先頭形容詞を含む。表5は、トランザクション接尾辞の例を示す。
【0057】
【表5】
【0058】
要求動詞316は、要求またはトランザクションを示す動詞を含む。要求動詞316の例として、「get」、「set」、「bring」、および「withdraw」なども挙げられる。発話の中に要求動詞316のうちの1つを検出すると、分類アプリケーション102は、発話を要求として分類し得る。これに加えて、分類データ301は、要求またはトランザクションを示さない1つ以上の動詞を含み得る。「burn」または「forget」などがある。分類アプリケーション102は、発話におけるこのような単語の存在を無視し得る。表6は、トランザクション要求を示す動詞およびトランザクション要求の不在を示す動詞の例を示す。
【0059】
【表6】
【0060】
ストップ接頭辞317は、「please」など、ユーザが発話の始めに加え得る単語または接頭辞を含む。一態様において、ストップ接頭辞は、ほかの処理と干渉しないよう、分類アプリケーション102によって取り除くことができる。表7は、ストップ接頭辞を示す。
【0061】
【表7】
【0062】
分類データ301は、1つ以上のテンプレート318を含み得る。また、照合部132は、1つ以上の言語テンプレートを発話に適用し得る。テンプレート318は、構文ベースのテンプレートまたは言語テンプレートを含み得る。構文ベースのテンプレートの例は、発話が「how to」または「if」を含んでいるかどうかである。
【0063】
図4は、一態様に係る、質問と要求とを区別するための処理例を説明するフローチャートである。
【0064】
ブロック401において、処理400は、単語を含む発話にアクセスすることを含む。発話として、「stop」などの短い句、「turn off the heat(暖房を切る)」、または「how do I check my portfolio?」など、より長い句などが挙げられる。分類アプリケーション102は、コンピューティングデバイス101上で実行されているプロセスまたはアプリケーションから、もしくは、ユーザデバイスなど、別のコンピューティングデバイスから発話にアクセスすることができ
る。
【0065】
一態様において、分類アプリケーション102は、発話101に前処理を行ってストップ接頭辞317を取り除く。ストップ接頭辞317を取り除くことによって、発話の2番目または後続の位置に存在するが特定の分類を示している単語を無視してしまう誤りを防ぐことができる。
【0066】
ブロック402において、処理400は、発話の解析木を生成することを含む。分類アプリケーション102は、図2で説明した方法とほぼ同様の方法で、パーサ131を用いて解析木を生成する。
【0067】
ブロック403において、処理400は、キーワードまたは言語分析に基づいて1つ以上のルールを評価することを含む。分類アプリケーション102は、解析木または発話(すなわち、テキスト)を、ルールのうちのいずれかへの入力として使用することができる。
【0068】
図5は、一態様に係る、質問と要求とを区別するために用いられるルールの例を説明するフローチャートを示す。分類アプリケーション102、具体的には、ルールエンジン140が、ブロック501~505の1つ以上を個々に実行、組合せて実行、および任意の順に実行し得る。異なる優先順位も可能である。たとえば、ブロック501が正常に実行されたとルールエンジン140が判断した場合、ルールエンジン140は、「要求」という分類を出力してブロック404に戻り得る。別の例では、ルールエンジン140がブロック502を実行したが要求キーワードを識別しなかった場合、ルールエンジン140は、ブロック502~505のうちの1つに続き得る。
【0069】
ブロック501において、処理500は、1つ以上の定義済みの要求キーワードを確認することを含む。定義済みの要求キーワードは、要求接尾辞314と、要求接頭辞315と、要求動詞316とを含み得る。これらのキーワードのうちの1つ以上が存在することは、要求を示す。表8は、トランザクションとして識別された文を示し、各ケースにおいて実行される分析を例示する。
【0070】
【表8】
【0071】
より具体的には、各種類の要求キーワードは、当該キーワードが存在すると思われる対応付けされた位置を有し得る。たとえば、分類アプリケーション102は、発話の最初の単語の位置に要求接頭辞を検索し、発話の最後の単語の位置に要求接尾辞を検索し、発話の任意の位置に要求動詞を検索する。
【0072】
ブロック502において、処理500は、解析木の最初の終端ノードが命令形動詞を含むと判断することを含む。照合部132は、発話を表す解析木をパーサ131から受け付け、命令形動詞313から命令形動詞を識別する。先頭の命令形動詞、または発話の最初
の単語の位置にある動詞が識別された場合、分類アプリケーション102は、「要求」という分類を出力し得、処理500および400は、終了し得る。表9は、命令形動詞の存在に基づいて要求として識別される発話の例を示す。
【0073】
【表9】
【0074】
一態様において、分類アプリケーション102は、異なる因子を重み付けし得る。たとえば、先頭動詞の存在を分類アプリケーション102が検出し、要求を示す場合、発話における「how」の存在によって先頭動詞の存在が否定され、質問を示し得る。その場合、分類アプリケーション102は、発話を質問として分類する。
【0075】
これに加えて、分類アプリケーション102は、「me」または「my」など、一人称形の代名詞の存在をさらに検出することができる。より具体的には、先頭動詞が内的動詞であり、通常、質問を示す場合、「me」または「my」の存在は、やはり要求を示し得る。そのため、「me」または「my」と連動した内的動詞の場合、分類アプリケーション102は、発話を要求として分類する。表10は、これらのルールを用いて識別される発話の例を示す。
【0076】
【表10】
【0077】
先頭の命令形動詞の一致が見つからなかった場合、処理500は、さらに評価を行うために、ブロック501、または503~505のうちの1つ以上に進み得る。
【0078】
ブロック503において、処理500は、解析木に1つ以上の言語テンプレートを適用することと、言語テンプレート照合を判断することとを含む。言語テンプレートは、1つ以上の品詞(たとえば、動詞)を含み得る。より具体的には、照合部132は、1つ以上の品詞が解析木に存在すると判断することによって照合を判断する。テンプレートの例は、名詞(PR+NNで表わされる)の前の代名詞の存在である。このテンプレートの一致は、要求を示し得る。たとえば、代名詞が「my」であって、名詞が「balance」である「give me my balance」または「get me my balance」が挙げられる。逆に、照合部132は、「tell me how to check an account balance(口座残高の確認方法を教えてください)」という発話を、代名詞が存在しないため、トランザクションとして分類しない。
【0079】
ブロック504において、処理500は、1つ以上の定義済みの質問キーワードを確認することを含む。質問キーワードとして、質問を意図した接頭辞311、および内的動詞312などが挙げられる。これらのキーワードのうちの1つ以上が存在することは、発話が質問であることを示す。表11は、1つ以上の質問キーワードが分類アプリケーション102によって識別される文の例を示す。
【0080】
【表11】
【0081】
場合によっては、分類アプリケーション102は、その他の分類のルールが適用されない場合、発話を特定の分類にデフォルト設定し得る。たとえば、発話「domestic
wire transfer」の中に要求が識別されなかった場合、分類アプリケーション102は、発話を質問としてみなす。表12は、さらなるケースを識別している。
【0082】
【表12】
【0083】
ブロック503において、処理500は、発話を質問または要求として識別できないことを含む。発話を質問または要求として正常に識別するルールがない場合、自律エージェント101は、さらに明確にするようユーザに要求し得る。
【0084】
図4に戻ると、処理400は、分類を出力することを含む。自律エージェントは、分類を受信して、それに従って操作を行うことができる。識別された分類に基づいて、自律エージェント101は、ユーザデバイス170とのさらなるやり取り、もしくは外部装置180の再構成、起動、または停止など、何らかの操作を実行し得る。
【0085】
上述したように、特定の態様は、機械学習を利用してテキストを分類することができる。例示的分類モデルは、分類モデル150である。分類モデル150は、分類器、ツリーカーネル、またはサポートベクターマシン、またはSVM TKなどの異なるモデルを利
用することができる。訓練データは、様々なソースから取得され得る。訓練データは、アプリケーション固有であり得る。たとえば、特定の態様を利用する金融機関は、分類アプリケーション102が適切なコンテンツを用いて訓練されるよう、許容できる銀行取引(たとえば、残高確認、資金の移動)の一覧を提供したいと望むであろう。
【0086】
図6は、一態様に係る、索引付け用の情報テキストを判断するように分類モデルを訓練するための処理例のフローチャートを示す。処理600においてさらに後述するが、分類モデル150は、質問と要求とを区別するように訓練され得る。訓練データ160は、要求として識別されたテキストを有する訓練セットおよび質問として識別されたテキストを有する第2の訓練セットなど、2つの訓練セットを含み得る。訓練データ160は、テキストおよび/または関連する解析木を含み得る。
【0087】
ブロック601において、処理600は、訓練ペアのセットを含む訓練データのセットにアクセスすることを含む。各訓練データペアは、テキストおよび予想分類(たとえば、質問または要求)を含む。訓練データのセットは、質問を含む第1の訓練データペアと、要求を含む第2の訓練データペアとの両方を含み得る。
【0088】
ブロック602において、処理600は、訓練データペアのうちの1つを分類モデルに提供することを含む。したがって、この分類モデルは、テキスト本文と、予想分類とを受け付ける。
【0089】
ブロック603において、処理600は、分類モデルから判断された分類を受け付けることを含む。
【0090】
ブロック604において、処理600は、判断された分類と予想分類との差を算出することによって損失関数を算出することを含む。平均二乗誤差、尤度損失、対数(または、交差エントロピー)損失など、異なる損失関数が可能である。
【0091】
ブロック605において、処理600は、分類モデルの内部パラメータを調整して損失関数を最小化することを含む。このように、分類モデルは、訓練を反復するごとに予測の精度を向上させることを学習する。
【0092】
ブロック606において、処理600は、訓練済み分類モデルを利用することを含む。たとえば、訓練済み分類モデルは、様々な分類ルールと連動して、または様々な分類ルールの代わりに処理400または500において使用され得る。
【0093】
たとえば、訓練済み分類モデル150を使用するために、分類アプリケーション102は、テキストの発話にアクセスし、発話の解析木を生成することができる。分類アプリケーション102は、分類モデル150を解析木に適用することによって発話の分類を判断する。
【0094】
今度は、分類アプリケーション102がいくつかの方法のうちの1つを用いて分類を判断する。たとえば、分類モデル150は、発話と質問として識別された訓練クラスとの第1の一致を示す第1の類似度スコアと、発話と要求として識別された訓練クラスとの第2の一致を示す第2の類似度スコアとを決定する。
【0095】
分類モデル150は、第1の類似度スコアおよび第2の類似度スコアに基づいて、分類を出力する。たとえば、第1の類似度スコアが第2の類似度スコアよりも高い場合、分類モデル150は、「質問」という分類を出力する。第2の類似度スコアが第1の類似度スコアよりも高い場合、分類モデル150は、「要求」という分類を出力する。場合によっ
ては、たとえば、エラーが発生すると、分類モデル150は、「不明」という分類を出力し得る。
【0096】
分類基準のカスタマイズ
自律エージェントの開発者またはベンダーは、両方のクラスのサンプルを含んだ訓練セットを提供することによって、デフォルトの訓練セットまたはルール(すなわち、質問とトランザクション要求との関係)を上書きしてもよい。分類モデル150の再訓練は、使用前またはランタイムに生じ得る。たとえば、新たな発話を受け付けると、分類アプリケーション102は、下記の処理を実行できる。
【0097】
(1)現在の発話のインスタントインデックスを作成する。
(2)両方のクラスからのすべてのサンプルを反復処理し、クエリを作成してインスタントインデックスに対する検索を発行する。
【0098】
(3)空以外の検索結果を出力したクエリのセットをそのクラスとともに収集し、このセットをクラスごとに集成する。
【0099】
(4)集成結果によって特定のクラスが高く表されており、他方のクラスが有意に低く表されていると検証した後、高く表されているクラスを認識結果として選択する。
【0100】
LuceneのデフォルトTF-IDFモデルによって、訓練セットの要素が必ず最上位のキーワードとして最も近くなる(頻度面からの(Tan 2005年、SaltonおよびYang 1973年))。(Trstenjakら、3014)は、テキスト分類にTF-IDF法を用いた最近傍(KNN)アルゴリズムを利用する可能性を提示する。この方法によって、様々なパラメータ、測定および結果の分析に応じた分類が可能になる。フレームワークの評価では、分類の速度および質に注目しており、テスト結果は、TF-IDF-KNNアルゴリズムのプラスとマイナスの特性を示していた。オンライン環境のいくつかのカテゴリの文書が評価され、安定した信頼性の高いパフォーマンスを示していた。テストは、分類の質に光を当てており、いずれの因子が分類パフォーマンスに影響を与えるかを判断していた。
【0101】
ソフトウェアコード例
分類アプリケーション102の機能を実装するコード例を以下に示す。
【0102】
// 意味のない発話、または認識できなかった場合、nullを返す
// TRANSACTIONALである場合、trueを返し、QUESTIONである場合、falseを返す
// explanationMapが<説明(explanations)を付けた決定(decision)>を格納する
public Boolean isARequestUtteranceKeywordBased(String utteranceOrig, Map<String, Object> explanationMap) {
String utterance = utteranceOrig.toLowerCase();
Boolean matchedWithTrainingSet =
lingRecognizer.matchWithTrainingSet(utteranceOrig);
if (matchedWithTrainingSet != null) {
explanationMap.put("ling_match_recognizer", true);
explanationMap.putAll(lingRecognizer.getExplanationMap());
return matchedWithTrainingSet;
}
List<String> tokens = TextProcessor.fastTokenize(utterance, false);
if (tokens.size() < 2) {
explanationMap.put("analysis is rejected", "single token utterance");
return null;
}
// 前方のストップワードを取り除く
if (tokens.get(0).equals("please") || tokens.get(0).equals("i") || tokens.get(0).equals("we"))
tokens.remove(0);
// ストップ句を取り除く
try {
if (tokens.get(0).equals("this") && (tokens.size() > 2 && tokens.get(1).equals("is")) || (tokens.size() > 2 && tokens.get(2).equals("a"))) {
tokens.remove(0);
tokens.remove(1);
tokens.remove(2);
}
} catch (Exception e) {
}
// パース処理によって動詞を適切に見つけられなかった場合、動詞+動詞接頭辞のル
ックアップを確認する
if (requestVerbsCached.contains(tokens.get(0))) {
explanationMap.put("check verb + verb prefixes lookup, in case parsing will not find verbs properly. Found leading verb: ", tokens.get(0));
explanationMap.put("reduced sentence for analysis", tokens.toString());
return true;
}
// 最初の単語が(命令形の)動詞であるかどうかを確認する
if (lingRecognizer.isARequestUtteranceKeywordBased(utteranceOrig)) {
explanationMap.put("ling_recognizer", true);
explanationMap.put("why transactional", "leading verb");
explanationMap.putAll(lingRecognizer.getExplanationMap());
return true;
}
// 要求用の接頭辞+動詞
for (String prefix : requestVerbsPrefix) {
if (utterance.startsWith(prefix)) {
String utteranceRemainder = utterance.replace(prefix, "");
List<String> tokensRemainder = TextProcessor.fastTokenize(utteranceRemainder, false);
if (tokensRemainder.isEmpty()) {
explanationMap.put("why transactional", "leading verb");
explanationMap.put("all non-verbs are removed", "remained empty");
return true;
}
if (requestVerbsCached.contains(tokensRemainder.get(0))) {
explanationMap.put("why transactional", "leading verb");
explanationMap.put("leading verb", tokensRemainder.get(0));
return true;
}
}
}
// 要求でない接頭辞
for (String prefix : faqVerbsPrefix) {
if (utterance.startsWith(prefix)) {
explanationMap.put("whyQnA", "QnA prefix");
explanationMap.put("QnA prefix", prefix);
return false;
}
}
// 要求用の接頭辞+動詞
for (String prefix : requestVerbsPrefix) {
if (utterance.startsWith(prefix)) {
explanationMap.put("why transactional", "transactional prefix");
explanationMap.put("transactional prefix", prefix);
return true;
}
}
for (String suffix : this.requestWordSuffix) {
if (utterance.endsWith(suffix)) {
explanationMap.put("why transactional", "transactional suffix");
explanationMap.put("transactional suffix", suffix);
return true;
}
}
explanationMap.put("neither QnA nor Transactional rule fired", "");
return null;
}
// これは、機械学習によって発話を分類するために使う
// TRANSACTIONALである場合、trueを返し、QUESTIONである場合、falseを返す
// explanationMapが<説明(explanations)を付けた決定(decision)>を格納する
public Boolean matchWithTrainingSet(String utterance) {
int count = 0, bestScoreIndex = -1;
double bestScore = 0;
Boolean bestDecision = null;
for (String[] line : nearestNeighborTrainingSet) {
List<List<ParseTreeChunk>> res = matcher.assessRelevanceCache(utterance, line[0]);
double syntacticScore = parseTreeChunkListScorer.getParseTreeChunkListScoreAggregPhraseType(res);
if (syntacticScore > bestScore && syntacticScore > MIN_SCORE_TO_MATCH) {
bestScore = syntacticScore;
try {
bestDecision = Boolean.parseBoolean(line[1]);
} catch (Exception e) {
e.printStackTrace();
}
bestScoreIndex = count;
}
count++;
}
explanationMap.put("found decision via matching phrase", bestDecision);
if (!nearestNeighborTrainingSet.isEmpty())
explanationMap.put("found matching phrase", nearestNeighborTrainingSet.get(bestScoreIndex)[0]);
return bestDecision;
}
【0103】
図7は、態様のうちの1つを実施するための分散システム700の簡略図である。図示する態様では、分散システム700は、1つ以上のクライアントコンピューティングデバイス702、704、706、および708を含む。クライアントコンピューティングデバイス702、704、706、および708は、ウェブブラウザ、プロプライエタリクライアント(たとえば、Oracle Forms)など、クライアントアプリケーションを1つ以上のネットワーク(複数可)710で実行および操作するように構成される。サーバ712は、ネットワーク710を介して、リモートクライアントコンピューティングデバイス702、704、706、および708と通信可能に接続されてもよい。
【0104】
様々な態様では、サーバ712は、システムの構成要素のうちの1つ以上によって提供される1つ以上のサービスまたはソフトウェアアプリケーションを実行するようになされてもよい。サービスまたはソフトウェアアプリケーションは、非仮想環境および仮想環境を含み得る。仮想環境は、2次元表現であれ3次元(3D)表現であれ、仮想イベント、見本市、シミュレータ、教室、品物の売買、および企業のための仮想環境、ページベースの論理的環境、または上記以外のその他のものを含み得る。いくつかの態様では、これらのサービスは、クライアントコンピューティングデバイス702、704、706、および/または708のユーザに対して、ウェブベースのサービスもしくはクラウドサービスとして提供されてもよく、または、SaaS(Software as a Service)モデル下で提供されてもよい。クライアントコンピューティングデバイス702、704、706、および/または708を操作するユーザは、1つ以上のクライアントアプリケーションを利用してサーバ712とやり取りして、これらの構成要素が提供するサービスを利用できる。
【0105】
図に示す構成では、分散システム700のソフトウェアコンポーネント718、720、および722がサーバ712上に実装されたものとして示される。その他の態様では、分散システム700の構成要素のうちの1つ以上および/またはこれらの構成要素が提供するサービスのうちの1つ以上は、クライアントコンピューティングデバイス702、704、706、および/または708のうちの1つ以上によって実現されてもよい。次に、クライアントコンピューティングデバイスを操作しているユーザは、1つ以上のクライアントアプリケーションを利用して、これらの構成要素が提供するサービスを使用してもよい。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。様々な異なるシステム構成が可能であり、これらは、分散システム700とは異なってもよいことを理解されたい。よって、図に示す態様は、例示的なシステムを実現するための分散システムの一例であって、限定を意図したものではない。
【0106】
クライアントコンピューティングデバイス702、704、706、および/または708は、は、Microsoft Windows Mobile(登録商標)などのソフトウェアおよび/またはiOS、Windows Phone、Android、BlackBerry 10、Palm OSなどのいろいろなモバイルオペレーティングシステムを実行し、かつ、インターネット、電子メール、SMS(Short Message Service)、Blackberry(登録商標)、または他の通信プロトコルに対応する手のひらサイズのポータブルデバイス(たとえば、iPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、PDA(Per
sonal Digital Assistant))またはウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。クライアントコンピューティングデバイスは、例として、様々なバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、たとえば、Google Chrome OSなどいろいろなGNU/Linuxオペレーティングシステムを含む各種市販のUNIX(登録商標)またはUNIXに似たオペレーティングシステムを実行するワークステーションコンピュータであり得るが、これに限定されない。これに代えて、またはこれに加えて、クライアントコンピューティングデバイス702、704、706、および708は、シン・クライアントコンピュータ、インターネット対応のゲーミングシステム(たとえば、Kinect(登録商標)ジェスチャ入力装置付きまたは無しのMicrosoft Xboxのゲーミングコンソール)、および/またはパーソナルメッセージングデバイスなど、ネットワーク(複数可)710で通信可能なその他の電子機器であってもよい。
【0107】
例示的な分散システム700は、4台のクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサ付きデバイスなど、他のデバイスがサーバ712とやり取りを行ってもよい。
【0108】
分散システム700におけるネットワーク(複数可)710は、TCP/IP(Transmission Control Protocol/Internet Protocol)、SNA(Systems Network Architecture)、IPX(Internet Packet Exchange)、AppleTalkなどを含む、各種市販のプロトコルを使用したデータ通信をサポートできる、当業者にとってなじみのある任意の種類のネットワークであってもよいが、これに限定されない。単に一例として、ネットワーク(複数可)1110は、Ethernet(登録商標)および/またはトークンリングなどに基づいたLAN(Local Area Network)などのLANであり得る。ネットワーク(複数可)710は、ワイドエリアネットワークおよびインターネットであり得る。ネットワーク(複数可)710は、VPN(Virtual Private Network)、イントラネット、エクストラネット、PSTN(Public Switched Telephone Network)、赤外線ネットワーク、ワイヤレスネットワーク(たとえば、IEEE(Institute
of Electrical and Electronics)802.7スイートのプロトコル、Bluetooth(登録商標)、および/またはその他のワイヤレスプロトコルのうちのいずれかの下で動作するネットワーク)、および/もしくはこれらの任意の組合せを含む仮想ネットワーク、ならびに/または他のネットワークを含み得るが、これに限定されない。
【0109】
サーバ712は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例として、PC(Personal Computer)サーバ、UNIX(登録商標)サーバ、ミッドレンジ・サーバ、メインフレーム・コンピュータ、ラックマウント式サーバなどを含む)、サーバファーム、サーバ・クラスタ、またはその他の適切な配置および/もしくは組合せから構成されてもよい。サーバ712は、仮想オペレーティングシステムを実行している1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理記憶装置の1つ以上のフレキシブルプールを仮想化して、サーバ用の仮想記憶装置を維持することができる。仮想ネットワークは、SDN(Software-Defined Networking)を用いて、サーバ712によって制御され
得る。様々な態様では、サーバ712は、上記の開示において説明した1つ以上のサービスまたはソフトウェアアプリケーションを実行するようになされてもよい。たとえば、サーバ712は、本開示の態様に従って上述した処理を行うためのサーバに対応してもよい。
【0110】
サーバ712は、上述のオペレーティングシステムのいずれか、および任意の市販のサーバオペレーティングシステムを実行してもよい。また、サーバ712は、HTTP(Hypertext Transport Protocol)サーバ、FTP(File
Transfer Protocol)サーバ、CGI(Common Gateway Interface)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む、各種の追加のサーバアプリケーションおよび/またはミッドティア・アプリケーションを実行してもよい。例示的なデータベースサーバとして、Oracle、Microsoft、Sybase、IBM(International Business
Machines)などが販売するデータベースサーバが挙げられるが、これに限定されない。
【0111】
いくつかの実装形態において、サーバ712は、クライアントコンピューティングデバイス802、804、806、および808のユーザから受信したデータフィードおよび/またはイベント更新を分析するおよび1つにまとめるための1つ以上のアプリケーションを含んでもよい。例として、データフィードおよび/またはイベント更新は、Twitter(登録商標)フィード、Facebook(登録商標)更新、または1つ以上のサードパーティ情報ソースおよび連続したデータストリームから受信されるリアルタイム更新を含んでもよいが、これに限定されない。データフィードおよび/またはイベント更新は、センサーデータアプリケーション、チッカー(financial ticker)、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量監視などに関するリアルタイムイベントを含み得る。また、サーバ712は、クライアントコンピューティングデバイス702、704、706、および708の1つ以上の表示装置を介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含んでもよい。
【0112】
また、分散システム700は、1つ以上のデータベース714および716を含んでもよい。データベース714および716は、いろいろな場所に存在してもよい。一例として、データベース714および716のうちの1つ以上は、サーバ712にローカルな(および/または存在する)非一時的な記憶媒体上に存在してもよい。これに代えて、データベース714および716は、サーバ712から遠隔の場所に存在し、ネットワークベースまたは専用の接続を通してサーバ712と通信していてもよい。一組の態様では、データベース714および716は、SAN(Storage-Area Network)に存在してもよい。同様に、サーバ712に起因する機能を実行するための必要なファイルは、いずれも、サーバ712上のローカルな場所および/またはサーバ12から遠隔の場所に、適宜、格納されてもよい。一組の態様では、データベース714および716は、SQLフォーマットのコマンドに応答してデータ格納、更新、および取り出すようになされたOracleが提供するデータベースなど、リレーショナルデータベースを含んでもよい。
【0113】
図8は、本開示の一態様に係る、一態様のシステムの1つ以上の構成要素が提供するサービスがクラウドサービスとして提供され得るシステム環境800の1つ以上の構成要素の簡略ブロック図である。図示した態様では、システム環境800は、1つ以上のクライアントコンピューティングデバイス804、806、および808を含む。1つ以上のクライアントコンピューティングデバイス804、806、および808は、ユーザによっ
て、クラウドサービスを提供するクラウドインフラストラクチャシステム802とやり取りするために使用されもよい。クライアントコンピューティングデバイスは、ウェブブラウザ、プロプライエタリ・クライアントアプリケーション(たとえば、Oracle Forms)、または他のアプリケーションなど、クライアントアプリケーションを操作するように構成されてもよい。クライアントアプリケーションは、クライアントコンピューティングデバイスのユーザによって、クラウドインフラストラクチャシステム802とやり取りを行ってクラウドインフラストラクチャシステム802が提供するサービスを利用するために使用され得る。
【0114】
図に示したクラウドインフラストラクチャシステム802が、図示された構成要素以外の構成要素を有し得ることを理解されたい。さらに、図に示す態様は、本発明の態様を組み込み得るクラウドインフラストラクチャシステムの一例に過ぎない。その他のいくつかの態様では、クラウドインフラストラクチャシステム802は、図に示す構成要素よりも多いまたは少ない数の構成要素を有してもよく、2つ以上の構成要素を組み合わせてもよく、または構成要素の構成もしくは配置が異なっていてもよい。
【0115】
クライアントコンピューティングデバイス804、806、および808は、2802、2804、2806、および2808に関して上述したクライアントコンピューティングデバイスと同様のデバイスであってもよい。
【0116】
例示的なシステム環境800は、3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサ付きデバイスなど、他のデバイスがクラウドインフラストラクチャシステム802とやり取りを行ってもよい。
【0117】
ネットワーク(複数可)810は、クライアント804、806、および808とクラウドインフラストラクチャシステム802との間の通信およびデータのやり取りを容易にしてもよい。各ネットワークは、ネットワーク(複数可)810に関して上述したプロトコルを含む各種市販のプロトコルのいずれかを用いたデータ通信をサポートできる、当業者にとってなじみのある任意の種類のネットワークであってもよい。
【0118】
クラウドインフラストラクチャシステム802は、サーバ812に関して上述したコンピュータおよびサーバを含み得る1台以上のコンピュータおよび/またはサーバから構成されてもよい。
【0119】
特定の態様では、クラウドインフラストラクチャシステムが提供するサービスは、オンラインのデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされたオフィススイートドキュメント連携サービス、データベース処理、管理されたテクニカルサポートサービスなど、クラウドインフラストラクチャシステムのユーザが要求すれば利用可能になるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムが提供するサービスは、動的にスケール変更してそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムが提供するサービスを具体的にインスタンス化したものは、本明細書において、「サービスインスタンス」と称される。一般に、インターネットなどの通信ネットワークを介してユーザが利用できるようになる、クラウドサービスプロバイダのシステムからのいずれのサービスも、「クラウドサービス」と称される。通常、パブリッククラウド環境において、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客所有のオンプレミス・サーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、要求に基づいてアプリケーションを注文および使用すればよい。
【0120】
いくつかの例において、コンピュータネットワークのクラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされたデータベース、ホストされたウェブサーバ、ソフトウェアアプリケーションへの保護されたコンピュータネットワークアクセス、もしくはクラウドベンダーがユーザに提供するその他のサービス、または、当技術分野で周知の上記以外のその他のサービスを含んでもよい。たとえば、サービスは、インターネットを通した、クラウド上のリモートストレージへのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワークで結ばれた開発者が私的使用するための、ウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語のミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上にホストされた電子メールソフトウェア・アプリケーションへのアクセスを含み得る。
【0121】
特定の態様では、クラウドインフラストラクチャシステム802は、顧客にセルフサービスでサブスクリプション方式で伸縮自在にスケーラブルで信頼性があり、かつ高い可用性を有するセキュアな方法で届けられるアプリケーション一式、ミドルウェア、およびデータベースサービス提供物を含んでもよい。このようなクラウドインフラストラクチャシステムの例が、本願の譲受人が提供するオラクルパブリッククラウド(Oracle Public Cloud)である。
【0122】
ビッグデータと呼ばれることもある大容量のデータは、インフラストラクチャシステムによって、多くのレベルかつ異なる規模でホストおよび/または操作され得る。このようなデータは、大規模かつ複雑過ぎるために通常のデータベース管理ツールまたは旧来のデータ処理アプリケーションを用いて処理することが難しいデータセットを含み得る。たとえば、パーソナルコンピュータまたはそれらのラック式パーソナルコンピュータを用いてテラバイトのデータを格納、取り出し、および処理することは、難しいだろう。最新のリレーショナルデータベース管理システムおよびデスクトップ統計データならびに可視化パッケージを用いてこのようなサイズのデータを扱うのは難しいだろう。許容可能な経過時間内でこのようなサイズのデータを取得、取りまとめ、管理、および処理するためには、よく用いられるソフトウェアツールの構造では対応できない何千ものサーバコンピュータを実行する大規模並列処理ソフトウェアを必要とし得る。
【0123】
大量のデータを可視化する、トレンドを検出する、および/または当該データを用いてやり取りするために、極めて大きなデータセットが格納されてアナリストおよび研究者によって操作され得る。このようなデータを提示する、またはこのデータに対する外力または当該データが表すものをシミュレーションするために、並列にリンクされた何十、何百、または何千ものプロセッサがこのデータに作用し得る。これらのデータセットは、データベースに編成された構造化データもしくは構造化モデルに応じて編成された構造化データ、および/または非構造化データ(たとえば、Eメール、画像、データBLOB(Binary Large Objects)、ウェブページ、複雑なイベント処理)を伴い得る。比較的素早くより多くの(または、より少ない)コンピューティングリソースを目標に集中させる態様の能力を活用することによって、クラウドインフラストラクチャシステムは、事業、政府関係機関、研究機関、私人、同じ意見を持った個人同士のグループもしくは組織、または他のエンティティからの要求に基づいて大きなデータセットに対してタスクを実行するためにさらに利用できるようになってもよい。
【0124】
様々な態様では、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステム802が提供するサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理、および追跡するようになされてもよい。クラウドインフラストラクチャシステム802は、それぞれ異なるデプロイメントモデルを介してクラウドサ
ービスを提供してもよい。たとえば、サービスは、クラウドサービス(たとえば、オラクルコーポレーション所有)を販売する組織がクラウドインフラストラクチャシステム802を所有してサービスが一般大衆またはそれぞれ異なる産業企業に利用可能になるパブリッククラウドモデル下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム802が1つの組織のためだけに動かされてクラウドインフラストラクチャシステム802が組織内の1つ以上のエンティティ用のサービスを提供し得るプライベートクラウドモデル下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム802およびクラウドインフラストラクチャシステム802が提供するサービスが関連コミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデル下で提供されてもよい。クラウドサービスは、2つ以上の異なるモデルの組み合せであるハイブリッドクラウドモデル下で提供されてもよい。
【0125】
いくつかの態様では、クラウドインフラストラクチャシステム802が提供するサービスは、SaaS(Software as a Service)カテゴリ、PaaS(Platform as a Service)カテゴリ、IaaS(Infrastructure as a Service)カテゴリ下で提供される1つ以上のサービス、またはハイブリッドサービスを含むその他のカテゴリのサービスを含んでもよい。顧客は、クラウドインフラストラクチャシステム802が提供する1つ以上のサービスを、サブスクリプションの注文によって注文してもよい。次に、クラウドインフラストラクチャシステム802は、処理を実行して、顧客のサブスクリプションの注文にあるサービスを提供する。
【0126】
いくつかの態様では、クラウドインフラストラクチャシステム802が提供するサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを含んでもよいが、これに限定されない。いくつかの例において、アプリケーションサービスは、SaaSサービスを介してクラウドインフラストラクチャシステムによって提供されてもよい。SaaSプラットフォームは、SaaSカテゴリに該当するクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、オンデマンドアプリケーションのスイートを構築して統合開発/デプロイメントプラットフォームに届けるための機能を提供してもよい。SaaSプラットフォームは、SaaSサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御してもよい。SaaSプラットフォームが提供するサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、アプリケーションサービスを、ライセンスおよびサポートを別に購入する必要なしに、入手できる。様々な異なるSaaSサービスが提供されてもよい。例として、大きな組織のための販売実績管理、企業統合、および事業の柔軟性に対するソリューションを提供するサービスなどが挙げられるが、これに限定されない。
【0127】
いくつかの態様では、プラットフォームサービスは、PaaSプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。PaaSプラットフォームは、PaaSカテゴリに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスとして、存在するアプリケーションを組織(Oracleなど)が共有の共通アーキテクチャ上に1つにまとめることを可能にするサービス、およびプラットフォームが提供する共有サービスを活用する新しいアプリケーションを作る能力などが挙げられるが、これに限定されない。PaaSプラットフォームは、PaaSサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、PaaSクラウドインフラストラクチャシステムが提供するサービスを、ライセンスおよびサポートを別に購入する必要なしに、入手できる。プラットフォームサービスとして、JCS(Oracle Java Cloud Service)、DBCS(Oracle データbase Cloud Service)
、およびその他が挙げられるが、これに限定されない。
【0128】
PaaSプラットフォームが提供するサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムがサポートするプログラミング言語およびツールを採用することができ、また、デプロイされたサービスを管理することができる。いくつかの態様では、クラウドインフラストラクチャシステムが提供するプラットフォームサービスは、データベース・クラウドサービス、ミドルウェアクラウドサービス(たとえば、Oracle Fusion Middlewareサービス)、およびJavaクラウドサービスを含んでもよい。一態様では、データベース・クラウドサービスは、組織がデータベースリソースをプールすることと、データベース・クラウドの形でデータbase as a Serviceを顧客に提供することとを可能にする共有サービスデプロイメントモデルをサポートしてもよい。クラウドインフラストラクチャシステムにおいて、ミドルウェアクラウドサービスは、顧客が様々なビジネスアプリケーションを開発およびデプロイするためのプラットフォームを提供してもよく、Javaクラウドサービスは、顧客がJavaアプリケーションをデプロイするためのプラットフォームを提供してもよい。
【0129】
クラウドインフラストラクチャシステムでは、IaaSプラットフォームによって様々な異なるインフラストラクチャサービスが提供されてもよい。インフラストラクチャサービスによって、ストレージ、ネットワークなど基礎となるコンピューティングリソース、および、SaaSプラットフォームおよびPaaSプラットフォームが提供するサービスを利用している顧客のためのその他の基本的なコンピューティングリソースの管理および制御が容易になる。
【0130】
特定の態様では、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムの顧客に様々なサービスを提供するために使用されるリソースを提供するためのインフラストラクチャ・リソース830を含んでもよい。一態様では、インフラストラクチャ・リソース830は、PaaSプラットフォームおよびSaaSプラットフォームが提供するサービスを実行するための、サーバなどのハードウェアと、ストレージと、ネットワーキング・リソースとの予め統合された最適な組合せを含んでもよい。
【0131】
いくつかの態様では、クラウドインフラストラクチャシステム802におけるリソースは、複数のユーザによって共有され、要求に応じて動的に再割り当てされてもよい。これに加えて、リソースは、それぞれ異なるタイムゾーンのユーザに割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム830は、第1のタイムゾーンにいる第1セットのユーザがクラウドインフラストラクチャシステムのリソースを指定された時間利用することを可能にした後、異なるタイムゾーンに位置する別のセットのユーザに同じリソースを再割り当てすることを可能にし、リソースの利用を最大限に活用できるようになる。
【0132】
特定の態様では、クラウドインフラストラクチャシステム802のそれぞれ異なる構成要素またはモジュールによって、およびクラウドインフラストラクチャシステム802が提供するサービスによって共有されるいくつかの内部共有サービス832が提供されてもよい。これらの内部共有サービスは、セキュリティ/アイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャン/ホワイトリストサービス、可用性の高いバックアップ・リカバリサービス、クラウドサポートを可能にするためのサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これに限定されない。
【0133】
特定の態様では、クラウドインフラストラクチャシステム802は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえば、SaaSサービス、Paa
Sサービス、およびIaaSサービス)の包括的な管理を提供してもよい。一態様では、クラウド管理機能は、クラウドインフラストラクチャシステム802が受信した顧客のサブスクリプションなどをプロビジョニング、管理、および追跡するための機能を含んでもよい。
【0134】
一態様では、図に示すように、クラウド管理機能は、オーダー管理モジュール820、オーダーオーケストレーションモジュール822、オーダープロビジョニングモジュール824、オーダー管理/監視モジュール826、およびアイデンティティ管理モジュール828など、1つ以上のモジュールによって提供されてもよい。これらのモジュールは、1つ以上のコンピュータおよび/またはサーバを含んでもよく、または、これらを使用して提供されてもよい。1つ以上のコンピュータおよび/またはサーバは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバ・クラスタ、またはその他の適切な配置および/もしくは組合せであり得る。
【0135】
例示的な動作834において、クライアントデバイス804、806または808などのクライアントデバイスを使用している顧客は、クラウドインフラストラクチャシステム802が提供する1つ以上のサービスを要求し、クラウドインフラストラクチャシステム802が提供する1つ以上のサービスのサブスクリプションを注文することによって、クラウドインフラストラクチャシステム802とやり取りしてもよい。特定の態様では、顧客は、クラウドUI(User Interface)、クラウドUI88、クラウドUI814および/またはクラウドUI816にアクセスし、これらのUIを介してサブスクリプションの注文を行ってもよい。顧客が注文をすることに応答してクラウドインフラストラクチャシステム802が受信するオーダー情報は、この顧客を特定する情報、および、クラウドインフラストラクチャシステム802が提供する、顧客がサブスクリプションをする目的の1つ以上のサービスを含んでもよい。
【0136】
顧客によって注文がされた後、クラウドUI、88、814、および/または816を介してオーダー情報が受け付けられる。
【0137】
動作836、この注文は、オーダーデータベース88に格納される。オーダーデータベース88は、クラウドインフラストラクチャシステム88によって操作され、かつ、他のシステム要素と共に操作されるいくつかのデータベースのうちの1つであり得る。
【0138】
動作838において、オーダー情報がオーダー管理モジュール820に転送される。場合によっては、オーダー管理モジュール820は、注文の確認、確認後の注文の登録など、注文に関する課金機能および会計機能を実行するように構成されてもよい。
【0139】
動作840において、注文に関する情報がオーダーオーケストレーションモジュール822に伝送される。オーダーオーケストレーションモジュール822は、このオーダー情報を利用して、顧客が行った注文に関するサービスおよびリソースのプロビジョニングをオーケストレーションしてもよい。場合によっては、オーダーオーケストレーションモジュール822は、リソースのプロビジョニングをオーケストレーションして、オーダープロビジョニングモジュール824のサービスを使用してサブスクリプションされているサービスをサポートしてもよい。
【0140】
特定の態様では、オーダーオーケストレーションモジュール822は、各注文に関連する業務の流れの管理を可能にし、ビジネスロジックを適用して、注文がプロビジョニングに進むべきかどうかを判断する。動作842において、新しいサブスクリプションの注文を受けると、オーダーオーケストレーションモジュール822は、サブスクリプションの注文を満たすために必要なリソースを割り当ててこれらのリソースを構成する要求をオー
ダープロビジョニングモジュール824に送信する。オーダープロビジョニングモジュール824は、顧客が申し込んだサービスのためのリソースの割り当てを有効にする。オーダープロビジョニングモジュール824は、クラウドインフラストラクチャシステム800が提供するクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理実施層との間に抽象度を設ける。よって、サービスおよびリソースがオンザフライで実際にプロビジョニングされたかどうか、または予めプロビジョニングされて要求された場合にのみ割り当てられたかどうかなどの実装の詳細からオーダーオーケストレーションモジュール822を切り離すことができる。
【0141】
動作844おいて、サービスおよびリソースがプロビジョニングされると、クラウドインフラストラクチャシステム802のオーダープロビジョニングモジュール824によって、クライアントデバイス804、806、および/または808上の顧客に、提供されたサービスについての通知が送信されてもよい。
【0142】
動作846において、オーダー管理/監視モジュール826よって顧客のサブスクリプションの注文が管理および追跡されてもよい。場合によっては、オーダー管理/監視モジュール826は、サブスクリプションの注文におけるサービスに関する使用統計データ、たとえば、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムの稼働時間およびシステムの休止時間などを収集するように構成されてもよい。
【0143】
特定の態様では、クラウドインフラストラクチャシステム800は、アイデンティティ管理モジュール828を備えてもよい。アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム800におけるアクセス管理およびアクセス認可サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの態様では、アイデンティティ管理モジュール828は、クラウドインフラストラクチャシステム802が提供するサービスを利用したい顧客についての情報を制御/管理してもよい。このような情報は、このような顧客のアイデンティティを認証する情報、および、様々なシステムリソース(たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に対してそれらの顧客がどのような操作を行うことが承認されているのかを記述する情報を含み得る。また、アイデンティティ管理モジュール828は、各顧客についての記述情報の管理、およびその記述情報が誰によってどのようにアクセスおよび変更され得るかについての管理を含んでもよい。
【0144】
図9は、本発明の様々な態様が実施され得るコンピュータシステム900の例を示す図である。システム900を使用して、上述したコンピュータシステムのいずれかを実現してもよい。図に示すように、コンピュータシステム900は、バス・サブシステム902を介していくつかの周辺サブシステムと通信する処理装置904を備える。これらの周辺サブシステムは、処理高速化装置906と、I/Oサブシステム908と、ストレージサブシステム918と、通信サブシステム924とを含んでもよい。ストレージサブシステム918は、有形のコンピュータ読み取り可能な記憶媒体922と、システムメモリ910とを含む。
【0145】
バス・サブシステム902は、コンピュータシステム900の様々な構成要素およびサブシステムを互いに意図した通りに通信させるためのメカニズムを提供する。バス・サブシステム902は、1つのバスとして図示されているが、バス・サブシステムの別の態様は、複数のバスを利用してもよい。バス・サブシステム902は、各種のバスアーキテクチャを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス
、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびPCI(Peripheral Component Interconnect)バスを含んでもよく、これらは、IEEE P986.1標準規格に準拠して製造されるMezzanineバスとして実現され得る。
【0146】
1つ以上の集積回路(たとえば、従来のマイクロプロセッサまたはマイクロコントローラ)として実現され得る処理装置904は、コンピュータシステム900の動作を制御する。処理装置904には、1つ以上のプロセッサが含まれてもよい。これらのプロセッサは、シングルコア・プロセッサまたはマルチコア・プロセッサを含んでもよい。特定の態様では、処理装置904は、シングルコア・プロセッサまたはマルチコア・プロセッサを各々が含んだ1つ以上の独立した処理装置932および/または934として実現されてもよい。また、その他の態様では、処理装置904は、2つのデュアルコアプロセッサを1つのチップに組み込むことによって形成されるクアッドコア処理装置として実現されてもよい。
【0147】
様々な態様では、処理装置904は、プログラムコードに応答していろいろなプログラムを実行でき、複数の同時に実行しているプログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ(複数可)904に、および/またはストレージサブシステム918に存在し得る。適したプログラミングによって、プロセッサ(複数可)904は、上述したさまざまな機能を提供できる。コンピュータシステム900は、処理高速化装置906をさらに備えてもよい。処理高速化装置906は、DSP(Digital Signal Processor)および/または専用プロセッサなどを含み得る。
【0148】
I/Oサブシステム908は、ユーザインタフェース入力装置と、ユーザインタフェース出力装置とを含んでもよい。ユーザインタフェース入力装置は、キーボード、マウスもしくはトラックボールなどのポインティングデバイス、タッチパッドもしくはディスプレイに組み込まれたタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、ボイスコマンド認識システムを有する音声入力装置、マイクロホン、および他の種類の入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、ジェスチャコマンドおよび音声コマンドを用いた自然なユーザインタフェースによってユーザがMicrosoft Xbox(登録商標)360ゲームコントローラなどの入力装置を制御およびそれとやり取りすることを可能にするMicrosoft Kinect(登録商標)モーションセンサなどの動き検知デバイスおよび/またはジェスチャ認識デバイスを含んでもよい。また、ユーザインタフェース入力装置は、ユーザの目の行動(たとえば、写真を撮影しているおよび/またはメニュー選択を行っている間の「まばたき」)を検出し、目の仕草(eye gesture)を入力装置(たとえば、Google Glass(登録商標))への入力として変形させるGoogle Glass(登録商標)まばたき検出装置などのアイジェスチャ認識デバイスを含んでもよい。これに加えて、ユーザインタフェース入力装置は、ユーザがボイスコマンドによって音声認識システム(たとえば、Siri(登録商標)ナビゲータ)とやり取りすることを可能にする音声認識検知デバイスを含んでもよい。
【0149】
また、ユーザインタフェース入力装置は、3次元(3D)マウス、ジョイスティックもしくはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダー、ポータブルメディアプレーヤ、ウェブカム、イメージスキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザー測距器、および視線追跡装置などのオーディオ/ビジュアル装置を含むが、これに限定されない。これに加えて、ユーザインタフェース入力装置は、たとえば、
コンピュータ断層撮影法、磁気共鳴画像、陽電子放出断層撮影装置、超音波検査デバイスなど、医用画像入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、MIDIキーボード、デジタル楽器などのオーディオ入力装置を含んでもよい。
【0150】
ユーザインタフェース出力装置は、表示サブシステム、インジケーターライト、または音声出力装置などの非視覚的表示装置などを含んでもよい。表示サブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使用するものなどのフラットパネル表示装置、投影装置、タッチスクリーンなどであってもよい。一般に、用語「出力装置」の使用は、コンピュータシステム900からユーザまたは他のコンピュータに情報を出力するためのあらゆる種類のデバイスおよびメカニズムを含むことを意図する。たとえば、ユーザインタフェース出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、作図装置、音声出力装置、およびモデムなど、文字、図形、および音声/映像情報を視覚的に伝えるいろいろな表示装置を含み得るが、これに限定されない。
【0151】
コンピュータシステム1300は、システムメモリ1310内に現在位置して図示されているソフトウェア要素を含むストレージサブシステム1318から構成されてもよい。システムメモリ1310は、処理装置1304上でロード可能かつ実行可能なプログラム命令、およびこれらのプログラムの実行中に生成されるデータを格納してもよい。
【0152】
コンピュータシステム900の構成および種類によっては、システムメモリ910は、揮発性メモリであってもよく(RAM(Random Access Memory)など)、および/または不揮発性メモリ(ROM(Read-Only Memory)、フラッシュメモリなど)であってもよい。RAMは、通常、処理装置904がすぐにアクセスできる、および/または現在操作および実行しているデータおよび/またはプログラムモジュールを含む。いくつかの実装形態において、システムメモリ910は、SRAM(Static Random Access Memory)またはDRAM(Dynamic Random Access Memory)など、複数の異なる種類のメモリを含んでもよい。いくつかの実装形態において、起動中などで、コンピュータシステム900内の要素間で情報を転送することを助ける基本ルーチンを含むBIOS(Basic Input/Output System)は、通常、ROMに格納されてもよい。また、一例として、システムメモリ910は、クライアントアプリケーション、ウェブブラウザ、ミッドティア・アプリケーション、リレーショナルデータベース管理システム(RDBMS:Relational データbase Management Systems)などを含み得るアプリケーションプログラム912と、プログラムデータ914と、オペレーティングシステム916とを含む。一例として、オペレーティングシステム916は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/もしくはLinuxオペレーティングシステム、いろいろな市販のUNIX(登録商標)もしくはUNIXに似たオペレーティングシステム(いろいろなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むが、これに限定されない)、ならびに/またはiOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10OS、およびPalm(登録商標)OSオペレーティングシステムなど、モバイルオペレーティングシステムを含んでもよい。
【0153】
また、ストレージサブシステム918は、いくつかの態様の機能を提供する基本プログラミング構成およびデータ構成を格納するための有形のコンピュータ読み取り可能な記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能を提供するソフトウェア(プログラム、コードモジュール、命令)がストレージサブシステム918に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理装置904によって実
行されてもよい。また、ストレージサブシステム918は、本発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【0154】
また、ストレージサブシステム900は、コンピュータ読み取り可能な記憶媒体922にさらに接続され得るコンピュータ読み取り可能な記憶媒体リーダ920を含んでもよい。システムメモリ910と合わせて、必要に応じてシステムメモリ910と組み合わせて、コンピュータ読み取り可能な記憶媒体922は、遠隔の記憶装置、ローカル記憶装置、固定記憶装置、および/またはリム―バブル記憶装置、ならびにコンピュータ読み取り可能な情報を一時的におよび/またはさらに永続して含み、格納し、送信し、および取り出すための記憶媒体を包括的に表してもよい。
【0155】
コードまたはコードの一部を含んだコンピュータ読み取り可能な記憶媒体922は、情報の格納および/または伝送のための任意の方法および技術で実現される揮発性媒体および不揮発性媒体、取り外し可能な媒体および固定型媒体などの記憶媒体および通信媒体を含む、当技術分野において既知または使用される任意の適切な媒体も含んでもよいが、これに限定されない。これは、RAM、ROM、EEPROM(Electronically Erasable Programmable ROM)、フラッシュメモリ、もしくは他のメモリ・テクノロジー、CD-ROM、DVD(Digital Versatile Disk)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置などの有形の非一時的なコンピュータ読み取り可能な記憶媒体、またはその他の有形のコンピュータ読み取り可能な媒体を含み得る。特に指定する場合、これは、データ信号、データ伝送など無形の一時的なコンピュータ読み取り可能な媒体、または所望の情報を伝送するために使用され得るその他の媒体、およびコンピューティングシステム900によってアクセスされ得るその他の媒体なども含み得る。
【0156】
一例として、コンピュータ読み取り可能な記憶媒体922は、固定型不揮発性磁気媒体から読み出しまたは書き込みを行うハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読み出しまたは書き込みを行う磁気ディスクドライブ、ならびに、CD ROM、DVD、およびBlu-Ray(登録商標)ディスクなどの取外し可能な不揮発性光ディスクもしくは他の光学媒体から読み出しまたは書き込みを行う光ディスクドライブを含んでもよい。コンピュータ読み取り可能な記憶媒体922は、Zip(登録商標)ドライブ、フラッシュメモリーカード、USB(Universal Serial Bus)フラッシュドライブ、SD(Secure Digital)カード、DVDディスク、デジタルビデオテープなどを含み得るが、これに限定されない。また、コンピュータ読み取り可能な記憶媒体922は、フラッシュメモリベースのSSD(Solid-State Drives)、エンタープライズフラッシュドライブ、ソリッドステートROMなど、不揮発性メモリに基づくSSD(Solid-State Drives)と、ソリッドステートRAM、動的RAM、静的RAM、DRAMベースのSSDなど、揮発性メモリに基づくSSDと、MRAM(Magnetoresistive RAM)SSDと、DRAMとフラッシュメモリとの組合せベースのSSDを使用するハイブリッドSSDとを含んでもよい。これらのディスクドライブおよびそれらの関連するコンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、およびその他のコンピュータシステム900用データの不揮発性ストレージを提供してもよい。
【0157】
通信サブシステム924は、他のコンピュータシステムおよびネットワークへのインタフェースを提供する。通信サブシステム924は、コンピュータシステム900からデータを受信し、コンピュータシステム900から他のシステムにデータを送信するためのインタフェースとして機能する。たとえば、通信サブシステム924は、コンピュータシス
テム900がインターネットを介して1つ以上のデバイスに接続することを可能にしてもよい。いくつかの態様では、通信サブシステム924は、(たとえば、携帯電話技術、3G、4G、もしくはEDGE(Enhanced Data Rates For Global Evolution)などの次世代データネットワークテクノロジー、WiFi(IEEE802.28ファミリー標準規格)、他の移動体通信技術、またはそれらの任意の組合せを使用する)ワイヤレス音声ネットワークもしくは/またはデータネットワークにアクセスするためのRF(Radio Frequency)トランシーバコンポーネント、GPS(Global Positioning System)レシーバコンポーネント、および/または他の構成要素を含み得る。いくつかの態様では、通信サブシステム924は、ワイヤレスインタフェースに加えて、またはワイヤレスインタフェースの代わりに、有線ネットワーク接続性(たとえば、Ethernet)を提供できる。
【0158】
いくつかの態様では、通信サブシステム924は、コンピュータシステム900を利用し得る1人以上のユーザに代わって、構造化データフィードおよび/または非構造化データフィード926、イベントストリーム928、イベント更新99などの形で入力通信文を受信してもよい。
【0159】
一例として、通信サブシステム924は、Twitter(登録商標)フィード、Facebook(登録商標)の更新、RSS(Rich Site Summary)フィードなどのwebフィード、および/もしくは1つ以上のサードパーティ情報ソースからのリアルタイム更新など、ソーシャルメディアネットワークならびに/または他のコミュニケーションサービスのユーザから非構造化データフィード926をリアルタイムで受信するように構成されてもよい。
【0160】
また、これに加えて、通信サブシステム924は、連続したデータストリームの形でデータを受信するように構成されてもよく、連続したデータストリームは、本質的にはっきりとした終端がない、連続または無限の、リアルタイムイベントおよび/またはイベント更新99のイベントストリーム928を含んでもよい。連続データを生成するアプリケーションとして、たとえば、センサーデータアプリケーション、チッカー、ネットワークパフォーマンス測定ツール(たとえば、ネットワーク監視およびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通量監視などが挙げられてもよい。
【0161】
また、通信サブシステム924は、コンピュータシステム900に接続された1つ以上のストリーミングデータソースコンピュータと通信中であり得る1つ以上のデータベースに、構造化データフィードおよび/または非構造化データフィード926、イベントストリーム928、イベント更新99などを出力するように構成されてもよい。
【0162】
コンピュータシステム900は、手のひらサイズのポータブルデバイス(たとえば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバーラック、またはその他のデータ処理システムを含む、様々な種類のうちの1つであり得る。
【0163】
変わり続けるというコンピュータおよびネットワークの性質のため、図に示すコンピュータシステム900の説明は、具体例にすぎない。図に示すシステムよりも多いまたは少ない構成要素を有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアが使用されてもよく、および/または、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、またはそれらの組合せで特定の要素が実現されてもよい。
さらに、ネットワーク入/出力装置など、他のコンピューティングデバイスへの接続を採用してもよい。本明細書に記載の開示および教示に基づいて、当業者は、さまざまな態様を実現するための他のやり方および/または方法が分かるだろう。
【0164】
上記の明細書において、本発明の態様をその具体例を参照しながら説明したが、当業者は本発明がこれに限定されないことが分かるだろう。上述した発明のさまざまな特徴および態様は、個々に、または共同で用いられてもよい。さらに、態様は、本明細書のより広義の趣旨および範囲から逸脱することなく、本明細書において記載した環境およびアプリケーションの数を上回る任意の数の環境およびアプリケーションにおいて利用され得る。明細書および添付の図面は、したがって、限定ではなく例示とみなされる。
図1
図2
図3
図4
図5
図6
図7
図8
図9