(57)【要約】  コンピュータによるパーソナルアシスタントは、自然言語ユーザインタフェース、自然言語処理マシン、識別マシン、及びナレッジベース更新マシンを含む。ナレッジベース更新マシンは、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型人工知能ナレッジベースを更新するように構成され、ナレッジベース更新マシンは、複数の異なるコンピュータサービスによって使用可能な更新プロトコルによってユーザ中心型人工知能ナレッジベースを更新する。
2021518007.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ入力を受け付けるように構成される自然言語ユーザインタフェースと、
前記ユーザ入力のコンピュータ可読表現を出力するように構成される自然言語処理マシンと、
前記ユーザ入力を特定のユーザに関連付けるように構成される識別マシンと、
前記ユーザ入力の前記コンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように前記特定のユーザに関連するユーザ中心型人工知能ナレッジベースを更新するように構成されるナレッジベース更新マシンであって、前記ナレッジベース更新マシンは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによって前記ユーザ中心型人工知能ナレッジベースを更新し、前記更新プロトコルは前記新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する、ナレッジベース更新マシンと
を含む、コンピュータによるパーソナルアシスタント。
【請求項２】
前記ユーザ入力の前記コンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタを更に含み、前記新たな又は更新済みのユーザ中心型ファクトは前記エンリッチメントアダプタによって出力される前記エンリッチメントを含む、請求項１に記載のコンピュータによるパーソナルアシスタント。
【請求項３】
前記ユーザ中心型人工知能ナレッジベースが１つ又は複数の暗号化ユーザ中心型ファクトを含み、前記１つ又は複数の暗号化ユーザ中心型ファクトへのアクセスが前記特定のユーザに関連する資格情報によって制約される、請求項１に記載のコンピュータによるパーソナルアシスタント。
【請求項４】
前記特定のユーザに関連する前記ユーザ中心型人工知能ナレッジベースをクエリするように、及びクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たす前記ユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力するように構成されるナレッジベースクエリマシンを更に含む、請求項１に記載のコンピュータによるパーソナルアシスタント。
【請求項５】
前記ナレッジベースクエリマシンが、複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによって前記ユーザ中心型人工知能ナレッジベースをクエリするように構成される、請求項４に記載のコンピュータによるパーソナルアシスタント。
【請求項６】
前記自然言語ユーザインタフェースがユーザクエリを受け付けるように更に構成され、前記自然言語処理マシンが前記ユーザクエリに基づいて前記クエリの前記コンピュータ可読表現を出力するように更に構成される、
請求項４に記載のコンピュータによるパーソナルアシスタント。
【請求項７】
前記自然言語処理マシンが前記ユーザクエリに基づいて認識済みのユーザの意図を出力するように更に構成され、前記クエリの前記コンピュータ可読表現によって規定される前記１つ又は複数の制約が前記認識済みのユーザの意図に基づく制約を含む、請求項６に記載のコンピュータによるパーソナルアシスタント。
【請求項８】
前記クエリが前記ユーザの現在のコンテキストを決定するためのユーザコンテキストクエリであり、前記ユーザ中心型ファクトの前記サブセットは前記現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトを含む、請求項４に記載のコンピュータによるパーソナルアシスタント。
【請求項９】
前記クエリの前記コンピュータ可読表現によって規定される前記１つ又は複数の制約が回答の種類の制約を含み、
前記ユーザ中心型ファクトの前記サブセットが前記回答の種類の制約を満たすユーザ中心型ファクトだけを含む、
請求項４に記載のコンピュータによるパーソナルアシスタント。
【請求項１０】
前記クエリの前記コンピュータ可読表現によって規定される前記１つ又は複数の制約がグラフコンテキスト制約を含み、
前記ユーザ中心型ファクトの前記サブセットが前記グラフコンテキスト制約を満たす前記ユーザ中心型人工知能ナレッジベース内のコンテキスト化ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含む、
請求項４に記載のコンピュータによるパーソナルアシスタント。
【請求項１１】
前記ナレッジベースクエリマシンによって出力される前記応答が、前記クエリの前記コンピュータ可読表現によって規定される前記１つ又は複数の制約を満たす前記ユーザ中心型人工知能ナレッジベース内の前記ユーザ中心型ファクトのサブセットに基づいて前記ユーザを支援するためのアクションを共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を含む、請求項４に記載のコンピュータによるパーソナルアシスタント。
【請求項１２】
前記ユーザを支援するための前記アクションが、前記クエリの前記コンピュータ可読表現によって規定される前記１つ又は複数の制約を満たす前記ユーザ中心型人工知能ナレッジベース内の前記ユーザ中心型ファクトのサブセットに基づいて前記共働コンピュータサービスの優先設定を変更することを含む、請求項１１に記載のコンピュータによるパーソナルアシスタント。
【請求項１３】
前記ユーザを支援するための前記アクションが、前記共働コンピュータサービスの状態データの表現を視覚的に提示することを含み、前記状態データは前記クエリの前記コンピュータ可読表現によって規定される前記１つ又は複数の制約を満たす前記ユーザ中心型人工知能ナレッジベース内の前記ユーザ中心型ファクトのサブセットに関係する、請求項１１に記載のコンピュータによるパーソナルアシスタント。
【発明の詳細な説明】
【背景技術】
【０００１】
背景
[0001]  人工知能は事実上無限の応用がある新興分野である。人工知能技術が進歩するにつれ、ユーザ中心型の人工知能の応用は個人のコンピュータユーザにとって非常に有用になると考えられている。有用な人工知能の応用を個人のコンピュータユーザに提供するためにロバストな人工知能ナレッジベースを作成し維持することは大きな障害となっている。
【発明の概要】
【課題を解決するための手段】
【０００２】
概要
[0002]  この概要は、以下の詳細な説明の中で更に説明する一連の概念を単純化した形で紹介するために提供する。この概要は、特許請求の範囲に記載の内容の重要な特徴又は本質的な特徴を識別することも、特許請求の範囲に記載の内容の範囲を限定するために使用されることも意図しない。更に、特許請求の範囲に記載の内容は、本開示の任意の箇所に示す何れかの又は全ての不都合を解決する実装形態に限定されない。
【０００３】
[0003]  コンピュータによるパーソナルアシスタントは、自然言語ユーザインタフェース、自然言語処理マシン、識別マシン、及びナレッジベース更新マシンを含む。ナレッジベース更新マシンは、ユーザに関連するユーザ中心型人工知能ナレッジベースにユーザ中心型ファクトを提供するように構成される。ユーザ中心型人工知能ナレッジベースは、複数の異なるコンピュータサービスによって使用可能な更新プロトコルによって更新され、及び／又は複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによってクエリに応える。
【図面の簡単な説明】
【０００４】
図面の簡単な説明
【図１Ａ】[0004]少数の複数のユーザ中心型ファクトを含む単純化されたグラフデータ構造を示す。
【図１Ｂ】[0004]少数の複数のユーザ中心型ファクトを含む単純化されたグラフデータ構造を示す。
【図２Ａ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図２Ｂ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図３Ａ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図３Ｂ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図４Ａ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図４Ｂ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図５Ａ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図５Ｂ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図６Ａ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図６Ｂ】[0005]特定のユーザ中心型ファクトに焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図７Ａ】[0006]グラフデータ構造内に含まれる複数の構成グラフ構造間の相互参照に焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図７Ｂ】[0006]グラフデータ構造内に含まれる複数の構成グラフ構造間の相互参照に焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図８Ａ】[0006]グラフデータ構造内に含まれる複数の構成グラフ構造間の相互参照に焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図８Ｂ】[0006]グラフデータ構造内に含まれる複数の構成グラフ構造間の相互参照に焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図９Ａ】[0006]グラフデータ構造内に含まれる複数の構成グラフ構造間の相互参照に焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図９Ｂ】[0006]グラフデータ構造内に含まれる複数の構成グラフ構造間の相互参照に焦点を当てた図１Ａ及び図１Ｂのグラフデータ構造を示す。
【図１０Ａ】[0007]図１Ａ及び図１Ｂのグラフデータ構造の構成グラフ構造の例示的実装形態を示す。
【図１０Ｂ】[0007]図１Ａ及び図１Ｂのグラフデータ構造の構成グラフ構造の例示的実装形態を示す。
【図１１Ａ】[0007]図１Ａ及び図１Ｂのグラフデータ構造の構成グラフ構造の例示的実装形態を示す。
【図１１Ｂ】[0007]図１Ａ及び図１Ｂのグラフデータ構造の構成グラフ構造の例示的実装形態を示す。
【図１２Ａ】[0007]図１Ａ及び図１Ｂのグラフデータ構造の構成グラフ構造の例示的実装形態を示す。
【図１２Ｂ】[0007]図１Ａ及び図１Ｂのグラフデータ構造の構成グラフ構造の例示的実装形態を示す。
【図１３】[0008]ユーザ中心型人工知能ナレッジベースのための例示的な計算環境を示す。
【図１４】[0009]ユーザ中心型人工知能ナレッジベースを維持する方法を示す。
【図１５】[0010]ユーザ中心型人工知能ナレッジベースをクエリする方法を示す。
【図１６】[0011]例示的なコンピュータによるパーソナルアシスタントを示す。
【図１７】[0012]コンピュータサービスがユーザ中心型人工知能ナレッジベースに１つ又は複数のユーザ中心型ファクトを提供するための方法を示す。
【図１８】[0013]コンピュータサービスがユーザ中心型人工知能ナレッジベースをクエリするための方法を示す。
【図１９】[0014]ユーザ中心型人工知能ナレッジベースを維持しクエリするための計算システムの一例を概略的に示す。
【発明を実施するための形態】
【０００５】
詳細な説明
[0015]  コンピュータサービスは、ユーザ中心型データを収集し及び／又は分析することによってユーザとの対話を向上させることができる。本明細書で使用するとき、「コンピュータサービス」は、ユーザが直接、又は別のコンピュータサービス、例えば通信プロトコルを実装するソフトウェアアプリケーション、対話型ウェブサイト、若しくはサーバとの対話によって間接的に対話することができる任意のソフトウェア及び／又はハードウェアプロセスを広く指す。本明細書で使用するとき、「ユーザ中心型」は、特定のコンピュータユーザに関連する又は関わる任意のデータ（例えばユーザの関心事、ユーザの結び付き、及びコンピュータサービスとのユーザ対話を表すファクト及び／又はコンピュータデータ構造）を広く指す。
【０００６】
[0016]  ユーザ中心型データは人工知能（ＡＩ）プログラムへの入力として供給することができ、ＡＩプログラムは供給されるユーザ中心型データを分析することに基づいてユーザとコンピュータとの間の対話の強化をもたらすように構成され得る。例えば対話の強化をもたらすことは、ユーザが行う可能性が高いアクションを予測すること、及びそのアクションを容易にすることを含み得る。しかし、ユーザとコンピュータとの間の対話を意味があるように強化するにはＡＩプログラムが非常に大量のデータを必要とする。更に、それらのデータは適切なデータ形式で中心的に入手可能でなければならない。
【０００７】
[0017]  例えばコンピュータによるパーソナルアシスタントは、（例えば自然言語ユーザインタフェース等、音声及び／又はテキストの自然言語クエリを受け付けるように構成されるナチュラルユーザインタフェース（ＮＵＩ）により）ユーザによって出される自然言語クエリを処理するための自然言語処理エンジンを含むことができる。自然言語クエリに応えるために、コンピュータによるパーソナルアシスタントはファクトのナレッジベースを必要とする。一部の実装形態では、「ナレッジベース」は主語−述語−目的語の三つ組として表されるファクトの集合を含み得る。ナレッジベースは、人間によってラベル付けされたデータと、インターネット等の公の情報源から情報を集約するためのデータマイニング技法との組み合わせを使用して生成することができる。ナレッジベースを構築するための過去の手法は、優れた結果を実現するために（例えば複数の異なるユーザのそれぞれについてデータマイニングタスクを実行するための）非常に大きい計算負荷、及び／又は人間による広範な設計及び監視（例えば手作業でラベル付けされるデータ）の原因となった。
【０００８】
[0018]  そのため、ナレッジベースを構築し維持するための過去の手法は、コンピュータとのユーザ対話の強化をもたらすためにＡＩを活用するには適していない場合がある。対照的に本明細書に記載のユーザ中心型ＡＩナレッジベースは、１人又は複数の特定のユーザ（例えば個々のコンピュータユーザ、又は企業コンピュータネットワークのユーザ群）に関係するユーザ中心型ファクトの収集を支援するようにナレッジベースの概念を拡張する。ユーザ中心型ＡＩナレッジベースは、多岐にわたる異なるアプリケーション固有データプロバイダ（例えばコンピュータによるパーソナルアシスタントに関連するデータプロバイダ、及び住所録プログラムに関連するデータプロバイダ）から生じるユーザ中心型ファクトを含み得る。ユーザ中心型ＡＩナレッジベースは、例えば様々なアプリケーションに関連する複数の記憶位置にわたってユーザ中心型ファクトの記憶域を分散させることによって複数のユーザ中心型ファクトを効率的に記憶することができる。更にユーザ中心型ＡＩナレッジベースは、ナレッジベースのＡＩ処理、例えばクエリの回答を容易にし得るユーザ中心型ファクトに対する多岐にわたるアプリケーション非依存エンリッチメントを含み得る。
【０００９】
[0019]  単一のユーザは、ユーザに関する情報をそれぞれ認識し記憶することができる複数の異なるコンピュータサービスと対話することができる。コンピュータサービスはユーザとの対話に関係するデータを集約することができ、複数の異なるコンピュータサービスはユーザに関する大量のデータを共同で集約することができる。複数のコンピュータサービスの各コンピュータサービスは、ユーザに関する情報を異なるアプリケーション固有の位置に記憶することができる。本明細書では「アプリケーション固有」は、任意のコンピュータサービスに固有であることを意味するために使用する。更に、複数のコンピュータサービスの各コンピュータサービスは、ユーザに関するあり得る情報のうち、複数のコンピュータサービスの別のコンピュータサービスによって記憶される情報と異なる限られたサブセットしか認識し記憶することができない。そのため、ユーザに関する情報が複数の異なる記憶位置に分散され得る。
【００１０】
[0020]  更に、コンピュータサービスに関連するアプリケーション固有データはアプリケーション固有の記憶形式で記憶され得る。そのため２つの異なるコンピュータサービスが関連する機能を有しても、コンピュータサービスがデータを共有できない場合がある。一部の事例では、ファーストパーティプロバイダが、記憶形式を共有し得る関連するコンピュータサービスのスイート（例えば文書編集スイート）を提供する。しかし、そのスイート内のコンピュータサービスが互いにデータを共有できても、データを利用してユーザとの対話を強化することは、グローバルナレッジソース（例えばインターネット）、別のサードパーティソフトウェアプロバイダによって提供されるサードパーティソフトウェアアプリケーション、及び／又は（例えば企業ソフトウェアアプリケーションのコンテキストでの、又はソーシャルネットワークアプリケーションのコンテキストでの）他のユーザの使用状況データ等の外部のナレッジソースからのデータに更に依存し得る。
【００１１】
[0021]  ソフトウェアプロバイダは、ユーザ中心型ＡＩナレッジベースを構築してユーザとの対話の改善を助けるために、異種の情報源から情報を自動で集約したい場合がある。しかし、ＡＩナレッジベースを構築するための過去の手法は、特定のユーザとの対話のコンテキストで特に利用され得るユーザ中心型データではなくグローバルデータにしか焦点を当てていない。そのためナレッジベースを構築するための過去の手法は、複数のコンピュータサービスのユーザのためのユーザ中心型ＡＩナレッジベースを構築するには適していない。
【００１２】
[0022]  図１Ａは、複数の異なるコンピュータサービスに分散されるアプリケーション固有データに関連し得るユーザ中心型ファクトの集合を表すための例示的なグラフデータ構造１００を示す。グラフデータ構造１００は集中型クエリを可能にし、ユーザ中心型ＡＩナレッジベースを実装するのに適している。
【００１３】
[0023]  グラフデータ構造１００は複数の異なる構成グラフ構造１０２、例えば構成グラフＡ、構成グラフＢ等を含む。各構成グラフ構造は、異なるコンピュータサービスに関連するアプリケーション固有の構成グラフ構造であり得る。例えばアプリケーション固有の構成グラフ構造Ａはスケジュール計画プログラムに関連することができる一方、アプリケーション固有の構成グラフ構造Ｂは電子メールプログラムに関連し得る。
【００１４】
[0024]  各構成グラフ構造は複数のユーザ中心型ファクト１０４、例えば構成グラフＡ内に記憶されるユーザ中心型ファクトＦＡ．１、ＦＡ．２等、及び構成グラフＢ内に記憶されるユーザ中心型ファクトＦＢ．１、ＦＢ．１等を含む。ユーザ中心型ファクトは、主語グラフノード１０６、目的語グラフノード１０８、及び主語グラフノードを目的語グラフノードに接続するエッジ１１０を含む。主語グラフノード及び目的語グラフノードは総称してノードと呼ばれ得る。ノードは任意の名詞を表すことができ、「名詞」は任意のエンティティ、イベント、若しくは概念、又は任意の適切なアプリケーション固有情報（例えばコンピュータサービスを使用してユーザによって行われた過去のアクションの詳細）を指すために使用される。同様に「主語名詞」及び「目的語名詞」は、本明細書では主語グラフノード又は目的語グラフノードのそれぞれによって表される名詞を指すために使用される。グラフデータ構造としてユーザ中心型ファクトの集合を表すことは、（例えばクエリに応答するために）グラフデータ構造を操作し横断することを容易にし得る。
【００１５】
[0025]  図１Ｂにあるように、ユーザ中心型ファクトの集合をグラフ１５０として可視化することが有益である。図１Ｂに示すグラフ１５０では、ノード１５２を黒丸として示し、エッジ１５４を矢印として示す。出力エッジ（矢印が黒丸と逆の方を向く）を有する黒丸は主語グラフノードを示すのに対し、入力エッジ（矢印が黒丸の方を向く）を有する黒丸は目的語グラフノードを示す。構成グラフ間のエッジをより大きいグラフ内のエッジと見なすことにより、複数の構成グラフを単一のグラフとして扱うことができる。従って、図１Ｂは複数の構成グラフ構造を含む単一の複合グラフ１５０を示す。説明を簡単にするために、グラフ１５０の一例は１２個のノードを有する２つの構成グラフだけを含む。実際の実装形態では、ユーザ中心型グラフは更に多くの構成グラフ間に広がる更に多くの（例えば数百個、数千個、数百万個、又はそれ以上の）ノードを含む。
【００１６】
[0026]  図２Ａ〜図２Ｂは、特定のユーザ中心型ファクトＦＡ．１に焦点を当てた図１Ａ〜図１Ｂのグラフデータ構造を示す。図２Ａではユーザ中心型ファクトＦＡ．１を太線の矩形で囲んであり、グラフデータ構造の他のユーザ中心型ファクトは詳しく示していない。太線の形は、後続の図面の中で特定のファクトに注意を向けさせるために同様に使用する。ユーザ中心型ファクトＦＡ．１は、主語グラフノードＳＡ．１、エッジＥＡ．１、及び目的語グラフノードＯＡ．１を含む。例えば主語グラフノードＳＡ．１はユーザの雇用主を表すことができ、目的語グラフノードＯＡ．１はユーザの雇用主によってユーザに割り当てられたタスクを表し得る。エッジＥＡ．１は、主語グラフノードＳＡ．１と目的語グラフノードＯＡ．１との間の任意の適切な関係を表すことができる。上記の例では、エッジＥＡ．１が「割り当てられた新規タスク」の関係を表し得る。ユーザ中心型ファクトＦＡ．１の主語−エッジ−目的語の三つ組は、ユーザの雇用主がユーザに新規タスクを割り当てたことを共同で表す。
【００１７】
[0027]  第１のファクトの主語グラフノードは、第２の異なるファクトの目的語グラフノードと同じ名詞を表すことができる。例えば図３Ａ〜図３Ｂは、ユーザ中心型ファクトＦＡ．３に焦点を当てた図１Ａ〜図２Ｂの同じグラフデータ構造を示す。ユーザ中心型ファクトＦＡ．３は、主語グラフノードＳＡ．３、エッジＥＡ．３、及び目的語グラフノードＯＡ．３を規定する。目的語グラフノードＯＡ．３は、図２Ｂの主語グラフノードＳＡ．１と同じ名詞を表すことができる。従ってグラフデータ構造は、図２Ｂ及び図３Ｂの中のグラフ１５０内の同じ位置に示すファクトＦＡ．３の目的語グラフノードＯＡ．３及びファクトＦＡ．１の主語グラフノードＳＡ．１を単一のノードとして認識することができる。特定の目的語グラフノードと主語グラフノードとが同じ名詞を表すことを認識することにより、グラフデータ構造はユーザ中心型ファクトを複数の異なる名詞間の複雑な関係（complex relationships）として表すことができる場合があり、それらの関係はグラフ１５０上の経路として可視化され得る。例えば、特定のノードが第１のファクトの目的語グラフノードであり且つ第２の異なるファクトの主語グラフノードである場合、論理的三段論法と類似して２つのファクトの組み合わせから推論を導出することが可能であり得る。
【００１８】
[0028]  第１のユーザ中心型ファクトの主語グラフノードは、第２の異なるユーザ中心型ファクトの主語グラフノードと同じ名詞を表すことができる。２つの異なる主語グラフノードが同じ名詞を表す場合、グラフデータ構造は２つの主語グラフノードを単一のノードとして認識することができる。例えば図４Ａ〜図４Ｂは、ユーザ中心型ファクトＦＡ．４に焦点を当てた図１Ａ〜図３Ｂの同じグラフデータ構造を示す。ユーザ中心型ファクトＦＡ．４は、主語グラフノードＳＡ．４、エッジＥＡ．４、及び目的語グラフノードＯＡ．４を規定する。主語グラフノードＳＡ．４は、図３Ｂの主語グラフノードＳＡ．３と同じ名詞を表すことができる。従ってグラフデータ構造は、図３Ｂ及び図４Ｂの中のグラフ１５０内の同じ位置に示す単一のノードとして２つの主語グラフノードを認識することができる。主語グラフノードＳＡ．４及びＳＡ．３は単一のノードとして認識できるが、エッジＥＡ．４はエッジＥＡ．３と異なり、同様に目的語グラフノードＯＡ．４は目的語グラフノードＯＡ．３と異なる。従って、主語グラフノードＳＡ．４及びＳＡ．３が同じ名詞を表しても、（ＳＡ．４，ＥＡ．４，ＯＡ．４）の三つ組及び（ＳＡ．３，ＥＡ．３，ＯＡ．３）の三つ組は２つの異なるファクトを表す。
【００１９】
[0029]  同様に、第１のユーザ中心型ファクトの目的語グラフノードは、第２の異なるユーザ中心型ファクトの目的語グラフノードと同じ名詞を表すことができる。換言すれば、同じ名詞が、異なる主語グラフノードを有し且つことによると異なる関係の種類を表すエッジを有する複数の異なるユーザ中心型ファクトの目的語であり得る。例えば図５Ａ〜図５Ｂは、ユーザ中心型ファクトＦＡ．５に焦点を当てた図１Ａ〜図４Ｂの同じグラフデータ構造を示す。ユーザ中心型ファクトＦＡ．５は、主語グラフノードＳＡ．５、エッジＥＡ．５、及び目的語グラフノードＯＡ．５を規定する。目的語グラフノードＯＡ．５は、図２Ｂの目的語グラフノードＯＡ．１と同じ名詞を表すことができる。従ってグラフデータ構造は、図２Ｂ及び図５Ｂの中のグラフ１５０内の同じ位置に示す単一のノードとして２つの目的語グラフノードを認識することができる。
【００２０】
[0030]  主語名詞と目的語名詞との特定のペアリングが２つ以上の異なるユーザ中心型ファクトに関与し得る。例えば主語名詞及び目的語名詞は、主語グラフノードＳＡ．５、エッジＥＡ．５、及び目的語グラフノードＯＡ．５を含む第１のユーザ中心型ファクトＦＡ．５によって表すことができる。同時に、図６Ｂ内のＳＡ．６及びＯＡ．６の位置が図５Ｂ内のＳＡ．５及びＯＡ．５のそれぞれの位置と同じであることによって示す通り、図６Ａ〜図６Ｂに示すように主語グラフノードＳＡ．６が同じ主語名詞を表すことができ、目的語グラフノードＯＡ．６も同じ目的語名詞を表すことができる。従って、主語グラフノードＳＡ．５は第１のエッジＥＡ．５によって目的語グラフノードＯＡ．５に接続され得るのに対し、主語グラフノードＳＡ．６は第２の異なるエッジＥＡ．６によって目的語グラフノードＯＡ．６に接続される。主語グラフノード及び目的語グラフノードと同様に、図６Ｂ内のエッジＥＡ．６は図５Ｂ内のエッジＥＡ．５と同じ位置に示されている。しかしエッジＥＡ．５及びＥＡ．６は、例えば主語グラフノードと目的語グラフノードとの間の異なる関係を表す異なるエッジである。一例では、主語グラフノードＳＡ．５及びＳＡ．６が（例えば電子メールアドレスによって識別される）第１のユーザアカウントに対応し得る。同じ例において、目的語グラフノードＯＡ．５及びＯＡ．６は第２の異なるユーザアカウントに対応し得る。この例では、エッジＥＡ．５が「電子メール送信済み」の関係を表し得るのに対し、エッジＥＡ．６は異なる「予定された会議」の関係を表す。従ってこのグラフデータ構造は、同じ主語名詞及び目的語名詞を有する２つ以上のユーザ中心型ファクトを含む。
【００２１】
[0031]  他の例では２つの名詞が２つの異なるユーザ中心型ファクトに関与し得るが、主語と目的語との間の役割が入れ替わる。換言すれば、第１の名詞は第１のファクトの主語名詞であり、第２の名詞は第１のファクトの目的語名詞である一方、第１の名詞は第２のファクトの目的語名詞であり、第２の名詞は第２のファクトの主語名詞である。例えば「Alice」及び「Bob」を表す１対の名詞は「AliceがBobとの会議の予定を決めた」という第１のファクトに関与する一方、「BobがAliceとの会議の予定を決めた」という第２のファクトにも関与し得る。主語と目的語の役割を入れ替えることに加えて、２つの名詞を使用する２つのファクトが異なる種類のエッジを有することができ、例えば「Alice」及び「Bob」は「BobがAliceに電子メールを送信した」という第３のファクトに更に関与し得る。
【００２２】
[0032]  上記で説明したように、並びに図１Ａ、図２Ａ、図３Ａ、図４Ａ、図５Ａ、及び図６Ａに示すように、グラフデータ構造は（例えば異なるコンピュータサービスに対応する）複数のアプリケーション固有の構成グラフ構造を含む。例えば図７Ａ〜図７Ｂは、２つの異なるユーザ中心型ファクトＦＡ．６及びＦＢ．１に焦点を当てた図１Ａ〜図６Ｂの同じグラフデータ構造を示す。ユーザ中心型ファクトＦＡ．６は、主語グラフノードＳＡ．６、エッジＥＡ．６、及び目的語グラフノードＯＡ．６を構成グラフ構造Ａの一部として規定する。同様にユーザ中心型ファクトＦＢ．１は、主語グラフノードＳＢ．１、エッジＥＢ．１、及び目的語グラフノードＯＢ．１を構成グラフ構造Ｂの一部として規定する。
【００２３】
[0033]  グラフデータ構造は、或る構成グラフからの名詞及び別の構成グラフからの名詞を単一のノードとして認識することができる。例えば図８Ａ〜図８Ｂは、ユーザ中心型ファクトＦＢ．３に焦点を当てた図１Ａ〜図７Ｂの同じグラフデータ構造を示す。ユーザ中心型ファクトＦＢ．３は、主語グラフノードＳＢ．３、エッジＥＢ．３、及び目的語グラフノードＯＢ．３を規定する。目的語グラフノードＯＢ．３は、図２Ｂの目的語グラフノードＯＡ．１、図５Ｂの目的語グラフノードＯＡ．５、図７Ｂの目的語グラフノードＯＡ．５、及び図８Ｂの目的語グラフノードＯＢ．３と同じ名詞を表すことができる。従ってグラフデータ構造は、図２Ｂ、図５Ｂ、図７Ｂ、及び図８Ｂの中のグラフ１５０内の同じ位置に示す単一のノードとして４つの目的語グラフノードを認識することができる。とりわけ目的語グラフノードＯＢ．３は構成グラフ構造Ｂ内にあるのに対し、目的語グラフノードＯＡ．１、ＯＡ．５、及びＯＡ．５は構成グラフ構造Ａ内にある。２つ以上の異なるノードが同じ名詞に対応するというかかる認識は、本明細書では２つのノード間の「ノード相互参照」と呼ぶ場合がある。特定の名詞を表す主語グラフノード又は目的語グラフノードは、同じ構成グラフ構造又は他の任意の構成グラフ構造の他のノードへのノード相互参照を記憶することができる。
【００２４】
[0034]  同様に、第１の構成グラフ構造内のユーザ中心型ファクトは、第１の構成グラフ構造内の主語グラフノードと共に、第２の異なる構成グラフ構造内の目的語グラフノードを指すエッジ（本明細書では「相互参照エッジ」と呼ぶ）を規定することができる。例えば図９Ａ〜図９Ｂは、ユーザ中心型ファクトＦＡ．２に焦点を当てた図１Ａ〜図８Ｂの同じグラフデータ構造を示す。ユーザ中心型ファクトＦＡ．２は、主語グラフノードＳＡ．２及びエッジＥＡＢ．２を含む。但しエッジＥＡＢ．２は、構成グラフ構造Ａ内の別の目的語グラフノードを指す代わりに目的語グラフノードＯＢ．２を指す。例えば構成グラフＢ内の目的語グラフノードへの接続を示す構成グラフ識別子、及び構成グラフＢ内の特定の目的語グラフノードを示す目的語グラフノード識別子を記憶することにより、エッジＥＡＢ．２は構成グラフ間の接続を任意の適切なやり方で示すことができる。
【００２５】
[0035]  ノード相互参照及び相互参照エッジは複数の構成グラフ構造を接続する。例えばノード相互参照及び相互参照エッジはエッジと同じやり方で横断することができ、複数の構成グラフ構造にわたる経路を横断するようにグラフデータ構造を横断することを可能にする。換言すれば、グラフデータ構造１００は、様々なコンピュータサービスからのファクト及び／又は様々なコンピュータサービスにわたるファクトを含む全体的な人工知能ナレッジベースを促進する。ノード相互参照及び相互参照エッジは、本明細書では相互参照とまとめて呼ぶ場合がある。同様に、ノードが複数の構成グラフ構造内で相互参照に関与する場合、そのノードは構成グラフ構造間で相互参照されると言うことができる。
【００２６】
[0036]  更に、２つの異なる構成グラフ構造を相互参照によって接続することに加えて、構成グラフ構造は、構成グラフ構造内の主語グラフノード及び（例えばインターネット、ソーシャルネットワーク、又はネットワーク化された企業ソフトウェアアプリケーションに基づく）外部のナレッジベース内の目的語グラフノードが関与する１つ又は複数のユーザ中心型ファクトを含み得る。相互参照エッジと同様に、外部のグラフ及び外部のグラフ内の目的語グラフノードを示す１対の識別子を記憶することにより、主語グラフノードに接続される出力エッジは外部の目的語グラフノードへの接続を任意の適切なやり方で示すことができる。一部の事例では、例えば外部のグラフがインターネット上で公開されたナレッジから導出されるグローバルナレッジベースである場合、外部のグラフが如何なるユーザ中心型データも記憶しない場合がある。
【００２７】
[0037]  構成グラフ構造間の相互参照を含めることにより、（例えば相互参照及び相互参照エッジによって複数の構成グラフ構造を横断することにより）様々な構成グラフ構造内の及び外部のデータベース内のユーザ中心型ファクト間の関係に関する集中型の推論を引き続き支援しながら、特定の名詞（例えばイベント又はエンティティ）に関するファクトが複数の構成グラフ構造にわたって分散され得る。
【００２８】
[0038]  各ユーザ中心型ファクトは予測可能な共用データ形式で記憶することができ、かかる形式はアプリケーション固有データの形式、コンピュータサービスの変更を必要とすることなしにコンピュータサービスに関連するアプリケーション固有ファクトを含むユーザ中心型ファクトを記憶する。かかる予測可能な共用データ形式は、本明細書では「アプリケーション非依存データ形式」と呼ぶ。アプリケーション非依存データ形式は、アプリケーション固有データの冗長な記憶を回避しながら、ユーザ中心型ＡＩナレッジベースをクエリするのに必要な情報を記憶することができる。グラフデータ構造は、グラフデータ構造への読み書きアクセスを可能にする補完的なアプリケーションプログラミングインタフェース（ＡＰＩ）を用いて実装され得る。グラフデータ構造に書き込まれる全てのデータがアプリケーション非依存データ形式にあることを確実にするために、ＡＰＩはグラフデータ構造へのアクセスを制約することができる。同時にＡＰＩは、グラフデータ構造に新たなユーザ中心型ファクトをアプリケーション非依存データ形式で追加するために任意のコンピュータサービスが使用し得るメカニズムを提供することができ、それにより、グラフデータ構造内に記憶される全てのデータがそのＡＰＩを使用する他のコンピュータサービスによって予測可能に使用され得ることを確実にする。グラフデータ構造内に記憶されるユーザ中心型ファクトへの読み書きアクセスを提供することに加えて、ＡＰＩは読み出し及び書き込みの両方を含むデータ処理操作、例えばクエリ操作及びクエリ結果のキャッシングを提供することができる。
【００２９】
[0039]  図１Ａのグラフデータ構造１００等、複数の異なるコンピュータサービスに関係するユーザ中心型ファクトを含むグラフデータ構造を本開示の趣旨から逸脱することなしに様々に実装することができる。図１０Ａは、名詞ごとにノードレコードを含むノード中心型データ構造２００のかかる１つの非限定的な実装形態を概略的に示す。各ノードレコードは、その名詞に関連する１つ又は複数の主語グラフノード及び／又は目的語グラフノードを表す。ノードレコードが主語グラフノードを表す場合、ノードレコードは主語グラフノードを１つ又は複数の目的語グラフノードに接続する出力エッジを更に表す。例えば図１０Ａは、図１Ａ〜図９Ｂのデータ構造１００の全てのノードを完全に表すのに必要な複数のノードレコードのうちの２つのノードレコードである、ノードレコードＮＲＡ［４２］及びノードレコードＮＲＡ［４３］を示す。ユーザ中心型のマルチサービスＡＩナレッジベースの特徴を広範に紹介するために、より全般的なグラフデータ構造１００を上記で説明した。実際には、上記で紹介した全般的な特徴を実装するために、ノード中心型データ構造２００等のより効率的なデータ記憶手法を使用することができる。
【００３０】
[0040]  ノード中心型データ構造２００は、ノードに関連する一貫したノードレコード識別子によって規定されるノードレコード記憶位置において構成グラフ構造の各ノードを記憶する。ノードレコード識別子は、数値及び／又はテキストによる識別子、コンピュータの記憶位置への参照（例えばコンピュータメモリ内のアドレス又はコンピュータディスク上のファイル名）、又は他の任意の適切な識別子（例えば統一資源ロケータ（ＵＲＬ））であり得る。例えばノードレコードＮＲＡ［４２］は、構成グラフ構造Ａの一部であるものとしてノードレコードを識別するノードドメイン識別子「Ａ」を含み、且つ追加の数値識別子４２を含むノードレコード識別子「Ａ［４２］」によって識別可能であり得る。従ってグラフデータ構造は、「Ａ［４２］」の識別子によって規定されるノードレコード記憶位置にノードレコードＮＲＡ［４２］を記憶することができる。例えばグラフデータ構造は、構成グラフ構造Ａに関連するデータベーステーブルの＃４２の行内にノードレコードＮＲＡ［４２］を記憶することができる。括弧を用いた命名法、例えばＡ［４２］は例示的であり、ノード中心型データ構造２００がより全般的なグラフデータ構造１００と同じノード／グラフを最終的に規定する一方、ノードデータ構造２００の特定の実装が区別可能であることを強調するために使用していることに留意すべきである。しかし、本明細書に記載のグラフデータ構造は任意の適切な命名法を用いて実装することができる。
【００３１】
[0041]  図１０Ａの例では、ノードレコードＮＲＡ［４２］がより全般的なグラフデータ構造１００の主語グラフノードＳＡ．３及びＳＡ．４を表し、ノードレコードＮＲＡ［４３］は、より全般的なグラフデータ構造１００の主語グラフノードＳＡ．７及びＳＡ．８並びに目的語グラフノードＯＡ．４を表す。従って図１０Ｂでは、ノードレコードＮＲＡ［４２］が、図３Ｂ及び図４Ｂそれぞれの主語グラフノードＳＡ．３及びＳＡ．４とグラフ内の同じ位置に示されている。図１０Ａに戻り、アプリケーション非依存データ形式にある主語グラフノードＳＡ．３及びＳＡ．４の表現を示すためにノードレコードＮＲＡ［４２］を展開してある。一例では、グラフデータ構造内に記憶されるユーザ中心型ファクトがアプリケーション固有ファクトである。アプリケーション固有ファクトに加えて、ユーザ中心型ファクトは１つ又は複数のエンリッチメントを含むことができ、エンリッチメントはアプリケーション固有ファクトに関連するアプリケーション非依存ファクトを含む追加データである。
【００３２】
[0042]  ユーザ中心型ファクトのアプリケーション非依存データ形式は、グラフデータ構造内の接続のアプリケーション非依存表現に加えてアプリケーション固有ファクトを効率的に記憶できるようにする。例えば主語グラフノードＳＡ．３はアプリケーション固有ファクト、例えば新たな会議が予定されていたことの主語を表すことができる。従ってグラフデータ構造は、アプリケーション固有ファクトに関連する補助アプリケーション固有データを示すファセットポインタをアプリケーション固有ファクトのために記憶する。この例では、ファセットポインタＰＡ［４２］はＳＡ．３に関連する補助アプリケーション固有データの記憶位置、例えば会議の詳細を表すカレンダエントリの記憶位置を示す識別子（例えば数値識別子）である。アプリケーション固有グラフ構造Ａはスケジュール計画ソフトウェアに関連するので、ファセットポインタＰＡ［４２］はアプリケーション固有グラフ構造Ａ内のその包含に基づく特定の種類のデータ（例えばカレンダデータ）に関連することができる。他の例ではファセットポインタが補助アプリケーション固有データの種類を指定する追加の識別情報を含むことができ、そのためファセットポインタを使用して様々な種類の補助アプリケーション固有データを表すことができる（例えばワード処理アプリケーションによって使用可能な複数のファイルの種類）。グラフデータ構造は、グラフデータ構造内に補助アプリケーション固有データを冗長に記憶するのを回避しながら、補助アプリケーション固有データをファセットポインタによって見つけるために使用することができる。
【００３３】
[0043]  主語グラフノード内に記憶されるファセットポインタに加えて、アプリケーション固有ファクトは主語グラフノードを１つ又は複数の目的語グラフノードに接続するエッジによって更に表される。単一の主語グラフノードが複数のユーザ中心型ファクト内に含まれ得るが、それでもなおグラフデータ構造２００は主語グラフノードに関する単一のノードレコードだけを効率的に記憶する。このノードレコードはノードの出力エッジ全てのリストを含み、このことは、その中でそれが発生するユーザ中心型ファクトごとに主語グラフノードの複製を記憶することと比較して記憶空間の要件を低減し得る。出力エッジのリストは一部のノードについて、例えば目的語グラフノードでしかない名詞について空であり得る。主語グラフノードの出力エッジのリストは、１つ又は複数のエッジを規定する１つ又は複数のエッジレコードを含む。１つ又は複数のエッジはエッジレコード、例えばＥＲＡ［２６１］及びＥＲＡ［３７５］内に記憶することができる。図１０Ａは２つの出力エッジを有するノードレコードを示すが、ノードレコードはグラフデータ構造の他のノードへの関係を適切に表すように任意の数のエッジ、例えば０、１つ、又は３つ以上のエッジを含むことができる。
【００３４】
[0044]  主語グラフノードから目的語グラフノードへのエッジは、目的語グラフノードに関連する目的語グラフノードレコード識別子、例えばノードレコードＮＲＡ［４２］の目的語グラフノードＩＤ「Ａ［５５］」を指定する。目的語グラフノードレコード識別子は、目的語グラフノードを規定するノードレコード、例えばＮＲＡ［５５］の記憶位置を示す一貫したノードレコード識別子である。エッジは、目的語グラフノードを記憶する構成グラフ構造の目的語ドメイン識別子、例えばＮＲＡ［５５］が構成グラフ構造Ａ内に記憶されていることを示すノードレコードＮＲＡ［４２］の目的語ドメインＩＤ「Ａ」を更に指定することができる。従って図１０Ｂは、レコードＥＲＡ［２６１］及びＥＲＡ［３７５］によって表されるエッジにより、ノードレコードＮＲＡ［５５］及びＮＲＡ［２１］によって表されるノードに接続されるノードレコードＮＲＡ［４２］を示す。図１０Ａに戻り、（例えばエッジレコードによって表される）主語グラフノードから目的語グラフノードへのエッジは、主語グラフノードと目的語グラフノードとの間の関係の種類を更に指定することができる。例えばエッジレコードＥＲＡ［２６１］は「予定された会議」の関係を示し得るＲＡ［２６１］の関係の種類を規定するのに対し、エッジレコードＥＲＡ［３７５］は「約束を交わした」関係を示し得るＲＡ［３７５］の関係の種類を規定する。
【００３５】
[0045]  アプリケーション固有ファクトをファセットポインタ及び出力エッジのリストによって表すことに加えて、主語グラフノードはアプリケーション固有ファクトの１つ又は複数のエンリッチメントを表すことができる。一例では、１つ又は複数のエンリッチメントがノード信頼度値、例えばノードレコードＮＲＡ［４２］のノード信頼度ＣＡ［４２］を含む。ノード信頼度ＣＡ［４２］は、ユーザに対するノードレコードＣＡ［４２］（及びノードレコードＣＡ［４２］が表す主語グラフノード）の関連性を示し得る。例えば信頼度値は、関連データのラベル付けされたサンプルを無関連データのラベル付けされたサンプルと区別することを学習することにより、ユーザに対する関連性を認識するように訓練された機械学習モデルによって決定され得る。例えば機械学習モデルを訓練することは、（例えばアプリケーションとのアプリケーション中の直接ユーザフィードバックから導出される）ユーザによってラベル付けされたサンプルを用いた教師あり訓練、及び／又は教師なし訓練を含み得る。図１０Ａの例では、ノードレコードＮＲＡ［４２のノード信頼度ＣＡ［４２］がノードレコードＮＲＡ［５５］のノード信頼度ＣＡ［５５］よりも高い値である可能性があり、ノードレコードＮＲＡ［５５］よりもノードレコードＮＲＡ［４２］の方がユーザに関連していると考えられることを示す。
【００３６】
[0046]  図１０Ａに示す例では、１つ又は複数のエンリッチメントが各エッジに関連するエッジ信頼度値、例えばエッジレコードＥＲＡ［２６１］のエッジ信頼度ＫＡ［２６１］を更に含む。ノード信頼度値と同様に、エッジ信頼度値はユーザに対する特定のエッジ（例えばＥＲＡ［２６１］）の関連性を示し得る。１対のノード間の異なるエッジは異なる信頼度値を有し得る。例えば予定された会議が約束よりもユーザに関連性があると考えられる場合、例えば「予定された会議」の関係を示すエッジレコードＥＲＡ［２６１］は「約束を交わした」ことを示すエッジレコードＥＲＡ［３７５］のエッジ信頼度ＫＡ［３７５］よりも低いエッジ信頼度ＫＡ［２６１］を有し得る。
【００３７】
[0047]  ノード信頼度値及びエッジ信頼度値に加えて、アプリケーション固有ファクトの１つ又は複数のエンリッチメントは他のアプリケーション非依存データ及び／又はアプリケーション固有データを含み得る。例えばノードレコードＮＲＡ［４２］は、ノードレコードＮＲＡ［４２］及び関連するアプリケーション固有データ（例えばファセットポインタＰＡ［４２］によって示されるデータ）にアクセスすることに関連する情報を示すアクセスメタデータＭＡ［４２］を含む。アクセスメタデータＭＡ［４２］は、直近のアクセスの時間及び日付を示すタイムスタンプ、直近のアクセスによって引き起こされた変更を示すデルタ値、又は他の任意の適切なメタデータを含み得る。
【００３８】
[0048]  グラフデータ構造は、ユーザ中心型ファクトに関して、ユーザ中心型ファクトに関連する補助データを規定する１つ又は複数のタグを更に記憶することができる。例えばノードレコードＮＲＡ［４２］は、ノードに関連する他の任意の適切な補助データを含み得るタグＴＡ［４２］を更に含む。例えばノードＮＲＡ［４２］が（例えば連絡帳エントリに関連する）人物を表す場合、タグＴＡ［４２］はその人のニックネーム及び代わりの電子メールアドレスを含み得る。
【００３９】
[0049]  ユーザ中心型ファクト及びユーザ中心型ファクトのノード／エッジは、タグ内に記憶される追加のセマンティクスを用いてエンリッチされ得る。例えばタグは、ユーザ中心型ファクトの１つ又は複数のエンリッチメントを記憶するために使用することができる。ノードレコード内に記憶されるタグはユーザ中心型ファクトに関連することができ、ノードレコードは主語グラフノードを表し又は目的語グラフノードを表す。或いは又は加えて、ノードレコード内に記憶されるタグは（例えばノードレコードによって表される主語グラフノード及び／又はノードレコードによって表される目的語グラフノードに関連する）ノードレコード自体に、又はノードレコードに接続される１つ又は複数のエッジに関連することができる。他の例では、（例えばユーザ中心型ファクトのアクセスメタデータの代わりに又はかかるアクセスメタデータに加えて）ユーザ中心型ファクトのメタデータを記憶するためにタグを使用することができる。例えばユーザ中心型ファクトがタイムスタンプに関連する場合、ユーザ中心型ファクトのタグに混ざってタイムスタンプが任意選択的に記憶され得る。
【００４０】
[0050]  一部の例では、１つ又は複数のタグが検索可能タグであり、グラフデータ構造が検索可能タグを検索すること（例えば検索文字列を記憶するタグを検索すること又は特定の種類のデータを記憶するタグを検索すること）によってユーザ中心型ファクトの検索を可能にするように構成される。
【００４１】
[0051]  グラフデータ構造は複数のアプリケーション固有構成グラフ構造として表すことができ、構成グラフ構造のノードは（例えば図８Ａ〜図９Ｂに関して上記で説明したように相互参照エッジ及びノード相互参照によって）構成グラフ構造間で相互参照される。図１１Ａは、主語グラフノードＳＡ．７、ＳＡ．８及び目的語グラフノードＯＡ．４を表すノードＮＲＡ［４３］に焦点を当てた図１０Ａに示す同じノード中心型データ構造２００の別の例示的な図を示す。ＮＲＡ［４３］からの出力エッジのリストは、同じ構成グラフ構造Ａ内のノードを表す目的語グラフノードＩＤ「Ａ［６１］」を示すエッジレコードＥＲＡ［２１３］を含む。ＮＲＡ［４３］からの出力エッジのリストは、目的語ドメインＩＤ「Ｂ」及び構成グラフ構造Ｂ内のノードを表す目的語グラフノードＩＤ「Ｂ［６１］」を示すエッジレコードＥＲＡ［４３５］を更に含む。従ってエッジレコードＥＲＡ［４３５］は相互参照エッジである。図１１Ｂは、ＮＲＡ［４３］と、ＮＲＡ［６１］及びＮＲＢ［２５］へのＮＲＡ［４３］の出力エッジとを含む、図１Ａ〜図９Ｂと同じグラフデータ構造を図示する。
【００４２】
[0052]  図１２Ａは、目的語グラフノードＯＡ．１、ＯＡ．５、ＯＡ．６、及びＯＡ．７を表すノードＮＲＡ［６７］に焦点を当てた図１０Ａに示すノード中心型データ構造２００の別の例示的な図を示す。ＮＲＡ［６７］は入力エッジしか有さない目的語グラフノードしか表さないので、ノードＮＲＡ［６７］からの出力エッジのリストは空であることに留意されたい。但し、ＮＲＡ［６７］は、ＯＡ．１、ＯＡ．５、ＯＡ．６、及びＯＡ．７が構成グラフ構造ＢのＯＢ．３と同じノードを表すというグラフデータ構造の認識を表す相互参照を更に含む。従って相互参照は、構成グラフ構造Ｂを示す参照ドメインＩＤ「Ｂ」と、相互参照ノードＯＢ．３が構成グラフ構造Ｂを表す別のノード中心型データ構造のノードレコードＮＲＢ［７６］内に記憶されていることを示す参照ノードＩＤ「Ｂ［７６］」とを指定する。図１２Ｂは、図１Ａ〜図９Ｂに示す同じグラフデータ構造を図示する。ノードレコードＮＲＡ［６７］は、図８Ｂの目的語グラフノードＯＡ．５と同じ位置でもある図５Ｂ及び図６Ｂの目的語グラフノードＯＡ．５及びＯＡ．６と同じ位置に示されていることに留意されたい。
【００４３】
[0053]  ノード中心型データ構造２００は、異なるネイティブデータ形式を有し得る２つ以上の潜在的に無関係なコンピュータサービスからのファクトを追跡するために使用できる点でアプリケーション非依存である。ノード中心型データ構造２００は、ファセットポインタを記憶することによって任意のコンピュータサービスのアプリケーション固有ファクトを記憶することができ、アプリケーション固有ファクトがアプリケーション固有の形式で記憶され得る場合でさえユーザ中心型ファクトがアプリケーション固有ファクトを含むことを可能にする。更にノード中心型データ構造２００は、ドメイン識別子（例えば各主語グラフノードの出力エッジのリスト内の目的語ドメイン識別子、又はノード相互参照の表現内の参照ドメイン識別子）及びノード識別子（例えば目的語グラフノード識別子及び参照ノード識別子）の形で相互参照を記憶することにより、２つ以上のコンピュータサービスのコンテキストで規定されるユーザ中心型ファクトの表現を可能にする。更にユーザごとに異なるノード中心型データ構造２００が規定され得るので、ノード中心型データ構造２００はユーザ中心型である。ノード中心型データ構造２００は、複数の異なるユーザが共用コンピュータサービス（例えばウェブブラウザ）と対話するコンテキストでユーザ中心型ファクトを記憶するのに適している場合がある。ノード中心型データ構造２００はファセットポインタによってアプリケーション固有ファクトを記憶し、他のデータ構造内のファクトへの関係を相互参照によって表すので、共用コンピュータサービスのアプリケーション固有データへの書き込みアクセスを必要とすることなしに、ユーザに関するユーザ中心型ファクトをユーザに個別のユーザ中心型グラフデータ構造の中に記憶できる場合がある。
【００４４】
[0054]  図１３は、ユーザ中心型ＡＩナレッジベースを維持するための例示的な計算環境１３００を示す。計算環境１３００は、複数のアプリケーション固有データプロバイダコンピュータ（例えばアプリケーション固有データプロバイダコンピュータ１３２１、１３２２、及び１３２９等）にネットワーク１３１０を介して通信可能に結合されるグラフ記憶マシン１３０１を含む。グラフ記憶マシン１３０１及び複数のアプリケーション固有データプロバイダコンピュータは、ユーザの１つ又は複数のユーザコンピュータ（例えばユーザコンピュータ１３４０及びユーザコンピュータ１３４１）にネットワーク１３１０を介して更に通信可能に結合される。例えばユーザコンピュータ１３４０はユーザのデスクトップコンピュータであり得るのに対し、ユーザコンピュータ１３４１はユーザのモバイル計算装置であり得る。ネットワーク１３１０は任意の適切なコンピュータネットワーク（例えばインターネット）とすることができる。
【００４５】
[0055]  一部の例では、計算環境１３００が、ネットワーク１３１０を介してグラフ記憶マシン１３０１に通信可能に結合されるコンピュータによるパーソナルアシスタント１６００を更に含むことができる。コンピュータによるパーソナルアシスタント１６００は任意の適切なやり方で、例えばオールインワン計算装置として又はデスクトップコンピュータ若しくは携帯電話等の任意の適切な計算装置上で実行可能なソフトウェアアプリケーションとして実装することができる。コンピュータによるパーソナルアシスタントは、独立型のコンピュータサービス又は別のコンピュータサービス（例えば電子メール／カレンダアプリケーション、検索エンジン、統合開発環境）の支援コンポーネントであり得る。
【００４６】
[0056]  一部の例では、計算環境１３００がクラウドサービス１３１１を追加で含み得る。クラウドサービス１３１１は、計算環境１３００の他の計算装置にネットワーク１３１０を介して通信可能に結合され得る。クラウドサービス１３１１は、任意の適切なタスクを実行するように構成される１つ又は複数の計算装置を含み得る。一部の例では、別の計算装置の機能をクラウドサービス１３１１にオフロードするために、クラウドサービス１３１１を利用することができる。例えばグラフ記憶マシン１３０１、アプリケーション固有データプロバイダコンピュータ１３２１、ユーザコンピュータ１３４０、及び／又はコンピュータによるパーソナルアシスタント１６００の機能をクラウドサービス１３１１にオフロードすることができる。
【００４７】
[0057]  一例では、クラウドサービス１３１１が自然言語処理タスクを実行するように構成される。自然言語処理タスクをクラウドサービス１３１１にオフロードすることにより、グラフ記憶マシン１３０１は自然言語処理タスクを実行するように構成され得る。従ってグラフ記憶マシン１３０１は、自然言語処理タスクの入力データをクラウドサービス１３１０にオフロードし、自然言語処理タスクの結果を示す出力データをクラウドサービス１３１０から受信することができる。或いは又は加えて、コンピュータによるパーソナルアシスタント１６００は、クラウドサービス１３１１の遠隔処理支援を用いて自然言語処理タスクを実行するように構成され得る。同様のやり方で、計算環境１３００の計算装置は任意の適切なタスクをクラウドサービス１３１１にオフロードすることができ、クラウドサービス１３１１はオフロードされたタスクを実行するように構成される。
【００４８】
[0058]  グラフ記憶マシン１３０１は単一のマシン（例えばコンピュータサーバ）として実装され得る。或いは、（例えばコンピュータクラスタによって提供される仮想サービスとしてグラフ記憶マシン１３０１を実装することにより）グラフ記憶マシン１３０１の機能を複数の異なる物理装置に分散させることができる。各アプリケーション固有データプロバイダコンピュータ（例えばアプリケーション固有データプロバイダコンピュータ１３２１）は、ユーザが使用する１つ又は複数のコンピュータサービス、例えばソーシャルネットワークアプリケーション、電子メールアプリケーション、スケジュールプランナアプリケーション、オフィススイート、モノのインターネットのアプライアンス機能、ウェブ検索アプリケーション等に関連し得る。
【００４９】
[0059]  ユーザがユーザコンピュータ１３４０及び／又はユーザコンピュータ１３４１によって１つ又は複数のコンピュータサービスと対話するとき、アプリケーション固有データプロバイダコンピュータは、１つ又は複数のコンピュータサービスとのユーザの対話に関係する情報を集約することができる。ユーザがソーシャルネットワークアプリケーションと対話する例では、アプリケーション固有データプロバイダコンピュータ１３２２がソーシャルネットワークアプリケーションの機能を提供するサーバに通信可能に結合され得る。従ってユーザがソーシャルネットワークアプリケーションと対話するとき、サーバは対話の指示をアプリケーション固有データプロバイダコンピュータ１３２２に提供することができる。それを受けて、アプリケーション固有データプロバイダコンピュータ１３２２は１つ又は複数のユーザ中心型ファクトをグラフ記憶マシン１３０１に提供することができる。例では、ユーザコンピュータ１３４０が、ユーザコンピュータ１３４０において集約された追加のユーザ中心型ファクトをグラフ記憶マシン１３０１に提供し得る１つ又は複数のアプリケーションプログラムを実行し、ユーザコンピュータ１３４０を追加のアプリケーション固有データプロバイダとして働かせることができる。例では、例えばクエリを送信することにより、グラフ記憶マシン１３０１にユーザ中心型ファクトを要求し得る１つ又は複数のアプリケーションプログラムをユーザコンピュータ１３４０が実行することができる。上記の例はユーザがユーザコンピュータ１３４０によって１つ又は複数のコンピュータサービスと対話することを含むが、他の例では、ユーザはユーザコンピュータ１３４０の代わりに又はユーザコンピュータ１３４０に加えてユーザコンピュータ１３４１によって１つ又は複数のコンピュータサービスと対話することができる。例えばユーザコンピュータ１３４０がグラフ記憶マシン１３０１に１つ又は複数のファクトを提供することによってアプリケーション固有データプロバイダとして働く場合、ユーザコンピュータ１３４１は１つ又は複数のアプリケーションプログラムを実行してグラフ記憶マシン１３０１にユーザ中心型ファクトを要求することができる。このようにしてグラフ記憶マシン１３０１は、ユーザの複数の異なるユーザコンピュータからユーザ中心型ファクトを集約し得る一方、異なるユーザコンピュータのそれぞれがユーザ中心型ファクトを要求し利用することも可能にする。
【００５０】
[0060]  一例では、ユーザコンピュータ１３４０は、グラフ記憶マシン１３０１とネットワーク１３１０を介して通信するように構成されるコンピュータによるパーソナルアシスタントを実行することができる。コンピュータによるパーソナルアシスタントは、音声及び／又はテキストの自然言語クエリを受け付けるように構成されるＮＵＩによってユーザからクエリを受け付けることができる。クエリに応答してグラフ記憶マシン１３０１によって出力される１つ又は複数のユーザ中心型ファクトを受信するために、コンピュータによるパーソナルアシスタントはグラフ記憶マシン１３０１に１つ又は複数のクエリを送信することができる。或いは又は加えて、コンピュータによるパーソナルアシスタントはユーザ中心型ファクト（例えばＮＵＩによる会話内で示されるユーザの関心事）を集約し、ユーザコンピュータ１３４０をアプリケーション固有データプロバイダとして働かせることができる。一部の事例では、グラフ記憶マシン１３０１及びアプリケーション固有データプロバイダが単一のエンティティ又は組織によって管理されてもよく、その場合はアプリケーション固有データプロバイダを「ファーストパーティ」アプリケーション固有データプロバイダと呼ぶことができる。他の事例では、グラフ記憶マシン１３０１及びアプリケーション固有データプロバイダが異なるエンティティ又は組織によって管理されてもよく、その場合はアプリケーション固有データプロバイダを「サードパーティ」アプリケーション固有データプロバイダと呼ぶことができる。
【００５１】
[0061]  図１４は、ユーザ中心型人工知能ナレッジベースを維持する例示的方法１４００を示す。ユーザ中心型ＡＩナレッジベースは、複数の異なることによると無関係なコンピュータサービスと対話するユーザに関するユーザ中心型ファクトを記憶するのに適している場合がある。更にユーザ中心型ＡＩナレッジベースは、ユーザ中心型ファクトに関するクエリに回答するために使用可能であり得る。ユーザ中心型ＡＩナレッジベースを維持することは、１つ又は複数のユーザ中心型ファクトを記憶することによってナレッジベースを構築すること、更なるファクトを追加することによってユーザ中心型ＡＩナレッジベースを更新すること、及び（例えばクエリに対するキャッシュに入れられる回答を記憶してクエリのその後の高速な回答を可能にするために）クエリされ使用されるときにユーザ中心型ＡＩナレッジベースを更新することを含む。
【００５２】
[0062]  １４０１で、方法１４００は、ユーザに関連する複数のユーザ中心型ファクトを含むグラフデータ構造を維持することを含む。例えば主語グラフノード、目的語グラフノード、及び主語グラフノードを目的語グラフノードに接続するエッジを含め、各ユーザ中心型ファクトはアプリケーション非依存データ形式を有し得る。グラフデータ構造は複数のアプリケーション固有構成グラフ構造として表すことができ、構成グラフ構造のノードは構成グラフ構造間で相互参照される。図１０Ａ〜図１２Ｂに関して上記で説明したノード中心型データ構造２００等、グラフデータ構造は任意の適切なアプリケーション非依存データ形式を使用して記憶することができる。
【００５３】
[0063]  １４０２で、方法１４００は、ユーザ中心型ファクトを提供するための要求をアプリケーション固有データプロバイダに自動で送信することを任意選択的に含む。アプリケーション固有データプロバイダに要求を送信することは任意の適切なやり方で、例えばアプリケーション固有データプロバイダのＡＰＩによってコンピュータネットワーク上で行われ得る。要求は、特定のユーザ中心型ファクト（例えば特定の時間及び／又は日付の範囲内のユーザ中心型ファクト、アプリケーション固有データプロバイダによってまだ提供されていないユーザ中心型ファクト、及び／又は特定の関連タグを有するユーザ中心型ファクト）が提供されるべきであることを示し得る。或いは要求は、入手可能な全てのユーザ中心型ファクトが提供されるべきであることを示し得る。アプリケーション固有データプロバイダに要求を送信し、その要求に応じてユーザ中心型ファクトを受信することは、本明細書ではアプリケーション固有データプロバイダからデータを「プルすること」と呼ぶことができる。任意の適切なスケジュールに従って、例えば周期的に追加のユーザ中心型ファクトが要求され得る。要求に応じて追加のユーザ中心型ファクトを提供することに加えて、複数のアプリケーション固有データプロバイダのアプリケーション固有データプロバイダはプルを行う要求なしにユーザ中心型ファクトを送信することができ、本明細書ではそれをユーザ中心型ＡＩナレッジベースにユーザ中心型ファクトを「プッシュすること」と呼ぶことができる。
【００５４】
[0064]  １４０３で、方法１４００は（例えばアプリケーション固有データプロバイダからデータをプルすることにより、又はアプリケーション固有データプロバイダがユーザ中心型ＡＩナレッジベースにユーザ中心型ファクトをプッシュすることにより）第１のコンピュータサービスに関連する第１のアプリケーション固有データプロバイダから第１のユーザ中心型ファクトを受信することを含む。１４０４に示すように、第１のユーザ中心型ファクト等のユーザ中心型ファクトは、ユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する更新プロトコル（例えば更新ＡＰＩ）によって受信され得る。例えば更新ＡＰＩは、上記で説明したノードレコード形式の実装形態等、特定のデータ記憶形式を使用するように記憶形式を制約することができる。更に更新ＡＰＩは、記憶データの最大ディスク使用量を制約し、及び／又はデータが暗号化データ形式で記憶されることを要求し得る。
【００５５】
[0065]  １４０５で、方法１４００は、グラフデータ構造に第１のユーザ中心型ファクトをアプリケーション非依存データ形式で追加することを含む。例えば第１のユーザ中心型ファクトをグラフデータ構造に追加することは、図１０Ａ〜図１２Ｂに関して上記で説明したノードレコード形式へと第１のユーザ中心型ファクトを変換し、その結果生じるノードレコードをノードレコードのノードレコード識別子に関連する記憶位置に記憶することを含み得る。第１のユーザ中心型ファクトはアプリケーション固有ファクトであり得る。従って１４０６で、図１０Ａ〜図１２Ｂに関して上記で説明したように、グラフデータ構造はアプリケーション固有ファクトに関連する補助アプリケーション固有データを示すファセットポインタを記憶することができる。
【００５６】
[0066]  １４０６で、グラフデータ構造がアプリケーション非依存エンリッチメント、例えばアプリケーション固有ファクトに関連するアプリケーション非依存ファクトを任意選択的に記憶し得る。エンリッチメントはアプリケーション固有データプロバイダから受信されるユーザ中心型ファクト内に含まれ得る。或いは又は加えて、アプリケーション固有データプロバイダが提供するユーザ中心型ファクトは、１つ又は複数のエンリッチメントを含むように１つ又は複数のエンリッチメントアダプタを含むエンリッチメントパイプラインによって前処理されてもよい。グラフデータ構造がユーザ中心型ファクトに関連するタグ（例えばノードレコード内に記憶されるタグ）を記憶する場合、１つ又は複数のエンリッチメントがタグに混ざって含まれ得る。
【００５７】
[0067]  一例では、エンリッチメントアダプタは、アプリケーション固有ファクトを受信し、ユーザに対するアプリケーション固有ファクトの関連性を認識し、関連性を数値的に示す信頼度値を出力するように構成される機械学習モデルを含む。機械学習モデルは任意の適切なモデル、例えば統計的モデル又はニューラルネットワークとすることができる。機械学習モデルは、例えばユーザフィードバックに基づいて訓練することができる。例えば機械学習モデルがニューラルネットワークである場合、ユーザフィードバック内で示される実際の関連性と比較した、ニューラルネットワークによって出力される予測された関連性の誤りレベルを示す目的関数によってニューラルネットワークの出力を評価することができる。誤差逆伝搬法を使用し、ニューラルネットワークのレイヤ内の各関数の導関数に関して目的関数の勾配を計算することができる。従って、目的関数によって示される誤りレベルを最小化するために、ニューラルネットワークの重みを勾配（例えば勾配降下）に基づいて調節することができる。一部の例では、ソフトウェアアプリケーションと対話する間にユーザによって提供される直接フィードバック（例えば検索アプリケーションにおける検索結果の関連性を示す）に基づき、機械学習モデルを特定のユーザについて訓練することができる。従って、訓練される機械学習モデルはユーザへの関連性を推定可能であり得る。一部の例では、例えばユーザが過去に関連性があると示した他のコンテンツに対する関連コンテンツの類似性を推定することにより、ユーザからの間接フィードバックに基づいて機械学習モデルを訓練することができる。
【００５８】
[0068]  別の例では、エンリッチメントアダプタは、アプリケーション固有ファクトの自然言語特徴を認識するための自然言語プログラムを含む。例えば自然言語プログラムは、既存の主語グラフノード及び／又は目的語グラフノードに関連するものとして自然言語特徴を認識することにより、アプリケーション固有ファクトに関する主語グラフノード及び／又は目的語グラフノードを決定することができる。一部の例では、自然言語プログラムがアプリケーション固有ファクトのエッジに関する関係の種類を決定することができる。一部の例では、自然言語プログラムが、アプリケーション固有ファクトに関する主語グラフノード及び／又は目的語グラフノードの１つ又は複数のタグを決定することができる。自然言語プログラムは、１）命名されたエンティティ（例えば人、組織、及び／又はオブジェクト）、２）意図（例えば自然言語特徴に関連する感情又は目標）、３）イベント及びタスク（例えばユーザが後で行うつもりであるタスク）、４）トピック（例えばユーザ中心型ファクトが含む又は表すトピック）、５）位置（例えばユーザ中心型ファクトによって参照される地理的位置、又はユーザ中心型ファクトが生成された場所）、及び／又は６）日付及び時間（例えばユーザ中心型ファクトに関連する過去のイベント又は将来予定されているイベントを示すタイムスタンプ）を含む特徴を認識するように構成され得る。
【００５９】
[0069]  ユーザ中心型ファクトに関連するエンリッチメントは、ユーザ中心型ファクトのエンリッチされたセマンティクス（例えばユーザ中心型ファクトの主語グラフノードと目的語グラフノードとの間のエッジによって形成される接続構造によってもたらされる情報を超える追加の有意味の情報）を提供することができる。グラフデータ構造は、（例えばエンリッチメントパイプライン内で追加される１つ又は複数のエンリッチメントに基づいて）エンリッチされたセマンティクスから導出され得る追加のユーザ中心型ファクトを認識し含むことができる。従って、１つ又は複数のエンリッチメントを含むユーザ中心型ファクトを追加することは、１つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識すること、及びグラフデータ構造に更なるユーザ中心型ファクトをアプリケーション非依存データ形式で追加することを更に含み得る。
【００６０】
[0070]  １つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識することは、１つ又は複数のエンリッチメントのエンリッチメントが、グラフデータ構造内に既に含まれている別のユーザ中心型ファクトに（例えばエンリッチメントが他のユーザ中心型ファクトの主語名詞又は目的語名詞に関連することを理由に）対応することを認識することを含み得る。或いは又は加えて、１つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識することは、如何なるユーザ中心型ファクトにもまだ関与していない主語名詞に関連する１つ又は複数のエンリッチメントの第１のエンリッチメントを認識すること、１つ又は複数のエンリッチメントの第２のエンリッチメントが目的語名詞に関連すると認識すること、主語名詞と目的語名詞との間の関係を認識すること、及び目的語名詞及び主語名詞を含むユーザ中心型ファクトをグラフデータ構造に追加することを含み得る。一部の例では、１つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識することは、１つ又は複数のエンリッチメント間の任意の適切な関係を認識すること、及び認識した関係を表すユーザ中心型ファクトを追加することを含む。
【００６１】
[0071]  一例では、第１のノード及び第２のノードが認識済みの命名されたエンティティを指定するエンリッチメントをそれぞれ含み、両方のエンリッチメントが同じ命名されたエンティティを指定する。従ってグラフデータ構造は、第１のノードを第２のノードに接続するエッジを記憶することができ、エッジの関係の種類は２つのノードが同じエンティティに関連すると推論されたことを示し得る。或いは又は加えて、グラフデータ構造は、他のノードが同じ命名されたエンティティに関連することを示すノード相互参照を各ノード内に記憶することができる。或いはグラフデータ構造は、第２のノードのデータを含むように第１のノードを修正し、第２のノードを削除し、それにより２つのノードではなく単一のノードを含むように表現を折り畳むことで第２のノードのデータの冗長な記憶を回避することができる。
【００６２】
[0072]  別の例では、第１のノードが命名されたエンティティを指定するエンリッチメントを含み、第１のノードを同じ命名されたエンティティを表す第２のノードに接続するエッジを追加することができる。別の例では、同じ関連トピックを有する第１のノードと第２のノードとの間のエッジを追加することができる。別の例では、関連する同じ時間及び／又は位置を有する第１のノードと第２のノードとの間のエッジを追加することができる。例えばエッジは、特定のカレンダ日付を（例えばタグ内で）参照する第１のノードと、（例えばアクセスメタデータによって示されるように）その特定のカレンダ日付に作成された第２のノードとの間のエッジを追加することができる。別の例では、同じ位置で作成された、又は同じ位置を参照する２つのノード間のエッジを追加することができる。
【００６３】
[0073]  １４０７で、グラフデータ構造にユーザ中心型ファクトをアプリケーション非依存データ形式で追加することが、暗号化ユーザ中心型ファクトとしてユーザ中心型ファクトを記憶することを任意選択的に含み、暗号化ユーザ中心型ファクトへのアクセスは資格情報によって制約される。例えば資格情報はユーザに関連するユーザアカウント資格情報とすることができ、暗号化ユーザ中心型ファクトはユーザアカウント資格情報の保持者しか読み出すことができない場合がある。別の例では、資格情報が企業コンピュータネットワーク内のユーザに関連する企業アカウント資格情報でもよく、暗号化ユーザ中心型ファクトは企業アカウント資格情報の保持者及び企業コンピュータネットワークの１人又は複数の管理者しか読み出すことができない場合がある。アプリケーション固有データプロバイダから受信されるユーザ中心型ファクトは、資格情報を用いて暗号化される暗号化ユーザ中心型ファクトとして受信され得る。その場合、暗号化ユーザ中心型ファクトは、暗号化ユーザ中心型ファクトを復号し再び暗号化することなしに、同じ資格情報を使用して同じ暗号化形式で記憶することができる。更に、暗号化ユーザ中心型ファクトは準同型暗号方式を用いて暗号化されてもよく、その場合、修正済みの暗号化ユーザ中心型ファクトを記憶する前に、暗号化ユーザ中心型ファクトを復号し再び暗号化することなしに暗号化ユーザ中心型ファクトを（例えばエンリッチメントを追加するために）修正することができる。或いはアプリケーション固有データプロバイダから受信されるユーザ中心型ファクトは異なる資格情報を使用して暗号化されてもよく、その場合、受信されるユーザ中心型ファクトは資格情報を使用して復号し再び暗号化してから、結果として生じる再暗号化ユーザ中心型ファクトを記憶することができる。或いはアプリケーション固有データプロバイダから受信されるユーザ中心型ファクトは暗号化されなくてもよく、その場合、受信されるユーザ中心型ファクトは資格情報を使用して暗号化してから、結果として生じる暗号化ユーザ中心型ファクトを記憶することができる。
【００６４】
[0074]  ユーザ中心型ファクトを暗号化ユーザ中心型ファクトとして記憶することに加えて、１つ又は複数のユーザ中心型ファクトを編集するためにフラッシュトリガに応じてグラフデータ構造をフラッシュすることにより、グラフデータ構造が更なるプライバシ及びセキュリティを提供することができる。例えばフラッシュトリガは、１つ又は複数の暗号化ユーザ中心型ファクトを編集するためのユーザコマンドであり得る。ユーザコマンドは特定のユーザ中心型ファクト（例えば特定のクエリに応じたユーザ中心型ファクト、又は特定の時間／日付の範囲からのユーザ中心型ファクト）を示すことができる。或いは又は加えて、ユーザコマンドは、ユーザ中心型ＡＩナレッジベース全体が編集されるべきだと示すことができる。別の例では、フラッシュトリガは自動的にスケジュールされた、例えば周期的に生じる、又は将来の特定の予定された時点において１回生じるトリガとすることができる。
【００６５】
[0075]  １４０８で、方法１４００は、第１のコンピュータサービスと異なる第２のコンピュータサービスに関連する第２のアプリケーション固有データプロバイダから第２のユーザ中心型ファクトを受信することを含む。（例えば第１のユーザ中心型ファクトを受信することに関して上記で説明したように）第２のユーザ中心型ファクトは任意の適切なやり方で受信することができる。
【００６６】
[0076]  １４０９で、方法１４００は、グラフデータ構造に第２のユーザ中心型ファクトをアプリケーション非依存データ形式で追加することを含む。（例えばグラフデータ構造に第１のユーザ中心型ファクトを追加することに関して上記で説明したように）第２のユーザ中心型ファクトは任意の適切なやり方でグラフデータ構造に追加することができる。アプリケーション非依存データ形式は、単一のコンピュータサービスから導出されたユーザ中心型ファクトしか含まないナレッジベースと比較して（例えばユーザクエリに回答する際）改善された実用性でユーザ中心型ＡＩナレッジベースを円滑化し得る。第１のユーザ中心型ファクト及び第２のユーザ中心型ファクトは互換性のない異なるネイティブデータ形式を有し得る２つの異なるコンピュータサービスから受信され得るが、第１のユーザ中心型ファクト及び第２のユーザ中心型ファクトの両方を同じアプリケーション非依存データ形式で保存することができる。更に、上記の例は２つの異なるコンピュータサービスからのユーザ中心型ファクトを含むが、ナレッジベースに寄与し得る異なるコンピュータサービスの数に制限はない。加えて、様々なコンピュータサービスが任意の特定のやり方で互いに、又はユーザ中心型ＡＩナレッジベースに関係する要件はない（例えば様々なコンピュータサービス及びユーザ中心型ＡＩナレッジベースは互いに無関係であり、異なるコンピュータサービスプロバイダによって提供され得る）。従って、ユーザ中心型ナレッジＡＩベースは複数の異なるコンピュータサービスから導出されるユーザ中心型ファクトを含むことができ、それにより一層多くの異なるコンテキストからの更に多くのユーザ中心型ファクトを含む。更に、アプリケーション固有構成グラフ構造間の相互参照はユーザ中心型ファクトが様々なコンピュータサービスの側面間の関係を表すことを可能にし、そのことは相互参照なしに複数の異なる別個のナレッジベースを維持することと比較して実用性を更に改善することができる。
【００６７】
[0077]  一部の事例では、第２のユーザ中心型ファクトは、グラフデータ構造内に既に記憶されている第１のユーザ中心型ファクトのものと異なる目的語名詞及びエッジを有する一方、第１のユーザ中心型ファクトと同じ主語名詞を有することができる。従って第２のユーザ中心型ファクトを追加することは、第２のユーザ中心型ファクトが第１のユーザ中心型ファクトと同じ主語名詞を有することを認識すること、及び主語名詞から第２のユーザ中心型ファクトの目的語名詞への新たな出力エッジを表す新たなエッジレコードを含むように第１のユーザ中心型ファクトを表すノードレコードを修正することを含み得る。従ってノードレコードは、第１のユーザ中心型ファクトを最初は表すことができ、第２のユーザ中心型ファクトを更に表すように後で更新され得る。
【００６８】
[0078]  １４１０で、方法１４００は、グラフデータ構造内に含まれるユーザ中心型ファクトのサブセットをクエリに応じて出力することを任意選択的に含み、ユーザ中心型ファクトのサブセットはクエリによって規定される１組の制約を満たすように選択される。クエリに応答することは任意の適切なやり方で、例えば図１５の方法１５００に従って行うことができる。
【００６９】
[0079]  図１５は、クエリに応答するための例示的方法１５００を示す。クエリは、ユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットによって満たすことができ得る１組の制約を規定する。１）ユーザ中心型ファクト内に含まれる主語グラフノード及び／又は目的語グラフノードの種類（例えば主語グラフノードが人を表す）、２）ユーザ中心型ファクト内に含まれる主語グラフノード及び／又は目的語グラフノードの正体（例えば目的語グラフノードが特定の電子メールメッセージを表す）、３）主語グラフノードと目的語グラフノードとを接続するエッジの種類、４）主語グラフノード、目的語グラフノード、及び／又はエッジの信頼度値、５）主語グラフノード、目的語グラフノード、及び／又はエッジに関連する日付及び／又は時刻の範囲、及び／又は６）主語グラフノードのアクセスメタデータ及び／又はタグ等、主語グラフノード、目的語グラフノード、及び／又はエッジの他の任意の特徴のうちの何れか等、制約はユーザ中心型ファクトを規定する主語グラフノード、目的語グラフノード、及びエッジの任意の適切な特徴を含み得る。クエリへの回答は１組の制約を満たすユーザ中心型ファクトのサブセット、又は１組の制約を満たすことができないという指示を含む。
【００７０】
[0080]  クエリは任意の適切なやり方で受信することができる。例えばクエリは、コンピュータ可読クエリ形式における１組の制約をクライアントがプログラムで規定することを可能にするクエリプロトコル（例えばクエリＡＰＩ）によって受信され得る。或いはクエリは自然言語クエリとして受信し、自然言語処理技法を使用して制約を認識することによって１組の制約に変換することができる。例えばユーザ中心型ＡＩナレッジベースは、自然言語クエリに対応する潜在空間内の点を認識し、潜在空間内の点に対応する１組の制約を出力することによって自然言語クエリを制約の組に変換するために、自然言語クエリ及び制約の組をセマンティック埋め込みモデルによって学習される潜在空間内の点として表すようにセマンティック埋め込みモデルを訓練可能であり得る。或いは又は加えて、ユーザ中心型ＡＩナレッジベースは構文解析モデル（例えば依存関係解析）を使用して自然言語クエリの統語構造をテンプレートクエリと突き合わせ、自然言語クエリの詳細を使用してテンプレートクエリの詳細を埋めることによって１組の制約を指定することが可能であり得る。
【００７１】
[0081]  １５０１で、方法１５００は、前に応えられているクエリをキャッシュクエリとして認識し、キャッシュクエリが前に受信されたときにキャッシュクエリを満たしたユーザ中心型ファクトの同じサブセットで回答することにより、キャッシュ応答を出力してキャッシュクエリに応えることを含む。そのため１５０７で、方法１５００は、前にキャッシュに入れたユーザ中心型ファクトのサブセットを出力することを含む。キャッシュクエリが将来再び受信される場合、かかるキャッシングはキャッシュ応答の効率的な（例えば即座の）取得を可能にし得る。
【００７２】
[0082]  クエリがまだ応えられていない場合、１５０２で、方法１５００は、クエリによって規定される１組の制約を満たすユーザ中心型ファクトのサブセットを選択することを含む。１組の制約は、グラフデータ構造を横断して制約を少なくとも部分的に満たすユーザ中心型ファクトを見つけることによって満たされ得る。グラフデータ構造はユーザ中心型ファクト間の構造化された関係を表す（例えば同じ主語名詞を有する２つのファクトは構成グラフ内の単一のノードレコードによって表し、構成グラフ間で相互参照することができる）。そのため、ユーザ中心型ファクトの集合を網羅的に検索するよりも、グラフデータ構造を横断してクエリを満たすユーザ中心型ファクトを見つける方が効率的であり得る。例えばユーザが他の特定の人物と頻繁に対話した場合、その頻繁な対話はその他の人物がユーザに関連している可能性が高いことを示し得る。従って主語又は目的語としてその人物を有する更に多くのユーザ中心型ファクトがある可能性があり、その他の人物を表すノードに通じる及びかかるノードから至るエッジが多くあることを理由に、グラフデータ構造のエッジを横断する間その他の人物を表すノードに遭遇する可能性がより高くなり得る。
【００７３】
[0083]  グラフデータ構造を横断することはグラフデータ構造のエッジに沿った「ランダムウォーク」を含み得る。ランダムウォークは、クエリに回答するための任意の適切な出発点を指すために本明細書では使用する現在のユーザコンテキストから開始し得る。例では、現在のユーザコンテキストは（例えば出発点として使用するための主語グラフノードを示すコンテキストキーワードを含めることにより）クエリによって規定され得る。他の例では、現在のユーザコンテキストは、出発点として使用するための主語グラフノードを決定するのに適したアプリケーション固有コンテキスト（例えば「電子メールへの回答」）であり得る。
【００７４】
[0084]  （例えば出発点において）ランダムウォーク中にノードに遭遇した場合、クエリの制約を満たすかどうかを判定するためにそのノードを検査することができる。そのノードがクエリの制約を満たす場合、そのノードはクエリに応じたユーザ中心型ファクトのサブセット内で出力することができる。そのノードに遭遇した後、更に多くのノードに遭遇するようにランダムウォークを続行することができる。更に多くのノードを見つけるために、ランダムウォークは遭遇ノードの出力エッジに沿って続行することができる。出力エッジに沿って続行するかどうかを判定することは、エッジをたどる可能性を表す重みを評価し、重み及びランダムデータ、例えば乱数発生器を使用して実装される「ルーレットホイール選択」アルゴリズムに基づいてエッジをたどるかどうかをサンプリングすることを含む加重ランダム判定であり得る。主語グラフノードを目的語グラフノードに接続するエッジの重みは、主語グラフノード、エッジ、及び／又は目的語グラフノードの信頼度値に基づいて決定することができる。一例では、信頼度値はユーザに対する関連性の指示として解釈することができ、そのためより関連性のあるエッジ又はより関連性のあるノードを接続するエッジの方をたどる可能性が高い。エッジの重みは主語グラフノード、目的語グラフノード、及び例えばクエリの１つ又は複数の自然言語特徴に対するエッジの種類の自然言語比較に基づいてクエリに対するエッジの関連性を評価することによりエッジの他のデータに基づいて更に決定され得る。
【００７５】
[0085]  制約（例えばユーザ中心型ファクトを規定する主語グラフノード、目的語グラフノード、及びエッジの特徴）を指定することにより、ユーザはユーザ中心型ＡＩナレッジベースを使用して回答される多岐にわたるクエリを策定することが可能であり得る。
【００７６】
[0086]  クエリ内で指定される制約を満たすユーザ中心型ファクトのサブセットを選択することに加えて、ユーザ中心型ＡＩナレッジベースは他の専用クエリに応答することを可能にし得る。図１５は、スライスクエリ及びランククエリという２つの例示的な専用クエリを示す。
【００７７】
[0087]  一例では、１５０４で、クエリは開始ノード及び距離パラメータを示すスライスクエリである。スライスクエリへの回答は、開始ノードから出発し、開始ノードから最大で距離パラメータに等しい長さの経路を形成するようにグラフデータ構造のエッジを横断することによって到達するユーザ中心型ファクトを含むユーザ中心型ファクトのサブセットである。例えば距離パラメータが１に設定される場合、クエリへの回答は開始ノード及び開始ノードに直接接続される全ての一段階隔てたノードを含み、距離パラメータが２に設定される場合、クエリへの回答は開始ノード、全ての一段階隔てたノード、及び一段階隔てたノードの少なくとも１つに直接接続される全ての２段階隔てたノードを含む。最大で距離パラメータの経路によって開始ノードに接続されることにより、スライスクエリは対象となる特定のユーザ中心型ファクト（例えば開始ノードが関与するユーザ中心型ファクト）に潜在的に関連するユーザ中心型ファクトの集合を表し得る。小さい距離パラメータを設定することにより、クエリへの回答は開始ノードに密に関係する相対的に小さいファクトの集合を表すことができ、同様に大きい距離パラメータを設定することにより、回答は開始ノードに間接的に関係する大きいファクトの集合を表し得る。開始ノードを指定する代わりに、クエリは現在のユーザコンテキストを開始ノードとして使用し、それによりユーザの現在のコンテキストに関係するユーザ中心型ファクトの集合を表すこともできる。
【００７８】
[0088]  別の例では、１５０５で、クエリは各ユーザ中心型ファクトに関連する信頼度値に少なくとも基づいて複数のユーザ中心型ファクトをランク付けするためのランククエリであり、ユーザ中心型ファクトのサブセットは各ユーザ中心型ファクトの信頼度値に従って順にランク付けされる。ランククエリは、クエリに対する追加の特定の制約を課すことなしに、ユーザに関連する可能性が高いユーザ中心型ファクトを集めることとして解釈することができる。信頼度値に基づいて複数のユーザ中心型ファクトをランク付けすることに加えて、複数のユーザ中心型ファクトは他の特徴に基づいてランク付けすることができる。例えばユーザ中心型ファクトは、（例えば各ファクトに関連するタイムスタンプに従って）より最近であればより関連性があるものとして重み付けすることができる。別の例では、ランククエリがキーワードを含むことができ、ユーザ中心型ファクトは、そのタグの中にキーワードを有する少なくとも１つのノードを含む場合はより関連性があるものとして重み付けすることができる。
【００７９】
[0089]  図１５は専用クエリの２つの例を示すが、ユーザ中心型ＡＩナレッジベースは図１５には不図示の他の種類の専用クエリを可能にする。例えば、スライスクエリに応じたユーザ中心型ファクトのサブセットはランククエリにあるように信頼度値によって更にランク付けし、それにより２種類のクエリの機能を組み合わせることができる。別の例では、クエリは開始ノードを示すピボットクエリである。ピボットクエリへの回答は、開始ノードから出発し、無制限の（又は任意の、大きい）長さの経路を形成するようにグラフデータ構造のエッジを横断することによって到達するユーザ中心型ファクトを含むユーザ中心型ファクトのサブセットである。ピボットクエリは、開始ノードによって到達される経路長を制限しない、例えば距離パラメータが無限のスライスクエリとして解釈することができる。一部の例では、クエリへの回答が（例えば図２Ａにあるように）グラフ図としてユーザ中心型ファクトの回答サブセットの視覚化を含むことができ、この視覚化はユーザ中心型ファクトの任意の適切な情報（例えばユーザ中心型ファクトの１つに含まれるノードのファセットポインタによって示される補助アプリケーション固有データ）を含むように注釈付け又はアニメ化することができる。
【００８０】
[0090]  クエリに応じて出力されるユーザ中心型ファクトのサブセットが、クエリによって規定される範囲内の時間を示すタイムスタンプに関連するユーザ中心型ファクトに制限されるように、クエリは時間制約を規定することができる。一部の例では、時間がグラフデータ構造内のノード及びエッジの固有の特性である（例えばグラフデータ構造内に含まれる複数のユーザ中心型ファクトの各ユーザ中心型ファクトが１つ又は複数のタイムスタンプに関連する）。ノード又はエッジに関連する１つ又は複数のタイムスタンプは、ユーザ中心型ファクトが作成された、アクセスされた、及び／又は修正された時間を示すことができる（例えばユーザ中心型ファクト内に含まれるノードのアクセスメタデータ）。或いは又は加えて、１つ又は複数のタイムスタンプはユーザ中心型ファクト内で参照される時間（例えば会議が予定されている時間、又はエンリッチメントパイプライン内のエンリッチメントアダプタによって追加される他の任意のタイムスタンプ）を示すことができる。１つ又は複数のタイムスタンプは検索可能タグとして任意選択的に記憶することができる。
【００８１】
[0091]  一部の例では、クエリによって規定される１つ又は複数の制約が回答の種類の制約を含み、従ってクエリに応じて選択されるユーザ中心型ファクトのサブセットは回答の種類の制約を満たすユーザ中心型ファクトだけを含み得る。例えば回答の種類の制約は、ユーザ中心型ファクトの主語グラフノード、目的語グラフノード、及び／又はエッジの特徴を制約することができる。例えば回答の種類の制約は、１）主語又は目的語が人である、２）主語も目的語も同僚である、３）主語が場所である、４）目的語がトピックである、又は５）主語が人であり且つ目的語が予定されたイベントである等、特定の種類の主語グラフノード及び／又は目的語グラフノードを示すことができる。或いは又は加えて回答の種類の制約は、１）主語がユーザである、２）主語がユーザの上司のAliceである、又は３）目的語がAlice、Bob、又はCharlieの何れかである等、１つ又は複数の特定の主語及び／又は目的語を示すことができる。或いは又は加えて回答の種類の制約は、例えば「電子メール送信済み」の関係、「一緒にランチに行った」関係、又は「研究されたトピック」の関係等の関係の種類を示すことにより、１つ又は複数の特定の種類のエッジを示すことができる。
【００８２】
[0092]  一部の例では、クエリによって規定される１つ又は複数の制約がグラフコンテキスト制約を含むことができ、従ってクエリに応じて選択されるユーザ中心型ファクトのサブセットは、グラフコンテキスト制約を満たすユーザ中心型ＡＩナレッジベース内のコンテキスト化（contextualizing）ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含み得る。あり得る関係を示すことができるグラフデータ構造の任意の適切な特徴に基づき、本明細書では２つの異なるユーザ中心型ファクトを関係するものとして記述することがある。例えばグラフコンテキスト制約がユーザの上司であるAliceを示す場合、コンテキスト化ユーザ中心型ファクトは主語グラフノード又は目的語グラフノードとしてAliceを表すノードを有する任意のファクトであり得る。従って、クエリに応じて選択されるユーザ中心型ファクトのサブセットはAliceを表すノードにエッジによって直接接続される主語グラフノード及び／又は目的語グラフノードを有する他のユーザ中心型ファクトを含み得る。或いは又は加えて、ユーザ中心型ファクトのサブセットはAliceに間接的に関係するユーザ中心型ファクト、例えばAliceを表すノードに２つ以上のエッジの経路によって間接的に接続される主語グラフノード及び／又は目的語グラフノードを有するユーザ中心型ファクトを含み得る。一部の事例では、グラフコンテキスト制約を含むクエリがスライスクエリでもよく、ユーザ中心型ファクトのサブセットは、コンテキスト化ユーザ中心型ファクトに関係し且つコンテキスト化ユーザ中心型ファクトのノードの最大で特定の距離内で到達可能なユーザ中心型ファクトだけを含み得る。他の例では、グラフコンテキスト制約を含むクエリがランククエリでもよく、ユーザ中心型ファクトのサブセットは、コンテキスト化ユーザ中心型ファクトに関連する可能性が最も高いユーザ中心型ファクト、例えば多くの異なる経路によって又は高い信頼度値を有するエッジを含む経路によってコンテキスト化ユーザ中心型ファクトに接続されるユーザ中心型ファクトの選択を含み得る。
【００８３】
[0093]  クエリに回答することは各ユーザ中心型ファクトに関連する１つ又は複数のタイムスタンプに基づいてグラフデータ構造を横断することを含むことができ、かかる横断は本明細書ではグラフデータ構造の時間次元の横断と呼ぶことができる。例えばクエリに回答することは、クエリによって規定される時間に関連するノードから開始し、タイムスタンプが横断と同じ順序で増加するように、後の時点を示すタイムスタンプを有する任意のエッジをたどることによってグラフを横断することを含み得る。他の例では、クエリに回答することはクエリによって規定される日付に先行するタイムスタンプを有する任意のエッジをたどることによってグラフデータ構造を横断することを含み得る。更に、グラフデータ構造内の各ノード及びエッジの固有の時間特性がグラフデータ構造のタイムラインビューを可能にし得る。例では、クエリへの回答がグラフデータ構造のタイムラインビュー、例えば各ユーザ中心型ファクトに関連するタイムスタンプによって時系列順に配置されるユーザ中心型ファクトを含むことができる。
【００８４】
[0094]  専用クエリの別の例として、グラフデータ構造は、ユーザ中心型ファクトに関するグラフデータ構造によって記憶される検索可能タグに基づいてユーザ中心型ファクトを検索できるように構成され得る。検索可能タグに基づいてユーザ中心型ファクトを検索することは（例えばスライスクエリ又はピボットクエリに関して上記で説明したように）任意の適切なやり方でグラフを横断し、グラフを横断する間、グラフ構造が検索可能タグを記憶する横断中に遭遇する任意のユーザ中心型ファクトを出力することを含み得る。
【００８５】
[0095]  専用クエリの別の例として、グラフデータ構造は、ユーザの現在のコンテキストに関連し得るユーザ中心型ファクトを検索することによってユーザコンテキストクエリに応えるように構成され得る。従って、ユーザコンテキストクエリはユーザの現在のコンテキストに関係する１つ又は複数の制約を含み得る。例えば１つ又は複数の制約は、ユーザコンテキストクエリが応えられる現在時間に基づく時間制約を含み得る。或いは又は加えて、１つ又は複数の制約はユーザの現在のコンテキストに関係するグラフコンテキスト制約、例えばユーザが従事し得るタスクを指定するグラフコンテキスト制約を含むことができる。
【００８６】
[0096]  一部の例では、ユーザコンテキストクエリの１つ又は複数の制約が、ユーザコンテキストクエリを発行したコンピュータサービスの状態データに基づき得る。一部の例では、コンピュータサービスの状態データが自然言語特徴（例えば意図、エンティティ、又はトピック）を含み、１つ又は複数の制約が自然言語特徴の指示を含む。例えばコンピュータサービスが電子メールプログラムである場合、ユーザコンテキストクエリの１つ又は複数の制約は、１）ユーザが電子メールを書き始める時間に基づく時間制約、２）電子メールの件名のトピックを示すグラフコンテキスト制約、及び３）電子メールの受信者を示すグラフコンテキスト制約を含み得る。従って、ユーザコンテキストクエリに応じて選択されるユーザ中心型ファクトのサブセットは（タイムスタンプに基づいて）現在の且つ（トピック及び受信者に基づいて）電子メールを書くユーザのタスクに関係する可能性が高いユーザ中心型ファクトを含み得る。
【００８７】
[0097]  クエリに応じてユーザ中心型ファクトのサブセットを選択した後、将来同じクエリに即座に応答できるようにするために、ユーザ中心型ファクトのサブセットはキャッシュに入れることができる。従って１５０６で、方法１５００はクエリをキャッシュクエリとしてキャッシュに入れ、クエリに応じたユーザ中心型ファクトのサブセットをキャッシュ応答としてキャッシュに入れることを任意選択的に含む。次いで１５０７で、方法１５００はクエリに応じてユーザ中心型ファクトのサブセットを出力することを含み、これはユーザ中心型ファクトの選択されたサブセットを直接出力すること、又はユーザ中心型ファクトの選択されたサブセットをキャッシュに入れた後、結果として生じるユーザ中心型ファクトのキャッシュ済みサブセットを出力することを含み得る。
【００８８】
[0098]  グラフデータ構造が暗号化ユーザ中心型ファクトを含む場合、１つ又は複数の暗号化ユーザ中心型ファクトが除外されたことを明かすことなしに１つ又は複数の暗号化ユーザ中心型ファクトを除外し且つ他のユーザ中心型ファクトを含むフィルタ済みのグラフデータ構造を作成するために、グラフデータ構造をフィルタにかけることができる。例えば、除外される暗号化ユーザ中心型ファクトは（例えばクエリに応じて暗号化ユーザ中心型ファクトを選択することによって、又は特定の時間／日付の範囲から暗号化ユーザ中心型ファクトを選択することによって）ユーザによって選択され得る。フィルタ済みのグラフデータ構造はクエリに回答するために依然として使用可能であり得るが、暗号化ユーザ中心型ファクトの何れも回答には含めない。除外されるユーザ中心型ファクトが欠如していることを決して示さずに、フィルタ済みのグラフデータ構造は除外されるユーザ中心型ファクトを省く。例えば回答は、１つ又は複数の暗号化ユーザ中心型ファクトが存在したが編集されたことを示さない。代わりに回答は、ことによると他のユーザ中心型ファクトを含めながら、１つ又は複数の暗号化ユーザ中心型ファクトを単に省く。
【００８９】
[0099]  上記で説明したグラフデータ構造を活用するユーザ中心型ＡＩナレッジベースは、ユーザと１つ又は複数のコンピュータサービスとの間の改善された対話を支援することができる。コンピュータサービスは、ユーザ中心型ＡＩナレッジベースにデータ（例えばユーザ中心型ファクト）を提供することによりアプリケーション固有データプロバイダとして機能することができる。或いは又は加えて、コンピュータサービスはクエリに回答するためにユーザ中心型ＡＩナレッジベースを使用することができる。例えばコンピュータサービスは、（例えばユーザクエリに応じて）ユーザに情報を提供するためにユーザ中心型ＡＩナレッジベースを使用できてもよい。一部の例では、ユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトに基づいてユーザを支援するためのアクションを自動で実行するようにコンピュータサービスが構成され得る。
【００９０】
[00100]  複数のコンピュータサービスの各コンピュータサービスがユーザ中心型ＡＩナレッジベースにユーザ中心型ファクトを与える場合、ユーザ中心型ＡＩナレッジベースは複数のコンピュータサービス間の情報共有を促進することができる。従ってユーザ中心型ＡＩナレッジベースは、１つ又は複数のコンピュータサービスが協調的なやり方でユーザを支援することを可能にし得る。例えば、第１のコンピュータサービスはユーザ中心型ＡＩナレッジベースに１つ又は複数のユーザ中心型ファクトを提供することができ、第２のコンピュータサービスは１つ又は複数のユーザ中心型ファクトに基づいてユーザを支援するためのアクションを実行することができる。このようにして、第２のコンピュータサービスは第１のコンピュータサービスに関連する機能を、かかる機能を提供するのに必要なデータが第２のコンピュータサービス内で直接入手できない場合でも、及びかかる機能が第１のコンピュータサービスに含まれていない場合でも提供することができる。
【００９１】
[00101]  ユーザ中心型ＡＩナレッジベースを使用することができるコンピュータサービスの例は、１）コンピュータによるパーソナルアシスタント、２）電子メールクライアント、３）カレンダ／スケジューリングプログラム、４）ワード処理プログラム、５）プレゼンテーション編集プログラム、６）スプレッドシートプログラム、７）ダイヤグラミング／パブリッシングプログラム、８）コンピュータプログラミングのための統合開発環境（ＩＤＥ）、９）ソーシャルネットワークサービス、１０）職場コラボレーション環境、及び１１）クラウドデータストレージ及びファイル同期プログラムを含む。但し、ユーザ中心型ＡＩナレッジベースの利用はコンピュータサービスの上記の例に限定されず、例えばデータを提供することにより及び／又はクエリを発行することにより、如何なるコンピュータサービスもユーザ中心型ＡＩナレッジベースを任意の適切なやり方で使用することができる。
【００９２】
[00102]  ユーザ中心型ＡＩナレッジベースを利用するコンピュータサービスは、ユーザ中心型ＡＩナレッジベースを管理する組織又はエンティティによって作成され及び／又は管理されるファーストパーティコンピュータサービス、又は別の組織若しくはエンティティによって作成され及び／又は管理されるサードパーティサービスであり得る。コンピュータサービスは、ユーザ中心型ＡＩナレッジベースの１つ又は複数のＡＰＩ（例えば更新ＡＰＩ及びクエリＡＰＩ）によってユーザ中心型ＡＩナレッジベースを利用することができ、各ＡＰＩはファーストパーティコンピュータサービス及びサードパーティサービスを含む複数の異なるコンピュータサービスによって使用可能である。
【００９３】
[00103]  図１６は、コンピュータによるパーソナルアシスタント１６００の形を取る例示的なコンピュータサービスを示す。コンピュータによるパーソナルアシスタント１６００はユーザ中心型ＡＩナレッジベースの機能を利用することができる。例えば図１３の計算環境１３００では、コンピュータによるパーソナルアシスタント１６００は、ユーザ中心型ＡＩナレッジベースを実装するグラフ記憶マシン１３０１に通信可能に結合される。従ってコンピュータによるパーソナルアシスタントは、ユーザ中心型ＡＩナレッジベースにユーザ中心型ファクトを提供するために、及びユーザ中心型ＡＩナレッジベースによって応えられるクエリを発行するためにグラフ記憶マシン１３０１と対話するように構成され得る。コンピュータによるパーソナルアシスタント１６００は、独立型のコンピュータサービス又は別のコンピュータサービス（例えば電子メール／カレンダアプリケーション、検索エンジン、統合開発環境）の支援コンポーネントであり得る。
【００９４】
[00104]  コンピュータによるパーソナルアシスタント１６００は、ユーザ入力及び／又はユーザクエリを受け付けるように構成される自然言語ユーザインタフェース１６１０を含む。自然言語ユーザインタフェース１６１０は、キーボード又はテキスト形式のユーザ入力を受け付けるように構成される他の任意のテキスト入力装置を含み得る。自然言語ユーザインタフェース１６１０は、会話音声を捕捉するように構成されるマイクロフォン１６１１を含み得る。従って、自然言語ユーザインタフェース１６１０によって受け付けられるユーザ入力及び／又はユーザクエリはマイクロフォンによって捕捉される会話音声を含み得る。一部の例では、自然言語ユーザインタフェース１６１０がユーザの会話音声を受け付け、ユーザの会話音声を表すテキストを出力するように構成される。或いは又は加えて、自然言語ユーザインタフェース１６１０はインク入力装置１６１２を含むことができ、自然言語ユーザインタフェース１６１０によって受け付けられるユーザ入力は、インク入力装置によって捕捉されるユーザの手書き入力及び／又はユーザのジェスチャを含み得る。「インク入力装置」は、本明細書ではユーザがインク入力を提供することを可能にし得る任意の装置又は装置の組み合わせを指すために使用することができる。例えばインク入力装置は、ディスプレイ又は他の任意の表面に対する一連の二次元位置又は三次元位置をユーザが示すことを可能にする任意の装置、例えば１）ユーザの指によって制御される容量性タッチスクリーン、２）スタイラスによって制御される容量性タッチスクリーン、３）スタイラスがタッチスクリーンに近接しているときにスタイラスの位置を検出するように構成される、スタイラス及びタッチスクリーンを含む「ホバー」装置、４）マウス、又は５）ビデオゲームコントローラを含み得る。一部の例では、インク入力装置はユーザのジェスチャを検出するように構成されるカメラを代わりに又は追加で含み得る。例えばカメラは、ユーザの手の三次元運動に基づいてジェスチャを検出するように構成され得る。或いは又は加えて、カメラ（例えばデプスカメラ）はユーザの手の動きを或る表面又は平面に対する、例えばカメラの視錐台の前面によって画定される平面に対する二次元位置として検出するように構成され得る。
【００９５】
[00105]  コンピュータによるパーソナルアシスタント１６００は、自然言語ユーザインタフェース１６１０において受け付けられるユーザ入力及び／又はユーザクエリのコンピュータ可読表現を出力するように構成される自然言語処理（ＮＬＰ）マシン１６２０を更に含む。従って自然言語ユーザインタフェース１６１０がユーザ入力を受け付けるように構成される場合、ＮＬＰマシン１６２０はユーザ入力のコンピュータ可読表現を出力するように構成され、自然言語ユーザインタフェース１６１０がユーザクエリを受け付けるように構成される場合、ＮＬＰマシン１６２０はユーザクエリに基づくクエリのコンピュータ可読表現を出力するように構成される。
【００９６】
[00106]  ＮＬＰマシン１６２０がユーザクエリに基づくクエリのコンピュータ可読表現を出力するように構成される場合、ＮＬＰマシン１６２０はユーザクエリに基づく認識されたユーザの意図を出力するように更に構成され得る。従って、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約は認識されたユーザの意図に基づく制約を含み得る。
【００９７】
[00107]  ＮＬＰマシン１６２０は、ユーザによる発話によって規定される意図及び／又はエンティティを認識するために発話を構文解析するように構成され得る。発話は、（例えば文法、単語の用法、発音、及び／又は綴りに関して）適格でも適格でなくてもよい任意のユーザ入力、例えば文又は文断片である。意図はユーザが実行したい可能性があるアクションを表し、質問又はタスク、例えばレストランの予約をすること、タクシーを呼ぶこと、後でリマインダを表示すること、及び／又は質問に回答することを含み得る。エンティティは、特定の命名されたエンティティ（例えばユーザの上司であるAlice）又は特定の種類のエンティティ、例えば人、動物、同僚、場所、又は組織を表すプレースホルダを含み得る。
【００９８】
[00108]  ＮＬＰマシン１６２０は、任意の適切な自然言語処理技法を利用するように構成され得る。例えばＮＬＰマシン１６２０は、発話の文法構造を認識するように構成される依存関係パーサ及び／又は構成要素パーサを含み得る。ＮＬＰマシン１６２０は発話のセマンティックコンテンツ、例えば発話のエンティティの種類がその種類の特定のエンティティの名前と対にされることを表す、キーと値との対を認識するように更に構成され得る。一部の例では、ＮＬＰマシン１６２０のコンポーネント（例えば依存関係パーサ）が１つ又は複数の機械学習技術を利用することができる。かかる機械学習技術の非限定的な例は、フィードフォワードネットワーク、再帰型ニューラルネットワーク（ＲＮＮ）、長・短期記憶（ＬＳＴＭ）、畳み込みニューラルネットワーク、サポートベクタマシン（ＳＶＭ）、敵対的生成ネットワーク（ＧＡＮ）、変分オートエンコーダ、Ｑ学習、及び決定木を含み得る。記載した評価、決定、識別等を行うために、本明細書に記載の様々な識別子、エンジン、及び他の処理ブロックは、これらの又は他の任意の適切な機械学習技術を利用して教師あり学習及び／又は教師なし学習によって訓練することができる。但し、この記述はかかる評価、決定、識別等を行うための新たな技術を提案することは意図しないことを理解すべきである。代わりにこの記述は計算資源を管理することを意図し、そのため、まだ開発されていない処理モジュールを含む任意の種類の処理モジュールに適合することを意図する。
【００９９】
[00109]  一部の例では、ＮＬＰマシン１６２０が１組の既定の意図及び／又はエンティティを認識するように構成され得る。或いは又は加えて、ＮＬＰマシン１６２０は発話の例に基づいて訓練することができる。一部の例では、幾つかのラベル付けされた例をＮＬＰマシン１６２０に供給することにより、新たな意図及び／又はエンティティを認識するようにＮＬＰマシン１６２０を構成することができ、ラベル付けされた例は、関連するエンティティを示すように注釈を付けられる例示的な発話と共に認識される新たな意図を含む。ＮＬＰマシン１６２０の精度及び／又は性能がコンピュータによるパーソナルアシスタント１６００について最適化されるように、ＮＬＰマシン１６２０はコンピュータによるパーソナルアシスタント１６００のコンテキストで発話を構文解析する特定の目的のために訓練することができる。例えばＮＬＰマシン１６２０が１つ又は複数のニューラルネットワークに基づく場合、ＮＬＰマシン１６２０を訓練することは誤差逆伝搬アルゴリズムを用いた確率勾配降下によって１つ又は複数のニューラルネットワークを訓練することを含み得る。
【０１００】
[00110]  一部の事例では、ＮＬＰマシン１６２０は特定の人間語、例えば英語を認識するように構成され得る。或いは又は加えて、ＮＬＰマシン１６２０は複数の異なる人間語を認識するように構成され得る。ＮＬＰマシン１６２０が複数の異なる人間語を認識するように構成される場合、ＮＬＰマシン１６２０は複数の異なる言語の言葉を含む発話を処理できる場合がある。
【０１０１】
[00111]  一部の例では、コンピュータによるパーソナルアシスタント１６００は、単一のエンクロージャ内に含まれるオールインワン計算装置として実装することができる。例えばオールインワン計算装置は、１つ又は複数の論理マシンと、自然言語ユーザインタフェース１６１０、ＮＬＰマシン１６２０、識別マシン１６３０、エンリッチメントアダプタ１６４０、ナレッジベース更新マシン１６５０、ナレッジベースクエリマシン１６６０、及び出力サブシステム１６７０の機能を提供するために論理マシンによって実行可能な命令を保持する１つ又は複数の記憶マシンとを含むことができる。一部の例では、オールインワン計算装置が１つ又は複数の入力装置（例えばマイクロフォン１６１１及び／又はインク入力装置１６１２）を追加で含むことができる。一部の例では、オールインワン計算装置が１つ又は複数の出力装置（例えば出力サブシステム１６７０内に含まれるディスプレイ及び／又はスピーカ）を含むことができる。或いは又は加えて、オールインワン計算装置は（例えば出力サブシステム１６７０の一部として）他のコンピュータサービスに通信可能に結合するように構成される通信サブシステムを含み得る。
【０１０２】
[00112]  一部の例では、コンピュータによるパーソナルアシスタント１６００の１つ又は複数のコンポーネント（例えば自然言語ユーザインタフェース１６１０、ＮＬＰマシン１６２０、識別マシン１６３０、エンリッチメントアダプタ１６４０、ナレッジベース更新マシン１６５０、ナレッジベースクエリマシン１６６０、及び／又は出力サブシステム１６７０）が、計算を実行し、データを変換し、１つ又は複数のコンポーネントの上記の機能を実装するために１つ又は複数の他のコンピュータサービス（例えば他の計算装置）と共働するように構成され得る。
【０１０３】
[00113]  一例では、コンピュータによるパーソナルアシスタント１６００が２つ以上の異なる計算装置にわたって実装され得る。例えばＮＬＰマシン１６２０は、１つ又は複数の自然言語処理タスクを１つ又は複数のクラウドサービス、例えば図１３に示す計算環境１３００のクラウドサービス１３１１にオフロードすることができる。従って、クラウドサービス１３１１は上記のように自然言語を処理し、ＮＬＰマシン１６２０において出力されるように、コンピュータによるパーソナルアシスタント１６００にユーザ入力のコンピュータ可読表現を返すように構成され得る。一部の例では、ＮＬＰマシン１６２０がユーザ入力を部分的に前処理してから、クラウドサービス１３１１によって更に処理されるように前処理済みの入力を送信することができ、及び／又はクラウドサービス１３１１から受信される前処理済みの入力のコンピュータ可読表現を後処理してから、前処理済みの入力の後処理したコンピュータ可読表現をＮＬＰマシン１６２０において出力することができる。例えば遠隔コンピュータサービスは、MICROSOFT LUIS（商標）言語理解サービス等、自然言語入力のクラウド処理を提供するクラウドサービスであり得る。
【０１０４】
[00114]  ＮＬＰマシン１６２０の機能をクラウドサービス１３１１に上記のやり方でオフロードすることの代わりに又はそれに加えて、クラウドサービス１３１１又は他の任意の計算装置（例えばグラフ記憶マシン１３１０、アプリケーション固有データプロバイダ１３２１、及び／又はユーザコンピュータ１３４０）にタスクをオフロードするように、コンピュータによるパーソナルアシスタント１６００の他の任意のコンポーネントを同様に構成することができる。このようにして、コンピュータによるパーソナルアシスタント１６００のコンポーネントの機能は、他のコンピュータ装置及び／又はコンピュータサービスを利用することに加えて、コンピュータによるパーソナルアシスタント１６００内に含まれるハードウェア及び／又はソフトウェアを利用することができる。
【０１０５】
[00115]  例えばナレッジベース更新マシン１６５０は、例えばユーザ中心型ナレッジベースに新たなユーザ中心型ファクトを追加するグラフ記憶マシン１３１０にタスクをオフロードするように構成され得る。従ってユーザ中心型ナレッジベースに新たなユーザ中心型ファクトを追加するために、ナレッジベース更新マシン１６５０はユーザ中心型ファクトをネットワーク１３１０経由でグラフ記憶マシン１３０１に提供し、クエリに応じて選択されるユーザ中心型ファクトのサブセットを受信するように構成されてもよく、ユーザ中心型ファクトのサブセットはグラフ記憶マシン１３０１によって実装されるユーザ中心型ＡＩナレッジベース内に含まれる。
【０１０６】
[00116]  或いは又は加えて、ナレッジベースクエリマシン１６６０は、例えばユーザ中心型ナレッジベースによって応えられるクエリを発行するグラフ記憶マシン１３１０にタスクをオフロードするように構成され得る。従ってユーザ中心型ナレッジベースによって応えられるクエリを発行するために、ナレッジベースクエリマシン１６６０はユーザ中心型ファクトをネットワーク１３１０経由でグラフ記憶マシン１３０１に提供し、ユーザ中心型ファクトのサブセットに基づく応答（例えばユーザ中心型ファクトのサブセットに基づくクエリへのテキストによる回答）を受信するように構成され得る。
【０１０７】
[00117]  コンピュータによるパーソナルアシスタント１６００は、ユーザ入力を特定のユーザに関連付けるように構成される識別マシン１６３０を更に含む。識別マシン１６３０は、ユーザの正体を明らかにするために任意の適切な情報を使用することができる。例えば自然言語ユーザインタフェース１６１０がマイクロフォンを含み、ユーザ入力が会話音声を含む場合、識別マシン１６３０は会話音声に基づいてユーザを区別するように構成される話者認識エンジンを含むことができる。或いは又は加えて、コンピュータによるパーソナルアシスタント１６００が（例えば自然言語ユーザインタフェース１６１０の一部として）カメラを含む場合、識別マシン１６３０はユーザの顔写真に基づいてユーザを区別するように構成される顔認識エンジンを含むことができる。或いは又は加えて、識別マシン１６３０は生体認証情報（例えばユーザの指紋）を受信し、生体認証情報に基づいてユーザを区別するように構成され得る。或いは又は加えて、識別マシン１６３０は識別情報（例えばユーザ名及びパスワード等のログイン情報）を提供するようユーザを促すように構成され得る。
【０１０８】
[00118]  ユーザ中心型ＡＩナレッジベースが１つ又は複数の暗号化ユーザ中心型ファクトを含む例では、特定のユーザに関連する資格情報によって１つ又は複数の暗号化ユーザ中心型ファクトへのアクセスを制約することができる。従って、特定のユーザに関連するコンピュータによるパーソナルアシスタントは、ユーザ中心型ＡＩナレッジベースにアクセスする（例えば読み取る及び／又は修正する）ために資格情報を提供する必要があり得る。従って識別マシン１６３０は特定のユーザを識別し、特定のユーザに関連する資格情報を供給するように構成され得る。例えば識別マシン１６３０は、コンピュータによるパーソナルアシスタント１６００がユーザ中心型ＡＩナレッジベースにユーザ中心型ファクトを提供するとき、又はユーザ中心型ＡＩナレッジベースによって応えられるクエリを発行するとき資格情報を供給するために、資格情報を例えばデジタル証明書として記憶することができる。
【０１０９】
[00119]  任意選択的に一部の例では、コンピュータによるパーソナルアシスタント１６００は、ユーザ入力のコンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタ１６４０を更に含み、新たな又は更新済みのユーザ中心型ファクトはエンリッチメントアダプタによって出力されるエンリッチメントを含む。例えばエンリッチメントアダプタ１６４０は、図１４に関して上記で説明したエンリッチメントの何れか、例えば１）命名されたエンティティ、２）意図、３）イベント及びタスク、４）トピック、５）位置、及び／又は６）日付及び時間を追加するように構成され得る。一部の例ではエンリッチメントアダプタ１６４０は、エンリッチメントを出力するようにそれぞれ構成される複数のエンリッチメントアダプタを含むエンリッチメントパイプラインであり、新たな又は更新済みのユーザ中心型ファクトはエンリッチメントパイプラインの各エンリッチメントアダプタによって出力されるエンリッチメントの全てを含む。
【０１１０】
[00120]  任意選択的に一部の例では、コンピュータによるパーソナルアシスタント１６００が、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型ＡＩナレッジベースを更新するように構成されるナレッジベース更新マシン１６５０を更に含む。ナレッジベース更新マシン１６５０は、更新プロトコル（例えば更新ＡＰＩ）によってユーザ中心型ＡＩナレッジベースを更新することができる。更新プロトコルは、複数の異なるコンピュータサービスによって使用可能であり得る。図１４に関して上記で説明したように、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約することができる。
【０１１１】
[00121]  任意選択的に一部の例では、コンピュータによるパーソナルアシスタント１６００が、特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリするように、及びユーザクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力するように構成されるナレッジベースクエリマシン１６６０を更に含む。ナレッジベースクエリマシンは、複数の異なるコンピュータサービスによって使用可能なクエリプロトコル（例えばクエリＡＰＩ）によってユーザ中心型ＡＩナレッジベースをクエリするように構成され得る。
【０１１２】
[00122]  一部の例では、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約が回答の種類の制約を含むことができ、従ってユーザ中心型ファクトのサブセットは回答の種類の制約を満たすユーザ中心型ファクトだけを含み得る。或いは又は加えて、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約はグラフコンテキスト制約を含むことができ、従ってユーザ中心型ファクトのサブセットはグラフコンテキスト制約を満たすユーザ中心型ＡＩナレッジベース内のコンテキスト化ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含み得る。従って、ユーザ中心型ファクトのサブセットは図１５に関して上記で説明したように決定することができる。
【０１１３】
[00123]  一部の例では、クエリはユーザの現在のコンテキストを決定するためのユーザコンテキストクエリである。従って、ユーザ中心型ファクトのサブセットは図１５に関して上記で説明したようにユーザの現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトを含み得る。クエリがユーザコンテキストクエリである場合、クエリのコンピュータ可読表現は、自然言語ユーザインタフェース１６１０において受け付けられる及び／又はＮＬＰマシン１６２０において解釈される如何なるユーザクエリとも無関係であり得る。代わりにユーザコンテキストクエリは、コンピュータによるパーソナルアシスタントが入手可能な任意の適切なデータ（例えばＧＰＳデータ等のセンサデータ、時間／日付データ、コンピュータによるパーソナルアシスタントの状態データ、及び／又は他の任意の共働コンピュータサービス（例えばユーザ中心型ＡＩナレッジベースにユーザ中心型ファクトを提供することによってコンピュータによるパーソナルアシスタントとデータを共有するように構成されるコンピュータサービス、及び／又はコンピュータによるパーソナルアシスタントによって制御され得るコンピュータサービス）の状態データ）に基づいて自動で発行され得る。
【０１１４】
[00124]  任意選択的に一部の例では、コンピュータによるパーソナルアシスタント１６００がデータ、例えばナレッジベースクエリマシンによって出力されるクエリへの応答を出力するように構成される出力サブシステム１６７０を含む。例えば出力サブシステム１６７０は、クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づいて会話音声を生成するように構成される音声合成エンジン、及び会話音声を出力するように構成されるスピーカを含み得る。一部の例では、出力サブシステム１６７０が、クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づいてテキストによる回答を視覚的に提示するように構成されるディスプレイを含み得る。一部の例では、ディスプレイはユーザ中心型ファクトのサブセットをグラフ形式で（例えばユーザ中心型ファクトのサブセットを含むグラフデータ構造のグラフ表現として、又は時系列順に配置されたユーザ中心型ファクトを含むタイムラインとして）直接視覚的に提示するように構成され得る。
【０１１５】
[00125]  一部の例では、ナレッジベースクエリマシンによって出力される応答は、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションを共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を含む。例えば共働コンピュータサービスは、コンピュータによるパーソナルアシスタントを実装する１つ又は複数の装置上で実行されるソフトウェアアプリケーションであり得る。他の例では、共働コンピュータサービスは、コンピュータネットワークを介してアクセス可能なネットワーク化されたコンピュータサービスであり得る。従って出力サブシステム１６７０は、共働コンピュータサービスにコンピュータ可読命令を伝えるためにコンピュータネットワークに通信可能に結合するように構成される通信装置（例えば無線ラジオ）を含み得る。
【０１１６】
[00126]  一部の例では、ユーザを支援するために共働コンピュータサービスによって実行されるアクションは、（例えばクエリが特定の優先設定を変更するための要求を含む場合）クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットに基づいて共働コンピュータサービスの優先設定を変更することを含む。
【０１１７】
[00127]  一部の例では、ユーザを支援するために共働コンピュータサービスによって実行されるアクションが共働コンピュータサービスの状態データの表現を視覚的に提示することを含み、共働コンピュータサービスの状態データはクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに関係する。
【０１１８】
[00128]  図１６は独立型のコンピュータによるパーソナルアシスタントを示すが、他の任意のコンピュータサービスが図１６に図示されているコンポーネント（例えば自然言語ユーザインタフェース、ＮＬＰマシン、識別マシン、エンリッチメントアダプタ、ナレッジベース更新マシン、ナレッジベースクエリマシン、及び／又は出力サブシステム）の任意のサブセットを含み得る。かかるコンポーネントは、コンピュータによるパーソナルアシスタントに関して説明したように（例えばユーザ中心型ＡＩナレッジベースにデータを提供することによって、及びユーザ中心型ＡＩナレッジベースを使用してクエリに応えることによって）ユーザ中心型ＡＩナレッジベースを使用することを助けることができる。ユーザ中心型ＡＩナレッジベースを利用する如何なるコンピュータサービスも、そのサービスが独立型サービスであろうと異なる主要機能を有する別のコンピュータサービス（例えば電子メール／カレンダアプリケーション、検索エンジン、統合開発環境）の支援コンポーネントであろうと、コンピュータによるパーソナルアシスタントである。
【０１１９】
[00129]  一例では、ユーザが電子メールプログラム内で「ウィジェット開発の週次報告」という件名の電子メールを書いており、ユーザの上司であるAliceが受信者として選択されている。ユーザは電子メールを完成させるための提案を得るために「分析」ボタンをクリックすることができる。従って、電子メールプログラムはユーザ中心型ＡＩナレッジベースによって応えられるコンテキストクエリを発行することができる。コンテキストクエリは電子メールプログラムの状態を示すことができる。更に、コンテキストクエリはアプリケーションの状態（例えば電子メールの件名のコンテンツ）に基づく１つ又は複数の自然言語特徴を含むことができる。例えば１つ又は複数の自然言語特徴は、認識された意図（例えば「情報を見つける」）、認識されたトピック（「ウィジェット」）、及び認識されたエンティティ（例えばユーザの上司であるAlice）を含み得る。従って、クエリに応じて選択されるユーザ中心型ファクトのサブセットは、「ウィジェット」に関係するユーザ中心型ファクトに加えてユーザの上司であるAliceとのユーザの対話に関連するユーザ中心型ファクトを含み得る。
【０１２０】
[00130]  クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づき、電子メールプログラムはユーザ中心型ファクトのサブセットに基づく１つ又は複数の提案を表示することができる。例えば電子メールプログラムは、ユーザが電子メールの作成中に参考にしたい及び／又は電子メールに添付したい可能性がある１つ又は複数の関連ファイル、例えば「ウィジェット報告」スプレッドシートファイル及び「ウィジェット開発メモ」文書ファイルを表示することができる。或いは又は加えて、電子メールプログラムは「ウィジェット」に関する週次報告及び／又は「ウィジェット」全般に関し得るユーザのウェブ検索履歴から１つ又は複数のリンクを表示することができる。或いは又は加えて、電子メールプログラムは１つ又は複数の関連する電子メール、例えば「翌月の推定開発費用を今週の報告に含めてください」というAliceからの電子メールを表示することができる。或いは又は加えて、電子メールプログラムは電子メールに関連し得る他のユーザ、例えばAliceの同僚のBob及び常駐ウィジェットの専門家であるCharlieの１つ又は複数の電子メールアドレスを表示することができる。或いは又は加えて、電子メールプログラムはユーザがAliceとの会議を予定に入れることを提案することができる。電子メールプログラムは、例えばユーザの可用性に関するユーザのユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトに基づいて、及びAliceの可用性に関する企業ナレッジベース内の更なるユーザ中心型ファクトに基づいて特定の会議時間を提案するように構成され得る。
【０１２１】
[00131]  ユーザ中心型ＡＩナレッジベースを利用するように構成されるコンピュータサービスは、図１６に示すコンポーネント及び構成に限定されることなしに任意の適切なやり方で実装し及び／又は構成することができる。従って、図１７はコンピュータサービスがユーザ中心型ＡＩナレッジベースにデータを提供するための例示的方法１７００を示し、図１８はコンピュータサービスがユーザ中心型ＡＩナレッジベースを使用してクエリに応えるための例示的方法１８００を示す。方法１７００及び方法１８００は、ＡＩナレッジベースに適合する任意のコンピュータサービスと共働で、図１６のコンピュータによるパーソナルアシスタント１６００等の任意の適切な計算装置及び／又はコンピュータサービスによって実施することができる。
【０１２２】
[00132]  １７０１で、図１７の方法１７００は、コンピュータサービスの特定のユーザに関連するユーザ入力のコンピュータ可読表現を認識することを含む。
【０１２３】
[00133]  任意選択的に一部の例では、１７０２で、図１６のコンピュータによるパーソナルアシスタント１６００の自然言語ユーザインタフェース１６１０等の自然言語ユーザインタフェースによってユーザ入力を受け付ける。一部の例では、ユーザ入力を特定のユーザに関連付けるように構成される、図１６の識別マシン１６３０等の識別マシンによってコンピュータサービスの特定のユーザが認識される。
【０１２４】
[00134]  任意選択的に一部の例では１７０３で、ユーザ入力に基づき、ユーザ入力のコンピュータ可読表現をＮＬＰマシンによって出力する。例えば図１６に示すコンピュータによるパーソナルアシスタント１６００は、ユーザ入力のコンピュータ可読表現をＮＬＰマシン１６２０によって出力するように構成され得る。
【０１２５】
[00135]  １７０４で、方法１７００は、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型ＡＩナレッジベースを更新することを含む。「新たなユーザ中心型ファクト」は、本明細書ではユーザ中心型ＡＩナレッジベース内にまだ含まれていない任意のユーザ中心型ファクト、例えばユーザ中心型ＡＩナレッジベース内の他の如何なるユーザ中心型ファクトにもまだ含まれていない主語及び／又は目的語を含むユーザ中心型ファクト、又はユーザ中心型ＡＩナレッジベース内の主語と目的語との間の新たなエッジを含むユーザ中心型ファクトを指すために使用する。「更新済みのユーザ中心型ファクト」は、本明細書ではユーザ中心型ＡＩナレッジベース内で既に規定されていたユーザ中心型ファクトの修正、例えば１つ又は複数の新たなタグ及び／又はエンリッチメントを含めるためのユーザ中心型ファクトの修正を指すために使用する。一部の例では、ユーザ中心型ＡＩナレッジベースが、図１６のナレッジベース更新マシン１６５０等のナレッジベース更新マシンによって更新される。
【０１２６】
[00136]  任意選択的に一部の例では、１７０５で、新たな又は更新済みのユーザ中心型ファクトはユーザ入力のコンピュータ可読表現に基づくエンリッチメントを含む。例えば図１６のコンピュータによるパーソナルアシスタント１６００は、ユーザ入力のコンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタを含む。他の例では、コンピュータサービスが如何なるエンリッチメントアダプタも含まなくてもよいが、それでもなお新たな又は更新済みのユーザ中心型ファクトはエンリッチメントを含むことができ、例えばエンリッチメントはユーザ中心型ＡＩナレッジベースの実装に含まれるグラフ記憶マシンのエンリッチメントアダプタによって新たな又は更新済みのユーザ中心型ファクトに追加され得る。
【０１２７】
[00137]  １７０６で、複数の異なるコンピュータサービスによって使用可能な更新プロトコル（例えば図１４に関して上記で説明した更新ＡＰＩ）によってユーザ中心型ＡＩナレッジベースを更新することができる。１７０７で、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約することができる。例えば図１６のコンピュータによるパーソナルアシスタント１６００は、更新ＡＰＩによってユーザ中心型ＡＩナレッジベースを更新するように構成されるナレッジベース更新マシン１６５０を含む。
【０１２８】
[00138]  図１８は、コンピュータサービスがユーザ中心型ＡＩナレッジベースを使用してクエリに応えるための例示的方法１８００を示す。
【０１２９】
[00139]  １８０１で、方法１８００は、コンピュータサービスの特定のユーザに関連するクエリのコンピュータ可読表現を認識することを含む。一部の例では特定のユーザが識別マシン、例えば図１６の識別マシン１６３０によって認識され得る。一部の例では、特定のユーザがコンピュータサービスに関連するログイン情報に基づいて、及び／又はコンピュータサービスを実行するコンピュータ装置（例えば携帯電話）のユーザの所有権に基づいて認識され得る。
【０１３０】
[00140]  任意選択的に１８０２で、クエリは自然言語ユーザインタフェース、例えば図１６の自然言語ユーザインタフェース１６１０によって受け付けられるユーザクエリである。従って１８０３で、ユーザクエリに基づき、クエリのコンピュータ可読表現を図１６のＮＬＰマシン１６２０等のＮＬＰマシンによって出力することができる。一部の例では、クエリがユーザクエリの自然言語特徴に基づく、例えばユーザクエリから認識される意図、トピック、及び／又はエンティティに基づく制約を含む。例えば「ウィジェットの専門家は誰ですか」とユーザが尋ねた場合、クエリは回答が「ウィジェット」に関係すべきであることを示すグラフコンテキスト制約を含むことができ、ユーザの意図が特定の人を探すことであったと認識することに基づき、回答の種類の制約は主語及び／又は目的語が人であるユーザ中心型ファクトを回答が含むべきであることを示す。
【０１３１】
[00141]  一部の例では、クエリがユーザの現在のコンテキストを決定するためのユーザコンテキストクエリでもよく、従ってユーザ中心型ファクトのサブセットは現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトを含み得る。一部の例ではクエリがコンピュータサービスの状態を示すことができ、従って現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトはコンピュータサービスの状態に関係するユーザ中心型ファクトを含み得る。一部の例では、方法１８００は、コンピュータサービスの状態によって規定される自然言語特徴のコンピュータ可読表現を認識することを更に含み、従って１つ又は複数の制約は自然言語特徴に基づく制約を含む。一部の例では、自然言語特徴のコンピュータ可読表現を認識することが、図１６のＮＬＰマシン１６２０等のＮＬＰマシンによって実行され得る。
【０１３２】
[00142]  １８０４で、方法１８００は、複数の異なるコンピュータサービスによって使用可能なクエリプロトコル（例えば図１５に関して上記で説明したクエリＡＰＩ）によって特定のユーザに関連するユーザ中心型ＡＩナレッジベースをクエリすることを含む。一部の例では、ユーザ中心型ＡＩナレッジベースをクエリすることが、図１６のナレッジベースクエリマシン１６６０等のナレッジベースクエリマシンによって実行され得る。
【０１３３】
[00143]  １８０５で、複数の異なるコンピュータサービスによって使用可能な更新プロトコル（例えば図１４に関して上記で説明した更新ＡＰＩ）によって新たな又は更新済みのユーザ中心型ファクトを含むようにユーザ中心型ＡＩナレッジベースを更新可能であり得る。１８０６で、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約することができる。
【０１３４】
[00144]  １８０７で、方法１８００は、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力することを含む。
【０１３５】
[00145]  １８０８で、方法１８００は、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションをコンピュータサービス又は共働コンピュータサービスに実行させることを任意選択的に含む。ユーザを支援するためのアクションをコンピュータサービスに実行させることは、ユーザを支援するためのアクションをコンピュータサービス又は共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を出力することを含み得る。
【０１３６】
[00146]  一部の例では、ユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットに基づく応答が出力サブシステム、例えば図１６の出力サブシステム１６７０によって出力される。例えば出力サブシステム１６７０は、共働コンピュータサービスを実装する共働コンピュータ装置にコンピュータネットワークを介して通信可能に結合される通信サブシステムを含み得る。従ってコンピュータ可読命令を出力することは、コンピュータネットワークを介して共働コンピュータ装置にコンピュータ可読命令を送信することを含み得る。一部の例では出力サブシステム１６７０がディスプレイ装置を含むことができ、コンピュータ可読命令はコンピュータサービスの状態データの表示をディスプレイ装置に視覚的に提示させるように構成することができ、状態データはクエリによって規定される１つ又は複数の制約を満たすユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトのサブセットに関係する。或いは又は加えて、出力サブシステム１６７０はスピーカを含むことができ、コンピュータ可読命令はコンピュータサービスの状態データを表す会話音声を生成するように、及び会話音声をスピーカに出力させるように構成され得る。
【０１３７】
[00147]  一部の例では、コンピュータサービスが（例えば方法１７００に従って、又はユーザ中心型ＡＩナレッジベースの更新プロトコルを使用する他の任意の適切なやり方で）ユーザ中心型ＡＩナレッジベースにファクトを自動で提供することができる。例えばコンピュータサービスは、コンピュータサービスのユーザのコンテキストに関係し得るファクトを提供するためにコンピュータサービスのセンサデータ及び／又は状態データ、例えばユーザの位置を示すＧＰＳデータ及び現在時間を示すクロックデータを継続的にモニタすることができる。或いは又は加えて、一部の例ではコンピュータサービスが（例えば方法１８００に従って、又はユーザ中心型ＡＩナレッジベースのクエリプロトコルを使用する他の任意の適切なやり方で）ユーザ中心型ＡＩナレッジベースによって応えられるクエリを自動で発行することができる。例えばコンピュータサービスはユーザのコンテキストをモニタするために、スケジュールに従ってユーザコンテキストクエリを（例えばコンテキストに関係するアクションを自動で実行するために）繰り返し発行することができる。
【０１３８】
[00148]  コンピュータによるパーソナルアシスタント１６００は、（例えばユーザに情報を提供することによって、又はユーザのためにタスクを自動で実行することによって）広範な支援をユーザに提供することができる。一例ではコンピュータによるパーソナルアシスタント１６００は、電子メールプログラム及びユーザ１６９０に属するユーザ装置（例えば携帯電話）の位置を示す全地球測位システム（ＧＰＳ）データを出力するように構成されるセンサモニタリングプログラムを含む他の複数のコンピュータサービスと共働するように構成され得る。コンピュータによるパーソナルアシスタント１６００、電子メールプログラム、及びセンサモニタリングプログラムは、例えば方法１７００に従ってユーザ中心型ＡＩナレッジベースに１つ又は複数のユーザ中心型ファクトをそれぞれ提供することができる。例えば電子メールプログラムは、ユーザが電子メールを送信する度にユーザ中心型ＡＩナレッジベースに新たなユーザ中心型ファクトを提供することができる。新たなユーザ中心型ファクトは、ユーザ１６９０の正体を示す目的語グラフノード、電子メールの受信者を示す主語グラフノード、及び「電子メール送信済み」の関係を示すエッジを含み得る。新たなユーザ中心型ファクトは１つ又は複数のエンリッチメント、例えば電子メールの認識されたトピック及び電子メールが送信された時間を示すタイムスタンプを示すエンリッチメントを含むことができる。センサモニタリングプログラムは、例えばユーザの携帯電話の位置を継続的にモニタし、ユーザの携帯電話の位置が変わる度にユーザの携帯電話の位置及び対応するタイムスタンプを示す新たなユーザ中心型ファクトを提供することにより、ユーザ中心型ＡＩナレッジベースに１つ又は複数の新たなユーザ中心型ファクトを提供することもできる。従ってユーザ中心型ＡＩナレッジベースは、ユーザ１６９０の携帯電話の位置を示す複数のユーザ中心型ファクト、及びユーザ１６９０が送信した各電子メールを示す複数のユーザ中心型ファクトを含むことができる。
【０１３９】
[00149]  更にユーザ中心型ＡＩナレッジベースは、電子メールプログラムによって追加される新たなユーザ中心型ファクト及びセンサモニタリングプログラムによって追加される新たなユーザ中心型ファクトのエンリッチメントに基づく追加のユーザ中心型ファクト（例えばグラフ記憶コンピュータ１３０１によって追加される）を含むことができる。例えばユーザ中心型ＡＩナレッジベースは、電子メールに関連するタイムスタンプとセンサモニタリングプログラムによって提供されるファクトに関連するタイムスタンプとを比較することに基づき、電子メールが特定の位置から送信された可能性が高いことを示す更なるファクトを含み得る。
【０１４０】
[00150]  コンピュータによるパーソナルアシスタント１６００は、ユーザ１６９０の職場の位置を突き止めるために、（例えば方法１８００により）ユーザ中心型ＡＩナレッジベースによって応えられるクエリを後で発行することができる。例えばそのクエリは、「仕事関連の電子メール」を示すグラフコンテキスト制約、及び「位置」を示す回答の種類の制約を含むことができる。従って、クエリに応じて選択されるユーザ中心型ファクトのサブセットは、ユーザ１６９０が１つ又は複数の仕事関連の電子メールを送信した可能性がある位置を含み得る。ユーザ中心型ファクトのサブセットに基づき、コンピュータによるパーソナルアシスタント１６００は仕事関連の電子メールの大部分が特定の位置から特定の時間範囲内で送信されていたことを認識することができる。従ってコンピュータによるパーソナルアシスタント１６００は、ユーザ１６９０の職場の位置及びユーザ１６９０の仕事のスケジュールを認識することができる。
【０１４１】
[00151]  後に同様のやり方で、ユーザ中心型ＡＩナレッジベースは、ユーザ１６９０が特定の位置から夜に（例えば自分の携帯電話上で）アラームを頻繁に設定し、翌朝にそのアラームを止めることを示すユーザ中心型ファクトを含むことができる。従ってコンピュータによるパーソナルアシスタント１６００は、アラームの位置及びタイミングに関するクエリを発行することができる。クエリへの応答に基づき、コンピュータによるパーソナルアシスタント１６００はユーザ１６９０の自宅位置及びユーザ１６９０の睡眠スケジュールを認識することができる。
【０１４２】
[00152]  コンピュータによるパーソナルアシスタント１６００は、（例えば方法１７００に従ってクエリを発行することにより）ユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトの１つ又は複数の側面を認識することに基づいて様々なタスクでユーザを自動で支援可能であり得る。例えばコンピュータによるパーソナルアシスタント１６００が上記のようにユーザ１６９０の仕事及び睡眠のスケジュールを認識する場合、コンピュータによるパーソナルアシスタント１６００は、ユーザの典型的なスケジューリングの基本設定に従ってユーザのためにアラームをデフォルトで設定可能であり得る。
【０１４３】
[00153]  図１６に示すような一部の例では、コンピュータによるパーソナルアシスタント１６００は、ユーザ中心型ファクトの１つ又は複数の側面に基づいてユーザクエリに対する高度な応答を提供可能であり得る。例えばユーザ１６９０は、会話の吹き出し１６９１に示すように「職場の近くにあるいいレストランは何処ですか」とコンピュータによるパーソナルアシスタント１６００に尋ねることができる。それに応じてコンピュータによるパーソナルアシスタント１６００は（例えば方法１８００に従って１８０１で）クエリのコンピュータ可読表現を認識することができる。コンピュータによるパーソナルアシスタント１６００は、ユーザ中心型ＡＩナレッジベースによって応えられるクエリを（例えば１８０４で説明したように複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによって）発行することができる。クエリは、「職場の近く」を示すグラフコンテキスト制約及び「レストラン」を示す回答の種類の制約を含むことができる。従ってコンピュータによるパーソナルアシスタント１６００は、グラフコンテキスト制約及び回答の種類の制約を満たすユーザ中心型ファクトのサブセットに基づいて（例えば１８０７で説明したように）クエリへの応答を出力することができる。例えばコンピュータによるパーソナルアシスタント１６００は、ユーザ１６９０の職場の便利な距離の範囲内にある１つ又は複数のレストランを提案することができる。
【０１４４】
[00154]  一部の例では、コンピュータによるパーソナルアシスタント１６００が、ユーザ１６９０の基本設定に従って選択を行うためにユーザ１６９０に更に多くの情報を要求することができる。例えばユーザ１６９０が職場の近くのいいレストランを探すように尋ねる場合、クエリに応じて選択されるユーザ中心型ファクトのサブセットは同様の距離内にある複数の異なるレストランを示すことができる。従って、コンピュータによるパーソナルアシスタント１６００は特定のレストランを示す、例えば会話の吹き出し１６９２内に示す「「ブリトーのレストラン」はどうですか」という、続いての質問を尋ねることができる。
【０１４５】
[00155]  一部の例では、コンピュータによるパーソナルアシスタント１６００が、（例えば方法１７００及び１８００に従って）ユーザクエリに回答する過程でユーザ中心型ＡＩナレッジベースに１つ又は複数の追加のユーザ中心型ファクトを提供することができる。例えばユーザ１６９０は、会話の吹き出し１６９３内に示すように「私はブリトーが好きではありません」と言うことにより、「「ブリトーのレストラン」はどうですか」（会話の吹き出し１６９２に示す）という質問に回答することができる。従って、コンピュータによるパーソナルアシスタント１６００はユーザがブリトーを好きではないことを示す新たなファクトをユーザ中心型ＡＩナレッジベースに追加することができる。
【０１４６】
[00156]  ユーザの好みを満たすレストランの選択を決定するために、コンピュータによるパーソナルアシスタント１６００は続いての、例えば会話の吹き出し１６９４内に示す「「寿司のレストラン」はどうですか」という追加の質問を尋ねることができる。ユーザ１６９０が会話の吹き出し１６９５内に示すように「はい、仕事後の席を予約してください」と答える場合、コンピュータによるパーソナルアシスタント１６００はユーザ１６９０の仕事のスケジュールを認識することに基づいて予約を行う時間を推論することができる。
【０１４７】
[00157]  ユーザ１６９０の仕事のスケジュールを考慮することに加えて、ユーザ中心型ＡＩナレッジベースはコンピュータによるパーソナルアシスタント１６００が他の潜在的に関連する要素、例えばユーザ中心型ＡＩナレッジベース内に含まれる１つ又は複数のユーザ中心型ファクトに関連する要素を考慮することを可能にし得る。例えばユーザ中心型ＡＩナレッジベースはユーザ１６９０が一般に食事をとることを好む時間を表すユーザ中心型ファクトを含み得る。一部の例では、ユーザ中心型ＡＩナレッジベースはユーザ中心型ナレッジベース外の追加のファクトに基づいて決定される要素、例えばユーザの位置に関連するＧＰＳデータ及び認識済みの仕事のスケジュールに基づいて割り出されるユーザ１６９０の職場から「寿司のレストラン」までの予測移動時間を考慮することができる。例えばコンピュータによるパーソナルアシスタント１６００は地理位置情報及び移動計画機能を提供する地図サービスのＡＰＩによって予測移動時間を割り出すように構成され得る。
【０１４８】
[00158]  ユーザ１６９０が一般に職場を離れる時間、ユーザ１６９０が一般に食事をとることを好む時間、及びユーザ１６９０の職場から「寿司のレストラン」までの予測移動時間に基づき、コンピュータによるパーソナルアシスタント１６００は適切な予約時間、例えば６ＰＭを求めることができる。従って、一連のユーザクエリ及びユーザ入力に応答し、コンピュータによるパーソナルアシスタントは会話の吹き出し１６９６内にあるように予約が行われたことを確認するための応答を（例えば方法１８００に従って１８０７で）出力することができる。更にコンピュータによるパーソナルアシスタント１６００は、（例えば方法１８００に従って１８０８で）ユーザを支援するためのアクションをコンピュータによるパーソナルアシスタント１６００及び／又は他の共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を出力することができる。例えばコンピュータによるパーソナルアシスタント１６００は、（例えば予約を行うためのＡＰＩを提供するレストラン予約サービスによって）予約を手配するように構成されるコンピュータ可読命令を出力することができる。加えてコンピュータによるパーソナルアシスタント１６００は、ユーザ中心型ＡＩナレッジベースに追加することができる１つ又は複数の新たな、即ちユーザ１６９０が寿司を好きであるというユーザ中心型ファクトを認識することができる。
【０１４９】
[00159]  ユーザ１６９０と対話しユーザ１６９０を支援することに基づき、コンピュータによるパーソナルアシスタント１６００及び他のコンピュータサービスはユーザ中心型ＡＩナレッジベースに新たなユーザ中心型ファクトを継続的に追加し、ユーザ中心型ＡＩナレッジベース内のユーザ中心型ファクトに基づいて十分な情報を得た上での決定を行うためにクエリを発行することができる。従って、ユーザ中心型ＡＩナレッジベースはコンピュータによるパーソナルアシスタント１６００及び他のコンピュータサービスが継続的に改善すること、及びユーザ１６９０の好みに従ってユーザ１６９０に支援を提供することを可能にし得る。
【０１５０】
[00160]  一部の例ではコンピュータによるパーソナルアシスタント１６００は、各クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づき、ユーザ１６９０を支援するためのアクションを自動で実行するために（例えばスケジュールに従って）一連のクエリを自動で発行することができる。例えばユーザ１６９０が「寿司のレストラン」のレストラン予約を６：００ＰＭにしている場合、コンピュータによるパーソナルアシスタント１６００は５：３０ＰＭから６：００ＰＭの間にユーザコンテキストクエリを２分間隔で繰り返し発行するように構成され得る。ユーザコンテキストクエリは現在時間、ユーザ１６９０の現在の活動、及び／又はＧＰＳデータに基づくユーザの位置に関係する制約を含むことができ、ユーザコンテキストクエリに応じて選択されるユーザ中心型ファクトのサブセットは、例えばタイムスタンプ及び位置情報の類似性に基づくレストランの予約に関係する１つ又は複数のユーザ中心型ファクトを含むことができる。後にユーザ１６９０は５：５０ＰＭに職場を離れ、「寿司のレストラン」に向けて移動することができる。従ってコンピュータによるパーソナルアシスタント１６００は、ユーザ１６９０がレストランに近づいていることを認識し、関連情報、例えば予約の確認、レストランのメニュー、及び目的地までの方向を示す地図を視覚的に提示することによってユーザ１６９０を自動で支援することができる。
【０１５１】
[00161]  一部の実施形態では、本明細書に記載の方法及びプロセスは１つ又は複数の計算装置の計算システムに結び付けることができる。具体的には、かかる方法及びプロセスはコンピュータアプリケーションプログラム又はサービス、アプリケーションプログラミングインタフェース（ＡＰＩ）、ライブラリ、及び／又は他のコンピュータプログラム製品として実装することができる。
【０１５２】
[00162]  図１９は、上記の方法及びプロセスの１つ又は複数を遂行することができる計算システム１９００の非限定的な実施形態を概略的に示す。例えば計算システム１９００は、グラフ記憶マシン１３０１、アプリケーション固有データプロバイダコンピュータ１３２１、又はユーザコンピュータ１３４０として働くことができる。一部の例では、計算システム１９００が（例えば方法１７００若しくは方法１８００に従って、又はユーザ中心型ＡＩナレッジベースの更新プロトコル及び／又はクエリプロトコルを用いる他の任意の適切なやり方で）ユーザ中心型ＡＩナレッジベースを使用するように構成される、コンピュータによるパーソナルアシスタント１６００又は他の任意のコンピュータサービスの機能を提供し得る。計算システム１９００は単純化した形式で図示してある。計算システム１９００は、１つ又は複数のパーソナルコンピュータ、サーバコンピュータ、タブレットコンピュータ、家庭用娯楽コンピュータ、ネットワーク計算装置、ゲーム機、モバイル計算装置、モバイル通信装置（例えばスマートフォン）、及び／又は他の計算装置の形を取り得る。
【０１５３】
[00163]  計算システム１９００は、論理マシン１９０１及び記憶マシン１９０２を含む。計算システム１９００は、ディスプレイサブシステム１９０３、入力サブシステム１９０４、通信サブシステム１９０５、及び／又は図１９に不図示の他のコンポーネントを任意選択的に含み得る。
【０１５４】
[00164]  論理マシン１９０１は、命令を実行するように構成される１つ又は複数の物理装置を含む。例えば論理マシンは、１つ又は複数のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、又は他の論理構造の一部である命令を実行するように構成され得る。かかる命令は、タスクを実行するために、データ型を実装するために、１つ又は複数のコンポーネントの状態を変えるために、技術的効果を実現するために、或いは所望の結果に到達するために実装され得る。
【０１５５】
[00165]  論理マシンは、ソフトウェア命令を実行するように構成される１つ又は複数のプロセッサを含み得る。加えて又は或いは、論理マシンはハードウェア又はファームウェア命令を実行するように構成される１つ又は複数のハードウェア又はファームウェア論理マシンを含むことができる。論理マシンのプロセッサはシングルコア又はマルチコアとすることができ、そこで実行される命令は逐次処理、並列処理、及び／又は分散処理に関して構成され得る。論理マシンの個々のコンポーネントは、離れて位置し及び／又は協調処理について構成され得る２つ以上の別個の装置間に任意選択的に分散され得る。論理マシンの側面は仮想化し、クラウドコンピューティング構成内で構成される遠隔アクセス可能なネットワーク化された計算装置によって実行され得る。
【０１５６】
[00166]  記憶マシン１９０２は、本明細書に記載の方法及びプロセスを実施するために論理マシンによって実行可能な命令を保持するように構成される１つ又は複数の物理装置を含む。かかる方法及びプロセスを実施するとき、例えば様々なデータを保持するように記憶マシン１９０２の状態を変えることができる。
【０１５７】
[00167]  記憶マシン１９０２は、リムーバブル装置及び／又は組み込み装置を含み得る。記憶マシン１９０２は、とりわけ光学メモリ（例えばＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、Blu-Rayディスク等）、半導体メモリ（例えばＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）、及び／又は磁気メモリ（例えばハードディスクドライブ、フロッピディスクドライブ、テープドライブ、ＭＲＡＭ等）を含み得る。記憶マシン１９０２は、揮発性、不揮発性、動的、静的、リード／ライト、読み取り専用、ランダムアクセス、逐次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、及び／又はコンテンツアドレス指定可能な装置を含み得る。
【０１５８】
[00168]  記憶マシン１９０２は１つ又は複数の物理装置を含むが、本明細書に記載の命令の側面は有限時間にわたり物理装置によって保持されない通信媒体（例えば電磁信号、光信号等）によって代わりに伝搬されてもよい。
【０１５９】
[00169]  論理マシン１９０１及び記憶マシン１９０２の側面は、１つ又は複数のハードウェア論理コンポーネントへと統合することができる。かかるハードウェア論理コンポーネントは、例えば書換可能ゲートアレイ（ＦＰＧＡ）、プログラム固有集積回路及び特定用途向け集積回路（ＰＡＳＩＣ／ＡＳＩＣ）、プログラム固有標準製品及び特定用途向け標準製品（ＰＳＳＰ／ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、及び複合プログラム可能論理装置（ＣＰＬＤ）を含み得る。
【０１６０】
[00170]  「モジュール」、「プログラム」、及び「エンジン」という用語は、特定の機能を実行するために実装される計算システム１９００の側面を表すために使用する場合がある。一部の事例では、モジュール、プログラム、又はエンジンが、記憶マシン１９０２によって保持される命令を実行する論理マシン１９０１によってインスタンス化され得る。「マシン」という用語は、かかるモジュール、プログラム、又はエンジンをインスタンス化する１つ又は複数の論理マシンを表すために使用する場合がある。例えば本明細書に記載の自然言語処理マシンは、生のユーザ入力（例えばマイクロフォンによって検出される会話音声）を下流での処理により適した入力のコンピュータ可読表現へと変換するソフトウェア、ファームウェア、又はハードウェア命令を実行するＡＳＩＣ又は汎用プロセッサの形を取り得る。様々なモジュール、プログラム、及び／又はエンジンが、同じマシン上に及び／又は同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、ＡＰＩ、機能等からインスタンス化され得ることが理解されよう。同様に、同じモジュール、プログラム、及び／又はエンジンが２つ以上の異なるマシンにわたって、及び／又は様々なアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、ＡＰＩ、機能等によってインスタンス化され得る。「モジュール」、「プログラム」、及び「エンジン」という用語は、実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコード等のそれぞれ又はグループを包含し得る。
【０１６１】
[00171]  含まれる場合、ディスプレイサブシステム１９０３は記憶マシン１９０２によって保持されるデータの可視表現を提示するために使用され得る。この可視表現はグラフィカルユーザインタフェース（ＧＵＩ）の形を取り得る。本明細書に記載の方法及びプロセスは記憶マシンによって保持されるデータを変更し、従って記憶マシンの状態を変えるので、基礎を成すデータの変化を視覚的に表すようにディスプレイサブシステム１９０３の状態も同様に変えることができる。ディスプレイサブシステム１９０３は、事実上あらゆる種類の技術を利用する１つ又は複数のディスプレイ装置を含み得る。かかるディスプレイ装置は、共用エンクロージャ内で論理マシン１９０１及び／又は記憶マシン１９０２と組み合わせることができ、又は周辺ディスプレイ装置とすることができる。
【０１６２】
[00172]  含まれる場合、入力サブシステム１９０４はキーボード、マウス、タッチスクリーン、又はゲームコントローラ等の１つ又は複数のユーザ入力装置を含む、又はそれらとインタフェースすることができる。一部の実施形態では、入力サブシステムが選択されたナチュラルユーザ入力（ＮＵＩ）コンポーネントを含む、又はかかるＮＵＩコンポーネントとインタフェースすることができる。かかるコンポーネントは統合されたものでも周辺装置でもよく、入力アクションの変換及び／又は処理はオンボード又はオフボードで処理することができる。ＮＵＩコンポーネントの例は、会話及び／又は音声認識用のマイクロフォン、マシンビジョン及び／又はジェスチャ認識用の赤外線、カラー、立体、及び／又はデプスカメラ、運動検出及び／又は意図認識用のヘッドトラッカ、アイトラッカ、加速度計、及び／又はジャイロスコープ、並びに脳活動を評価するための電場感知コンポーネントを含み得る。
【０１６３】
[00173]  含まれる場合、通信サブシステム１９０５は計算システム１９００を１つ又は複数の他の計算装置と通信可能に結合するように構成され得る。通信サブシステム１９０５は、１つ又は複数の異なる通信プロトコルに適合する有線及び／又は無線通信装置を含み得る。非限定的な例として、通信サブシステムは無線電話網又は有線若しくは無線のローカルネットワーク若しくは広域ネットワークによる通信のために構成され得る。一部の実施形態では、通信サブシステムは、計算システム１９００がインターネット等のネットワークを介して他の装置との間でメッセージを送受信することを可能にし得る。
【０１６４】
[00174]  一例では、コンピュータによるパーソナルアシスタントが、ユーザ入力を受け付けるように構成される自然言語ユーザインタフェースと、ユーザ入力のコンピュータ可読表現を出力するように構成される自然言語処理マシンと、ユーザ入力を特定のユーザに関連付けるように構成される識別マシンと、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型人工知能ナレッジベースを更新するように構成されるナレッジベース更新マシンであって、ナレッジベース更新マシンは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによってユーザ中心型人工知能ナレッジベースを更新し、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する、ナレッジベース更新マシンを含む。この例又は他の任意の例において、コンピュータによるパーソナルアシスタントは、ユーザ入力のコンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタを更に含み、新たな又は更新済みのユーザ中心型ファクトはエンリッチメントアダプタによって出力されるエンリッチメントを含む。この例又は他の任意の例において、ユーザ中心型人工知能ナレッジベースは１つ又は複数の暗号化ユーザ中心型ファクトを含み、１つ又は複数の暗号化ユーザ中心型ファクトへのアクセスは特定のユーザに関連する資格情報によって制約される。この例又は他の任意の例において、コンピュータによるパーソナルアシスタントは、特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリするように、及びクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力するように構成されるナレッジベースクエリマシンを更に含む。この例又は他の任意の例において、ナレッジベースクエリマシンは、複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによってユーザ中心型人工知能ナレッジベースをクエリするように構成される。この例又は他の任意の例において、自然言語ユーザインタフェースはユーザクエリを受け付けるように更に構成され、自然言語処理マシンはユーザクエリに基づいてクエリのコンピュータ可読表現を出力するように更に構成される。この例又は他の任意の例において、自然言語処理マシンはユーザクエリに基づいて認識済みのユーザの意図を出力するように更に構成され、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約は認識済みのユーザの意図に基づく制約を含む。この例又は他の任意の例において、クエリはユーザの現在のコンテキストを決定するためのユーザコンテキストクエリであり、ユーザ中心型ファクトのサブセットは現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトを含む。この例又は他の任意の例において、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約は回答の種類の制約を含み、ユーザ中心型ファクトのサブセットは回答の種類の制約を満たすユーザ中心型ファクトだけを含む。この例又は他の任意の例において、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約はグラフコンテキスト制約を含み、ユーザ中心型ファクトのサブセットはグラフコンテキスト制約を満たすユーザ中心型人工知能ナレッジベース内のコンテキスト化ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含む。この例又は他の任意の例において、ナレッジベースクエリマシンによって出力される応答は、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションを共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を含む。この例又は他の任意の例において、ユーザを支援するためのアクションは、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて共働コンピュータサービスの優先設定を変更することを含む。この例又は他の任意の例において、ユーザを支援するためのアクションは、共働コンピュータサービスの状態データの表現を視覚的に提示することを含み、状態データはクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに関係する。
【０１６５】
[00175]  一例では、コンピュータによるパーソナルアシスタントが、ユーザクエリを受け付けるように構成される自然言語ユーザインタフェースと、ユーザクエリを特定のユーザに関連付けるように構成される識別マシンと、ユーザクエリのコンピュータ可読表現を出力するように構成される自然言語処理マシンと、特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリするように、及びユーザクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザクエリに対する応答を出力するように構成されるナレッジベースクエリマシンであって、ユーザ中心型人工知能ナレッジベースは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによって新たな又は更新済みのユーザ中心型ファクトを含むように更新可能であり、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する、ナレッジベースクエリマシンを含む。
【０１６６】
[00176]  一例では、クエリに自動で応答するための方法が、コンピュータサービスの特定のユーザに関連するクエリのコンピュータ可読表現を認識すること、複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによって特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリすること、及びクエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力することを含み、ユーザ中心型人工知能ナレッジベースは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによって新たな又は更新済みのユーザ中心型ファクトを含むように更新可能であり、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する。この例又は他の任意の例において、コンピュータサービスはコンピュータによるパーソナルアシスタントである。この例又は他の任意の例において、クエリはユーザの現在のコンテキストを決定するためのユーザコンテキストクエリであり、ユーザ中心型ファクトのサブセットは現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトを含む。この例又は他の任意の例において、クエリはコンピュータサービスの状態を示し、現在のコンテキストに関係する１つ又は複数のユーザ中心型ファクトはコンピュータサービスの状態に関係するユーザ中心型ファクトを含む。この例又は他の任意の例において、この方法は、コンピュータサービスの状態によって規定される自然言語特徴のコンピュータ可読表現を認識することを更に含み、１つ又は複数の制約は自然言語特徴に基づく制約を含む。この例又は他の任意の例において、この方法は、クエリのコンピュータ可読表現によって規定される１つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションをコンピュータサービスに実行させることを更に含む。
【０１６７】
[00177]  本明細書に記載の構成及び／又は手法は本質的に例示であり、数多くの改変形態があり得るので、これらの特定の実施形態又は例は限定的な意味で検討すべきではないことが理解されよう。本明細書に記載した特定のルーチン又は方法は任意の数の処理戦略のうちの１つ又は複数を表し得る。そのため、図示し及び／又は説明した様々な行為を図示し及び／又は説明した順序で実行することができ、他の順序で実行することができ、同時に実行することができ、又は省略することができる。同様に、上記のプロセスの順序は変更することができる。
【０１６８】
[00178]  本開示の内容は、本明細書で開示した様々なプロセス、システム、及び構成、並びに他の特徴、機能、行為、及び／又は特性のあらゆる新規の及び非自明の組み合わせ及びサブコンビネーション、並びにその任意の及び全ての等価物を含む。
【図１Ａ】
2021518007.tif 000003
【図１Ｂ】
2021518007.tif 000004
【図２Ａ】
2021518007.tif 000005
【図２Ｂ】
2021518007.tif 000006
【図３Ａ】
2021518007.tif 000007
【図３Ｂ】
2021518007.tif 000008
【図４Ａ】
2021518007.tif 000009
【図４Ｂ】
2021518007.tif 000010
【図５Ａ】
2021518007.tif 000011
【図５Ｂ】
2021518007.tif 000012
【図６Ａ】
2021518007.tif 000013
【図６Ｂ】
2021518007.tif 000014
【図７Ａ】
2021518007.tif 000015
【図７Ｂ】
2021518007.tif 000016
【図８Ａ】
2021518007.tif 000017
【図８Ｂ】
2021518007.tif 000018
【図９Ａ】
2021518007.tif 000019
【図９Ｂ】
2021518007.tif 000020
【図１０Ａ】
2021518007.tif 000021
【図１０Ｂ】
2021518007.tif 000022
【図１１Ａ】
2021518007.tif 000023
【図１１Ｂ】
2021518007.tif 000024
【図１２Ａ】
2021518007.tif 000025
【図１２Ｂ】
2021518007.tif 000026
【図１３】
2021518007.tif 000027
【図１４】
2021518007.tif 000028
【図１５】
2021518007.tif 000029
【図１６】
2021518007.tif 000030
【図１７】
2021518007.tif 000031
【図１８】
2021518007.tif 000032
【図１９】
2021518007.tif 000033
【国際調査報告】
2021518007.tif 000034
2021518007.tif 000035