(57)【要約】  本発明のシステム、装置、および方法は、テキスト分類に関する。テキスト分類システムは、テキストの発話にアクセスする。発話は、少なくとも１つの単語を含む。テキスト分類システムは、発話の解析木を生成する。解析木は、品詞を有する少なくとも１つの終端ノードを含む。終端ノードは、発話の単語を表す。テキスト分類システムは、１つ以上のルールをテキストに適用する。次に、テキスト分類システムは、発話を質問または自律エージェントに操作を実行させる要求として分類する。
2020537223.tif 000002
【特許請求の範囲】
【請求項１】
テキストを質問または要求として分類するためのシステムであって、
言語エンジンを備え、前記言語エンジンは、
少なくとも１つの単語を含む発話にアクセスし、
前記発話の解析木を生成するように構成され、前記解析木は、品詞を含む少なくとも１つの終端ノードを含み、各終端ノードは、前記発話の単語または句を表し、前記言語エンジンは、さらに、
前記解析木に１つ以上の品詞を含む１つ以上の言語テンプレートを適用するように構成され、前記システムは、さらに、
前記言語エンジンから取得される１つ以上の照合結果を生成し、ルールを適用することによって前記テキストの分類を判断するように構成されるルールエンジンを備え、前記ルールは、
（ｉ）言語テンプレート照合を判断することに応答して、前記発話を要求として分類することと、
（ｉｉ）前記発話が最初の単語として命令形動詞を含むと判断することに応答して、前記発話を要求として分類することと、
（ｉｉｉ）前記発話に１つ以上の定義済みの要求キーワードを確認することに応答して、前記発話を要求として分類することと、
（ｉｖ）前記発話に１つ以上の定義済みの質問キーワードを確認することに応答して、前記発話を質問として分類することとを含み、
前記システムは、さらに、前記分類に基づいて、メッセージをユーザデバイスに送るまたは外部装置の構成を調整するように構成される、システム。
【請求項２】
前記ルールは、（ｖ）前記発話を質問または要求として識別できないことに応答して、前記発話を不明として分類することをさらに含む、請求項１に記載のシステム。
【請求項３】
前記言語テンプレートは、一人称代名詞および名詞を含む、請求項１に記載のシステム。
【請求項４】
前記ルールは、（ｖ）前記発話が最初の単語の位置に質問接頭辞を含んでいると判断することに応答して、前記発話を質問として分類することをさらに含む、請求項１に記載のシステム。
【請求項５】
前記１つ以上の定義済みの質問ワードは、内的動詞を含む、請求項１に記載のシステム。
【請求項６】
前記ルールは、（ｖ）前記発話が最後の単語の位置に要求の接尾辞を含んでいると判断することに応答して、前記発話を要求として分類することをさらに含む、請求項１に記載のシステム。
【請求項７】
前記ルールは、（ｖ）前記発話がトランザクション動詞を含んでいると判断することに応答して、前記発話を要求として分類することをさらに含む、請求項１に記載のシステム。
【請求項８】
前記言語エンジンは、前記解析木を決定する前に、前記発話から１つ以上のストップワードを取り除くように構成される、請求項１に記載のシステム。
【請求項９】
分類モデルを利用して発話を質問または要求として分類するための方法であって、
テキストの発話にアクセスするステップを含み、前記発話は、少なくとも１つの単語を含み、前記方法は、さらに、
前記発話の解析木を生成するステップを含み、前記解析木は、品詞を含む最低１つの終端ノードを含み、各終端ノードは、前記発話の単語または句を表し、前記方法は、さらに、
前記解析木に分類モデルを適用することによって、前記発話の分類を判断するステップを含み、前記適用することは、
前記解析木について、前記発話と質問として識別された訓練クラスとの第１の一致を示す第１の類似度スコアを決定することと、
前記解析木について、前記発話と要求として識別された訓練クラスとの第２の一致を示す第２の類似度スコアを決定することとを含み、前記方法は、さらに、
前記分類モデルから、前記発話の分類を受け付けるステップを含み、前記発話の分類は、（ｉ）前記判断されたクラスの類似度スコアがその他の類似度スコアよりも高いことに基づくまたは（ｉｉ）不明である、方法。
【請求項１０】
訓練データペアのセットを含む訓練データのセットにアクセスするステップをさらに含み、各訓練データペアは、テキストと予想分類とを含み、前記訓練データのセットは、（ｉ）質問を含む第１の訓練データペアおよび（ｉｉ）要求を含む第２の訓練データペアを含み、前記方法は、さらに、
前記訓練データペアのうちの１つを前記分類モデルに提供し、
判断された分類を前記分類モデルから受け付け、
前記判断された分類と前記予想分類との差を算出することによって損失関数を算出し、
前記分類モデルの内部パラメータを調整して前記損失関数を最小化する、ことを反復して行うことによって、分類モデルを訓練するステップを含む、請求項９に記載の方法。
【請求項１１】
前記分類は、前記発話への類似度が最も高い分類である、請求項９に記載の方法。
【請求項１２】
発話を質問または要求として分類する方法であって、
テキストの発話にアクセスするステップを含み、前記発話は、少なくとも１つの単語を含み、前記方法は、さらに、
前記発話の解析木を生成するステップを含み、前記解析木は、品詞を含む少なくとも１つの終端ノードを含み、各終端ノードは、前記発話の単語を表し、前記方法は、さらに、
（ｉ）前記解析木の最初の終端ノードが命令形動詞を含むと判断することに応答して、前記発話を要求として分類することと、
（ｉｉ）前記解析木において、１つ以上の定義済みの質問キーワードを分類することに応答して、前記発話を質問として分類することとを含む動作のセットのうちの１つ以上の動作を実行するステップを含む、方法。
【請求項１３】
前記動作は、
１つ以上の品詞を含む１つ以上の言語テンプレートを前記解析木に適用するステップと、
言語テンプレート照合を判断することに応答して、前記発話を要求として分類するステップとをさらに含む、請求項１２に記載の方法。
【請求項１４】
前記品詞は、第一人称形の代名詞、および名詞を含む、請求項１２に記載の方法。
【請求項１５】
前記動作は、前記発話を質問または要求として識別できないことに応答して、前記発話を不明として分類することをさらに含む、請求項１２に記載の方法。
【請求項１６】
前記動作は、（ｉｉｉ）前記発話において１つ以上の定義済みの要求キーワードを分類することに応答して、前記発話を要求として分類することをさらに含む、請求項１２に記載の方法。
【請求項１７】
前記動作は、（ｉｉｉ）前記発話が質問接頭辞を含むと判断することと、前記発話を質問として分類することとをさらに含む、請求項１２に記載の方法。
【請求項１８】
前記１つ以上の定義済みの質問ワードは、内的動詞を含む、請求項１２に記載の方法。
【請求項１９】
前記１つ以上の定義済みの要求キーワードは、トランザクション接尾辞またはトランザクション動詞を含む、請求項１２に記載の方法。
【請求項２０】
システムであって、
非一時的なコンピュータによって実行可能なプログラム命令を格納した、コンピュータ読み取り可能な媒体と、
前記非一時的なコンピュータによって実行可能なプログラム命令を実行するための前記コンピュータ読み取り可能な媒体に通信可能に連結された処理装置とを備え、前記非一時的なコンピュータによって実行可能なプログラム命令を実行することによって、前記処理装置に動作を実行させ、前記動作は、
テキストの発話にアクセスすることを含み、前記発話は、少なくとも１つの単語を含み、前記動作は、さらに、
前記発話の解析木を生成することを含み、前記解析木は、品詞を含む少なくとも１つの終端ノードを含み、各終端ノードは、前記発話の単語または句を表し、前記動作は、さらに、
前記解析木に分類モデルを適用することによって前記発話の分類を判断することを含み、前記適用することは、
前記解析木について、前記発話と発話として識別された訓練クラスとの第１の一致を示す第１の類似度スコアを決定することと、
前記解析木について、前記発話と要求として識別された訓練クラスとの第２の一致を示す第２の類似度スコアを決定することとを含み、前記動作は、さらに、
前記分類モデルから、前記発話の分類を受け付けることを含み、前記発話の分類は、（ｉ）前記判断されたクラスの類似度スコアがその他の類似度スコアよりも高いことに基づくまたは（ｉｉ）不明である、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１７年９月２８日に出願された米国仮出願第６２／５６４，８６８号の利益を主張するものであり、そのすべての記載内容を引用により本明細書に援用する。
【０００２】
技術分野
本開示は、全体的に、言語学に関する。より具体的には、本開示は、発話を質問または自律エージェントに操作を実行させる要求として分類するための言語学を利用することに関する。
【０００３】
政府支援の研究開発によってなされた発明に対する権利に関する声明
なし
【背景技術】
【０００４】
背景
自律エージェントを利用して、様々なユーザの質問に対処することができる。たとえば、自律エージェントは、「ｗｈａｔ  ａｒｅ  ｔｈｅ  ｆｅｅｓ  ａｓｓｏｃｉａｔｅｄ  ｗｉｔｈ  ａ  ｃｈｅｃｋｉｎｇ  ａｃｃｏｕｎｔ（当座預金に関連する手数料はいくらですか）」など、情報の要求をユーザから受け付ける。次に、ユーザは、「ｐｌｅａｓｅ  ｏｐｅｎ  ａ  ｎｅｗ  ｂａｎｋ  ａｃｃｏｕｎｔ  ｆｏｒ  ｍｅ（新しい銀行口座を開設してください）」と要求する可能性がある。
【０００５】
しかし、現在のソリューションでは、質問に関するユーザの発話と、操作を実行させる要求である発話とを区別することができない。その理由として、１つには、要求が「ｐｌｅａｓｅ  ｔｕｒｎ  ｏｎ  ｔｈｅ  ｈｅａｔ（暖房を入れてください）」など明示的ではなく、「Ｉ  ａｍ  ｔｏｏ  ｃｏｌｄ（すごく寒い）」など、暗示的であり得るからである。既存のソリューションでは、「Ｉ  ａｍ  ｔｏｏ  ｃｏｌｄ」を「ｃｏｌｄｎｅｓｓ（寒さ）」に関する質問として誤って分類していまい、「ｉｎ  Ｓａｎ  Ｆｒａｎｃｉｓｃｏ、ｔｈｅ  ｔｅｍｐｅｒａｔｕｒｅ  ｃａｎ  ｓｏｍｅｔｉｍｅｓ  ｂｅ  ｃｏｌｄ（サンフランシスコでは、気温が低いときがあります）」などの受け答えを提供してしまう場合がある。
【０００６】
したがって、既存のソリューションでは、ユーザをイライラさせてしまう可能性がある。上記例を用いて進めると、自律エージェントがヒーターの電源を入れる、というユーザの希望が無視されるため、ユーザがイライラしてしまう可能性がある。これら２種類の発話を間違えてしまうことの関連性は高い。たとえば、エージェントがユーザの質問の解釈を誤ると、ユーザは、質問を明確に言い直す場合があるが、エージェントが質問を再び認識できない場合、ユーザは、どう続けてよいか戸惑ってしまうか、単純に、エージェントを利用することを完全に断念してしまう可能性があり、エージェントが全く役に立たなくなってしまう。ユーザがイライラすることで、結果的に、自律エージェントの受け入れ率が低くなり得る。
【０００７】
このように、質問と要求とを区別するためのソリューションが必要である。
【発明の概要】
【課題を解決するための手段】
【０００８】
概要
一般に、本発明のシステム、装置、および方法は、テキスト分類に関する。一態様において、システムは、言語エンジンと、ルールエンジンとを備える。言語エンジンは、少なくとも１つの単語を含む発話にアクセスするように構成される。言語エンジンは、さらに、この発話の解析木を生成するように構成される。解析木は、品詞を含む少なくとも１つの非終端ノードと、種類を含む少なくとも１つの終端ノードとを含む。各終端ノードは、発話の単語または句を表す。言語エンジンは、さらに、解析木に１つ以上の品詞を含む１つ以上の言語テンプレートを適用するように構成される。ルールエンジンは、言語エンジンから取得される１つ以上の照合結果を生成し、ルールを適用することによってテキストの分類を判断するように構成される。ルールは、言語テンプレート照合を判断することに応答して、発話を要求として分類することを含む。ルールは、発話が最初の単語として命令形動詞を含むと判断することに応答して、発話を要求として分類することをさらに含む。ルールは、さらに、発話に１つ以上の定義済みの要求キーワードを確認することに応答して、発話を要求として分類することを含む。ルールは、さらに、発話に１つ以上の定義済みの質問キーワードを確認することに応答して、発話を質問として分類することを含む。システムは、さらに、分類に基づいて、メッセージをユーザデバイスに送るまたは外部装置の構成を調整するように構成される。
【０００９】
一態様において、ルールは、発話を質問または要求として識別できないことに応答して、発話を不明として分類することをさらに含む。
【００１０】
一態様において、言語テンプレートは、一人称代名詞および名詞を含む。
一態様において、ルールは、発話が最初の単語の位置に質問接頭辞を含んでいると判断することに応答して、発話を質問として分類することをさらに含む。
【００１１】
一態様において、１つ以上の定義済みの質問ワードは、内的動詞を含む。
一態様において、ルールは、発話が最後の単語の位置に要求の接尾辞を含んでいると判断することに応答して、発話を要求として分類することをさらに含む。
【００１２】
一態様において、ルールは、発話がトランザクション動詞を含んでいると判断することに応答して、発話を要求として分類することをさらに含む。
【００１３】
一態様において、言語エンジンは、解析木を決定する前に、発話から１つ以上のストップワードを取り除くように構成される。
【００１４】
一態様において、分類モデルを利用して発話を質問または要求として分類するための方法は、テキストの発話にアクセスする。発話は、少なくとも１つの単語を含む。この方法は、発話の解析木を生成する。解析木は、品詞を含む少なくとも１つの非終端ノードと、種類を含む少なくとも１つの終端ノードとを含む。各終端ノードは、発話の単語または句を表す。方法は、解析木に分類モデルを適用することによって、発話の分類を判断する。発話の分類を判断するステップは、解析木について、発話と発話として識別された訓練クラスとの第１の一致を示す第１の類似度スコアを決定することを含む。発話の分類を判断するステップは、解析木について、発話と要求として識別された訓練クラスとの第２の一致を示す第２の類似度スコアを決定することを含む。方法は、分類モデルから、発話の分類を受け付けるステップを含む。この分類は、判断されたクラスの類似度スコアがその他の類似度スコアよりも高いことに基づくまたは不明である。
【００１５】
一態様において、方法は、訓練データペアのセットを含む訓練データのセットにアクセスする。各訓練データペアは、テキストと予想分類とを含む。訓練データのセットは、質問を含む第１の訓練データペアと、要求を含む第２の訓練データペアとの両方を含む。方法は、訓練データペアのうちの１つを分類モデルに提供し、判断された分類を分類モデルから受け付け、判断された分類と予想分類との差を算出することによって損失関数を算出し、分類モデルの内部パラメータを調整して損失関数を最小化する、ことを反復して行うことによって、分類モデルを訓練する。
【００１６】
一態様において、分類発話への類似度が最も高い分類である。
上記方法は、有形のコンピュータ読み取り可能な媒体上で実行され得る、および／または、コンピュータプロセッサおよび付属のメモリ内で動作し得る。
【図面の簡単な説明】
【００１７】
【図１】一態様に係る、テキスト分類環境の例を示す図である。
【図２】一態様に係る、解析木の例を示す図である。
【図３】一態様に係る、テキスト分類環境において用いられる分類データの例を示す図である。
【図４】一態様に係る、質問と要求とを区別するための処理例を説明するフローチャートである。
【図５】一態様に係る、質問と要求とを区別するために用いられるルールの例を説明するフローチャートである。
【図６】一態様に係る、発話が質問であるかまたは要求であるかを検出するように機械学習モデルを訓練するための例示的な処理のフローチャートである。
【図７】態様のうちの１つを実装するための分散システムの簡略図である。
【図８】一態様に係る、一態様のシステムの構成要素によって提供されるサービスがクラウドサービスとして提供され得るシステム環境の構成要素の簡略ブロック図である。
【図９】本発明の様々な態様が実装され得る例示的なコンピュータシステムを示す図である。
【発明を実施するための形態】
【００１８】
詳細な説明
本明細書に開示の態様は、テキストの分類を向上させることによって、コンピュータで実行される言語学の分野に対する技術改良を提供する。より具体的には、特定の態様は、言語学を用いて、テキストが質問であるか操作を実行させる要求であるかを判断する。上述したように、自律エージェントについての既存のソリューションでは、質問とトランザクション要求とを区別することができず、これによって、エージェントとユーザとのやり取りが失敗に終わってしまう。
【００１９】
２人の人間同士の会話は、談話形式である。第１の人間と第２の人間との会話は、電子メールおよび音声会話など、ほかの従来の手段に加えて、電子メッセージ（たとえば、チャット）によるものであり得る。自律エージェント、ＣｈａｔＢｏｔ、Ａｕｔｏｎｏｍｏｕｓ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ（自立型デジタルアシスタント）、またはバーチャルアシスタントは、第２の人間に置き換わり得る「インテリジェント」マシンであり、程度の差はあっても、２人の人間同士の会話をまねることができる。このようなシステムの１つの目標は、第１の人間が、第２の人間がマシンであることがわからないようになることである（アラン・チューリングが１９５０年に開発したチューリングテスト）。
【００２０】
たとえば、ユーザは、会話によるやり取りによって自律エージェントとやり取りすることができる。会話型ユーザインタフェースとも呼ばれるこのやり取りは、あたかも２人の人間同士の問答のような、エンドユーザとエージェントとの対話である。エンドユーザが「Ｈｅｌｌｏ」とエージェントに呼びかけて、エージェントが「Ｈｉ」で応答してユーザにご用件は何でしょうかとたずねるくらいに単純なものであり得る。あるいは、ある口座から別の口座にお金を振り込むなど、銀行業務エージェントにおける取引のやり取り、バケーション用の残高を確認するなど、ＨＲエージェントにおける情報のやり取り、小売りエージェントにおける、返品の取り扱い方法などの、よくある質問をたずねることであり得る。
【００２１】
その他の手法と組み合わされた自然言語処理（ＮＬＰ：Ｎａｔｕｒａｌ  Ｌａｎｇｕａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ）アルゴリズムおよび機械学習（ＭＬ：Ｍａｃｈｉｎｅ  Ｌｅａｒｎｉｎｇ）アルゴリズムを用いて、エンドユーザの意図を分類することができる。上位意図は、エンドユーザが達成したい意図である（口座残高を知る、購入するなど）。意図は、バックエンド処理が実行する作業単位に顧客からの入力をマッピングすることであり得る。また、意図は、特定のエージェント操作（たとえば、要求）につながる発話のクラスであり得る。そのため、エージェントにおいてユーザが発した句に基づいて、個別のユースケースまたは作業単位にこれらの句がマッピングされる。たとえば、残高確認、送金、および支出管理はすべて、エージェントがサポートすべき「ユースケース」であり、エンドユーザが自然言語で入力する自由形式のテキスト入力からどの作業単位がトリガされるべきかを解決できなければならないユースケースである。
【００２２】
上位では、通常、（１）何らかの操作を実行させる要求と、（２）質問など、情報を求める要求という２種類の要求があり得る。要求は、作業単位が作成される応答を有する。質問は、たとえば、適切な回答など、質問に対する応答を有する。いくつかの態様では、回答は、エージェントがその幅広い知識ベース（複数可）からまたはインターネットもしくはイントラネット、またはその他のパブリックまたはプライベートで利用可能なデータソースを探索して得られた最良の既存の回答に照合させることから回答を構成するという形態を取り得る。
【００２３】
文脈解析、機械学習を含む人工知能、および自然言語処理は、チューリングテストに合格するという長期的な目標に向かって大きな一歩を踏み出した。非常に大きなデータのリポジトリを検索および処理でき、かつ、予測分析を備えるために複雑なデータ分析をコンピュータが行えるようになると、エージェントが人間のように振る舞い、コンピュータと組み合わされるようになることが長期的な目標になる。しかし、このようなソリューションでは、質問とトランザクション要求との区別ができない。
【００２４】
発話を質問または要求として分類するために、特定の態様は、キーワード分析と連動して解析木およびテンプレートによる言語分析を利用する。命令形動詞など、特定のキーワードは、発話が操作要求であることを示し得る。同様に、内的動詞または特定の接頭辞など、特定の品詞の特定の組合せを発話が含んでいるかどうかによって、この文が操作を実行させる要求であるかどうかが示され得る。特定の態様は、言語処理を機械学習で補足し、たとえば、分析のさらなる向上や、カスタマイズを可能にする。
【００２５】
発話は、明確に表現された要求（たとえば、「ｐｌｅａｓｅ  ｔｕｒｎ  ｕｐ  ｔｈｅ  ｈｅａｔ（暖房の温度を上げてください）」または暗黙的に表現された要求（たとえば、「ｉｔ  ｉｓ  ｃｏｌｄ（寒い）」）を含み得る。トランザクション要求は、質問形式であり得る。たとえば、「ｗｈａｔ  ｉｓ  ｍｙ  ａｃｃｏｕｎｔ  ｂａｌａｎｃｅ（私の口座残高はいくらですか）」という単純な質問は、アカウントを選択してデータベースクエリを実行し、口座残高を判断するためのトランザクション要求であり得る。さらに、ユーザは、所望の状態を実現するための明確な操作ではなく、当該状態を要求する場合がある。たとえば、「Ｉ  ａｍ  ｔｏｏ  ｃｏｌｄ（寒い）」という発話は、質問ではなく、暖房を入れることによって実現できる所望の状態をほのめかしている。有効な操作が「ｃｏｌｄ」に関連付けられていない場合、この発話は、「ｃｏｌｄｎｅｓｓ（寒さ）」に関する質問として分類され得る。本明細書において説明する態様は、質問とトランザクション要求とを言語学的に区別することによって、このような曖昧であると思われる句を汎用的に扱うことができる。
【００２６】
上述したように、質問であるかトランザクション要求であるかの認識を誤ることは、問題となり得る。自律エージェントがユーザの質問の誤って解釈して異なる質問に対する回答を返してしまった場合、ユーザは、質問を明確に言い直して再度要求し得る。自律エージェントがトランザクション要求を、意図されていないトランザクションとして認識すると、ユーザは、エージェントが要求を発行して不適切なパラメータを指定したときにそれを理解することになる。次に、ユーザは、要求をキャンセルして要求を明確に言い直す可能性がある。しかしながら、誤って理解された質問およびトランザクション要求に関連するエージェントのエラーは修正することができるものの、質問であるかトランザクション要求であるかの認識を誤るエージェントのエラーは、会話の流れを絶ってしまい、会話をどう継続すればよいのかとユーザを困惑させてしまい、その結果、ユーザをイライラさせ、おそらく、自律エージェントが無用なものとして拒否されてしまうことになる。
【００２７】
これに加えて、質問とトランザクション要求とを区別することは、汎用的でなければならない（たとえば、銀行業務、カスタマーサービス、調査など、特定の案件に依存してはならない）。特定の態様は、専門知識を用いてマシンを訓練している自律エージェントのシステム開発者を、少なくとも質問であるかトランザクション要求であるかを区別するための訓練から解放する。また、特定の態様は、コンテキストに依存しないで動作する。たとえば、自律エージェントは、質問と要求に関する会話との切り替えに対応することができる。
【００２８】
特定の態様を紹介するために、下記の非限定例を提供する。分類アプリケーションを実行する自律エージェントは、「ｈｏｗ  ｄｏ  Ｉ  ｃｈｅｃｋ  ｍｙ  ｂａｌａｎｃｅ？（残高はどうやって確認できますか？）」というメッセージを受信する。分類アプリケーションは、定義済みの語彙およびテンプレートを含んだ分類データのセットにアクセスする。分類アプリケーションは、構文解析と意味的照合とを含む言語処理を発話に対して行い、発話にルールセットを適用して発話を質問として分類する。今度は、自律エージェントが銀行残高の確認の仕方についての情報をユーザデバイスに提供する。
【００２９】
定義
本明細書において使用するとき、「発話」は、口頭または文書など、任意の形式の１つ以上の単語である。発話として、「ｐｌｅａｓｅ  ｔｕｒｎ  ｏｎ  ｔｈｅ  ｌｉｇｈｔｓ（照明を点けてください）」、「ｗｈａｔ’ｓ  ｔｈｅ  ｗｅａｔｈｅｒ？（どんな天気ですか？）」などが挙げられる。
【００３０】
本明細書において使用するとき、「解析木」または「構文木」は、テキストの統語構造を表す根付きの順序木を指す。たとえば、
本明細書において使用するとき、「品詞」は、単語の属性を指す。動詞、名詞、名詞句、前置詞などが挙げられる。
【００３１】
本明細書において使用するとき、「接頭辞」は、文中のすべての単語のうち、最初の単語またはその一部を指す。「ｐｌｅａｓｅ」、「ｋｉｎｄｌｙ」、または「ｈｅｌｐ」などが挙げられる。
【００３２】
本明細書において使用するとき、「接尾辞」は、文中のすべての単語のうち、最後にある単語またはその一部を指す。「ｏｆｆ」または「ｏｎ」などが挙げられる。
【００３３】
ここで、図面を参照すると、図１は、一態様に係る、テキスト分類環境の例を示す図である。図１は、ユーザデバイス１７０と、自律エージェント１０１と、外部装置１８０とを備えるテキスト分類環境１００を示す図である。ユーザデバイス１７０は、メッセージによって自律エージェント１０１と対話するように構成される。今度は、自律エージェント１０１がユーザのメッセージを分析し、ユーザの意図、具体的には、メッセージが質問を示しているか要求を示しているかを判断する。ユーザの要求に応答して、外部装置１８０を起動または再構成し得る。外部装置として、照明、車庫の扉、音楽プレーヤ、車などが挙げられる。
【００３４】
ユーザデバイス１７０は、携帯電話、スマートフォン、タブレット端末、ラップトップ、スマートウォッチなど、任意のモバイル機器であり得る。ユーザデバイス１７０の機能は、たとえば、アプリケーションまたはウェブアプリケーションを介してソフトウェアで実現され得る。ユーザデバイス１７０は、ディスプレイ１７１を含む。ディスプレイ１７１として、コンピュータ画面、モバイル機器画面、ＬＣＤ、またはＬＥＤバックライト付きディスプレイなどが挙げられる。ディスプレイ１７１は、４つのメッセージ１８１〜１８４を表示する。
【００３５】
自律エージェント１０１は、分類アプリケーション１０２、分類データ１２０、言語エンジン１３０、ルールエンジン１４０、分類モデル１５０、または訓練データ１６０のうちの１つ以上を含む。分類データ１２０は、語彙、テンプレート、ならびに、言語エンジン１３０およびルールエンジン１４０によって利用される構成部品を含み得る。たとえば、分類データ１２０は、発話が要求であると示す先頭動詞（ｌｅａｄｉｎｇ  ｖｅｒｂ）の一覧を含む。「ｔｕｒｎ  ｏｎ  ｔｈｅ  ｌｉｇｈｔｓ」において用いられる動詞「ｔｕｒｎ」、および「ｏｐｅｎ  ｔｈｅ  ｇａｒａｇｅ  ｄｏｏｒ」において用いられる「ｏｐｅｎ」などがある。これに加えて、分類データ１２０は、発話中に存在する、ユーザが何かを欲しがっていることを示す表現を含む。「Ｐｌｅａｓｅ  ｄｏ  …  ｆｏｒ  ｍｅ」などの句、または、「Ｇｉｖｅ  ｍｅ  ｍｙ  …  」など、情報の要求を示す句などが挙げられる。また、これらの表現は、「ｐｌｅａｓｅ  ｔｅｌｌ  ｍｅ…」などの質問へのユーザによる異なる対処方法を含む。分類データ１２０に含まれるデータのさらに別の例を、図３で説明する。
【００３６】
言語エンジン１３０は、１段階以上の言語分析を発話に対して実行する。たとえば、言語エンジン１３０は、先頭動詞の存在、および所有格に含まれる目的語への参照（たとえば、「ｍｙ  ｈｏｕｓｅ」）を検出することができる。言語エンジン１３０は、パーサ１３１と、照合部１３２とを備える。照合部１３２は、１つ以上のテンプレートを構文解析された発話に適用して、発話が質問であるか要求であるかを判断することができる。テンプレートとして、文字列テンプレートおよび言語テンプレートなどが挙げられる。文字列テンプレートは、発話中の文字列の存在を検出する一方、言語テンプレートは、１つ以上の特定の品詞（たとえば、名詞、動詞、代名詞）の一致の存在を判断する。
【００３７】
ルールエンジン１４０は、キーワードベースのルール、語彙ベースのルール、および言語ベースのルールのシーケンスを適用する。これらのルールは、特定の順番で適用され得る。一態様において、ルールエンジン１４０は、発話に含まれる要求を識別しようと試みる。識別される要求がなかった場合、ルールエンジン１４０は、デフォルト決定にフォールバックして発話を質問として分類することができる。しかし、質問を示すルールも可能である。分類アプリケーション１０２は、ルールエンジン１４０によって行われた決定を受け付けて分類を出力する。
【００３８】
一例では、ユーザデバイス１７０は、自律エージェント１０１と対話を行い、ユーザが質問および要求することを容易にする。分類アプリケーション１０２は、ユーザデバイス１７０からメッセージ１８１を受信する。メッセージ１８１は、「Ｔｒａｎｓｆｅｒ  ｆｕｎｄｓ  ｆｒｏｍ  ｃｈｅｃｋｉｎｇ  ｔｏ  ｓａｖｉｎｇｓ（資金を当座預金から普通預金に移動してください）」というユーザの発話である。この例を引き続き使用すると、分類アプリケーション１０２は、先頭の命令形動詞「ｔｒａｎｓｆｅｒ（移動する）」の存在を判断して、メッセージ１８１が要求であると判断する。ユーザデバイス１７０にメッセージ１８２を送信することによって、自律エージェント１０２は、「ｐｌｅａｓｅ  ｃｏｎｆｉｒｍ  ｔｈｅ  ａｍｏｕｎｔ（金額を確認してください）」というメッセージをユーザに表示する。次に、ユーザデバイス１７０は、自律エージェント１０１に、「ｈｏｗ  ｄｏ  Ｉ  ｃｈｅｃｋ  ｍｙ  ｂａｌａｎｃｅ？（残高はどうやって確認できますか？）」という返信メッセージ１８３を送る。今度は、ユーザの意図、具体的には、情報の要求を分類アプリケーション１０２が判断し、ユーザが残高を確認するのを助けるメッセージ１８４を返送する。
【００３９】
これに加えて、特定の態様は、機械学習を利用してルールの適用を自動化することができる。たとえば、特定の態様は、分類モデル１５０を利用して、質問であるか要求であるかの分類を取得する。分類モデル１５０は、ルールエンジン１４０の代わりに、またはルールエンジン１４０に加えて利用され得る。訓練データ１６０は、テキストと予想分類（質問または要求）とを含む訓練ペアを含んでいる。分類アプリケーション１０２は、訓練データ１６０を利用して分類モデル１５０を訓練し得る。自律エージェントに加えて、本明細書に記載の態様の実際の適用例には、Ａｕｔｏｎｏｍｏｕｓ  Ｍｏｂｉｌｅ  Ｃｌｏｕｄ  Ｅｎｔｅｒｐｒｉｓｅを含む、モバイルクラウドの実装などがある。
【００４０】
図２は、一態様に係る、解析木の例を示す図である。図２は、パーサ１３１が「Ｔｕｒｎ  ｏｎ  ｔｈｅ  ｌｉｇｈｔ」という文から生成した解析木２００を示す図である。解析木２００は、ノード２０１〜２０４を含む。各ノードは、種類ごとに示される。種類は、より詳細な分析によってさらに絞り込まれ得る。表１は、種類の例を説明するが、その他の種類も可能である。
【００４１】
【表１】
2020537223.tif 000003
【００４２】
図２から分かるように、パーサ１３１は、ノード２０１によって図示される動詞句「ｔｕｒｎ」、ノード２０２の句動詞の冠詞「ｏｎ」、ノード２０３の「ｔｈｅ」、およびノード２０４の「ｌｉｇｈｔ」を判断する。これらは、「ｄｏｂｊ」および「ｄｅｔ」など、異なる関係で結びつけられている。スタンフォードＮＬＰパーサなどの標準パーサが用いられ得る。
【００４３】
発話内の特定の予測品詞の位置に基づいて、分類アプリケーション１０２は、１つ以上のキーワードを識別する、または１つ以上の言語テンプレートを発話と照合させることができる。たとえば、ノード２０２は、発話内の最初の位置、すなわち、開始位置にある単語「Ｔｕｒｎ」を参照する。「Ｏｎ」ノード２０３は、発話内の２番目の位置にあり、以下同様である。ノード２０４または「ｌｉｇｈｔｓ」は、最終位置または発話の終わりに位置する。
【００４４】
図３は、一態様に係る、テキスト分類環境において用いられる分類データの例を示す図である。分類データ３０１は、図１に示す分類データ１２０の例である。分類アプリケーション１０２は、分類データ３０１を用いて構文解析、構文照合、および言語処理を支援する。分類データ３０１は、質問を意図する接頭辞３１１と、内的動詞３１２と、命令形動詞３１３と、要求接尾辞３１４と、要求接頭辞３１５と、要求動詞３１６と、ストップ接頭辞３１７と、テンプレート３１８とを含む。その他の語彙単語、または分類アプリケーション１０２が時間をかけて学習した単語も可能である。分類データ３０１は、１つ以上のアレイ、リスト、データベース、またはその他のデータ構造で配置され得る。
【００４５】
分類アプリケーション１０２は、分類データ３０１を用いることによって、発話に含まれる１つ以上の語彙単語またはテンプレートの一致を識別する。しかし、図４でさらに説明するが、各照合結果は、ルールセットによって重み付けされ得る。このように、特定の照合単体だけでは、必ずしも特定の分類が判断されるわけではない。
【００４６】
質問を意図する接頭辞３１１は、分類アプリケーション１０２が発話内の質問を識別するのに役立つ接頭辞の単語を含む。たとえば、「Ｉ  ｗａｎｔ  ｔｏ  ｋｎｏｗ」を含んだ発話は、「Ｉ  ｗａｎｔ」という意図を示す接頭辞を含む。意思を示す接頭辞の例を表２に示す。質問を意図する接頭辞３１１は、短縮形またはインターネットベースのコミュニケーションで用いられていると思われる綴り違いおよび略式の語形変化を含む。
【００４７】
【表２】
2020537223.tif 000004
【００４８】
分類アプリケーション１０２は、内的動詞３１２のデータベースを保持し得る。内的動詞３１２は、内的活動に関する動詞を含む。「ｋｎｏｗ」、「ｔｈｉｎｋ」、「ｒｅｃｏｇｎｉｚｅ」などが挙げられる。内的動詞３１２は、各動詞の異なる時制の語形変化を含み得る（たとえば、ｋｎｏｗ、ｋｎｅｗ、ｔｈｏｕｇｈｔなど）。１つ以上の内的動詞３１２の存在を検出すると、分類アプリケーション１０２は、発話３１０を質問として分類し得る。
【００４９】
命令形動詞３１３を用いて、照合部１３２は、発話に含まれる１つ以上の命令形動詞３１３を識別することができる。命令形動詞３１３は、命令形動詞、動詞句、および、綴り違い、句点に誤りがある動詞などの語形変化、または、異なる時制の同じ動詞を含む。１つ以上の命令形動詞３１３の存在を検出すると、分類アプリケーション１０２は、発話を要求として分類することができる。表３は、命令形動詞および語形変化のいくつかの例を示す。
【００５０】
【表３】
2020537223.tif 000005
【００５１】
一態様において、照合部１３２は、発話の最初の単語が現在形の動詞または能動態の動詞であって、法助動詞や、内的動詞、または「ｔｏ  ｂｅ」という単語形式ではないと判断する。このような制約によって、たとえば、「ｄｒｏｐ  ｔｈｅ  ｔｅｍｐｅｒａｔｕｒｅ  ｉｎ  ｔｈｅ  ｒｏｏｍ」など、動詞が必ず命令形である。
【００５２】
また、別の態様では、言語エンジン１３０は、発話が発話の作成者が所有する物に関する発話であるかまたは当該物に関連付けられている発話であるかを検出することもできる。「ｍｙ  ａｃｃｏｕｎｔ  ｂａｌａｎｃｅ」および「ｍｙ  ｃａｒ」などがある。これらの発話を識別することによって、言語エンジン１３０は、特定の物（複数可）についてではなく一般知識を共有する要求を表現する質問と比較して、発話に含まれる物（複数可）を用いて操作を行う意図、または、物（複数可）についての情報を求める要求を検出することができる。
【００５３】
さらなる態様では、分類アプリケーション１０２は、さらなる動詞の語形変化を判断することができる。動詞の語形変化は、「ｒｅ」、「ｄｉｓ」、または「ｕｎ」などの接頭辞を有するさらなる動詞を識別することを含む。「ｒｅ−ｌｏａｄ」、「ｒｅ−ｈｅａｔ」、「ｄｉｓａｓｓｅｍｂｌｅ」、および「ｕｎｍａｋｅ」などがある。さらなる態様では、分類アプリケーション１０２は、「ｃａｎ  ｙｏｕ  ｔｕｒｎ  ｏｎ  ｔｈｅ  ｌｉｇｈｔ」において用いられる「ｃａｎ  ｙｏｕ」など、命令形の動詞接頭辞の一覧を保持する。分類アプリケーション１０２は、このような接頭辞の存在を検出して発話を要求として分類することができる。
【００５４】
発話が要求であるかどうかの判断を支援するために、分類アプリケーション１０２は、要求接尾辞３１４にアクセスすることができる。要求接尾辞３１４は、物の状態など、状態を説明する形容詞を含む。表４は、要求接尾辞の例を示す。
【００５５】
【表４】
2020537223.tif 000006
【００５６】
発話が要求であるかどうかの判断を支援するために、分類アプリケーション１０２は、要求接頭辞３１５にアクセスすることができる。要求接頭辞３１５は、先頭形容詞を含む。表５は、トランザクション接尾辞の例を示す。
【００５７】
【表５】
2020537223.tif 000007
【００５８】
要求動詞３１６は、要求またはトランザクションを示す動詞を含む。要求動詞３１６の例として、「ｇｅｔ」、「ｓｅｔ」、「ｂｒｉｎｇ」、および「ｗｉｔｈｄｒａｗ」なども挙げられる。発話の中に要求動詞３１６のうちの１つを検出すると、分類アプリケーション１０２は、発話を要求として分類し得る。これに加えて、分類データ３０１は、要求またはトランザクションを示さない１つ以上の動詞を含み得る。「ｂｕｒｎ」または「ｆｏｒｇｅｔ」などがある。分類アプリケーション１０２は、発話におけるこのような単語の存在を無視し得る。表６は、トランザクション要求を示す動詞およびトランザクション要求の不在を示す動詞の例を示す。
【００５９】
【表６】
2020537223.tif 000008
【００６０】
ストップ接頭辞３１７は、「ｐｌｅａｓｅ」など、ユーザが発話の始めに加え得る単語または接頭辞を含む。一態様において、ストップ接頭辞は、ほかの処理と干渉しないよう、分類アプリケーション１０２によって取り除くことができる。表７は、ストップ接頭辞を示す。
【００６１】
【表７】
2020537223.tif 000009
【００６２】
分類データ３０１は、１つ以上のテンプレート３１８を含み得る。また、照合部１３２は、１つ以上の言語テンプレートを発話に適用し得る。テンプレート３１８は、構文ベースのテンプレートまたは言語テンプレートを含み得る。構文ベースのテンプレートの例は、発話が「ｈｏｗ  ｔｏ」または「ｉｆ」を含んでいるかどうかである。
【００６３】
図４は、一態様に係る、質問と要求とを区別するための処理例を説明するフローチャートである。
【００６４】
ブロック４０１において、処理４００は、単語を含む発話にアクセスすることを含む。発話として、「ｓｔｏｐ」などの短い句、「ｔｕｒｎ  ｏｆｆ  ｔｈｅ  ｈｅａｔ（暖房を切る）」、または「ｈｏｗ  ｄｏ  Ｉ  ｃｈｅｃｋ  ｍｙ  ｐｏｒｔｆｏｌｉｏ？」など、より長い句などが挙げられる。分類アプリケーション１０２は、コンピューティングデバイス１０１上で実行されているプロセスまたはアプリケーションから、もしくは、ユーザデバイスなど、別のコンピューティングデバイスから発話にアクセスすることができる。
【００６５】
一態様において、分類アプリケーション１０２は、発話１０１に前処理を行ってストップ接頭辞３１７を取り除く。ストップ接頭辞３１７を取り除くことによって、発話の２番目または後続の位置に存在するが特定の分類を示している単語を無視してしまう誤りを防ぐことができる。
【００６６】
ブロック４０２において、処理４００は、発話の解析木を生成することを含む。分類アプリケーション１０２は、図２で説明した方法とほぼ同様の方法で、パーサ１３１を用いて解析木を生成する。
【００６７】
ブロック４０３において、処理４００は、キーワードまたは言語分析に基づいて１つ以上のルールを評価することを含む。分類アプリケーション１０２は、解析木または発話（すなわち、テキスト）を、ルールのうちのいずれかへの入力として使用することができる。
【００６８】
図５は、一態様に係る、質問と要求とを区別するために用いられるルールの例を説明するフローチャートを示す。分類アプリケーション１０２、具体的には、ルールエンジン１４０が、ブロック５０１〜５０５の１つ以上を個々に実行、組合せて実行、および任意の順に実行し得る。異なる優先順位も可能である。たとえば、ブロック５０１が正常に実行されたとルールエンジン１４０が判断した場合、ルールエンジン１４０は、「要求」という分類を出力してブロック４０４に戻り得る。別の例では、ルールエンジン１４０がブロック５０２を実行したが要求キーワードを識別しなかった場合、ルールエンジン１４０は、ブロック５０２〜５０５のうちの１つに続き得る。
【００６９】
ブロック５０１において、処理５００は、１つ以上の定義済みの要求キーワードを確認することを含む。定義済みの要求キーワードは、要求接尾辞３１４と、要求接頭辞３１５と、要求動詞３１６とを含み得る。これらのキーワードのうちの１つ以上が存在することは、要求を示す。表８は、トランザクションとして識別された文を示し、各ケースにおいて実行される分析を例示する。
【００７０】
【表８】
2020537223.tif 000010
【００７１】
より具体的には、各種類の要求キーワードは、当該キーワードが存在すると思われる対応付けされた位置を有し得る。たとえば、分類アプリケーション１０２は、発話の最初の単語の位置に要求接頭辞を検索し、発話の最後の単語の位置に要求接尾辞を検索し、発話の任意の位置に要求動詞を検索する。
【００７２】
ブロック５０２において、処理５００は、解析木の最初の終端ノードが命令形動詞を含むと判断することを含む。照合部１３２は、発話を表す解析木をパーサ１３１から受け付け、命令形動詞３１３から命令形動詞を識別する。先頭の命令形動詞、または発話の最初の単語の位置にある動詞が識別された場合、分類アプリケーション１０２は、「要求」という分類を出力し得、処理５００および４００は、終了し得る。表９は、命令形動詞の存在に基づいて要求として識別される発話の例を示す。
【００７３】
【表９】
2020537223.tif 000011
【００７４】
一態様において、分類アプリケーション１０２は、異なる因子を重み付けし得る。たとえば、先頭動詞の存在を分類アプリケーション１０２が検出し、要求を示す場合、発話における「ｈｏｗ」の存在によって先頭動詞の存在が否定され、質問を示し得る。その場合、分類アプリケーション１０２は、発話を質問として分類する。
【００７５】
これに加えて、分類アプリケーション１０２は、「ｍｅ」または「ｍｙ」など、一人称形の代名詞の存在をさらに検出することができる。より具体的には、先頭動詞が内的動詞であり、通常、質問を示す場合、「ｍｅ」または「ｍｙ」の存在は、やはり要求を示し得る。そのため、「ｍｅ」または「ｍｙ」と連動した内的動詞の場合、分類アプリケーション１０２は、発話を要求として分類する。表１０は、これらのルールを用いて識別される発話の例を示す。
【００７６】
【表１０】
2020537223.tif 000012
【００７７】
先頭の命令形動詞の一致が見つからなかった場合、処理５００は、さらに評価を行うために、ブロック５０１、または５０３〜５０５のうちの１つ以上に進み得る。
【００７８】
ブロック５０３において、処理５００は、解析木に１つ以上の言語テンプレートを適用することと、言語テンプレート照合を判断することとを含む。言語テンプレートは、１つ以上の品詞（たとえば、動詞）を含み得る。より具体的には、照合部１３２は、１つ以上の品詞が解析木に存在すると判断することによって照合を判断する。テンプレートの例は、名詞（ＰＲ＋ＮＮで表わされる）の前の代名詞の存在である。このテンプレートの一致は、要求を示し得る。たとえば、代名詞が「ｍｙ」であって、名詞が「ｂａｌａｎｃｅ」である「ｇｉｖｅ  ｍｅ  ｍｙ  ｂａｌａｎｃｅ」または「ｇｅｔ  ｍｅ  ｍｙ  ｂａｌａｎｃｅ」が挙げられる。逆に、照合部１３２は、「ｔｅｌｌ  ｍｅ  ｈｏｗ  ｔｏ  ｃｈｅｃｋ  ａｎ  ａｃｃｏｕｎｔ  ｂａｌａｎｃｅ（口座残高の確認方法を教えてください）」という発話を、代名詞が存在しないため、トランザクションとして分類しない。
【００７９】
ブロック５０４において、処理５００は、１つ以上の定義済みの質問キーワードを確認することを含む。質問キーワードとして、質問を意図した接頭辞３１１、および内的動詞３１２などが挙げられる。これらのキーワードのうちの１つ以上が存在することは、発話が質問であることを示す。表１１は、１つ以上の質問キーワードが分類アプリケーション１０２によって識別される文の例を示す。
【００８０】
【表１１】
2020537223.tif 000013
【００８１】
場合によっては、分類アプリケーション１０２は、その他の分類のルールが適用されない場合、発話を特定の分類にデフォルト設定し得る。たとえば、発話「ｄｏｍｅｓｔｉｃ  ｗｉｒｅ  ｔｒａｎｓｆｅｒ」の中に要求が識別されなかった場合、分類アプリケーション１０２は、発話を質問としてみなす。表１２は、さらなるケースを識別している。
【００８２】
【表１２】
2020537223.tif 000014
【００８３】
ブロック５０３において、処理５００は、発話を質問または要求として識別できないことを含む。発話を質問または要求として正常に識別するルールがない場合、自律エージェント１０１は、さらに明確にするようユーザに要求し得る。
【００８４】
図４に戻ると、処理４００は、分類を出力することを含む。自律エージェントは、分類を受信して、それに従って操作を行うことができる。識別された分類に基づいて、自律エージェント１０１は、ユーザデバイス１７０とのさらなるやり取り、もしくは外部装置１８０の再構成、起動、または停止など、何らかの操作を実行し得る。
【００８５】
上述したように、特定の態様は、機械学習を利用してテキストを分類することができる。例示的分類モデルは、分類モデル１５０である。分類モデル１５０は、分類器、ツリーカーネル、またはサポートベクターマシン、またはＳＶＭ  ＴＫなどの異なるモデルを利用することができる。訓練データは、様々なソースから取得され得る。訓練データは、アプリケーション固有であり得る。たとえば、特定の態様を利用する金融機関は、分類アプリケーション１０２が適切なコンテンツを用いて訓練されるよう、許容できる銀行取引（たとえば、残高確認、資金の移動）の一覧を提供したいと望むであろう。
【００８６】
図６は、一態様に係る、索引付け用の情報テキストを判断するように分類モデルを訓練するための処理例のフローチャートを示す。処理６００においてさらに後述するが、分類モデル１５０は、質問と要求とを区別するように訓練され得る。訓練データ１６０は、要求として識別されたテキストを有する訓練セットおよび質問として識別されたテキストを有する第２の訓練セットなど、２つの訓練セットを含み得る。訓練データ１６０は、テキストおよび／または関連する解析木を含み得る。
【００８７】
ブロック６０１において、処理６００は、訓練ペアのセットを含む訓練データのセットにアクセスすることを含む。各訓練データペアは、テキストおよび予想分類（たとえば、質問または要求）を含む。訓練データのセットは、質問を含む第１の訓練データペアと、要求を含む第２の訓練データペアとの両方を含み得る。
【００８８】
ブロック６０２において、処理６００は、訓練データペアのうちの１つを分類モデルに提供することを含む。したがって、この分類モデルは、テキスト本文と、予想分類とを受け付ける。
【００８９】
ブロック６０３において、処理６００は、分類モデルから判断された分類を受け付けることを含む。
【００９０】
ブロック６０４において、処理６００は、判断された分類と予想分類との差を算出することによって損失関数を算出することを含む。平均二乗誤差、尤度損失、対数（または、交差エントロピー）損失など、異なる損失関数が可能である。
【００９１】
ブロック６０５において、処理６００は、分類モデルの内部パラメータを調整して損失関数を最小化することを含む。このように、分類モデルは、訓練を反復するごとに予測の精度を向上させることを学習する。
【００９２】
ブロック６０６において、処理６００は、訓練済み分類モデルを利用することを含む。たとえば、訓練済み分類モデルは、様々な分類ルールと連動して、または様々な分類ルールの代わりに処理４００または５００において使用され得る。
【００９３】
たとえば、訓練済み分類モデル１５０を使用するために、分類アプリケーション１０２は、テキストの発話にアクセスし、発話の解析木を生成することができる。分類アプリケーション１０２は、分類モデル１５０を解析木に適用することによって発話の分類を判断する。
【００９４】
今度は、分類アプリケーション１０２がいくつかの方法のうちの１つを用いて分類を判断する。たとえば、分類モデル１５０は、発話と質問として識別された訓練クラスとの第１の一致を示す第１の類似度スコアと、発話と要求として識別された訓練クラスとの第２の一致を示す第２の類似度スコアとを決定する。
【００９５】
分類モデル１５０は、第１の類似度スコアおよび第２の類似度スコアに基づいて、分類を出力する。たとえば、第１の類似度スコアが第２の類似度スコアよりも高い場合、分類モデル１５０は、「質問」という分類を出力する。第２の類似度スコアが第１の類似度スコアよりも高い場合、分類モデル１５０は、「要求」という分類を出力する。場合によっては、たとえば、エラーが発生すると、分類モデル１５０は、「不明」という分類を出力し得る。
【００９６】
分類基準のカスタマイズ
自律エージェントの開発者またはベンダーは、両方のクラスのサンプルを含んだ訓練セットを提供することによって、デフォルトの訓練セットまたはルール（すなわち、質問とトランザクション要求との関係）を上書きしてもよい。分類モデル１５０の再訓練は、使用前またはランタイムに生じ得る。たとえば、新たな発話を受け付けると、分類アプリケーション１０２は、下記の処理を実行できる。
【００９７】
（１）現在の発話のインスタントインデックスを作成する。
（２）両方のクラスからのすべてのサンプルを反復処理し、クエリを作成してインスタントインデックスに対する検索を発行する。
【００９８】
（３）空以外の検索結果を出力したクエリのセットをそのクラスとともに収集し、このセットをクラスごとに集成する。
【００９９】
（４）集成結果によって特定のクラスが高く表されており、他方のクラスが有意に低く表されていると検証した後、高く表されているクラスを認識結果として選択する。
【０１００】
ＬｕｃｅｎｅのデフォルトＴＦ−ＩＤＦモデルによって、訓練セットの要素が必ず最上位のキーワードとして最も近くなる（頻度面からの（Ｔａｎ  ２００５年、ＳａｌｔｏｎおよびＹａｎｇ  １９７３年））。（Ｔｒｓｔｅｎｊａｋら、３０１４）は、テキスト分類にＴＦ−ＩＤＦ法を用いた最近傍（ＫＮＮ）アルゴリズムを利用する可能性を提示する。この方法によって、様々なパラメータ、測定および結果の分析に応じた分類が可能になる。フレームワークの評価では、分類の速度および質に注目しており、テスト結果は、ＴＦ−ＩＤＦ−ＫＮＮアルゴリズムのプラスとマイナスの特性を示していた。オンライン環境のいくつかのカテゴリの文書が評価され、安定した信頼性の高いパフォーマンスを示していた。テストは、分類の質に光を当てており、いずれの因子が分類パフォーマンスに影響を与えるかを判断していた。
【０１０１】
ソフトウェアコード例
分類アプリケーション１０２の機能を実装するコード例を以下に示す。
【０１０２】
// 意味のない発話、または認識できなかった場合、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;
}
【０１０３】
図７は、態様のうちの１つを実施するための分散システム７００の簡略図である。図示する態様では、分散システム７００は、１つ以上のクライアントコンピューティングデバイス７０２、７０４、７０６、および７０８を含む。クライアントコンピューティングデバイス７０２、７０４、７０６、および７０８は、ウェブブラウザ、プロプライエタリクライアント（たとえば、Ｏｒａｃｌｅ  Ｆｏｒｍｓ）など、クライアントアプリケーションを１つ以上のネットワーク（複数可）７１０で実行および操作するように構成される。サーバ７１２は、ネットワーク７１０を介して、リモートクライアントコンピューティングデバイス７０２、７０４、７０６、および７０８と通信可能に接続されてもよい。
【０１０４】
様々な態様では、サーバ７１２は、システムの構成要素のうちの１つ以上によって提供される１つ以上のサービスまたはソフトウェアアプリケーションを実行するようになされてもよい。サービスまたはソフトウェアアプリケーションは、非仮想環境および仮想環境を含み得る。仮想環境は、２次元表現であれ３次元（３Ｄ）表現であれ、仮想イベント、見本市、シミュレータ、教室、品物の売買、および企業のための仮想環境、ページベースの論理的環境、または上記以外のその他のものを含み得る。いくつかの態様では、これらのサービスは、クライアントコンピューティングデバイス７０２、７０４、７０６、および／または７０８のユーザに対して、ウェブベースのサービスもしくはクラウドサービスとして提供されてもよく、または、ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）モデル下で提供されてもよい。クライアントコンピューティングデバイス７０２、７０４、７０６、および／または７０８を操作するユーザは、１つ以上のクライアントアプリケーションを利用してサーバ７１２とやり取りして、これらの構成要素が提供するサービスを利用できる。
【０１０５】
図に示す構成では、分散システム７００のソフトウェアコンポーネント７１８、７２０、および７２２がサーバ７１２上に実装されたものとして示される。その他の態様では、分散システム７００の構成要素のうちの１つ以上および／またはこれらの構成要素が提供するサービスのうちの１つ以上は、クライアントコンピューティングデバイス７０２、７０４、７０６、および／または７０８のうちの１つ以上によって実現されてもよい。次に、クライアントコンピューティングデバイスを操作しているユーザは、１つ以上のクライアントアプリケーションを利用して、これらの構成要素が提供するサービスを使用してもよい。これらの構成要素は、ハードウェア、ファームウェア、ソフトウェア、またはそれらの組合せで実現されてもよい。様々な異なるシステム構成が可能であり、これらは、分散システム７００とは異なってもよいことを理解されたい。よって、図に示す態様は、例示的なシステムを実現するための分散システムの一例であって、限定を意図したものではない。
【０１０６】
クライアントコンピューティングデバイス７０２、７０４、７０６、および／または７０８は、は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）などのソフトウェアおよび／またはｉＯＳ、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ、ＢｌａｃｋＢｅｒｒｙ  １０、Ｐａｌｍ  ＯＳなどのいろいろなモバイルオペレーティングシステムを実行し、かつ、インターネット、電子メール、ＳＭＳ（Ｓｈｏｒｔ  Ｍｅｓｓａｇｅ  Ｓｅｒｖｉｃｅ）、Ｂｌａｃｋｂｅｒｒｙ（登録商標）、または他の通信プロトコルに対応する手のひらサイズのポータブルデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）、携帯電話、ｉＰａｄ（登録商標）、コンピューティングタブレット、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ））またはウェアラブルデバイス（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）であってもよい。クライアントコンピューティングデバイスは、例として、様々なバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、および／またはＬｉｎｕｘ（登録商標）オペレーティングシステムを実行するパーソナルコンピュータおよび／またはラップトップコンピュータを含む、汎用パーソナルコンピュータであり得る。クライアントコンピューティングデバイスは、たとえば、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ  ＯＳなどいろいろなＧＮＵ／Ｌｉｎｕｘオペレーティングシステムを含む各種市販のＵＮＩＸ（登録商標）またはＵＮＩＸに似たオペレーティングシステムを実行するワークステーションコンピュータであり得るが、これに限定されない。これに代えて、またはこれに加えて、クライアントコンピューティングデバイス７０２、７０４、７０６、および７０８は、シン・クライアントコンピュータ、インターネット対応のゲーミングシステム（たとえば、Ｋｉｎｅｃｔ（登録商標）ジェスチャ入力装置付きまたは無しのＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘのゲーミングコンソール）、および／またはパーソナルメッセージングデバイスなど、ネットワーク（複数可）７１０で通信可能なその他の電子機器であってもよい。
【０１０７】
例示的な分散システム７００は、４台のクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサ付きデバイスなど、他のデバイスがサーバ７１２とやり取りを行ってもよい。
【０１０８】
分散システム７００におけるネットワーク（複数可）７１０は、ＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）、ＳＮＡ（Ｓｙｓｔｅｍｓ  Ｎｅｔｗｏｒｋ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＩＰＸ（Ｉｎｔｅｒｎｅｔ  Ｐａｃｋｅｔ  Ｅｘｃｈａｎｇｅ）、ＡｐｐｌｅＴａｌｋなどを含む、各種市販のプロトコルを使用したデータ通信をサポートできる、当業者にとってなじみのある任意の種類のネットワークであってもよいが、これに限定されない。単に一例として、ネットワーク（複数可）１１１０は、Ｅｔｈｅｒｎｅｔ（登録商標）および／またはトークンリングなどに基づいたＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）などのＬＡＮであり得る。ネットワーク（複数可）７１０は、ワイドエリアネットワークおよびインターネットであり得る。ネットワーク（複数可）７１０は、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）、イントラネット、エクストラネット、ＰＳＴＮ（Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ）、赤外線ネットワーク、ワイヤレスネットワーク（たとえば、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ）８０２．７スイートのプロトコル、Ｂｌｕｅｔｏｏｔｈ（登録商標）、および／またはその他のワイヤレスプロトコルのうちのいずれかの下で動作するネットワーク）、および／もしくはこれらの任意の組合せを含む仮想ネットワーク、ならびに／または他のネットワークを含み得るが、これに限定されない。
【０１０９】
サーバ７１２は、１つ以上の汎用コンピュータ、専用サーバコンピュータ（一例として、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジ・サーバ、メインフレーム・コンピュータ、ラックマウント式サーバなどを含む）、サーバファーム、サーバ・クラスタ、またはその他の適切な配置および／もしくは組合せから構成されてもよい。サーバ７１２は、仮想オペレーティングシステムを実行している１つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。論理記憶装置の１つ以上のフレキシブルプールを仮想化して、サーバ用の仮想記憶装置を維持することができる。仮想ネットワークは、ＳＤＮ（Ｓｏｆｔｗａｒｅ−Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋｉｎｇ）を用いて、サーバ７１２によって制御され得る。様々な態様では、サーバ７１２は、上記の開示において説明した１つ以上のサービスまたはソフトウェアアプリケーションを実行するようになされてもよい。たとえば、サーバ７１２は、本開示の態様に従って上述した処理を行うためのサーバに対応してもよい。
【０１１０】
サーバ７１２は、上述のオペレーティングシステムのいずれか、および任意の市販のサーバオペレーティングシステムを実行してもよい。また、サーバ７１２は、ＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）サーバ、ＦＴＰ（Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）サーバ、ＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含む、各種の追加のサーバアプリケーションおよび／またはミッドティア・アプリケーションを実行してもよい。例示的なデータベースサーバとして、Ｏｒａｃｌｅ、Ｍｉｃｒｏｓｏｆｔ、Ｓｙｂａｓｅ、ＩＢＭ（Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｂｕｓｉｎｅｓｓ  Ｍａｃｈｉｎｅｓ）などが販売するデータベースサーバが挙げられるが、これに限定されない。
【０１１１】
いくつかの実装形態において、サーバ７１２は、クライアントコンピューティングデバイス８０２、８０４、８０６、および８０８のユーザから受信したデータフィードおよび／またはイベント更新を分析するおよび１つにまとめるための１つ以上のアプリケーションを含んでもよい。例として、データフィードおよび／またはイベント更新は、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）更新、または１つ以上のサードパーティ情報ソースおよび連続したデータストリームから受信されるリアルタイム更新を含んでもよいが、これに限定されない。データフィードおよび／またはイベント更新は、センサーデータアプリケーション、チッカー（ｆｉｎａｎｃｉａｌ  ｔｉｃｋｅｒ）、ネットワークパフォーマンス測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通量監視などに関するリアルタイムイベントを含み得る。また、サーバ７１２は、クライアントコンピューティングデバイス７０２、７０４、７０６、および７０８の１つ以上の表示装置を介してデータフィードおよび／またはリアルタイムイベントを表示するための１つ以上のアプリケーションを含んでもよい。
【０１１２】
また、分散システム７００は、１つ以上のデータベース７１４および７１６を含んでもよい。データベース７１４および７１６は、いろいろな場所に存在してもよい。一例として、データベース７１４および７１６のうちの１つ以上は、サーバ７１２にローカルな（および／または存在する）非一時的な記憶媒体上に存在してもよい。これに代えて、データベース７１４および７１６は、サーバ７１２から遠隔の場所に存在し、ネットワークベースまたは専用の接続を通してサーバ７１２と通信していてもよい。一組の態様では、データベース７１４および７１６は、ＳＡＮ（Ｓｔｏｒａｇｅ−Ａｒｅａ  Ｎｅｔｗｏｒｋ）に存在してもよい。同様に、サーバ７１２に起因する機能を実行するための必要なファイルは、いずれも、サーバ７１２上のローカルな場所および／またはサーバ１２から遠隔の場所に、適宜、格納されてもよい。一組の態様では、データベース７１４および７１６は、ＳＱＬフォーマットのコマンドに応答してデータ格納、更新、および取り出すようになされたＯｒａｃｌｅが提供するデータベースなど、リレーショナルデータベースを含んでもよい。
【０１１３】
図８は、本開示の一態様に係る、一態様のシステムの１つ以上の構成要素が提供するサービスがクラウドサービスとして提供され得るシステム環境８００の１つ以上の構成要素の簡略ブロック図である。図示した態様では、システム環境８００は、１つ以上のクライアントコンピューティングデバイス８０４、８０６、および８０８を含む。１つ以上のクライアントコンピューティングデバイス８０４、８０６、および８０８は、ユーザによって、クラウドサービスを提供するクラウドインフラストラクチャシステム８０２とやり取りするために使用されもよい。クライアントコンピューティングデバイスは、ウェブブラウザ、プロプライエタリ・クライアントアプリケーション（たとえば、Ｏｒａｃｌｅ  Ｆｏｒｍｓ）、または他のアプリケーションなど、クライアントアプリケーションを操作するように構成されてもよい。クライアントアプリケーションは、クライアントコンピューティングデバイスのユーザによって、クラウドインフラストラクチャシステム８０２とやり取りを行ってクラウドインフラストラクチャシステム８０２が提供するサービスを利用するために使用され得る。
【０１１４】
図に示したクラウドインフラストラクチャシステム８０２が、図示された構成要素以外の構成要素を有し得ることを理解されたい。さらに、図に示す態様は、本発明の態様を組み込み得るクラウドインフラストラクチャシステムの一例に過ぎない。その他のいくつかの態様では、クラウドインフラストラクチャシステム８０２は、図に示す構成要素よりも多いまたは少ない数の構成要素を有してもよく、２つ以上の構成要素を組み合わせてもよく、または構成要素の構成もしくは配置が異なっていてもよい。
【０１１５】
クライアントコンピューティングデバイス８０４、８０６、および８０８は、２８０２、２８０４、２８０６、および２８０８に関して上述したクライアントコンピューティングデバイスと同様のデバイスであってもよい。
【０１１６】
例示的なシステム環境８００は、３つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスがサポートされてもよい。センサ付きデバイスなど、他のデバイスがクラウドインフラストラクチャシステム８０２とやり取りを行ってもよい。
【０１１７】
ネットワーク（複数可）８１０は、クライアント８０４、８０６、および８０８とクラウドインフラストラクチャシステム８０２との間の通信およびデータのやり取りを容易にしてもよい。各ネットワークは、ネットワーク（複数可）８１０に関して上述したプロトコルを含む各種市販のプロトコルのいずれかを用いたデータ通信をサポートできる、当業者にとってなじみのある任意の種類のネットワークであってもよい。
【０１１８】
クラウドインフラストラクチャシステム８０２は、サーバ８１２に関して上述したコンピュータおよびサーバを含み得る１台以上のコンピュータおよび／またはサーバから構成されてもよい。
【０１１９】
特定の態様では、クラウドインフラストラクチャシステムが提供するサービスは、オンラインのデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされたオフィススイートドキュメント連携サービス、データベース処理、管理されたテクニカルサポートサービスなど、クラウドインフラストラクチャシステムのユーザが要求すれば利用可能になるサービスのホストを含んでもよい。クラウドインフラストラクチャシステムが提供するサービスは、動的にスケール変更してそのユーザのニーズを満たすことができる。クラウドインフラストラクチャシステムが提供するサービスを具体的にインスタンス化したものは、本明細書において、「サービスインスタンス」と称される。一般に、インターネットなどの通信ネットワークを介してユーザが利用できるようになる、クラウドサービスプロバイダのシステムからのいずれのサービスも、「クラウドサービス」と称される。通常、パブリッククラウド環境において、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客所有のオンプレミス・サーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムは、アプリケーションをホストしてもよく、ユーザは、インターネットなどの通信ネットワークを介して、要求に基づいてアプリケーションを注文および使用すればよい。
【０１２０】
いくつかの例において、コンピュータネットワークのクラウドインフラストラクチャにおけるサービスは、ストレージ、ホストされたデータベース、ホストされたウェブサーバ、ソフトウェアアプリケーションへの保護されたコンピュータネットワークアクセス、もしくはクラウドベンダーがユーザに提供するその他のサービス、または、当技術分野で周知の上記以外のその他のサービスを含んでもよい。たとえば、サービスは、インターネットを通した、クラウド上のリモートストレージへのパスワード保護されたアクセスを含み得る。別の例として、サービスは、ネットワークで結ばれた開発者が私的使用するための、ウェブサービスベースのホストされたリレーショナルデータベースおよびスクリプト言語のミドルウェアエンジンを含み得る。別の例として、サービスは、クラウドベンダーのウェブサイト上にホストされた電子メールソフトウェア・アプリケーションへのアクセスを含み得る。
【０１２１】
特定の態様では、クラウドインフラストラクチャシステム８０２は、顧客にセルフサービスでサブスクリプション方式で伸縮自在にスケーラブルで信頼性があり、かつ高い可用性を有するセキュアな方法で届けられるアプリケーション一式、ミドルウェア、およびデータベースサービス提供物を含んでもよい。このようなクラウドインフラストラクチャシステムの例が、本願の譲受人が提供するオラクルパブリッククラウド（Ｏｒａｃｌｅ  Ｐｕｂｌｉｃ  Ｃｌｏｕｄ）である。
【０１２２】
ビッグデータと呼ばれることもある大容量のデータは、インフラストラクチャシステムによって、多くのレベルかつ異なる規模でホストおよび／または操作され得る。このようなデータは、大規模かつ複雑過ぎるために通常のデータベース管理ツールまたは旧来のデータ処理アプリケーションを用いて処理することが難しいデータセットを含み得る。たとえば、パーソナルコンピュータまたはそれらのラック式パーソナルコンピュータを用いてテラバイトのデータを格納、取り出し、および処理することは、難しいだろう。最新のリレーショナルデータベース管理システムおよびデスクトップ統計データならびに可視化パッケージを用いてこのようなサイズのデータを扱うのは難しいだろう。許容可能な経過時間内でこのようなサイズのデータを取得、取りまとめ、管理、および処理するためには、よく用いられるソフトウェアツールの構造では対応できない何千ものサーバコンピュータを実行する大規模並列処理ソフトウェアを必要とし得る。
【０１２３】
大量のデータを可視化する、トレンドを検出する、および／または当該データを用いてやり取りするために、極めて大きなデータセットが格納されてアナリストおよび研究者によって操作され得る。このようなデータを提示する、またはこのデータに対する外力または当該データが表すものをシミュレーションするために、並列にリンクされた何十、何百、または何千ものプロセッサがこのデータに作用し得る。これらのデータセットは、データベースに編成された構造化データもしくは構造化モデルに応じて編成された構造化データ、および／または非構造化データ（たとえば、Ｅメール、画像、データＢＬＯＢ（Ｂｉｎａｒｙ  Ｌａｒｇｅ  Ｏｂｊｅｃｔｓ）、ウェブページ、複雑なイベント処理）を伴い得る。比較的素早くより多くの（または、より少ない）コンピューティングリソースを目標に集中させる態様の能力を活用することによって、クラウドインフラストラクチャシステムは、事業、政府関係機関、研究機関、私人、同じ意見を持った個人同士のグループもしくは組織、または他のエンティティからの要求に基づいて大きなデータセットに対してタスクを実行するためにさらに利用できるようになってもよい。
【０１２４】
様々な態様では、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステム８０２が提供するサービスへの顧客のサブスクリプションを自動的にプロビジョニング、管理、および追跡するようになされてもよい。クラウドインフラストラクチャシステム８０２は、それぞれ異なるデプロイメントモデルを介してクラウドサービスを提供してもよい。たとえば、サービスは、クラウドサービス（たとえば、オラクルコーポレーション所有）を販売する組織がクラウドインフラストラクチャシステム８０２を所有してサービスが一般大衆またはそれぞれ異なる産業企業に利用可能になるパブリッククラウドモデル下で提供されてもよい。別の例として、サービスは、クラウドインフラストラクチャシステム８０２が１つの組織のためだけに動かされてクラウドインフラストラクチャシステム８０２が組織内の１つ以上のエンティティ用のサービスを提供し得るプライベートクラウドモデル下で提供されてもよい。また、クラウドサービスは、クラウドインフラストラクチャシステム８０２およびクラウドインフラストラクチャシステム８０２が提供するサービスが関連コミュニティ内のいくつかの組織によって共有されるコミュニティクラウドモデル下で提供されてもよい。クラウドサービスは、２つ以上の異なるモデルの組み合せであるハイブリッドクラウドモデル下で提供されてもよい。
【０１２５】
いくつかの態様では、クラウドインフラストラクチャシステム８０２が提供するサービスは、ＳａａＳ（Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）カテゴリ、ＰａａＳ（Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）カテゴリ、ＩａａＳ（Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ）カテゴリ下で提供される１つ以上のサービス、またはハイブリッドサービスを含むその他のカテゴリのサービスを含んでもよい。顧客は、クラウドインフラストラクチャシステム８０２が提供する１つ以上のサービスを、サブスクリプションの注文によって注文してもよい。次に、クラウドインフラストラクチャシステム８０２は、処理を実行して、顧客のサブスクリプションの注文にあるサービスを提供する。
【０１２６】
いくつかの態様では、クラウドインフラストラクチャシステム８０２が提供するサービスは、アプリケーションサービス、プラットフォームサービス、およびインフラストラクチャサービスを含んでもよいが、これに限定されない。いくつかの例において、アプリケーションサービスは、ＳａａＳサービスを介してクラウドインフラストラクチャシステムによって提供されてもよい。ＳａａＳプラットフォームは、ＳａａＳカテゴリに該当するクラウドサービスを提供するように構成されてもよい。たとえば、ＳａａＳプラットフォームは、オンデマンドアプリケーションのスイートを構築して統合開発／デプロイメントプラットフォームに届けるための機能を提供してもよい。ＳａａＳプラットフォームは、ＳａａＳサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御してもよい。ＳａａＳプラットフォームが提供するサービスを利用することによって、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用できる。顧客は、アプリケーションサービスを、ライセンスおよびサポートを別に購入する必要なしに、入手できる。様々な異なるＳａａＳサービスが提供されてもよい。例として、大きな組織のための販売実績管理、企業統合、および事業の柔軟性に対するソリューションを提供するサービスなどが挙げられるが、これに限定されない。
【０１２７】
いくつかの態様では、プラットフォームサービスは、ＰａａＳプラットフォームを介してクラウドインフラストラクチャシステムによって提供されてもよい。ＰａａＳプラットフォームは、ＰａａＳカテゴリに該当するクラウドサービスを提供するように構成されてもよい。プラットフォームサービスとして、存在するアプリケーションを組織（Ｏｒａｃｌｅなど）が共有の共通アーキテクチャ上に１つにまとめることを可能にするサービス、およびプラットフォームが提供する共有サービスを活用する新しいアプリケーションを作る能力などが挙げられるが、これに限定されない。ＰａａＳプラットフォームは、ＰａａＳサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理および制御してもよい。顧客は、ＰａａＳクラウドインフラストラクチャシステムが提供するサービスを、ライセンスおよびサポートを別に購入する必要なしに、入手できる。プラットフォームサービスとして、ＪＣＳ（Ｏｒａｃｌｅ  Ｊａｖａ  Ｃｌｏｕｄ  Ｓｅｒｖｉｃｅ）、ＤＢＣＳ（Ｏｒａｃｌｅ  データｂａｓｅ  Ｃｌｏｕｄ  Ｓｅｒｖｉｃｅ）、およびその他が挙げられるが、これに限定されない。
【０１２８】
ＰａａＳプラットフォームが提供するサービスを利用することによって、顧客は、クラウドインフラストラクチャシステムがサポートするプログラミング言語およびツールを採用することができ、また、デプロイされたサービスを管理することができる。いくつかの態様では、クラウドインフラストラクチャシステムが提供するプラットフォームサービスは、データベース・クラウドサービス、ミドルウェアクラウドサービス（たとえば、Ｏｒａｃｌｅ  Ｆｕｓｉｏｎ  Ｍｉｄｄｌｅｗａｒｅサービス）、およびＪａｖａクラウドサービスを含んでもよい。一態様では、データベース・クラウドサービスは、組織がデータベースリソースをプールすることと、データベース・クラウドの形でデータｂａｓｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅを顧客に提供することとを可能にする共有サービスデプロイメントモデルをサポートしてもよい。クラウドインフラストラクチャシステムにおいて、ミドルウェアクラウドサービスは、顧客が様々なビジネスアプリケーションを開発およびデプロイするためのプラットフォームを提供してもよく、Ｊａｖａクラウドサービスは、顧客がＪａｖａアプリケーションをデプロイするためのプラットフォームを提供してもよい。
【０１２９】
クラウドインフラストラクチャシステムでは、ＩａａＳプラットフォームによって様々な異なるインフラストラクチャサービスが提供されてもよい。インフラストラクチャサービスによって、ストレージ、ネットワークなど基礎となるコンピューティングリソース、および、ＳａａＳプラットフォームおよびＰａａＳプラットフォームが提供するサービスを利用している顧客のためのその他の基本的なコンピューティングリソースの管理および制御が容易になる。
【０１３０】
特定の態様では、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステムの顧客に様々なサービスを提供するために使用されるリソースを提供するためのインフラストラクチャ・リソース８３０を含んでもよい。一態様では、インフラストラクチャ・リソース８３０は、ＰａａＳプラットフォームおよびＳａａＳプラットフォームが提供するサービスを実行するための、サーバなどのハードウェアと、ストレージと、ネットワーキング・リソースとの予め統合された最適な組合せを含んでもよい。
【０１３１】
いくつかの態様では、クラウドインフラストラクチャシステム８０２におけるリソースは、複数のユーザによって共有され、要求に応じて動的に再割り当てされてもよい。これに加えて、リソースは、それぞれ異なるタイムゾーンのユーザに割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム８３０は、第１のタイムゾーンにいる第１セットのユーザがクラウドインフラストラクチャシステムのリソースを指定された時間利用することを可能にした後、異なるタイムゾーンに位置する別のセットのユーザに同じリソースを再割り当てすることを可能にし、リソースの利用を最大限に活用できるようになる。
【０１３２】
特定の態様では、クラウドインフラストラクチャシステム８０２のそれぞれ異なる構成要素またはモジュールによって、およびクラウドインフラストラクチャシステム８０２が提供するサービスによって共有されるいくつかの内部共有サービス８３２が提供されてもよい。これらの内部共有サービスは、セキュリティ／アイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャサービス、ウイルススキャン／ホワイトリストサービス、可用性の高いバックアップ・リカバリサービス、クラウドサポートを可能にするためのサービス、Ｅメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これに限定されない。
【０１３３】
特定の態様では、クラウドインフラストラクチャシステム８０２は、クラウドインフラストラクチャシステムにおけるクラウドサービス（たとえば、ＳａａＳサービス、ＰａａＳサービス、およびＩａａＳサービス）の包括的な管理を提供してもよい。一態様では、クラウド管理機能は、クラウドインフラストラクチャシステム８０２が受信した顧客のサブスクリプションなどをプロビジョニング、管理、および追跡するための機能を含んでもよい。
【０１３４】
一態様では、図に示すように、クラウド管理機能は、オーダー管理モジュール８２０、オーダーオーケストレーションモジュール８２２、オーダープロビジョニングモジュール８２４、オーダー管理／監視モジュール８２６、およびアイデンティティ管理モジュール８２８など、１つ以上のモジュールによって提供されてもよい。これらのモジュールは、１つ以上のコンピュータおよび／またはサーバを含んでもよく、または、これらを使用して提供されてもよい。１つ以上のコンピュータおよび／またはサーバは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバ・クラスタ、またはその他の適切な配置および／もしくは組合せであり得る。
【０１３５】
例示的な動作８３４において、クライアントデバイス８０４、８０６または８０８などのクライアントデバイスを使用している顧客は、クラウドインフラストラクチャシステム８０２が提供する１つ以上のサービスを要求し、クラウドインフラストラクチャシステム８０２が提供する１つ以上のサービスのサブスクリプションを注文することによって、クラウドインフラストラクチャシステム８０２とやり取りしてもよい。特定の態様では、顧客は、クラウドＵＩ（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）、クラウドＵＩ８８、クラウドＵＩ８１４および／またはクラウドＵＩ８１６にアクセスし、これらのＵＩを介してサブスクリプションの注文を行ってもよい。顧客が注文をすることに応答してクラウドインフラストラクチャシステム８０２が受信するオーダー情報は、この顧客を特定する情報、および、クラウドインフラストラクチャシステム８０２が提供する、顧客がサブスクリプションをする目的の１つ以上のサービスを含んでもよい。
【０１３６】
顧客によって注文がされた後、クラウドＵＩ、８８、８１４、および／または８１６を介してオーダー情報が受け付けられる。
【０１３７】
動作８３６、この注文は、オーダーデータベース８８に格納される。オーダーデータベース８８は、クラウドインフラストラクチャシステム８８によって操作され、かつ、他のシステム要素と共に操作されるいくつかのデータベースのうちの１つであり得る。
【０１３８】
動作８３８において、オーダー情報がオーダー管理モジュール８２０に転送される。場合によっては、オーダー管理モジュール８２０は、注文の確認、確認後の注文の登録など、注文に関する課金機能および会計機能を実行するように構成されてもよい。
【０１３９】
動作８４０において、注文に関する情報がオーダーオーケストレーションモジュール８２２に伝送される。オーダーオーケストレーションモジュール８２２は、このオーダー情報を利用して、顧客が行った注文に関するサービスおよびリソースのプロビジョニングをオーケストレーションしてもよい。場合によっては、オーダーオーケストレーションモジュール８２２は、リソースのプロビジョニングをオーケストレーションして、オーダープロビジョニングモジュール８２４のサービスを使用してサブスクリプションされているサービスをサポートしてもよい。
【０１４０】
特定の態様では、オーダーオーケストレーションモジュール８２２は、各注文に関連する業務の流れの管理を可能にし、ビジネスロジックを適用して、注文がプロビジョニングに進むべきかどうかを判断する。動作８４２において、新しいサブスクリプションの注文を受けると、オーダーオーケストレーションモジュール８２２は、サブスクリプションの注文を満たすために必要なリソースを割り当ててこれらのリソースを構成する要求をオーダープロビジョニングモジュール８２４に送信する。オーダープロビジョニングモジュール８２４は、顧客が申し込んだサービスのためのリソースの割り当てを有効にする。オーダープロビジョニングモジュール８２４は、クラウドインフラストラクチャシステム８００が提供するクラウドサービスと、要求されたサービスを提供するためのリソースをプロビジョニングするために使用される物理実施層との間に抽象度を設ける。よって、サービスおよびリソースがオンザフライで実際にプロビジョニングされたかどうか、または予めプロビジョニングされて要求された場合にのみ割り当てられたかどうかなどの実装の詳細からオーダーオーケストレーションモジュール８２２を切り離すことができる。
【０１４１】
動作８４４おいて、サービスおよびリソースがプロビジョニングされると、クラウドインフラストラクチャシステム８０２のオーダープロビジョニングモジュール８２４によって、クライアントデバイス８０４、８０６、および／または８０８上の顧客に、提供されたサービスについての通知が送信されてもよい。
【０１４２】
動作８４６において、オーダー管理／監視モジュール８２６よって顧客のサブスクリプションの注文が管理および追跡されてもよい。場合によっては、オーダー管理／監視モジュール８２６は、サブスクリプションの注文におけるサービスに関する使用統計データ、たとえば、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムの稼働時間およびシステムの休止時間などを収集するように構成されてもよい。
【０１４３】
特定の態様では、クラウドインフラストラクチャシステム８００は、アイデンティティ管理モジュール８２８を備えてもよい。アイデンティティ管理モジュール８２８は、クラウドインフラストラクチャシステム８００におけるアクセス管理およびアクセス認可サービスなどのアイデンティティサービスを提供するように構成されてもよい。いくつかの態様では、アイデンティティ管理モジュール８２８は、クラウドインフラストラクチャシステム８０２が提供するサービスを利用したい顧客についての情報を制御／管理してもよい。このような情報は、このような顧客のアイデンティティを認証する情報、および、様々なシステムリソース（たとえば、ファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど）に対してそれらの顧客がどのような操作を行うことが承認されているのかを記述する情報を含み得る。また、アイデンティティ管理モジュール８２８は、各顧客についての記述情報の管理、およびその記述情報が誰によってどのようにアクセスおよび変更され得るかについての管理を含んでもよい。
【０１４４】
図９は、本発明の様々な態様が実施され得るコンピュータシステム９００の例を示す図である。システム９００を使用して、上述したコンピュータシステムのいずれかを実現してもよい。図に示すように、コンピュータシステム９００は、バス・サブシステム９０２を介していくつかの周辺サブシステムと通信する処理装置９０４を備える。これらの周辺サブシステムは、処理高速化装置９０６と、Ｉ／Ｏサブシステム９０８と、ストレージサブシステム９１８と、通信サブシステム９２４とを含んでもよい。ストレージサブシステム９１８は、有形のコンピュータ読み取り可能な記憶媒体９２２と、システムメモリ９１０とを含む。
【０１４５】
バス・サブシステム９０２は、コンピュータシステム９００の様々な構成要素およびサブシステムを互いに意図した通りに通信させるためのメカニズムを提供する。バス・サブシステム９０２は、１つのバスとして図示されているが、バス・サブシステムの別の態様は、複数のバスを利用してもよい。バス・サブシステム９０２は、各種のバスアーキテクチャを使用するメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかの種類のバス構造のうちのいずれかであってもよい。たとえば、このようなアーキテクチャは、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスを含んでもよく、これらは、ＩＥＥＥ  Ｐ９８６．１標準規格に準拠して製造されるＭｅｚｚａｎｉｎｅバスとして実現され得る。
【０１４６】
１つ以上の集積回路（たとえば、従来のマイクロプロセッサまたはマイクロコントローラ）として実現され得る処理装置９０４は、コンピュータシステム９００の動作を制御する。処理装置９０４には、１つ以上のプロセッサが含まれてもよい。これらのプロセッサは、シングルコア・プロセッサまたはマルチコア・プロセッサを含んでもよい。特定の態様では、処理装置９０４は、シングルコア・プロセッサまたはマルチコア・プロセッサを各々が含んだ１つ以上の独立した処理装置９３２および／または９３４として実現されてもよい。また、その他の態様では、処理装置９０４は、２つのデュアルコアプロセッサを１つのチップに組み込むことによって形成されるクアッドコア処理装置として実現されてもよい。
【０１４７】
様々な態様では、処理装置９０４は、プログラムコードに応答していろいろなプログラムを実行でき、複数の同時に実行しているプログラムまたはプロセスを維持することができる。いつでも、実行されるプログラムコードの一部またはすべては、プロセッサ（複数可）９０４に、および／またはストレージサブシステム９１８に存在し得る。適したプログラミングによって、プロセッサ（複数可）９０４は、上述したさまざまな機能を提供できる。コンピュータシステム９００は、処理高速化装置９０６をさらに備えてもよい。処理高速化装置９０６は、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）および／または専用プロセッサなどを含み得る。
【０１４８】
Ｉ／Ｏサブシステム９０８は、ユーザインタフェース入力装置と、ユーザインタフェース出力装置とを含んでもよい。ユーザインタフェース入力装置は、キーボード、マウスもしくはトラックボールなどのポインティングデバイス、タッチパッドもしくはディスプレイに組み込まれたタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、ボイスコマンド認識システムを有する音声入力装置、マイクロホン、および他の種類の入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、ジェスチャコマンドおよび音声コマンドを用いた自然なユーザインタフェースによってユーザがＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラなどの入力装置を制御およびそれとやり取りすることを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサなどの動き検知デバイスおよび／またはジェスチャ認識デバイスを含んでもよい。また、ユーザインタフェース入力装置は、ユーザの目の行動（たとえば、写真を撮影しているおよび／またはメニュー選択を行っている間の「まばたき」）を検出し、目の仕草（ｅｙｅ  ｇｅｓｔｕｒｅ）を入力装置（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変形させるＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）まばたき検出装置などのアイジェスチャ認識デバイスを含んでもよい。これに加えて、ユーザインタフェース入力装置は、ユーザがボイスコマンドによって音声認識システム（たとえば、Ｓｉｒｉ（登録商標）ナビゲータ）とやり取りすることを可能にする音声認識検知デバイスを含んでもよい。
【０１４９】
また、ユーザインタフェース入力装置は、３次元（３Ｄ）マウス、ジョイスティックもしくはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびに、スピーカ、デジタルカメラ、デジタルカムコーダー、ポータブルメディアプレーヤ、ウェブカム、イメージスキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザー測距器、および視線追跡装置などのオーディオ／ビジュアル装置を含むが、これに限定されない。これに加えて、ユーザインタフェース入力装置は、たとえば、コンピュータ断層撮影法、磁気共鳴画像、陽電子放出断層撮影装置、超音波検査デバイスなど、医用画像入力装置を含んでもよい。また、ユーザインタフェース入力装置は、たとえば、ＭＩＤＩキーボード、デジタル楽器などのオーディオ入力装置を含んでもよい。
【０１５０】
ユーザインタフェース出力装置は、表示サブシステム、インジケーターライト、または音声出力装置などの非視覚的表示装置などを含んでもよい。表示サブシステムは、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使用するものなどのフラットパネル表示装置、投影装置、タッチスクリーンなどであってもよい。一般に、用語「出力装置」の使用は、コンピュータシステム９００からユーザまたは他のコンピュータに情報を出力するためのあらゆる種類のデバイスおよびメカニズムを含むことを意図する。たとえば、ユーザインタフェース出力装置は、モニタ、プリンタ、スピーカ、ヘッドホン、自動車ナビゲーションシステム、作図装置、音声出力装置、およびモデムなど、文字、図形、および音声／映像情報を視覚的に伝えるいろいろな表示装置を含み得るが、これに限定されない。
【０１５１】
コンピュータシステム１３００は、システムメモリ１３１０内に現在位置して図示されているソフトウェア要素を含むストレージサブシステム１３１８から構成されてもよい。システムメモリ１３１０は、処理装置１３０４上でロード可能かつ実行可能なプログラム命令、およびこれらのプログラムの実行中に生成されるデータを格納してもよい。
【０１５２】
コンピュータシステム９００の構成および種類によっては、システムメモリ９１０は、揮発性メモリであってもよく（ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など）、および／または不揮発性メモリ（ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリなど）であってもよい。ＲＡＭは、通常、処理装置９０４がすぐにアクセスできる、および／または現在操作および実行しているデータおよび／またはプログラムモジュールを含む。いくつかの実装形態において、システムメモリ９１０は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など、複数の異なる種類のメモリを含んでもよい。いくつかの実装形態において、起動中などで、コンピュータシステム９００内の要素間で情報を転送することを助ける基本ルーチンを含むＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）は、通常、ＲＯＭに格納されてもよい。また、一例として、システムメモリ９１０は、クライアントアプリケーション、ウェブブラウザ、ミッドティア・アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ：Ｒｅｌａｔｉｏｎａｌ  データｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍｓ）などを含み得るアプリケーションプログラム９１２と、プログラムデータ９１４と、オペレーティングシステム９１６とを含む。一例として、オペレーティングシステム９１６は、さまざまなバージョンのＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、および／もしくはＬｉｎｕｘオペレーティングシステム、いろいろな市販のＵＮＩＸ（登録商標）もしくはＵＮＩＸに似たオペレーティングシステム（いろいろなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むが、これに限定されない）、ならびに／またはｉＯＳ、Ｗｉｎｄｏｗｓ（登録商標）Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）１０ＯＳ、およびＰａｌｍ（登録商標）ＯＳオペレーティングシステムなど、モバイルオペレーティングシステムを含んでもよい。
【０１５３】
また、ストレージサブシステム９１８は、いくつかの態様の機能を提供する基本プログラミング構成およびデータ構成を格納するための有形のコンピュータ読み取り可能な記憶媒体を提供してもよい。プロセッサによって実行されると上述の機能を提供するソフトウェア（プログラム、コードモジュール、命令）がストレージサブシステム９１８に格納されてもよい。これらのソフトウェアモジュールまたは命令は、処理装置９０４によって実行されてもよい。また、ストレージサブシステム９１８は、本発明に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【０１５４】
また、ストレージサブシステム９００は、コンピュータ読み取り可能な記憶媒体９２２にさらに接続され得るコンピュータ読み取り可能な記憶媒体リーダ９２０を含んでもよい。システムメモリ９１０と合わせて、必要に応じてシステムメモリ９１０と組み合わせて、コンピュータ読み取り可能な記憶媒体９２２は、遠隔の記憶装置、ローカル記憶装置、固定記憶装置、および／またはリム―バブル記憶装置、ならびにコンピュータ読み取り可能な情報を一時的におよび／またはさらに永続して含み、格納し、送信し、および取り出すための記憶媒体を包括的に表してもよい。
【０１５５】
コードまたはコードの一部を含んだコンピュータ読み取り可能な記憶媒体９２２は、情報の格納および／または伝送のための任意の方法および技術で実現される揮発性媒体および不揮発性媒体、取り外し可能な媒体および固定型媒体などの記憶媒体および通信媒体を含む、当技術分野において既知または使用される任意の適切な媒体も含んでもよいが、これに限定されない。これは、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、もしくは他のメモリ・テクノロジー、ＣＤ−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶装置などの有形の非一時的なコンピュータ読み取り可能な記憶媒体、またはその他の有形のコンピュータ読み取り可能な媒体を含み得る。特に指定する場合、これは、データ信号、データ伝送など無形の一時的なコンピュータ読み取り可能な媒体、または所望の情報を伝送するために使用され得るその他の媒体、およびコンピューティングシステム９００によってアクセスされ得るその他の媒体なども含み得る。
【０１５６】
一例として、コンピュータ読み取り可能な記憶媒体９２２は、固定型不揮発性磁気媒体から読み出しまたは書き込みを行うハードディスクドライブ、取外し可能な不揮発性磁気ディスクから読み出しまたは書き込みを行う磁気ディスクドライブ、ならびに、ＣＤ  ＲＯＭ、ＤＶＤ、およびＢｌｕ−Ｒａｙ（登録商標）ディスクなどの取外し可能な不揮発性光ディスクもしくは他の光学媒体から読み出しまたは書き込みを行う光ディスクドライブを含んでもよい。コンピュータ読み取り可能な記憶媒体９２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリーカード、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュドライブ、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）カード、ＤＶＤディスク、デジタルビデオテープなどを含み得るが、これに限定されない。また、コンピュータ読み取り可能な記憶媒体９２２は、フラッシュメモリベースのＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅｓ）、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなど、不揮発性メモリに基づくＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅｓ）と、ソリッドステートＲＡＭ、動的ＲＡＭ、静的ＲＡＭ、ＤＲＡＭベースのＳＳＤなど、揮発性メモリに基づくＳＳＤと、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  ＲＡＭ）ＳＳＤと、ＤＲＡＭとフラッシュメモリとの組合せベースのＳＳＤを使用するハイブリッドＳＳＤとを含んでもよい。これらのディスクドライブおよびそれらの関連するコンピュータ読み取り可能な媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、およびその他のコンピュータシステム９００用データの不揮発性ストレージを提供してもよい。
【０１５７】
通信サブシステム９２４は、他のコンピュータシステムおよびネットワークへのインタフェースを提供する。通信サブシステム９２４は、コンピュータシステム９００からデータを受信し、コンピュータシステム９００から他のシステムにデータを送信するためのインタフェースとして機能する。たとえば、通信サブシステム９２４は、コンピュータシステム９００がインターネットを介して１つ以上のデバイスに接続することを可能にしてもよい。いくつかの態様では、通信サブシステム９２４は、（たとえば、携帯電話技術、３Ｇ、４Ｇ、もしくはＥＤＧＥ（Ｅｎｈａｎｃｅｄ  Ｄａｔａ  Ｒａｔｅｓ  Ｆｏｒ  Ｇｌｏｂａｌ  Ｅｖｏｌｕｔｉｏｎ）などの次世代データネットワークテクノロジー、ＷｉＦｉ（ＩＥＥＥ８０２．２８ファミリー標準規格）、他の移動体通信技術、またはそれらの任意の組合せを使用する）ワイヤレス音声ネットワークもしくは／またはデータネットワークにアクセスするためのＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）トランシーバコンポーネント、ＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）レシーバコンポーネント、および／または他の構成要素を含み得る。いくつかの態様では、通信サブシステム９２４は、ワイヤレスインタフェースに加えて、またはワイヤレスインタフェースの代わりに、有線ネットワーク接続性（たとえば、Ｅｔｈｅｒｎｅｔ）を提供できる。
【０１５８】
いくつかの態様では、通信サブシステム９２４は、コンピュータシステム９００を利用し得る１人以上のユーザに代わって、構造化データフィードおよび／または非構造化データフィード９２６、イベントストリーム９２８、イベント更新９９などの形で入力通信文を受信してもよい。
【０１５９】
一例として、通信サブシステム９２４は、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）の更新、ＲＳＳ（Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ）フィードなどのｗｅｂフィード、および／もしくは１つ以上のサードパーティ情報ソースからのリアルタイム更新など、ソーシャルメディアネットワークならびに／または他のコミュニケーションサービスのユーザから非構造化データフィード９２６をリアルタイムで受信するように構成されてもよい。
【０１６０】
また、これに加えて、通信サブシステム９２４は、連続したデータストリームの形でデータを受信するように構成されてもよく、連続したデータストリームは、本質的にはっきりとした終端がない、連続または無限の、リアルタイムイベントおよび／またはイベント更新９９のイベントストリーム９２８を含んでもよい。連続データを生成するアプリケーションとして、たとえば、センサーデータアプリケーション、チッカー、ネットワークパフォーマンス測定ツール（たとえば、ネットワーク監視およびトラフィック管理アプリケーション）、クリックストリーム分析ツール、自動車交通量監視などが挙げられてもよい。
【０１６１】
また、通信サブシステム９２４は、コンピュータシステム９００に接続された１つ以上のストリーミングデータソースコンピュータと通信中であり得る１つ以上のデータベースに、構造化データフィードおよび／または非構造化データフィード９２６、イベントストリーム９２８、イベント更新９９などを出力するように構成されてもよい。
【０１６２】
コンピュータシステム９００は、手のひらサイズのポータブルデバイス（たとえば、ｉＰｈｏｎｅ（登録商標）携帯電話、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（たとえば、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）、ＰＣ、ワークステーション、メインフレーム、キオスク、サーバーラック、またはその他のデータ処理システムを含む、様々な種類のうちの１つであり得る。
【０１６３】
変わり続けるというコンピュータおよびネットワークの性質のため、図に示すコンピュータシステム９００の説明は、具体例にすぎない。図に示すシステムよりも多いまたは少ない構成要素を有する多くの他の構成が可能である。たとえば、カスタマイズされたハードウェアが使用されてもよく、および／または、ハードウェア、ファームウェア、ソフトウェア（アプレットを含む）、またはそれらの組合せで特定の要素が実現されてもよい。さらに、ネットワーク入／出力装置など、他のコンピューティングデバイスへの接続を採用してもよい。本明細書に記載の開示および教示に基づいて、当業者は、さまざまな態様を実現するための他のやり方および／または方法が分かるだろう。
【０１６４】
上記の明細書において、本発明の態様をその具体例を参照しながら説明したが、当業者は本発明がこれに限定されないことが分かるだろう。上述した発明のさまざまな特徴および態様は、個々に、または共同で用いられてもよい。さらに、態様は、本明細書のより広義の趣旨および範囲から逸脱することなく、本明細書において記載した環境およびアプリケーションの数を上回る任意の数の環境およびアプリケーションにおいて利用され得る。明細書および添付の図面は、したがって、限定ではなく例示とみなされる。
【図１】
2020537223.tif 000015
【図２】
2020537223.tif 000016
【図３】
2020537223.tif 000017
【図４】
2020537223.tif 000018
【図５】
2020537223.tif 000019
【図６】
2020537223.tif 000020
【図７】
2020537223.tif 000021
【図８】
2020537223.tif 000022
【図９】
2020537223.tif 000023
【国際調査報告】
2020537223.tif 000024
2020537223.tif 000025
2020537223.tif 000026