(57)【要約】  本明細書に開示される技術は、概して、カスタマイズされたナレッジグラフを構築することに関する。ある実施形態において、特定のルールに基づいて、ユーザデータセットから、エンティティとエンティティ間の関係とを抽出することにより、シードグラフを生成する。次に、大規模のナレッジグラフを有限状態機械を用いてトラバースすることにより、シードグラフに追加する候補エンティティおよび／または関係を特定する。プライオリティ関数を用いて、候補エンティティおよび／または関係から、エンティティおよび／または関係を選択する。次に、選択したエンティティおよび／または関係をシードグラフに追加することにより、カスタマイズされたナレッジグラフを生成する。
2021534493.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションのためにカスタマイズされたナレッジグラフを生成するための、コンピュータにより実現される方法であって、前記コンピュータにより実現される方法は、
前記アプリケーションのためのユーザデータセットを受信するステップと、
前記ユーザデータセットからエンティティを抽出するステップと、
前記ユーザデータセットに基づいて前記エンティティ間のリンクを特定するステップと、
前記エンティティと前記エンティティ間の前記リンクとを表すシードグラフを作成するステップと、
前記シードグラフ内の弱く接続されているコンポーネントを特定するステップと、
前記シードグラフ内の弱く接続されている各コンポーネントについて、
前記弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングするステップと、
有限状態機械に基づいて、前記参照ナレッジグラフにおける前記マッピングされた頂点から、前記参照ナレッジグラフをトラバースすることにより、前記参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定するステップと、
前記特定したエンティティのリソース記述フレームワーク（ＲＤＦ）を、エントリとしてバッファに保存するステップと、
前記バッファ内の前記エントリのプライオリティスコアを計算するステップと、
前記バッファ内の前記エントリから、最高プライオリティスコアを有する第１組のエントリを選択するステップと、
前記第１組のエントリによって特定されたエンティティおよびリンクを、前記シードグラフに追加することにより、前記カスタマイズされたナレッジグラフの、あるバージョンを生成するステップとを含む、コンピュータにより実現される方法。
【請求項２】
前記ユーザデータセットは複数のユーザ発話を含む、請求項１に記載のコンピュータにより実現される方法。
【請求項３】
前記エンティティを抽出するステップおよび前記エンティティ間のリンクを特定するステップは、前記ユーザデータセットに対し、
品詞タグ付け、
固有表現認識、または
句構造解析
のうちの少なくとも１つを実行することを含む、請求項１に記載のコンピュータにより実現される方法。
【請求項４】
前記弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングするステップは、Ｄｅｘｔｅｒ２を用いて前記エンティティを前記参照ナレッジグラフにおける頂点にマッピングすることを含む、請求項１に記載のコンピュータにより実現される方法。
【請求項５】
前記有限状態機械は、曖昧性除去状態、エンティティ状態、禁止状態、および終了状態を含み、
前記参照ナレッジグラフをトラバースするステップは、
前記参照ナレッジグラフにおける次の頂点が曖昧性除去頂点であるときに、前記曖昧性除去状態に入ることと、
前記参照ナレッジグラフにおける前記次の頂点が禁止頂点であるときに、前記有限状態機械の現在の状態が前記禁止状態でなければ、前記禁止状態に入ることと、
前記参照ナレッジグラフにおける前記次の頂点がエンティティ頂点であるときに、
前記エンティティ状態に入り、
前記参照ナレッジグラフにおける前記次の頂点のＲＤＦをエントリとして前記バッファに保存することと、
前記バッファにおけるエントリの数が第２のしきい値数よりも大きいときに、前記終了状態に入ることとを含む、請求項１に記載のコンピュータにより実現される方法。
【請求項６】
前記禁止頂点は、日付、時間の値、別の参照ナレッジグラフへのリンク、ウェブページ、または、複製されたもしくはリダイレクトされたエンティティを含む、請求項５に記載のコンピュータにより実現される方法。
【請求項７】
前記バッファ内のエントリのプライオリティスコアは、
前記シードグラフと前記エントリに対応付けられたエンティティとを含むナレッジグラフ内の、弱く接続されているコンポーネントの数、
前記シードグラフと前記エントリに対応付けられたエンティティとを含む前記ナレッジグラフのグラフ密度、および
制御パラメータ
の関数である、プライオリティ関数を用いて求められる、請求項１に記載のコンピュータにより実現される方法。
【請求項８】
前記第１組のエントリにおいて特定された前記エンティティおよびリンクを前記シードグラフに追加した後に、前記制御パラメータを更新するステップをさらに含む、請求項７に記載のコンピュータにより実現される方法。
【請求項９】
前記制御パラメータを更新するステップは、前記制御パラメータを１未満の値で乗算することを含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１０】
前記カスタマイズされたナレッジグラフの前記バージョンにおいて弱く接続されている各コンポーネントについて、
前記弱く接続されているコンポーネントにおけるエンティティを前記参照ナレッジグラフにおける頂点にマッピングし、
前記有限状態機械に基づいて、前記参照ナレッジグラフにおける前記マッピングされた頂点から、前記参照ナレッジグラフをトラバースすることにより、前記参照ナレッジグラフにおける、最大で前記第１しきい値数までのエンティティを特定し、
前記特定したエンティティのＲＤＦを、エントリとして前記バッファに保存する、ステップと、
前記プライオリティ関数と前記更新した制御パラメータとを用いて、前記バッファ内の前記エントリのプライオリティスコアを計算するステップと、
前記バッファ内の前記エントリから、最高プライオリティスコアを有する第２組のエントリを選択するステップと、
前記第２組のエントリによって特定されたエンティティおよびリンクを、前記シードグラフに追加することにより、更新されたカスタマイズされたナレッジグラフを生成するステップとをさらに含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１１】
前記バッファ内の前記エントリのプライオリティスコアを計算するステップの前に、前記バッファ内の前記エントリに対してリザーバサンプリングを実行することにより、前記バッファ内の前記エントリの数を減じるステップをさらに含む、請求項１に記載のコンピュータにより実現される方法。
【請求項１２】
入力発話を受信するステップと、
前記入力発話からエンティティを抽出するステップと、
前記カスタマイズされたナレッジグラフに基づいて、前記抽出したエンティティのナレッジグラフ埋め込みを生成するステップと、
前記抽出したエンティティの前記ナレッジグラフ埋め込みに基づいて、前記入力発話を分類するステップとをさらに含む、請求項１に記載のコンピュータにより実現される方法。
【請求項１３】
前記ナレッジグラフ埋め込みを生成するステップは、ＴｒａｎｓＥまたはＴｒａｎｓＥを拡張したものを用いて前記ナレッジグラフ埋め込みを生成することを含む、請求項１２に記載のコンピュータにより実現される方法。
【請求項１４】
前記ナレッジグラフ埋め込みを生成するステップは、ＴｒａｎｓＥおよび重み付きスコアリング関数を用いて前記ナレッジグラフ埋め込みを生成することを含む、請求項１２に記載のコンピュータにより実現される方法。
【請求項１５】
前記ナレッジグラフ埋め込みを生成するステップは、
前記参照ナレッジグラフを用いて、前記入力発話から抽出した前記エンティティの前記ナレッジグラフ埋め込みを事前訓練することと、
前記カスタマイズされたナレッジグラフと、前記事前訓練したナレッジグラフ埋め込みとを用いて、前記入力発話から抽出した前記エンティティの前記ナレッジグラフ埋め込みを再訓練することとを含む、請求項１２に記載のコンピュータにより実現される方法。
【請求項１６】
前記抽出したエンティティの前記ナレッジグラフ埋め込みに基づいて前記入力発話を分類するステップは、
前記抽出したエンティティの前記ナレッジグラフ埋め込みの平均ナレッジグラフ埋め込みを求めることと、
前記入力発話における単語のＧｌｏＶｅベクトルの平均ＧｌｏＶｅベクトルを求めることと、
前記平均ナレッジグラフ埋め込みと前記平均ＧｌｏＶｅベクトルとに基づいて前記入力発話を分類することとを含む、請求項１２に記載のコンピュータにより実現される方法。
【請求項１７】
前記平均ナレッジグラフ埋め込みと前記平均ＧｌｏＶｅベクトルとに基づいて前記入力発話を分類することは、
前記平均ナレッジグラフ埋め込みと前記平均ＧｌｏＶｅベクトルとを組み合わせることにより、連結されたベクトルを生成することと、
前記連結されたベクトルに対して主成分分析を実行することと、
前記主成分分析に基づいて前記入力発話を分類することとを含む、請求項１６に記載のコンピュータにより実現される方法。
【請求項１８】
前記入力発話における単語のＧｌｏＶｅベクトルの平均ＧｌｏＶｅベクトルを求めることは、
前記入力発話をクリーニングすることと、
前記クリーニングした入力発話における各単語のＧｌｏＶｅベクトルを生成することと、
前記クリーニングした入力発話における各単語の前記ＧｌｏＶｅベクトルを平均することとを含む、請求項１６に記載のコンピュータにより実現される方法。
【請求項１９】
１つ以上のプロセッサによる実行が可能な複数の命令を格納する非一時的なコンピュータ読取可能媒体であって、前記複数の命令は前記１つ以上のプロセッサによって実行されると前記１つ以上のプロセッサに以下を含む処理を実行させ、前記処理は、
前記アプリケーションのためのユーザデータセットを受信することと、
前記ユーザデータセットからエンティティを抽出することと、
前記ユーザデータセットに基づいて前記エンティティ間のリンクを特定することと、
前記エンティティと前記エンティティ間の前記リンクとを表すシードグラフを作成することと、
前記シードグラフ内の弱く接続されているコンポーネントを特定することと、
前記シードグラフ内の弱く接続されている各コンポーネントについて、
前記弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングすることと、
有限状態機械に基づいて、前記参照ナレッジグラフにおける前記マッピングされた頂点から、前記参照ナレッジグラフをトラバースすることにより、前記参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定することと、
前記特定したエンティティのリソース記述フレームワーク（ＲＤＦ）を、エントリとしてバッファに保存することと、
前記バッファ内の前記エントリのプライオリティスコアを計算することと、
前記バッファ内の前記エントリから、最高プライオリティスコアを有する第１組のエントリを選択することと、
前記第１組のエントリにおいて特定されたエンティティおよびリンクを、前記シードグラフに追加することにより、前記カスタマイズされたナレッジグラフの、あるバージョンを生成することとを含む、非一時的なコンピュータ読取可能媒体。
【請求項２０】
システムであって、
１つ以上のプロセッサと、
前記１つ以上のプロセッサに結合されたメモリと備え、前記メモリは、前記１つ以上のプロセッサによって実行されると前記システムに以下を含む動作を実行させる命令を格納し、前記動作は、
前記アプリケーションのためのユーザデータセットを受信することと、
前記ユーザデータセットからエンティティを抽出することと、
前記ユーザデータセットに基づいて前記エンティティ間のリンクを特定することと、
前記エンティティと前記エンティティ間の前記リンクとを表す、シードグラフを作成することと、
前記シードグラフ内の弱く接続されているコンポーネントを特定することと、
前記シードグラフ内の弱く接続されている各コンポーネントについて、
前記弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングすることと、
有限状態機械に基づいて、前記参照ナレッジグラフにおける前記マッピングされた頂点から、前記参照ナレッジグラフをトラバースすることにより、前記参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定することと、
前記特定したエンティティのリソース記述フレームワーク（ＲＤＦ）を、エントリとしてバッファに保存することと、
前記バッファ内の前記エントリのプライオリティスコアを計算することと、
前記バッファ内の前記エントリから、最高プライオリティスコアを有する第１組のエントリを選択することと、
前記第１組のエントリにおいて特定されたエンティティおよびリンクを、前記シードグラフに追加することにより、前記カスタマイズされたナレッジグラフの、あるバージョンを生成することとを含む、システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本願は、２０１８年８月１６日に出願され「Techniques For Building A Knowledge Graph In Limited Knowledge Domains」と題された米国仮特許出願第６２／７６５，００５号および２０１９年８月１５日に出願され「TECHNIQUES FOR BUILDING A KNOWLEDGE GRAPH IN LIMITED KNOWLEDGE DOMAINS」と題された米国特許出願第１６／５４２，０１７号に基づく利益および優先権を主張し、これらの開示の全体を、その補遺も含めて、あらゆる目的のために、本明細書に引用により援用する。
【背景技術】
【０００２】
背景
ナレッジグラフは、エンティティ間の関係を明示的に記述することによって情報を構造的に組織化する。ナレッジグラフは、一般的に、ノードまたは頂点（エンティティを表す）間のラベル付けされたエッジ（関係を表す）を備えた有向グラフを用いてナレッジベースを表す。ナレッジグラフは、たとえば、検索、質問への回答、会話インターフェイス（例としてチャットボット）、レコメンダシステム等に使用することができる。大規模で包括的ないくつかのナレッジグラフを利用できる。しかしながら、異なるユーザのための会話インターフェイス（たとえばチャットボット）の構築等の、特定の用途または環境に使用される自然言語理解（natural language understanding）（ＮＬＵ）サービスは、一般的に、特定のドメイン内においてより良好に機能する。特定の知識ドメインのために正確なナレッジグラフを作成することは難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さおよび特定のドメインにおける限られた知識にある。なぜなら、一般的にはユーザデータセット内のサンプル数が少ないからである。
【発明の概要】
【０００３】
簡単な概要
本開示は、概して、カスタマイズされたナレッジグラフを構築することに関し、より具体的には、小さなユーザデータセットと、大規模の参照（たとえば外部）ナレッジグラフとに基づいて、特定の知識ドメインのために（たとえば特定のクライアントまたは特定のボットのために）カスタマイズされたナレッジグラフを構成するための技術に関する。カスタマイズされたナレッジグラフは、たとえば、ナレッジグラフ埋め込み技術に基づいてチャットボットにおける意図（intent）分類を改善するために使用することができる。本明細書には、発明のさまざまな実施形態が記載されており、これらは、方法、システム、１つ以上のプロセッサが実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ読取可能記憶媒体等を含む。
【課題を解決するための手段】
【０００４】
特定の実施形態において、アプリケーションのためにカスタマイズされたナレッジグラフを生成するための、コンピュータにより実現される方法が開示される。この方法は、アプリケーションのためのユーザデータセットを受信するステップと、ユーザデータセットからエンティティを抽出するステップと、ユーザデータセットに基づいてエンティティ間のリンクを特定するステップと、エンティティとエンティティ間のリンクとを表すシードグラフを作成するステップとを含み得る。また、この方法は、シードグラフ内の弱く接続されているコンポーネントを特定するステップと、シードグラフ内の弱く接続されている各コンポーネントについて、弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングするステップと、有限状態機械に基づいて、参照ナレッジグラフにおけるマッピングされた頂点から、参照ナレッジグラフをトラバースすることにより、参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定するステップと、特定したエンティティのリソース記述フレームワーク（ＲＤＦ）を、エントリとしてバッファに保存するステップとを含み得る。この方法はさらに、バッファ内のエントリのプライオリティスコアを計算するステップと、バッファ内のエントリから、最高プライオリティスコアを有する第１組のエントリを選択するステップと、第１組のエントリによって特定されたエンティティおよびリンクを、シードグラフに追加することにより、カスタマイズされたナレッジグラフの、あるバージョンを生成するステップとを含み得る。
【０００５】
いくつかの実施形態において、ユーザデータセットは複数のユーザ発話を含み得る。エンティティを抽出するステップおよびエンティティ間のリンクを特定するステップは、ユーザデータセットに対し、たとえば、品詞タグ付け、固有表現認識、および／または句構造解析を実行することを含み得る。弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングするステップは、たとえばＤｅｘｔｅｒ２を用いてエンティティを参照ナレッジグラフにおける頂点にマッピングすることを含み得る。
【０００６】
いくつかの実施形態において、有限状態機械は、曖昧性除去状態、エンティティ状態、禁止状態、および終了状態を含み得る。参照ナレッジグラフをトラバースするステップは、参照ナレッジグラフにおける次の頂点が曖昧性除去頂点であるときに、曖昧性除去状態に入ることと、参照ナレッジグラフにおける次の頂点が禁止頂点であるときに、有限状態機械の現在の状態が禁止状態でなければ、禁止状態に入ることと、参照ナレッジグラフにおける次の頂点がエンティティ頂点であるときに、エンティティ状態に入り、参照ナレッジグラフにおける次の頂点のＲＤＦをエントリとしてバッファに保存することと、バッファにおけるエントリの数が第２のしきい値数よりも大きいときに、終了状態に入ることとを含み得る。禁止頂点は、たとえば、日付、時間の値、別の参照ナレッジグラフへのリンク、ウェブページ、または、複製されたもしくはリダイレクトされたエンティティを含み得る。
【０００７】
いくつかの実施形態において、バッファ内のエントリのプライオリティスコアは、シードグラフとエントリに対応付けられたエンティティとを含むナレッジグラフ内の、弱く接続されているコンポーネントの数、シードグラフとエントリに対応付けられたエンティティとを含むナレッジグラフのグラフ密度、および／または制御パラメータの関数である、プライオリティ関数を用いて求められてもよい。いくつかの実施形態において、この方法はまた、バッファ内のエントリのプライオリティスコアを計算するステップの前に、バッファ内のエントリに対してリザーバサンプリングを実行することにより、バッファ内のエントリの数を減じるステップを含み得る。
【０００８】
いくつかの実施形態において、この方法はまた、第１組のエントリにおいて特定されたエンティティおよびリンクをシードグラフに追加した後に、制御パラメータを更新するステップを含み得る。制御パラメータを更新するステップは、制御パラメータを１未満の値で乗算することを含み得る。いくつかの実施形態において、この方法はさらに、カスタマイズされたナレッジグラフのバージョンにおいて弱く接続されている各コンポーネントについて、弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングし、有限状態機械に基づいて、参照ナレッジグラフにおいてマッピングされた頂点から、参照ナレッジグラフをトラバースすることにより、参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定し、特定したエンティティのＲＤＦを、エントリとしてバッファに保存する、ステップを含み得る。この方法はまた、プライオリティ関数と更新した制御パラメータとを用いて、バッファ内のエントリのプライオリティスコアを計算するステップと、バッファ内のエントリから、最高プライオリティスコアを有する第２組のエントリを選択するステップと、第２組のエントリによって特定されたエンティティおよびリンクを、シードグラフに追加することにより、更新されたカスタマイズされたナレッジグラフを生成するステップとを含み得る。
【０００９】
いくつかの実施形態において、この方法はまた、入力発話を受信するステップと、入力発話からエンティティを抽出するステップと、カスタマイズされたナレッジグラフに基づいて、抽出したエンティティのナレッジグラフ埋め込みを生成するステップと、抽出したエンティティのナレッジグラフ埋め込みに基づいて、入力発話を分類するステップとを含み得る。いくつかの実施形態において、ナレッジグラフ埋め込みを生成するステップは、ＴｒａｎｓＥまたはＴｒａｎｓＥを拡張したものを用いてナレッジグラフ埋め込みを生成することを含み得る。いくつかの実施形態において、ナレッジグラフ埋め込みを生成するステップは、ＴｒａｎｓＥおよび重み付きスコアリング関数を用いてナレッジグラフ埋め込みを生成することを含み得る。いくつかの実施形態において、ナレッジグラフ埋め込みを生成するステップは、参照ナレッジグラフを用いて、入力発話から抽出したエンティティのナレッジグラフ埋め込みを事前訓練することと、カスタマイズされたナレッジグラフと、事前訓練したナレッジグラフ埋め込みとを用いて、入力発話から抽出したエンティティのナレッジグラフ埋め込みを再訓練することとを含み得る。
【００１０】
いくつかの実施形態において、抽出したエンティティのナレッジグラフ埋め込みに基づいて入力発話を分類するステップは、抽出したエンティティのナレッジグラフ埋め込みの平均ナレッジグラフ埋め込みを求めることと、入力発話における単語のＧｌｏＶｅベクトルの平均ＧｌｏＶｅベクトルを求めることと、平均ナレッジグラフ埋め込みと平均ＧｌｏＶｅベクトルとに基づいて入力発話を分類することとを含み得る。いくつかの実施形態において、平均ナレッジグラフ埋め込みと平均ＧｌｏＶｅベクトルとに基づいて入力発話を分類することは、平均ナレッジグラフ埋め込みと平均ＧｌｏＶｅベクトルとを組み合わせることにより、連結されたベクトルを生成することと、連結されたベクトルに対して主成分分析を実行することと、主成分分析に基づいて入力発話を分類することとを含み得る。いくつかの実施形態において、入力発話における単語のＧｌｏＶｅベクトルの平均ＧｌｏＶｅベクトルを求めることは、入力発話をクリーニングすることと、クリーニングした入力発話における各単語のＧｌｏＶｅベクトルを生成することと、クリーニングした入力発話における各単語のＧｌｏＶｅベクトルを平均することとを含み得る。
【００１１】
特定の実施形態に従うと、非一時的なコンピュータ読取可能媒体は、１つ以上のプロセッサによる実行が可能な複数の命令を格納することができ、複数の命令は１つ以上のプロセッサによって実行されると１つ以上のプロセッサに以下を含む処理を実行させることができ、この処理は、アプリケーションのためのユーザデータセットを受信することと、ユーザデータセットからエンティティを抽出することと、ユーザデータセットに基づいてエンティティ間のリンクを特定することと、エンティティとエンティティ間のリンクとを表すシードグラフを作成することとを含み得る。上記処理はまた、シードグラフ内の弱く接続されているコンポーネントを特定することと、シードグラフ内の弱く接続されている各コンポーネントについて、弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングすることと、有限状態機械に基づいて、参照ナレッジグラフにおいてマッピングされた頂点から、参照ナレッジグラフをトラバースすることにより、参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定することと、特定したエンティティのリソース記述フレームワーク（ＲＤＦ）を、エントリとしてバッファに保存することとを含み得る。上記処理はさらに、バッファ内のエントリのプライオリティスコアを計算することと、バッファ内のエントリから、最高プライオリティスコアを有する第１組のエントリを選択することと、第１組のエントリにおいて特定されたエンティティおよびリンクを、シードグラフに追加することにより、カスタマイズされたナレッジグラフの、あるバージョンを生成することとを含み得る。
【００１２】
特定の実施形態に従うと、システムは、１つ以上のプロセッサと、１つ以上のプロセッサに結合されたメモリとを含み得る。メモリは、１つ以上のプロセッサによって実行されるとシステムに以下を含む動作を実行させる命令を格納し得る。上記動作は、アプリケーションのためのユーザデータセットを受信することと、ユーザデータセットからエンティティを抽出することと、ユーザデータセットに基づいてエンティティ間のリンクを特定することと、エンティティとエンティティ間のリンクとを表す、シードグラフを作成することとを含み得る。上記動作はまた、シードグラフ内の弱く接続されているコンポーネントを特定することと、シードグラフ内の弱く接続されている各コンポーネントについて、弱く接続されているコンポーネントにおけるエンティティを参照ナレッジグラフにおける頂点にマッピングすることと、有限状態機械に基づいて、参照ナレッジグラフにおいてマッピングされた頂点から、参照ナレッジグラフをトラバースすることにより、参照ナレッジグラフにおける、最大で第１しきい値数までのエンティティを特定することと、特定したエンティティのリソース記述フレームワーク（ＲＤＦ）を、エントリとしてバッファに保存することとを含み得る。上記動作はさらに、バッファ内のエントリのプライオリティスコアを計算することと、バッファ内のエントリから、最高プライオリティスコアを有する第１組のエントリを選択することと、第１組のエントリにおいて特定されたエンティティおよびリンクを、シードグラフに追加することにより、カスタマイズされたナレッジグラフの、あるバージョンを生成することとを含み得る。
【００１３】
以下の明細書、請求項、および添付の図面を参照すると、先に述べたものはその他の特徴および実施形態とともに一層明らかになるであろう。
【００１４】
以下、説明のための例を以下の図面を参照しながら詳細に述べる。
【図面の簡単な説明】
【００１５】
【図１】特定の実施形態に係る、メッセージングアプリケーションを用いてエンドユーザと対話するためのボットシステムを実現する分散型システムを示す図である。
【図２】特定の実施形態に係る、ボットシステムと、ボットシステムのパフォーマンスをモニタリングし解析し視覚化し改善するためのボット解析システムとを含む、統合システムを示す図である。
【図３】ナレッジグラフの一例を示す図である。
【図４Ａ】ナレッジグラフの構築の過程の一例を示す図である。
【図４Ｂ】ナレッジグラフの構築の過程の一例を示す図である。
【図４Ｃ】ナレッジグラフの構築の過程の一例を示す図である。
【図４Ｄ】ナレッジグラフの構築の過程の一例を示す図である。
【図５】特定の実施形態に係る、特定のドメインのために（たとえばチャットボットのために）カスタマイズされたナレッジグラフを構築する方法の一例を説明する、簡略化されたフローチャートの図である。
【図６】特定の実施形態に係る、参照ナレッジグラフのトラバースを制御するための有限状態機械（ＦＳＭ）の一例を示す図である。
【図７】特定の実施形態に係る、ユーザデータセット（たとえばユーザの発話）に基づいて生成されたシードグラフの一例を示す図である。
【図８】特定の実施形態に係る、図７に示されるシードグラフに基づいて生成された、カスタマイズされたナレッジグラフの一例を示す図である。
【図９】図８に示されるカスタマイズされたナレッジグラフの一部の拡大図である。
【図１０】特定の実施形態を実現するための分散型システムの簡略図を示す。
【図１１】特定の実施形態に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の、簡略化されたブロック図である。
【図１２】特定の実施形態を実現するために使用し得るコンピュータシステムの一例を示す図である。
【発明を実施するための形態】
【００１６】
詳細な説明
本開示は、概して、カスタマイズされたナレッジグラフを構築することに関し、より具体的には、ドメイン内の限られた知識（たとえば小さなユーザデータセット）と、大規模の参照（たとえば外部）ナレッジグラフとに基づいて、特定の知識ドメインのためにカスタマイズされたナレッジグラフを構成するための技術に関する。カスタマイズされたナレッジグラフは、たとえば、ナレッジグラフ埋め込み技術に基づいてチャットボットにおける意図分類を改善するために使用することができる。本明細書には、発明のさまざまな実施形態が記載されており、これらは、方法、システム、１つ以上のプロセッサが実行可能なプログラム、コードまたは命令を格納する非一時的なコンピュータ読取可能記憶媒体等を含む。
【００１７】
異なるユーザのための会話インターフェイス（たとえばチャットボット）等の特定のアプリケーションまたは環境で使用される自然言語理解（ＮＬＵ）サービスは、大きく包括的なナレッジグラフではなく特定のドメイン内のカスタマイズされたナレッジグラフを使用する方が、より効果的に機能し得るものである。たとえば、カスタマイズされたナレッジグラフではノイズが少ない場合があり、したがって、大きな汎用ナレッジグラフではなく小さなカスタマイズされたナレッジグラフを使用する方が、より効率的でより正確な場合がある。しかしながら、特定のドメイン内で入手できる知識は限られている場合があり、したがって、限られた知識に基づいて生成された、カスタマイズされたナレッジグラフは、疎である可能性がある。
【００１８】
実施形態に従うと、エンティティは、カスタムアプリケーション（たとえばチャットボット）のための小さなユーザデータセット（たとえばユーザの発話、意図、エンティティ、および質問と回答を含む）から、特定のルールに基づいて抽出することができる。抽出したエンティティとエンティティ間の接続または関係とに基づいて、シードグラフを生成することができる。次に、ＷｉｋｉＤａｔａ（登録商標）等の大規模の参照ナレッジグラフを、有限状態機械を用いてトラバースして、シードグラフに追加すべき候補エンティティおよび／または関係を特定することにより、シードグラフを、カスタムアプリケーションのためのカスタマイズされたナレッジグラフに拡張することができる。このトラバースは、ユーザデータセット内のエンティティ間の、可能性のある追加の関係と、関連する事実とを、参照ナレッジグラフから特定するのにも役立ち得る。スコアリング関数を用いることにより、特定したエンティティおよび関係から、エンティティおよび／または関係を選択することができ、次に、選択したエンティティおよび／または関係を、シードグラフに追加することにより、カスタマイズされたナレッジグラフを生成することができる。生成した、カスタマイズされたナレッジグラフを、特定のナレッジグラフ埋め込み技術を用いて、カスタムチャットボット等のカスタマーアプリケーションのために使用することができる。アブレーション研究（ablation study）は、カスタマイズされたナレッジグラフによって捕捉された追加の意味論的情報が、カスタムチャットボットのパフォーマンスを改善できることを示す。本明細書に開示されている技術は、質問回答または関係抽出等のその他の用途に使用することもできる。
【００１９】
本明細書で使用される、「チャットボット」、「ボット」または「スキル」は、とりわけインターネットを介して行われる人間のユーザとの会話をシミュレートするように設計されたコンピュータプログラムを意味する。個々のスキルは、ユーザと対話し、特定種類のタスク、たとえば食品の注文、予約の実行、および連絡情報の変更を遂行するように、設計することができる。各スキルは、テキストメッセージと選択リストのような単純なＵＩ要素との組み合わせを通して、ユーザがタスクを完了するのを支援することができる。
【００２０】
本明細書で使用される「意図」という用語は、ユーザが、当該ユーザの代わりにスキルが実行することを期待する、アクションまたはタスクのカテゴリを意味し得る。「エンティティ」という用語は、スキルがタスクを遂行することを可能にする、ユーザからの重要情報を特定する変数を意味し得る。「コンポーネント」という用語は、スキルがユーザに応答するために使用できる各種機能を意味し得る。「コンポーネント」という用語は、テキストを出力すること、またはバックエンドからの情報を返してカスタムロジックを実行すること等の一般的な機能を意味し得る。「ダイアログフロー」という用語は、スキルとユーザとの対話の定義を意味し得るものであり、スキルが、ユーザ入力に従って如何にして応答し振る舞うかを説明することができる。「チャネル」という用語は、スキルが、メッセージングプラットフォームまたはクライアントメッセージングアプリケーションにアクセスできるようにする、プラットフォーム固有の構成を意味し得る。１つのスキルは、このスキルのために構成されたいくつかのチャネルを有することができるので、異なるサービスまたはプラットフォーム上で同時に実行することができる。
【００２１】
本明細書で使用される、発話またはメッセージは、会話中にやり取りされる１つ以上の文を意味し得るものであり、会話は、１つ以上の発話またはメッセージを含み得る通信セッションを意味し得る。会話は、１つ以上の段階または状態を含み得る。会話の流れは、同じ段階または状態と段階（または状態）から段階（または状態）への同じ移行を含む複数の会話を抽象化したものであってもよい。各会話は、対応する会話の流れの特定の事例であってもよい。会話または会話の流れの状態または段階は、ボットシステムがその他のボットシステムまたは人との会話を行うために維持する状態機械の状態に関連付けることができる。場合によっては、状態は、エンドユーザの意図または目的に対応し得る。本明細書で使用されるエンドユーザは、メッセージングアプリケーションまたはプラットフォームを通してボットシステムとの会話に参加する人物または別のエンティティ等の、ボットシステムのエンドユーザを意味し得る。たとえば、エンドユーザは、ボットシステムを所有する企業の顧客またはクライアントであってもよい。本明細書で使用される、解析システムのユーザは、ボットシステムの所有者、オペレータ、管理者、または開発者を意味し得る。
【００２２】
以下の記載では、説明のために、具体的な詳細事項を、本開示の例が十分に理解されるようにするために記述する。しかしながら、各種例はこれらの具体的な詳細事項がなくても実施し得ることは明らかであろう。次の記載は、例のみを提供するが、本開示の範囲、利用可能性または構成を限定することを意図している訳ではない。むしろ、これらの例の次の記載は、例を実現することを可能にする説明を当業者に提供するであろう。添付の請求項に記載の本開示の精神および範囲から逸脱することなく、要素の機能および構成のさまざまな変更を行い得ることが、理解されるはずである。図面および明細書は限定を意図したものではない。回路、システム、ネットワーク、プロセス、およびその他のコンポーネントは、不必要な詳細で例を曖昧にしないようにするために、コンポーネントとしてブロック図で示す場合がある。その他の例において、周知の回路、プロセス、アルゴリズム、構造および技術は、これらの例を曖昧にしないようにするために、不要な詳細なしで示される場合がある。本明細書に開示される教示は、モバイルアプリケーション、非モバイルアプリケーション、デスクトップアプリケーション、ウェブアプリケーション、エンタープライズアプリケーション等のような、さまざまな種類のアプリケーションに応用することもできる。さらに、本開示の教示は、特定の動作環境（たとえばオペレーティングシステム、デバイス、プラットフォーム等）に限定される訳ではなく、代わりに、複数の異なる動作環境に適用することができる。
【００２３】
また、個々の例は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明される場合がある。フローチャートは、動作を逐次プロセスとして説明することができるが、動作のうちの多くは並列にまたは同時に実行し得るものである。加えて、動作の順序を並べ替えてもよい。プロセスは、その動作が完了すると終了するが、図面には含まれていない追加のステップを有する可能性がある。プロセスは、方法、関数、手順、サブルーチン、サブプログラム等に対応し得る。プロセスが関数に対応する場合、その終了は、この関数を呼出関数または主関数に戻すことに対応し得る。
【００２４】
「例」または「具体例としての」という語は、本明細書において、「例、事例、または例証の役割を果たす」ことを意味するために使用される。本明細書において「具体例」または「例」として記載されている実施形態または設計は、必ずしもその他の実施形態または設計よりも好ましいまたは好都合であると解釈される訳ではない。
【００２５】
「マシン読取可能記憶媒体」または「コンピュータ読取可能記憶媒体」という用語は、命令（複数の命令）および／またはデータを格納する、含む、または運ぶことが可能な、持ち運び可能または不能の記憶装置、光記憶装置、およびその他の各種媒体を含むが、これらに限定される訳ではない。マシン読取可能記憶媒体またはコンピュータ読取可能記憶媒体は、データを格納することができる非一時的な媒体を含み得るが、無線でまたは有線接続を介して伝搬される搬送波および／または一時的な電子信号を含まない。非一時的な媒体の例は、磁気ディスクまたはテープ、コンパクトディスク（ＣＤ）またはデジタル多目的ディスク（ＤＶＤ）等の光記憶媒体、フラッシュメモリ、メモリまたはメモリデバイスを含み得るが、これらに限定される訳ではない。コンピュータプログラムプロダクトは、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造もしくはプログラムステートメントの任意の組み合わせを表すことができる、コードおよび／またはマシン実行可能命令を含み得る。コードセグメントは、別のコードセグメントまたはハードウェア回路に、情報、データ、引数、パラメータ、またはメモリコンテンツを送るおよび／または受信することにより、結合することができる。情報、引数、パラメータ、データ等は、メモリシェア、メッセージパッシング、トークンパッシング、ネットワーク送信等を含む、任意の適切な手段で、送る、転送する、または送信することができる。
【００２６】
さらに、例は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはこれらの任意の組み合わせによって実現することができる。必要なタスクを実行するためのプログラムコードまたはコードセグメント（たとえばコンピュータプログラムプロダクト）は、ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現される場合、マシン読取可能媒体に格納することができる。プロセッサは必要なタスクを実行し得る。
【００２７】
図面のうちのいくつかの図面に示されるシステムは、さまざまな構成で提供することができる。いくつかの例において、システムは、当該システムの１つ以上のコンポーネントが、クラウドコンピューティングシステムにおける１つ以上のネットワークに分散される分散型システムとして構成することができる。
【００２８】
コンポーネントが特定の動作を実行する「ように構成される」と記載されている場合、このような構成は、たとえば、電子回路またはその他のハードウェアを、この電子回路（たとえばマイクロプロセッサまたはその他適切な電子回路）をプログラムまたは制御することによって当該動作またはその任意の組み合わせを実行するように設計することで、実現することができる。
【００２９】
世界中の多くのユーザが、短いリアクションを得るためにインスタントメッセージングまたはチャットプラットフォーム上にいる。組織はしばしばこれらのインスタントメッセージングまたはチャットプラットフォームを使用することにより、顧客（またはエンドユーザ）と生で会話する。しかしながら、顧客またはエンドユーザと生で対話を行うためにサービス要員を雇うのは組織にとって非常に高コストになる可能性がある。そこで、チャットボット（ボット、スキル、チャターボット、またはトークボットとも呼ばれる）が、とりわけインターネットを介してエンドユーザとの会話をシミュレートするために開発され始めた。エンドユーザは、エンドユーザが既にインストールして使用しているメッセージングアプリケーションを通してボットと対話することができる。一般的に人工知能（ＡＩ）によって駆動されるインテリジェントボットは、生の会話において、より知的に文脈に応じたコミュニケーションを行うことができるので、ボットおよびエンドユーザ間でより自然な会話が行えるようにして会話体験を向上させることができる。エンドユーザが、ボットがそれに対する応答方法を知っている、固定された一組のキーワードまたはコマンドを覚える代わりに、インテリジェントボットが、自然言語によるユーザの発話に基づいてエンドユーザの意図を理解しそれに応じて反応することができる。
【００３０】
ボットシステムは、エンドユーザの発話に基づいてエンドユーザの意図を特定するための１つ以上のユーザ意図分類エンジンと、特定したエンドユーザの意図に従ってユーザの発話に対して知的に文脈に応じて応答するための１つ以上のダイアログエンジンとを含み得る。しかしながら、エンドユーザの意図をユーザの発話に基づいて判断することができるユーザ意図分類エンジン等のボットシステムを構築することは、難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さ、入力空間の寸法（たとえば起こり得るユーザの発話）、および出力空間のサイズ（意図の数）にある。
【００３１】
ボットは、一般的に、自然言語のメッセージを使用するメッセージングアプリケーションを通して、自然言語メッセージ（たとえば質問またはコメント）に応答することができる。企業は、１つ以上のボットシステムを使用しメッセージングアプリケーションを通してエンドユーザと対話する場合がある。チャネルと呼ぶことができるメッセージングアプリケーションは、エンドユーザが既にインストールしており使い慣れている、エンドユーザが好むメッセージングアプリケーションであってもよい。よって、エンドユーザは、ボットシステムとチャットするために新たなアプリケーションをダウンロードしてインストールする必要はない。メッセージングアプリケーションは、たとえば、オーバー・ザ・トップ（ＯＴＴ）メッセージングチャネル（Ｆａｃｅｂｏｏｋ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、Ｆａｃｅｂｏｏｋ  ＷｈａｔｓＡｐｐ、ＷｅＣｈａｔ（登録商標）、Ｌｉｎｅ、Ｋｉｋ、Ｔａｌｋ、Ｓｋｙｐｅ（登録商標）、Ｓｌａｃｋ、またはＳＭＳ等）、仮想プライベートアシスタント（Ａｍａｚｏｎ（登録商標）  Ｄｏｔ、Ｅｃｈｏ、またはＳｈｏｗ、Ｇｏｏｇｌｅ  Ｈｏｍｅ（登録商標）、Ａｐｐｌｅ（登録商標）  ＨｏｍｅＰｏｄ等）、チャット機能を有するネイティブもしくはハイブリッド／応答モバイルアプリケーションもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリケーション拡張、または、音声ベースの入力（Ｓｉｒｉ（登録商標）、Ｃｏｒｔａｎａ（登録商標）、Ｇｏｏｇｌｅ  Ｖｏｉｃｅ、または対話のためのその他の音声入力を使用するインターフェイスを備えたデバイスまたはアプリケーション等）を、含み得る。
【００３２】
いくつかの例において、ボットシステムは統一リソース識別子（ＵＲＩ）に対応付けられてもよい。ＵＲＩは文字列を用いてボットシステムを特定することができる。ＵＲＩは１つ以上のメッセージングアプリケーションシステムのウェブフック（webhook）として使用することができる。ＵＲＩは、たとえば、統一リソースロケータ（ＵＲＬ）または統一リソース名（ＵＲＮ）を含み得る。ボットシステムは、メッセージングアプリケーションシステムからメッセージ（たとえばハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）ポストコールメッセージ）を受信するように設計することができる。ＨＴＴＰポストコールメッセージは、メッセージングアプリケーションシステムからＵＲＩに向けられてもよい。いくつかの実施形態において、メッセージはＨＴＴＰポストコールメッセージと異なる場合がある。たとえば、ボットシステムはショートメッセージサービス（ＳＭＳ）からメッセージを受信することができる。本明細書における説明はボットシステムがメッセージとして受信する通信に言及しているが、メッセージは、ＨＴＴＰポストコールメッセージ、ＳＭＳメッセージ、または２つのシステム間のその他任意の種類のメッセージでもよいことを、当業者は理解するであろう。
【００３３】
エンドユーザは、人々の間の対話と同様に、会話による対話（会話ユーザインターフェイス（ＵＩ）と呼ばれることもある）を通してボットシステムと対話することができる。いくつかの場合において、この対話は、エンドユーザがボットに「Hello」と言い、ボットが「Hi」で応答しエンドユーザに用件を尋ねることを含む。いくつかの場合において、この対話は、たとえばある口座から別の口座への金銭の移動の場合のバンキングボットとの取引の対話、たとえば休暇残を確認する場合のＨＲボットとの情報の対話、または、たとえば購入した商品の返品について話すまたはテクニカルサポートを求める場合の小売ボットとの対話、であってもよい。
【００３４】
いくつかの実施形態において、ボットシステムは、ボットシステムの管理者または開発者と対話することなく、エンドユーザとの対話を知的に処理することができる。たとえば、エンドユーザは、所望の目的を達成するために１つ以上のメッセージをボットシステムに送信することができる。メッセージは、テキスト、絵文字、音声、画像、動画、またはその他のメッセージ伝達方法等の、特定のコンテンツを含み得る。いくつかの実施形態において、ボットシステムは、このコンテンツを標準形態（たとえば適切なパラメータによるエンタープライズサービスに対する表現状態転送（representational state transfer）（ＲＥＳＴ）コール）に変換し自然言語応答を生成することができる。また、ボットシステムは、追加の入力パラメータをエンドユーザに促す、またはその他の追加情報を要求することができる。いくつかの実施形態において、ボットシステムは、エンドユーザの発話に対して受動的に応答するのではなくエンドユーザとの対話を開始することもできる。
【００３５】
ボットとの会話は、複数の状態を含む特定の会話フローに従うことができる。このフローは、入力に基づいて次に何が起こるかを規定することができる。いくつかの実施形態において、ユーザが規定した状態（たとえばエンドユーザの意図）と、複数の状態においてまたは状態ごとに実行すべきアクションとを含む状態機械を用いることにより、ボットシステムを実現することができる。会話は、ボットがこのフローについて下す決定に影響を与え得る、エンドユーザの入力に基づいて、さまざまな経路を取り得る。たとえば、ボットは、各状態で、エンドユーザの入力に基づいて、次に行うべき適切なアクションを決定するためにエンドユーザの意図を判断することができる。
【００３６】
意図は、エンドユーザが達成したい目標を含み得る。意図は、エンドユーザの入力を、エンドユーザのためにバックエンドシステムが実行すべきアクションにマッピングする。したがって、ボットは、エンドユーザが自然言語で発話した句に基づいて、エンドユーザの発話を、ピザの注文、口座残高の取得、送金、購入、返品等の、特定のユースケースまたはジョブにマッピングする。人間の会話は事実上非線形であることが多い。エンドユーザは会話中に異なる状態に分岐することがよくある。たとえば、エンドユーザは、資金を口座Ａから受取人に送金したい場合、ボットシステムとの会話を、たとえば、ディナーの代金を受取人に支払うようボットに依頼することで、始めてもよい。ボットは、たとえば「どの口座から？」で応答してもよい。エンドユーザは、当座預金口座を選ぶことができるがこの口座の残高に確信が持てないかもしれない。そこで、エンドユーザは、文脈を切り替えて残高および最新トランザクション等を尋ねてもよい。言い換えると、エンドユーザは、たとえば、送金から残高確認へ、次に最新トランザクションへの、フローおよび状態の変化を、トリガしてもよい。特定の時点で、エンドユーザは、最初の意図である受取人への支払に戻ると判断してもよい。このように、ボットシステムの１つのタスクは、エンドユーザの意図を自然言語発話から動的に判断することである。
【００３７】
ボットは、自然言語処理（natural language processing）（ＮＬＰ）エンジンおよび／または機械学習モデル（たとえば意図分類器）を用いることにより、エンドユーザの発話を特定の意図にマッピングすることができる。たとえば、機械学習に基づいたＮＬＰエンジンは、エンドユーザの自然言語会話を理解して分類すること、および、会話から必要な情報を抽出することを学習することにより、トランザクションを実行することまたは記録されているバックエンドシステムからのデータを調べること等の、正確なアクションを実行することができる。
【００３８】
図１は、特定の実施形態に係る、メッセージングアプリケーションを用いてエンドユーザと対話するためのボットシステムを実現するために使用し得る、分散型システム１００を示す。システム１００は、ボットシステム１２０と、１つ以上のメッセージングアプリケーションシステム１１５と、１つ以上のモバイルデバイス１１０等の１つ以上のエンドユーザデバイスとを含み得る。いくつかの例において、メッセージングアプリケーションは、電子デバイス（たとえばデスクトップコンピュータ、ラップトップ、モバイルデバイス１１０等）にインストールすることができる。本明細書の記載はモバイルデバイスおよびメッセージングアプリケーションに言及するが、当業者は、任意の電子デバイスを使用し得ること、および、ＦＡＣＥＢＯＯＫ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキストおよびボイスメッセージング通信サービス、ＫＩＫ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、ＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）メッセンジャー、ショートメッセージサービス（ＳＭＳ）、またはエンドユーザが通信するためのプラットフォームを提供するその他任意のメッセージングアプリケーション等の、任意のメッセージングプラットフォームまたはメッセージングアプリケーションを使用し得ることを、理解するであろう。その他の例において、メッセージングアプリケーションは、モバイルデバイス１１０にインストールされているブラウザ（たとえば、ＧＯＯＧＬＥ  ＣＨＲＯＭＥ（登録商標）ブラウザ、ＭＯＺＩＬＬＡ（登録商標）ＦＩＲＥＦＯＸ（登録商標）ブラウザ、およびＩＮＴＥＲＮＥＴ  ＥＸＰＬＯＲＥＲ（登録商標）ブラウザ）を通して実行されてもよい。いくつかの実施形態において、２つ以上のメッセージングアプリケーションをエンドユーザデバイスにインストールして２つ以上のメッセージングプラットフォーム（２つ以上のメッセージングアプリケーションシステム１１５等）を通して通信してもよい。
【００３９】
メッセージングアプリケーションは、メッセージングアプリケーションシステム１１５等のメッセージングプラットフォームによって容易にすることができる。モバイルデバイス１１０は、第１のネットワーク（たとえばインターネット）によってメッセージングアプリケーションシステム１１５に接続することができる。メッセージングアプリケーションシステム１１５は、Ｆａｃｅｂｏｏｋ、Ｔｅｎｃｅｎｔ、Ｇｏｏｇｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）等のような第三者が提供するメッセージングプラットフォームであってもよい。メッセージングアプリケーションシステム１１５は、複数のモバイルデバイスまたはその他のエンドユーザデバイスにわたってメッセージングアプリケーションを通して送受信されるコンテンツを管理することができる。
【００４０】
ボットシステム１２０（たとえば１つ以上のサーバ上で実現される）は、メッセージングアプリケーションシステム１１５と通信可能に接続されてメッセージを送受信することもできる。メッセージングアプリケーションシステム１１５とボットシステム１２０との間の通信は、第２のネットワーク（たとえばインターネット）を通して行われてもよい。第１のネットワークおよび第２のネットワークは、同一のネットワークであってもよく、または、同様のもしくは全く異なるネットワークであってもよい。メッセージングアプリケーションシステム１１５は、モバイルデバイス１１０からのコンテンツ（たとえばメッセージ、またはメッセージからの情報）を、インターネットを用いてボットシステム１２０にルーティングすることができる。いくつかの実施形態において、コンテンツの宛先（たとえばボットシステム１２０のＩＤ）は、名目上のアドレスとしてコンテンツに含まれていてもよい。いくつかの実施形態において、ボットシステム１２０を、２つ以上のメッセージングアプリケーションシステム１１５と通信するように構成してもよい。
【００４１】
先に述べたように、エンドユーザ間でまたはエンドユーザとボットシステムとの間でやり取りされるコンテンツは、たとえば、テキスト、絵文字、音声、媒体（たとえば写真、動画、リンク）、またはその他任意のメッセージ伝達方法を含み得る。ボットシステム１２０がたとえばＦＡＣＥＧＢＯＯＫ（登録商標）Ｍｅｓｓｅｎｇｅｒから受信するメッセージの一例は以下を含み得る。
【００４２】
【数１】
2021534493.tif 000003
【００４３】
ボットシステム１２０は、メッセージングアプリケーションシステム１１５とボットシステム１２０との間のインターフェイスの働きをするコネクタ１３０を用いて、メッセージングアプリケーションシステム１１５からのコンテンツを受信することができる。いくつかの実施形態において、コネクタ１３０は、さまざまなメッセージングアプリケーションシステムにまたがるコンテンツをボットシステム１２０が解析できるよう、メッセージングアプリケーションシステム１１５からのコンテンツを標準化してもよい。コンテンツ標準化処理は、各タイプのメッセージングアプリケーションからのコンテンツを、処理のために共通フォーマットになるようフォーマットすることを含み得る。いくつかの実施形態において、ボットシステム１２０は、メッセージングアプリケーション（ＦＡＣＥＢＯＯＫ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、ＷＨＡＴＳＡＰＰ（登録商標）インスタントメッセージングソフトウェア、ＷＥＣＨＡＴ（登録商標）モバイルテキストおよびボイスメッセージング通信サービス、ＫＩＫ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、ＴＥＬＥＧＲＡＭ（登録商標）  Ｍｅｓｓｅｎｇｅｒ、ＳＫＹＰＥ  ＭＯＢＩＬＥ（登録商標）メッセンジャー、ショートメッセージサービス（ＳＭＳ）等）の各々について１つ以上のコネクタを含み得る。いくつかの実装例において、コネクタ１３０はコンテンツをメッセージ・インキュー１４０にルーティングすることができる。メッセージ・インキュー１４０は、コンテンツを受信した順序で格納するバッファ（たとえば先入れ先出し（ＦＩＦＯ）バッファ）を含み得る。いくつかの実施形態において、各コネクタ１３０を１つ以上のメッセージ・インキューに対応付けることができる。
【００４４】
メッセージ・インキュー１４０は、メッセージプロセッサ１５０が利用できるようになると、コンテンツをメッセージプロセッサ１５０に送信する。いくつかの実施形態において、メッセージプロセッサ１５０は、メッセージ・インキュー１４０からコンテンツをプル（pull）することができる。以下で詳細に述べるように、メッセージプロセッサ１５０は、メッセージをパースし、パースしたメッセージの意図を判断することができる。いくつかの実施形態において、メッセージプロセッサ１５０は、自然言語プロセッサ１５２と意図判断サブシステム１５４とを含み得る。自然言語プロセッサ１５２は、メッセージをパースし、主語、述語（たとえばアクション）、および／または目的語を特定すること等の、特定の意味解析を実行することができる。意図判断サブシステム１５４は、パースしたメッセージに基づいてエンドユーザの意図を判断することができる。先に述べたように、意図はメッセージの目的を含み得る。たとえば、メッセージの目的は、ピザを注文すること、コンピュータを注文すること、送金すること、配達について質問すること等を含み得る。いくつかの実施形態において、エンティティと呼ばれることもある、行うべきアクションを、より具体的に定義するまたは明確にする、意図に対応付けられたパラメータを、自然言語プロセッサ１５２および／または意図判断サブシステム１５４により、メッセージから抽出することもできる。
【００４５】
メッセージプロセッサ１５０がコンテンツに基づいてエンドユーザの意図を判断した後に、判断した意図（およびこの意図に対応付けられたパラメータ）をアクションエンジン１６０に送信することができる。アクションエンジン１６０を用いることにより、意図（およびこの意図に対応付けられたパラメータ）と、先に述べた状態機械の現在の状態（またはコンテキスト）とに基づいて、実行すべきアクションを判断することができる。たとえば、アクションエンジン１６０は、特定のアウトバウンドコンテンツを応答としてメッセージ・アウトキュー１７０に送信することができ、および／または、エンタープライズサービス１２５等のエンタープライズサービスにコマンドを送信するまたはエンタープライズサービスから情報を取り出すことができる。メッセージ・アウトキュー１７０は、アウトバンドコンテンツをコネクタ１３０に送信することができる。そうすると、コネクタ１３０は、アウトバウンドコンテンツを、アクションエンジン１６０が示すメッセージングアプリケーションシステムに送信することができ、上記メッセージングアプリケーションシステムは、メッセージングアプリケーションシステム１１５と同一であっても異なっていてもよい。メッセージングアプリケーションシステム１１５は次にアウトバウンドコンテンツをモバイルデバイス１１０上のメッセージングアプリケーションに転送することができる。
【００４６】
ボットシステム１２０は、１つ以上のエンタープライズサービス（たとえばエンタープライズサービス１２５）と通信することができる、または、ボットシステム１２０から受信したメッセージを格納および／または解析するために１つ以上の記憶システムと通信することができる、または、コンテンツをボットシステム１２０に提供するためにコンテンツシステムと通信することができる。エンタープライズサービス１２５は、コネクタ１３０、アクションエンジン１６０、またはその任意の組み合わせのうちの１つ以上と通信することができる。エンタープライズサービス１２５は、メッセージングアプリケーションシステム１１５との通信と同様に、コネクタ１３０と通信することができる。エンタープライズサービス１２５は、１以上のエンドユーザと対応付けられるべきコネクタ１３０にコンテンツを送信することができる。エンタープライズサービス１２５は、コンテンツをコネクタ１３０に送信することにより、エンドユーザに対応付けられたアクションをボットシステム１２０に実行させることもできる。アクションエンジン１６０は、エンタープライズサービス１２５と通信することにより、エンタープライズサービス１２５から情報を取得する、および／またはアクションエンジン１６０が特定したアクションを実行するようエンタープライズサービス１２５に指示することができる。
【００４７】
いくつかの実施形態において、ボットシステム１２０は１つ以上のタイマーを含み得る。タイマーは、ある時間の経過後に、アクションエンジン１６０がコネクタ１３０およびメッセージングアプリケーションシステム１１５を用いてコンテンツを送信するようにすることができる。いくつかの実施形態において、タイマーは、エンドユーザまたはエンタープライズサービス１２５の場合と同様に、コンテンツをボットシステム１２０に送信することができる。たとえば、タイマーは、エンドユーザからのメッセージが解析されるように、解析すべきメッセージをボットシステム１２０に送信することができる。
【００４８】
ある特定の実施形態において、エンドユーザは、モバイルデバイス１１０を用い、メッセージングアプリケーションシステム１１５を通してメッセージをボットシステム１２０に送信することができる。このメッセージは、「Hello」または「Hi」といった挨拶を含み得る。ボットシステムは、エンドユーザとの新たな会話が始まったと判断し状態機械を始動させることができる。いくつかの実施形態において、ボットシステムは、エンドユーザの１つ以上の特徴を特定することができる。たとえば、ボットシステムは、メッセージングアプリケーションシステム上でエンドユーザに対応付けられたプロファイルを用いてこのエンドユーザの名前を特定することができる。ボットシステムは、１つ以上の特徴を用いて、メッセージングアプリケーション上でエンドユーザに応答することができる。応答は、エンドユーザから受信したメッセージに対して応答する、エンドユーザ宛てのメッセージを含み得る。たとえば、応答は、「Hi Tom, What can I do for you（こんにちはトム。何か用事はありませんか？）」のような、エンドユーザの名前を用いた挨拶を含み得る。ボットシステムに対応付けられた企業に応じて、ボットシステムは、この企業の目標を達成するよう進化してもよい。たとえば、ボットシステムがピザデリバリーサービスに対応付けられている場合、ボットシステムは、エンドユーザがピザを注文したいか否かを尋ねるメッセージをエンドユーザに送ることができる。ボットシステムとエンドユーザとの間の会話は、そこから始まって、ボットシステムが会話を終えるまでまたはエンドユーザがボットシステムに応答するのを止めるまで、続けられるであろう。
【００４９】
いくつかの実施形態において、ボットシステムがエンドユーザとの会話を開始してもよい。ボットシステムが開始する会話は、エンドユーザとの前の会話に対する応答であってもよい。たとえば、エンドユーザが前の会話でピザを注文したとする。そうすると、ボットシステムは、ピザの準備できたときに会話を開始してもよい。いくつかの実施形態において、ボットシステムは、ボットシステムに対応付けられた企業からの指示を受けた（たとえばピザが準備できたというメッセージを従業員がボットシステムに送信した）ときに、ピザの準備ができたと判断してもよい。会話は、エンドユーザに送信される、ピザが準備できたことを示すメッセージを含み得る。
【００５０】
いくつかの実施形態において、ボットシステムは、前のメッセージを受けたときのメッセージングアプリケーションと異なるメッセージングアプリケーションで、メッセージをエンドユーザに送信してもよい。たとえば、ボットシステムは、ＦＡＣＥＧＢＯＯＫ（登録商標）メッセンジャーではなくショートメッセージサービス（ＳＭＳ）を用いてメッセージを送信すると判断することができる。このような実装例において、ボットシステムは、複数のメッセージングアプリケーションを統合することができる。
【００５１】
いくつかの実施形態において、ボットシステムは、タイマーに基づいて会話を開始すると判断してもよい。たとえば、ボットシステムは、あるユーザについて、ピザが注文されてから、１週間タイマーを持つと判断してもよい。１週間タイマーが切れるとボットシステムがエンドユーザとの間で別のピザの注文のための会話を開始するようにしてもよい。このタイマーは、企業によって構成されボットシステムによって実装されてもよい。
【００５２】
先に述べたように、いくつかの実施形態において、アクションエンジン１６０は、いくつかのエンタープライズサービス１２５にコマンドを送信するまたはいくつかのエンタープライズサービス１２５から情報を取り出してもよい。たとえば、ボットシステム１２０（より具体的にはメッセージプロセッサ１５０）が、意図が残高確認であると判断した場合、ボットシステム１２０は、残高を確認する口座がいくつかの口座（たとえば当座預金口座または貯蓄預金口座）のうちのいずれであるかを判断することができる。エンドユーザの入力が「What's my balance in my savings account（私の貯蓄預金口座の残高は？）」である場合、ボットシステム１２０は、「savings（貯蓄）」を抽出し銀行サーバに対して残高を確認するようコマンドを送信し、その後、受信した残高情報をメッセージを通してエンドユーザに送信してもよい。エンドユーザが最初に発したのが「what's the balance in my account（私の口座の残高は？）」だけであった場合、ボットシステム１２０は、さらに特定の口座を指定するようエンドユーザを促すメッセージをエンドユーザに送信してもよく、または、エンドユーザのすべての口座の情報を取り出してこの口座情報をエンドユーザに送信しエンドユーザが選択するようにしてもよい。
【００５３】
いくつかの実施形態において、ボットシステムは、会話と会話との間の情報を保持してもよい。この情報は、エンドユーザとボットシステムとの間で新たな会話が開始されるたびにボットシステムが質問をする必要をなくすために、後から使用されるものであってもよい。たとえば、ボットシステムは、エンドユーザによる前のピザの注文に関する情報を保存してもよい。新たな会話において、ボットシステムは、エンドユーザが前回の注文と同じ注文を希望するか否かをエンドユーザに尋ねるメッセージをエンドユーザに送信してもよい。
【００５４】
いくつかの実施形態において、ボットシステム１２０は、エンドユーザに対応付けられた情報をキャッシュに保存してもよい。キャッシュは、コネクタ１３０からメッセージングアプリケーションシステムにアウトバウンドメッセージが送信された後に、情報を保存するためにデータベースに書き込んでもよい。その他の実施形態において、キャッシュは異なる時点でデータに書き込んでもよい（たとえば特定のイベントの後、各イベントの後、一定時間の後、または、データベースにいつ書き込むかを判断するためのその他任意のメトリックの後）であってもよい。
【００５５】
ボットシステム１２０は、減速が確認されたときに各コンポーネントがスケーリングされるようにしてもよい。たとえば、ボットシステム１２０は、コネクタ１３０に到着するメッセージの数がしきい値を超えたことを確認すると、さらに他の１つ以上のコネクタをコネクタ１３０に追加してもよい。加えて、メッセージ・インキュー、メッセージプロセッサ、アクションエンジンのインスタンス、およびメッセージ・アウトキューの数を、減速が発生している場所に応じて増加させてもよい。このような実装例において、追加のコンポーネントは、その他の追加のコンポーネントを加えることなく、加えることができる。たとえば、コネクタは、アクションエンジンの追加インスタンスを加えることなく、加えることができる。いくつかの実装例において、ボットシステム１２０の１つ以上のコンポーネントまたはあるコンポーネントの一部を、仮想マシン上で実行してもよい。仮想マシン上で実行することにより、さらに他の仮想マシンを所望のときに始動させることができる。
【００５６】
先に述べたように、エンドユーザの発話に基づいてエンドユーザの意図を判断できるユーザ意図分類エンジン等のボットシステムの構築は、難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さ、入力空間の寸法（たとえば起こり得るエンドユーザの発話）、および出力空間のサイズ（意図の数）にある。そのため、ボットシステムのパフォーマンスおよびボットシステムに対するユーザの体験を改善するためには、新たなボットシステムをモニタリングし、デバッグし、修正する必要があるであろう。多くの場合において、ボットシステムのパフォーマンスが所望のパフォーマンスよりも低い根本的理由をより具体的に特定し解析または最適化ツールを用いることなくボットシステムを如何にして改善するかを判断することは、難しいであろう。
【００５７】
状況によっては、ボットの所有者、開発者、または管理者が、ボットを改善するために、ボットの動作状態をモニタリングしこのボットがどのように使用されているかおよびエンドユーザがどこでボットをあきらめたかを理解することを所望する場合がある。たとえば、ボットの所有者、開発者、または管理者は、ボットシステムの期待以下の要素を特定して診断するために、ボットのどの会話が成功しどの会話が失敗したかを知ることを所望する場合がある。
【００５８】
いくつかの実施形態に従い、解析システムをボットシステムと統合してもよい。解析システムは、エンドユーザとボットシステムとの間の会話中に発生したイベントをモニタリングし、収集したイベントを集約して解析し、すべての会話、会話のさまざまなカテゴリ、および個々の会話等の、さまざまな一般化レベルで、会話に関する情報をグラフィックユーザインターフェイス上で図示してもよい。たとえば、グラフィックユーザインターフェイスは、特定種類の会話または個々の会話をフィルタリングまたは選択するというオプションを表示し、選択された情報を、たとえば会話の経路を視覚化することで図示してもよい。また、解析システムは、ボットシステムを改善するための提案、オプション、またはその他の情報を提供してもよい。
【００５９】
図２は、特定の実施形態に係る、ボットシステム（ボットシステム１２０等）と、ボットシステムのパフォーマンスをモニタリングし解析し視覚化し改善するためのボット解析システムとを含む、統合システム２００を示す。示されているように、ボットシステムは、コネクタ２３０と、ダイアログエンジン２１２、意図モデラー２１４、エンティティリゾルバ２１６、およびカスタムコンポーネント２１８等の複数のボットエンジンとを含み得る。また、ボットシステムは、データベース２４０と、管理ＡＰＩ２５０と、ユーザインターフェイス２５４と、ＵＩサーバ２５２とを含み得る。ボット解析システムは、コレクタ２５５と、エンリッチエンジン２６０と、データベース２７０と、ＲＥＳＴサーバ２８０とを含み得る。また、ボット解析システムは、ユーザインターフェイス２９２とＵＩサーバ２９０とを含み得る。ボット解析システムのコレクタ２５５は、ボットシステムで発生したイベント２０５を収集することができる。ボット解析システムからのフィードバック２９４は、ユーザインターフェイス２９２およびユーザインターフェイス２５４を通してボットシステムに提供することができる。
【００６０】
コネクタ２３０は、チャネル２２０および２２２等の１つ以上のチャネルを通して、ボットシステムと１以上のエンドユーザとの間のインターフェイスとして機能することができる。各チャネルは、メッセージングチャネル（Ｆａｃｅｂｏｏｋ  Ｍｅｓｓｅｎｇｅｒ、Ｆａｃｅｂｏｏｋ  ＷｈａｔｓＡｐｐ、ＷｅＣｈａｔ、Ｌｉｎｅ、Ｋｉｋ、Ｔｅｌｅｇｒａｍ、Ｔａｌｋ、Ｓｋｙｐｅ、Ｓｌａｃｋ、またはＳＭＳ等）、仮想プライベートアシスタント（Ａｍａｚｏｎ  Ｄｏｔ、ＥｃｈｏまたはＳｈｏｗ、Ｇｏｏｇｌｅ  Ｈｏｍｅ、Ａｐｐｌｅ  ＨｏｍｅＰｏｄその他等）、チャット機能を有するネイティブもしくはハイブリッド／応答モバイルアプリケーションもしくはウェブアプリケーションを拡張するモバイルおよびウェブアプリケーション拡張、または、音声ベースの入力（Ｓｉｒｉ、Ｃｏｒｔａｎａ、Ｇｏｏｇｌｅ  Ｖｏｉｃｅ、または対話のためのその他の音声入力を使用するインターフェイスを備えたデバイスもしくはアプリケーション等）といった、メッセージングアプリケーションであってもよい。いくつかの実施形態において、コネクタ１３０は、さまざまなチャネルからのコンテンツを、ボットシステムがさまざまなメッセージングアプリケーションシステムにわたるコンテンツを解析できるように、標準化してもよい。コンテンツ標準化処理は、各タイプのメッセージングアプリケーションからのコンテンツを、処理のために共通フォーマットになるようフォーマットすることを含み得る。いくつかの実施形態において、ボットシステムは、各チャネルに対して１つ以上のコネクタを含み得る。
【００６１】
意図モデラー２１４を用いることにより、エンドユーザの発話に対応するエンドユーザの意図を判断することができる。いくつかの実施形態において、ボットシステムがエンドユーザから受信した１つ以上のメッセージに基づいてエンドユーザの意図を判断するための意図モデラー２１４は、自然言語プロセッサを用いることにより、品詞（動詞、名詞、形容詞）にタグ付けし、見出し語（lemma）／語幹（stem）（runs／running／ran→run）を発見し、エンティティにタグ付けする（テキサス→場所）ことができる。いくつかの実施形態において、意図モデラー２１４はメッセージを標準化してもよい。たとえば、「Mary ran to Texas（メアリーはテキサスまで走った）」は、「PERSON run to LOCATION（人が場所まで走る）」とすることができる。また、意図モデラーは、エンドユーザのメッセージ内で同一の意味を持つ単語を検出するためのロジックを含み得る。たとえば、訓練データセットが「Mary ran to Texas（メアリーはテキサスまで走った）」および「Bob walked to Detroit（ボブはデトロイトまで歩いた）」を含みどちらも同じ意図にマッピングされ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」と同一であるからである。もう１つの例において、「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（注文）」が、ピザの注文が２０％の確率であることを示唆し「pizza（ピザ）」がピザの注文が１０％の確率であることを示唆する場合、全体の確率は、１−（１−０．２）（１−０．１）＝２８％であろう。いくつかの確率は、単語の存在に基づいていてもよく、または特定の言語要素に基づいていてもよく、これは否定または人称代名詞の存在と同様である。
【００６３】
別のレベルのルールは、単語の組み合わせであるテンプレートルールであってもよい。いくつかの例において、訓練データセット中のすべての文は、一旦標準化されると、自動的にルールになることができる。このような例において、訓練データセットは極めて少数の短い文を含んでいてもよい。テンプレートルールは、確率１を返す。新たなルールが帰納プロセスを通して生成されてもよい。たとえば、以下の文「How much did I spend last month on gas?（先月の私のガソリン支出は？）」および「How much did I spend on May on food（５月の私の食料支出は？）」は、支出追跡（track spending）に属し得る。これらの文を用いることにより、これらの文が共有する部分として「How much did I spend（私の支出は）」というルールを導くことができる。その他の例において、訓練データセットは、「How much did I spend」という句を含むことにより、同じ結果を得ることができる。
【００６４】
上述の例は、ある意図の定義が、指定されたエンティティの変形（たとえば、「Send money to Sue」および「Send money to Bob」）等の複製を含まないようにすることを可能にする。しかしながら、１つまたは２つの単語が異なる類似する文を、訓練に使用することができる。類似する文により、モデルは、意図の解明のために、どの単語が同じ意味を持ち得るのか、および、どの単語が共通のスペルミスであり得るのかを、学習することができる。
【００６５】
（動詞のような）特定の単語または一組の単語が、ある意図にとって重要である場合、確率は、このような単語（およびその同義語）を用いるより多くの例と、このような単語が他の意図に用いられるより少ない例とを持つことで、操作することができる。
【００６６】
このモデルが間違った表明を行うのを防止するための例を提供することもできる。たとえば、特定の意図にしか現れない特定のサブフレーズまたは単語は、間違った表明を引き起こす可能性がある。同様に、モデルが、訓練のために異なる意図に属する類似する文を用いて広いルールを合成することを防止することができる。
【００６７】
エンティティレゾルバ２１６は、エンドユーザの意図に対応付けられるエンティティ（たとえば物（object））を特定することができる。たとえば、意図モデラー２１４が特定した、「order pizza（ピザを注文する）」等のエンドユーザの意図に加えて、エンティティレゾルバ２１６は、ピザの種類、トッピングその他といった、この意図に対応付けられるエンティティを解明することができる。
【００６８】
ダイアログエンジン２１２を用いることにより、エンドユーザとボットシステムとの間の会話を処理することができる。たとえば、ダイアログエンジン２１２は、意図モデラー２１４が特定したエンドユーザの意図と、エンティティレゾルバ２１６が特定したエンドユーザの意図に対応付けられるエンティティとに基づいて、エンドユーザの発話に応答することができる。いくつかの実施形態において、ダイアログエンジン２１２は、ユーザが規定した状態（たとえばエンドユーザの意図）と、複数の状態においてまたは状態ごとに実行すべきアクションとを含む状態機械を用いることにより、エンドユーザとの会話を処理することができる。
【００６９】
カスタムコンポーネント２１８は、特定のボットシステムのためにカスタマイズされたモジュールを含み得る。たとえば、金融ボットは、たとえば、残高確認、資金振替、または請求書の支払に使用し得るカスタムコンポーネントを含み得る。
【００７０】
データベース２４０を用いることにより、分類モデルについてのデータ、会話のログ等のような、ボットシステムについてのデータを保存することができる。管理ＡＰＩ２５０を、ボットシステムの管理者または開発者が使用することにより、分類モデルの再訓練、意図の編集、そうでなければボットシステムの修正等の、ボットシステムの管理を行うことができる。管理者または開発者は、ユーザインターフェイス２５４およびＵＩサーバ２５２を用いることにより、ボットシステムを管理することができる。
【００７１】
ボットシステムの実行中に各種イベントが生成される可能性がある。これらのイベントは、ボットシステムに含まれる１つ以上の命令に基づいて生成される可能性がある。たとえば、イベントは、ボットシステムが、ボットシステムの管理者または開発者によって規定された特定の状態に入ったときに生成される場合がある。イベントが生成されると、ボット解析システムがこれらのイベントを収集、保存、および解析することができる。イベントを捕捉するときには、このイベントに対応付けられる追加情報を収集することもでき、追加情報は、イベントが生成される現在のコンテキストを示し得る。
【００７２】
たとえば、会話イベントがダイアログエンジン２１２によって生成されてもよい。会話イベントは、ボットシステムがエンドユーザデバイスから受信するメッセージ（ｍｓｇ＿ｒｅｃｅｉｖｅｄと呼ばれる）を含み得る。ｍｓｇ＿ｒｅｃｅｉｖｅｄは、以下のパラメータまたは変数、すなわち、メッセージの内容、ボットシステムがメッセージを受信する時間、受信したメッセージの言語、デバイスプロパティ（たとえばバージョンまたは名称）、オペレーティングシステムプロパティ（たとえばバージョンまたは名称）、地質学上のプロパティ（たとえばインターネットプロトコルアドレス、緯度、経度等）、識別情報（たとえばユーザＩＤ、セッションＩＤ、ボットシステムＩＤ、テナントＩＤ等）、タイムスタンプ（デバイスが作成し、デバイスが送信し、コレクタが導き出したタイムスタンプ）、チャネルその他うちの、１つ以上を含み得る。
【００７３】
会話イベントは、ボットシステムがエンドユーザデバイスに送信するメッセージ（ｍｓｇ＿ｓｅｎｔと呼ばれる）も含み得る。ｍｓｇ＿ｓｅｎｔは、メッセージの内容（たとえばメッセージのテキストまたはＨＴＭＬ）、ボットシステムがメッセージを送信する時間、メッセージの言語、メッセージの作成者（たとえばボットシステムまたはエンドユーザデバイス）、デバイスプロパティ、オペレーティングシステムプロパティ、ブラウザプロパティ（たとえばバージョンまたは名称）、アプリケーションプロパティ（たとえばバージョンまたは名称）、地質学上のプロパティ（たとえばインターネットプロトコルアドレス、緯度、経度等）、識別情報（たとえばユーザＩＤ、セッションＩＤ、ボットシステムＩＤ、テナントＩＤ等）、チャネル（たとえばＦａｃｅｂｏｏｋまたはＷｅｂｈｏｏｋ）その他のうちの、１つ以上を含み得る。
【００７４】
ダイアログエンジン２１２は、ダイアログ状態実行イベントも生成し得る。先に述べたように、ダイアログエンジン２１２は、状態機械を用いることにより、エンドユーザとの会話の流れを判断することができる。状態機械は、一組の状態と状態間の遷移のルールとを含み得る。ダイアログエンジン２１２は、エンドユーザの会話ごとに状態機械を実行し、ダイアログ状態実行イベントは、エンドユーザの発話を処理するためにダイアログエンジン２１２が経由する各状態について生成することができる。ダイアログ状態実行イベントの属性は、たとえば、状態名、コンポーネント名、次のアクション、エンティティマッチ、意図マッチ、変数、ユーザクエリステートメント、レスポンスステートメント、実行時間、通信言語、デバイスプロパティ、オペレーティングシステムプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を、含み得る。状態名は、現在実行されている状態または「エラー状態」の名称であってもよい。コンポーネント名は、現在の状態について実行されるボットコンポーネントの名称であってもよい。次のアクションは、実行すべき次のアクションであってもよい。エンティティマッチは、現在のメッセージで解明されたエンティティであってもよい。意図マッチは、スコアの値で解明された意図であってもよい。変数は、現在の状態についての変数値であってもよい。クエリステートメントは、エンドユーザが送信するメッセージであってもよい。レスポンスステートメントは、エンドユーザに送信されるメッセージであってもよい。実行時間は、完了した状態実行のタイムスタンプであってもよい。通信言語は、交わされているメッセージの言語であってもよい。デバイスおよび／またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応し得る。ブラウザおよび／またはアプリケーションプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
【００７５】
意図解明イベントは、意図モデラー２１４の実行の結果として発生し得る。意図モデラー２１４は、訓練された、またはそうでければ規定された分類モデルを用いることにより、エンドユーザの発話に基づいて一組の意図からエンドユーザの意図を特定することができる。意図分類の結果を、意図解明イベント属性として捕捉してもよく、これは、たとえば、最終意図分類結果（たとえば特定された意図）および一組の意図の中のそれぞれの意図に対応付けられた信頼度スコアとを含み得る。
【００７６】
エンティティリゾルバ２１６は、エンティティレゾルバイベントを生成することができる。エンティティは、エンドユーザの意図に対応付けられる物である。エンティティ定義ルールは、ボットシステムが作成されるときに決定されてもよい。たとえば、「ピザを注文する」といったエンドユーザの意図の解明に加えて、ボットシステムは、エンティティレゾルバ２１６を用いることにより、対応付けられる、ピザの種類、トッピング等のような、エンティティを解明することもできる。エンティティレゾルバイベントは、エンティティ解明で捕捉されてもよい。エンティティレゾルバイベントに対応付けられる属性の例は、エンティティ名、適用されるルール、検索語、解明された状態、クエリステートメント、エンティティの種類、実行時間、通信言語、デバイスのプロパティ、オペレーティングシステムのプロパティ、ブラウザのプロパティ、アプリケーションのプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を含み得る。エンティティ名は、現在解明されているエンティティの名称であってもよい。適用されるルールは、たとえば、先行、後続、または総計（aggregate）であってもよい。検索語は、宛先、起点等から／への検索語であってもよい。解明された状態は、エンティティについて解明されたダイアログ状態であってもよい。クエリステートメントは、エンティティの値を含むメッセージであってもよい。エンティティの種類は、システムであってもよくまたは導出されてもよい。実行時間は、エンティティ解明のタイムスタンプであってもよい。通信言語は交わされているメッセージの言語であってもよい。デバイスおよび／またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。ブラウザおよび／またはアプリケーションのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
【００７７】
カスタムコンポーネントも、予め規定されたイベントまたはカスタムイベント等のイベントを生成し得る。予め規定されたイベントは、カスタムコンポーネントの実行において捕捉されたプロパティであってもよい。予め規定されたイベントの属性の例は、コンポーネントの名称、イベントの名称、ペイロード、実行時間、通信言語、デバイスのプロパティ、オペレーティングシステムのプロパティ、ブラウザのプロパティ、アプリケーションのプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を、含み得る。コンポーネントの名称は、現在実行されているカスタムコンポーネントの名称であってもよい。イベントの名称は、呼び出され、ｉｎｖｏｃａｔｉｏｎ＿ｆａｉｌｅｄ、リプライされ、ｒｅｐｌｉｅｄ＿ｆａｉｌｅｄ等であってもよい。ペイロードは、失敗の場合、失敗の理由、スタックトレース等であってもよい。実行時間は、イベントが発生したときを示すタイムスタンプであってもよい。通信言語は、交わされているメッセージの言語であってもよい。デバイスおよび／またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。ブラウザおよび／またはアプリケーションのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
【００７８】
カスタムコンポーネントは、カスタムコンポーネントの実行中にカスタムイベントを発行することもできる。カスタムイベントの属性の例は、コンポーネントの名称、イベントの名称、カスタムペイロード、実行時間、通信言語、デバイスのプロパティ、オペレーティングシステムのプロパティ、ブラウザのプロパティ、アプリケーションのプロパティ、地質学上のプロパティ、識別情報、タイムスタンプ、チャネル等を、含み得る。コンポーネントの名称は、現在実行されているカスタムコンポーネントの名称であってもよい。イベントの名称は、ユーザ既定のイベント名（たとえばＢａｌａｎｃｅ＿Ｒｅｔｒｉｅｖｅｄ）であってもよい。ペイロードは、たとえば、｛“ａｍｏｕｎｔ”：“ＵＳＤ  １００”，“ａｃｃｏｕｎｔ”：“ｃｈｅｃｋｉｎｇ”｝であってもよい。実行時間は、イベントが発生した時間を示すタイムスタンプであってもよい。通信言語は、交わされているメッセージの言語であってもよい。デバイスおよび／またはオペレーティングシステムのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。ブラウザおよび／またはアプリケーションのプロパティは、ボットシステムと対話するエンドユーザに対応付けられてもよい。地質学上のプロパティは、ボットシステムと対話するエンドユーザの場所であってもよい。
【００７９】
エラーイベントおよびタイムアウトイベントも、ボットシステムによって実行中に生成されてもよい。エラーイベントは、エラーが発生したときに生成されてもよい。タイムアウトイベントは、エンドユーザの会話が一定期間止まっているときに生成されてもよく、これはチャネルにおいて構成されてもよい。
【００８０】
ボット解析システムは、ボットシステムがエンドユーザとの会話を実行し対応するイベントを生成するときに、イベントおよび追加情報を収集することができる。たとえば、コレクタ２５５は、イベントおよび追加情報を収集し収集した情報をキューに送信することができる。いくつかの実施形態において、コレクタ２５５は、設定変更可能であり、上記さまざまなイベントおよび／またはイベント属性を要望通りに収集するようにプログラムすることができる。たとえば、コレクタ２５５は、ダイアログ状態属性、意図解明属性、エンティティ解明属性、ならびにエラーおよびタイムアウト属性を捕捉するように、構成されてもよい。いくつかの実施形態において、コレクタ２５５はまた、ボットシステム以外のシステムが生成したイベント２９５に関する情報を収集するように構成されてもよい。
【００８１】
エンリッチエンジン２６０は、収集されたイベントおよびその他の情報に対して妥当性確認およびエンリッチ化を実行しこれらをデータベース２７０に書き込むことができる。たとえば、エンリッチエンジン２６０は、収集されたＩＰアドレスに基づいて、このＩＰアドレスに対応付けられたエンドユーザの場所を判断することができる。別の例として、エンリッチエンジン２６０は、収集された情報から、エンドユーザが使用するウェブブラウザまたはチャネルの決定等の、特定の特徴を抽出することができる。ＲＥＳＴサーバ２８０は、エンリッチ化されたイベントおよびその他の情報を解析し特定の集約メトリクス２７２に基づいて各種レポートを生成することができる。レポートは、ボットシステムの所有者、管理者、または開発者に対し、ＵＩサーバ２９０を通して、ユーザインターフェイス２９２上で表示することができる。ボットシステムの所有者、管理者、または開発者は、ボットシステムを改善するためにフィードバック２９４をボットシステムに提供することができる。
【００８２】
先に述べたように、エンドユーザの意図をユーザの発話に基づいて判断することができるユーザ意図分類エンジン（たとえばメッセージプロセッサ１５０または意図モデラー２１４）等のボットシステムを構築することは、難しい作業であり、その理由の一部は、自然言語の繊細さと曖昧さ、入力空間の寸法（たとえば起こり得るユーザの発話）、および出力空間のサイズ（意図の数）にある。いくつかのボットシステムにおいて、訓練発話および対応付けられる意図を用いて、ボットを訓練することにより、ユーザの発話に基づいて意図を特定することができる。たとえば、「靴を購入する」というユーザの意図の捕捉に興味があるかもしれない靴店のボットシステムにおいて、「靴を購入する」というハイレベルの意図を、ユーザ意図分類エンジンに与え、「私は靴を買いたい」、「私は一足の靴を探しています」、「私は靴が欲しい」等のような訓練句も、ユーザ意図分類エンジンを訓練するために与えることができる。いくつかの実施形態において、ユーザ意図分類エンジンは、句の例を拡張し句の例を用いることによりユーザ発話とマッチングすることを試みてもよい。たとえば、ユーザ意図分類エンジンは、「私はブーツを購入したい」という句を、「靴を購入する」という意図とマッチングさせることもできる。なぜなら、自然言語プロセッサ（たとえば自然言語プロセッサ１５２）は、ブーツ、靴、またはスリッパ間の意味論的距離は短くすべて同一の物のカテゴリを指していることを理解できるからである。このようなユーザ意図分類エンジンは、いくつかのチャットボットの対話に機能し得るが、より複雑なタスクを扱うことはできない。
【００８３】
上述の意図マッチングを用いる代わりに、いくつかのボットシステムは、低レベル解析結果（統語論的解析、エンティティ、キーフレーズ）を、特定ドメインのナレッジグラフと組み合わせることにより、ユーザの意図を特定することができる。ナレッジグラフ（またはオントロジ）は、意図、句、名詞、および形容詞をドメイン内のコンセプトに結び付ければよい。たとえば、ボットは、自然言語プロセッサを用いることにより、ユーザからの入力を解析し、解析結果を用いることにより、ナレッジグラフを通してナビゲートし、意味論的レベルでのユーザの意図を見出すことができる。そうすると、ユーザの意図を用いることにより、ユーザに対する最も適切な次の応答を決定することができる。
【００８４】
ナレッジグラフは、情報を取得してオントロジに統合し、これは、主語エリアまたはドメインにおける一組のコンセプトおよびカテゴリを含み、これらのプロパティおよびその間の関係を示す。場合によっては、ナレッジグラフは、推論器（reasoner）を適用して新たな知識を導き出すこともできる。ナレッジグラフは、場所、人々、物事、プロセス、アプリケーション、およびこれらの間の関係に関する事実を捕捉し、このような情報を用いることにより、たとえば、検索またはクエリを実行するユーザに、より関連性が高い情報を提供することができる。ナレッジグラフは、一般的に、ノードまたは頂点（エンティティを表す）間のラベル付けされたエッジ（関係を表す）を備えた有向グラフを用いてナレッジベースを表す。たとえば、ナレッジグラフは、（Obama, born in, Hawaii）、（Brazilian football team, has position, goalkeeper）といった、（主語、述語、目的語）の形式の一組の三つ組に基づいていてもよい。
【００８５】
図３は、ナレッジグラフの一例３００を示す。ナレッジグラフ３００は複数の頂点３１０を含み得るものであり、これらの頂点は、たとえば、場所（パリ等）、人々（ボブ、ビル、およびレオナルドダヴィンチ等）、物（エッフェル塔およびモナリザ等）、コンセプト（たとえば時間、年齢／時代、寸法、ならびに都市、人、および場所等の物のカテゴリ）、プロセス、アプリケーション等を表す。頂点３１０はラベル付けされたエッジ３２０によって接続されており、ラベル付けされたエッジは、接続されている頂点の各ペアについてこれら２つの頂点間の関係を説明している。エッジ３２０は、単方向または双方向の可能性がある。ある頂点３１０は、エッジ３２０が形成する経路を辿ってナレッジグラフ３００をトラバースすることにより、別の頂点３１０から得ることができる。
【００８６】
図４Ａ〜図４Ｄは、書籍またはＷｉｋｉｐｅｄｉａ（登録商標）等のナレッジベースに基づいてナレッジグラフを構築するプロセスの一例を示す。図４Ａにおいて、ストリング４１０（たとえば「レオナルドダヴィンチ」）は、ナレッジベースから得ることができる。図４Ｂにおいて、エンティティ４２０（たとえば「レオナルドダヴィンチ」）は、ストリング４１０から特定し認識することができる。図４Ｃにおいて、エンティティ４２０に関係するエンティティ４３２は、ナレッジベースから特定することができ、グラフ４３０に追加することができる。図４Ｄにおいて、エンティティ４３２間の関係は、ナレッジベースから判断することができ、エンティティ４３２間のエッジ４４２または接続としてグラフに追加することにより、複数のエンティティ４３２およびエッジ４４２を含むナレッジグラフ４４０を形成することができる。エンティティ４３２およびエッジ４４２は、（主語，述語，目的語）、（エンティティ，属性，値）の形態、またはその他の形態の、三つ組で表すことができる。エッジ４４２上のラベルは、エンティティ４３２間の関係を示すことができる。
【００８７】
ナレッジグラフ４４０は、より大きなスケールのナレッジグラフを構築するためのシードグラフとして用いることができる。たとえば、ナレッジグラフ４４０におけるエンティティ４３２のうちの関係があるエンティティと、ナレッジグラフ４４０における関係があるエンティティおよびエンティティ４３２間の関係とを、ナレッジベースまたは参照ナレッジベース（たとえば外部ナレッジベース）から特定してナレッジグラフ４４０に追加することにより、ナレッジグラフ４４０をさらに拡張することができる。ナレッジグラフ４４０の拡張は、たとえば、所定のドメイン内の知識が枯渇するまで続けることができ、結果として、所定のドメインについてのナレッジグラフが得られる。
【００８８】
自然言語で理解されるナレッジグラフのアプリケーションは、ナレッジグラフの関連するセクションを埋め込むことによる、質問への回答のようなＱｎＡ、またはディープ畳み込みニューラルネットワークが学習する報酬関数を用いて関連するクエリサブグラフを生成することを含む。ナレッジグラフは、たとえば、検索エンジンがユーザ検索に応答してより関連性がある情報を提供するために、または、チャットボットが上記意図分類を実行するために、使用することもできる。
【００８９】
チャットボットは、十分なデータを備えた特定のドメインにおいてより良好に機能することができる。所定のボットについて、ユーザが提供したデータセットは、たとえば約５０〜１００の発話しか含まない場合がある。この限られたデータセットは、ボットが適切に機能するために使用できるナレッジグラフを構築するには不十分な場合がある。ＷｉｋｉＤａｔａ、Ｆｒｅｅｂａｓｅ、ＤＢｐｅｄｉａ等のような参照ナレッジグラフまたはナレッジベースを用いることにより、特定のナレッジドメイン内の知識を拡張し、カスタマイズされたナレッジグラフを生成することができる。
【００９０】
いくつかの実施形態において、ナレッジグラフは、たとえば参照ナレッジグラフまたはその他のナレッジベースをランダムにウォークスルーし、たとえば参照ナレッジグラフまたはナレッジベースのノードが訪れられた頻度に基づいて、参照ナレッジグラフまたはナレッジベースから情報を選択することにより、拡張することができる。しかしながら、ランダムウォークによって生成されたナレッジグラフの品質は、チャットボットのようなアプリケーションには不十分である場合がある。たとえば、ランダムウォークにより生成されたナレッジグラフはノイズが多い場合がある。
【００９１】
特定の実施形態に従い、顧客データセット（たとえばユーザの発話、意図、エンティティ、および質問と回答（ＱｎＡ）を含む）と、参照（たとえば外部）ナレッジベース（ＷｉｋｉＤａｔａ等）とを用いて、所定のドメイン（たとえば特定のボット）のためにカスタマイズされたナレッジグラフを構築する方法が開示される。カスタマイズされたナレッジグラフは、ドメイン固有であってもよく、２つの主要な段階を経て生成されてもよい。第１に、エンティティを、ユーザから提供された発話等の顧客データセットから抽出し、拡張のためのシードグラフとして使用できる最初のナレッジグラフの頂点またはノードとして使用することができる。抽出したこれらのエンティティとそれらの間のリンクとを用いてシードグラフを形成することで、カスタマイズされたナレッジグラフを初期化することができる。第２段階において、シードグラフ内のエンティティを参照ナレッジグラフをトラバースするための始点の頂点として参照ナレッジグラフにマッピングすることができる有限状態機械を用いて、参照ナレッジグラフをトラバースし、カスタマイズされたナレッジグラフに追加する候補エンティティを選択することにより、シードグラフを拡張することができる。次に、参照ナレッジグラフから選択した候補エンティティを、それらのプライオリティスコアに基づいてフィルタリングし、カスタマイズされたナレッジグラフに追加することができる。
【００９２】
図５は、特定の実施形態に係る、カスタマイズされたナレッジグラフ（たとえばチャットボット用）を構築するための方法の一例を示す簡略化されたフローチャート５００である。図５に示され以下で説明される処理は、例示を目的としているのであって限定するものではない。図５は、特定のシーケンスまたは順序で発生する各種動作を示すものの、これは限定を意図しているのではない。特定の代替実施形態において、これらの動作は何らかの異なる順序で実行されてもよく、または、いくつかの動作は並列に実行されてもよい。さらに、この方法の実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはその任意の組み合わせで実現されてもよい。ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードで実現される場合、対応付けられたタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体等のコンピュータ読取可能媒体に格納されてもよい。１つ以上のプロセッサが上記対応付けられたタスクを実行してもよい。
【００９３】
５０２において、コンピューティングシステムは、ユーザデータセットを受信することができる。ユーザデータセットは、たとえば、ユーザの発話、ユーザが規定したエンティティおよび意図、ユーザが提供した質問と回答等を含み得る。先に述べたように、いくつかの実施形態において、ユーザデータセットは、たとえば約５０から約１００の発話を含み得るものであり、各発話は対応付けられた意図でタグ付けされてもよく、タグ付けされなくてもよい。
【００９４】
５０４において、品詞（ＰｏＳ）タグ付け（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）（ＮＥＲ）（たとえば、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参照）、たとえばＣｏｒｅＮＬＰを使用する句構造解析（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参照）等のような技術を用いて、ユーザの発話等のユーザデータセットから、エンティティを抽出することができる。いくつかの実施形態において、エンティティは、Ｄｅｘｔｅｒ２技術（たとえば、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参照）等のエンティティリンク技術を用いて、ユーザデータセットから検出することができる。
【００９５】
５０６において、特定したエンティティ間の関係を、ユーザデータセットに基づき、たとえば、上記エンティティ抽出技術を用いて、特定することができる。特定したエンティティを、この関係を用いてリンクさせるまたは接続することにより、（シードグラフ内のノードまたは頂点としての）特定したエンティティと（頂点間のエッジとしての）特定したエンティティ間の関係とを含む、シードグラフを生成することができる。エッジは、エンティティ間のエッジの方向を含む有向エッジであってもよい。エッジは単方向または双方向の可能性がある。シードグラフは、少数の頂点を含むものであってもよく、エンティティ間の関係すべてを含まない可能性がある疎のグラフであってもよい。シードグラフは、１つ以上の弱く接続されているコンポーネント（weakly connected component）（ＷＣＣ）を含み得るものであり、ＷＣＣは、一般的に、どのノードにも、その他任意のノードから出発し無向経路（すなわちエッジの方向を無視）を辿ってエッジをトラバースすることによって到達できるようにする、有向グラフの最大サブグラフを意味する。弱く接続されているコンポーネントにおけるノードはすべて、出次数または入次数が少なくとも１であってもよい。これに対し、強く接続されているコンポーネントは、すべてのノードからその他すべてのノードへの有向経路が存在するサブグラフを意味し得る。
【００９６】
５０８〜５１６において、シミュレートされたアニール最適化方法（たとえば、Nourani & Andresen, “A comparison of simulated annealing cooling strategies,” J. Phys. A: Math. Gen. 51. 1998, 8373-8385参照）を用い、エンティティおよび関係をシードグラフに徐々に追加することにより、繰り返しシードグラフを拡張することができる。各繰り返しにおいて、温度の値を、５０８において設定または調整することができる。以下で詳細に説明するように、温度は、ナレッジグラフに追加する候補エンティティのプライオリティスコアを求めるために使用することができる。
【００９７】
５１０において、以下でより詳細に説明するように、シードグラフ内の弱く接続されている各コンポーネントについて、弱く接続されているコンポーネントにおける各エンティティ（すなわち頂点）を、参照ナレッジグラフにマッピングし、参照ナレッジグラフをトラバースする際の始点となる頂点として使用し、有限状態機械を用いて最大Ｍ個までの候補エンティティを特定することができる。特定した候補エンティティのリソース記述フレームワーク（ＲＤＦ）は、エントリとしてプライオリティキューに保存することができる。
【００９８】
５１２において、プライオリティキュー内のエントリを、温度の関数であるスコアリング関数を用いてスコアリングすることができる。いくつかの実施形態において、５１０で特定されてプライオリティキューに追加された候補エンティティの総数は、特定のしきい値数Ｎよりも多くてもよい。リザーバサンプリング（reservoir sampling）技術（たとえば、J. Vitter, “Random sampling with a reservoir,” ACM Trans. on Mathematical Software 11(1):37-57, Mar. 1985参照）等の技術を実施することにより、プライオリティキュー内のエントリ数をＮまで減らすことで、ナレッジグラフのトラバースよりも計算上高コストとなる可能性がある、エントリのプライオリティスコアの計算時間を短縮してもよい。以下でより詳細に説明するように、プライオリティスコアは、Ｎ個のエントリにおけるＮ個の候補エンティティの各々と、候補エンティティに至る対応する経路とについて計算してもよい。
【００９９】
５１４において、プライオリティキュー内の最大Ｎ個のエントリから、最高のスコアを有するＫ個のエントリを選択することができ、Ｋ個のエントリにより特定される、対応するエンティティおよび関係を、シードグラフに追加することにより、シードグラフを拡張することができる。
【０１００】
５１６において、温度がしきい値を上回ると判断された場合、５０８〜５１４における動作を次の繰り返しにおいて再び実行することができ、その間、温度（したがってスコアリング関数）が変化する可能性があり、弱く接続されているコンポーネントにおけるエンティティは異なるかもしれない。なぜなら、シードグラフは、プライオリティキューにおける上位Ｋ個のエントリを用いて修正されているからである。温度がしきい値未満の場合、カスタマイズされたナレッジグラフの最適化は終了してもよく、カスタマイズされたナレッジグラフは、特定のボットまたは検索エンジン等の、ユーザデータセットに対応付けられたユーザアプリケーションのために、使用することができる。
【０１０１】
表１は、図５に関して先に述べた方法のような、カスタマイズされたナレッジグラフを生成する方法を実現するための疑似コードの一例を示す。表１の疑似コードは、参照ナレッジグラフをトラバースするために使用される有限状態機械の一例を示す。表１において、疑似コードの第１行は、ユーザデータセット（たとえばユーザの発話）に基づいてエンティティとエンティティ間のリンクとを特定することに関する。疑似コードの第２行は、シードグラフの作成に関する。第３行は、シードグラフを拡張してカスタマイズされたナレッジグラフを生成するための、シミュレートされたアニールプロセスの初期状態を設定するために使用され、これは、温度およびプライオリティキューの初期化を含む。第４〜２３行は、シミュレートされたアニールプロセスの各温度で実行される動作に関し、第５〜１５行は、以下でより詳細に説明するように、有限状態機械を用いて参照ナレッジグラフをトラバースすることにより候補エンティティを特定し、候補エンティティのＲＤＦという三つ組をエントリとしてプライオリティキューに保存することを記述している。第１６〜１７行は、プライオリティキュー内のエントリの数がしきい値数Ｎよりも大きい場合に、プライオリティスコア計算のためにプライオリティキュー内のエントリの数を減じることに関する。第１８〜２２行は、プライオリティキュー内のエントリのプライオリティスコアを計算すること、および、プライオリティスコアが最大である上位Ｋ個のエントリを用いることによりシードグラフを拡張することに関連する。温度は第２３行で更新される。
【０１０２】
【表１】
2021534493.tif 000004
【０１０３】
図３および表１に関連して先に述べた方法は、一般的に、（１）ユーザが提供する発話からエンティティを抽出し、抽出したエンティティとエンティティ間のリンクとに基づいてシードグラフを構築することと、（２）有限状態機械を用いて参照ナレッジグラフを繰り返しトラバースすることによりシードグラフを拡張することとを含み、これらの各々について以下で詳細に説明する。
【０１０４】
一組の未処理の文（たとえば発話）等のユーザデータセットからエンティティを抽出しナレッジグラフの頂点として使用することができ、エンティティ間の既存の関係を判断しナレッジグラフ内の頂点間のエッジとして使用することができる。たとえば、図５の５０４に関して先に述べた、品詞タグ付け、固有表現認識、およびＣｏｒｅＮＬＰ技術を使用する句構造解析を、発話に対して実行することにより、候補エンティティリストを生成することができる。品詞タグ付け技術は、単語を、名詞、動詞、形容詞、副詞、代名詞その他等の、その適切な品詞でラベル付けすることを含む。固有表現認識（エンティティ識別、エンティティチャンキング、またはエンティティ抽出としても知られる）は、構造化されていないテキスト内の固有表現の場所を特定し、名前、組織、場所、メディカルコード、時間表現、数量、金銭的価値、百分率その他等の、予め定められたカテゴリに分類することを含む。句構造解析は、句構造に基づいた解析木を文から抽出することにより、句構造文法に従ってこの文の統語構造を表現することを含む。たとえば、「John hit the ball」という文の、句構造に基づいた解析木は、この文（Ｓ）から始まりリーフノード（John, hit, the, ball）の各々で終わってもよい。この場合、「John」は名詞（Ｎ）ノードであってもよく、「hit」は動詞（Ｖ）ノード（この例では他動詞）であってもよく、「the ball」は分岐ノードである名詞句（ＮＰ）であってもよく、「the」は限定詞（ＤまたはＤＴ）ノードであってもよく、「ball」は名詞（Ｎ）ノードであってもよい。
【０１０５】
いくつかの実施形態において、候補エンティティリストを生成するときに、以下の前処理ルールを適用してもよい。すなわち、（ａ）ＮＥＲがナルでないことを確認するとともに、単語が名詞句（たとえば「apple tree」または「the ball」）の一部でありＮＥＲでタグ付けされていることを確認し、（ｂ）固有名詞（ＮＮＰであり、特定の人、場所、物、またはアイデア、たとえば「John」を指定する）がＮＰに支配されている（すなわちＮＰは意味論的構文木においてＮＮＰの親）場合、マッチ（抽出されたエンティティ）を確認し、（ｃ）普通名詞（ＮＮであり、特定でない人、場所、物、またはアイデアを指定する一般名詞、たとえば「机」）がＮＰに支配されている（すなわちＮＰは意味論的構文木においてＮＮの親）場合、マッチ（抽出されたエンティティ）を確認し、（ｄ）人称代名詞（ＰＲＰ、たとえば「I」、「he」または「she」）および上記からの限定詞（ＤＴ）をストライピングし、（ｅ）ＮＥＲフレーズをチャンクに分割し、（ｆ）ＮＥＲ句から数および日付を削除する。たとえば、上記ルールを「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」］を含む候補エンティティのリストが得られる。
【０１０６】
いくつかの実施形態において、上記Ｄｅｘｔｅｒ２技術を用い、エンティティに並列に言及するテキストを検出することにより、候補エンティティのリストを生成してもよい。次に、２つの候補エンティティリストを組み合わせて１つの候補エンティティリストを生成してもよい。その後、組み合わせた候補エンティティリストを用いることにより、ナレッジグラフ生成のためのシードグラフを生成してもよい。
【０１０７】
いくつかの実施形態において、Ｄｅｘｔｅｒ２技術を用いることにより、候補エンティティを、ＷｉｋｉＤａｔａ等の参照ナレッジグラフ内の対応するエントリにリンクさせてもよく、この場合、Ｄｅｘｔｅｒ２技術を用いることにより、候補エンティティをたとえばＷｉｋｉｐｅｄｉａエントリにリンクさせ、その後、ＷｉｋｉｐｅｄｉａエントリをＷｉｋｉＤａｔａエントリにマッピングしてもよい。たとえば、文例「How much did I spend from my checking account on ServiceA?」から抽出したエンティティ（および対応するＷｉｋｉＤａｔａ  ＩＤ）は、「ServiceA」（Ｑ７８０４４２）および「checking account」（Ｑ６９５４３０）を含み得る。別の例において、文例「Michael Jordan played basketball at an outdoor cafe on Pioneer Day」から抽出されたエンティティ（およびそれらのＷｉｋｉＤａｔａ  ＩＤ）は、「cafe」（Ｑ３００２２）、「Pioneer Day」（Ｑ２５４２９５）、「basketball」（Ｑ５３７２）、「Michael Jordan」（Ｑ４１４２１）、および「outdoor」（Ｑ３３１２１２９）を含み得る。いくつかの実施形態において、Ｍｅｄｉａｗｉｋｉ  Ｗｅｂｓｅｒｖｉｃｅ  ＡＰＩを用いることにより、上記方法でマッチしないエンティティを検索することができる。
【０１０８】
表２は、上記方法のような、ユーザデータセット（たとえば発話）からエンティティを抽出しシードグラフを構築するための方法の一例を示す。表２に示される動作１において、たとえば、上記品詞タグ付け、固有表現認識、またはＣｏｒｅＮＬＰ技術を用いる句構造解析を用いて、ユーザ発話の未処理の文からエンティティを抽出する。
【０１０９】
【表２】
2021534493.tif 000005
【０１１０】
動作２において、先に述べたように、一組の前処理ルールを適用することにより、候補エンティティリストを生成することができる。前処理ルールは、たとえば、（ａ）固有表現認識がナルでないことを確認するとともに単語が名詞句の一部であることを確認すること、（ｂ）固有名詞がＮＰに支配されている場合（すなわちＮＰは意味論的解析木においてＮＮＰの親）、マッチ（抽出されたエンティティ）を確認すること、（ｃ）普通名詞がＮＰに支配されている場合（すなわちＮＰは意味論的解析木においてＮＮの親）、マッチを確認すること、（ｄ）上記からの代名詞（ＰＲＰ）および限定詞（ＤＴ）をストライピングすること、（ｅ）ＮＥＲ句をチャンクに分割すること、および（ｆ）ＮＥＲ句から数および日付を削除することを、含み得る。上記の動作後の最終リストは、個々のルールの各々についての一組の結果である。
【０１１１】
動作３において、上記前処理ルールに基づいて、動作１における発話の構文解析の結果と、上記Ｄｅｘｔｅｒ２．０フレームワーク等のエンティティリンク技術で生成した候補エンティティリストとから、グラフルックアップクエリを決定することができる。本明細書で使用される、エンティティ・リンキングは、一般的に、曖昧さがあるときに、エンティティを正しいナレッジベースエントリとマッチングさせることを意味し得る。一例として、「On July 20, 1969, the Apollo 11 astronauts Neil Armstrong, Michael Collins, and Edwin ‘Buzz’ Aldrin Jr. realized President Kennedy’s dream」という文から、「Apollo 11（アポロ１１号）」（宇宙飛行ミッション）、「astronauts（宇宙飛行士）」、「Neil Armstrong」（宇宙飛行士）、「Michael Collins」（宇宙飛行士）、「Edwin ‘Buzz’ Aldrin」（宇宙飛行士）、および「John F. Kennedy」、というグラフルックアップクエリを決定することができる。別の例において、「Michael Jordan played for the Chicago Bulls」という文から、「Michael Jordan」（バスケットボール選手）および「Chicago Bulls」というグラフルックアップクエリを決定することができる。Ｄｅｘｔｅｒ２技術を使用することにより、グラフルックアップクエリを、参照ナレッジグラフ（たとえばＷｉｋｉＤａｔａ）等の参照ナレッジベース内の対応するエントリにリンクさせることもできる。たとえば、Ｄｅｘｔｅｒ２技術を用いることにより、グラフルックアップクエリをＷｉｋｉｐｅｄｉａエントリにリンクさせ、次に、ＷｉｋｉｐｅｄｉａエントリをＷｉｋｉＤａｔａエントリにマッピングすることができる。
【０１１２】
動作４において、参照ナレッジベースエントリとマッチしない各エンティティについて、たとえば、Ｄｅｘｔｅｒ２．０を用いて、エンティティ・リンキングおよび／または参照ナレッジベースからの情報フェッチのために、Ｍｅｄｉａｗｉｋｉ  Ｗｅｂｓｅｒｖｉｃｅ  ＡＰＩをコールすることができる。いくつかの実施形態において、動作５で、戻されたＷｉｋｉＤａｔａエンティティＩＤを、たとえば、Ｒｅｄｉｓを用いてキャッシュすることにより、将来のＡＰＩコールを減じることができる。
【０１１３】
動作６において、各発話におけるすべてのエンティティについて、可能性のあるすべての組み合わせ（Ｎは２つの組み合わせを選択）を確認することができる。発話のエンティティのうちの２つの間にリンクが存在する場合、リンクをシードグラフに追加することができる。動作６の最後において、シードグラフＧ＝（Ｖ，Ｅ）が生成されてもよく、頂点Ｖは、特定された一組のエンティティを含み、エッジＥは、エンティティのうちのいずれか２つの間のリンクを含む。２つのエンティティ間のリンクの確認は、ユーザデータセット全体のエンティティに対して行うこともできる。
【０１１４】
先に述べたように、ユーザデータセットは、約５０〜１００の発話のように、小さい場合がある。そのため、シードグラフは、約５０〜１００のエンティティのように、少数のエンティティしか含まない場合がある。加えて、シードグラフにおけるエンティティ間のリンクは疎らである可能性がある。シードグラフは、特定のチャットボット等の所定のドメインに役立つ追加情報を含むように拡張する必要がある場合がある。特定の実施形態に従うと、有限状態機械を用い、ＷｉｋｉＤａｔａ等の参照ナレッジグラフをトラバースすることにより、カスタマイズされたナレッジグラフを生成するためにシードグラフに追加することができる追加情報（たとえばエンティティおよびリンク）を特定することができる。いくつかの実施形態において、プライオリティキューおよびプライオリティ関数を用いることにより、ナレッジグラフに追加すべきエンティティおよび／またはリンクを決定することができる。いくつかの実施形態において、シミュレートされたアニールプロセスを用いることにより、カスタマイズされたナレッジグラフを繰り返し最適化することができる。方法の一例を表３に示される疑似コードで説明する。
【０１１５】
【表３】
2021534493.tif 000006
【０１１６】
表３の疑似コードで示される方法の動作１において、シミュレートされたアニールプロセスを、初期温度を設定し、プライオリティキューを初期化する、たとえば空のプライオリティキューを作成することにより、開始することができる。
【０１１７】
動作２（ａ）において、シードグラフＧの弱く接続されている各コンポーネントｗｇにおける各エンティティを、ＷｉｋｉＤａｔａ等の参照ナレッジグラフにマッピングすることができ、有限状態機械を用いることにより、弱く接続されているコンポーネントｗｇにおける各エンティティからの参照グラフのトラバースを制御して、候補エンティティを特定しプライオリティキューバッファ（たとえばキャッシュ）にエントリとして保存することができる。たとえば、トラバースされる頂点が曖昧性除去頂点である場合、状態機械は曖昧性除去状態に進むことができ、トラバースされる頂点が禁止頂点である場合、状態機械は禁止状態に進むことができ、トラバースされる頂点がエンティティ頂点である場合、状態機械はエンティティ状態に進むことができ、エンティティ状態が、弱く接続されている各コンポーネントｗｇについてＭ回訪れられている場合、状態機械は「終了」状態に進むことができる。本明細書で使用される曖昧性除去頂点は、同一または同様のラベルを共有する複数のエントリを区別するナレッジグラフエントリまたはナレッジベースエントリを意味する。本明細書で使用される禁止頂点は、カスタマイズされたナレッジグラフの疎の状態を増すかまたはカスタマイズされたナレッジグラフに意味のある情報を与えないかのいずれかであるナレッジグラフ（たとえばＷｉｋｉｄａｔａ）の頂点を意味し、したがって、カスタマイズされたグラフに追加するのに適さない。禁止頂点は、たとえば、日付および／または時間（たとえば期間、時点等）、その他の参照ナレッジベース識別子（ＩＭＤｂ、Ｆｒｅｅｂａｓｅ等）へのリンク、Ｗｉｋｉｍｅｄｉａプロジェクト、記事、およびリストページ、主要なＷｉｋｉｍｅｄｉａナレッジツリーの外部のページ、ならびに複製およびリダイレクトされたエントリを含み得る。
【０１１８】
図６は、特定の実施形態に係る、シミュレートされたアニールプロセスの各繰り返しにおいて参照ナレッジグラフのトラバースを制御するための有限状態機械（ＦＳＭ）の一例６００を示す。ＦＳＭ６００の開始状態６１０において、トラバースは、参照ナレッジグラフ内のある頂点で開始されてもよく、この頂点は、シードグラフＧにおいて弱く接続されているコンポーネントｗｇにおけるエンティティに対応し得る。
【０１１９】
開始頂点に接続された次の頂点が曖昧性除去頂点である場合、ＦＳＭ６００は曖昧性除去状態６４０に移ることができる。たとえば、ＷｉｋｉＤａｔａにおける曖昧性除去頂点に到達するたびに曖昧性除去状態６４０に到達することができる。次の頂点が曖昧性除去頂点ではなく禁止頂点である場合、ＦＳＭ６００は禁止状態６３０に移ることができる。曖昧性除去頂点でも禁止頂点でもない参照ナレッジグラフ（たとえばＷｉｋｉＤａｔａ）内のエントリは、エンティティｗであり、ＦＳＭ６００をエンティティ状態６２０に移動させることができる。この場合、エンティティｗのリソース記述フレームワーク（ＲＤＦ）をプライオリティキューバッファ（たとえばキャッシュ）に追加することができる。ＲＤＦは、たとえば、主語−述語−目的語の形態の三つ組であってもよい。主語はリソースを示すことができ、目的語はリソースの特性または様相を示すことができ、述語は主語と目的語との関係を示すことができる。
【０１２０】
エンティティ状態、曖昧性除去状態、および禁止状態の間で起こり得るすべての移行は、禁止状態６３０から禁止状態６３０に戻る移行を除いて認められ得るものである。なぜなら、禁止頂点を通ってナレッジグラフに達する任意の経路を追加することは望ましくないからである。このプロセスを通して、ユーザデータセット（およびシードグラフ）におけるエンティティのうちの、極めて近接するエンティティを特定してもよく、曖昧性除去頂点を用いてグラフ検索を拡張してもよく、禁止頂点は無視してもよい。終了状態６５０に達するのは、エンティティ状態６２０が、弱く接続されているコンポーネントｗｇの各々についてＭ回訪れられたときに、または、トラバースするその他の直接または間接的にリンクされた頂点が他にないときである可能性がある。繰り返しにおける参照ナレッジグラフのトラバースは、終了状態６５０で停止することができる。
【０１２１】
一例において、開始頂点が、参照ナレッジグラフ内の頂点「Obama」へのリンクを有する場合、ＦＳＭ６００は開始状態６１０からエンティティ状態６２０に移ることができ、頂点「Obama」のＲＤＦをプライオリティキューバッファ（たとえばpq_cache）に追加することができる。頂点「Obama」に、「America」（たとえば「president of」という関係でリンクされている）と「20 January 2009」（たとえば「開始時間」という関係でリンクされている）という２つの頂点がリンクされている場合、頂点「20 January 2009」がトラバースされるとＦＳＭ６００は禁止状態６３０に行くことができる。なぜなら、日付および時間頂点は禁止頂点であるからである。トラバースされる次の頂点は、有効なエンティティである頂点「America」である。したがって、ＦＳＭ６００は、再びエンティティ状態６２０に移り「America」についてのＲＤＦをプライオリティキューバッファpq_cacheに追加することができる。このプロセスは、頂点を「America」におよび／またはシードグラフＧの弱く接続されているコンポーネントｗｇにおけるその他のエンティティにリンクさせた状態で、エンティティ状態６２０が訪れられる回数がＭ回に達するまで、または、トラバースすべきその他の直接または間接的にリンクされた頂点がないときに、繰り返すことができる。
【０１２２】
表３の動作２（ｂ）において、温度の関数であるスコアリング関数を用いてプライオリティキューバッファ内の各エントリについてプライオリティスコアを計算することができる。いくつかの実施形態において、繰り返しの間に訪れられたエンティティの総数がしきい値Ｎを超えた場合、図５の５１２に関して先に述べたリザーバサンプリング技術を実行することにより、プライオリティキューバッファ内のエンティティの数をＮまで減らすことで、プライオリティスコアの計算を少なくすることができる。これは時間最適化を目的として実行されてもよい。なぜなら、プライオリティスコアを計算することは、有限状態機械を用いてナレッジグラフをトラバースすることよりも、計算上高コストとなる場合があるからである。
【０１２３】
たとえば、繰り返しにおける動作２（ａ）において候補エンティティが特定され対応するＲＤＦ三つ組がプライオリティキューバッファに保存された後に、プライオリティ関数に従い、プライオリティキュー内の各エンティティｅおよびエンティティｅに到達するために辿る対応する経路について、プライオリティスコアを計算することができる。
【０１２４】
【数２】
2021534493.tif 000007
【０１２５】
式中、ＷＣＣ（Ｇ'）は、グラフ内の弱く接続されているコンポーネントを特定するために使用される、弱接続コンポーネント関数であり、ｔは、現在の時間ステップであり、Ｔ（ｔ）は、時間ｔにおける温度であり、ｋ、ηおよびＺは、実定数であり、Ｇ’は、グラフＧと（ｗ，ｅ）間の一組のエッジとの合併により形成される新たなグラフである。新たなグラフＧ’は以下のように表すことができる。
【０１２６】
【数３】
2021534493.tif 000008
【０１２７】
ρ（Ｇ）は、グラフ密度に対応し、以下に従って求めることができる。
【０１２８】
【数４】
2021534493.tif 000009
【０１２９】
式中、ＧはエッジＥおよび頂点Ｖを有するグラフであり、｜Ｅ｜はグラフＧ内のエッジの数であり、｜Ｖ｜はグラフＧ内の頂点の数である。
【０１３０】
表３の動作２（ｃ）において、プライオリティキュー内で最大のプライオリティスコアを有するエントリを選択してシードグラフＧに追加することができる。動作２（ｄ）において、シミュ―レートされるアニールプロセスの温度を更新することにより、動作２の処理の新たな繰り返しを開始することができる。時間ステップｔにおける温度はたとえば次のようにして求めることができる。
【０１３１】
【数５】
2021534493.tif 000010
【０１３２】
冷却スケジュールは、式（１）に示されるプライオリティ関数に対するその効果に基づいて選択することができる。式（１）に示されるプライオリティ関数は、弱く接続されているコンポーネントにおけるエンティティの数を増加させるために、温度が高いときに新たな頂点を追加することを優先させることができる。システムが冷却されるのに応じて、プライオリティ関数は、グラフに既に存在する頂点間により多くのエッジを追加するために、グラフ密度に対してより大きな重みを置くことができる。プライオリティ関数の２つの部分は、同様の大きさになるように、何らかの係数（たとえばＺおよびη）によって正規化することができる。
【０１３３】
図７は、特定の実施形態に係る、たとえば表２に関して先に述べた、ユーザデータセット（たとえばユーザ発話）に基づいて生成されたシードグラフの一例７００を示す。この例において、シードグラフ７００は、ウェブアプリケーションとそれらの親企業との間の関係を説明している。シードグラフ７００は、（Ｗｉｋｉｐｅｄｉａ  ＩＤからＷｉｋｉＤａｔａラベルに変換された）＜SoftwareA, part of, CompanyA＞等のＲＤＦ三つ組に基づいていてもよい。図示のように、シードグラフ７００は、エンティティ７１０が極めて少なくエンティティ７１０間のリンク７２０が極めて少ない、疎のグラフであってもよい。リンク７２０はエンティティ７１０間の関係でラベル付けされる。図７は、専らシードグラフ７００の疎の状態の例示を目的としているのであって、シードグラフ７００の具体的な内容は読み易さを意図している訳ではない。
【０１３４】
図８は、シードグラフ７００と表３に関して先に述べた技術とに基づいて生成された、カスタマイズされたナレッジグラフの一例８００を示す。図９は、ナレッジグラフ８００の一部８１０の拡大図である。図８および図９は、専ら例示を目的としているのであって、シードグラフ８００の具体的な内容は読み易さを意図している訳ではない。シードグラフ７００と比較すると、ナレッジグラフ８００には、遥かに多くのエンティティ８２０とエンティティ８２０間のリンク８３０とがあってもよい。ナレッジグラフ８００は、ウェブアプリケーションおよび周辺のコンセプトに関する各種情報を含む。いくつかの例は、＜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＞を含む。また、ナレッジグラフ８００は、たとえば＜alternative rock, subclass of, rock music＞および＜calendar, instance of, chronology＞等の、データセットのドメインに直接関係がない可能性がある何らかの情報を含み得る。場合によっては他のドメインからのこのような情報により、このグラフは、まだ見ていないデータが与えられたときにより簡単に一般化することができる。
【０１３５】
ナレッジグラフ８００を形成するＲＤＦ三つ組（「主語｜述語｜目的語」というフォーマット）のいくつかの例は、「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」等を、含み得る。
【０１３６】
表４は、参照ナレッジグラフを用いた拡張の前後のナレッジグラフの例の統計結果を示す。この統計は、たとえば、頂点の数、エッジの数、グラフ密度、およびデータセット内の弱く接続されているコンポーネントの数を含む。表４に示されるように、開始頂点の数が多いデータセットの場合、上記技術は、多数の新たな頂点を追加しなくてもよく、より多くのエッジを追加すればよい。ＳＮＩＰＳの場合、頂点の数およびエッジの数は増加しているが、グラフ密度は低下している。なぜなら、ＳＮＩＰＳは限られたナレッジドメインデータセットではないからである。しかしながら、より小さなシードグラフの場合、相当数の新たな頂点を追加することができる。その理由は、より大きなデータセットの場合、シードグラフについて特定されるエンティティは、参照ナレッジグラフ上で極めて近接している可能性があるからであろう。加えて、開始頂点が多い場合、参照ナレッジグラフをトラバースする間に、多数の新たな頂点を発見しないかもしれないが、代わりにこれらのエンティティ間の新たな関係を発見できる可能性が高い。一方、より小さなデータセットしたがってより小さなシードグラフの場合、この技術はより多くの新規頂点を発見する可能性が高い。
【０１３７】
【表４】
2021534493.tif 000011
【０１３８】
ナレッジグラフは、自然言語理解に関連する多数の用途で使用することができる。たとえば、ナレッジグラフ埋め込み（knowledge graph embedding）（ＫＧＥ）技術は、エンティティと関係とを含むナレッジグラフのコンポーネントを、連続ベクトル空間に埋め込むことにより、操作を簡略化しつつ、ナレッジグラフの固有の構造を維持することができる。次に、エンティティおよび関係の埋め込みを、たとえば、ナレッジグラフの完成、関係の抽出、エンティティの分類、エンティティの解明、質問回答等に、使用することができる。
【０１３９】
一般的に、ＫＧＥ技術は、エンティティおよび関係を連続ベクトル空間において表し、次に、各事実およびその他の情報（たとえばエンティティの種類、関係の経路、テキスト記述、またはロジックルール）に対して距離または類似性に基づいたスコアリング関数を用いることにより、そのもっともらしさを測定する。次に、エンティティおよび関係の埋め込みは、観察された事実の総合的なもっともらしさを最大化することにより、得ることができる。ナレッジグラフ埋め込みは、単語ベクトルと比較して、より意味論的な意味を含み得るものであり、単語ベクトルに基づいて特徴表現を増強するために使用することができる。ＫＧＥは、たとえば、複数単語のトークン（たとえば句）の意味論的意味を捕捉し、特に固有の重要な単語が多数存在する小さなデータセットにおける、単語ベクトルがない単語等の語彙外（out-of-vocabulary）（ＯＯＶ）単語を用いてデータセットに対する予測能力を改善することにより、典型的な単語ベクトルを超えたエンティティの意味論的表現を捕捉することができる。
【０１４０】
先に述べたように、チャットボットは、会話の相手としての人の振る舞い方をシミュレートすることにより、聴覚またはテキスト方法を通して会話を実施することが可能な、コンピュータプログラムまたはアプリケーションである。チャットボットは、顧客サービスまたは情報取得を含む、さまざまな実用的な目的のために、ダイアログシステムにおいて使用することができる。いくつかのより単純なチャットボットは、入力内のキー単語をスキャンし、次に、データベースから、最も良くマッチするキーワードまたは最も似ている言葉遣いのパターンを有する返答を引き出すことができる。いくつかのチャットボットは、より高度な自然言語処理技術を用いることで、より厳密に人をシミュレートすることができる。
【０１４１】
特定の実施形態に従うと、ナレッジグラフ埋め込みは、入力された自然言語発話が与えられて、ユーザが実行したいアクションをたとえばチャットボットが判断することをタスクが含み得る場合に、意図分類に使用することができる。チャットボットは、たとえば上記方法を用いて生成したカスタマイズされたナレッジグラフから抽出されたナレッジグラフ埋め込みと単語ベクトルとの双方を用いることにより、ユーザ意図分類のパフォーマンスを改善することができる。
【０１４２】
特定の実施形態に従うと、ＴｒａｎｓＥ技術（たとえば、Bordes et al., “Translating Embeddings for Modeling Multi-relational Data,” Advances in Neural Information Processing Systems 26. Curran Associates, Inc., 2013, pp. 2787-2795参照）およびその拡張等の、並進距離技術を用いることにより、ＷｉｋｉＤａｔａに対する埋め込みを事前訓練することができる（たとえば、Vrandecic & Krotzsch, “Wikidata: A Free Collaborative Knowledgebase,” Communications of the ACM 57:10, 2014, pp. 78-85参照）。なぜなら、並進に基づいたモデリング技術は、意図特定用途に良く適合するからである。ＴｒａｎｓＥは、エンティティの低次元埋め込みを学習するための、エネルギーに基づくモデルであり、この場合、関係は埋め込み空間内の並進として表される。すなわち、（ｈ，ｒ，ｔ）が成立する（たとえば適切なＲＤＦである）場合、テールエンティティｔの埋め込みは、ヘッドエンティティｈの埋め込みと関係ｒ（ｔ≒ｈ＋ｒ）に依存するベクトルとの合計に近い。そうでなければ、テールエンティティｔの埋め込みは、ヘッドエンティティｈの埋め込みと関係ｒに依存するベクトルとの合計から、非常に遠くなる。
【０１４３】
ＫＧＥ技術（たとえば並進距離または類似性に基づくＫＧＥ技術）は、一般的に、３つの動作（１）エンティティおよび関係を表現すること、（２）スコアリング関数を定義すること、および（３）エンティティおよび関係の表現を学習することを、含む。第１の動作は、エンティティおよび関係の、連続ベクトル空間内での表現形態を特定する。エンティティは、通常、ベクトル空間内の決定論的ポイントのような、ベクトルとして表される。関係は、一般的に、ベクトル、行列、テンソル、多変量ガウス分布、またはガウス関数の混合として表すことができる、ベクトル空間内の動作であると解釈される。第２の動作において、スコアリング関数ｆｒ（ｈ，ｔ）を各事実（ｈ，ｒ，ｔ）に適用することにより、そのもっともらしさを測定する。たとえば、ＴｒａｎｓＥ技術において、スコアリング関数は、ｈ＋ｒとｔとの間の負の距離として定義することができる。
【０１４４】
【数６】
2021534493.tif 000012
【０１４５】
ナレッジグラフで観察された事実は、一般的に、観察されていない事実よりも高いスコアを有する。第３の動作は、観察された事実の総合的なもっともらしさを最大化することにより、エンティティおよび関係の表現（たとえば埋め込み）を学習する、最適化プロセスを含む。
【０１４６】
いくつかの実施形態において、グラフＧにおけるすべてのエンティティおよび対応する関係について、最初に、埋め込みを、事前訓練された埋め込みを用いて初期化し、次に、ＴｒａｎｓＥ技術のような技術と、異なるスコアリング関数とを用いて、再訓練することができる。たとえば、再訓練プロセスのためのスコアリング関数は、式（５）から以下の式に変更することができる。
【０１４７】
【数７】
2021534493.tif 000013
【０１４８】
式中、θｒは、生成されたグラフに属するエンティティおよび関係についての重みである。この重み付けされたスコアリング関数は、ＴｒａｎｓＭ（たとえば、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参照）から着想を得たものであり、グラフＧにおけるエンティティおよび関係により大きな重みを与える。最大マージンヒンジ損失関数を、ＴｒａｎｓＥのオープンワールド訓練パラダイムに従い、使用することができる。埋め込みは、以下の傾斜について更新することができる。
【０１４９】
【数８】
2021534493.tif 000014
【０１５０】
式中、||ｈ||２＝１であり、||ｔ||２＝１である。式（７）は、最大マージンヒンジ損失関数を含み得るものであり、ハイパーパラメータγは、マージン（＞０）である。グラフＧのエンティティおよび関係の埋め込みが疎になり過ぎないようにするために、追加の正則化項が式（７）に含まれており、λは、正則化強度（＞０）である。ＴおよびＴ’はそれぞれ、各ミニバッチにおける訓練トリプルおよび破損トリプルを意味する。これは、転移学習プロセスとしてモデル化され、グラフ埋め込みの再訓練は、ナレッジグラフ内にあるエンティティおよび関係により大きな重みを与えることで、生成されたナレッジグラフのベクトルを微調整するのに、役立ち得る。このプロセスは、埋め込みにおけるノイズを減じること、および、１対１ではない関係をモデリングする際のＴｒａｎｓＥの弱点を補償することを、このような１対１ではない関係の可能性が低い生成されたグラフの構成要素を優先することで、可能にし得るものである。
【０１５１】
表５は、たとえば意図分類のために上記ナレッジグラフの埋め込みを使用する方法の一例を示す。
【０１５２】
【表５】
2021534493.tif 000015
【０１５３】
表５に示される例では、動作１において、たとえばＷｉｋｉｄａｔａについて埋め込みを事前訓練することができる。動作２において、ナレッジグラフＧにおけるすべてのエンティティおよび対応する関係について、動作１で得た事前訓練された埋め込みを用いて埋め込みを初期化することができ、次に、ＴｒａｎｓＥ技術のような技術と、異なる、重み付けされたスコアリング関数とを用いて、再訓練することができる。動作３において、所定の発話について、この発話におけるすべてのエンティティを、表２について先に述べたエンティティ抽出およびリンキングプロセスを用いて抽出することができる。次に、文におけるエンティティについて（上記計算した）すべてのエンティティ埋め込みを平均する。また、並行して文をクリーニングする（たとえばトリミング、ヴォキャブラリー単語を削除、数字および未知の文字を削除する等）ことにより、疎の状態を減じることができ、この文の残りの単語についてＧｌｏＶｅベクトル（たとえば、Pennington et al., “Glove: Global vectors for word representation,” Proceedings of the Empirical Methods in Natural Language Processing (EMNLP), 2014参照）を平均することができる。次に、この文について平均したＧｌｏＶｅベクトルおよび平均ナレッジグラフ埋め込みを連結し、たとえば、Goikoetxea et al., “Single or multiple? combining word representations independently learned from text and wordnet,” Proceedings of AAAI, 2016に示されるように、主成分分析（principal component analysis）（ＰＣＡ）を、連結したベクトルに対して実行することができる。動作４において、ＰＣＡ後に、連結されたベクトルを、意図分類のために分類器に送ることができる。
【０１５４】
表６は、表５に関して先に述べた、ナレッジグラフ埋め込み技術および平均ＧｌｏＶｅベクトル技術を用いて、訓練時間およびクエリ時間を示す。ＫＧＥ訓練時間は、キャッシュ無しの最初の実行についてのものである。後続の実行の方が高速であろう。
【０１５５】
【表６】
2021534493.tif 000016
【０１５６】
また、アブレーション研究が、プロセス全体のうちのどの側面が精度およびＦ１スコアの増大に寄与するかを判断するために使用される。技術の５つの変形について実験を行った。変形Ｖａｒ１では、ハイパーパラメータの最適化（すなわちグリッドサーチ）を実施せず、ハイパーパラメータをある範囲内でランダムに選択する。変形Ｖａｒ２では、ナレッジグラフを、頂点と、入力発話で発見されたエンティティ間のエッジ（関係）のみとを用いて初期化する。変形Ｖａｒ３では、本開示に記載の有限状態機械ではなく、最大深さ５の参照ナレッジグラフの１ホップランダムウォークトラバースを使用する。変形Ｖａｒ４では、入力発話における各単語についてＧｌｏＶｅベクトルを平均することで、特徴ベクトルが生成される。変形Ｖａｒ５では、表５に関して述べたようなナレッジグラフ埋め込みの再訓練は行われず、ＷｉｋｉＤａｔａについて事前訓練されたＴｒａｎｓＥ埋め込みが代わりに使用される。これらの５つの変形のＦ１スコアおよび精度の結果が、表７に示され、これらの変形のいずれも適用せずに得られた結果と比較される。
【０１５７】
【表７】
2021534493.tif 000017
【０１５８】
アブレーション研究の結果は、ハイパーパラメータの最適化がもたらす精度の改善は少ないかもしれないが（表７のＶａｒ１とフルアルゴリズムとの比較により示される）、これは本明細書に開示されている他の技術の寄与と比較すると重要ではないことを、示している。ランダムウォークトラバース（変形Ｖａｒ３）および平均ＧｌｏＶｅベクトル（変形Ｖａｒ４）の場合のパフォーマンス低下は、ナレッジグラフ埋め込みが分類プロセスにおいてより関連性の高い情報を捕捉できることを示している。特に、Ｆ１スコアは精度よりも大幅に低下する。このことは、発話に関するより意味論的な情報が特徴ベクトル内に存在する可能性があることを示し得るものであり、結果として、フォールスポジティブおよびフォールスネガティブを少なくすることができる。ナレッジグラフを初期化する方法および参照ナレッジグラフをトラバースする方法のいずれもが、結果に大きな影響を与える。ナレッジグラフ埋め込みを再訓練することも、パフォーマンスを改善することができ、このことは、生成されたナレッジグラフの構成要素を優先するように埋め込みを再訓練することが、エンティティおよび関係のモデル化に役立ち得ることを示している。
【０１５９】
本明細書に記載されている技術は、１つ以上の処理ユニット（たとえばプロセッサ、コア）、ハードウェア、またはその組み合わせによって実行されるソフトウェア（たとえばコード、命令、プログラム）において実現されてもよいソフトウェアは、メモリに（たとえばメモリデバイス等の非一時的なコンピュータ読取可能記憶媒体に）格納されてもよい。本明細書に記載の技術は、クラウド環境（たとえばプライベート、パブリック、およびハイブリッドクラウド環境を含む各種クラウド）、オンプレミス環境、ハイブリッド環境などを含む、さまざまな異なる環境で実現することができる。
【０１６０】
図１０は、ある実施形態を実現するための分散型システム１０００の簡略図を示す。示されている実施形態において、分散型システム１０００は、サーバ１０１２を介して１つ以上の通信ネットワーク１０１０に結合された１つ以上のクライアントコンピューティングデバイス１００２、１００４、１００６、および１００８を含む。クライアントコンピューティングデバイス１００２、１００４、１００６、および１００８は、１つ以上のアプリケーションを実行するように構成し得る。
【０１６１】
各種実施形態において、サーバ１０１２は、あるアプリケーションのユーザインターフェイスコンポーネントと、データオブジェクトとの間に、このアプリケーションに関する要求情報を用いて、関係またはマッピングを自動的に生成する１つ以上のサービスまたはソフトウェアアプリケーションを実行または提供するのに適するようにすることができる。たとえば、特定の実施形態において、サーバ１０１２は、あるアプリケーションについての要求情報を受けてもよく、この要求情報は、アプリケーションの所望の機能の記述を含み得るものであり、また、アプリケーションの所望のＧＵＩの画像を含み得る。そうすると、サーバ１０１２は、この要求情報を用いることにより、アプリケーションのユーザインターフェイスコンポーネントと１つ以上のデータオブジェクトとの間にマッピングを生成することができる。
【０１６２】
特定の実施形態において、サーバ１０１２はまた、非仮想または仮想環境に提供し得るその他のサービスまたはソフトウェアアプリケーションを提供することができる。いくつかの実施形態において、これらのサービスは、サービスとしてのソフトウェア（Software as a Service）（ＳａａＳ）モデルのようなウェブベースまたはクラウドサービスとして、クライアントコンピューティングデバイス１００２、１００４、１００６、および／または１００８のユーザに提供されてもよい。そうすると、クライアントコンピューティングデバイス１００２、１００４、１００６、および／または１００８を操作しているユーザは、１つ以上のクライアントアプリケーションを利用することにより、サーバ１０１２とやり取りして、これらのコンポーネントが提供するサービスを利用することができる。
【０１６３】
図１０に示される構成において、サーバ１０１２は、サーバ１０１２が実行する機能を実現する１つ以上のコンポーネント１０１８、１０２０および１０２２を含み得る。これらのコンポーネントは、１つ以上のプロセッサ、ハードウェアコンポーネント、またはその組み合わせによって実行可能なソフトウェアコンポーネントを含み得る。なお、分散型システム１０００とは異なり得る多種多様なシステム構成が可能であることが理解されるはずである。よって、図１０に示される実施形態は、実施形態のシステムを実現するための分散型システムの一例であり限定を意図したものではない。
【０１６４】
本開示の教示に従い、ユーザは、クライアントコンピューティングデバイス１００２、１００４、１００６、および／または１００８を用いることにより、要求情報をサーバ１０１２に提供し、サーバ１０１２から情報（たとえばマッピング情報）を受けることができる。クライアントデバイスは、クライアントデバイスのユーザがクライアントデバイスとやり取りすることを可能にするインターフェイスを提供し得る。クライアントデバイスはまた、このインターフェイスを介して情報をユーザに出力する。図１０は４つのクライアントコンピューティングデバイスしか示していないが、任意の数のクライアントコンピューティングデバイスをサポートすることができる。
【０１６５】
クライアントデバイスは、ポータブルハンドヘルドデバイス、パーソナルコンピュータおよびラップトップのような汎用コンピュータ、ワークステーションコンピュータ、ウェアラブルデバイス、ゲームシステム、シンクライアント、各種メッセージングデバイス、センサまたはその他のセンシングデバイスなどのような、さまざまな種類のコンピューティングシステムを含み得る。これらのコンピューティングデバイスは、さまざまな種類およびバージョンのソフトウェアアプリケーションおよびオペレーティングシステム（たとえばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）、ＵＮＩＸ（登録商標）またはＵＮＩＸ系オペレーティングシステム、Ｌｉｎｕｘ（登録商標）またはＬｉｎｕｘ系オペレーティングシステム、たとえば、各種おモバイルオペレーティングシステム（たとえばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ  Ｍｏｂｉｌｅ（登録商標）、ｉＯＳ（登録商標）、Ｗｉｎｄｏｗｓ  Ｐｈｏｎｅ（登録商標）、Ａｎｄｒｏｉｄ（登録商標）、ＢｌａｃｋＢｅｒｒｙ（登録商標）、Ｐａｌｍ  ＯＳ（登録商標））を含むＧｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳ）を含み得る。ポータブルハンドヘルドデバイスは、セルラーフォン、スマートフォン（たとえばｉＰｈｏｎｅ（登録商標））、タブレット（たとえばｉＰａｄ（登録商標））、携帯情報端末（ＰＤＡ）などを含み得る。ウェアラブルデバイスは、Ｇｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイおよびその他のデバイスを含み得る。ゲームシステムは、各種ハンドヘルドゲームデバイス、インターネット接続可能なゲームデバイス（たとえばＫｉｎｅｃｔ（登録商標）ジェスチャ入力デバイスを備えたＭｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）ゲーム機、Ｓｏｎｙ  ＰｌａｙＳｔａｔｉｏｎ（登録商標）システム、Ｎｉｎｔｅｎｄｏ（登録商標）が提供する各種ゲームシステムなどを含み得る。クライアントデバイスは、各種インターネット関連アプリケーション、通信アプリケーション（たとえばＥメールアプリケーション、ショートメッセージサービス（ＳＭＳ）アプリケーション）のような多種多様なアプリケーションを実行可能であってもよく、各種通信プロトコルを使用することができる。
【０１６６】
通信ネットワーク１０１０は、利用可能な多様なプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当該技術の当業者には周知のいずれかの種類のネットワークであればよく、上記プロトコルは、ＴＣＰ／ＩＰ（伝送制御プロトコル／インターネットプロトコル）、ＳＮＡ（システムネットワークアーキテクチャ）、ＩＰＸ（インターネットパケット交換）、ＡｐｐｌｅＴａｌｋ（登録商標）などを含むがこれらに限定されない。単に例として、通信ネットワーク１０１０は、ローカルエリアネットワーク（ＬＡＮ）、Ｅｔｈｅｒｎｅｔ（登録商標）に基づくネットワーク、トークンリング、ワイドエリアネットワーク（ＷＡＮ）、インターネット、仮想ネットワーク、仮想プライベートネットワーク（ＶＰＮ）、イントラネット、エクストラネット、公衆交換電話網（ＰＳＴＮ）、赤外線ネットワーク、無線ネットワーク（たとえば電気電子学会（ＩＥＥＥ）１００２．１１プロトコルスイートのいずれかの下で動作する無線ネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標）および／または任意の他の無線プロトコル）、および／またはこれらおよび／または他のネットワークの任意の組み合わせを含み得る。
【０１６７】
サーバ１０１２は、１つ以上の汎用コンピュータ、専用サーバコンピュータ（一例としてＰＣ（パーソナルコンピュータ）サーバ、ＵＮＩＸ（登録商標）サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウント型サーバなどを含む）、サーバファーム、サーバクラスタ、またはその他の適切な構成および／または組み合わせで構成されてもよい。サーバ１０１２は、仮想オペレーティングシステムを実行する１つ以上の仮想マシン、または仮想化を伴う他のコンピューティングアーキテクチャを含み得る。これはたとえば、サーバに対して仮想記憶装置を維持するように仮想化できる論理記憶装置の１つ以上のフレキシブルツールなどである。各種実施形態において、サーバ１０１２を、上記開示に記載の機能を提供する１つ以上のサービスまたはソフトウェアアプリケーションを実行するのに適するようにしてもよい。
【０１６８】
サーバ１０１２内のコンピューティングシステムは、上記オペレーティングシステムのうちのいずれかを含む１つ以上のオペレーティングシステム、および、市場で入手可能なサーバオペレーティングシステムを実行し得る。また、サーバ１０１２は、ＨＴＴＰ（ハイパーテキスト転送プロトコル）サーバ、ＦＴＰ（ファイル転送プロトコル）サーバ、ＣＧＩ（コモンゲートウェイインターフェイス）サーバ、ＪＡＶＡ（登録商標）サーバ、データベースサーバなどを含むさまざまなさらに他のサーバアプリケーションおよび／または中間層アプリケーションのうちのいずれかを実行し得る。例示されるデータベースサーバは、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、ＩＢＭ（登録商標）（International Business Machines）などから市場で入手可能なものを含むが、それらに限定されるものではない。
【０１６９】
いくつかの実装例において、サーバ１０１２は、クライアントコンピューティングデバイス１００２，１００４，１００６および１００８のユーザから受信したデータフィードおよび／またはイベントアップデートを解析および整理統合するための１つ以上のアプリケーションを含み得る。一例として、データフィードおよび／またはイベントアップデートは、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえば、ネットワークモニタリングおよびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通モニタリングなどに関連するリアルタイムのイベントを含んでもよい、１つ以上の第三者情報源および連続データストリームから受信される、Ｔｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）アップデートまたはリアルタイムのアップデートを含み得るが、それらに限定されるものではない。サーバ１０１２は、データフィードおよび／またはリアルタイムのイベントをクライアントコンピューティングデバイス１００２，１００４，１００６および１００８の１つ以上の表示デバイスを介して表示するための１つ以上のアプリケーションも含み得る。
【０１７０】
分散型システム１０００はまた、１つ以上のデータリポジトリ１０１４、１０１６を含み得る。特定の実施形態において、これらのデータリポジトリを用いてデータおよびその他の情報を格納することができる。たとえば、データリポジトリ１０１４、１０１６のうちの１つ以上を用いて、サーバ１０１２が使用するまたは生成した、１つ以上のアプリケーションについての要求情報、マッピング情報、およびその他の情報などの情報を格納することができる。データリポジトリ１０１４、１０１６は、さまざまな場所に存在し得る。たとえば、サーバ１０１２が使用するデータリポジトリは、サーバ１０１２のローカル位置にあってもよく、またはサーバ１０１２から遠隔の位置にあってもよく、ネットワークベースのまたは専用接続を介してサーバ１０１２と通信する。データリポジトリ１０１４、１０１６は、異なる種類であってもよい。特定の実施形態において、サーバ１０１２が使用するデータリポジトリは、データベース、たとえば、Ｏｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）が提供するデータベースのようなリレーショナルデータベースであってもよい。これらのデータベースのうちの１つ以上を、ＳＱＬフォーマットのコマンドに応じて、データの格納、アップデート、およびデータベースとの間での取り出しを可能にするのに適するようにしてもよい。アプリケーションが使用するデータリポジトリは、たとえば、キー値ストアリポジトリ、オブジェクトストアリポジトリ、またはファイルシステムがサポートする汎用ストレージリポジトリのようなさまざまな種類のものであってもよい。
【０１７１】
特定の実施形態において、本開示に記載の特徴は、クラウド環境を介してサービスとして提供することができる。図１１は、特定の実施形態に係る、各種サービスをクラウドサービスとして提供し得るクラウドベースのシステム環境の簡略化されたブロック図である。図１１に示される実施形態において、クラウドインフラストラクチャシステム１１０２は、ユーザが１つ以上のクライアントデバイス１１０４、１１０６、および１１０８を用いて要求し得る１つ以上のクラウドサービスを提供することができる。クラウドインフラストラクチャシステム１１０２は、サーバ１０１２に関して先に述べたものを含み得る１つ以上のコンピュータおよび／またはサーバを含み得る。クラウドインフラストラクチャシステム１１０２内のコンピュータを、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な配置および／または組み合わせとして、組織してもよい。
【０１７２】
ネットワーク１１１０は、クライアントデバイス１１０４、１１０６、および１１０８と、クラウドインフラストラクチャシステム１１０２との間におけるデータの通信および交換を容易にすることができる。ネットワーク１１１０は、１つ以上のネットワークを含み得る。ネットワークは同じ種類であっても異なる種類であってもよい。ネットワーク１１１０は、通信を容易にするために、有線および／または無線プロトコルを含む、１つ以上の通信プロトコルをサポートすることができる。
【０１７３】
図１１に示される実施形態は、クラウドインフラストラクチャシステムの一例にすぎず、限定を意図したものではない。なお、その他いくつかの実施形態において、クラウドインフラストラクチャシステム１１０２が、図１１に示されるものよりも多くのまたは少ないコンポーネントを有していてもよく、２つ以上のコンポーネントを組み合わせてもよく、または、コンポーネントの異なる構成または配置を有していてもよいことが、理解されるはずである。たとえば、図１１は３つのクライアントコンピューティングデバイスを示しているが、代替実施形態において任意の数のクライアントコンピューティングデバイスをサポートすることができる。
【０１７４】
クラウドサービスという用語は一般的に、サービスプロバイダのシステム（たとえばクラウドインフラストラクチャシステム１１０２）により、インターネット等の通信ネットワークを介してオンデマンドでユーザが利用できるようにされるサービスを意味するために使用される。典型的に、パブリッククラウド環境では、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。クラウドサービスプロバイダのシステムは、クラウドサービスプロバイダによって管理される。よって、顧客は、別途ライセンス、サポート、またはハードウェアおよびソフトウェアリソースをサービスのために購入しなくても、クラウドサービスプロバイダが提供するクラウドサービスを利用できる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストすることができ、ユーザは、アプリケーションを実行するためにインフラストラクチャリソースを購入しなくても、インターネットを介しオンデマンドでアプリケーションをオーダーし使用することができる。クラウドサービスは、アプリケーション、リソースおよびサービスに対する容易でスケーラブルなアクセスを提供するように設計される。いくつかのプロバイダがクラウドサービスを提供する。たとえば、ミドルウェアサービス、データベースサービス、Ｊａｖａクラウドサービスその他などのいくつかのクラウドサービスが、カリフォルニア州レッドウッド・ショアーズのＯｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）から提供される。
【０１７５】
特定の実施形態において、クラウドインフラストラクチャシステム１１０２は、ハイブリッドサービスモデルを含む、サービスとしてのソフトウェア（ＳａａＳ）モデル、サービスとしてのプラットフォーム（ＰａａＳ）モデル、サービスとしてのインフラストラクチャ（ＩａａＳ）モデルその他のような、異なるモデルを使用して、１つ以上のクラウドサービスを提供し得る。クラウドインフラストラクチャシステム１１０２は、各種クラウドサービスのプロビジョンを可能にする、アプリケーション、ミドルウェア、データベース、およびその他のリソースのスイートを含み得る。
【０１７６】
ＳａａＳモデルは、アプリケーションまたはソフトウェアを、インターネットのような通信ネットワークを通して、顧客が基本となるアプリケーションのためのハードウェアまたはソフトウェアを購入しなくても、サービスとして顧客に配信することを可能にする。たとえば、ＳａａＳモデルを用いることにより、クラウドインフラストラクチャシステム１１０２がホストするオンデマンドアプリケーションに顧客がアクセスできるようにすることができる。Ｏｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）が提供するＳａａＳサービスの例は、人的資源／資本管理のための各種サービス、カスタマー・リレーションシップ・マネジメント（ＣＲＭ）、エンタープライズ・リソース・プランニング（ＥＲＰ）、サプライチェーン・マネジメント（ＳＣＭ）、エンタープライズ・パフォーマンス・マネジメント（ＥＰＭ）、解析サービス、ソーシャルアプリケーションその他を含むがこれらに限定されるものではない。特定の実施形態において、アプリケーションに関する要求情報から機能アプリケーションを自動的に生成する機能を、ＳａａＳモデルに基づくサービスとして提供することができる。
【０１７７】
ＩａａＳモデルは一般的に、インフラストラクチャリソース（たとえばサーバ、ストレージ、ハードウェアおよびネットワーキングリソース）を、クラウドサービスとして顧客に提供することにより、柔軟な計算およびストレージ機能を提供するために使用される。各種ＩａａＳサービスがＯｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）から提供される。
【０１７８】
ＰａａＳモデルは一般的に、顧客が、アプリケーションおよびサービスを、環境リソースを調達、構築、または管理しなくても、開発、実行、および管理することを可能にするプラットフォームおよび環境リソースをサービスとして提供するために使用される。Ｏｒａｃｌｅ  Ｃｏｒｐｏｒａｔｉｏｎ（登録商標）が提供するＰａａＳサービスの例は、Oracle Java Cloud Service（ＪＣＳ）、Oracle Database Cloud Service（ＤＢＣＳ）、データ管理クラウドサービス、各種アプリケーション開発ソリューションサービスその他を含むがこれらに限定されるものではない。
【０１７９】
クラウドサービスは一般的に、オンデマンドのセルフサービスベースで、サブスクリプションベースで、柔軟にスケーラブルで、信頼性が高く、可用性が高い、安全なやり方で提供される。たとえば、顧客は、サブスクリプションオーダーを介し、クラウドインフラストラクチャシステム１１０２が提供する１つ以上のサービスをオーダーすることができる。クラウドインフラストラクチャシステム１１０２はそうすると、処理を実行することにより、顧客のサブスクリプションオーダーで要求されたサービスを提供する。たとえば、ユーザは、アプリケーションについての要求情報を、クラウドインフラストラクチャシステムに与え、クラウドインフラストラクチャシステムに、要求情報から機能アプリケーションを自動的に生成するよう要求する。これは、先に述べたように、アプリケーションのユーザインターフェイスコンポーネントとデータオブジェクトとの間にマッピングを自動的に生成することを含む。クラウドインフラストラクチャシステム１１０２を、１つまたは複数のクラウドサービスを提供するように構成してもよい。
【０１８０】
クラウドインフラストラクチャシステム１１０２は、異なるデプロイメントモデルを介してクラウドサービスを提供し得る。パブリッククラウドモデルにおいて、クラウドインフラストラクチャシステム１１０２は、第三者クラウドサービスプロバイダによって所有されていてもよく、クラウドサービスは一般のパブリックカスタマーに提供される。このカスタマーは個人でも企業でもよい。その他特定の実施形態において、プライベートクラウドモデルでは、クラウドインフラストラクチャシステム１１０２がある組織内で（たとえば企業組織内で）機能してもよく、サービスはこの組織内の顧客に提供される。たとえば、この顧客は、人事部、給与部その他のようなさまざまな部署であってもよく、企業内の個人であってもよい。その他の特定の実施形態において、コミュニティクラウドモデルでは、クラウドインフラストラクチャシステム１１０２および提供されるサービスは、関連コミュニティ内の数組織で共有されてもよい。上記モデルの混成モデルのようなその他各種モデルを使用することもできる。
【０１８１】
クライアントデバイス１１０４、１１０６、および１１０８は、異なるタイプであってもよく（たとえば図１１に示されるクライアントデバイス１１０４、１１０６、および１１０８）、１つ以上のクライアントアプリケーションを操作可能であってもよい。ユーザは、クライアントデバイスを用いることにより、クラウドインフラストラクチャシステム１１０２が提供するサービスを要求することなど、クラウドインフラストラクチャシステム１１０２とのやり取りを行うことができる。たとえば、ユーザは、クライアントデバイスを用いることにより、アプリケーションについての要求情報をクラウドインフラストラクチャシステム１１０２に提供し、クラウドインフラストラクチャシステムに、要求情報から機能アプリケーションを自動的に生成するよう要求することができる。これは、本開示で述べたように、アプリケーションのユーザインターフェイスコンポーネントとデータオブジェクトとの間にマッピングを自動的に生成することを含む。
【０１８２】
いくつかの実施形態において、クラウドインフラストラクチャシステム１１０２が、要求されたサービスを提供するために実行する処理は、ビッグデータ解析を含み得る。この解析は、大きなデータセットを使用し、解析し、操作することにより、このデータ内のさまざまな傾向、挙動、関係などを検出し可視化することを含み得る。この解析は、１つ以上のプロセッサが、場合によっては、データを並列に処理し、データを用いてシミュレーションを実行するなどして、実行してもよい。この解析に使用されるデータは、構造化データ（たとえばデータベースに格納されたまたは構造化モデルに従って構造化されたデータ）および／または非構造化データ（たとえばデータブロブ（blob）（binary large object：バイナリ・ラージ・オブジェクト））を含み得る。
【０１８３】
図１１の実施形態に示されるように、クラウドインフラストラクチャシステム１１０２は、クラウドインフラストラクチャシステム１１０２が提供する各種クラウドサービスのプロビジョンを容易にするために利用されるインフラストラクチャリソース１１３０を含み得る得。インフラストラクチャリソース１１３０は、たとえば、処理リソース、ストレージまたはメモリリソース、ネットワーキングリソースなどを含み得る。
【０１８４】
特定の実施形態において、異なる顧客に対しクラウドインフラストラクチャシステム１１０２が提供する各種クラウドサービスをサポートするためのこれらのリソースを効率的にプロビジョニングし易くするために、リソースを、リソースセットまたはリソースモジュール（「ポッド」とも呼ばれる）になるようにまとめてもよい。各リソースモジュールまたはポッドは、１種類以上のリソースを予め一体化し最適化した組み合わせを含み得る。特定の実施形態において、異なるポッドを異なる種類のクラウドサービスに対して予めプロビジョニングしてもよい。たとえば、第１のポッドセットをデータベースサービスのためにプロビジョニングしてもよく、第１のポッドセット内のポッドと異なるリソースの組み合わせを含み得る第２のポッドセットをＪａｖａサービスなどのためにプロビジョニングしてもよい。いくつかのサービスについて、これらのサービスをプロビジョニングするために割り当てられたリソースをサービス間で共有してもよい。
【０１８５】
クラウドインフラストラクチャシステム１１０２自身が、クラウドインフラストラクチャシステム１１０２の異なるコンポーネントによって共有されクラウドインフラストラクチャシステム１１０２によるサービスのプロビジョニングを容易にするサービス１１３２を、内部で使用してもよい。これらの内部共有サービスは、セキュリティ・アイデンティティサービス、統合サービス、エンタープライズリポジトリサービス、エンタープライズマネージャサービス、ウィルススキャン・ホワイトリストサービス、高可用性バックアップリカバリサービス、クラウドサポートを可能にするサービス、Ｅメールサービス、通知サービス、ファイル転送サービスなどを含み得るが、これらに限定されるものではない。
【０１８６】
クラウドインフラストラクチャシステム１１０２は複数のサブシステムを含み得る。これらのサブシステムは、ソフトウェア、またはハードウェア、またはその組み合わせで実現し得る。図１１に示されるように、サブシステムは、クラウドインフラストラクチャシステム１１０２のユーザまたは顧客がクラウドインフラストラクチャシステム１１０２とやり取りすることを可能にするユーザインターフェイスサブシステム１１１２を含み得る。ユーザインターフェイスサブシステム１１１２は、ウェブインターフェイス１１１４、クラウドインフラストラクチャシステム１１０２が提供するクラウドサービスが宣伝広告され消費者による購入が可能なオンラインストアインターフェイス１１１６、およびその他のインターフェイス１１１８のような、各種異なるインターフェイスを含み得る。たとえば、顧客は、クライアントデバイスを用い、クラウドインフラストラクチャシステム１１０２が提供する１つ以上のサービスを、インターフェイス１１１４、１１１６、および１１１８のうちの１つ以上を用いてサブスクリプションオーダーを行うことによって要求する（サービス要求１１３４）ことができる。これらのインターフェイスは、たとえば、顧客が、クラウドインフラストラクチャシステム１１０２が提供するクラウドサービスを特定するオンラインストアにアクセスしてこれをブラウズし、顧客が申し込むことを希望する、提供されたサービスのうちの１つ以上についてサブスクリプションオーダーを行うための、オンラインストアユーザインターフェイス１１１６を含み得る。その他のインターフェイスはウェブインターフェイス１１１４およびその他のインターフェイス１１１８を含み得る。
【０１８７】
特定の実施形態において、サービス要求またはサブスクリプション要求は、要求しているユーザまたは顧客を特定する情報と、顧客が申込みを希望する１つ以上のサービスとを含み得る。たとえば、顧客は、クラウドインフラストラクチャシステム１１０２が提供する自動アプリケーション生成サービスに対してサブスクリプションオーダーを行うことができる。
【０１８８】
図１１に示される実施形態のような特定の実施形態において、クラウドインフラストラクチャシステム１１０２は、新規サブスクリプションオーダーを処理するように構成されたオーダー管理サブシステム（ＯＭＳ）１１０２を含み得る。この処理の一部として、ＯＭＳ１１２０は、既に作成されていなければ顧客のアカウントを作成し、要求されたサービスを顧客に提供するために顧客に対して課金するのに使用する課金および／またはアカウント情報を顧客から受け、顧客情報を検証し、検証後、顧客のためにこのオーダーを予約し、各種ワークフローを調整することにより、プロビジョニングのためにオーダーを準備するように、構成されてもよい。
【０１８９】
適切に妥当性確認がなされると、ＯＭＳ１１２０は、処理、メモリ、およびネットワーキングリソースを含む、このオーダーのためのリソースをプロビジョニングするように構成されたオーダープロビジョニングサブシステム（ＯＰＳ）１１２４を呼び出すことができる。プロビジョニングは、オーダーのためのリソースを割り当てることと、顧客オーダーが要求するサービスを容易にするようにリソースを構成することとを含み得る。オーダーのためにリソースをプロビジョニングするやり方およびプロビジョニングされるリソースのタイプは、顧客がオーダーしたクラウドサービスのタイプに依存し得る。たとえば、あるワークフローに従うと、ＯＰＳ１１２４を、要求されている特定のクラウドサービスを判断し、この特定のクラウドサービスのために予め構成されたであろうポッドの数を特定するように構成されてもよい。あるオーダーのために割り当てられるポッドの数は、要求されたサービスのサイズ／量／レベル／範囲に依存し得る。たとえば、割り当てるポッドの数は、サービスがサポートすべきユーザの数、サービスが要求されている期間などに基づいて決定してもよい。次に、割り当てられたポッドを、要求されたサービスを提供するために、要求している特定の顧客に合わせてカスタマイズしてもよい。
【０１９０】
クラウドインフラストラクチャシステム１１０２は、要求されたサービスがいつ使用できるようになるかを示すために、レスポンスまたは通知１１４４を、要求している顧客に送ってもよい。いくつかの例において、顧客が、要求したサービスの利益の使用および利用を開始できるようにする情報（たとえばリンク）を顧客に送信してもよい。
【０１９１】
クラウドインフラストラクチャシステム１１０２はサービスを複数の顧客に提供し得る。各顧客ごとに、クラウドインフラストラクチャシステム１１０２は、顧客から受けた１つ以上のサブスクリプションオーダーに関連する情報を管理し、オーダーに関連する顧客データを維持し、要求されたサービスを顧客に提供する責任がある。また、クラウドインフラストラクチャシステム１１０２は、申し込まれたサービスの顧客による使用に関する使用統計を収集してもよい。たとえば、統計は、使用されたストレージの量、転送されたデータの量、ユーザの数、ならびにシステムアップタイムおよびシステムダウンタイムの量などについて、収集されてもよい。この使用情報を用いて顧客に課金してもよい。課金はたとえば月ごとに行ってもよい。
【０１９２】
クラウドインフラストラクチャシステム１１０２は、サービスを複数の顧客に並列に提供してもよい。クラウドインフラストラクチャシステム１１０２は、場合によっては著作権情報を含む、これらの顧客についての情報を保存してもよい。特定の実施形態において、クラウドインフラストラクチャシステム１１０２は、顧客の情報を管理し管理される情報の分離を提供することで、ある顧客に関する情報が別の顧客に関する情報からアクセスされたりこの情報と混ざり合ったりしないようにするように構成された、アイデンティティ管理サブシステム（ＩＭＳ）１１２８を含む。ＩＭＳ１１２８は、アイデンティティサービス、たとえば情報アクセス管理、認証および許可サービス、顧客のアイデンティティおよび役割ならびに関連する能力などを管理するためのサービスのような、各種セキュリティ関連サービスを提供するように構成されてもよい。
【０１９３】
図１２は、特定の実施形態を実現するために使用し得る例示的なコンピュータシステム１２００を示す。たとえば、いくつかの実施形態において、コンピュータシステム１２００を使用することにより、図１に示されるモデル生成システム１０２のような、上述のさまざまなサーバおよびコンピュータシステムのいずれかを実現することができる。図１２に示されるように、コンピュータシステム１２００は、バスサブシステム１２０２を介して複数の他のサブシステムと通信する処理サブシステム１２０４を含むさまざまなサブシステムを含む。これらの他のサブシステムは、処理加速ユニット１２０６、Ｉ／Ｏサブシステム１２０８、ストレージサブシステム１２１８および通信サブシステム１２２４を含み得る。ストレージサブシステム１２１８は、記憶媒体１２２２およびシステムメモリ１２１０を含む、非一時的なコンピュータ読取可能記憶媒体を含み得る。
【０１９４】
バスサブシステム１２０２は、コンピュータシステム１２００のさまざまなコンポーネントおよびサブシステムに意図されるように互いに通信させるための機構を提供する。バスサブシステム１２０２は単一のバスとして概略的に示されているが、バスサブシステムの代替実施形態は複数のバスを利用してもよい。バスサブシステム１２０２は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスなどを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、業界標準アーキテクチャ（Industry Standard Architecture）（ＩＳＡ）バス、マイクロチャネルアーキテクチャ（Micro Channel Architecture）（ＭＣＡ）バス、エンハンストＩＳＡ（Enhanced ISA）（ＥＩＳＡ）バス、ビデオ・エレクトロニクス・スタンダーズ・アソシエーション（Video Electronics Standards Association）（ＶＥＳＡ）ローカルバス、およびＩＥＥＥ  Ｐ１３８６．１規格に従って製造される中二階バスとして実現可能な周辺コンポーネントインターコネクト（Peripheral Component Interconnect）（ＰＣＩ）バスなどを含み得る。
【０１９５】
処理サブシステム１２０４は、コンピュータシステム１２００の動作を制御し、１つ以上のプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含み得る。プロセッサは、シングルコアまたはマルチコアプロセッサを含み得る。コンピュータシステム１２００の処理リソースを、１つ以上の処理ユニット１２３２、１２３４などになるように組織することができる。処理ユニットは、１つ以上のプロセッサ、同一のまたは異なるプロセッサからの１つ以上のコア、コアとプロセッサとの組み合わせ、またはコアとプロセッサとのその他の組み合わせを含み得る。いくつかの実施形態において、処理サブシステム１２０４は、グラフィックスプロセッサ、デジタル信号プロセッサ（ＤＳＰ）などのような１つ以上の専用コプロセッサを含み得る。いくつかの実施形態では、処理サブシステム１２０４の処理ユニットの一部または全部は、特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのカスタマイズされた回路を使用して実現することができる。
【０１９６】
いくつかの実施形態において、処理サブシステム１２０４内の処理ユニットは、システムメモリ１２１０またはコンピュータ読取可能記憶媒体１２２２に格納された命令を実行することができる。さまざまな実施形態において、処理ユニットはさまざまなプログラムまたはコード命令を実行し、同時に実行する複数のプログラムまたはプロセスを維持することができる。任意の所定の時点で、実行されるべきプログラムコードの一部または全部は、システムメモリ１２１０および／または潜在的に１つ以上の記憶装置を含むコンピュータ読取可能記憶媒体１２１０に常駐していてもよい。適切なプログラミングを介して、処理サブシステム１２０４は、先に述べたさまざまな機能を提供することができる。コンピュータシステム１２００が１つ以上の仮想マシンを実行している例において、１つ以上の処理ユニットに各仮想マシンを割り当ててもよい。
【０１９７】
特定の実施形態において、コンピュータシステム１２００によって実行される全体的な処理を加速するよう、カスタマイズされた処理を実行するために、または処理サブシステム１２０４によって実行される処理の一部をオフロードするために、処理加速ユニット１２０６を任意に設けることができる。
【０１９８】
Ｉ／Ｏサブシステム１２０８は、コンピュータシステム１２００に情報を入力するための、および／またはコンピュータシステム１２００から、もしくはコンピュータシステム１２００を介して、情報を出力するための、デバイスおよび機構を含むことができる。一般に、「入力デバイス」という語の使用は、コンピュータシステム１２００に情報を入力するためのすべての考えられ得るタイプのデバイスおよび機構を含むよう意図される。ユーザインターフェイス入力デバイスは、たとえば、キーボード、マウスまたはトラックボールなどのポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイアル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを伴う音声入力デバイス、マイクロフォン、および他のタイプの入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、ユーザが入力デバイスを制御しそれと対話することを可能にするＭｉｃｒｏｓｏｆｔ  Ｋｉｎｅｃｔ（登録商標）モーションセンサ、Ｍｉｃｒｏｓｏｆｔ  Ｘｂｏｘ（登録商標）３６０ゲームコントローラ、ジェスチャおよび音声コマンドを用いる入力を受信するためのインターフェイスを提供するデバイスなど、モーションセンシングおよび／またはジェスチャ認識デバイスも含んでもよい。ユーザインターフェイス入力デバイスは、ユーザから目の動き（たとえば、写真を撮っている間および／またはメニュー選択を行っている間の「まばたき」）を検出し、アイジェスチャを入力デバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標））への入力として変換するＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）瞬き検出器などのアイジェスチャ認識デバイスも含んでもよい。また、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを介して音声認識システム（たとえばＳｉｒｉ（登録商標）ナビゲータ）と対話することを可能にする音声認識感知デバイスを含んでもよい。
【０１９９】
ユーザインターフェイス入力デバイスの他の例は、三次元（３Ｄ）マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、ならびにスピーカ、デジタルカメラ、デジタルカムコーダ、ポータブルメディアプレーヤ、ウェブカム、画像スキャナ、指紋スキャナ、バーコードリーダ３Ｄスキャナ、３Ｄプリンタ、レーザレンジファインダ、および視線追跡デバイスなどの聴覚／視覚デバイスも含んでもよいが、それらに限定されるものではない。また、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影、磁気共鳴撮像、ポジションエミッショントモグラフィー、および医療用超音波検査デバイスなどの医療用画像化入力デバイスを含んでもよい。ユーザインターフェイス入力デバイスは、たとえば、ＭＩＤＩキーボード、デジタル楽器などの音声入力デバイスも含んでもよい。
【０２００】
一般的に、出力デバイスという語の使用は、コンピュータシステム１２００からユーザまたは他のコンピュータに情報を出力するための考えられるすべてのタイプのデバイスおよび機構を含むことを意図している。ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、インジケータライト、または音声出力デバイスなどのような非ビジュアルディスプレイなどを含んでもよい。ディスプレイサブシステムは、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）またはプラズマディスプレイを使うものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。たとえば、ユーザインターフェイス出力デバイスは、モニタ、プリンタ、スピーカ、ヘッドフォン、自動車ナビゲーションシステム、プロッタ、音声出力デバイスおよびモデムなどの、テキスト、グラフィックスおよび音声／映像情報を視覚的に伝えるさまざまな表示デバイスを含んでもよいが、それらに限定されるものではない。
【０２０１】
ストレージサブシステム１２１８は、コンピュータシステム１２００によって使用される情報およびデータを格納するためのリポジトリまたはデータストアを提供する。ストレージサブシステム１２１８は、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構成を格納するための有形の非一時的なコンピュータ読取可能記憶媒体を提供する。処理サブシステム１２０４によって実行されると上述の機能を提供するソフトウェア（たとえばプログラム、コードモジュール、命令）が、ストレージサブシステム１２１８に格納されてもよい。ソフトウェアは、処理サブシステム１２０４の１つ以上の処理ユニットによって実行されてもよい。ストレージサブシステム１２１８はまた、本開示の教示に従って使用されるデータを格納するためのリポジトリを提供してもよい。
【０２０２】
ストレージサブシステム１２１８は、揮発性および不揮発性メモリデバイスを含む１つ以上の非一時的メモリデバイスを含み得る。図１２に示すように、ストレージサブシステム１２１８は、システムメモリ１２１０およびコンピュータ読取可能記憶媒体１２２２を含む。システムメモリ１２１０は、プログラム実行中に命令およびデータを格納するための揮発性主ランダムアクセスメモリ（ＲＡＭ）と、固定命令が格納される不揮発性読出専用メモリ（ＲＯＭ）またはフラッシュメモリとを含む、いくつかのメモリを含み得る。いくつかの実装例において、起動中などにコンピュータシステム１２００内の要素間における情報の転送を助ける基本的なルーチンを含むベーシックインプット／アウトプットシステム（basic input/output system）（ＢＩＯＳ）は、典型的には、ＲＯＭに格納されてもよい。典型的に、ＲＡＭは、処理サブシステム１２０４によって現在動作するようにされ実行されているデータおよび／またはプログラムモジュールを含む。いくつかの実装例において、システムメモリ１２１０は、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）などのような複数の異なるタイプのメモリを含み得る。
【０２０３】
一例として、限定を伴うことなく、図１２に示されるように、システムメモリ１２１０は、ウェブブラウザ、中間層アプリケーション、リレーショナルデータベース管理システム（ＲＤＢＭＳ）などのような各種アプリケーションを含み得る、実行中のアプリケーションプログラム１２１２、プログラムデータ１２１４、およびオペレーティングシステム１２１６を、ロードしてもよい。一例として、オペレーティングシステム１２１６は、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ａｐｐｌｅ  Ｍａｃｉｎｔｏｓｈ（登録商標）および／またはＬｉｎｕｘオペレーティングシステム、さまざまな市場で入手可能なＵＮＩＸ（登録商標）またはＵＮＩＸ系オペレーティングシステム（さまざまなＧＮＵ／Ｌｉｎｕｘオペレーティングシステム、Ｇｏｏｇｌｅ  Ｃｈｒｏｍｅ（登録商標）ＯＳなどを含むがそれらに限定されない）、および／または、ｉＯＳ（登録商標）、Ｗｉｎｄｏｗｓ（登録商標）  Ｐｈｏｎｅ、Ａｎｄｒｏｉｄ（登録商標）  ＯＳ、ＢｌａｃｋＢｅｒｒｙ（登録商標）  ＯＳ、Ｐａｌｍ（登録商標）  ＯＳオペレーティングシステムのようなさまざまなバージョンのモバイルオペレーティングシステムなどを、含み得る。
【０２０４】
コンピュータ読取可能記憶媒体１２２２は、いくつかの実施形態の機能を提供するプログラミングおよびデータ構成を格納することができる。コンピュータ読取可能記憶媒体１２２２は、コンピュータシステム１２００のための、コンピュータ読取可能命令、データ構造、プログラムモジュール、および他のデータのストレージを提供することができる。処理サブシステム１２０４によって実行されると上記機能を提供するソフトウェア（プログラム、コードモジュール、命令）は、ストレージサブシステム１２１８に格納されてもよい。一例として、コンピュータ読取可能記憶媒体１２２２は、ハードディスクドライブ、磁気ディスクドライブ、ＣＤ  ＲＯＭ、ＤＶＤ、Ｂｌｕ−Ｒａｙ（登録商標）ディスクなどの光ディスクドライブ、またはその他の光学媒体のような不揮発性メモリを含み得る。コンピュータ読取可能記憶媒体１２２２は、Ｚｉｐ（登録商標）ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブ、セキュアデジタル（ＳＤ）カード、ＤＶＤディスク、デジタルビデオテープなどを含んでもよいが、それらに限定されるものではない。コンピュータ読取可能記憶媒体１２２２は、フラッシュメモリベースのＳＳＤ、エンタープライズフラッシュドライブ、ソリッドステートＲＯＭなどのような不揮発性メモリに基づくソリッドステートドライブ（ＳＳＤ）、ソリッドステートＲＡＭ、ダイナミックＲＡＭ、スタティックＲＡＭのような揮発性メモリに基づくＳＳＤ、ＤＲＡＭベースのＳＳＤ、磁気抵抗ＲＡＭ（ＭＲＡＭ）ＳＳＤ、およびＤＲＡＭとフラッシュメモリベースのＳＳＤとの組み合わせを使用するハイブリッドＳＳＤも含み得る。
【０２０５】
特定の実施形態において、ストレージサブシステム１２１８は、コンピュータ読取可能記憶媒体１２２２にさらに接続可能なコンピュータ読取可能記憶媒体リーダー１２２０も含み得る。コンピュータ読取可能記憶媒体リーダー１２２０は、ディスク、フラッシュドライブなどのようなメモリデバイスからデータを受け、読取るように構成されてもよい。
【０２０６】
特定の実施形態において、コンピュータシステム１２００は、処理およびメモリリソースの仮想化を含むがこれに限定されない仮想化技術をサポートし得る。たとえば、コンピュータシステム１２００は、１つ以上の仮想マシンを実行するためのサポートを提供することができる。特定の実施形態において、コンピュータシステム１２００は、仮想マシンの構成および管理を容易にするためのハイパーバイザなどのプログラムを実行することができる。各仮想マシンは、メモリ、計算（たとえばプロセッサ、コア）、Ｉ／Ｏ、およびネットワーキングリソースを割り当てられてもよい。各仮想マシンは通常、他の仮想マシンから独立して実行される。仮想マシンは、典型的に、コンピュータシステム１２００によって実行される他の仮想マシンによって実行されるオペレーティングシステムと同じでも異なっていてもよい、それ自体のオペレーティングシステムを実行する。したがって、潜在的に複数のオペレーティングシステムがコンピュータシステム１２００によって同時に実行され得る。
【０２０７】
通信サブシステム１２２４は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム１２２４は、他のシステムとコンピュータシステム１２００との間のデータの送受のためのインターフェイスとして働く。たとえば、通信サブシステム１２２４は、コンピュータシステム１２００が、１つ以上のクライアントデバイスとの間で情報を送受信するために、インターネットを介して１つ以上のクライアントデバイスへの通信チャネルを確立することを可能にすることができる。
【０２０８】
通信サブシステム１２２４は、有線および／または無線通信プロトコルの両方をサポートすることができる。たとえば、ある実施形態において、通信サブシステム１２２４は、（たとえば、セルラー電話技術、３Ｇ、４ＧもしくはＥＤＧＥ（グローバル進化のための高速データレート）などの先進データネットワーク技術、ＷｉＦｉ（ＩＥＥＥ８０２．ＸＸファミリー規格、もしくは他のモバイル通信技術、またはそれらのいずれかの組み合わせを用いて）無線音声および／またはデータネットワークにアクセスするための無線周波数（ＲＦ）送受信機コンポーネント、グローバルポジショニングシステム（ＧＰＳ）受信機コンポーネント、および／または他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム１２２４は、無線インターフェイスに加えてまたはその代わりに、有線ネットワーク接続（たとえばＥｔｈｅｒｎｅｔ）を提供することができる。
【０２０９】
通信サブシステム１２２４は、さまざまな形式でデータを受信し、送信することができる。たとえば、いくつかの実施形態において、通信サブシステム１２２４は、構造化データフィードおよび／または非構造化データフィード１２２６、イベントストリーム１２２８、イベントアップデート１２３０などの形式で入力通信を受信することができる。たとえば、通信サブシステム１２２４は、ソーシャルメディアネットワークおよび／またはＴｗｉｔｔｅｒ（登録商標）フィード、Ｆａｃｅｂｏｏｋ（登録商標）アップデート、Ｒｉｃｈ  Ｓｉｔｅ  Ｓｕｍｍａｒｙ（ＲＳＳ）フィードなどのウェブフィード、および／または１つ以上の第三者情報源からのリアルタイムアップデートなどのような他の通信サービスのユーザから、リアルタイムでデータフィード１２２６を受信（または送信）するように構成されてもよい。
【０２１０】
特定の実施形態において、通信サブシステム１２２４は、連続データストリームの形式でデータを受信するように構成されてもよく、当該連続データストリームは、明確な終端を持たない、本来は連続的または無限であり得るリアルタイムイベントのイベントストリーム１２２８および／またはイベントアップデート１２３０を含んでもよい。連続データを生成するアプリケーションの例としては、たとえば、センサデータアプリケーション、金融株式相場表示板、ネットワーク性能測定ツール（たとえばネットワークモニタリングおよびトラフィック管理アプリケーション）、クリックストリーム解析ツール、自動車交通モニタリングなどを挙げることができる。
【０２１１】
通信サブシステム１２２４は、コンピュータシステム１２００からのデータをその他のコンピュータシステムまたはネットワークに伝えるように構成されてもよい。このデータは、構造化および／または非構造化データフィード１２２６、イベントストリーム１２２８、イベントアップデート１２３０などのような各種異なる形式で、コンピュータシステム１２００に結合された１つ以上のストリーミングデータソースコンピュータと通信し得る１つ以上のデータベースに、伝えることができる。
【０２１２】
コンピュータシステム１２００は、ハンドヘルドポータブルデバイス（たとえばｉＰｈｏｎｅ（登録商標）セルラーフォン、ｉＰａｄ（登録商標）コンピューティングタブレット、ＰＤＡ）、ウェアラブルデバイス（たとえばＧｏｏｇｌｅ  Ｇｌａｓｓ（登録商標）ヘッドマウントディスプレイ）、パーソナルコンピュータ、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他のデータ処理システムを含む、さまざまなタイプのもののうちの１つであればよい。常に変化するコンピュータおよびネットワークの性質のため、図１２に示されるコンピュータシステム１２００の記載は、単に具体的な例を意図している。図１２に示されるシステムよりも多くのコンポーネントまたは少ないコンポーネントを有するその他多くの構成が可能である。本明細書における開示および教示に基づいて、当業者は、さまざまな実施形態を実現するための他の態様および／または方法を理解するであろう。
【０２１３】
特定の実施形態について説明したが、さまざまな修正、変更、代替構成、および均等物が可能である。実施形態は、特定のデータ処理環境内の動作に限定されず、複数のデータ処理環境内で自由に動作することができる。さらに、実施形態を特定の一連のトランザクションおよびステップを使用して説明したが、これが限定を意図しているのではないことは当業者には明らかであるはずである。いくつかのフローチャートは動作を逐次的プロセスとして説明しているが、これらの動作のうちの多くは並列または同時に実行できる。加えて、動作の順序を再指定してもよい。プロセスは図面に含まれない追加のステップを有し得る。上記実施形態の各種特徴および側面は、個別に使用されてもよく、またはともに使用されてもよい。
【０２１４】
さらに、特定の実施形態をハードウェアとソフトウェアとの特定の組み合わせを用いて説明したが、ハードウェアとソフトウェアとの他の組み合わせも可能であることが理解されるはずである。特定の実施形態は、ハードウェアでのみ、またはソフトウェアでのみ、またはそれらの組み合わせを用いて実現されてもよい。本明細書に記載されたさまざまなプロセスは、同じプロセッサまたは任意の組み合わせの異なるプロセッサ上で実現できる。
【０２１５】
デバイス、システム、コンポーネントまたはモジュールが特定の動作または機能を実行するように構成されると記載されている場合、そのような構成は、たとえば、動作を実行する電子回路を設計すること、プログラミング可能な電子回路（マイクロプロセッサなど）をプログラミングすることにより、たとえば非一時的なメモリ媒体に格納されたコードまたは命令またはその任意の組み合わせを実行するようにプログラミングされたコンピュータ命令もしくはコード、またはプロセッサもしくはコアを実行するなどして、動作を実行するように電子回路を設計することによって、動作を実行すること、またはそれらの任意の組み合わせによって達成され得る。プロセスは、プロセス間通信のための従来の技術を含むがこれに限定されないさまざまな技術を使用して通信することができ、異なる対のプロセスは異なる技術を使用してもよく、同じ対のプロセスは異なる時間に異なる技術を使用してもよい。
【０２１６】
本開示では特定の詳細事項を示すことにより実施形態が十分に理解されるようにしている。しかしながら、実施形態はこれらの特定の詳細事項がなくとも実施し得るものである。たとえば、周知の回路、プロセス、アルゴリズム、構成、および技術は、実施形態が曖昧にならないようにするために不必要な詳細事項なしで示している。本明細書は例示的な実施形態のみを提供し、他の実施形態の範囲、適用可能性、または構成を限定することを意図しているのではない。むしろ、実施形態の上記説明は、各種実施形態を実現することを可能にする説明を当業者に提供する。各種変更は要素の機能および構成の範囲内で行うことができる。
【０２１７】
したがって、明細書および図面は、限定的な意味ではなく例示的なものとみなされるべきである。しかしながら、請求項に記載されているより広範な精神および範囲から逸脱することなく、追加、削減、削除、ならびに他の修正および変更がこれらになされ得ることは明らかであろう。このように、特定の実施形態を説明してきたが、これらは限定を意図するものではない。さまざまな修正および均等物は以下の請求項の範囲に含まれる。
【図１】
2021534493.tif 000018
【図２】
2021534493.tif 000019
【図３】
2021534493.tif 000020
【図４Ａ】
2021534493.tif 000021
【図４Ｂ】
2021534493.tif 000022
【図４Ｃ】
2021534493.tif 000023
【図４Ｄ】
2021534493.tif 000024
【図５】
2021534493.tif 000025
【図６】
2021534493.tif 000026
【図７】
2021534493.tif 000027
【図８】
2021534493.tif 000028
【図９】
2021534493.tif 000029
【図１０】
2021534493.tif 000030
【図１１】
2021534493.tif 000031
【図１２】
2021534493.tif 000032
【国際調査報告】
2021534493.tif 000033
2021534493.tif 000034
2021534493.tif 000035