詳細な説明
本開示は、概して、カスタマイズされたナレッジグラフを構築することに関し、より具体的には、ドメイン内の限られた知識(たとえば小さなユーザデータセット)と、大規模の参照(たとえば外部)ナレッジグラフとに基づいて、特定の知識ドメインのためにカスタマイズされたナレッジグラフを構成するための技術に関する。カスタマイズされたナレッジグラフは、たとえば、ナレッジグラフ埋め込み技術に基づいてチャットボットにおける意図分類を改善するために使用することができる。本明細書には、発明のさまざまな実施形態が記載されており、これらは、方法、システム、1つ以上のプロセッサが実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ読取可能記憶媒体等を含む。
異なるユーザのための会話インターフェイス(たとえばチャットボット)等の特定のアプリケーションまたは環境で使用される自然言語理解(NLU)サービスは、大きく包括的なナレッジグラフではなく特定のドメイン内のカスタマイズされたナレッジグラフを使用する方が、より効果的に機能し得るものである。たとえば、カスタマイズされたナレッジグラフではノイズが少ない場合があり、したがって、大きな汎用ナレッジグラフではなく小さなカスタマイズされたナレッジグラフを使用する方が、より効率的でより正確な場合がある。しかしながら、特定のドメイン内で入手できる知識は限られている場合があり、したがって、限られた知識に基づいて生成された、カスタマイズされたナレッジグラフは、疎である可能性がある。
実施形態に従うと、エンティティは、カスタムアプリケーション(たとえばチャットボット)のための小さなユーザデータセット(たとえばユーザの発話、意図、エンティティ、および質問と回答を含む)から、特定のルールに基づいて抽出することができる。抽出したエンティティとエンティティ間の接続または関係とに基づいて、シードグラフを生成することができる。次に、WikiData(登録商標)等の大規模の参照ナレッジグラフを、有限状態機械を用いてトラバースして、シードグラフに追加すべき候補エンティティおよび/または関係を特定することにより、シードグラフを、カスタムアプリケーションのためのカスタマイズされたナレッジグラフに拡張することができる。このトラバースは、ユーザデータセット内のエンティティ間の、可能性のある追加の関係と、関連する事実とを、参照ナレッジグラフから特定するのにも役立ち得る。スコアリング関数を用いることにより、特定したエンティティおよび関係から、エンティティおよび/または関係を選択することができ、次に、選択したエンティティおよび/または関係を、シードグラフに追加することにより、カスタマイズされたナレッジグラフを生成することができる。生成した、カスタマイズされたナレッジグラフを、特定のナレッジグラフ埋め込み技術を用いて、カスタムチャットボット等のカスタマーアプリケーションのために使用することができる。アブレーション研究(ablation study)は、カスタマイズされたナレッジグラフによって捕捉された追加の意味論的情報が、カスタムチャットボットのパフォーマンスを改善できることを示す。本明細書に開示されている技術は、質問回答または関係抽出等のその他の用途に使用することもできる。
本明細書で使用される、「チャットボット」、「ボット」または「スキル」は、とりわけインターネットを介して行われる人間のユーザとの会話をシミュレートするように設計されたコンピュータプログラムを意味する。個々のスキルは、ユーザと対話し、特定種類のタスク、たとえば食品の注文、予約の実行、および連絡情報の変更を遂行するように、設計することができる。各スキルは、テキストメッセージと選択リストのような単純なUI要素との組み合わせを通して、ユーザがタスクを完了するのを支援することができる。
本明細書で使用される「意図」という用語は、ユーザが、当該ユーザの代わりにスキルが実行することを期待する、アクションまたはタスクのカテゴリを意味し得る。「エンティティ」という用語は、スキルがタスクを遂行することを可能にする、ユーザからの重要情報を特定する変数を意味し得る。「コンポーネント」という用語は、スキルがユーザに応答するために使用できる各種機能を意味し得る。「コンポーネント」という用語は、テキストを出力すること、またはバックエンドからの情報を返してカスタムロジックを実行すること等の一般的な機能を意味し得る。「ダイアログフロー」という用語は、スキルとユーザとの対話の定義を意味し得るものであり、スキルが、ユーザ入力に従って如何にして応答し振る舞うかを説明することができる。「チャネル」という用語は、スキルが、メッセージングプラットフォームまたはクライアントメッセージングアプリケーションにアクセスできるようにする、プラットフォーム固有の構成を意味し得る。1つのスキルは、このスキルのために構成されたいくつかのチャネルを有することができるので、異なるサービスまたはプラットフォーム上で同時に実行することができる。
本明細書で使用される、発話またはメッセージは、会話中にやり取りされる1つ以上の文を意味し得るものであり、会話は、1つ以上の発話またはメッセージを含み得る通信セッションを意味し得る。会話は、1つ以上の段階または状態を含み得る。会話の流れは、同じ段階または状態と段階(または状態)から段階(または状態)への同じ移行を含む複数の会話を抽象化したものであってもよい。各会話は、対応する会話の流れの特定の事例であってもよい。会話または会話の流れの状態または段階は、ボットシステムがその他のボットシステムまたは人との会話を行うために維持する状態機械の状態に関連付けることができる。場合によっては、状態は、エンドユーザの意図または目的に対応し得る。本明細書で使用されるエンドユーザは、メッセージングアプリケーションまたはプラットフォームを通してボットシステムとの会話に参加する人物または別のエンティティ等の、ボットシステムのエンドユーザを意味し得る。たとえば、エンドユーザは、ボットシステムを所有する企業の顧客またはクライアントであってもよい。本明細書で使用される、解析システムのユーザは、ボットシステムの所有者、オペレータ、管理者、または開発者を意味し得る。
以下の記載では、説明のために、具体的な詳細事項を、本開示の例が十分に理解されるようにするために記述する。しかしながら、各種例はこれらの具体的な詳細事項がなくても実施し得ることは明らかであろう。次の記載は、例のみを提供するが、本開示の範囲、利用可能性または構成を限定することを意図している訳ではない。むしろ、これらの例の次の記載は、例を実現することを可能にする説明を当業者に提供するであろう。添付の請求項に記載の本開示の精神および範囲から逸脱することなく、要素の機能および構成のさまざまな変更を行い得ることが、理解されるはずである。図面および明細書は限定を意図したものではない。回路、システム、ネットワーク、プロセス、およびその他のコンポーネントは、不必要な詳細で例を曖昧にしないようにするために、コンポーネントとしてブロック図で示す場合がある。その他の例において、周知の回路、プロセス、アルゴリズム、構造および技術は、これらの例を曖昧にしないようにするために、不要な詳細なしで示される場合がある。本明細書に開示される教示は、モバイルアプリケーション、非モバイルアプリケーション、デスクトップアプリケーション、ウェブアプリケーション、エンタープライズアプリケーション等のような、さまざまな種類のアプリケーションに応用することもできる。さらに、本開示の教示は、特定の動作環境(たとえばオペレーティングシステム、デバイス、プラットフォーム等)に限定される訳ではなく、代わりに、複数の異なる動作環境に適用することができる。
また、個々の例は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明される場合がある。フローチャートは、動作を逐次プロセスとして説明することができるが、動作のうちの多くは並列にまたは同時に実行し得るものである。加えて、動作の順序を並べ替えてもよい。プロセスは、その動作が完了すると終了するが、図面には含まれていない追加のステップを有する可能性がある。プロセスは、方法、関数、手順、サブルーチン、サブプログラム等に対応し得る。プロセスが関数に対応する場合、その終了は、この関数を呼出関数または主関数に戻すことに対応し得る。
「例」または「具体例としての」という語は、本明細書において、「例、事例、または例証の役割を果たす」ことを意味するために使用される。本明細書において「具体例」または「例」として記載されている実施形態または設計は、必ずしもその他の実施形態または設計よりも好ましいまたは好都合であると解釈される訳ではない。
「マシン読取可能記憶媒体」または「コンピュータ読取可能記憶媒体」という用語は、命令(複数の命令)および/またはデータを格納する、含む、または運ぶことが可能な、持ち運び可能または不能の記憶装置、光記憶装置、およびその他の各種媒体を含むが、これらに限定される訳ではない。マシン読取可能記憶媒体またはコンピュータ読取可能記憶媒体は、データを格納することができる非一時的な媒体を含み得るが、無線でまたは有線接続を介して伝搬される搬送波および/または一時的な電子信号を含まない。非一時的な媒体の例は、磁気ディスクまたはテープ、コンパクトディスク(CD)またはデジタル多目的ディスク(DVD)等の光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得るが、これらに限定される訳ではない。コンピュータプログラムプロダクトは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラムステートメントの任意の組み合わせを表すことができる、コードおよび/またはマシン実行可能命令を含み得る。コードセグメントは、別のコードセグメントまたはハードウェア回路に、情報、データ、引数、パラメータ、またはメモリコンテンツを送るおよび/または受信することにより、結合することができる。情報、引数、パラメータ、データ等は、メモリシェア、メッセージパッシング、トークンパッシング、ネットワーク送信等を含む、任意の適切な手段で、送る、転送する、または送信することができる。
さらに、例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせによって実現することができる。必要なタスクを実行するためのプログラムコードまたはコードセグメント(たとえばコンピュータプログラムプロダクト)は、ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、マシン読取可能媒体に格納することができる。プロセッサは必要なタスクを実行し得る。
図面のうちのいくつかの図面に示されるシステムは、さまざまな構成で提供することができる。いくつかの例において、システムは、当該システムの1つ以上のコンポーネントが、クラウドコンピューティングシステムにおける1つ以上のネットワークに分散される分散型システムとして構成することができる。
コンポーネントが特定の動作を実行する「ように構成される」と記載されている場合、このような構成は、たとえば、電子回路またはその他のハードウェアを、この電子回路(たとえばマイクロプロセッサまたはその他適切な電子回路)をプログラムまたは制御することによって当該動作またはその任意の組み合わせを実行するように設計することで、実現することができる。
世界中の多くのユーザが、短いリアクションを得るためにインスタントメッセージングまたはチャットプラットフォーム上にいる。組織はしばしばこれらのインスタントメッセージングまたはチャットプラットフォームを使用することにより、顧客(またはエンドユーザ)と生で会話する。しかしながら、顧客またはエンドユーザと生で対話を行うためにサービス要員を雇うのは組織にとって非常に高コストになる可能性がある。そこで、チャットボット(ボット、スキル、チャターボット、またはトークボットとも呼ばれる)が、とりわけインターネットを介してエンドユーザとの会話をシミュレートするために開発され始めた。エンドユーザは、エンドユーザが既にインストールして使用しているメッセージングアプリケーションを通してボットと対話することができる。一般的に人工知能(AI)によって駆動されるインテリジェントボットは、生の会話において、より知的に文脈に応じたコミュニケーションを行うことができるので、ボットおよびエンドユーザ間でより自然な会話が行えるようにして会話体験を向上させることができる。エンドユーザが、ボットがそれに対する応答方法を知っている、固定された一組のキーワードまたはコマンドを覚える代わりに、インテリジェントボットが、自然言語によるユーザの発話に基づいてエンドユーザの意図を理解しそれに応じて反応することができる。
ボットシステムは、エンドユーザの発話に基づいてエンドユーザの意図を特定するための1つ以上のユーザ意図分類エンジンと、特定したエンドユーザの意図に従ってユーザの発話に対して知的に文脈に応じて応答するための1つ以上のダイアログエンジンとを含み得る。しかしながら、エンドユーザの意図をユーザの発話に基づいて判断することができるユーザ意図分類エンジン等のボットシステムを構築することは、難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さ、入力空間の寸法(たとえば起こり得るユーザの発話)、および出力空間のサイズ(意図の数)にある。
ボットは、一般的に、自然言語のメッセージを使用するメッセージングアプリケーションを通して、自然言語メッセージ(たとえば質問またはコメント)に応答することができる。企業は、1つ以上のボットシステムを使用しメッセージングアプリケーションを通してエンドユーザと対話する場合がある。チャネルと呼ぶことができるメッセージングアプリケーションは、エンドユーザが既にインストールしており使い慣れている、エンドユーザが好むメッセージングアプリケーションであってもよい。よって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードしてインストールする必要はない。メッセージングアプリケーションは、たとえば、オーバー・ザ・トップ(OTT)メッセージングチャネル(Facebook(登録商標) Messenger、Facebook WhatsApp、WeChat(登録商標)、Line、Kik、Talk、Skype(登録商標)、Slack、またはSMS等)、仮想プライベートアシスタント(Amazon(登録商標) Dot、Echo、またはShow、Google Home(登録商標)、Apple(登録商標) HomePod等)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリケーションもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリケーション拡張、または、音声ベースの入力(Siri(登録商標)、Cortana(登録商標)、Google Voice、または対話のためのその他の音声入力を使用するインターフェイスを備えたデバイスまたはアプリケーション等)を、含み得る。
いくつかの例において、ボットシステムは統一リソース識別子(URI)に対応付けられてもよい。URIは文字列を用いてボットシステムを特定することができる。URIは1つ以上のメッセージングアプリケーションシステムのウェブフック(webhook)として使用することができる。URIは、たとえば、統一リソースロケータ(URL)または統一リソース名(URN)を含み得る。ボットシステムは、メッセージングアプリケーションシステムからメッセージ(たとえばハイパーテキスト・トランスファ・プロトコル(HTTP)ポストコールメッセージ)を受信するように設計することができる。HTTPポストコールメッセージは、メッセージングアプリケーションシステムからURIに向けられてもよい。いくつかの実施形態において、メッセージはHTTPポストコールメッセージと異なる場合がある。たとえば、ボットシステムはショートメッセージサービス(SMS)からメッセージを受信することができる。本明細書における説明はボットシステムがメッセージとして受信する通信に言及しているが、メッセージは、HTTPポストコールメッセージ、SMSメッセージ、または2つのシステム間のその他任意の種類のメッセージでもよいことを、当業者は理解するであろう。
エンドユーザは、人々の間の対話と同様に、会話による対話(会話ユーザインターフェイス(UI)と呼ばれることもある)を通してボットシステムと対話することができる。いくつかの場合において、この対話は、エンドユーザがボットに「Hello」と言い、ボットが「Hi」で応答しエンドユーザに用件を尋ねることを含む。いくつかの場合において、この対話は、たとえばある口座から別の口座への金銭の移動の場合のバンキングボットとの取引の対話、たとえば休暇残を確認する場合のHRボットとの情報の対話、または、たとえば購入した商品の返品について話すまたはテクニカルサポートを求める場合の小売ボットとの対話、であってもよい。
いくつかの実施形態において、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザとの対話を知的に処理することができる。たとえば、エンドユーザは、所望の目的を達成するために1つ以上のメッセージをボットシステムに送信することができる。メッセージは、テキスト、絵文字、音声、画像、動画、またはその他のメッセージ伝達方法等の、特定のコンテンツを含み得る。いくつかの実施形態において、ボットシステムは、このコンテンツを標準形態(たとえば適切なパラメータによるエンタープライズサービスに対する表現状態転送(representational state transfer)(REST)コール)に変換し自然言語応答を生成することができる。また、ボットシステムは、追加の入力パラメータをエンドユーザに促す、またはその他の追加情報を要求することができる。いくつかの実施形態において、ボットシステムは、エンドユーザの発話に対して受動的に応答するのではなくエンドユーザとの対話を開始することもできる。
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。このフローは、入力に基づいて次に何が起こるかを規定することができる。いくつかの実施形態において、ユーザが規定した状態(たとえばエンドユーザの意図)と、複数の状態においてまたは状態ごとに実行すべきアクションとを含む状態機械を用いることにより、ボットシステムを実現することができる。会話は、ボットがこのフローについて下す決定に影響を与え得る、エンドユーザの入力に基づいて、さまざまな経路を取り得る。たとえば、ボットは、各状態で、エンドユーザの入力に基づいて、次に行うべき適切なアクションを決定するためにエンドユーザの意図を判断することができる。
意図は、エンドユーザが達成したい目標を含み得る。意図は、エンドユーザの入力を、エンドユーザのためにバックエンドシステムが実行すべきアクションにマッピングする。したがって、ボットは、エンドユーザが自然言語で発話した句に基づいて、エンドユーザの発話を、ピザの注文、口座残高の取得、送金、購入、返品等の、特定のユースケースまたはジョブにマッピングする。人間の会話は事実上非線形であることが多い。エンドユーザは会話中に異なる状態に分岐することがよくある。たとえば、エンドユーザは、資金を口座Aから受取人に送金したい場合、ボットシステムとの会話を、たとえば、ディナーの代金を受取人に支払うようボットに依頼することで、始めてもよい。ボットは、たとえば「どの口座から?」で応答してもよい。エンドユーザは、当座預金口座を選ぶことができるがこの口座の残高に確信が持てないかもしれない。そこで、エンドユーザは、文脈を切り替えて残高および最新トランザクション等を尋ねてもよい。言い換えると、エンドユーザは、たとえば、送金から残高確認へ、次に最新トランザクションへの、フローおよび状態の変化を、トリガしてもよい。特定の時点で、エンドユーザは、最初の意図である受取人への支払に戻ると判断してもよい。このように、ボットシステムの1つのタスクは、エンドユーザの意図を自然言語発話から動的に判断することである。
ボットは、自然言語処理(natural language processing)(NLP)エンジンおよび/または機械学習モデル(たとえば意図分類器)を用いることにより、エンドユーザの発話を特定の意図にマッピングすることができる。たとえば、機械学習に基づいたNLPエンジンは、エンドユーザの自然言語会話を理解して分類すること、および、会話から必要な情報を抽出することを学習することにより、トランザクションを実行することまたは記録されているバックエンドシステムからのデータを調べること等の、正確なアクションを実行することができる。
図1は、特定の実施形態に係る、メッセージングアプリケーションを用いてエンドユーザと対話するためのボットシステムを実現するために使用し得る、分散型システム100を示す。システム100は、ボットシステム120と、1つ以上のメッセージングアプリケーションシステム115と、1つ以上のモバイルデバイス110等の1つ以上のエンドユーザデバイスとを含み得る。いくつかの例において、メッセージングアプリケーションは、電子デバイス(たとえばデスクトップコンピュータ、ラップトップ、モバイルデバイス110等)にインストールすることができる。本明細書の記載はモバイルデバイスおよびメッセージングアプリケーションに言及するが、当業者は、任意の電子デバイスを使用し得ること、および、FACEBOOK(登録商標) Messenger、WHATSAPP(登録商標)インスタントメッセージングソフトウェア、WECHAT(登録商標)モバイルテキストおよびボイスメッセージング通信サービス、KIK(登録商標) Messenger、TELEGRAM(登録商標) Messenger、SKYPE MOBILE(登録商標)メッセンジャー、ショートメッセージサービス(SMS)、またはエンドユーザが通信するためのプラットフォームを提供するその他任意のメッセージングアプリケーション等の、任意のメッセージングプラットフォームまたはメッセージングアプリケーションを使用し得ることを、理解するであろう。その他の例において、メッセージングアプリケーションは、モバイルデバイス110にインストールされているブラウザ(たとえば、GOOGLE CHROME(登録商標)ブラウザ、MOZILLA(登録商標)FIREFOX(登録商標)ブラウザ、およびINTERNET EXPLORER(登録商標)ブラウザ)を通して実行されてもよい。いくつかの実施形態において、2つ以上のメッセージングアプリケーションをエンドユーザデバイスにインストールして2つ以上のメッセージングプラットフォーム(2つ以上のメッセージングアプリケーションシステム115等)を通して通信してもよい。
メッセージングアプリケーションは、メッセージングアプリケーションシステム115等のメッセージングプラットフォームによって容易にすることができる。モバイルデバイス110は、第1のネットワーク(たとえばインターネット)によってメッセージングアプリケーションシステム115に接続することができる。メッセージングアプリケーションシステム115は、Facebook、Tencent、Google(登録商標)、Microsoft(登録商標)等のような第三者が提供するメッセージングプラットフォームであってもよい。メッセージングアプリケーションシステム115は、複数のモバイルデバイスまたはその他のエンドユーザデバイスにわたってメッセージングアプリケーションを通して送受信されるコンテンツを管理することができる。
ボットシステム120(たとえば1つ以上のサーバ上で実現される)は、メッセージングアプリケーションシステム115と通信可能に接続されてメッセージを送受信することもできる。メッセージングアプリケーションシステム115とボットシステム120との間の通信は、第2のネットワーク(たとえばインターネット)を通して行われてもよい。第1のネットワークおよび第2のネットワークは、同一のネットワークであってもよく、または、同様のもしくは全く異なるネットワークであってもよい。メッセージングアプリケーションシステム115は、モバイルデバイス110からのコンテンツ(たとえばメッセージ、またはメッセージからの情報)を、インターネットを用いてボットシステム120にルーティングすることができる。いくつかの実施形態において、コンテンツの宛先(たとえばボットシステム120のID)は、名目上のアドレスとしてコンテンツに含まれていてもよい。いくつかの実施形態において、ボットシステム120を、2つ以上のメッセージングアプリケーションシステム115と通信するように構成してもよい。
先に述べたように、エンドユーザ間でまたはエンドユーザとボットシステムとの間でやり取りされるコンテンツは、たとえば、テキスト、絵文字、音声、媒体(たとえば写真、動画、リンク)、またはその他任意のメッセージ伝達方法を含み得る。ボットシステム120がたとえばFACEGBOOK(登録商標)Messengerから受信するメッセージの一例は以下を含み得る。
ボットシステム120は、メッセージングアプリケーションシステム115とボットシステム120との間のインターフェイスの働きをするコネクタ130を用いて、メッセージングアプリケーションシステム115からのコンテンツを受信することができる。いくつかの実施形態において、コネクタ130は、さまざまなメッセージングアプリケーションシステムにまたがるコンテンツをボットシステム120が解析できるよう、メッセージングアプリケーションシステム115からのコンテンツを標準化してもよい。コンテンツ標準化処理は、各タイプのメッセージングアプリケーションからのコンテンツを、処理のために共通フォーマットになるようフォーマットすることを含み得る。いくつかの実施形態において、ボットシステム120は、メッセージングアプリケーション(FACEBOOK(登録商標) Messenger、WHATSAPP(登録商標)インスタントメッセージングソフトウェア、WECHAT(登録商標)モバイルテキストおよびボイスメッセージング通信サービス、KIK(登録商標) Messenger、TELEGRAM(登録商標) Messenger、SKYPE MOBILE(登録商標)メッセンジャー、ショートメッセージサービス(SMS)等)の各々について1つ以上のコネクタを含み得る。いくつかの実装例において、コネクタ130はコンテンツをメッセージ・インキュー140にルーティングすることができる。メッセージ・インキュー140は、コンテンツを受信した順序で格納するバッファ(たとえば先入れ先出し(FIFO)バッファ)を含み得る。いくつかの実施形態において、各コネクタ130を1つ以上のメッセージ・インキューに対応付けることができる。
メッセージ・インキュー140は、メッセージプロセッサ150が利用できるようになると、コンテンツをメッセージプロセッサ150に送信する。いくつかの実施形態において、メッセージプロセッサ150は、メッセージ・インキュー140からコンテンツをプル(pull)することができる。以下で詳細に述べるように、メッセージプロセッサ150は、メッセージをパースし、パースしたメッセージの意図を判断することができる。いくつかの実施形態において、メッセージプロセッサ150は、自然言語プロセッサ152と意図判断サブシステム154とを含み得る。自然言語プロセッサ152は、メッセージをパースし、主語、述語(たとえばアクション)、および/または目的語を特定すること等の、特定の意味解析を実行することができる。意図判断サブシステム154は、パースしたメッセージに基づいてエンドユーザの意図を判断することができる。先に述べたように、意図はメッセージの目的を含み得る。たとえば、メッセージの目的は、ピザを注文すること、コンピュータを注文すること、送金すること、配達について質問すること等を含み得る。いくつかの実施形態において、エンティティと呼ばれることもある、行うべきアクションを、より具体的に定義するまたは明確にする、意図に対応付けられたパラメータを、自然言語プロセッサ152および/または意図判断サブシステム154により、メッセージから抽出することもできる。
メッセージプロセッサ150がコンテンツに基づいてエンドユーザの意図を判断した後に、判断した意図(およびこの意図に対応付けられたパラメータ)をアクションエンジン160に送信することができる。アクションエンジン160を用いることにより、意図(およびこの意図に対応付けられたパラメータ)と、先に述べた状態機械の現在の状態(またはコンテキスト)とに基づいて、実行すべきアクションを判断することができる。たとえば、アクションエンジン160は、特定のアウトバウンドコンテンツを応答としてメッセージ・アウトキュー170に送信することができ、および/または、エンタープライズサービス125等のエンタープライズサービスにコマンドを送信するまたはエンタープライズサービスから情報を取り出すことができる。メッセージ・アウトキュー170は、アウトバンドコンテンツをコネクタ130に送信することができる。そうすると、コネクタ130は、アウトバウンドコンテンツを、アクションエンジン160が示すメッセージングアプリケーションシステムに送信することができ、上記メッセージングアプリケーションシステムは、メッセージングアプリケーションシステム115と同一であっても異なっていてもよい。メッセージングアプリケーションシステム115は次にアウトバウンドコンテンツをモバイルデバイス110上のメッセージングアプリケーションに転送することができる。
ボットシステム120は、1つ以上のエンタープライズサービス(たとえばエンタープライズサービス125)と通信することができる、または、ボットシステム120から受信したメッセージを格納および/または解析するために1つ以上の記憶システムと通信することができる、または、コンテンツをボットシステム120に提供するためにコンテンツシステムと通信することができる。エンタープライズサービス125は、コネクタ130、アクションエンジン160、またはその任意の組み合わせのうちの1つ以上と通信することができる。エンタープライズサービス125は、メッセージングアプリケーションシステム115との通信と同様に、コネクタ130と通信することができる。エンタープライズサービス125は、1以上のエンドユーザと対応付けられるべきコネクタ130にコンテンツを送信することができる。エンタープライズサービス125は、コンテンツをコネクタ130に送信することにより、エンドユーザに対応付けられたアクションをボットシステム120に実行させることもできる。アクションエンジン160は、エンタープライズサービス125と通信することにより、エンタープライズサービス125から情報を取得する、および/またはアクションエンジン160が特定したアクションを実行するようエンタープライズサービス125に指示することができる。
いくつかの実施形態において、ボットシステム120は1つ以上のタイマーを含み得る。タイマーは、ある時間の経過後に、アクションエンジン160がコネクタ130およびメッセージングアプリケーションシステム115を用いてコンテンツを送信するようにすることができる。いくつかの実施形態において、タイマーは、エンドユーザまたはエンタープライズサービス125の場合と同様に、コンテンツをボットシステム120に送信することができる。たとえば、タイマーは、エンドユーザからのメッセージが解析されるように、解析すべきメッセージをボットシステム120に送信することができる。
ある特定の実施形態において、エンドユーザは、モバイルデバイス110を用い、メッセージングアプリケーションシステム115を通してメッセージをボットシステム120に送信することができる。このメッセージは、「Hello」または「Hi」といった挨拶を含み得る。ボットシステムは、エンドユーザとの新たな会話が始まったと判断し状態機械を始動させることができる。いくつかの実施形態において、ボットシステムは、エンドユーザの1つ以上の特徴を特定することができる。たとえば、ボットシステムは、メッセージングアプリケーションシステム上でエンドユーザに対応付けられたプロファイルを用いてこのエンドユーザの名前を特定することができる。ボットシステムは、1つ以上の特徴を用いて、メッセージングアプリケーション上でエンドユーザに応答することができる。応答は、エンドユーザから受信したメッセージに対して応答する、エンドユーザ宛てのメッセージを含み得る。たとえば、応答は、「Hi Tom, What can I do for you(こんにちはトム。何か用事はありませんか?)」のような、エンドユーザの名前を用いた挨拶を含み得る。ボットシステムに対応付けられた企業に応じて、ボットシステムは、この企業の目標を達成するよう進化してもよい。たとえば、ボットシステムがピザデリバリーサービスに対応付けられている場合、ボットシステムは、エンドユーザがピザを注文したいか否かを尋ねるメッセージをエンドユーザに送ることができる。ボットシステムとエンドユーザとの間の会話は、そこから始まって、ボットシステムが会話を終えるまでまたはエンドユーザがボットシステムに応答するのを止めるまで、続けられるであろう。
いくつかの実施形態において、ボットシステムがエンドユーザとの会話を開始してもよい。ボットシステムが開始する会話は、エンドユーザとの前の会話に対する応答であってもよい。たとえば、エンドユーザが前の会話でピザを注文したとする。そうすると、ボットシステムは、ピザの準備できたときに会話を開始してもよい。いくつかの実施形態において、ボットシステムは、ボットシステムに対応付けられた企業からの指示を受けた(たとえばピザが準備できたというメッセージを従業員がボットシステムに送信した)ときに、ピザの準備ができたと判断してもよい。会話は、エンドユーザに送信される、ピザが準備できたことを示すメッセージを含み得る。
いくつかの実施形態において、ボットシステムは、前のメッセージを受けたときのメッセージングアプリケーションと異なるメッセージングアプリケーションで、メッセージをエンドユーザに送信してもよい。たとえば、ボットシステムは、FACEGBOOK(登録商標)メッセンジャーではなくショートメッセージサービス(SMS)を用いてメッセージを送信すると判断することができる。このような実装例において、ボットシステムは、複数のメッセージングアプリケーションを統合することができる。
いくつかの実施形態において、ボットシステムは、タイマーに基づいて会話を開始すると判断してもよい。たとえば、ボットシステムは、あるユーザについて、ピザが注文されてから、1週間タイマーを持つと判断してもよい。1週間タイマーが切れるとボットシステムがエンドユーザとの間で別のピザの注文のための会話を開始するようにしてもよい。このタイマーは、企業によって構成されボットシステムによって実装されてもよい。
先に述べたように、いくつかの実施形態において、アクションエンジン160は、いくつかのエンタープライズサービス125にコマンドを送信するまたはいくつかのエンタープライズサービス125から情報を取り出してもよい。たとえば、ボットシステム120(より具体的にはメッセージプロセッサ150)が、意図が残高確認であると判断した場合、ボットシステム120は、残高を確認する口座がいくつかの口座(たとえば当座預金口座または貯蓄預金口座)のうちのいずれであるかを判断することができる。エンドユーザの入力が「What's my balance in my savings account(私の貯蓄預金口座の残高は?)」である場合、ボットシステム120は、「savings(貯蓄)」を抽出し銀行サーバに対して残高を確認するようコマンドを送信し、その後、受信した残高情報をメッセージを通してエンドユーザに送信してもよい。エンドユーザが最初に発したのが「what's the balance in my account(私の口座の残高は?)」だけであった場合、ボットシステム120は、さらに特定の口座を指定するようエンドユーザを促すメッセージをエンドユーザに送信してもよく、または、エンドユーザのすべての口座の情報を取り出してこの口座情報をエンドユーザに送信しエンドユーザが選択するようにしてもよい。
いくつかの実施形態において、ボットシステムは、会話と会話との間の情報を保持してもよい。この情報は、エンドユーザとボットシステムとの間で新たな会話が開始されるたびにボットシステムが質問をする必要をなくすために、後から使用されるものであってもよい。たとえば、ボットシステムは、エンドユーザによる前のピザの注文に関する情報を保存してもよい。新たな会話において、ボットシステムは、エンドユーザが前回の注文と同じ注文を希望するか否かをエンドユーザに尋ねるメッセージをエンドユーザに送信してもよい。
いくつかの実施形態において、ボットシステム120は、エンドユーザに対応付けられた情報をキャッシュに保存してもよい。キャッシュは、コネクタ130からメッセージングアプリケーションシステムにアウトバウンドメッセージが送信された後に、情報を保存するためにデータベースに書き込んでもよい。その他の実施形態において、キャッシュは異なる時点でデータに書き込んでもよい(たとえば特定のイベントの後、各イベントの後、一定時間の後、または、データベースにいつ書き込むかを判断するためのその他任意のメトリックの後)であってもよい。
ボットシステム120は、減速が確認されたときに各コンポーネントがスケーリングされるようにしてもよい。たとえば、ボットシステム120は、コネクタ130に到着するメッセージの数がしきい値を超えたことを確認すると、さらに他の1つ以上のコネクタをコネクタ130に追加してもよい。加えて、メッセージ・インキュー、メッセージプロセッサ、アクションエンジンのインスタンス、およびメッセージ・アウトキューの数を、減速が発生している場所に応じて増加させてもよい。このような実装例において、追加のコンポーネントは、その他の追加のコンポーネントを加えることなく、加えることができる。たとえば、コネクタは、アクションエンジンの追加インスタンスを加えることなく、加えることができる。いくつかの実装例において、ボットシステム120の1つ以上のコンポーネントまたはあるコンポーネントの一部を、仮想マシン上で実行してもよい。仮想マシン上で実行することにより、さらに他の仮想マシンを所望のときに始動させることができる。
先に述べたように、エンドユーザの発話に基づいてエンドユーザの意図を判断できるユーザ意図分類エンジン等のボットシステムの構築は、難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さ、入力空間の寸法(たとえば起こり得るエンドユーザの発話)、および出力空間のサイズ(意図の数)にある。そのため、ボットシステムのパフォーマンスおよびボットシステムに対するユーザの体験を改善するためには、新たなボットシステムをモニタリングし、デバッグし、修正する必要があるであろう。多くの場合において、ボットシステムのパフォーマンスが所望のパフォーマンスよりも低い根本的理由をより具体的に特定し解析または最適化ツールを用いることなくボットシステムを如何にして改善するかを判断することは、難しいであろう。
状況によっては、ボットの所有者、開発者、または管理者が、ボットを改善するために、ボットの動作状態をモニタリングしこのボットがどのように使用されているかおよびエンドユーザがどこでボットをあきらめたかを理解することを所望する場合がある。たとえば、ボットの所有者、開発者、または管理者は、ボットシステムの期待以下の要素を特定して診断するために、ボットのどの会話が成功しどの会話が失敗したかを知ることを所望する場合がある。
いくつかの実施形態に従い、解析システムをボットシステムと統合してもよい。解析システムは、エンドユーザとボットシステムとの間の会話中に発生したイベントをモニタリングし、収集したイベントを集約して解析し、すべての会話、会話のさまざまなカテゴリ、および個々の会話等の、さまざまな一般化レベルで、会話に関する情報をグラフィックユーザインターフェイス上で図示してもよい。たとえば、グラフィックユーザインターフェイスは、特定種類の会話または個々の会話をフィルタリングまたは選択するというオプションを表示し、選択された情報を、たとえば会話の経路を視覚化することで図示してもよい。また、解析システムは、ボットシステムを改善するための提案、オプション、またはその他の情報を提供してもよい。
図2は、特定の実施形態に係る、ボットシステム(ボットシステム120等)と、ボットシステムのパフォーマンスをモニタリングし解析し視覚化し改善するためのボット解析システムとを含む、統合システム200を示す。示されているように、ボットシステムは、コネクタ230と、ダイアログエンジン212、意図モデラー214、エンティティリゾルバ216、およびカスタムコンポーネント218等の複数のボットエンジンとを含み得る。また、ボットシステムは、データベース240と、管理API250と、ユーザインターフェイス254と、UIサーバ252とを含み得る。ボット解析システムは、コレクタ255と、エンリッチエンジン260と、データベース270と、RESTサーバ280とを含み得る。また、ボット解析システムは、ユーザインターフェイス292とUIサーバ290とを含み得る。ボット解析システムのコレクタ255は、ボットシステムで発生したイベント205を収集することができる。ボット解析システムからのフィードバック294は、ユーザインターフェイス292およびユーザインターフェイス254を通してボットシステムに提供することができる。
コネクタ230は、チャネル220および222等の1つ以上のチャネルを通して、ボットシステムと1以上のエンドユーザとの間のインターフェイスとして機能することができる。各チャネルは、メッセージングチャネル(Facebook Messenger、Facebook WhatsApp、WeChat、Line、Kik、Telegram、Talk、Skype、Slack、またはSMS等)、仮想プライベートアシスタント(Amazon Dot、EchoまたはShow、Google Home、Apple HomePodその他等)、チャット機能を有するネイティブもしくはハイブリッド/応答モバイルアプリケーションもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリケーション拡張、または、音声ベースの入力(Siri、Cortana、Google Voice、または対話のためのその他の音声入力を使用するインターフェイスを備えたデバイスもしくはアプリケーション等)といった、メッセージングアプリケーションであってもよい。いくつかの実施形態において、コネクタ130は、さまざまなチャネルからのコンテンツを、ボットシステムがさまざまなメッセージングアプリケーションシステムにわたるコンテンツを解析できるように、標準化してもよい。コンテンツ標準化処理は、各タイプのメッセージングアプリケーションからのコンテンツを、処理のために共通フォーマットになるようフォーマットすることを含み得る。いくつかの実施形態において、ボットシステムは、各チャネルに対して1つ以上のコネクタを含み得る。
意図モデラー214を用いることにより、エンドユーザの発話に対応するエンドユーザの意図を判断することができる。いくつかの実施形態において、ボットシステムがエンドユーザから受信した1つ以上のメッセージに基づいてエンドユーザの意図を判断するための意図モデラー214は、自然言語プロセッサを用いることにより、品詞(動詞、名詞、形容詞)にタグ付けし、見出し語(lemma)/語幹(stem)(runs/running/ran→run)を発見し、エンティティにタグ付けする(テキサス→場所)ことができる。いくつかの実施形態において、意図モデラー214はメッセージを標準化してもよい。たとえば、「Mary ran to Texas(メアリーはテキサスまで走った)」は、「PERSON run to LOCATION(人が場所まで走る)」とすることができる。また、意図モデラーは、エンドユーザのメッセージ内で同一の意味を持つ単語を検出するためのロジックを含み得る。たとえば、訓練データセットが「Mary ran to Texas(メアリーはテキサスまで走った)」および「Bob walked to Detroit(ボブはデトロイトまで歩いた)」を含みどちらも同じ意図にマッピングされrun/walkが同じ組の意図に含まれると思われる場合、意図モデラー214は、意図の解明のために、run=walkであると学習してもよい。例示のための一例において、「Mary ran to Texas」は「PERSON run to LOCATION」になってもよく「Bob walked to Detroit」は「PERSON walk to LOCATION」になってもよい。示されている例において、これらの文はどちらも同じ意図に対応付けられる。なぜなら、意図の解明という目的において、「noun(名詞)run to noun」は「noun walk to noun」と同一であるからである。もう1つの例において、「I want to order a large cheese pizza(私は大きなチーズピザを注文したい)」および「I want to order a small pepperoni pizza(私は小さなペパローニピザを注文したい)」はどちらも「I want to order Bots_PizzaSize Bots_Toppings pizza」に標準化することができる。
標準化後に、ある単語の発現が特定の意図を表す確率を求めてもよい。いくつかの例において、確率を、あたかも独立しているかのように、基本的な確率演算を用いて組み合わせることができる。たとえば、「order(注文)」が、ピザの注文が20%の確率であることを示唆し「pizza(ピザ)」がピザの注文が10%の確率であることを示唆する場合、全体の確率は、1−(1−0.2)(1−0.1)=28%であろう。いくつかの確率は、単語の存在に基づいていてもよく、または特定の言語要素に基づいていてもよく、これは否定または人称代名詞の存在と同様である。
別のレベルのルールは、単語の組み合わせであるテンプレートルールであってもよい。いくつかの例において、訓練データセット中のすべての文は、一旦標準化されると、自動的にルールになることができる。このような例において、訓練データセットは極めて少数の短い文を含んでいてもよい。テンプレートルールは、確率1を返す。新たなルールが帰納プロセスを通して生成されてもよい。たとえば、以下の文「How much did I spend last month on gas?(先月の私のガソリン支出は?)」および「How much did I spend on May on food(5月の私の食料支出は?)」は、支出追跡(track spending)に属し得る。これらの文を用いることにより、これらの文が共有する部分として「How much did I spend(私の支出は)」というルールを導くことができる。その他の例において、訓練データセットは、「How much did I spend」という句を含むことにより、同じ結果を得ることができる。
上述の例は、ある意図の定義が、指定されたエンティティの変形(たとえば、「Send money to Sue」および「Send money to Bob」)等の複製を含まないようにすることを可能にする。しかしながら、1つまたは2つの単語が異なる類似する文を、訓練に使用することができる。類似する文により、モデルは、意図の解明のために、どの単語が同じ意味を持ち得るのか、および、どの単語が共通のスペルミスであり得るのかを、学習することができる。
(動詞のような)特定の単語または一組の単語が、ある意図にとって重要である場合、確率は、このような単語(およびその同義語)を用いるより多くの例と、このような単語が他の意図に用いられるより少ない例とを持つことで、操作することができる。
このモデルが間違った表明を行うのを防止するための例を提供することもできる。たとえば、特定の意図にしか現れない特定のサブフレーズまたは単語は、間違った表明を引き起こす可能性がある。同様に、モデルが、訓練のために異なる意図に属する類似する文を用いて広いルールを合成することを防止することができる。
エンティティレゾルバ216は、エンドユーザの意図に対応付けられるエンティティ(たとえば物(object))を特定することができる。たとえば、意図モデラー214が特定した、「order pizza(ピザを注文する)」等のエンドユーザの意図に加えて、エンティティレゾルバ216は、ピザの種類、トッピングその他といった、この意図に対応付けられるエンティティを解明することができる。
ダイアログエンジン212を用いることにより、エンドユーザとボットシステムとの間の会話を処理することができる。たとえば、ダイアログエンジン212は、意図モデラー214が特定したエンドユーザの意図と、エンティティレゾルバ216が特定したエンドユーザの意図に対応付けられるエンティティとに基づいて、エンドユーザの発話に応答することができる。いくつかの実施形態において、ダイアログエンジン212は、ユーザが規定した状態(たとえばエンドユーザの意図)と、複数の状態においてまたは状態ごとに実行すべきアクションとを含む状態機械を用いることにより、エンドユーザとの会話を処理することができる。
カスタムコンポーネント218は、特定のボットシステムのためにカスタマイズされたモジュールを含み得る。たとえば、金融ボットは、たとえば、残高確認、資金振替、または請求書の支払に使用し得るカスタムコンポーネントを含み得る。
データベース240を用いることにより、分類モデルについてのデータ、会話のログ等のような、ボットシステムについてのデータを保存することができる。管理API250を、ボットシステムの管理者または開発者が使用することにより、分類モデルの再訓練、意図の編集、そうでなければボットシステムの修正等の、ボットシステムの管理を行うことができる。管理者または開発者は、ユーザインターフェイス254およびUIサーバ252を用いることにより、ボットシステムを管理することができる。
ボットシステムの実行中に各種イベントが生成される可能性がある。これらのイベントは、ボットシステムに含まれる1つ以上の命令に基づいて生成される可能性がある。たとえば、イベントは、ボットシステムが、ボットシステムの管理者または開発者によって規定された特定の状態に入ったときに生成される場合がある。イベントが生成されると、ボット解析システムがこれらのイベントを収集、保存、および解析することができる。イベントを捕捉するときには、このイベントに対応付けられる追加情報を収集することもでき、追加情報は、イベントが生成される現在のコンテキストを示し得る。
たとえば、会話イベントがダイアログエンジン212によって生成されてもよい。会話イベントは、ボットシステムがエンドユーザデバイスから受信するメッセージ(msg_receivedと呼ばれる)を含み得る。msg_receivedは、以下のパラメータまたは変数、すなわち、メッセージの内容、ボットシステムがメッセージを受信する時間、受信したメッセージの言語、デバイスプロパティ(たとえばバージョンまたは名称)、オペレーティングシステムプロパティ(たとえばバージョンまたは名称)、地質学上のプロパティ(たとえばインターネットプロトコルアドレス、緯度、経度等)、識別情報(たとえばユーザID、セッションID、ボットシステムID、テナントID等)、タイムスタンプ(デバイスが作成し、デバイスが送信し、コレクタが導き出したタイムスタンプ)、チャネルその他うちの、1つ以上を含み得る。
会話イベントは、ボットシステムがエンドユーザデバイスに送信するメッセージ(msg_sentと呼ばれる)も含み得る。msg_sentは、メッセージの内容(たとえばメッセージのテキストまたはHTML)、ボットシステムがメッセージを送信する時間、メッセージの言語、メッセージの作成者(たとえばボットシステムまたはエンドユーザデバイス)、デバイスプロパティ、オペレーティングシステムプロパティ、ブラウザプロパティ(たとえばバージョンまたは名称)、アプリケーションプロパティ(たとえばバージョンまたは名称)、地質学上のプロパティ(たとえばインターネットプロトコルアドレス、緯度、経度等)、識別情報(たとえばユーザID、セッションID、ボットシステムID、テナントID等)、チャネル(たとえばFacebookまたはWebhook)その他のうちの、1つ以上を含み得る。
ダイアログエンジン212は、ダイアログ状態実行イベントも生成し得る。先に述べたように、ダイアログエンジン212は、状態機械を用いることにより、エンドユーザとの会話の流れを判断することができる。状態機械は、一組の状態と状態間の遷移のルールとを含み得る。ダイアログエンジン212は、エンドユーザの会話ごとに状態機械を実行し、ダイアログ状態実行イベントは、エンドユーザの発話を処理するためにダイアログエンジン212が経由する各状態について生成することができる。ダイアログ状態実行イベントの属性は、たとえば、状態名、コンポーネント名、次のアクション、エンティティマッチ、意図マッチ、変数、ユーザクエリステートメント、レスポンスステートメント、実行時間、通信言語、デバイスプロパティ、オペレーティングシステムプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を、含み得る。状態名は、現在実行されている状態または「エラー状態」の名称であってもよい。コンポーネント名は、現在の状態について実行されるボットコンポーネントの名称であってもよい。次のアクションは、実行すべき次のアクションであってもよい。エンティティマッチは、現在のメッセージで解明されたエンティティであってもよい。意図マッチは、スコアの値で解明された意図であってもよい。変数は、現在の状態についての変数値であってもよい。クエリステートメントは、エンドユーザが送信するメッセージであってもよい。レスポンスステートメントは、エンドユーザに送信されるメッセージであってもよい。実行時間は、完了した状態実行のタイムスタンプであってもよい。通信言語は、交わされているメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応し得る。ブラウザおよび/またはアプリケーションプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
意図解明イベントは、意図モデラー214の実行の結果として発生し得る。意図モデラー214は、訓練された、またはそうでければ規定された分類モデルを用いることにより、エンドユーザの発話に基づいて一組の意図からエンドユーザの意図を特定することができる。意図分類の結果を、意図解明イベント属性として捕捉してもよく、これは、たとえば、最終意図分類結果(たとえば特定された意図)および一組の意図の中のそれぞれの意図に対応付けられた信頼度スコアとを含み得る。
エンティティリゾルバ216は、エンティティレゾルバイベントを生成することができる。エンティティは、エンドユーザの意図に対応付けられる物である。エンティティ定義ルールは、ボットシステムが作成されるときに決定されてもよい。たとえば、「ピザを注文する」といったエンドユーザの意図の解明に加えて、ボットシステムは、エンティティレゾルバ216を用いることにより、対応付けられる、ピザの種類、トッピング等のような、エンティティを解明することもできる。エンティティレゾルバイベントは、エンティティ解明で捕捉されてもよい。エンティティレゾルバイベントに対応付けられる属性の例は、エンティティ名、適用されるルール、検索語、解明された状態、クエリステートメント、エンティティの種類、実行時間、通信言語、デバイスのプロパティ、オペレーティングシステムのプロパティ、ブラウザのプロパティ、アプリケーションのプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を含み得る。エンティティ名は、現在解明されているエンティティの名称であってもよい。適用されるルールは、たとえば、先行、後続、または総計(aggregate)であってもよい。検索語は、宛先、起点等から/への検索語であってもよい。解明された状態は、エンティティについて解明されたダイアログ状態であってもよい。クエリステートメントは、エンティティの値を含むメッセージであってもよい。エンティティの種類は、システムであってもよくまたは導出されてもよい。実行時間は、エンティティ解明のタイムスタンプであってもよい。通信言語は交わされているメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。ブラウザおよび/またはアプリケーションのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
カスタムコンポーネントも、予め規定されたイベントまたはカスタムイベント等のイベントを生成し得る。予め規定されたイベントは、カスタムコンポーネントの実行において捕捉されたプロパティであってもよい。予め規定されたイベントの属性の例は、コンポーネントの名称、イベントの名称、ペイロード、実行時間、通信言語、デバイスのプロパティ、オペレーティングシステムのプロパティ、ブラウザのプロパティ、アプリケーションのプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を、含み得る。コンポーネントの名称は、現在実行されているカスタムコンポーネントの名称であってもよい。イベントの名称は、呼び出され、invocation_failed、リプライされ、replied_failed等であってもよい。ペイロードは、失敗の場合、失敗の理由、スタックトレース等であってもよい。実行時間は、イベントが発生したときを示すタイムスタンプであってもよい。通信言語は、交わされているメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。ブラウザおよび/またはアプリケーションのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
カスタムコンポーネントは、カスタムコンポーネントの実行中にカスタムイベントを発行することもできる。カスタムイベントの属性の例は、コンポーネントの名称、イベントの名称、カスタムペイロード、実行時間、通信言語、デバイスのプロパティ、オペレーティングシステムのプロパティ、ブラウザのプロパティ、アプリケーションのプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を、含み得る。コンポーネントの名称は、現在実行されているカスタムコンポーネントの名称であってもよい。イベントの名称は、ユーザ既定のイベント名(たとえばBalance_Retrieved)であってもよい。ペイロードは、たとえば、{“amount”:“USD 100”,“account”:“checking”}であってもよい。実行時間は、イベントが発生した時間を示すタイムスタンプであってもよい。通信言語は、交わされているメッセージの言語であってもよい。デバイスおよび/またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。ブラウザおよび/またはアプリケーションのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
エラーイベントおよびタイムアウトイベントも、ボットシステムによって実行中に生成されてもよい。エラーイベントは、エラーが発生したときに生成されてもよい。タイムアウトイベントは、エンドユーザの会話が一定期間止まっているときに生成されてもよく、これはチャネルにおいて構成されてもよい。
ボット解析システムは、ボットシステムがエンドユーザとの会話を実行し対応するイベントを生成するときに、イベントおよび追加情報を収集することができる。たとえば、コレクタ255は、イベントおよび追加情報を収集し収集した情報をキューに送信することができる。いくつかの実施形態において、コレクタ255は、設定変更可能であり、上記さまざまなイベントおよび/またはイベント属性を要望通りに収集するようにプログラムすることができる。たとえば、コレクタ255は、ダイアログ状態属性、意図解明属性、エンティティ解明属性、ならびにエラーおよびタイムアウト属性を捕捉するように、構成されてもよい。いくつかの実施形態において、コレクタ255はまた、ボットシステム以外のシステムが生成したイベント295に関する情報を収集するように構成されてもよい。
エンリッチエンジン260は、収集されたイベントおよびその他の情報に対して妥当性確認およびエンリッチ化を実行しこれらをデータベース270に書き込むことができる。たとえば、エンリッチエンジン260は、収集されたIPアドレスに基づいて、このIPアドレスに対応付けられたエンドユーザの場所を判断することができる。別の例として、エンリッチエンジン260は、収集された情報から、エンドユーザが使用するウェブブラウザまたはチャネルの決定等の、特定の特徴を抽出することができる。RESTサーバ280は、エンリッチ化されたイベントおよびその他の情報を解析し特定の集約メトリクス272に基づいて各種レポートを生成することができる。レポートは、ボットシステムの所有者、管理者、または開発者に対し、UIサーバ290を通して、ユーザインターフェイス292上で表示することができる。ボットシステムの所有者、管理者、または開発者は、ボットシステムを改善するためにフィードバック294をボットシステムに提供することができる。
先に述べたように、エンドユーザの意図をユーザの発話に基づいて判断することができるユーザ意図分類エンジン(たとえばメッセージプロセッサ150または意図モデラー214)等のボットシステムを構築することは、難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さ、入力空間の寸法(たとえば起こり得るユーザの発話)、および出力空間のサイズ(意図の数)にある。いくつかのボットシステムにおいて、訓練発話および対応付けられる意図を用いて、ボットを訓練することにより、ユーザの発話に基づいて意図を特定することができる。たとえば、「靴を購入する」というユーザの意図の捕捉に興味があるかもしれない靴店のボットシステムにおいて、「靴を購入する」というハイレベルの意図を、ユーザ意図分類エンジンに与え、「私は靴を買いたい」、「私は一足の靴を探しています」、「私は靴が欲しい」等のような訓練句も、ユーザ意図分類エンジンを訓練するために与えることができる。いくつかの実施形態において、ユーザ意図分類エンジンは、句の例を拡張し句の例を用いることによりユーザ発話とマッチングすることを試みてもよい。たとえば、ユーザ意図分類エンジンは、「私はブーツを購入したい」という句を、「靴を購入する」という意図とマッチングさせることもできる。なぜなら、自然言語プロセッサ(たとえば自然言語プロセッサ152)は、ブーツ、靴、またはスリッパ間の意味論的距離は短くすべて同一の物のカテゴリを指していることを理解できるからである。このようなユーザ意図分類エンジンは、いくつかのチャットボットの対話に機能し得るが、より複雑なタスクを扱うことはできない。
上述の意図マッチングを用いる代わりに、いくつかのボットシステムは、低レベル解析結果(統語論的解析、エンティティ、キーフレーズ)を、特定ドメインのナレッジグラフと組み合わせることにより、ユーザの意図を特定することができる。ナレッジグラフ(またはオントロジ)は、意図、句、名詞、および形容詞をドメイン内のコンセプトに結び付ければよい。たとえば、ボットは、自然言語プロセッサを用いることにより、ユーザからの入力を解析し、解析結果を用いることにより、ナレッジグラフを通してナビゲートし、意味論的レベルでのユーザの意図を見出すことができる。そうすると、ユーザの意図を用いることにより、ユーザに対する最も適切な次の応答を決定することができる。
ナレッジグラフは、情報を取得してオントロジに統合し、これは、主語エリアまたはドメインにおける一組のコンセプトおよびカテゴリを含み、これらのプロパティおよびその間の関係を示す。場合によっては、ナレッジグラフは、推論器(reasoner)を適用して新たな知識を導き出すこともできる。ナレッジグラフは、場所、人々、物事、プロセス、アプリケーション、およびこれらの間の関係に関する事実を捕捉し、このような情報を用いることにより、たとえば、検索またはクエリを実行するユーザに、より関連性が高い情報を提供することができる。ナレッジグラフは、一般的に、ノードまたは頂点(エンティティを表す)間のラベル付けされたエッジ(関係を表す)を備えた有向グラフを用いてナレッジベースを表す。たとえば、ナレッジグラフは、(Obama, born in, Hawaii)、(Brazilian football team, has position, goalkeeper)といった、(主語、述語、目的語)の形式の一組の三つ組に基づいていてもよい。
図3は、ナレッジグラフの一例300を示す。ナレッジグラフ300は複数の頂点310を含み得るものであり、これらの頂点は、たとえば、場所(パリ等)、人々(ボブ、ビル、およびレオナルドダヴィンチ等)、物(エッフェル塔およびモナリザ等)、コンセプト(たとえば時間、年齢/時代、寸法、ならびに都市、人、および場所等の物のカテゴリ)、プロセス、アプリケーション等を表す。頂点310はラベル付けされたエッジ320によって接続されており、ラベル付けされたエッジは、接続されている頂点の各ペアについてこれら2つの頂点間の関係を説明している。エッジ320は、単方向または双方向の可能性がある。ある頂点310は、エッジ320が形成する経路を辿ってナレッジグラフ300をトラバースすることにより、別の頂点310から得ることができる。
図4A〜図4Dは、書籍またはWikipedia(登録商標)等のナレッジベースに基づいてナレッジグラフを構築するプロセスの一例を示す。図4Aにおいて、ストリング410(たとえば「レオナルドダヴィンチ」)は、ナレッジベースから得ることができる。図4Bにおいて、エンティティ420(たとえば「レオナルドダヴィンチ」)は、ストリング410から特定し認識することができる。図4Cにおいて、エンティティ420に関係するエンティティ432は、ナレッジベースから特定することができ、グラフ430に追加することができる。図4Dにおいて、エンティティ432間の関係は、ナレッジベースから判断することができ、エンティティ432間のエッジ442または接続としてグラフに追加することにより、複数のエンティティ432およびエッジ442を含むナレッジグラフ440を形成することができる。エンティティ432およびエッジ442は、(主語,述語,目的語)、(エンティティ,属性,値)の形態、またはその他の形態の、三つ組で表すことができる。エッジ442上のラベルは、エンティティ432間の関係を示すことができる。
ナレッジグラフ440は、より大きなスケールのナレッジグラフを構築するためのシードグラフとして用いることができる。たとえば、ナレッジグラフ440におけるエンティティ432のうちの関係があるエンティティと、ナレッジグラフ440における関係があるエンティティおよびエンティティ432間の関係とを、ナレッジベースまたは参照ナレッジベース(たとえば外部ナレッジベース)から特定してナレッジグラフ440に追加することにより、ナレッジグラフ440をさらに拡張することができる。ナレッジグラフ440の拡張は、たとえば、所定のドメイン内の知識が枯渇するまで続けることができ、結果として、所定のドメインについてのナレッジグラフが得られる。
自然言語で理解されるナレッジグラフのアプリケーションは、ナレッジグラフの関連するセクションを埋め込むことによる、質問への回答のようなQnA、またはディープ畳み込みニューラルネットワークが学習する報酬関数を用いて関連するクエリサブグラフを生成することを含む。ナレッジグラフは、たとえば、検索エンジンがユーザ検索に応答してより関連性がある情報を提供するために、または、チャットボットが上記意図分類を実行するために、使用することもできる。
チャットボットは、十分なデータを備えた特定のドメインにおいてより良好に機能することができる。所定のボットについて、ユーザが提供したデータセットは、たとえば約50〜100の発話しか含まない場合がある。この限られたデータセットは、ボットが適切に機能するために使用できるナレッジグラフを構築するには不十分な場合がある。WikiData、Freebase、DBpedia等のような参照ナレッジグラフまたはナレッジベースを用いることにより、特定のナレッジドメイン内の知識を拡張し、カスタマイズされたナレッジグラフを生成することができる。
いくつかの実施形態において、ナレッジグラフは、たとえば参照ナレッジグラフまたはその他のナレッジベースをランダムにウォークスルーし、たとえば参照ナレッジグラフまたはナレッジベースのノードが訪れられた頻度に基づいて、参照ナレッジグラフまたはナレッジベースから情報を選択することにより、拡張することができる。しかしながら、ランダムウォークによって生成されたナレッジグラフの品質は、チャットボットのようなアプリケーションには不十分である場合がある。たとえば、ランダムウォークにより生成されたナレッジグラフはノイズが多い場合がある。
特定の実施形態に従い、顧客データセット(たとえばユーザの発話、意図、エンティティ、および質問と回答(QnA)を含む)と、参照(たとえば外部)ナレッジベース(WikiData等)とを用いて、所定のドメイン(たとえば特定のボット)のためにカスタマイズされたナレッジグラフを構築する方法が開示される。カスタマイズされたナレッジグラフは、ドメイン固有であってもよく、2つの主要な段階を経て生成されてもよい。第1に、エンティティを、ユーザから提供された発話等の顧客データセットから抽出し、拡張のためのシードグラフとして使用できる最初のナレッジグラフの頂点またはノードとして使用することができる。抽出したこれらのエンティティとそれらの間のリンクとを用いてシードグラフを形成することで、カスタマイズされたナレッジグラフを初期化することができる。第2段階において、シードグラフ内のエンティティを参照ナレッジグラフをトラバースするための始点の頂点として参照ナレッジグラフにマッピングすることができる有限状態機械を用いて、参照ナレッジグラフをトラバースし、カスタマイズされたナレッジグラフに追加する候補エンティティを選択することにより、シードグラフを拡張することができる。次に、参照ナレッジグラフから選択した候補エンティティを、それらのプライオリティスコアに基づいてフィルタリングし、カスタマイズされたナレッジグラフに追加することができる。
図5は、特定の実施形態に係る、カスタマイズされたナレッジグラフ(たとえばチャットボット用)を構築するための方法の一例を示す簡略化されたフローチャート500である。図5に示され以下で説明される処理は、例示を目的としているのであって限定するものではない。図5は、特定のシーケンスまたは順序で発生する各種動作を示すものの、これは限定を意図しているのではない。特定の代替実施形態において、これらの動作は何らかの異なる順序で実行されてもよく、または、いくつかの動作は並列に実行されてもよい。さらに、この方法の実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはその任意の組み合わせで実現されてもよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実現される場合、対応付けられたタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体等のコンピュータ読取可能媒体に格納されてもよい。1つ以上のプロセッサが上記対応付けられたタスクを実行してもよい。
502において、コンピューティングシステムは、ユーザデータセットを受信することができる。ユーザデータセットは、たとえば、ユーザの発話、ユーザが規定したエンティティおよび意図、ユーザが提供した質問と回答等を含み得る。先に述べたように、いくつかの実施形態において、ユーザデータセットは、たとえば約50から約100の発話を含み得るものであり、各発話は対応付けられた意図でタグ付けされてもよく、タグ付けされなくてもよい。
504において、品詞(PoS)タグ付け(part-of-speech tagging)(たとえば、Kristina Toutanova et al., “Feature-Rich Part-of-Speech Tagging with a Cyclic Dependency Network,” Proceedings of HLT-NAACL 2003, pp. 252-259参照)、固有表現認識(named-entity recognition)(NER)(たとえば、Jenny Rose Finkel et al., “Incorporating Non-local Information into Information Extraction Systems by Gibbs Sampling,” Proceedings of the 43rd Annual Meeting of the Association for Computational Linguistics (ACL 2005), pp. 563-370参照)、たとえばCoreNLPを使用する句構造解析(constituency parsing)(たとえば、Manning et al., “The Stanford CoreNLP Natural Language Processing Toolkit,” Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics: System Demonstrations, 2014, pp. 55-60参照)等のような技術を用いて、ユーザの発話等のユーザデータセットから、エンティティを抽出することができる。いくつかの実施形態において、エンティティは、Dexter2技術(たとえば、Ceccarelli et al., “Dexter: an open source framework for entity linking,” Proceedings of the sixth international workshop on Exploiting semantic annotations in information retrieval, ACM 2013, pp. 17-20参照)等のエンティティリンク技術を用いて、ユーザデータセットから検出することができる。
506において、特定したエンティティ間の関係を、ユーザデータセットに基づき、たとえば、上記エンティティ抽出技術を用いて、特定することができる。特定したエンティティを、この関係を用いてリンクさせるまたは接続することにより、(シードグラフ内のノードまたは頂点としての)特定したエンティティと(頂点間のエッジとしての)特定したエンティティ間の関係とを含む、シードグラフを生成することができる。エッジは、エンティティ間のエッジの方向を含む有向エッジであってもよい。エッジは単方向または双方向の可能性がある。シードグラフは、少数の頂点を含むものであってもよく、エンティティ間の関係すべてを含まない可能性がある疎のグラフであってもよい。シードグラフは、1つ以上の弱く接続されているコンポーネント(weakly connected component)(WCC)を含み得るものであり、WCCは、一般的に、どのノードにも、その他任意のノードから出発し無向経路(すなわちエッジの方向を無視)を辿ってエッジをトラバースすることによって到達できるようにする、有向グラフの最大サブグラフを意味する。弱く接続されているコンポーネントにおけるノードはすべて、出次数または入次数が少なくとも1であってもよい。これに対し、強く接続されているコンポーネントは、すべてのノードからその他すべてのノードへの有向経路が存在するサブグラフを意味し得る。
508〜516において、シミュレートされたアニール最適化方法(たとえば、Nourani & Andresen, “A comparison of simulated annealing cooling strategies,” J. Phys. A: Math. Gen. 51. 1998, 8373-8385参照)を用い、エンティティおよび関係をシードグラフに徐々に追加することにより、繰り返しシードグラフを拡張することができる。各繰り返しにおいて、温度の値を、508において設定または調整することができる。以下で詳細に説明するように、温度は、ナレッジグラフに追加する候補エンティティのプライオリティスコアを求めるために使用することができる。
510において、以下でより詳細に説明するように、シードグラフ内の弱く接続されている各コンポーネントについて、弱く接続されているコンポーネントにおける各エンティティ(すなわち頂点)を、参照ナレッジグラフにマッピングし、参照ナレッジグラフをトラバースする際の始点となる頂点として使用し、有限状態機械を用いて最大M個までの候補エンティティを特定することができる。特定した候補エンティティのリソース記述フレームワーク(RDF)は、エントリとしてプライオリティキューに保存することができる。
512において、プライオリティキュー内のエントリを、温度の関数であるスコアリング関数を用いてスコアリングすることができる。いくつかの実施形態において、510で特定されてプライオリティキューに追加された候補エンティティの総数は、特定のしきい値数Nよりも多くてもよい。リザーバサンプリング(reservoir sampling)技術(たとえば、J. Vitter, “Random sampling with a reservoir,” ACM Trans. on Mathematical Software 11(1):37-57, Mar. 1985参照)等の技術を実施することにより、プライオリティキュー内のエントリ数をNまで減らすことで、ナレッジグラフのトラバースよりも計算上高コストとなる可能性がある、エントリのプライオリティスコアの計算時間を短縮してもよい。以下でより詳細に説明するように、プライオリティスコアは、N個のエントリにおけるN個の候補エンティティの各々と、候補エンティティに至る対応する経路とについて計算してもよい。
514において、プライオリティキュー内の最大N個のエントリから、最高のスコアを有するK個のエントリを選択することができ、K個のエントリにより特定される、対応するエンティティおよび関係を、シードグラフに追加することにより、シードグラフを拡張することができる。
516において、温度がしきい値を上回ると判断された場合、508〜514における動作を次の繰り返しにおいて再び実行することができ、その間、温度(したがってスコアリング関数)が変化する可能性があり、弱く接続されているコンポーネントにおけるエンティティは異なるかもしれない。なぜなら、シードグラフは、プライオリティキューにおける上位K個のエントリを用いて修正されているからである。温度がしきい値未満の場合、カスタマイズされたナレッジグラフの最適化は終了してもよく、カスタマイズされたナレッジグラフは、特定のボットまたは検索エンジン等の、ユーザデータセットに対応付けられたユーザアプリケーションのために、使用することができる。
表1は、図5に関して先に述べた方法のような、カスタマイズされたナレッジグラフを生成する方法を実現するための疑似コードの一例を示す。表1の疑似コードは、参照ナレッジグラフをトラバースするために使用される有限状態機械の一例を示す。表1において、疑似コードの第1行は、ユーザデータセット(たとえばユーザの発話)に基づいてエンティティとエンティティ間のリンクとを特定することに関する。疑似コードの第2行は、シードグラフの作成に関する。第3行は、シードグラフを拡張してカスタマイズされたナレッジグラフを生成するための、シミュレートされたアニールプロセスの初期状態を設定するために使用され、これは、温度およびプライオリティキューの初期化を含む。第4〜23行は、シミュレートされたアニールプロセスの各温度で実行される動作に関し、第5〜15行は、以下でより詳細に説明するように、有限状態機械を用いて参照ナレッジグラフをトラバースすることにより候補エンティティを特定し、候補エンティティのRDFという三つ組をエントリとしてプライオリティキューに保存することを記述している。第16〜17行は、プライオリティキュー内のエントリの数がしきい値数Nよりも大きい場合に、プライオリティスコア計算のためにプライオリティキュー内のエントリの数を減じることに関する。第18〜22行は、プライオリティキュー内のエントリのプライオリティスコアを計算すること、および、プライオリティスコアが最大である上位K個のエントリを用いることによりシードグラフを拡張することに関連する。温度は第23行で更新される。
図3および表1に関連して先に述べた方法は、一般的に、(1)ユーザが提供する発話からエンティティを抽出し、抽出したエンティティとエンティティ間のリンクとに基づいてシードグラフを構築することと、(2)有限状態機械を用いて参照ナレッジグラフを繰り返しトラバースすることによりシードグラフを拡張することとを含み、これらの各々について以下で詳細に説明する。
一組の未処理の文(たとえば発話)等のユーザデータセットからエンティティを抽出しナレッジグラフの頂点として使用することができ、エンティティ間の既存の関係を判断しナレッジグラフ内の頂点間のエッジとして使用することができる。たとえば、図5の504に関して先に述べた、品詞タグ付け、固有表現認識、およびCoreNLP技術を使用する句構造解析を、発話に対して実行することにより、候補エンティティリストを生成することができる。品詞タグ付け技術は、単語を、名詞、動詞、形容詞、副詞、代名詞その他等の、その適切な品詞でラベル付けすることを含む。固有表現認識(エンティティ識別、エンティティチャンキング、またはエンティティ抽出としても知られる)は、構造化されていないテキスト内の固有表現の場所を特定し、名前、組織、場所、メディカルコード、時間表現、数量、金銭的価値、百分率その他等の、予め定められたカテゴリに分類することを含む。句構造解析は、句構造に基づいた解析木を文から抽出することにより、句構造文法に従ってこの文の統語構造を表現することを含む。たとえば、「John hit the ball」という文の、句構造に基づいた解析木は、この文(S)から始まりリーフノード(John, hit, the, ball)の各々で終わってもよい。この場合、「John」は名詞(N)ノードであってもよく、「hit」は動詞(V)ノード(この例では他動詞)であってもよく、「the ball」は分岐ノードである名詞句(NP)であってもよく、「the」は限定詞(DまたはDT)ノードであってもよく、「ball」は名詞(N)ノードであってもよい。
いくつかの実施形態において、候補エンティティリストを生成するときに、以下の前処理ルールを適用してもよい。すなわち、(a)NERがナルでないことを確認するとともに、単語が名詞句(たとえば「apple tree」または「the ball」)の一部でありNERでタグ付けされていることを確認し、(b)固有名詞(NNPであり、特定の人、場所、物、またはアイデア、たとえば「John」を指定する)がNPに支配されている(すなわちNPは意味論的構文木においてNNPの親)場合、マッチ(抽出されたエンティティ)を確認し、(c)普通名詞(NNであり、特定でない人、場所、物、またはアイデアを指定する一般名詞、たとえば「机」)がNPに支配されている(すなわちNPは意味論的構文木においてNNの親)場合、マッチ(抽出されたエンティティ)を確認し、(d)人称代名詞(PRP、たとえば「I」、「he」または「she」)および上記からの限定詞(DT)をストライピングし、(e)NERフレーズをチャンクに分割し、(f)NER句から数および日付を削除する。たとえば、上記ルールを「How much did I spend from my checking account on ServiceA?」という文に適用すると、[「checking account」, 「ServiceA」]を含む候補エンティティのリストが得られる。別の例において、上記ルールを「I want to go to an outdoor cafe on Pioneer Day」という文に適用すると、[「Pioneer Day」, 「outdoor cafe」, 「outdoor cafe on Pioneer Day」]を含む候補エンティティのリストが得られる。
いくつかの実施形態において、上記Dexter2技術を用い、エンティティに並列に言及するテキストを検出することにより、候補エンティティのリストを生成してもよい。次に、2つの候補エンティティリストを組み合わせて1つの候補エンティティリストを生成してもよい。その後、組み合わせた候補エンティティリストを用いることにより、ナレッジグラフ生成のためのシードグラフを生成してもよい。
いくつかの実施形態において、Dexter2技術を用いることにより、候補エンティティを、WikiData等の参照ナレッジグラフ内の対応するエントリにリンクさせてもよく、この場合、Dexter2技術を用いることにより、候補エンティティをたとえばWikipediaエントリにリンクさせ、その後、WikipediaエントリをWikiDataエントリにマッピングしてもよい。たとえば、文例「How much did I spend from my checking account on ServiceA?」から抽出したエンティティ(および対応するWikiData ID)は、「ServiceA」(Q780442)および「checking account」(Q695430)を含み得る。別の例において、文例「Michael Jordan played basketball at an outdoor cafe on Pioneer Day」から抽出されたエンティティ(およびそれらのWikiData ID)は、「cafe」(Q30022)、「Pioneer Day」(Q254295)、「basketball」(Q5372)、「Michael Jordan」(Q41421)、および「outdoor」(Q3312129)を含み得る。いくつかの実施形態において、Mediawiki Webservice APIを用いることにより、上記方法でマッチしないエンティティを検索することができる。
表2は、上記方法のような、ユーザデータセット(たとえば発話)からエンティティを抽出しシードグラフを構築するための方法の一例を示す。表2に示される動作1において、たとえば、上記品詞タグ付け、固有表現認識、またはCoreNLP技術を用いる句構造解析を用いて、ユーザ発話の未処理の文からエンティティを抽出する。
動作2において、先に述べたように、一組の前処理ルールを適用することにより、候補エンティティリストを生成することができる。前処理ルールは、たとえば、(a)固有表現認識がナルでないことを確認するとともに単語が名詞句の一部であることを確認すること、(b)固有名詞がNPに支配されている場合(すなわちNPは意味論的解析木においてNNPの親)、マッチ(抽出されたエンティティ)を確認すること、(c)普通名詞がNPに支配されている場合(すなわちNPは意味論的解析木においてNNの親)、マッチを確認すること、(d)上記からの代名詞(PRP)および限定詞(DT)をストライピングすること、(e)NER句をチャンクに分割すること、および(f)NER句から数および日付を削除することを、含み得る。上記の動作後の最終リストは、個々のルールの各々についての一組の結果である。
動作3において、上記前処理ルールに基づいて、動作1における発話の構文解析の結果と、上記Dexter2.0フレームワーク等のエンティティリンク技術で生成した候補エンティティリストとから、グラフルックアップクエリを決定することができる。本明細書で使用される、エンティティ・リンキングは、一般的に、曖昧さがあるときに、エンティティを正しいナレッジベースエントリとマッチングさせることを意味し得る。一例として、「On July 20, 1969, the Apollo 11 astronauts Neil Armstrong, Michael Collins, and Edwin ‘Buzz’ Aldrin Jr. realized President Kennedy’s dream」という文から、「Apollo 11(アポロ11号)」(宇宙飛行ミッション)、「astronauts(宇宙飛行士)」、「Neil Armstrong」(宇宙飛行士)、「Michael Collins」(宇宙飛行士)、「Edwin ‘Buzz’ Aldrin」(宇宙飛行士)、および「John F. Kennedy」、というグラフルックアップクエリを決定することができる。別の例において、「Michael Jordan played for the Chicago Bulls」という文から、「Michael Jordan」(バスケットボール選手)および「Chicago Bulls」というグラフルックアップクエリを決定することができる。Dexter2技術を使用することにより、グラフルックアップクエリを、参照ナレッジグラフ(たとえばWikiData)等の参照ナレッジベース内の対応するエントリにリンクさせることもできる。たとえば、Dexter2技術を用いることにより、グラフルックアップクエリをWikipediaエントリにリンクさせ、次に、WikipediaエントリをWikiDataエントリにマッピングすることができる。
動作4において、参照ナレッジベースエントリとマッチしない各エンティティについて、たとえば、Dexter2.0を用いて、エンティティ・リンキングおよび/または参照ナレッジベースからの情報フェッチのために、Mediawiki Webservice APIをコールすることができる。いくつかの実施形態において、動作5で、戻されたWikiDataエンティティIDを、たとえば、Redisを用いてキャッシュすることにより、将来のAPIコールを減じることができる。
動作6において、各発話におけるすべてのエンティティについて、可能性のあるすべての組み合わせ(Nは2つの組み合わせを選択)を確認することができる。発話のエンティティのうちの2つの間にリンクが存在する場合、リンクをシードグラフに追加することができる。動作6の最後において、シードグラフG=(V,E)が生成されてもよく、頂点Vは、特定された一組のエンティティを含み、エッジEは、エンティティのうちのいずれか2つの間のリンクを含む。2つのエンティティ間のリンクの確認は、ユーザデータセット全体のエンティティに対して行うこともできる。
先に述べたように、ユーザデータセットは、約50〜100の発話のように、小さい場合がある。そのため、シードグラフは、約50〜100のエンティティのように、少数のエンティティしか含まない場合がある。加えて、シードグラフにおけるエンティティ間のリンクは疎らである可能性がある。シードグラフは、特定のチャットボット等の所定のドメインに役立つ追加情報を含むように拡張する必要がある場合がある。特定の実施形態に従うと、有限状態機械を用い、WikiData等の参照ナレッジグラフをトラバースすることにより、カスタマイズされたナレッジグラフを生成するためにシードグラフに追加することができる追加情報(たとえばエンティティおよびリンク)を特定することができる。いくつかの実施形態において、プライオリティキューおよびプライオリティ関数を用いることにより、ナレッジグラフに追加すべきエンティティおよび/またはリンクを決定することができる。いくつかの実施形態において、シミュレートされたアニールプロセスを用いることにより、カスタマイズされたナレッジグラフを繰り返し最適化することができる。方法の一例を表3に示される疑似コードで説明する。
表3の疑似コードで示される方法の動作1において、シミュレートされたアニールプロセスを、初期温度を設定し、プライオリティキューを初期化する、たとえば空のプライオリティキューを作成することにより、開始することができる。
動作2(a)において、シードグラフGの弱く接続されている各コンポーネントwgにおける各エンティティを、WikiData等の参照ナレッジグラフにマッピングすることができ、有限状態機械を用いることにより、弱く接続されているコンポーネントwgにおける各エンティティからの参照グラフのトラバースを制御して、候補エンティティを特定しプライオリティキューバッファ(たとえばキャッシュ)にエントリとして保存することができる。たとえば、トラバースされる頂点が曖昧性除去頂点である場合、状態機械は曖昧性除去状態に進むことができ、トラバースされる頂点が禁止頂点である場合、状態機械は禁止状態に進むことができ、トラバースされる頂点がエンティティ頂点である場合、状態機械はエンティティ状態に進むことができ、エンティティ状態が、弱く接続されている各コンポーネントwgについてM回訪れられている場合、状態機械は「終了」状態に進むことができる。本明細書で使用される曖昧性除去頂点は、同一または同様のラベルを共有する複数のエントリを区別するナレッジグラフエントリまたはナレッジベースエントリを意味する。本明細書で使用される禁止頂点は、カスタマイズされたナレッジグラフの疎の状態を増すかまたはカスタマイズされたナレッジグラフに意味のある情報を与えないかのいずれかであるナレッジグラフ(たとえばWikidata)の頂点を意味し、したがって、カスタマイズされたグラフに追加するのに適さない。禁止頂点は、たとえば、日付および/または時間(たとえば期間、時点等)、その他の参照ナレッジベース識別子(IMDb、Freebase等)へのリンク、Wikimediaプロジェクト、記事、およびリストページ、主要なWikimediaナレッジツリーの外部のページ、ならびに複製およびリダイレクトされたエントリを含み得る。
図6は、特定の実施形態に係る、シミュレートされたアニールプロセスの各繰り返しにおいて参照ナレッジグラフのトラバースを制御するための有限状態機械(FSM)の一例600を示す。FSM600の開始状態610において、トラバースは、参照ナレッジグラフ内のある頂点で開始されてもよく、この頂点は、シードグラフGにおいて弱く接続されているコンポーネントwgにおけるエンティティに対応し得る。
開始頂点に接続された次の頂点が曖昧性除去頂点である場合、FSM600は曖昧性除去状態640に移ることができる。たとえば、WikiDataにおける曖昧性除去頂点に到達するたびに曖昧性除去状態640に到達することができる。次の頂点が曖昧性除去頂点ではなく禁止頂点である場合、FSM600は禁止状態630に移ることができる。曖昧性除去頂点でも禁止頂点でもない参照ナレッジグラフ(たとえばWikiData)内のエントリは、エンティティwであり、FSM600をエンティティ状態620に移動させることができる。この場合、エンティティwのリソース記述フレームワーク(RDF)をプライオリティキューバッファ(たとえばキャッシュ)に追加することができる。RDFは、たとえば、主語−述語−目的語の形態の三つ組であってもよい。主語はリソースを示すことができ、目的語はリソースの特性または様相を示すことができ、述語は主語と目的語との関係を示すことができる。
エンティティ状態、曖昧性除去状態、および禁止状態の間で起こり得るすべての移行は、禁止状態630から禁止状態630に戻る移行を除いて認められ得るものである。なぜなら、禁止頂点を通ってナレッジグラフに達する任意の経路を追加することは望ましくないからである。このプロセスを通して、ユーザデータセット(およびシードグラフ)におけるエンティティのうちの、極めて近接するエンティティを特定してもよく、曖昧性除去頂点を用いてグラフ検索を拡張してもよく、禁止頂点は無視してもよい。終了状態650に達するのは、エンティティ状態620が、弱く接続されているコンポーネントwgの各々についてM回訪れられたときに、または、トラバースするその他の直接または間接的にリンクされた頂点が他にないときである可能性がある。繰り返しにおける参照ナレッジグラフのトラバースは、終了状態650で停止することができる。
一例において、開始頂点が、参照ナレッジグラフ内の頂点「Obama」へのリンクを有する場合、FSM600は開始状態610からエンティティ状態620に移ることができ、頂点「Obama」のRDFをプライオリティキューバッファ(たとえばpq_cache)に追加することができる。頂点「Obama」に、「America」(たとえば「president of」という関係でリンクされている)と「20 January 2009」(たとえば「開始時間」という関係でリンクされている)という2つの頂点がリンクされている場合、頂点「20 January 2009」がトラバースされるとFSM600は禁止状態630に行くことができる。なぜなら、日付および時間頂点は禁止頂点であるからである。トラバースされる次の頂点は、有効なエンティティである頂点「America」である。したがって、FSM600は、再びエンティティ状態620に移り「America」についてのRDFをプライオリティキューバッファpq_cacheに追加することができる。このプロセスは、頂点を「America」におよび/またはシードグラフGの弱く接続されているコンポーネントwgにおけるその他のエンティティにリンクさせた状態で、エンティティ状態620が訪れられる回数がM回に達するまで、または、トラバースすべきその他の直接または間接的にリンクされた頂点がないときに、繰り返すことができる。
表3の動作2(b)において、温度の関数であるスコアリング関数を用いてプライオリティキューバッファ内の各エントリについてプライオリティスコアを計算することができる。いくつかの実施形態において、繰り返しの間に訪れられたエンティティの総数がしきい値Nを超えた場合、図5の512に関して先に述べたリザーバサンプリング技術を実行することにより、プライオリティキューバッファ内のエンティティの数をNまで減らすことで、プライオリティスコアの計算を少なくすることができる。これは時間最適化を目的として実行されてもよい。なぜなら、プライオリティスコアを計算することは、有限状態機械を用いてナレッジグラフをトラバースすることよりも、計算上高コストとなる場合があるからである。
たとえば、繰り返しにおける動作2(a)において候補エンティティが特定され対応するRDF三つ組がプライオリティキューバッファに保存された後に、プライオリティ関数に従い、プライオリティキュー内の各エンティティeおよびエンティティeに到達するために辿る対応する経路について、プライオリティスコアを計算することができる。
式中、WCC(G')は、グラフ内の弱く接続されているコンポーネントを特定するために使用される、弱接続コンポーネント関数であり、tは、現在の時間ステップであり、T(t)は、時間tにおける温度であり、k、ηおよびZは、実定数であり、G’は、グラフGと(w,e)間の一組のエッジとの合併により形成される新たなグラフである。新たなグラフG’は以下のように表すことができる。
ρ(G)は、グラフ密度に対応し、以下に従って求めることができる。
式中、GはエッジEおよび頂点Vを有するグラフであり、|E|はグラフG内のエッジの数であり、|V|はグラフG内の頂点の数である。
表3の動作2(c)において、プライオリティキュー内で最大のプライオリティスコアを有するエントリを選択してシードグラフGに追加することができる。動作2(d)において、シミュ―レートされるアニールプロセスの温度を更新することにより、動作2の処理の新たな繰り返しを開始することができる。時間ステップtにおける温度はたとえば次のようにして求めることができる。
冷却スケジュールは、式(1)に示されるプライオリティ関数に対するその効果に基づいて選択することができる。式(1)に示されるプライオリティ関数は、弱く接続されているコンポーネントにおけるエンティティの数を増加させるために、温度が高いときに新たな頂点を追加することを優先させることができる。システムが冷却されるのに応じて、プライオリティ関数は、グラフに既に存在する頂点間により多くのエッジを追加するために、グラフ密度に対してより大きな重みを置くことができる。プライオリティ関数の2つの部分は、同様の大きさになるように、何らかの係数(たとえばZおよびη)によって正規化することができる。
図7は、特定の実施形態に係る、たとえば表2に関して先に述べた、ユーザデータセット(たとえばユーザ発話)に基づいて生成されたシードグラフの一例700を示す。この例において、シードグラフ700は、ウェブアプリケーションとそれらの親企業との間の関係を説明している。シードグラフ700は、(Wikipedia IDからWikiDataラベルに変換された)<SoftwareA, part of, CompanyA>等のRDF三つ組に基づいていてもよい。図示のように、シードグラフ700は、エンティティ710が極めて少なくエンティティ710間のリンク720が極めて少ない、疎のグラフであってもよい。リンク720はエンティティ710間の関係でラベル付けされる。図7は、専らシードグラフ700の疎の状態の例示を目的としているのであって、シードグラフ700の具体的な内容は読み易さを意図している訳ではない。
図8は、シードグラフ700と表3に関して先に述べた技術とに基づいて生成された、カスタマイズされたナレッジグラフの一例800を示す。図9は、ナレッジグラフ800の一部810の拡大図である。図8および図9は、専ら例示を目的としているのであって、シードグラフ800の具体的な内容は読み易さを意図している訳ではない。シードグラフ700と比較すると、ナレッジグラフ800には、遥かに多くのエンティティ820とエンティティ820間のリンク830とがあってもよい。ナレッジグラフ800は、ウェブアプリケーションおよび周辺のコンセプトに関する各種情報を含む。いくつかの例は、<Internet Message Access Protocol, part of, email>、<email filtering, instance of, anti-spam>、<RunKeeper, instance of, mobile app>、<RunKeeper, operating system, Android>、および<CompanyA, country, United States of America>を含む。また、ナレッジグラフ800は、たとえば<alternative rock, subclass of, rock music>および<calendar, instance of, chronology>等の、データセットのドメインに直接関係がない可能性がある何らかの情報を含み得る。場合によっては他のドメインからのこのような情報により、このグラフは、まだ見ていないデータが与えられたときにより簡単に一般化することができる。
ナレッジグラフ800を形成するRDF三つ組(「主語|述語|目的語」というフォーマット)のいくつかの例は、「CompanyA Street View | developer | CompanyA」、「email filtering | instance of | anti-spam」、「BugMeNot | instance of | service on internet」、「CompanyB | country | United States of America」、「CompanyC.com | software engine | ProductC」、「RunKeeper | operating system | Android」、「RunKeeper | instance of | mobile app」、「ServiceA | instance of | online dating service」、「Internet Message Access Protocol | part of | email」、「software release life cycle | instance of | software engineering」、「CompanyD | owned by | CompanyE」、「CompanyF | parent organization | CompanyG」、「G Suite | industry | email」、「ProductA | publisher | CompanyH」、「ProductA | developer | CompanyH」等を、含み得る。
表4は、参照ナレッジグラフを用いた拡張の前後のナレッジグラフの例の統計結果を示す。この統計は、たとえば、頂点の数、エッジの数、グラフ密度、およびデータセット内の弱く接続されているコンポーネントの数を含む。表4に示されるように、開始頂点の数が多いデータセットの場合、上記技術は、多数の新たな頂点を追加しなくてもよく、より多くのエッジを追加すればよい。SNIPSの場合、頂点の数およびエッジの数は増加しているが、グラフ密度は低下している。なぜなら、SNIPSは限られたナレッジドメインデータセットではないからである。しかしながら、より小さなシードグラフの場合、相当数の新たな頂点を追加することができる。その理由は、より大きなデータセットの場合、シードグラフについて特定されるエンティティは、参照ナレッジグラフ上で極めて近接している可能性があるからであろう。加えて、開始頂点が多い場合、参照ナレッジグラフをトラバースする間に、多数の新たな頂点を発見しないかもしれないが、代わりにこれらのエンティティ間の新たな関係を発見できる可能性が高い。一方、より小さなデータセットしたがってより小さなシードグラフの場合、この技術はより多くの新規頂点を発見する可能性が高い。
ナレッジグラフは、自然言語理解に関連する多数の用途で使用することができる。たとえば、ナレッジグラフ埋め込み(knowledge graph embedding)(KGE)技術は、エンティティと関係とを含むナレッジグラフのコンポーネントを、連続ベクトル空間に埋め込むことにより、操作を簡略化しつつ、ナレッジグラフの固有の構造を維持することができる。次に、エンティティおよび関係の埋め込みを、たとえば、ナレッジグラフの完成、関係の抽出、エンティティの分類、エンティティの解明、質問回答等に、使用することができる。
一般的に、KGE技術は、エンティティおよび関係を連続ベクトル空間において表し、次に、各事実およびその他の情報(たとえばエンティティの種類、関係の経路、テキスト記述、またはロジックルール)に対して距離または類似性に基づいたスコアリング関数を用いることにより、そのもっともらしさを測定する。次に、エンティティおよび関係の埋め込みは、観察された事実の総合的なもっともらしさを最大化することにより、得ることができる。ナレッジグラフ埋め込みは、単語ベクトルと比較して、より意味論的な意味を含み得るものであり、単語ベクトルに基づいて特徴表現を増強するために使用することができる。KGEは、たとえば、複数単語のトークン(たとえば句)の意味論的意味を捕捉し、特に固有の重要な単語が多数存在する小さなデータセットにおける、単語ベクトルがない単語等の語彙外(out-of-vocabulary)(OOV)単語を用いてデータセットに対する予測能力を改善することにより、典型的な単語ベクトルを超えたエンティティの意味論的表現を捕捉することができる。
先に述べたように、チャットボットは、会話の相手としての人の振る舞い方をシミュレートすることにより、聴覚またはテキスト方法を通して会話を実施することが可能な、コンピュータプログラムまたはアプリケーションである。チャットボットは、顧客サービスまたは情報取得を含む、さまざまな実用的な目的のために、ダイアログシステムにおいて使用することができる。いくつかのより単純なチャットボットは、入力内のキー単語をスキャンし、次に、データベースから、最も良くマッチするキーワードまたは最も似ている言葉遣いのパターンを有する返答を引き出すことができる。いくつかのチャットボットは、より高度な自然言語処理技術を用いることで、より厳密に人をシミュレートすることができる。
特定の実施形態に従うと、ナレッジグラフ埋め込みは、入力された自然言語発話が与えられて、ユーザが実行したいアクションをたとえばチャットボットが判断することをタスクが含み得る場合に、意図分類に使用することができる。チャットボットは、たとえば上記方法を用いて生成したカスタマイズされたナレッジグラフから抽出されたナレッジグラフ埋め込みと単語ベクトルとの双方を用いることにより、ユーザ意図分類のパフォーマンスを改善することができる。
特定の実施形態に従うと、TransE技術(たとえば、Bordes et al., “Translating Embeddings for Modeling Multi-relational Data,” Advances in Neural Information Processing Systems 26. Curran Associates, Inc., 2013, pp. 2787-2795参照)およびその拡張等の、並進距離技術を用いることにより、WikiDataに対する埋め込みを事前訓練することができる(たとえば、Vrandecic & Krotzsch, “Wikidata: A Free Collaborative Knowledgebase,” Communications of the ACM 57:10, 2014, pp. 78-85参照)。なぜなら、並進に基づいたモデリング技術は、意図特定用途に良く適合するからである。TransEは、エンティティの低次元埋め込みを学習するための、エネルギーに基づくモデルであり、この場合、関係は埋め込み空間内の並進として表される。すなわち、(h,r,t)が成立する(たとえば適切なRDFである)場合、テールエンティティtの埋め込みは、ヘッドエンティティhの埋め込みと関係r(t≒h+r)に依存するベクトルとの合計に近い。そうでなければ、テールエンティティtの埋め込みは、ヘッドエンティティhの埋め込みと関係rに依存するベクトルとの合計から、非常に遠くなる。
KGE技術(たとえば並進距離または類似性に基づくKGE技術)は、一般的に、3つの動作(1)エンティティおよび関係を表現すること、(2)スコアリング関数を定義すること、および(3)エンティティおよび関係の表現を学習することを、含む。第1の動作は、エンティティおよび関係の、連続ベクトル空間内での表現形態を特定する。エンティティは、通常、ベクトル空間内の決定論的ポイントのような、ベクトルとして表される。関係は、一般的に、ベクトル、行列、テンソル、多変量ガウス分布、またはガウス関数の混合として表すことができる、ベクトル空間内の動作であると解釈される。第2の動作において、スコアリング関数fr(h,t)を各事実(h,r,t)に適用することにより、そのもっともらしさを測定する。たとえば、TransE技術において、スコアリング関数は、h+rとtとの間の負の距離として定義することができる。
ナレッジグラフで観察された事実は、一般的に、観察されていない事実よりも高いスコアを有する。第3の動作は、観察された事実の総合的なもっともらしさを最大化することにより、エンティティおよび関係の表現(たとえば埋め込み)を学習する、最適化プロセスを含む。
いくつかの実施形態において、グラフGにおけるすべてのエンティティおよび対応する関係について、最初に、埋め込みを、事前訓練された埋め込みを用いて初期化し、次に、TransE技術のような技術と、異なるスコアリング関数とを用いて、再訓練することができる。たとえば、再訓練プロセスのためのスコアリング関数は、式(5)から以下の式に変更することができる。
式中、θrは、生成されたグラフに属するエンティティおよび関係についての重みである。この重み付けされたスコアリング関数は、TransM(たとえば、M. Fan et al., “Transition-based knowledge graph embedding with relational mapping proper- ties,” in Proc. 28th Pacific Asia Conf. Language Inf. Comput., 2014, pp. 328-337参照)から着想を得たものであり、グラフGにおけるエンティティおよび関係により大きな重みを与える。最大マージンヒンジ損失関数を、TransEのオープンワールド訓練パラダイムに従い、使用することができる。埋め込みは、以下の傾斜について更新することができる。
式中、||h||2=1であり、||t||2=1である。式(7)は、最大マージンヒンジ損失関数を含み得るものであり、ハイパーパラメータγは、マージン(>0)である。グラフGのエンティティおよび関係の埋め込みが疎になり過ぎないようにするために、追加の正則化項が式(7)に含まれており、λは、正則化強度(>0)である。TおよびT’はそれぞれ、各ミニバッチにおける訓練トリプルおよび破損トリプルを意味する。これは、転移学習プロセスとしてモデル化され、グラフ埋め込みの再訓練は、ナレッジグラフ内にあるエンティティおよび関係により大きな重みを与えることで、生成されたナレッジグラフのベクトルを微調整するのに、役立ち得る。このプロセスは、埋め込みにおけるノイズを減じること、および、1対1ではない関係をモデリングする際のTransEの弱点を補償することを、このような1対1ではない関係の可能性が低い生成されたグラフの構成要素を優先することで、可能にし得るものである。
表5は、たとえば意図分類のために上記ナレッジグラフの埋め込みを使用する方法の一例を示す。
表5に示される例では、動作1において、たとえばWikidataについて埋め込みを事前訓練することができる。動作2において、ナレッジグラフGにおけるすべてのエンティティおよび対応する関係について、動作1で得た事前訓練された埋め込みを用いて埋め込みを初期化することができ、次に、TransE技術のような技術と、異なる、重み付けされたスコアリング関数とを用いて、再訓練することができる。動作3において、所定の発話について、この発話におけるすべてのエンティティを、表2について先に述べたエンティティ抽出およびリンキングプロセスを用いて抽出することができる。次に、文におけるエンティティについて(上記計算した)すべてのエンティティ埋め込みを平均する。また、並行して文をクリーニングする(たとえばトリミング、ヴォキャブラリー単語を削除、数字および未知の文字を削除する等)ことにより、疎の状態を減じることができ、この文の残りの単語についてGloVeベクトル(たとえば、Pennington et al., “Glove: Global vectors for word representation,” Proceedings of the Empirical Methods in Natural Language Processing (EMNLP), 2014参照)を平均することができる。次に、この文について平均したGloVeベクトルおよび平均ナレッジグラフ埋め込みを連結し、たとえば、Goikoetxea et al., “Single or multiple? combining word representations independently learned from text and wordnet,” Proceedings of AAAI, 2016に示されるように、主成分分析(principal component analysis)(PCA)を、連結したベクトルに対して実行することができる。動作4において、PCA後に、連結されたベクトルを、意図分類のために分類器に送ることができる。
表6は、表5に関して先に述べた、ナレッジグラフ埋め込み技術および平均GloVeベクトル技術を用いて、訓練時間およびクエリ時間を示す。KGE訓練時間は、キャッシュ無しの最初の実行についてのものである。後続の実行の方が高速であろう。
また、アブレーション研究が、プロセス全体のうちのどの側面が精度およびF1スコアの増大に寄与するかを判断するために使用される。技術の5つの変形について実験を行った。変形Var1では、ハイパーパラメータの最適化(すなわちグリッドサーチ)を実施せず、ハイパーパラメータをある範囲内でランダムに選択する。変形Var2では、ナレッジグラフを、頂点と、入力発話で発見されたエンティティ間のエッジ(関係)のみとを用いて初期化する。変形Var3では、本開示に記載の有限状態機械ではなく、最大深さ5の参照ナレッジグラフの1ホップランダムウォークトラバースを使用する。変形Var4では、入力発話における各単語についてGloVeベクトルを平均することで、特徴ベクトルが生成される。変形Var5では、表5に関して述べたようなナレッジグラフ埋め込みの再訓練は行われず、WikiDataについて事前訓練されたTransE埋め込みが代わりに使用される。これらの5つの変形のF1スコアおよび精度の結果が、表7に示され、これらの変形のいずれも適用せずに得られた結果と比較される。
アブレーション研究の結果は、ハイパーパラメータの最適化がもたらす精度の改善は少ないかもしれないが(表7のVar1とフルアルゴリズムとの比較により示される)、これは本明細書に開示されている他の技術の寄与と比較すると重要ではないことを、示している。ランダムウォークトラバース(変形Var3)および平均GloVeベクトル(変形Var4)の場合のパフォーマンス低下は、ナレッジグラフ埋め込みが分類プロセスにおいてより関連性の高い情報を捕捉できることを示している。特に、F1スコアは精度よりも大幅に低下する。このことは、発話に関するより意味論的な情報が特徴ベクトル内に存在する可能性があることを示し得るものであり、結果として、フォールスポジティブおよびフォールスネガティブを少なくすることができる。ナレッジグラフを初期化する方法および参照ナレッジグラフをトラバースする方法のいずれもが、結果に大きな影響を与える。ナレッジグラフ埋め込みを再訓練することも、パフォーマンスを改善することができ、このことは、生成されたナレッジグラフの構成要素を優先するように埋め込みを再訓練することが、エンティティおよび関係のモデル化に役立ち得ることを示している。
本明細書に記載されている技術は、1つ以上の処理ユニット(たとえばプロセッサ、コア)、ハードウェア、またはその組み合わせによって実行されるソフトウェア(たとえばコード、命令、プログラム)において実現されてもよいソフトウェアは、メモリに(たとえばメモリデバイス等の非一時的なコンピュータ読取可能記憶媒体に)格納されてもよい。本明細書に記載の技術は、クラウド環境(たとえばプライベート、パブリック、およびハイブリッドクラウド環境を含む各種クラウド)、オンプレミス環境、ハイブリッド環境などを含む、さまざまな異なる環境で実現することができる。
図10は、ある実施形態を実現するための分散型システム1000の簡略図を示す。示されている実施形態において、分散型システム1000は、サーバ1012を介して1つ以上の通信ネットワーク1010に結合された1つ以上のクライアントコンピューティングデバイス1002、1004、1006、および1008を含む。クライアントコンピューティングデバイス1002、1004、1006、および1008は、1つ以上のアプリケーションを実行するように構成し得る。
各種実施形態において、サーバ1012は、あるアプリケーションのユーザインターフェイスコンポーネントと、データオブジェクトとの間に、このアプリケーションに関する要求情報を用いて、関係またはマッピングを自動的に生成する1つ以上のサービスまたはソフトウェアアプリケーションを実行または提供するのに適するようにすることができる。たとえば、特定の実施形態において、サーバ1012は、あるアプリケーションについての要求情報を受けてもよく、この要求情報は、アプリケーションの所望の機能の記述を含み得るものであり、また、アプリケーションの所望のGUIの画像を含み得る。そうすると、サーバ1012は、この要求情報を用いることにより、アプリケーションのユーザインターフェイスコンポーネントと1つ以上のデータオブジェクトとの間にマッピングを生成することができる。
特定の実施形態において、サーバ1012はまた、非仮想または仮想環境に提供し得るその他のサービスまたはソフトウェアアプリケーションを提供することができる。いくつかの実施形態において、これらのサービスは、サービスとしてのソフトウェア(Software as a Service)(SaaS)モデルのようなウェブベースまたはクラウドサービスとして、クライアントコンピューティングデバイス1002、1004、1006、および/または1008のユーザに提供されてもよい。そうすると、クライアントコンピューティングデバイス1002、1004、1006、および/または1008を操作しているユーザは、1つ以上のクライアントアプリケーションを利用することにより、サーバ1012とやり取りして、これらのコンポーネントが提供するサービスを利用することができる。
図10に示される構成において、サーバ1012は、サーバ1012が実行する機能を実現する1つ以上のコンポーネント1018、1020および1022を含み得る。これらのコンポーネントは、1つ以上のプロセッサ、ハードウェアコンポーネント、またはその組み合わせによって実行可能なソフトウェアコンポーネントを含み得る。なお、分散型システム1000とは異なり得る多種多様なシステム構成が可能であることが理解されるはずである。よって、図10に示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であり限定を意図したものではない。
本開示の教示に従い、ユーザは、クライアントコンピューティングデバイス1002、1004、1006、および/または1008を用いることにより、要求情報をサーバ1012に提供し、サーバ1012から情報(たとえばマッピング情報)を受けることができる。クライアントデバイスは、クライアントデバイスのユーザがクライアントデバイスとやり取りすることを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介して情報をユーザに出力する。図10は4つのクライアントコンピューティングデバイスしか示していないが、任意の数のクライアントコンピューティングデバイスをサポートすることができる。
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどのような、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム(たとえばMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、UNIX(登録商標)またはUNIX系オペレーティングシステム、Linux(登録商標)またはLinux系オペレーティングシステム、たとえば、各種おモバイルオペレーティングシステム(たとえばMicrosoft Windows Mobile(登録商標)、iOS(登録商標)、Windows Phone(登録商標)、Android(登録商標)、BlackBerry(登録商標)、Palm OS(登録商標))を含むGoogle Chrome(登録商標)OS)を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン(たとえばiPhone(登録商標))、タブレット(たとえばiPad(登録商標))、携帯情報端末(PDA)などを含み得る。ウェアラブルデバイスは、Google Glass(登録商標)ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス(たとえばKinect(登録商標)ジェスチャ入力デバイスを備えたMicrosoft Xbox(登録商標)ゲーム機、Sony PlayStation(登録商標)システム、Nintendo(登録商標)が提供する各種ゲームシステムなどを含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション(たとえばEメールアプリケーション、ショートメッセージサービス(SMS)アプリケーション)のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用することができる。
通信ネットワーク1010は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、TCP/IP(伝送制御プロトコル/インターネットプロトコル)、SNA(システムネットワークアーキテクチャ)、IPX(インターネットパケット交換)、AppleTalk(登録商標)などを含むがこれらに限定されない。単に例として、通信ネットワーク1010は、ローカルエリアネットワーク(LAN)、Ethernet(登録商標)に基づくネットワーク、トークンリング、ワイドエリアネットワーク(WAN)、インターネット、仮想ネットワーク、仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえば電気電子学会(IEEE)1002.11プロトコルスイートのいずれかの下で動作する無線ネットワーク、Bluetooth(登録商標)および/または任意の他の無線プロトコル)、および/またはこれらおよび/または他のネットワークの任意の組み合わせを含み得る。
サーバ1012は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む)、サーバファーム、サーバクラスタ、またはその他の適切な構成および/または組み合わせで構成されてもよい。サーバ1012は、仮想オペレーティングシステムを実行する1つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の1つ以上のフレキシブルツールなどである。各種実施形態において、サーバ1012を、上記開示に記載の機能を提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するのに適するようにしてもよい。
サーバ1012内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む1つ以上のオペレーティングシステム、および、市場で入手可能なサーバオペレーティングシステムを実行し得る。また、サーバ1012は、HTTP(ハイパーテキスト転送プロトコル)サーバ、FTP(ファイル転送プロトコル)サーバ、CGI(コモンゲートウェイインターフェイス)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび/または中間層アプリケーションのうちのいずれかを実行し得る。例示されるデータベースサーバは、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、IBM(登録商標)(International Business Machines)などから市場で入手可能なものを含むが、それらに限定されるものではない。
いくつかの実装例において、サーバ1012は、クライアントコンピューティングデバイス1002,1004,1006および1008のユーザから受信したデータフィードおよび/またはイベントアップデートを解析および整理統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、1つ以上の第三者情報源および連続データストリームから受信される、Twitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されるものではない。サーバ1012は、データフィードおよび/またはリアルタイムのイベントをクライアントコンピューティングデバイス1002,1004,1006および1008の1つ以上の表示デバイスを介して表示するための1つ以上のアプリケーションも含み得る。
分散型システム1000はまた、1つ以上のデータリポジトリ1014、1016を含み得る。特定の実施形態において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ1014、1016のうちの1つ以上を用いて、サーバ1012が使用するまたは生成した、1つ以上のアプリケーションについての要求情報、マッピング情報、およびその他の情報などの情報を格納することができる。データリポジトリ1014、1016は、さまざまな場所に存在し得る。たとえば、サーバ1012が使用するデータリポジトリは、サーバ1012のローカル位置にあってもよく、またはサーバ1012から遠隔の位置にあってもよく、ネットワークベースのまたは専用接続を介してサーバ1012と通信する。データリポジトリ1014、1016は、異なる種類であってもよい。特定の実施形態において、サーバ1012が使用するデータリポジトリは、データベース、たとえば、Oracle Corporation(登録商標)が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの1つ以上を、SQLフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするのに適するようにしてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
特定の実施形態において、本開示に記載の特徴は、クラウド環境を介してサービスとして提供することができる。図11は、特定の実施形態に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。図11に示される実施形態において、クラウドインフラストラクチャシステム1102は、ユーザが1つ以上のクライアントデバイス1104、1106、および1108を用いて要求し得る1つ以上のクラウドサービスを提供することができる。クラウドインフラストラクチャシステム1102は、サーバ1012に関して先に述べたものを含み得る1つ以上のコンピュータおよび/またはサーバを含み得る。クラウドインフラストラクチャシステム1102内のコンピュータを、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および/または組み合わせとして、組織してもよい。
ネットワーク1110は、クライアントデバイス1104、1106、および1108と、クラウドインフラストラクチャシステム1102との間におけるデータの通信および交換を容易にすることができる。ネットワーク1110は、1つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク1110は、通信を容易にするために、有線および/または無線プロトコルを含む、1つ以上の通信プロトコルをサポートすることができる。
図11に示される実施形態は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの実施形態において、クラウドインフラストラクチャシステム1102が、図11に示されるものよりも多くのまたは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、または、コンポーネントの異なる構成または配置を有していてもよいことが、理解されるはずである。たとえば、図11は3つのクライアントコンピューティングデバイスを示しているが、代替実施形態において任意の数のクライアントコンピューティングデバイスをサポートすることができる。
クラウドサービスという用語は一般的に、サービスプロバイダのシステム(たとえばクラウドインフラストラクチャシステム1102)により、インターネット等の通信ネットワークを介してオンデマンドでユーザが利用できるようにされるサービスを意味するために使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストすることができ、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介しオンデマンドでアプリケーションをオーダーし使用することができる。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Javaクラウドサービスその他などのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのOracle Corporation(登録商標)から提供される。
特定の実施形態において、クラウドインフラストラクチャシステム1102は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア(SaaS)モデル、サービスとしてのプラットフォーム(PaaS)モデル、サービスとしてのインフラストラクチャ(IaaS)モデルその他のような、異なるモデルを使用して、1つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム1102は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
SaaSモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、SaaSモデルを用いることにより、クラウドインフラストラクチャシステム1102がホストするオンデマンドアプリケーションに顧客がアクセスできるようにすることができる。Oracle Corporation(登録商標)が提供するSaaSサービスの例は、人的資源/資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント(CRM)、エンタープライズ・リソース・プランニング(ERP)、サプライチェーン・マネジメント(SCM)、エンタープライズ・パフォーマンス・マネジメント(EPM)、解析サービス、ソーシャルアプリケーションその他を含むがこれらに限定されるものではない。特定の実施形態において、アプリケーションに関する要求情報から機能アプリケーションを自動的に生成する機能を、SaaSモデルに基づくサービスとして提供することができる。
IaaSモデルは一般的に、インフラストラクチャリソース(たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース)を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種IaaSサービスがOracle Corporation(登録商標)から提供される。
PaaSモデルは一般的に、顧客が、アプリケーションおよびサービスを、環境リソースを調達、構築、または管理しなくても、開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Oracle Corporation(登録商標)が提供するPaaSサービスの例は、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスその他を含むがこれらに限定されるものではない。
クラウドサービスは一般的に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム1102が提供する1つ以上のサービスをオーダーすることができる。クラウドインフラストラクチャシステム1102はそうすると、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。たとえば、ユーザは、アプリケーションについての要求情報を、クラウドインフラストラクチャシステムに与え、クラウドインフラストラクチャシステムに、要求情報から機能アプリケーションを自動的に生成するよう要求する。これは、先に述べたように、アプリケーションのユーザインターフェイスコンポーネントとデータオブジェクトとの間にマッピングを自動的に生成することを含む。クラウドインフラストラクチャシステム1102を、1つまたは複数のクラウドサービスを提供するように構成してもよい。
クラウドインフラストラクチャシステム1102は、異なるデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム1102は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人でも企業でもよい。その他特定の実施形態において、プライベートクラウドモデルでは、クラウドインフラストラクチャシステム1102がある組織内で(たとえば企業組織内で)機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部その他のようなさまざまな部署であってもよく、企業内の個人であってもよい。その他の特定の実施形態において、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム1102および提供されるサービスは、関連コミュニティ内の数組織で共有されてもよい。上記モデルの混成モデルのようなその他各種モデルを使用することもできる。
クライアントデバイス1104、1106、および1108は、異なるタイプであってもよく(たとえば図11に示されるクライアントデバイス1104、1106、および1108)、1つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム1102が提供するサービスを要求することなど、クラウドインフラストラクチャシステム1102とのやり取りを行うことができる。たとえば、ユーザは、クライアントデバイスを用いることにより、アプリケーションについての要求情報をクラウドインフラストラクチャシステム1102に提供し、クラウドインフラストラクチャシステムに、要求情報から機能アプリケーションを自動的に生成するよう要求することができる。これは、本開示で述べたように、アプリケーションのユーザインターフェイスコンポーネントとデータオブジェクトとの間にマッピングを自動的に生成することを含む。
いくつかの実施形態において、クラウドインフラストラクチャシステム1102が、要求されたサービスを提供するために実行する処理は、ビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、操作することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、1つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。この解析に使用されるデータは、構造化データ(たとえばデータベースに格納されたまたは構造化モデルに従って構造化されたデータ)および/または非構造化データ(たとえばデータブロブ(blob)(binary large object:バイナリ・ラージ・オブジェクト))を含み得る。
図11の実施形態に示されるように、クラウドインフラストラクチャシステム1102は、クラウドインフラストラクチャシステム1102が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース1130を含み得る得。インフラストラクチャリソース1130は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。
特定の実施形態において、異なる顧客に対しクラウドインフラストラクチャシステム1102が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースセットまたはリソースモジュール(「ポッド」とも呼ばれる)になるようにまとめてもよい。各リソースモジュールまたはポッドは、1種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の実施形態において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第1のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第1のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第2のポッドセットをJavaサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
クラウドインフラストラクチャシステム1102自身が、クラウドインフラストラクチャシステム1102の異なるコンポーネントによって共有されクラウドインフラストラクチャシステム1102によるサービスのプロビジョニングを容易にするサービス1132を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性バックアップリカバリサービス、クラウドサポートを可能にするサービス、Eメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
クラウドインフラストラクチャシステム1102は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはその組み合わせで実現し得る。図11に示されるように、サブシステムは、クラウドインフラストラクチャシステム1102のユーザまたは顧客がクラウドインフラストラクチャシステム1102とやり取りすることを可能にするユーザインターフェイスサブシステム1112を含み得る。ユーザインターフェイスサブシステム1112は、ウェブインターフェイス1114、クラウドインフラストラクチャシステム1102が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス1116、およびその他のインターフェイス1118のような、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用い、クラウドインフラストラクチャシステム1102が提供する1つ以上のサービスを、インターフェイス1114、1116、および1118のうちの1つ以上を用いてサブスクリプションオーダーを行うことによって要求する(サービス要求1134)ことができる。これらのインターフェイスは、たとえば、顧客が、クラウドインフラストラクチャシステム1102が提供するクラウドサービスを特定するオンラインストアにアクセスしてこれをブラウズし、顧客が申し込むことを希望する、提供されたサービスのうちの1つ以上についてサブスクリプションオーダーを行うための、オンラインストアユーザインターフェイス1116を含み得る。その他のインターフェイスはウェブインターフェイス1114およびその他のインターフェイス1118を含み得る。
特定の実施形態において、サービス要求またはサブスクリプション要求は、要求しているユーザまたは顧客を特定する情報と、顧客が申込みを希望する1つ以上のサービスとを含み得る。たとえば、顧客は、クラウドインフラストラクチャシステム1102が提供する自動アプリケーション生成サービスに対してサブスクリプションオーダーを行うことができる。
図11に示される実施形態のような特定の実施形態において、クラウドインフラストラクチャシステム1102は、新規サブスクリプションオーダーを処理するように構成されたオーダー管理サブシステム(OMS)1102を含み得る。この処理の一部として、OMS1120は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および/またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
適切に妥当性確認がなされると、OMS1120は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム(OPS)1124を呼び出すことができる。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、OPS1124を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ/量/レベル/範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
クラウドインフラストラクチャシステム1102は、要求されたサービスがいつ使用できるようになるかを示すために、レスポンスまたは通知1144を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報(たとえばリンク)を顧客に送信してもよい。
クラウドインフラストラクチャシステム1102はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム1102は、顧客から受けた1つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する責任がある。また、クラウドインフラストラクチャシステム1102は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
クラウドインフラストラクチャシステム1102は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム1102は、場合によっては著作権情報を含む、これらの顧客についての情報を保存してもよい。特定の実施形態において、クラウドインフラストラクチャシステム1102は、顧客の情報を管理し管理される情報の分離を提供することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされたりこの情報と混ざり合ったりしないようにするように構成された、アイデンティティ管理サブシステム(IMS)1128を含む。IMS1128は、アイデンティティサービス、たとえば情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスのような、各種セキュリティ関連サービスを提供するように構成されてもよい。
図12は、特定の実施形態を実現するために使用し得る例示的なコンピュータシステム1200を示す。たとえば、いくつかの実施形態において、コンピュータシステム1200を使用することにより、図1に示されるモデル生成システム102のような、上述のさまざまなサーバおよびコンピュータシステムのいずれかを実現することができる。図12に示されるように、コンピュータシステム1200は、バスサブシステム1202を介して複数の他のサブシステムと通信する処理サブシステム1204を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット1206、I/Oサブシステム1208、ストレージサブシステム1218および通信サブシステム1224を含み得る。ストレージサブシステム1218は、記憶媒体1222およびシステムメモリ1210を含む、非一時的なコンピュータ読取可能記憶媒体を含み得る。
バスサブシステム1202は、コンピュータシステム1200のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム1202は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態は複数のバスを利用してもよい。バスサブシステム1202は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ(Industry Standard Architecture)(ISA)バス、マイクロチャネルアーキテクチャ(Micro Channel Architecture)(MCA)バス、エンハンストISA(Enhanced ISA)(EISA)バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション(Video Electronics Standards Association)(VESA)ローカルバス、およびIEEE P1386.1規格に従って製造される中二階バスとして実現可能な周辺コンポーネントインターコネクト(Peripheral Component Interconnect)(PCI)バスなどを含み得る。
処理サブシステム1204は、コンピュータシステム1200の動作を制御し、1つ以上のプロセッサ、特定用途向け集積回路(ASIC)、またはフィールドプログラマブルゲートアレイ(FPGA)を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム1200の処理リソースを、1つ以上の処理ユニット1232、1234などになるように組織することができる。処理ユニットは、1つ以上のプロセッサ、同一のまたは異なるプロセッサからの1つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの実施形態において、処理サブシステム1204は、グラフィックスプロセッサ、デジタル信号プロセッサ(DSP)などのような1つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム1204の処理ユニットの一部または全部は、特定用途向け集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのカスタマイズされた回路を使用して実現することができる。
いくつかの実施形態において、処理サブシステム1204内の処理ユニットは、システムメモリ1210またはコンピュータ読取可能記憶媒体1222に格納された命令を実行することができる。さまざまな実施形態において、処理ユニットはさまざまなプログラムまたはコード命令を実行し、同時に実行する複数のプログラムまたはプロセスを維持することができる。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ1210および/または潜在的に1つ以上の記憶装置を含むコンピュータ読取可能記憶媒体1210に常駐していてもよい。適切なプログラミングを介して、処理サブシステム1204は、先に述べたさまざまな機能を提供することができる。コンピュータシステム1200が1つ以上の仮想マシンを実行している例において、1つ以上の処理ユニットに各仮想マシンを割り当ててもよい。
特定の実施形態において、コンピュータシステム1200によって実行される全体的な処理を加速するよう、カスタマイズされた処理を実行するために、または処理サブシステム1204によって実行される処理の一部をオフロードするために、処理加速ユニット1206を任意に設けることができる。
I/Oサブシステム1208は、コンピュータシステム1200に情報を入力するための、および/またはコンピュータシステム1200から、もしくはコンピュータシステム1200を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム1200に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするMicrosoft Kinect(登録商標)モーションセンサ、Microsoft Xbox(登録商標)360ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび/またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き(たとえば、写真を撮っている間および/またはメニュー選択を行っている間の「まばたき」)を検出し、アイジェスチャを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換するGoogle Glass(登録商標)瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム(たとえばSiri(登録商標)ナビゲータ)と対話することを可能にする音声認識感知デバイスを含んでもよい。
ユーザインターフェイス入力デバイスの他の例は、三次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚/視覚デバイスも含んでもよいが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、MIDIキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
一般的に、出力デバイスという語の使用は、コンピュータシステム1200からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声/映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
ストレージサブシステム1218は、コンピュータシステム1200によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム1218は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ読取可能記憶媒体を提供する。処理サブシステム1204によって実行されると上述の機能を提供するソフトウェア(たとえばプログラム、コードモジュール、命令)が、ストレージサブシステム1218に格納されてもよい。ソフトウェアは、処理サブシステム1204の1つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム1218はまた、本開示の教示に従って使用されるデータを格納するためのリポジトリを提供してもよい。
ストレージサブシステム1218は、揮発性および不揮発性メモリデバイスを含む1つ以上の非一時的メモリデバイスを含み得る。図12に示すように、ストレージサブシステム1218は、システムメモリ1210およびコンピュータ読取可能記憶媒体1222を含む。システムメモリ1210は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ(RAM)と、固定命令が格納される不揮発性読出専用メモリ(ROM)またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実装例において、起動中などにコンピュータシステム1200内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット/アウトプットシステム(basic input/output system)(BIOS)は、典型的には、ROMに格納されてもよい。典型的に、RAMは、処理サブシステム1204によって現在動作するようにされ実行されているデータおよび/またはプログラムモジュールを含む。いくつかの実装例において、システムメモリ1210は、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)などのような複数の異なるタイプのメモリを含み得る。
一例として、限定を伴うことなく、図12に示されるように、システムメモリ1210は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム(RDBMS)などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム1212、プログラムデータ1214、およびオペレーティングシステム1216を、ロードしてもよい。一例として、オペレーティングシステム1216は、Microsoft Windows(登録商標)、Apple Macintosh(登録商標)および/またはLinuxオペレーティングシステム、さまざまな市場で入手可能なUNIX(登録商標)またはUNIX系オペレーティングシステム(さまざまなGNU/Linuxオペレーティングシステム、Google Chrome(登録商標)OSなどを含むがそれらに限定されない)、および/または、iOS(登録商標)、Windows(登録商標) Phone、Android(登録商標) OS、BlackBerry(登録商標) OS、Palm(登録商標) OSオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
コンピュータ読取可能記憶媒体1222は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ読取可能記憶媒体1222は、コンピュータシステム1200のための、コンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム1204によって実行されると上記機能を提供するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム1218に格納されてもよい。一例として、コンピュータ読取可能記憶媒体1222は、ハードディスクドライブ、磁気ディスクドライブ、CD ROM、DVD、Blu−Ray(登録商標)ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ読取可能記憶媒体1222は、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取可能記憶媒体1222は、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような不揮発性メモリに基づくソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAMのような揮発性メモリに基づくSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、およびDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDも含み得る。
特定の実施形態において、ストレージサブシステム1218は、コンピュータ読取可能記憶媒体1222にさらに接続可能なコンピュータ読取可能記憶媒体リーダー1220も含み得る。コンピュータ読取可能記憶媒体リーダー1220は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
特定の実施形態において、コンピュータシステム1200は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム1200は、1つ以上の仮想マシンを実行するためのサポートを提供することができる。特定の実施形態において、コンピュータシステム1200は、仮想マシンの構成および管理を容易にするためのハイパーバイザなどのプログラムを実行することができる。各仮想マシンは、メモリ、計算(たとえばプロセッサ、コア)、I/O、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的に、コンピュータシステム1200によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じでも異なっていてもよい、それ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム1200によって同時に実行され得る。
通信サブシステム1224は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム1224は、他のシステムとコンピュータシステム1200との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム1224は、コンピュータシステム1200が、1つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して1つ以上のクライアントデバイスへの通信チャネルを確立することを可能にすることができる。
通信サブシステム1224は、有線および/または無線通信プロトコルの両方をサポートすることができる。たとえば、ある実施形態において、通信サブシステム1224は、(たとえば、セルラー電話技術、3G、4GもしくはEDGE(グローバル進化のための高速データレート)などの先進データネットワーク技術、WiFi(IEEE802.XXファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)送受信機コンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/または他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム1224は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続(たとえばEthernet)を提供することができる。
通信サブシステム1224は、さまざまな形式でデータを受信し、送信することができる。たとえば、いくつかの実施形態において、通信サブシステム1224は、構造化データフィードおよび/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230などの形式で入力通信を受信することができる。たとえば、通信サブシステム1224は、ソーシャルメディアネットワークおよび/またはTwitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィードなどのウェブフィード、および/または1つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード1226を受信(または送信)するように構成されてもよい。
特定の実施形態において、通信サブシステム1224は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム1228および/またはイベントアップデート1230を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
通信サブシステム1224は、コンピュータシステム1200からのデータをその他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および/または非構造化データフィード1226、イベントストリーム1228、イベントアップデート1230などのような各種異なる形式で、コンピュータシステム1200に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに、伝えることができる。
コンピュータシステム1200は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)セルラーフォン、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのもののうちの1つであればよい。常に変化するコンピュータおよびネットワークの性質のため、図12に示されるコンピュータシステム1200の記載は、単に具体的な例を意図している。図12に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および/または方法を理解するであろう。
特定の実施形態について説明したが、さまざまな修正、変更、代替構成、および均等物が可能である。実施形態は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、実施形態を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行できる。加えて、動作の順序を再指定してもよい。プロセスは図面に含まれない追加のステップを有し得る。上記実施形態の各種特徴および側面は、個別に使用されてもよく、またはともに使用されてもよい。
さらに、特定の実施形態をハードウェアとソフトウェアとの特定の組み合わせを用いて説明したが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の実施形態は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現できる。
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行する電子回路を設計すること、プログラミング可能な電子回路(マイクロプロセッサなど)をプログラミングすることにより、たとえば非一時的なメモリ媒体に格納されたコードまたは命令またはその任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどして、動作を実行するように電子回路を設計することによって、動作を実行すること、またはそれらの任意の組み合わせによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
本開示では特定の詳細事項を示すことにより実施形態が十分に理解されるようにしている。しかしながら、実施形態はこれらの特定の詳細事項がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構成、および技術は、実施形態が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な実施形態のみを提供し、他の実施形態の範囲、適用可能性、または構成を限定することを意図しているのではない。むしろ、実施形態の上記説明は、各種実施形態を実現することを可能にする説明を当業者に提供する。各種変更は要素の機能および構成の範囲内で行うことができる。
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、特定の実施形態を説明してきたが、これらは限定を意図するものではない。さまざまな修正および均等物は以下の請求項の範囲に含まれる。