詳細な説明
[0015] コンピュータサービスは、ユーザ中心型データを収集し及び/又は分析することによってユーザとの対話を向上させることができる。本明細書で使用するとき、「コンピュータサービス」は、ユーザが直接、又は別のコンピュータサービス、例えば通信プロトコルを実装するソフトウェアアプリケーション、対話型ウェブサイト、若しくはサーバとの対話によって間接的に対話することができる任意のソフトウェア及び/又はハードウェアプロセスを広く指す。本明細書で使用するとき、「ユーザ中心型」は、特定のコンピュータユーザに関連する又は関わる任意のデータ(例えばユーザの関心事、ユーザの結び付き、及びコンピュータサービスとのユーザ対話を表すファクト及び/又はコンピュータデータ構造)を広く指す。
[0016] ユーザ中心型データは人工知能(AI)プログラムへの入力として供給することができ、AIプログラムは供給されるユーザ中心型データを分析することに基づいてユーザとコンピュータとの間の対話の強化をもたらすように構成され得る。例えば対話の強化をもたらすことは、ユーザが行う可能性が高いアクションを予測すること、及びそのアクションを容易にすることを含み得る。しかし、ユーザとコンピュータとの間の対話を意味があるように強化するにはAIプログラムが非常に大量のデータを必要とする。更に、それらのデータは適切なデータ形式で中心的に入手可能でなければならない。
[0017] 例えばコンピュータによるパーソナルアシスタントは、(例えば自然言語ユーザインタフェース等、音声及び/又はテキストの自然言語クエリを受け付けるように構成されるナチュラルユーザインタフェース(NUI)により)ユーザによって出される自然言語クエリを処理するための自然言語処理エンジンを含むことができる。自然言語クエリに応えるために、コンピュータによるパーソナルアシスタントはファクトのナレッジベースを必要とする。一部の実装形態では、「ナレッジベース」は主語−述語−目的語の三つ組として表されるファクトの集合を含み得る。ナレッジベースは、人間によってラベル付けされたデータと、インターネット等の公の情報源から情報を集約するためのデータマイニング技法との組み合わせを使用して生成することができる。ナレッジベースを構築するための過去の手法は、優れた結果を実現するために(例えば複数の異なるユーザのそれぞれについてデータマイニングタスクを実行するための)非常に大きい計算負荷、及び/又は人間による広範な設計及び監視(例えば手作業でラベル付けされるデータ)の原因となった。
[0018] そのため、ナレッジベースを構築し維持するための過去の手法は、コンピュータとのユーザ対話の強化をもたらすためにAIを活用するには適していない場合がある。対照的に本明細書に記載のユーザ中心型AIナレッジベースは、1人又は複数の特定のユーザ(例えば個々のコンピュータユーザ、又は企業コンピュータネットワークのユーザ群)に関係するユーザ中心型ファクトの収集を支援するようにナレッジベースの概念を拡張する。ユーザ中心型AIナレッジベースは、多岐にわたる異なるアプリケーション固有データプロバイダ(例えばコンピュータによるパーソナルアシスタントに関連するデータプロバイダ、及び住所録プログラムに関連するデータプロバイダ)から生じるユーザ中心型ファクトを含み得る。ユーザ中心型AIナレッジベースは、例えば様々なアプリケーションに関連する複数の記憶位置にわたってユーザ中心型ファクトの記憶域を分散させることによって複数のユーザ中心型ファクトを効率的に記憶することができる。更にユーザ中心型AIナレッジベースは、ナレッジベースのAI処理、例えばクエリの回答を容易にし得るユーザ中心型ファクトに対する多岐にわたるアプリケーション非依存エンリッチメントを含み得る。
[0019] 単一のユーザは、ユーザに関する情報をそれぞれ認識し記憶することができる複数の異なるコンピュータサービスと対話することができる。コンピュータサービスはユーザとの対話に関係するデータを集約することができ、複数の異なるコンピュータサービスはユーザに関する大量のデータを共同で集約することができる。複数のコンピュータサービスの各コンピュータサービスは、ユーザに関する情報を異なるアプリケーション固有の位置に記憶することができる。本明細書では「アプリケーション固有」は、任意のコンピュータサービスに固有であることを意味するために使用する。更に、複数のコンピュータサービスの各コンピュータサービスは、ユーザに関するあり得る情報のうち、複数のコンピュータサービスの別のコンピュータサービスによって記憶される情報と異なる限られたサブセットしか認識し記憶することができない。そのため、ユーザに関する情報が複数の異なる記憶位置に分散され得る。
[0020] 更に、コンピュータサービスに関連するアプリケーション固有データはアプリケーション固有の記憶形式で記憶され得る。そのため2つの異なるコンピュータサービスが関連する機能を有しても、コンピュータサービスがデータを共有できない場合がある。一部の事例では、ファーストパーティプロバイダが、記憶形式を共有し得る関連するコンピュータサービスのスイート(例えば文書編集スイート)を提供する。しかし、そのスイート内のコンピュータサービスが互いにデータを共有できても、データを利用してユーザとの対話を強化することは、グローバルナレッジソース(例えばインターネット)、別のサードパーティソフトウェアプロバイダによって提供されるサードパーティソフトウェアアプリケーション、及び/又は(例えば企業ソフトウェアアプリケーションのコンテキストでの、又はソーシャルネットワークアプリケーションのコンテキストでの)他のユーザの使用状況データ等の外部のナレッジソースからのデータに更に依存し得る。
[0021] ソフトウェアプロバイダは、ユーザ中心型AIナレッジベースを構築してユーザとの対話の改善を助けるために、異種の情報源から情報を自動で集約したい場合がある。しかし、AIナレッジベースを構築するための過去の手法は、特定のユーザとの対話のコンテキストで特に利用され得るユーザ中心型データではなくグローバルデータにしか焦点を当てていない。そのためナレッジベースを構築するための過去の手法は、複数のコンピュータサービスのユーザのためのユーザ中心型AIナレッジベースを構築するには適していない。
[0022] 図1Aは、複数の異なるコンピュータサービスに分散されるアプリケーション固有データに関連し得るユーザ中心型ファクトの集合を表すための例示的なグラフデータ構造100を示す。グラフデータ構造100は集中型クエリを可能にし、ユーザ中心型AIナレッジベースを実装するのに適している。
[0023] グラフデータ構造100は複数の異なる構成グラフ構造102、例えば構成グラフA、構成グラフB等を含む。各構成グラフ構造は、異なるコンピュータサービスに関連するアプリケーション固有の構成グラフ構造であり得る。例えばアプリケーション固有の構成グラフ構造Aはスケジュール計画プログラムに関連することができる一方、アプリケーション固有の構成グラフ構造Bは電子メールプログラムに関連し得る。
[0024] 各構成グラフ構造は複数のユーザ中心型ファクト104、例えば構成グラフA内に記憶されるユーザ中心型ファクトFA.1、FA.2等、及び構成グラフB内に記憶されるユーザ中心型ファクトFB.1、FB.1等を含む。ユーザ中心型ファクトは、主語グラフノード106、目的語グラフノード108、及び主語グラフノードを目的語グラフノードに接続するエッジ110を含む。主語グラフノード及び目的語グラフノードは総称してノードと呼ばれ得る。ノードは任意の名詞を表すことができ、「名詞」は任意のエンティティ、イベント、若しくは概念、又は任意の適切なアプリケーション固有情報(例えばコンピュータサービスを使用してユーザによって行われた過去のアクションの詳細)を指すために使用される。同様に「主語名詞」及び「目的語名詞」は、本明細書では主語グラフノード又は目的語グラフノードのそれぞれによって表される名詞を指すために使用される。グラフデータ構造としてユーザ中心型ファクトの集合を表すことは、(例えばクエリに応答するために)グラフデータ構造を操作し横断することを容易にし得る。
[0025] 図1Bにあるように、ユーザ中心型ファクトの集合をグラフ150として可視化することが有益である。図1Bに示すグラフ150では、ノード152を黒丸として示し、エッジ154を矢印として示す。出力エッジ(矢印が黒丸と逆の方を向く)を有する黒丸は主語グラフノードを示すのに対し、入力エッジ(矢印が黒丸の方を向く)を有する黒丸は目的語グラフノードを示す。構成グラフ間のエッジをより大きいグラフ内のエッジと見なすことにより、複数の構成グラフを単一のグラフとして扱うことができる。従って、図1Bは複数の構成グラフ構造を含む単一の複合グラフ150を示す。説明を簡単にするために、グラフ150の一例は12個のノードを有する2つの構成グラフだけを含む。実際の実装形態では、ユーザ中心型グラフは更に多くの構成グラフ間に広がる更に多くの(例えば数百個、数千個、数百万個、又はそれ以上の)ノードを含む。
[0026] 図2A〜図2Bは、特定のユーザ中心型ファクトFA.1に焦点を当てた図1A〜図1Bのグラフデータ構造を示す。図2Aではユーザ中心型ファクトFA.1を太線の矩形で囲んであり、グラフデータ構造の他のユーザ中心型ファクトは詳しく示していない。太線の形は、後続の図面の中で特定のファクトに注意を向けさせるために同様に使用する。ユーザ中心型ファクトFA.1は、主語グラフノードSA.1、エッジEA.1、及び目的語グラフノードOA.1を含む。例えば主語グラフノードSA.1はユーザの雇用主を表すことができ、目的語グラフノードOA.1はユーザの雇用主によってユーザに割り当てられたタスクを表し得る。エッジEA.1は、主語グラフノードSA.1と目的語グラフノードOA.1との間の任意の適切な関係を表すことができる。上記の例では、エッジEA.1が「割り当てられた新規タスク」の関係を表し得る。ユーザ中心型ファクトFA.1の主語−エッジ−目的語の三つ組は、ユーザの雇用主がユーザに新規タスクを割り当てたことを共同で表す。
[0027] 第1のファクトの主語グラフノードは、第2の異なるファクトの目的語グラフノードと同じ名詞を表すことができる。例えば図3A〜図3Bは、ユーザ中心型ファクトFA.3に焦点を当てた図1A〜図2Bの同じグラフデータ構造を示す。ユーザ中心型ファクトFA.3は、主語グラフノードSA.3、エッジEA.3、及び目的語グラフノードOA.3を規定する。目的語グラフノードOA.3は、図2Bの主語グラフノードSA.1と同じ名詞を表すことができる。従ってグラフデータ構造は、図2B及び図3Bの中のグラフ150内の同じ位置に示すファクトFA.3の目的語グラフノードOA.3及びファクトFA.1の主語グラフノードSA.1を単一のノードとして認識することができる。特定の目的語グラフノードと主語グラフノードとが同じ名詞を表すことを認識することにより、グラフデータ構造はユーザ中心型ファクトを複数の異なる名詞間の複雑な関係(complex relationships)として表すことができる場合があり、それらの関係はグラフ150上の経路として可視化され得る。例えば、特定のノードが第1のファクトの目的語グラフノードであり且つ第2の異なるファクトの主語グラフノードである場合、論理的三段論法と類似して2つのファクトの組み合わせから推論を導出することが可能であり得る。
[0028] 第1のユーザ中心型ファクトの主語グラフノードは、第2の異なるユーザ中心型ファクトの主語グラフノードと同じ名詞を表すことができる。2つの異なる主語グラフノードが同じ名詞を表す場合、グラフデータ構造は2つの主語グラフノードを単一のノードとして認識することができる。例えば図4A〜図4Bは、ユーザ中心型ファクトFA.4に焦点を当てた図1A〜図3Bの同じグラフデータ構造を示す。ユーザ中心型ファクトFA.4は、主語グラフノードSA.4、エッジEA.4、及び目的語グラフノードOA.4を規定する。主語グラフノードSA.4は、図3Bの主語グラフノードSA.3と同じ名詞を表すことができる。従ってグラフデータ構造は、図3B及び図4Bの中のグラフ150内の同じ位置に示す単一のノードとして2つの主語グラフノードを認識することができる。主語グラフノードSA.4及びSA.3は単一のノードとして認識できるが、エッジEA.4はエッジEA.3と異なり、同様に目的語グラフノードOA.4は目的語グラフノードOA.3と異なる。従って、主語グラフノードSA.4及びSA.3が同じ名詞を表しても、(SA.4,EA.4,OA.4)の三つ組及び(SA.3,EA.3,OA.3)の三つ組は2つの異なるファクトを表す。
[0029] 同様に、第1のユーザ中心型ファクトの目的語グラフノードは、第2の異なるユーザ中心型ファクトの目的語グラフノードと同じ名詞を表すことができる。換言すれば、同じ名詞が、異なる主語グラフノードを有し且つことによると異なる関係の種類を表すエッジを有する複数の異なるユーザ中心型ファクトの目的語であり得る。例えば図5A〜図5Bは、ユーザ中心型ファクトFA.5に焦点を当てた図1A〜図4Bの同じグラフデータ構造を示す。ユーザ中心型ファクトFA.5は、主語グラフノードSA.5、エッジEA.5、及び目的語グラフノードOA.5を規定する。目的語グラフノードOA.5は、図2Bの目的語グラフノードOA.1と同じ名詞を表すことができる。従ってグラフデータ構造は、図2B及び図5Bの中のグラフ150内の同じ位置に示す単一のノードとして2つの目的語グラフノードを認識することができる。
[0030] 主語名詞と目的語名詞との特定のペアリングが2つ以上の異なるユーザ中心型ファクトに関与し得る。例えば主語名詞及び目的語名詞は、主語グラフノードSA.5、エッジEA.5、及び目的語グラフノードOA.5を含む第1のユーザ中心型ファクトFA.5によって表すことができる。同時に、図6B内のSA.6及びOA.6の位置が図5B内のSA.5及びOA.5のそれぞれの位置と同じであることによって示す通り、図6A〜図6Bに示すように主語グラフノードSA.6が同じ主語名詞を表すことができ、目的語グラフノードOA.6も同じ目的語名詞を表すことができる。従って、主語グラフノードSA.5は第1のエッジEA.5によって目的語グラフノードOA.5に接続され得るのに対し、主語グラフノードSA.6は第2の異なるエッジEA.6によって目的語グラフノードOA.6に接続される。主語グラフノード及び目的語グラフノードと同様に、図6B内のエッジEA.6は図5B内のエッジEA.5と同じ位置に示されている。しかしエッジEA.5及びEA.6は、例えば主語グラフノードと目的語グラフノードとの間の異なる関係を表す異なるエッジである。一例では、主語グラフノードSA.5及びSA.6が(例えば電子メールアドレスによって識別される)第1のユーザアカウントに対応し得る。同じ例において、目的語グラフノードOA.5及びOA.6は第2の異なるユーザアカウントに対応し得る。この例では、エッジEA.5が「電子メール送信済み」の関係を表し得るのに対し、エッジEA.6は異なる「予定された会議」の関係を表す。従ってこのグラフデータ構造は、同じ主語名詞及び目的語名詞を有する2つ以上のユーザ中心型ファクトを含む。
[0031] 他の例では2つの名詞が2つの異なるユーザ中心型ファクトに関与し得るが、主語と目的語との間の役割が入れ替わる。換言すれば、第1の名詞は第1のファクトの主語名詞であり、第2の名詞は第1のファクトの目的語名詞である一方、第1の名詞は第2のファクトの目的語名詞であり、第2の名詞は第2のファクトの主語名詞である。例えば「Alice」及び「Bob」を表す1対の名詞は「AliceがBobとの会議の予定を決めた」という第1のファクトに関与する一方、「BobがAliceとの会議の予定を決めた」という第2のファクトにも関与し得る。主語と目的語の役割を入れ替えることに加えて、2つの名詞を使用する2つのファクトが異なる種類のエッジを有することができ、例えば「Alice」及び「Bob」は「BobがAliceに電子メールを送信した」という第3のファクトに更に関与し得る。
[0032] 上記で説明したように、並びに図1A、図2A、図3A、図4A、図5A、及び図6Aに示すように、グラフデータ構造は(例えば異なるコンピュータサービスに対応する)複数のアプリケーション固有の構成グラフ構造を含む。例えば図7A〜図7Bは、2つの異なるユーザ中心型ファクトFA.6及びFB.1に焦点を当てた図1A〜図6Bの同じグラフデータ構造を示す。ユーザ中心型ファクトFA.6は、主語グラフノードSA.6、エッジEA.6、及び目的語グラフノードOA.6を構成グラフ構造Aの一部として規定する。同様にユーザ中心型ファクトFB.1は、主語グラフノードSB.1、エッジEB.1、及び目的語グラフノードOB.1を構成グラフ構造Bの一部として規定する。
[0033] グラフデータ構造は、或る構成グラフからの名詞及び別の構成グラフからの名詞を単一のノードとして認識することができる。例えば図8A〜図8Bは、ユーザ中心型ファクトFB.3に焦点を当てた図1A〜図7Bの同じグラフデータ構造を示す。ユーザ中心型ファクトFB.3は、主語グラフノードSB.3、エッジEB.3、及び目的語グラフノードOB.3を規定する。目的語グラフノードOB.3は、図2Bの目的語グラフノードOA.1、図5Bの目的語グラフノードOA.5、図7Bの目的語グラフノードOA.5、及び図8Bの目的語グラフノードOB.3と同じ名詞を表すことができる。従ってグラフデータ構造は、図2B、図5B、図7B、及び図8Bの中のグラフ150内の同じ位置に示す単一のノードとして4つの目的語グラフノードを認識することができる。とりわけ目的語グラフノードOB.3は構成グラフ構造B内にあるのに対し、目的語グラフノードOA.1、OA.5、及びOA.5は構成グラフ構造A内にある。2つ以上の異なるノードが同じ名詞に対応するというかかる認識は、本明細書では2つのノード間の「ノード相互参照」と呼ぶ場合がある。特定の名詞を表す主語グラフノード又は目的語グラフノードは、同じ構成グラフ構造又は他の任意の構成グラフ構造の他のノードへのノード相互参照を記憶することができる。
[0034] 同様に、第1の構成グラフ構造内のユーザ中心型ファクトは、第1の構成グラフ構造内の主語グラフノードと共に、第2の異なる構成グラフ構造内の目的語グラフノードを指すエッジ(本明細書では「相互参照エッジ」と呼ぶ)を規定することができる。例えば図9A〜図9Bは、ユーザ中心型ファクトFA.2に焦点を当てた図1A〜図8Bの同じグラフデータ構造を示す。ユーザ中心型ファクトFA.2は、主語グラフノードSA.2及びエッジEAB.2を含む。但しエッジEAB.2は、構成グラフ構造A内の別の目的語グラフノードを指す代わりに目的語グラフノードOB.2を指す。例えば構成グラフB内の目的語グラフノードへの接続を示す構成グラフ識別子、及び構成グラフB内の特定の目的語グラフノードを示す目的語グラフノード識別子を記憶することにより、エッジEAB.2は構成グラフ間の接続を任意の適切なやり方で示すことができる。
[0035] ノード相互参照及び相互参照エッジは複数の構成グラフ構造を接続する。例えばノード相互参照及び相互参照エッジはエッジと同じやり方で横断することができ、複数の構成グラフ構造にわたる経路を横断するようにグラフデータ構造を横断することを可能にする。換言すれば、グラフデータ構造100は、様々なコンピュータサービスからのファクト及び/又は様々なコンピュータサービスにわたるファクトを含む全体的な人工知能ナレッジベースを促進する。ノード相互参照及び相互参照エッジは、本明細書では相互参照とまとめて呼ぶ場合がある。同様に、ノードが複数の構成グラフ構造内で相互参照に関与する場合、そのノードは構成グラフ構造間で相互参照されると言うことができる。
[0036] 更に、2つの異なる構成グラフ構造を相互参照によって接続することに加えて、構成グラフ構造は、構成グラフ構造内の主語グラフノード及び(例えばインターネット、ソーシャルネットワーク、又はネットワーク化された企業ソフトウェアアプリケーションに基づく)外部のナレッジベース内の目的語グラフノードが関与する1つ又は複数のユーザ中心型ファクトを含み得る。相互参照エッジと同様に、外部のグラフ及び外部のグラフ内の目的語グラフノードを示す1対の識別子を記憶することにより、主語グラフノードに接続される出力エッジは外部の目的語グラフノードへの接続を任意の適切なやり方で示すことができる。一部の事例では、例えば外部のグラフがインターネット上で公開されたナレッジから導出されるグローバルナレッジベースである場合、外部のグラフが如何なるユーザ中心型データも記憶しない場合がある。
[0037] 構成グラフ構造間の相互参照を含めることにより、(例えば相互参照及び相互参照エッジによって複数の構成グラフ構造を横断することにより)様々な構成グラフ構造内の及び外部のデータベース内のユーザ中心型ファクト間の関係に関する集中型の推論を引き続き支援しながら、特定の名詞(例えばイベント又はエンティティ)に関するファクトが複数の構成グラフ構造にわたって分散され得る。
[0038] 各ユーザ中心型ファクトは予測可能な共用データ形式で記憶することができ、かかる形式はアプリケーション固有データの形式、コンピュータサービスの変更を必要とすることなしにコンピュータサービスに関連するアプリケーション固有ファクトを含むユーザ中心型ファクトを記憶する。かかる予測可能な共用データ形式は、本明細書では「アプリケーション非依存データ形式」と呼ぶ。アプリケーション非依存データ形式は、アプリケーション固有データの冗長な記憶を回避しながら、ユーザ中心型AIナレッジベースをクエリするのに必要な情報を記憶することができる。グラフデータ構造は、グラフデータ構造への読み書きアクセスを可能にする補完的なアプリケーションプログラミングインタフェース(API)を用いて実装され得る。グラフデータ構造に書き込まれる全てのデータがアプリケーション非依存データ形式にあることを確実にするために、APIはグラフデータ構造へのアクセスを制約することができる。同時にAPIは、グラフデータ構造に新たなユーザ中心型ファクトをアプリケーション非依存データ形式で追加するために任意のコンピュータサービスが使用し得るメカニズムを提供することができ、それにより、グラフデータ構造内に記憶される全てのデータがそのAPIを使用する他のコンピュータサービスによって予測可能に使用され得ることを確実にする。グラフデータ構造内に記憶されるユーザ中心型ファクトへの読み書きアクセスを提供することに加えて、APIは読み出し及び書き込みの両方を含むデータ処理操作、例えばクエリ操作及びクエリ結果のキャッシングを提供することができる。
[0039] 図1Aのグラフデータ構造100等、複数の異なるコンピュータサービスに関係するユーザ中心型ファクトを含むグラフデータ構造を本開示の趣旨から逸脱することなしに様々に実装することができる。図10Aは、名詞ごとにノードレコードを含むノード中心型データ構造200のかかる1つの非限定的な実装形態を概略的に示す。各ノードレコードは、その名詞に関連する1つ又は複数の主語グラフノード及び/又は目的語グラフノードを表す。ノードレコードが主語グラフノードを表す場合、ノードレコードは主語グラフノードを1つ又は複数の目的語グラフノードに接続する出力エッジを更に表す。例えば図10Aは、図1A〜図9Bのデータ構造100の全てのノードを完全に表すのに必要な複数のノードレコードのうちの2つのノードレコードである、ノードレコードNRA[42]及びノードレコードNRA[43]を示す。ユーザ中心型のマルチサービスAIナレッジベースの特徴を広範に紹介するために、より全般的なグラフデータ構造100を上記で説明した。実際には、上記で紹介した全般的な特徴を実装するために、ノード中心型データ構造200等のより効率的なデータ記憶手法を使用することができる。
[0040] ノード中心型データ構造200は、ノードに関連する一貫したノードレコード識別子によって規定されるノードレコード記憶位置において構成グラフ構造の各ノードを記憶する。ノードレコード識別子は、数値及び/又はテキストによる識別子、コンピュータの記憶位置への参照(例えばコンピュータメモリ内のアドレス又はコンピュータディスク上のファイル名)、又は他の任意の適切な識別子(例えば統一資源ロケータ(URL))であり得る。例えばノードレコードNRA[42]は、構成グラフ構造Aの一部であるものとしてノードレコードを識別するノードドメイン識別子「A」を含み、且つ追加の数値識別子42を含むノードレコード識別子「A[42]」によって識別可能であり得る。従ってグラフデータ構造は、「A[42]」の識別子によって規定されるノードレコード記憶位置にノードレコードNRA[42]を記憶することができる。例えばグラフデータ構造は、構成グラフ構造Aに関連するデータベーステーブルの#42の行内にノードレコードNRA[42]を記憶することができる。括弧を用いた命名法、例えばA[42]は例示的であり、ノード中心型データ構造200がより全般的なグラフデータ構造100と同じノード/グラフを最終的に規定する一方、ノードデータ構造200の特定の実装が区別可能であることを強調するために使用していることに留意すべきである。しかし、本明細書に記載のグラフデータ構造は任意の適切な命名法を用いて実装することができる。
[0041] 図10Aの例では、ノードレコードNRA[42]がより全般的なグラフデータ構造100の主語グラフノードSA.3及びSA.4を表し、ノードレコードNRA[43]は、より全般的なグラフデータ構造100の主語グラフノードSA.7及びSA.8並びに目的語グラフノードOA.4を表す。従って図10Bでは、ノードレコードNRA[42]が、図3B及び図4Bそれぞれの主語グラフノードSA.3及びSA.4とグラフ内の同じ位置に示されている。図10Aに戻り、アプリケーション非依存データ形式にある主語グラフノードSA.3及びSA.4の表現を示すためにノードレコードNRA[42]を展開してある。一例では、グラフデータ構造内に記憶されるユーザ中心型ファクトがアプリケーション固有ファクトである。アプリケーション固有ファクトに加えて、ユーザ中心型ファクトは1つ又は複数のエンリッチメントを含むことができ、エンリッチメントはアプリケーション固有ファクトに関連するアプリケーション非依存ファクトを含む追加データである。
[0042] ユーザ中心型ファクトのアプリケーション非依存データ形式は、グラフデータ構造内の接続のアプリケーション非依存表現に加えてアプリケーション固有ファクトを効率的に記憶できるようにする。例えば主語グラフノードSA.3はアプリケーション固有ファクト、例えば新たな会議が予定されていたことの主語を表すことができる。従ってグラフデータ構造は、アプリケーション固有ファクトに関連する補助アプリケーション固有データを示すファセットポインタをアプリケーション固有ファクトのために記憶する。この例では、ファセットポインタPA[42]はSA.3に関連する補助アプリケーション固有データの記憶位置、例えば会議の詳細を表すカレンダエントリの記憶位置を示す識別子(例えば数値識別子)である。アプリケーション固有グラフ構造Aはスケジュール計画ソフトウェアに関連するので、ファセットポインタPA[42]はアプリケーション固有グラフ構造A内のその包含に基づく特定の種類のデータ(例えばカレンダデータ)に関連することができる。他の例ではファセットポインタが補助アプリケーション固有データの種類を指定する追加の識別情報を含むことができ、そのためファセットポインタを使用して様々な種類の補助アプリケーション固有データを表すことができる(例えばワード処理アプリケーションによって使用可能な複数のファイルの種類)。グラフデータ構造は、グラフデータ構造内に補助アプリケーション固有データを冗長に記憶するのを回避しながら、補助アプリケーション固有データをファセットポインタによって見つけるために使用することができる。
[0043] 主語グラフノード内に記憶されるファセットポインタに加えて、アプリケーション固有ファクトは主語グラフノードを1つ又は複数の目的語グラフノードに接続するエッジによって更に表される。単一の主語グラフノードが複数のユーザ中心型ファクト内に含まれ得るが、それでもなおグラフデータ構造200は主語グラフノードに関する単一のノードレコードだけを効率的に記憶する。このノードレコードはノードの出力エッジ全てのリストを含み、このことは、その中でそれが発生するユーザ中心型ファクトごとに主語グラフノードの複製を記憶することと比較して記憶空間の要件を低減し得る。出力エッジのリストは一部のノードについて、例えば目的語グラフノードでしかない名詞について空であり得る。主語グラフノードの出力エッジのリストは、1つ又は複数のエッジを規定する1つ又は複数のエッジレコードを含む。1つ又は複数のエッジはエッジレコード、例えばERA[261]及びERA[375]内に記憶することができる。図10Aは2つの出力エッジを有するノードレコードを示すが、ノードレコードはグラフデータ構造の他のノードへの関係を適切に表すように任意の数のエッジ、例えば0、1つ、又は3つ以上のエッジを含むことができる。
[0044] 主語グラフノードから目的語グラフノードへのエッジは、目的語グラフノードに関連する目的語グラフノードレコード識別子、例えばノードレコードNRA[42]の目的語グラフノードID「A[55]」を指定する。目的語グラフノードレコード識別子は、目的語グラフノードを規定するノードレコード、例えばNRA[55]の記憶位置を示す一貫したノードレコード識別子である。エッジは、目的語グラフノードを記憶する構成グラフ構造の目的語ドメイン識別子、例えばNRA[55]が構成グラフ構造A内に記憶されていることを示すノードレコードNRA[42]の目的語ドメインID「A」を更に指定することができる。従って図10Bは、レコードERA[261]及びERA[375]によって表されるエッジにより、ノードレコードNRA[55]及びNRA[21]によって表されるノードに接続されるノードレコードNRA[42]を示す。図10Aに戻り、(例えばエッジレコードによって表される)主語グラフノードから目的語グラフノードへのエッジは、主語グラフノードと目的語グラフノードとの間の関係の種類を更に指定することができる。例えばエッジレコードERA[261]は「予定された会議」の関係を示し得るRA[261]の関係の種類を規定するのに対し、エッジレコードERA[375]は「約束を交わした」関係を示し得るRA[375]の関係の種類を規定する。
[0045] アプリケーション固有ファクトをファセットポインタ及び出力エッジのリストによって表すことに加えて、主語グラフノードはアプリケーション固有ファクトの1つ又は複数のエンリッチメントを表すことができる。一例では、1つ又は複数のエンリッチメントがノード信頼度値、例えばノードレコードNRA[42]のノード信頼度CA[42]を含む。ノード信頼度CA[42]は、ユーザに対するノードレコードCA[42](及びノードレコードCA[42]が表す主語グラフノード)の関連性を示し得る。例えば信頼度値は、関連データのラベル付けされたサンプルを無関連データのラベル付けされたサンプルと区別することを学習することにより、ユーザに対する関連性を認識するように訓練された機械学習モデルによって決定され得る。例えば機械学習モデルを訓練することは、(例えばアプリケーションとのアプリケーション中の直接ユーザフィードバックから導出される)ユーザによってラベル付けされたサンプルを用いた教師あり訓練、及び/又は教師なし訓練を含み得る。図10Aの例では、ノードレコードNRA[42のノード信頼度CA[42]がノードレコードNRA[55]のノード信頼度CA[55]よりも高い値である可能性があり、ノードレコードNRA[55]よりもノードレコードNRA[42]の方がユーザに関連していると考えられることを示す。
[0046] 図10Aに示す例では、1つ又は複数のエンリッチメントが各エッジに関連するエッジ信頼度値、例えばエッジレコードERA[261]のエッジ信頼度KA[261]を更に含む。ノード信頼度値と同様に、エッジ信頼度値はユーザに対する特定のエッジ(例えばERA[261])の関連性を示し得る。1対のノード間の異なるエッジは異なる信頼度値を有し得る。例えば予定された会議が約束よりもユーザに関連性があると考えられる場合、例えば「予定された会議」の関係を示すエッジレコードERA[261]は「約束を交わした」ことを示すエッジレコードERA[375]のエッジ信頼度KA[375]よりも低いエッジ信頼度KA[261]を有し得る。
[0047] ノード信頼度値及びエッジ信頼度値に加えて、アプリケーション固有ファクトの1つ又は複数のエンリッチメントは他のアプリケーション非依存データ及び/又はアプリケーション固有データを含み得る。例えばノードレコードNRA[42]は、ノードレコードNRA[42]及び関連するアプリケーション固有データ(例えばファセットポインタPA[42]によって示されるデータ)にアクセスすることに関連する情報を示すアクセスメタデータMA[42]を含む。アクセスメタデータMA[42]は、直近のアクセスの時間及び日付を示すタイムスタンプ、直近のアクセスによって引き起こされた変更を示すデルタ値、又は他の任意の適切なメタデータを含み得る。
[0048] グラフデータ構造は、ユーザ中心型ファクトに関して、ユーザ中心型ファクトに関連する補助データを規定する1つ又は複数のタグを更に記憶することができる。例えばノードレコードNRA[42]は、ノードに関連する他の任意の適切な補助データを含み得るタグTA[42]を更に含む。例えばノードNRA[42]が(例えば連絡帳エントリに関連する)人物を表す場合、タグTA[42]はその人のニックネーム及び代わりの電子メールアドレスを含み得る。
[0049] ユーザ中心型ファクト及びユーザ中心型ファクトのノード/エッジは、タグ内に記憶される追加のセマンティクスを用いてエンリッチされ得る。例えばタグは、ユーザ中心型ファクトの1つ又は複数のエンリッチメントを記憶するために使用することができる。ノードレコード内に記憶されるタグはユーザ中心型ファクトに関連することができ、ノードレコードは主語グラフノードを表し又は目的語グラフノードを表す。或いは又は加えて、ノードレコード内に記憶されるタグは(例えばノードレコードによって表される主語グラフノード及び/又はノードレコードによって表される目的語グラフノードに関連する)ノードレコード自体に、又はノードレコードに接続される1つ又は複数のエッジに関連することができる。他の例では、(例えばユーザ中心型ファクトのアクセスメタデータの代わりに又はかかるアクセスメタデータに加えて)ユーザ中心型ファクトのメタデータを記憶するためにタグを使用することができる。例えばユーザ中心型ファクトがタイムスタンプに関連する場合、ユーザ中心型ファクトのタグに混ざってタイムスタンプが任意選択的に記憶され得る。
[0050] 一部の例では、1つ又は複数のタグが検索可能タグであり、グラフデータ構造が検索可能タグを検索すること(例えば検索文字列を記憶するタグを検索すること又は特定の種類のデータを記憶するタグを検索すること)によってユーザ中心型ファクトの検索を可能にするように構成される。
[0051] グラフデータ構造は複数のアプリケーション固有構成グラフ構造として表すことができ、構成グラフ構造のノードは(例えば図8A〜図9Bに関して上記で説明したように相互参照エッジ及びノード相互参照によって)構成グラフ構造間で相互参照される。図11Aは、主語グラフノードSA.7、SA.8及び目的語グラフノードOA.4を表すノードNRA[43]に焦点を当てた図10Aに示す同じノード中心型データ構造200の別の例示的な図を示す。NRA[43]からの出力エッジのリストは、同じ構成グラフ構造A内のノードを表す目的語グラフノードID「A[61]」を示すエッジレコードERA[213]を含む。NRA[43]からの出力エッジのリストは、目的語ドメインID「B」及び構成グラフ構造B内のノードを表す目的語グラフノードID「B[61]」を示すエッジレコードERA[435]を更に含む。従ってエッジレコードERA[435]は相互参照エッジである。図11Bは、NRA[43]と、NRA[61]及びNRB[25]へのNRA[43]の出力エッジとを含む、図1A〜図9Bと同じグラフデータ構造を図示する。
[0052] 図12Aは、目的語グラフノードOA.1、OA.5、OA.6、及びOA.7を表すノードNRA[67]に焦点を当てた図10Aに示すノード中心型データ構造200の別の例示的な図を示す。NRA[67]は入力エッジしか有さない目的語グラフノードしか表さないので、ノードNRA[67]からの出力エッジのリストは空であることに留意されたい。但し、NRA[67]は、OA.1、OA.5、OA.6、及びOA.7が構成グラフ構造BのOB.3と同じノードを表すというグラフデータ構造の認識を表す相互参照を更に含む。従って相互参照は、構成グラフ構造Bを示す参照ドメインID「B」と、相互参照ノードOB.3が構成グラフ構造Bを表す別のノード中心型データ構造のノードレコードNRB[76]内に記憶されていることを示す参照ノードID「B[76]」とを指定する。図12Bは、図1A〜図9Bに示す同じグラフデータ構造を図示する。ノードレコードNRA[67]は、図8Bの目的語グラフノードOA.5と同じ位置でもある図5B及び図6Bの目的語グラフノードOA.5及びOA.6と同じ位置に示されていることに留意されたい。
[0053] ノード中心型データ構造200は、異なるネイティブデータ形式を有し得る2つ以上の潜在的に無関係なコンピュータサービスからのファクトを追跡するために使用できる点でアプリケーション非依存である。ノード中心型データ構造200は、ファセットポインタを記憶することによって任意のコンピュータサービスのアプリケーション固有ファクトを記憶することができ、アプリケーション固有ファクトがアプリケーション固有の形式で記憶され得る場合でさえユーザ中心型ファクトがアプリケーション固有ファクトを含むことを可能にする。更にノード中心型データ構造200は、ドメイン識別子(例えば各主語グラフノードの出力エッジのリスト内の目的語ドメイン識別子、又はノード相互参照の表現内の参照ドメイン識別子)及びノード識別子(例えば目的語グラフノード識別子及び参照ノード識別子)の形で相互参照を記憶することにより、2つ以上のコンピュータサービスのコンテキストで規定されるユーザ中心型ファクトの表現を可能にする。更にユーザごとに異なるノード中心型データ構造200が規定され得るので、ノード中心型データ構造200はユーザ中心型である。ノード中心型データ構造200は、複数の異なるユーザが共用コンピュータサービス(例えばウェブブラウザ)と対話するコンテキストでユーザ中心型ファクトを記憶するのに適している場合がある。ノード中心型データ構造200はファセットポインタによってアプリケーション固有ファクトを記憶し、他のデータ構造内のファクトへの関係を相互参照によって表すので、共用コンピュータサービスのアプリケーション固有データへの書き込みアクセスを必要とすることなしに、ユーザに関するユーザ中心型ファクトをユーザに個別のユーザ中心型グラフデータ構造の中に記憶できる場合がある。
[0054] 図13は、ユーザ中心型AIナレッジベースを維持するための例示的な計算環境1300を示す。計算環境1300は、複数のアプリケーション固有データプロバイダコンピュータ(例えばアプリケーション固有データプロバイダコンピュータ1321、1322、及び1329等)にネットワーク1310を介して通信可能に結合されるグラフ記憶マシン1301を含む。グラフ記憶マシン1301及び複数のアプリケーション固有データプロバイダコンピュータは、ユーザの1つ又は複数のユーザコンピュータ(例えばユーザコンピュータ1340及びユーザコンピュータ1341)にネットワーク1310を介して更に通信可能に結合される。例えばユーザコンピュータ1340はユーザのデスクトップコンピュータであり得るのに対し、ユーザコンピュータ1341はユーザのモバイル計算装置であり得る。ネットワーク1310は任意の適切なコンピュータネットワーク(例えばインターネット)とすることができる。
[0055] 一部の例では、計算環境1300が、ネットワーク1310を介してグラフ記憶マシン1301に通信可能に結合されるコンピュータによるパーソナルアシスタント1600を更に含むことができる。コンピュータによるパーソナルアシスタント1600は任意の適切なやり方で、例えばオールインワン計算装置として又はデスクトップコンピュータ若しくは携帯電話等の任意の適切な計算装置上で実行可能なソフトウェアアプリケーションとして実装することができる。コンピュータによるパーソナルアシスタントは、独立型のコンピュータサービス又は別のコンピュータサービス(例えば電子メール/カレンダアプリケーション、検索エンジン、統合開発環境)の支援コンポーネントであり得る。
[0056] 一部の例では、計算環境1300がクラウドサービス1311を追加で含み得る。クラウドサービス1311は、計算環境1300の他の計算装置にネットワーク1310を介して通信可能に結合され得る。クラウドサービス1311は、任意の適切なタスクを実行するように構成される1つ又は複数の計算装置を含み得る。一部の例では、別の計算装置の機能をクラウドサービス1311にオフロードするために、クラウドサービス1311を利用することができる。例えばグラフ記憶マシン1301、アプリケーション固有データプロバイダコンピュータ1321、ユーザコンピュータ1340、及び/又はコンピュータによるパーソナルアシスタント1600の機能をクラウドサービス1311にオフロードすることができる。
[0057] 一例では、クラウドサービス1311が自然言語処理タスクを実行するように構成される。自然言語処理タスクをクラウドサービス1311にオフロードすることにより、グラフ記憶マシン1301は自然言語処理タスクを実行するように構成され得る。従ってグラフ記憶マシン1301は、自然言語処理タスクの入力データをクラウドサービス1310にオフロードし、自然言語処理タスクの結果を示す出力データをクラウドサービス1310から受信することができる。或いは又は加えて、コンピュータによるパーソナルアシスタント1600は、クラウドサービス1311の遠隔処理支援を用いて自然言語処理タスクを実行するように構成され得る。同様のやり方で、計算環境1300の計算装置は任意の適切なタスクをクラウドサービス1311にオフロードすることができ、クラウドサービス1311はオフロードされたタスクを実行するように構成される。
[0058] グラフ記憶マシン1301は単一のマシン(例えばコンピュータサーバ)として実装され得る。或いは、(例えばコンピュータクラスタによって提供される仮想サービスとしてグラフ記憶マシン1301を実装することにより)グラフ記憶マシン1301の機能を複数の異なる物理装置に分散させることができる。各アプリケーション固有データプロバイダコンピュータ(例えばアプリケーション固有データプロバイダコンピュータ1321)は、ユーザが使用する1つ又は複数のコンピュータサービス、例えばソーシャルネットワークアプリケーション、電子メールアプリケーション、スケジュールプランナアプリケーション、オフィススイート、モノのインターネットのアプライアンス機能、ウェブ検索アプリケーション等に関連し得る。
[0059] ユーザがユーザコンピュータ1340及び/又はユーザコンピュータ1341によって1つ又は複数のコンピュータサービスと対話するとき、アプリケーション固有データプロバイダコンピュータは、1つ又は複数のコンピュータサービスとのユーザの対話に関係する情報を集約することができる。ユーザがソーシャルネットワークアプリケーションと対話する例では、アプリケーション固有データプロバイダコンピュータ1322がソーシャルネットワークアプリケーションの機能を提供するサーバに通信可能に結合され得る。従ってユーザがソーシャルネットワークアプリケーションと対話するとき、サーバは対話の指示をアプリケーション固有データプロバイダコンピュータ1322に提供することができる。それを受けて、アプリケーション固有データプロバイダコンピュータ1322は1つ又は複数のユーザ中心型ファクトをグラフ記憶マシン1301に提供することができる。例では、ユーザコンピュータ1340が、ユーザコンピュータ1340において集約された追加のユーザ中心型ファクトをグラフ記憶マシン1301に提供し得る1つ又は複数のアプリケーションプログラムを実行し、ユーザコンピュータ1340を追加のアプリケーション固有データプロバイダとして働かせることができる。例では、例えばクエリを送信することにより、グラフ記憶マシン1301にユーザ中心型ファクトを要求し得る1つ又は複数のアプリケーションプログラムをユーザコンピュータ1340が実行することができる。上記の例はユーザがユーザコンピュータ1340によって1つ又は複数のコンピュータサービスと対話することを含むが、他の例では、ユーザはユーザコンピュータ1340の代わりに又はユーザコンピュータ1340に加えてユーザコンピュータ1341によって1つ又は複数のコンピュータサービスと対話することができる。例えばユーザコンピュータ1340がグラフ記憶マシン1301に1つ又は複数のファクトを提供することによってアプリケーション固有データプロバイダとして働く場合、ユーザコンピュータ1341は1つ又は複数のアプリケーションプログラムを実行してグラフ記憶マシン1301にユーザ中心型ファクトを要求することができる。このようにしてグラフ記憶マシン1301は、ユーザの複数の異なるユーザコンピュータからユーザ中心型ファクトを集約し得る一方、異なるユーザコンピュータのそれぞれがユーザ中心型ファクトを要求し利用することも可能にする。
[0060] 一例では、ユーザコンピュータ1340は、グラフ記憶マシン1301とネットワーク1310を介して通信するように構成されるコンピュータによるパーソナルアシスタントを実行することができる。コンピュータによるパーソナルアシスタントは、音声及び/又はテキストの自然言語クエリを受け付けるように構成されるNUIによってユーザからクエリを受け付けることができる。クエリに応答してグラフ記憶マシン1301によって出力される1つ又は複数のユーザ中心型ファクトを受信するために、コンピュータによるパーソナルアシスタントはグラフ記憶マシン1301に1つ又は複数のクエリを送信することができる。或いは又は加えて、コンピュータによるパーソナルアシスタントはユーザ中心型ファクト(例えばNUIによる会話内で示されるユーザの関心事)を集約し、ユーザコンピュータ1340をアプリケーション固有データプロバイダとして働かせることができる。一部の事例では、グラフ記憶マシン1301及びアプリケーション固有データプロバイダが単一のエンティティ又は組織によって管理されてもよく、その場合はアプリケーション固有データプロバイダを「ファーストパーティ」アプリケーション固有データプロバイダと呼ぶことができる。他の事例では、グラフ記憶マシン1301及びアプリケーション固有データプロバイダが異なるエンティティ又は組織によって管理されてもよく、その場合はアプリケーション固有データプロバイダを「サードパーティ」アプリケーション固有データプロバイダと呼ぶことができる。
[0061] 図14は、ユーザ中心型人工知能ナレッジベースを維持する例示的方法1400を示す。ユーザ中心型AIナレッジベースは、複数の異なることによると無関係なコンピュータサービスと対話するユーザに関するユーザ中心型ファクトを記憶するのに適している場合がある。更にユーザ中心型AIナレッジベースは、ユーザ中心型ファクトに関するクエリに回答するために使用可能であり得る。ユーザ中心型AIナレッジベースを維持することは、1つ又は複数のユーザ中心型ファクトを記憶することによってナレッジベースを構築すること、更なるファクトを追加することによってユーザ中心型AIナレッジベースを更新すること、及び(例えばクエリに対するキャッシュに入れられる回答を記憶してクエリのその後の高速な回答を可能にするために)クエリされ使用されるときにユーザ中心型AIナレッジベースを更新することを含む。
[0062] 1401で、方法1400は、ユーザに関連する複数のユーザ中心型ファクトを含むグラフデータ構造を維持することを含む。例えば主語グラフノード、目的語グラフノード、及び主語グラフノードを目的語グラフノードに接続するエッジを含め、各ユーザ中心型ファクトはアプリケーション非依存データ形式を有し得る。グラフデータ構造は複数のアプリケーション固有構成グラフ構造として表すことができ、構成グラフ構造のノードは構成グラフ構造間で相互参照される。図10A〜図12Bに関して上記で説明したノード中心型データ構造200等、グラフデータ構造は任意の適切なアプリケーション非依存データ形式を使用して記憶することができる。
[0063] 1402で、方法1400は、ユーザ中心型ファクトを提供するための要求をアプリケーション固有データプロバイダに自動で送信することを任意選択的に含む。アプリケーション固有データプロバイダに要求を送信することは任意の適切なやり方で、例えばアプリケーション固有データプロバイダのAPIによってコンピュータネットワーク上で行われ得る。要求は、特定のユーザ中心型ファクト(例えば特定の時間及び/又は日付の範囲内のユーザ中心型ファクト、アプリケーション固有データプロバイダによってまだ提供されていないユーザ中心型ファクト、及び/又は特定の関連タグを有するユーザ中心型ファクト)が提供されるべきであることを示し得る。或いは要求は、入手可能な全てのユーザ中心型ファクトが提供されるべきであることを示し得る。アプリケーション固有データプロバイダに要求を送信し、その要求に応じてユーザ中心型ファクトを受信することは、本明細書ではアプリケーション固有データプロバイダからデータを「プルすること」と呼ぶことができる。任意の適切なスケジュールに従って、例えば周期的に追加のユーザ中心型ファクトが要求され得る。要求に応じて追加のユーザ中心型ファクトを提供することに加えて、複数のアプリケーション固有データプロバイダのアプリケーション固有データプロバイダはプルを行う要求なしにユーザ中心型ファクトを送信することができ、本明細書ではそれをユーザ中心型AIナレッジベースにユーザ中心型ファクトを「プッシュすること」と呼ぶことができる。
[0064] 1403で、方法1400は(例えばアプリケーション固有データプロバイダからデータをプルすることにより、又はアプリケーション固有データプロバイダがユーザ中心型AIナレッジベースにユーザ中心型ファクトをプッシュすることにより)第1のコンピュータサービスに関連する第1のアプリケーション固有データプロバイダから第1のユーザ中心型ファクトを受信することを含む。1404に示すように、第1のユーザ中心型ファクト等のユーザ中心型ファクトは、ユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する更新プロトコル(例えば更新API)によって受信され得る。例えば更新APIは、上記で説明したノードレコード形式の実装形態等、特定のデータ記憶形式を使用するように記憶形式を制約することができる。更に更新APIは、記憶データの最大ディスク使用量を制約し、及び/又はデータが暗号化データ形式で記憶されることを要求し得る。
[0065] 1405で、方法1400は、グラフデータ構造に第1のユーザ中心型ファクトをアプリケーション非依存データ形式で追加することを含む。例えば第1のユーザ中心型ファクトをグラフデータ構造に追加することは、図10A〜図12Bに関して上記で説明したノードレコード形式へと第1のユーザ中心型ファクトを変換し、その結果生じるノードレコードをノードレコードのノードレコード識別子に関連する記憶位置に記憶することを含み得る。第1のユーザ中心型ファクトはアプリケーション固有ファクトであり得る。従って1406で、図10A〜図12Bに関して上記で説明したように、グラフデータ構造はアプリケーション固有ファクトに関連する補助アプリケーション固有データを示すファセットポインタを記憶することができる。
[0066] 1406で、グラフデータ構造がアプリケーション非依存エンリッチメント、例えばアプリケーション固有ファクトに関連するアプリケーション非依存ファクトを任意選択的に記憶し得る。エンリッチメントはアプリケーション固有データプロバイダから受信されるユーザ中心型ファクト内に含まれ得る。或いは又は加えて、アプリケーション固有データプロバイダが提供するユーザ中心型ファクトは、1つ又は複数のエンリッチメントを含むように1つ又は複数のエンリッチメントアダプタを含むエンリッチメントパイプラインによって前処理されてもよい。グラフデータ構造がユーザ中心型ファクトに関連するタグ(例えばノードレコード内に記憶されるタグ)を記憶する場合、1つ又は複数のエンリッチメントがタグに混ざって含まれ得る。
[0067] 一例では、エンリッチメントアダプタは、アプリケーション固有ファクトを受信し、ユーザに対するアプリケーション固有ファクトの関連性を認識し、関連性を数値的に示す信頼度値を出力するように構成される機械学習モデルを含む。機械学習モデルは任意の適切なモデル、例えば統計的モデル又はニューラルネットワークとすることができる。機械学習モデルは、例えばユーザフィードバックに基づいて訓練することができる。例えば機械学習モデルがニューラルネットワークである場合、ユーザフィードバック内で示される実際の関連性と比較した、ニューラルネットワークによって出力される予測された関連性の誤りレベルを示す目的関数によってニューラルネットワークの出力を評価することができる。誤差逆伝搬法を使用し、ニューラルネットワークのレイヤ内の各関数の導関数に関して目的関数の勾配を計算することができる。従って、目的関数によって示される誤りレベルを最小化するために、ニューラルネットワークの重みを勾配(例えば勾配降下)に基づいて調節することができる。一部の例では、ソフトウェアアプリケーションと対話する間にユーザによって提供される直接フィードバック(例えば検索アプリケーションにおける検索結果の関連性を示す)に基づき、機械学習モデルを特定のユーザについて訓練することができる。従って、訓練される機械学習モデルはユーザへの関連性を推定可能であり得る。一部の例では、例えばユーザが過去に関連性があると示した他のコンテンツに対する関連コンテンツの類似性を推定することにより、ユーザからの間接フィードバックに基づいて機械学習モデルを訓練することができる。
[0068] 別の例では、エンリッチメントアダプタは、アプリケーション固有ファクトの自然言語特徴を認識するための自然言語プログラムを含む。例えば自然言語プログラムは、既存の主語グラフノード及び/又は目的語グラフノードに関連するものとして自然言語特徴を認識することにより、アプリケーション固有ファクトに関する主語グラフノード及び/又は目的語グラフノードを決定することができる。一部の例では、自然言語プログラムがアプリケーション固有ファクトのエッジに関する関係の種類を決定することができる。一部の例では、自然言語プログラムが、アプリケーション固有ファクトに関する主語グラフノード及び/又は目的語グラフノードの1つ又は複数のタグを決定することができる。自然言語プログラムは、1)命名されたエンティティ(例えば人、組織、及び/又はオブジェクト)、2)意図(例えば自然言語特徴に関連する感情又は目標)、3)イベント及びタスク(例えばユーザが後で行うつもりであるタスク)、4)トピック(例えばユーザ中心型ファクトが含む又は表すトピック)、5)位置(例えばユーザ中心型ファクトによって参照される地理的位置、又はユーザ中心型ファクトが生成された場所)、及び/又は6)日付及び時間(例えばユーザ中心型ファクトに関連する過去のイベント又は将来予定されているイベントを示すタイムスタンプ)を含む特徴を認識するように構成され得る。
[0069] ユーザ中心型ファクトに関連するエンリッチメントは、ユーザ中心型ファクトのエンリッチされたセマンティクス(例えばユーザ中心型ファクトの主語グラフノードと目的語グラフノードとの間のエッジによって形成される接続構造によってもたらされる情報を超える追加の有意味の情報)を提供することができる。グラフデータ構造は、(例えばエンリッチメントパイプライン内で追加される1つ又は複数のエンリッチメントに基づいて)エンリッチされたセマンティクスから導出され得る追加のユーザ中心型ファクトを認識し含むことができる。従って、1つ又は複数のエンリッチメントを含むユーザ中心型ファクトを追加することは、1つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識すること、及びグラフデータ構造に更なるユーザ中心型ファクトをアプリケーション非依存データ形式で追加することを更に含み得る。
[0070] 1つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識することは、1つ又は複数のエンリッチメントのエンリッチメントが、グラフデータ構造内に既に含まれている別のユーザ中心型ファクトに(例えばエンリッチメントが他のユーザ中心型ファクトの主語名詞又は目的語名詞に関連することを理由に)対応することを認識することを含み得る。或いは又は加えて、1つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識することは、如何なるユーザ中心型ファクトにもまだ関与していない主語名詞に関連する1つ又は複数のエンリッチメントの第1のエンリッチメントを認識すること、1つ又は複数のエンリッチメントの第2のエンリッチメントが目的語名詞に関連すると認識すること、主語名詞と目的語名詞との間の関係を認識すること、及び目的語名詞及び主語名詞を含むユーザ中心型ファクトをグラフデータ構造に追加することを含み得る。一部の例では、1つ又は複数のエンリッチメントに基づいて追加のユーザ中心型ファクトを認識することは、1つ又は複数のエンリッチメント間の任意の適切な関係を認識すること、及び認識した関係を表すユーザ中心型ファクトを追加することを含む。
[0071] 一例では、第1のノード及び第2のノードが認識済みの命名されたエンティティを指定するエンリッチメントをそれぞれ含み、両方のエンリッチメントが同じ命名されたエンティティを指定する。従ってグラフデータ構造は、第1のノードを第2のノードに接続するエッジを記憶することができ、エッジの関係の種類は2つのノードが同じエンティティに関連すると推論されたことを示し得る。或いは又は加えて、グラフデータ構造は、他のノードが同じ命名されたエンティティに関連することを示すノード相互参照を各ノード内に記憶することができる。或いはグラフデータ構造は、第2のノードのデータを含むように第1のノードを修正し、第2のノードを削除し、それにより2つのノードではなく単一のノードを含むように表現を折り畳むことで第2のノードのデータの冗長な記憶を回避することができる。
[0072] 別の例では、第1のノードが命名されたエンティティを指定するエンリッチメントを含み、第1のノードを同じ命名されたエンティティを表す第2のノードに接続するエッジを追加することができる。別の例では、同じ関連トピックを有する第1のノードと第2のノードとの間のエッジを追加することができる。別の例では、関連する同じ時間及び/又は位置を有する第1のノードと第2のノードとの間のエッジを追加することができる。例えばエッジは、特定のカレンダ日付を(例えばタグ内で)参照する第1のノードと、(例えばアクセスメタデータによって示されるように)その特定のカレンダ日付に作成された第2のノードとの間のエッジを追加することができる。別の例では、同じ位置で作成された、又は同じ位置を参照する2つのノード間のエッジを追加することができる。
[0073] 1407で、グラフデータ構造にユーザ中心型ファクトをアプリケーション非依存データ形式で追加することが、暗号化ユーザ中心型ファクトとしてユーザ中心型ファクトを記憶することを任意選択的に含み、暗号化ユーザ中心型ファクトへのアクセスは資格情報によって制約される。例えば資格情報はユーザに関連するユーザアカウント資格情報とすることができ、暗号化ユーザ中心型ファクトはユーザアカウント資格情報の保持者しか読み出すことができない場合がある。別の例では、資格情報が企業コンピュータネットワーク内のユーザに関連する企業アカウント資格情報でもよく、暗号化ユーザ中心型ファクトは企業アカウント資格情報の保持者及び企業コンピュータネットワークの1人又は複数の管理者しか読み出すことができない場合がある。アプリケーション固有データプロバイダから受信されるユーザ中心型ファクトは、資格情報を用いて暗号化される暗号化ユーザ中心型ファクトとして受信され得る。その場合、暗号化ユーザ中心型ファクトは、暗号化ユーザ中心型ファクトを復号し再び暗号化することなしに、同じ資格情報を使用して同じ暗号化形式で記憶することができる。更に、暗号化ユーザ中心型ファクトは準同型暗号方式を用いて暗号化されてもよく、その場合、修正済みの暗号化ユーザ中心型ファクトを記憶する前に、暗号化ユーザ中心型ファクトを復号し再び暗号化することなしに暗号化ユーザ中心型ファクトを(例えばエンリッチメントを追加するために)修正することができる。或いはアプリケーション固有データプロバイダから受信されるユーザ中心型ファクトは異なる資格情報を使用して暗号化されてもよく、その場合、受信されるユーザ中心型ファクトは資格情報を使用して復号し再び暗号化してから、結果として生じる再暗号化ユーザ中心型ファクトを記憶することができる。或いはアプリケーション固有データプロバイダから受信されるユーザ中心型ファクトは暗号化されなくてもよく、その場合、受信されるユーザ中心型ファクトは資格情報を使用して暗号化してから、結果として生じる暗号化ユーザ中心型ファクトを記憶することができる。
[0074] ユーザ中心型ファクトを暗号化ユーザ中心型ファクトとして記憶することに加えて、1つ又は複数のユーザ中心型ファクトを編集するためにフラッシュトリガに応じてグラフデータ構造をフラッシュすることにより、グラフデータ構造が更なるプライバシ及びセキュリティを提供することができる。例えばフラッシュトリガは、1つ又は複数の暗号化ユーザ中心型ファクトを編集するためのユーザコマンドであり得る。ユーザコマンドは特定のユーザ中心型ファクト(例えば特定のクエリに応じたユーザ中心型ファクト、又は特定の時間/日付の範囲からのユーザ中心型ファクト)を示すことができる。或いは又は加えて、ユーザコマンドは、ユーザ中心型AIナレッジベース全体が編集されるべきだと示すことができる。別の例では、フラッシュトリガは自動的にスケジュールされた、例えば周期的に生じる、又は将来の特定の予定された時点において1回生じるトリガとすることができる。
[0075] 1408で、方法1400は、第1のコンピュータサービスと異なる第2のコンピュータサービスに関連する第2のアプリケーション固有データプロバイダから第2のユーザ中心型ファクトを受信することを含む。(例えば第1のユーザ中心型ファクトを受信することに関して上記で説明したように)第2のユーザ中心型ファクトは任意の適切なやり方で受信することができる。
[0076] 1409で、方法1400は、グラフデータ構造に第2のユーザ中心型ファクトをアプリケーション非依存データ形式で追加することを含む。(例えばグラフデータ構造に第1のユーザ中心型ファクトを追加することに関して上記で説明したように)第2のユーザ中心型ファクトは任意の適切なやり方でグラフデータ構造に追加することができる。アプリケーション非依存データ形式は、単一のコンピュータサービスから導出されたユーザ中心型ファクトしか含まないナレッジベースと比較して(例えばユーザクエリに回答する際)改善された実用性でユーザ中心型AIナレッジベースを円滑化し得る。第1のユーザ中心型ファクト及び第2のユーザ中心型ファクトは互換性のない異なるネイティブデータ形式を有し得る2つの異なるコンピュータサービスから受信され得るが、第1のユーザ中心型ファクト及び第2のユーザ中心型ファクトの両方を同じアプリケーション非依存データ形式で保存することができる。更に、上記の例は2つの異なるコンピュータサービスからのユーザ中心型ファクトを含むが、ナレッジベースに寄与し得る異なるコンピュータサービスの数に制限はない。加えて、様々なコンピュータサービスが任意の特定のやり方で互いに、又はユーザ中心型AIナレッジベースに関係する要件はない(例えば様々なコンピュータサービス及びユーザ中心型AIナレッジベースは互いに無関係であり、異なるコンピュータサービスプロバイダによって提供され得る)。従って、ユーザ中心型ナレッジAIベースは複数の異なるコンピュータサービスから導出されるユーザ中心型ファクトを含むことができ、それにより一層多くの異なるコンテキストからの更に多くのユーザ中心型ファクトを含む。更に、アプリケーション固有構成グラフ構造間の相互参照はユーザ中心型ファクトが様々なコンピュータサービスの側面間の関係を表すことを可能にし、そのことは相互参照なしに複数の異なる別個のナレッジベースを維持することと比較して実用性を更に改善することができる。
[0077] 一部の事例では、第2のユーザ中心型ファクトは、グラフデータ構造内に既に記憶されている第1のユーザ中心型ファクトのものと異なる目的語名詞及びエッジを有する一方、第1のユーザ中心型ファクトと同じ主語名詞を有することができる。従って第2のユーザ中心型ファクトを追加することは、第2のユーザ中心型ファクトが第1のユーザ中心型ファクトと同じ主語名詞を有することを認識すること、及び主語名詞から第2のユーザ中心型ファクトの目的語名詞への新たな出力エッジを表す新たなエッジレコードを含むように第1のユーザ中心型ファクトを表すノードレコードを修正することを含み得る。従ってノードレコードは、第1のユーザ中心型ファクトを最初は表すことができ、第2のユーザ中心型ファクトを更に表すように後で更新され得る。
[0078] 1410で、方法1400は、グラフデータ構造内に含まれるユーザ中心型ファクトのサブセットをクエリに応じて出力することを任意選択的に含み、ユーザ中心型ファクトのサブセットはクエリによって規定される1組の制約を満たすように選択される。クエリに応答することは任意の適切なやり方で、例えば図15の方法1500に従って行うことができる。
[0079] 図15は、クエリに応答するための例示的方法1500を示す。クエリは、ユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットによって満たすことができ得る1組の制約を規定する。1)ユーザ中心型ファクト内に含まれる主語グラフノード及び/又は目的語グラフノードの種類(例えば主語グラフノードが人を表す)、2)ユーザ中心型ファクト内に含まれる主語グラフノード及び/又は目的語グラフノードの正体(例えば目的語グラフノードが特定の電子メールメッセージを表す)、3)主語グラフノードと目的語グラフノードとを接続するエッジの種類、4)主語グラフノード、目的語グラフノード、及び/又はエッジの信頼度値、5)主語グラフノード、目的語グラフノード、及び/又はエッジに関連する日付及び/又は時刻の範囲、及び/又は6)主語グラフノードのアクセスメタデータ及び/又はタグ等、主語グラフノード、目的語グラフノード、及び/又はエッジの他の任意の特徴のうちの何れか等、制約はユーザ中心型ファクトを規定する主語グラフノード、目的語グラフノード、及びエッジの任意の適切な特徴を含み得る。クエリへの回答は1組の制約を満たすユーザ中心型ファクトのサブセット、又は1組の制約を満たすことができないという指示を含む。
[0080] クエリは任意の適切なやり方で受信することができる。例えばクエリは、コンピュータ可読クエリ形式における1組の制約をクライアントがプログラムで規定することを可能にするクエリプロトコル(例えばクエリAPI)によって受信され得る。或いはクエリは自然言語クエリとして受信し、自然言語処理技法を使用して制約を認識することによって1組の制約に変換することができる。例えばユーザ中心型AIナレッジベースは、自然言語クエリに対応する潜在空間内の点を認識し、潜在空間内の点に対応する1組の制約を出力することによって自然言語クエリを制約の組に変換するために、自然言語クエリ及び制約の組をセマンティック埋め込みモデルによって学習される潜在空間内の点として表すようにセマンティック埋め込みモデルを訓練可能であり得る。或いは又は加えて、ユーザ中心型AIナレッジベースは構文解析モデル(例えば依存関係解析)を使用して自然言語クエリの統語構造をテンプレートクエリと突き合わせ、自然言語クエリの詳細を使用してテンプレートクエリの詳細を埋めることによって1組の制約を指定することが可能であり得る。
[0081] 1501で、方法1500は、前に応えられているクエリをキャッシュクエリとして認識し、キャッシュクエリが前に受信されたときにキャッシュクエリを満たしたユーザ中心型ファクトの同じサブセットで回答することにより、キャッシュ応答を出力してキャッシュクエリに応えることを含む。そのため1507で、方法1500は、前にキャッシュに入れたユーザ中心型ファクトのサブセットを出力することを含む。キャッシュクエリが将来再び受信される場合、かかるキャッシングはキャッシュ応答の効率的な(例えば即座の)取得を可能にし得る。
[0082] クエリがまだ応えられていない場合、1502で、方法1500は、クエリによって規定される1組の制約を満たすユーザ中心型ファクトのサブセットを選択することを含む。1組の制約は、グラフデータ構造を横断して制約を少なくとも部分的に満たすユーザ中心型ファクトを見つけることによって満たされ得る。グラフデータ構造はユーザ中心型ファクト間の構造化された関係を表す(例えば同じ主語名詞を有する2つのファクトは構成グラフ内の単一のノードレコードによって表し、構成グラフ間で相互参照することができる)。そのため、ユーザ中心型ファクトの集合を網羅的に検索するよりも、グラフデータ構造を横断してクエリを満たすユーザ中心型ファクトを見つける方が効率的であり得る。例えばユーザが他の特定の人物と頻繁に対話した場合、その頻繁な対話はその他の人物がユーザに関連している可能性が高いことを示し得る。従って主語又は目的語としてその人物を有する更に多くのユーザ中心型ファクトがある可能性があり、その他の人物を表すノードに通じる及びかかるノードから至るエッジが多くあることを理由に、グラフデータ構造のエッジを横断する間その他の人物を表すノードに遭遇する可能性がより高くなり得る。
[0083] グラフデータ構造を横断することはグラフデータ構造のエッジに沿った「ランダムウォーク」を含み得る。ランダムウォークは、クエリに回答するための任意の適切な出発点を指すために本明細書では使用する現在のユーザコンテキストから開始し得る。例では、現在のユーザコンテキストは(例えば出発点として使用するための主語グラフノードを示すコンテキストキーワードを含めることにより)クエリによって規定され得る。他の例では、現在のユーザコンテキストは、出発点として使用するための主語グラフノードを決定するのに適したアプリケーション固有コンテキスト(例えば「電子メールへの回答」)であり得る。
[0084] (例えば出発点において)ランダムウォーク中にノードに遭遇した場合、クエリの制約を満たすかどうかを判定するためにそのノードを検査することができる。そのノードがクエリの制約を満たす場合、そのノードはクエリに応じたユーザ中心型ファクトのサブセット内で出力することができる。そのノードに遭遇した後、更に多くのノードに遭遇するようにランダムウォークを続行することができる。更に多くのノードを見つけるために、ランダムウォークは遭遇ノードの出力エッジに沿って続行することができる。出力エッジに沿って続行するかどうかを判定することは、エッジをたどる可能性を表す重みを評価し、重み及びランダムデータ、例えば乱数発生器を使用して実装される「ルーレットホイール選択」アルゴリズムに基づいてエッジをたどるかどうかをサンプリングすることを含む加重ランダム判定であり得る。主語グラフノードを目的語グラフノードに接続するエッジの重みは、主語グラフノード、エッジ、及び/又は目的語グラフノードの信頼度値に基づいて決定することができる。一例では、信頼度値はユーザに対する関連性の指示として解釈することができ、そのためより関連性のあるエッジ又はより関連性のあるノードを接続するエッジの方をたどる可能性が高い。エッジの重みは主語グラフノード、目的語グラフノード、及び例えばクエリの1つ又は複数の自然言語特徴に対するエッジの種類の自然言語比較に基づいてクエリに対するエッジの関連性を評価することによりエッジの他のデータに基づいて更に決定され得る。
[0085] 制約(例えばユーザ中心型ファクトを規定する主語グラフノード、目的語グラフノード、及びエッジの特徴)を指定することにより、ユーザはユーザ中心型AIナレッジベースを使用して回答される多岐にわたるクエリを策定することが可能であり得る。
[0086] クエリ内で指定される制約を満たすユーザ中心型ファクトのサブセットを選択することに加えて、ユーザ中心型AIナレッジベースは他の専用クエリに応答することを可能にし得る。図15は、スライスクエリ及びランククエリという2つの例示的な専用クエリを示す。
[0087] 一例では、1504で、クエリは開始ノード及び距離パラメータを示すスライスクエリである。スライスクエリへの回答は、開始ノードから出発し、開始ノードから最大で距離パラメータに等しい長さの経路を形成するようにグラフデータ構造のエッジを横断することによって到達するユーザ中心型ファクトを含むユーザ中心型ファクトのサブセットである。例えば距離パラメータが1に設定される場合、クエリへの回答は開始ノード及び開始ノードに直接接続される全ての一段階隔てたノードを含み、距離パラメータが2に設定される場合、クエリへの回答は開始ノード、全ての一段階隔てたノード、及び一段階隔てたノードの少なくとも1つに直接接続される全ての2段階隔てたノードを含む。最大で距離パラメータの経路によって開始ノードに接続されることにより、スライスクエリは対象となる特定のユーザ中心型ファクト(例えば開始ノードが関与するユーザ中心型ファクト)に潜在的に関連するユーザ中心型ファクトの集合を表し得る。小さい距離パラメータを設定することにより、クエリへの回答は開始ノードに密に関係する相対的に小さいファクトの集合を表すことができ、同様に大きい距離パラメータを設定することにより、回答は開始ノードに間接的に関係する大きいファクトの集合を表し得る。開始ノードを指定する代わりに、クエリは現在のユーザコンテキストを開始ノードとして使用し、それによりユーザの現在のコンテキストに関係するユーザ中心型ファクトの集合を表すこともできる。
[0088] 別の例では、1505で、クエリは各ユーザ中心型ファクトに関連する信頼度値に少なくとも基づいて複数のユーザ中心型ファクトをランク付けするためのランククエリであり、ユーザ中心型ファクトのサブセットは各ユーザ中心型ファクトの信頼度値に従って順にランク付けされる。ランククエリは、クエリに対する追加の特定の制約を課すことなしに、ユーザに関連する可能性が高いユーザ中心型ファクトを集めることとして解釈することができる。信頼度値に基づいて複数のユーザ中心型ファクトをランク付けすることに加えて、複数のユーザ中心型ファクトは他の特徴に基づいてランク付けすることができる。例えばユーザ中心型ファクトは、(例えば各ファクトに関連するタイムスタンプに従って)より最近であればより関連性があるものとして重み付けすることができる。別の例では、ランククエリがキーワードを含むことができ、ユーザ中心型ファクトは、そのタグの中にキーワードを有する少なくとも1つのノードを含む場合はより関連性があるものとして重み付けすることができる。
[0089] 図15は専用クエリの2つの例を示すが、ユーザ中心型AIナレッジベースは図15には不図示の他の種類の専用クエリを可能にする。例えば、スライスクエリに応じたユーザ中心型ファクトのサブセットはランククエリにあるように信頼度値によって更にランク付けし、それにより2種類のクエリの機能を組み合わせることができる。別の例では、クエリは開始ノードを示すピボットクエリである。ピボットクエリへの回答は、開始ノードから出発し、無制限の(又は任意の、大きい)長さの経路を形成するようにグラフデータ構造のエッジを横断することによって到達するユーザ中心型ファクトを含むユーザ中心型ファクトのサブセットである。ピボットクエリは、開始ノードによって到達される経路長を制限しない、例えば距離パラメータが無限のスライスクエリとして解釈することができる。一部の例では、クエリへの回答が(例えば図2Aにあるように)グラフ図としてユーザ中心型ファクトの回答サブセットの視覚化を含むことができ、この視覚化はユーザ中心型ファクトの任意の適切な情報(例えばユーザ中心型ファクトの1つに含まれるノードのファセットポインタによって示される補助アプリケーション固有データ)を含むように注釈付け又はアニメ化することができる。
[0090] クエリに応じて出力されるユーザ中心型ファクトのサブセットが、クエリによって規定される範囲内の時間を示すタイムスタンプに関連するユーザ中心型ファクトに制限されるように、クエリは時間制約を規定することができる。一部の例では、時間がグラフデータ構造内のノード及びエッジの固有の特性である(例えばグラフデータ構造内に含まれる複数のユーザ中心型ファクトの各ユーザ中心型ファクトが1つ又は複数のタイムスタンプに関連する)。ノード又はエッジに関連する1つ又は複数のタイムスタンプは、ユーザ中心型ファクトが作成された、アクセスされた、及び/又は修正された時間を示すことができる(例えばユーザ中心型ファクト内に含まれるノードのアクセスメタデータ)。或いは又は加えて、1つ又は複数のタイムスタンプはユーザ中心型ファクト内で参照される時間(例えば会議が予定されている時間、又はエンリッチメントパイプライン内のエンリッチメントアダプタによって追加される他の任意のタイムスタンプ)を示すことができる。1つ又は複数のタイムスタンプは検索可能タグとして任意選択的に記憶することができる。
[0091] 一部の例では、クエリによって規定される1つ又は複数の制約が回答の種類の制約を含み、従ってクエリに応じて選択されるユーザ中心型ファクトのサブセットは回答の種類の制約を満たすユーザ中心型ファクトだけを含み得る。例えば回答の種類の制約は、ユーザ中心型ファクトの主語グラフノード、目的語グラフノード、及び/又はエッジの特徴を制約することができる。例えば回答の種類の制約は、1)主語又は目的語が人である、2)主語も目的語も同僚である、3)主語が場所である、4)目的語がトピックである、又は5)主語が人であり且つ目的語が予定されたイベントである等、特定の種類の主語グラフノード及び/又は目的語グラフノードを示すことができる。或いは又は加えて回答の種類の制約は、1)主語がユーザである、2)主語がユーザの上司のAliceである、又は3)目的語がAlice、Bob、又はCharlieの何れかである等、1つ又は複数の特定の主語及び/又は目的語を示すことができる。或いは又は加えて回答の種類の制約は、例えば「電子メール送信済み」の関係、「一緒にランチに行った」関係、又は「研究されたトピック」の関係等の関係の種類を示すことにより、1つ又は複数の特定の種類のエッジを示すことができる。
[0092] 一部の例では、クエリによって規定される1つ又は複数の制約がグラフコンテキスト制約を含むことができ、従ってクエリに応じて選択されるユーザ中心型ファクトのサブセットは、グラフコンテキスト制約を満たすユーザ中心型AIナレッジベース内のコンテキスト化(contextualizing)ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含み得る。あり得る関係を示すことができるグラフデータ構造の任意の適切な特徴に基づき、本明細書では2つの異なるユーザ中心型ファクトを関係するものとして記述することがある。例えばグラフコンテキスト制約がユーザの上司であるAliceを示す場合、コンテキスト化ユーザ中心型ファクトは主語グラフノード又は目的語グラフノードとしてAliceを表すノードを有する任意のファクトであり得る。従って、クエリに応じて選択されるユーザ中心型ファクトのサブセットはAliceを表すノードにエッジによって直接接続される主語グラフノード及び/又は目的語グラフノードを有する他のユーザ中心型ファクトを含み得る。或いは又は加えて、ユーザ中心型ファクトのサブセットはAliceに間接的に関係するユーザ中心型ファクト、例えばAliceを表すノードに2つ以上のエッジの経路によって間接的に接続される主語グラフノード及び/又は目的語グラフノードを有するユーザ中心型ファクトを含み得る。一部の事例では、グラフコンテキスト制約を含むクエリがスライスクエリでもよく、ユーザ中心型ファクトのサブセットは、コンテキスト化ユーザ中心型ファクトに関係し且つコンテキスト化ユーザ中心型ファクトのノードの最大で特定の距離内で到達可能なユーザ中心型ファクトだけを含み得る。他の例では、グラフコンテキスト制約を含むクエリがランククエリでもよく、ユーザ中心型ファクトのサブセットは、コンテキスト化ユーザ中心型ファクトに関連する可能性が最も高いユーザ中心型ファクト、例えば多くの異なる経路によって又は高い信頼度値を有するエッジを含む経路によってコンテキスト化ユーザ中心型ファクトに接続されるユーザ中心型ファクトの選択を含み得る。
[0093] クエリに回答することは各ユーザ中心型ファクトに関連する1つ又は複数のタイムスタンプに基づいてグラフデータ構造を横断することを含むことができ、かかる横断は本明細書ではグラフデータ構造の時間次元の横断と呼ぶことができる。例えばクエリに回答することは、クエリによって規定される時間に関連するノードから開始し、タイムスタンプが横断と同じ順序で増加するように、後の時点を示すタイムスタンプを有する任意のエッジをたどることによってグラフを横断することを含み得る。他の例では、クエリに回答することはクエリによって規定される日付に先行するタイムスタンプを有する任意のエッジをたどることによってグラフデータ構造を横断することを含み得る。更に、グラフデータ構造内の各ノード及びエッジの固有の時間特性がグラフデータ構造のタイムラインビューを可能にし得る。例では、クエリへの回答がグラフデータ構造のタイムラインビュー、例えば各ユーザ中心型ファクトに関連するタイムスタンプによって時系列順に配置されるユーザ中心型ファクトを含むことができる。
[0094] 専用クエリの別の例として、グラフデータ構造は、ユーザ中心型ファクトに関するグラフデータ構造によって記憶される検索可能タグに基づいてユーザ中心型ファクトを検索できるように構成され得る。検索可能タグに基づいてユーザ中心型ファクトを検索することは(例えばスライスクエリ又はピボットクエリに関して上記で説明したように)任意の適切なやり方でグラフを横断し、グラフを横断する間、グラフ構造が検索可能タグを記憶する横断中に遭遇する任意のユーザ中心型ファクトを出力することを含み得る。
[0095] 専用クエリの別の例として、グラフデータ構造は、ユーザの現在のコンテキストに関連し得るユーザ中心型ファクトを検索することによってユーザコンテキストクエリに応えるように構成され得る。従って、ユーザコンテキストクエリはユーザの現在のコンテキストに関係する1つ又は複数の制約を含み得る。例えば1つ又は複数の制約は、ユーザコンテキストクエリが応えられる現在時間に基づく時間制約を含み得る。或いは又は加えて、1つ又は複数の制約はユーザの現在のコンテキストに関係するグラフコンテキスト制約、例えばユーザが従事し得るタスクを指定するグラフコンテキスト制約を含むことができる。
[0096] 一部の例では、ユーザコンテキストクエリの1つ又は複数の制約が、ユーザコンテキストクエリを発行したコンピュータサービスの状態データに基づき得る。一部の例では、コンピュータサービスの状態データが自然言語特徴(例えば意図、エンティティ、又はトピック)を含み、1つ又は複数の制約が自然言語特徴の指示を含む。例えばコンピュータサービスが電子メールプログラムである場合、ユーザコンテキストクエリの1つ又は複数の制約は、1)ユーザが電子メールを書き始める時間に基づく時間制約、2)電子メールの件名のトピックを示すグラフコンテキスト制約、及び3)電子メールの受信者を示すグラフコンテキスト制約を含み得る。従って、ユーザコンテキストクエリに応じて選択されるユーザ中心型ファクトのサブセットは(タイムスタンプに基づいて)現在の且つ(トピック及び受信者に基づいて)電子メールを書くユーザのタスクに関係する可能性が高いユーザ中心型ファクトを含み得る。
[0097] クエリに応じてユーザ中心型ファクトのサブセットを選択した後、将来同じクエリに即座に応答できるようにするために、ユーザ中心型ファクトのサブセットはキャッシュに入れることができる。従って1506で、方法1500はクエリをキャッシュクエリとしてキャッシュに入れ、クエリに応じたユーザ中心型ファクトのサブセットをキャッシュ応答としてキャッシュに入れることを任意選択的に含む。次いで1507で、方法1500はクエリに応じてユーザ中心型ファクトのサブセットを出力することを含み、これはユーザ中心型ファクトの選択されたサブセットを直接出力すること、又はユーザ中心型ファクトの選択されたサブセットをキャッシュに入れた後、結果として生じるユーザ中心型ファクトのキャッシュ済みサブセットを出力することを含み得る。
[0098] グラフデータ構造が暗号化ユーザ中心型ファクトを含む場合、1つ又は複数の暗号化ユーザ中心型ファクトが除外されたことを明かすことなしに1つ又は複数の暗号化ユーザ中心型ファクトを除外し且つ他のユーザ中心型ファクトを含むフィルタ済みのグラフデータ構造を作成するために、グラフデータ構造をフィルタにかけることができる。例えば、除外される暗号化ユーザ中心型ファクトは(例えばクエリに応じて暗号化ユーザ中心型ファクトを選択することによって、又は特定の時間/日付の範囲から暗号化ユーザ中心型ファクトを選択することによって)ユーザによって選択され得る。フィルタ済みのグラフデータ構造はクエリに回答するために依然として使用可能であり得るが、暗号化ユーザ中心型ファクトの何れも回答には含めない。除外されるユーザ中心型ファクトが欠如していることを決して示さずに、フィルタ済みのグラフデータ構造は除外されるユーザ中心型ファクトを省く。例えば回答は、1つ又は複数の暗号化ユーザ中心型ファクトが存在したが編集されたことを示さない。代わりに回答は、ことによると他のユーザ中心型ファクトを含めながら、1つ又は複数の暗号化ユーザ中心型ファクトを単に省く。
[0099] 上記で説明したグラフデータ構造を活用するユーザ中心型AIナレッジベースは、ユーザと1つ又は複数のコンピュータサービスとの間の改善された対話を支援することができる。コンピュータサービスは、ユーザ中心型AIナレッジベースにデータ(例えばユーザ中心型ファクト)を提供することによりアプリケーション固有データプロバイダとして機能することができる。或いは又は加えて、コンピュータサービスはクエリに回答するためにユーザ中心型AIナレッジベースを使用することができる。例えばコンピュータサービスは、(例えばユーザクエリに応じて)ユーザに情報を提供するためにユーザ中心型AIナレッジベースを使用できてもよい。一部の例では、ユーザ中心型AIナレッジベース内のユーザ中心型ファクトに基づいてユーザを支援するためのアクションを自動で実行するようにコンピュータサービスが構成され得る。
[00100] 複数のコンピュータサービスの各コンピュータサービスがユーザ中心型AIナレッジベースにユーザ中心型ファクトを与える場合、ユーザ中心型AIナレッジベースは複数のコンピュータサービス間の情報共有を促進することができる。従ってユーザ中心型AIナレッジベースは、1つ又は複数のコンピュータサービスが協調的なやり方でユーザを支援することを可能にし得る。例えば、第1のコンピュータサービスはユーザ中心型AIナレッジベースに1つ又は複数のユーザ中心型ファクトを提供することができ、第2のコンピュータサービスは1つ又は複数のユーザ中心型ファクトに基づいてユーザを支援するためのアクションを実行することができる。このようにして、第2のコンピュータサービスは第1のコンピュータサービスに関連する機能を、かかる機能を提供するのに必要なデータが第2のコンピュータサービス内で直接入手できない場合でも、及びかかる機能が第1のコンピュータサービスに含まれていない場合でも提供することができる。
[00101] ユーザ中心型AIナレッジベースを使用することができるコンピュータサービスの例は、1)コンピュータによるパーソナルアシスタント、2)電子メールクライアント、3)カレンダ/スケジューリングプログラム、4)ワード処理プログラム、5)プレゼンテーション編集プログラム、6)スプレッドシートプログラム、7)ダイヤグラミング/パブリッシングプログラム、8)コンピュータプログラミングのための統合開発環境(IDE)、9)ソーシャルネットワークサービス、10)職場コラボレーション環境、及び11)クラウドデータストレージ及びファイル同期プログラムを含む。但し、ユーザ中心型AIナレッジベースの利用はコンピュータサービスの上記の例に限定されず、例えばデータを提供することにより及び/又はクエリを発行することにより、如何なるコンピュータサービスもユーザ中心型AIナレッジベースを任意の適切なやり方で使用することができる。
[00102] ユーザ中心型AIナレッジベースを利用するコンピュータサービスは、ユーザ中心型AIナレッジベースを管理する組織又はエンティティによって作成され及び/又は管理されるファーストパーティコンピュータサービス、又は別の組織若しくはエンティティによって作成され及び/又は管理されるサードパーティサービスであり得る。コンピュータサービスは、ユーザ中心型AIナレッジベースの1つ又は複数のAPI(例えば更新API及びクエリAPI)によってユーザ中心型AIナレッジベースを利用することができ、各APIはファーストパーティコンピュータサービス及びサードパーティサービスを含む複数の異なるコンピュータサービスによって使用可能である。
[00103] 図16は、コンピュータによるパーソナルアシスタント1600の形を取る例示的なコンピュータサービスを示す。コンピュータによるパーソナルアシスタント1600はユーザ中心型AIナレッジベースの機能を利用することができる。例えば図13の計算環境1300では、コンピュータによるパーソナルアシスタント1600は、ユーザ中心型AIナレッジベースを実装するグラフ記憶マシン1301に通信可能に結合される。従ってコンピュータによるパーソナルアシスタントは、ユーザ中心型AIナレッジベースにユーザ中心型ファクトを提供するために、及びユーザ中心型AIナレッジベースによって応えられるクエリを発行するためにグラフ記憶マシン1301と対話するように構成され得る。コンピュータによるパーソナルアシスタント1600は、独立型のコンピュータサービス又は別のコンピュータサービス(例えば電子メール/カレンダアプリケーション、検索エンジン、統合開発環境)の支援コンポーネントであり得る。
[00104] コンピュータによるパーソナルアシスタント1600は、ユーザ入力及び/又はユーザクエリを受け付けるように構成される自然言語ユーザインタフェース1610を含む。自然言語ユーザインタフェース1610は、キーボード又はテキスト形式のユーザ入力を受け付けるように構成される他の任意のテキスト入力装置を含み得る。自然言語ユーザインタフェース1610は、会話音声を捕捉するように構成されるマイクロフォン1611を含み得る。従って、自然言語ユーザインタフェース1610によって受け付けられるユーザ入力及び/又はユーザクエリはマイクロフォンによって捕捉される会話音声を含み得る。一部の例では、自然言語ユーザインタフェース1610がユーザの会話音声を受け付け、ユーザの会話音声を表すテキストを出力するように構成される。或いは又は加えて、自然言語ユーザインタフェース1610はインク入力装置1612を含むことができ、自然言語ユーザインタフェース1610によって受け付けられるユーザ入力は、インク入力装置によって捕捉されるユーザの手書き入力及び/又はユーザのジェスチャを含み得る。「インク入力装置」は、本明細書ではユーザがインク入力を提供することを可能にし得る任意の装置又は装置の組み合わせを指すために使用することができる。例えばインク入力装置は、ディスプレイ又は他の任意の表面に対する一連の二次元位置又は三次元位置をユーザが示すことを可能にする任意の装置、例えば1)ユーザの指によって制御される容量性タッチスクリーン、2)スタイラスによって制御される容量性タッチスクリーン、3)スタイラスがタッチスクリーンに近接しているときにスタイラスの位置を検出するように構成される、スタイラス及びタッチスクリーンを含む「ホバー」装置、4)マウス、又は5)ビデオゲームコントローラを含み得る。一部の例では、インク入力装置はユーザのジェスチャを検出するように構成されるカメラを代わりに又は追加で含み得る。例えばカメラは、ユーザの手の三次元運動に基づいてジェスチャを検出するように構成され得る。或いは又は加えて、カメラ(例えばデプスカメラ)はユーザの手の動きを或る表面又は平面に対する、例えばカメラの視錐台の前面によって画定される平面に対する二次元位置として検出するように構成され得る。
[00105] コンピュータによるパーソナルアシスタント1600は、自然言語ユーザインタフェース1610において受け付けられるユーザ入力及び/又はユーザクエリのコンピュータ可読表現を出力するように構成される自然言語処理(NLP)マシン1620を更に含む。従って自然言語ユーザインタフェース1610がユーザ入力を受け付けるように構成される場合、NLPマシン1620はユーザ入力のコンピュータ可読表現を出力するように構成され、自然言語ユーザインタフェース1610がユーザクエリを受け付けるように構成される場合、NLPマシン1620はユーザクエリに基づくクエリのコンピュータ可読表現を出力するように構成される。
[00106] NLPマシン1620がユーザクエリに基づくクエリのコンピュータ可読表現を出力するように構成される場合、NLPマシン1620はユーザクエリに基づく認識されたユーザの意図を出力するように更に構成され得る。従って、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約は認識されたユーザの意図に基づく制約を含み得る。
[00107] NLPマシン1620は、ユーザによる発話によって規定される意図及び/又はエンティティを認識するために発話を構文解析するように構成され得る。発話は、(例えば文法、単語の用法、発音、及び/又は綴りに関して)適格でも適格でなくてもよい任意のユーザ入力、例えば文又は文断片である。意図はユーザが実行したい可能性があるアクションを表し、質問又はタスク、例えばレストランの予約をすること、タクシーを呼ぶこと、後でリマインダを表示すること、及び/又は質問に回答することを含み得る。エンティティは、特定の命名されたエンティティ(例えばユーザの上司であるAlice)又は特定の種類のエンティティ、例えば人、動物、同僚、場所、又は組織を表すプレースホルダを含み得る。
[00108] NLPマシン1620は、任意の適切な自然言語処理技法を利用するように構成され得る。例えばNLPマシン1620は、発話の文法構造を認識するように構成される依存関係パーサ及び/又は構成要素パーサを含み得る。NLPマシン1620は発話のセマンティックコンテンツ、例えば発話のエンティティの種類がその種類の特定のエンティティの名前と対にされることを表す、キーと値との対を認識するように更に構成され得る。一部の例では、NLPマシン1620のコンポーネント(例えば依存関係パーサ)が1つ又は複数の機械学習技術を利用することができる。かかる機械学習技術の非限定的な例は、フィードフォワードネットワーク、再帰型ニューラルネットワーク(RNN)、長・短期記憶(LSTM)、畳み込みニューラルネットワーク、サポートベクタマシン(SVM)、敵対的生成ネットワーク(GAN)、変分オートエンコーダ、Q学習、及び決定木を含み得る。記載した評価、決定、識別等を行うために、本明細書に記載の様々な識別子、エンジン、及び他の処理ブロックは、これらの又は他の任意の適切な機械学習技術を利用して教師あり学習及び/又は教師なし学習によって訓練することができる。但し、この記述はかかる評価、決定、識別等を行うための新たな技術を提案することは意図しないことを理解すべきである。代わりにこの記述は計算資源を管理することを意図し、そのため、まだ開発されていない処理モジュールを含む任意の種類の処理モジュールに適合することを意図する。
[00109] 一部の例では、NLPマシン1620が1組の既定の意図及び/又はエンティティを認識するように構成され得る。或いは又は加えて、NLPマシン1620は発話の例に基づいて訓練することができる。一部の例では、幾つかのラベル付けされた例をNLPマシン1620に供給することにより、新たな意図及び/又はエンティティを認識するようにNLPマシン1620を構成することができ、ラベル付けされた例は、関連するエンティティを示すように注釈を付けられる例示的な発話と共に認識される新たな意図を含む。NLPマシン1620の精度及び/又は性能がコンピュータによるパーソナルアシスタント1600について最適化されるように、NLPマシン1620はコンピュータによるパーソナルアシスタント1600のコンテキストで発話を構文解析する特定の目的のために訓練することができる。例えばNLPマシン1620が1つ又は複数のニューラルネットワークに基づく場合、NLPマシン1620を訓練することは誤差逆伝搬アルゴリズムを用いた確率勾配降下によって1つ又は複数のニューラルネットワークを訓練することを含み得る。
[00110] 一部の事例では、NLPマシン1620は特定の人間語、例えば英語を認識するように構成され得る。或いは又は加えて、NLPマシン1620は複数の異なる人間語を認識するように構成され得る。NLPマシン1620が複数の異なる人間語を認識するように構成される場合、NLPマシン1620は複数の異なる言語の言葉を含む発話を処理できる場合がある。
[00111] 一部の例では、コンピュータによるパーソナルアシスタント1600は、単一のエンクロージャ内に含まれるオールインワン計算装置として実装することができる。例えばオールインワン計算装置は、1つ又は複数の論理マシンと、自然言語ユーザインタフェース1610、NLPマシン1620、識別マシン1630、エンリッチメントアダプタ1640、ナレッジベース更新マシン1650、ナレッジベースクエリマシン1660、及び出力サブシステム1670の機能を提供するために論理マシンによって実行可能な命令を保持する1つ又は複数の記憶マシンとを含むことができる。一部の例では、オールインワン計算装置が1つ又は複数の入力装置(例えばマイクロフォン1611及び/又はインク入力装置1612)を追加で含むことができる。一部の例では、オールインワン計算装置が1つ又は複数の出力装置(例えば出力サブシステム1670内に含まれるディスプレイ及び/又はスピーカ)を含むことができる。或いは又は加えて、オールインワン計算装置は(例えば出力サブシステム1670の一部として)他のコンピュータサービスに通信可能に結合するように構成される通信サブシステムを含み得る。
[00112] 一部の例では、コンピュータによるパーソナルアシスタント1600の1つ又は複数のコンポーネント(例えば自然言語ユーザインタフェース1610、NLPマシン1620、識別マシン1630、エンリッチメントアダプタ1640、ナレッジベース更新マシン1650、ナレッジベースクエリマシン1660、及び/又は出力サブシステム1670)が、計算を実行し、データを変換し、1つ又は複数のコンポーネントの上記の機能を実装するために1つ又は複数の他のコンピュータサービス(例えば他の計算装置)と共働するように構成され得る。
[00113] 一例では、コンピュータによるパーソナルアシスタント1600が2つ以上の異なる計算装置にわたって実装され得る。例えばNLPマシン1620は、1つ又は複数の自然言語処理タスクを1つ又は複数のクラウドサービス、例えば図13に示す計算環境1300のクラウドサービス1311にオフロードすることができる。従って、クラウドサービス1311は上記のように自然言語を処理し、NLPマシン1620において出力されるように、コンピュータによるパーソナルアシスタント1600にユーザ入力のコンピュータ可読表現を返すように構成され得る。一部の例では、NLPマシン1620がユーザ入力を部分的に前処理してから、クラウドサービス1311によって更に処理されるように前処理済みの入力を送信することができ、及び/又はクラウドサービス1311から受信される前処理済みの入力のコンピュータ可読表現を後処理してから、前処理済みの入力の後処理したコンピュータ可読表現をNLPマシン1620において出力することができる。例えば遠隔コンピュータサービスは、MICROSOFT LUIS(商標)言語理解サービス等、自然言語入力のクラウド処理を提供するクラウドサービスであり得る。
[00114] NLPマシン1620の機能をクラウドサービス1311に上記のやり方でオフロードすることの代わりに又はそれに加えて、クラウドサービス1311又は他の任意の計算装置(例えばグラフ記憶マシン1310、アプリケーション固有データプロバイダ1321、及び/又はユーザコンピュータ1340)にタスクをオフロードするように、コンピュータによるパーソナルアシスタント1600の他の任意のコンポーネントを同様に構成することができる。このようにして、コンピュータによるパーソナルアシスタント1600のコンポーネントの機能は、他のコンピュータ装置及び/又はコンピュータサービスを利用することに加えて、コンピュータによるパーソナルアシスタント1600内に含まれるハードウェア及び/又はソフトウェアを利用することができる。
[00115] 例えばナレッジベース更新マシン1650は、例えばユーザ中心型ナレッジベースに新たなユーザ中心型ファクトを追加するグラフ記憶マシン1310にタスクをオフロードするように構成され得る。従ってユーザ中心型ナレッジベースに新たなユーザ中心型ファクトを追加するために、ナレッジベース更新マシン1650はユーザ中心型ファクトをネットワーク1310経由でグラフ記憶マシン1301に提供し、クエリに応じて選択されるユーザ中心型ファクトのサブセットを受信するように構成されてもよく、ユーザ中心型ファクトのサブセットはグラフ記憶マシン1301によって実装されるユーザ中心型AIナレッジベース内に含まれる。
[00116] 或いは又は加えて、ナレッジベースクエリマシン1660は、例えばユーザ中心型ナレッジベースによって応えられるクエリを発行するグラフ記憶マシン1310にタスクをオフロードするように構成され得る。従ってユーザ中心型ナレッジベースによって応えられるクエリを発行するために、ナレッジベースクエリマシン1660はユーザ中心型ファクトをネットワーク1310経由でグラフ記憶マシン1301に提供し、ユーザ中心型ファクトのサブセットに基づく応答(例えばユーザ中心型ファクトのサブセットに基づくクエリへのテキストによる回答)を受信するように構成され得る。
[00117] コンピュータによるパーソナルアシスタント1600は、ユーザ入力を特定のユーザに関連付けるように構成される識別マシン1630を更に含む。識別マシン1630は、ユーザの正体を明らかにするために任意の適切な情報を使用することができる。例えば自然言語ユーザインタフェース1610がマイクロフォンを含み、ユーザ入力が会話音声を含む場合、識別マシン1630は会話音声に基づいてユーザを区別するように構成される話者認識エンジンを含むことができる。或いは又は加えて、コンピュータによるパーソナルアシスタント1600が(例えば自然言語ユーザインタフェース1610の一部として)カメラを含む場合、識別マシン1630はユーザの顔写真に基づいてユーザを区別するように構成される顔認識エンジンを含むことができる。或いは又は加えて、識別マシン1630は生体認証情報(例えばユーザの指紋)を受信し、生体認証情報に基づいてユーザを区別するように構成され得る。或いは又は加えて、識別マシン1630は識別情報(例えばユーザ名及びパスワード等のログイン情報)を提供するようユーザを促すように構成され得る。
[00118] ユーザ中心型AIナレッジベースが1つ又は複数の暗号化ユーザ中心型ファクトを含む例では、特定のユーザに関連する資格情報によって1つ又は複数の暗号化ユーザ中心型ファクトへのアクセスを制約することができる。従って、特定のユーザに関連するコンピュータによるパーソナルアシスタントは、ユーザ中心型AIナレッジベースにアクセスする(例えば読み取る及び/又は修正する)ために資格情報を提供する必要があり得る。従って識別マシン1630は特定のユーザを識別し、特定のユーザに関連する資格情報を供給するように構成され得る。例えば識別マシン1630は、コンピュータによるパーソナルアシスタント1600がユーザ中心型AIナレッジベースにユーザ中心型ファクトを提供するとき、又はユーザ中心型AIナレッジベースによって応えられるクエリを発行するとき資格情報を供給するために、資格情報を例えばデジタル証明書として記憶することができる。
[00119] 任意選択的に一部の例では、コンピュータによるパーソナルアシスタント1600は、ユーザ入力のコンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタ1640を更に含み、新たな又は更新済みのユーザ中心型ファクトはエンリッチメントアダプタによって出力されるエンリッチメントを含む。例えばエンリッチメントアダプタ1640は、図14に関して上記で説明したエンリッチメントの何れか、例えば1)命名されたエンティティ、2)意図、3)イベント及びタスク、4)トピック、5)位置、及び/又は6)日付及び時間を追加するように構成され得る。一部の例ではエンリッチメントアダプタ1640は、エンリッチメントを出力するようにそれぞれ構成される複数のエンリッチメントアダプタを含むエンリッチメントパイプラインであり、新たな又は更新済みのユーザ中心型ファクトはエンリッチメントパイプラインの各エンリッチメントアダプタによって出力されるエンリッチメントの全てを含む。
[00120] 任意選択的に一部の例では、コンピュータによるパーソナルアシスタント1600が、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型AIナレッジベースを更新するように構成されるナレッジベース更新マシン1650を更に含む。ナレッジベース更新マシン1650は、更新プロトコル(例えば更新API)によってユーザ中心型AIナレッジベースを更新することができる。更新プロトコルは、複数の異なるコンピュータサービスによって使用可能であり得る。図14に関して上記で説明したように、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約することができる。
[00121] 任意選択的に一部の例では、コンピュータによるパーソナルアシスタント1600が、特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリするように、及びユーザクエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力するように構成されるナレッジベースクエリマシン1660を更に含む。ナレッジベースクエリマシンは、複数の異なるコンピュータサービスによって使用可能なクエリプロトコル(例えばクエリAPI)によってユーザ中心型AIナレッジベースをクエリするように構成され得る。
[00122] 一部の例では、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約が回答の種類の制約を含むことができ、従ってユーザ中心型ファクトのサブセットは回答の種類の制約を満たすユーザ中心型ファクトだけを含み得る。或いは又は加えて、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約はグラフコンテキスト制約を含むことができ、従ってユーザ中心型ファクトのサブセットはグラフコンテキスト制約を満たすユーザ中心型AIナレッジベース内のコンテキスト化ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含み得る。従って、ユーザ中心型ファクトのサブセットは図15に関して上記で説明したように決定することができる。
[00123] 一部の例では、クエリはユーザの現在のコンテキストを決定するためのユーザコンテキストクエリである。従って、ユーザ中心型ファクトのサブセットは図15に関して上記で説明したようにユーザの現在のコンテキストに関係する1つ又は複数のユーザ中心型ファクトを含み得る。クエリがユーザコンテキストクエリである場合、クエリのコンピュータ可読表現は、自然言語ユーザインタフェース1610において受け付けられる及び/又はNLPマシン1620において解釈される如何なるユーザクエリとも無関係であり得る。代わりにユーザコンテキストクエリは、コンピュータによるパーソナルアシスタントが入手可能な任意の適切なデータ(例えばGPSデータ等のセンサデータ、時間/日付データ、コンピュータによるパーソナルアシスタントの状態データ、及び/又は他の任意の共働コンピュータサービス(例えばユーザ中心型AIナレッジベースにユーザ中心型ファクトを提供することによってコンピュータによるパーソナルアシスタントとデータを共有するように構成されるコンピュータサービス、及び/又はコンピュータによるパーソナルアシスタントによって制御され得るコンピュータサービス)の状態データ)に基づいて自動で発行され得る。
[00124] 任意選択的に一部の例では、コンピュータによるパーソナルアシスタント1600がデータ、例えばナレッジベースクエリマシンによって出力されるクエリへの応答を出力するように構成される出力サブシステム1670を含む。例えば出力サブシステム1670は、クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づいて会話音声を生成するように構成される音声合成エンジン、及び会話音声を出力するように構成されるスピーカを含み得る。一部の例では、出力サブシステム1670が、クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づいてテキストによる回答を視覚的に提示するように構成されるディスプレイを含み得る。一部の例では、ディスプレイはユーザ中心型ファクトのサブセットをグラフ形式で(例えばユーザ中心型ファクトのサブセットを含むグラフデータ構造のグラフ表現として、又は時系列順に配置されたユーザ中心型ファクトを含むタイムラインとして)直接視覚的に提示するように構成され得る。
[00125] 一部の例では、ナレッジベースクエリマシンによって出力される応答は、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションを共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を含む。例えば共働コンピュータサービスは、コンピュータによるパーソナルアシスタントを実装する1つ又は複数の装置上で実行されるソフトウェアアプリケーションであり得る。他の例では、共働コンピュータサービスは、コンピュータネットワークを介してアクセス可能なネットワーク化されたコンピュータサービスであり得る。従って出力サブシステム1670は、共働コンピュータサービスにコンピュータ可読命令を伝えるためにコンピュータネットワークに通信可能に結合するように構成される通信装置(例えば無線ラジオ)を含み得る。
[00126] 一部の例では、ユーザを支援するために共働コンピュータサービスによって実行されるアクションは、(例えばクエリが特定の優先設定を変更するための要求を含む場合)クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットに基づいて共働コンピュータサービスの優先設定を変更することを含む。
[00127] 一部の例では、ユーザを支援するために共働コンピュータサービスによって実行されるアクションが共働コンピュータサービスの状態データの表現を視覚的に提示することを含み、共働コンピュータサービスの状態データはクエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに関係する。
[00128] 図16は独立型のコンピュータによるパーソナルアシスタントを示すが、他の任意のコンピュータサービスが図16に図示されているコンポーネント(例えば自然言語ユーザインタフェース、NLPマシン、識別マシン、エンリッチメントアダプタ、ナレッジベース更新マシン、ナレッジベースクエリマシン、及び/又は出力サブシステム)の任意のサブセットを含み得る。かかるコンポーネントは、コンピュータによるパーソナルアシスタントに関して説明したように(例えばユーザ中心型AIナレッジベースにデータを提供することによって、及びユーザ中心型AIナレッジベースを使用してクエリに応えることによって)ユーザ中心型AIナレッジベースを使用することを助けることができる。ユーザ中心型AIナレッジベースを利用する如何なるコンピュータサービスも、そのサービスが独立型サービスであろうと異なる主要機能を有する別のコンピュータサービス(例えば電子メール/カレンダアプリケーション、検索エンジン、統合開発環境)の支援コンポーネントであろうと、コンピュータによるパーソナルアシスタントである。
[00129] 一例では、ユーザが電子メールプログラム内で「ウィジェット開発の週次報告」という件名の電子メールを書いており、ユーザの上司であるAliceが受信者として選択されている。ユーザは電子メールを完成させるための提案を得るために「分析」ボタンをクリックすることができる。従って、電子メールプログラムはユーザ中心型AIナレッジベースによって応えられるコンテキストクエリを発行することができる。コンテキストクエリは電子メールプログラムの状態を示すことができる。更に、コンテキストクエリはアプリケーションの状態(例えば電子メールの件名のコンテンツ)に基づく1つ又は複数の自然言語特徴を含むことができる。例えば1つ又は複数の自然言語特徴は、認識された意図(例えば「情報を見つける」)、認識されたトピック(「ウィジェット」)、及び認識されたエンティティ(例えばユーザの上司であるAlice)を含み得る。従って、クエリに応じて選択されるユーザ中心型ファクトのサブセットは、「ウィジェット」に関係するユーザ中心型ファクトに加えてユーザの上司であるAliceとのユーザの対話に関連するユーザ中心型ファクトを含み得る。
[00130] クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づき、電子メールプログラムはユーザ中心型ファクトのサブセットに基づく1つ又は複数の提案を表示することができる。例えば電子メールプログラムは、ユーザが電子メールの作成中に参考にしたい及び/又は電子メールに添付したい可能性がある1つ又は複数の関連ファイル、例えば「ウィジェット報告」スプレッドシートファイル及び「ウィジェット開発メモ」文書ファイルを表示することができる。或いは又は加えて、電子メールプログラムは「ウィジェット」に関する週次報告及び/又は「ウィジェット」全般に関し得るユーザのウェブ検索履歴から1つ又は複数のリンクを表示することができる。或いは又は加えて、電子メールプログラムは1つ又は複数の関連する電子メール、例えば「翌月の推定開発費用を今週の報告に含めてください」というAliceからの電子メールを表示することができる。或いは又は加えて、電子メールプログラムは電子メールに関連し得る他のユーザ、例えばAliceの同僚のBob及び常駐ウィジェットの専門家であるCharlieの1つ又は複数の電子メールアドレスを表示することができる。或いは又は加えて、電子メールプログラムはユーザがAliceとの会議を予定に入れることを提案することができる。電子メールプログラムは、例えばユーザの可用性に関するユーザのユーザ中心型AIナレッジベース内のユーザ中心型ファクトに基づいて、及びAliceの可用性に関する企業ナレッジベース内の更なるユーザ中心型ファクトに基づいて特定の会議時間を提案するように構成され得る。
[00131] ユーザ中心型AIナレッジベースを利用するように構成されるコンピュータサービスは、図16に示すコンポーネント及び構成に限定されることなしに任意の適切なやり方で実装し及び/又は構成することができる。従って、図17はコンピュータサービスがユーザ中心型AIナレッジベースにデータを提供するための例示的方法1700を示し、図18はコンピュータサービスがユーザ中心型AIナレッジベースを使用してクエリに応えるための例示的方法1800を示す。方法1700及び方法1800は、AIナレッジベースに適合する任意のコンピュータサービスと共働で、図16のコンピュータによるパーソナルアシスタント1600等の任意の適切な計算装置及び/又はコンピュータサービスによって実施することができる。
[00132] 1701で、図17の方法1700は、コンピュータサービスの特定のユーザに関連するユーザ入力のコンピュータ可読表現を認識することを含む。
[00133] 任意選択的に一部の例では、1702で、図16のコンピュータによるパーソナルアシスタント1600の自然言語ユーザインタフェース1610等の自然言語ユーザインタフェースによってユーザ入力を受け付ける。一部の例では、ユーザ入力を特定のユーザに関連付けるように構成される、図16の識別マシン1630等の識別マシンによってコンピュータサービスの特定のユーザが認識される。
[00134] 任意選択的に一部の例では1703で、ユーザ入力に基づき、ユーザ入力のコンピュータ可読表現をNLPマシンによって出力する。例えば図16に示すコンピュータによるパーソナルアシスタント1600は、ユーザ入力のコンピュータ可読表現をNLPマシン1620によって出力するように構成され得る。
[00135] 1704で、方法1700は、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型AIナレッジベースを更新することを含む。「新たなユーザ中心型ファクト」は、本明細書ではユーザ中心型AIナレッジベース内にまだ含まれていない任意のユーザ中心型ファクト、例えばユーザ中心型AIナレッジベース内の他の如何なるユーザ中心型ファクトにもまだ含まれていない主語及び/又は目的語を含むユーザ中心型ファクト、又はユーザ中心型AIナレッジベース内の主語と目的語との間の新たなエッジを含むユーザ中心型ファクトを指すために使用する。「更新済みのユーザ中心型ファクト」は、本明細書ではユーザ中心型AIナレッジベース内で既に規定されていたユーザ中心型ファクトの修正、例えば1つ又は複数の新たなタグ及び/又はエンリッチメントを含めるためのユーザ中心型ファクトの修正を指すために使用する。一部の例では、ユーザ中心型AIナレッジベースが、図16のナレッジベース更新マシン1650等のナレッジベース更新マシンによって更新される。
[00136] 任意選択的に一部の例では、1705で、新たな又は更新済みのユーザ中心型ファクトはユーザ入力のコンピュータ可読表現に基づくエンリッチメントを含む。例えば図16のコンピュータによるパーソナルアシスタント1600は、ユーザ入力のコンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタを含む。他の例では、コンピュータサービスが如何なるエンリッチメントアダプタも含まなくてもよいが、それでもなお新たな又は更新済みのユーザ中心型ファクトはエンリッチメントを含むことができ、例えばエンリッチメントはユーザ中心型AIナレッジベースの実装に含まれるグラフ記憶マシンのエンリッチメントアダプタによって新たな又は更新済みのユーザ中心型ファクトに追加され得る。
[00137] 1706で、複数の異なるコンピュータサービスによって使用可能な更新プロトコル(例えば図14に関して上記で説明した更新API)によってユーザ中心型AIナレッジベースを更新することができる。1707で、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約することができる。例えば図16のコンピュータによるパーソナルアシスタント1600は、更新APIによってユーザ中心型AIナレッジベースを更新するように構成されるナレッジベース更新マシン1650を含む。
[00138] 図18は、コンピュータサービスがユーザ中心型AIナレッジベースを使用してクエリに応えるための例示的方法1800を示す。
[00139] 1801で、方法1800は、コンピュータサービスの特定のユーザに関連するクエリのコンピュータ可読表現を認識することを含む。一部の例では特定のユーザが識別マシン、例えば図16の識別マシン1630によって認識され得る。一部の例では、特定のユーザがコンピュータサービスに関連するログイン情報に基づいて、及び/又はコンピュータサービスを実行するコンピュータ装置(例えば携帯電話)のユーザの所有権に基づいて認識され得る。
[00140] 任意選択的に1802で、クエリは自然言語ユーザインタフェース、例えば図16の自然言語ユーザインタフェース1610によって受け付けられるユーザクエリである。従って1803で、ユーザクエリに基づき、クエリのコンピュータ可読表現を図16のNLPマシン1620等のNLPマシンによって出力することができる。一部の例では、クエリがユーザクエリの自然言語特徴に基づく、例えばユーザクエリから認識される意図、トピック、及び/又はエンティティに基づく制約を含む。例えば「ウィジェットの専門家は誰ですか」とユーザが尋ねた場合、クエリは回答が「ウィジェット」に関係すべきであることを示すグラフコンテキスト制約を含むことができ、ユーザの意図が特定の人を探すことであったと認識することに基づき、回答の種類の制約は主語及び/又は目的語が人であるユーザ中心型ファクトを回答が含むべきであることを示す。
[00141] 一部の例では、クエリがユーザの現在のコンテキストを決定するためのユーザコンテキストクエリでもよく、従ってユーザ中心型ファクトのサブセットは現在のコンテキストに関係する1つ又は複数のユーザ中心型ファクトを含み得る。一部の例ではクエリがコンピュータサービスの状態を示すことができ、従って現在のコンテキストに関係する1つ又は複数のユーザ中心型ファクトはコンピュータサービスの状態に関係するユーザ中心型ファクトを含み得る。一部の例では、方法1800は、コンピュータサービスの状態によって規定される自然言語特徴のコンピュータ可読表現を認識することを更に含み、従って1つ又は複数の制約は自然言語特徴に基づく制約を含む。一部の例では、自然言語特徴のコンピュータ可読表現を認識することが、図16のNLPマシン1620等のNLPマシンによって実行され得る。
[00142] 1804で、方法1800は、複数の異なるコンピュータサービスによって使用可能なクエリプロトコル(例えば図15に関して上記で説明したクエリAPI)によって特定のユーザに関連するユーザ中心型AIナレッジベースをクエリすることを含む。一部の例では、ユーザ中心型AIナレッジベースをクエリすることが、図16のナレッジベースクエリマシン1660等のナレッジベースクエリマシンによって実行され得る。
[00143] 1805で、複数の異なるコンピュータサービスによって使用可能な更新プロトコル(例えば図14に関して上記で説明した更新API)によって新たな又は更新済みのユーザ中心型ファクトを含むようにユーザ中心型AIナレッジベースを更新可能であり得る。1806で、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約することができる。
[00144] 1807で、方法1800は、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力することを含む。
[00145] 1808で、方法1800は、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションをコンピュータサービス又は共働コンピュータサービスに実行させることを任意選択的に含む。ユーザを支援するためのアクションをコンピュータサービスに実行させることは、ユーザを支援するためのアクションをコンピュータサービス又は共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を出力することを含み得る。
[00146] 一部の例では、ユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットに基づく応答が出力サブシステム、例えば図16の出力サブシステム1670によって出力される。例えば出力サブシステム1670は、共働コンピュータサービスを実装する共働コンピュータ装置にコンピュータネットワークを介して通信可能に結合される通信サブシステムを含み得る。従ってコンピュータ可読命令を出力することは、コンピュータネットワークを介して共働コンピュータ装置にコンピュータ可読命令を送信することを含み得る。一部の例では出力サブシステム1670がディスプレイ装置を含むことができ、コンピュータ可読命令はコンピュータサービスの状態データの表示をディスプレイ装置に視覚的に提示させるように構成することができ、状態データはクエリによって規定される1つ又は複数の制約を満たすユーザ中心型AIナレッジベース内のユーザ中心型ファクトのサブセットに関係する。或いは又は加えて、出力サブシステム1670はスピーカを含むことができ、コンピュータ可読命令はコンピュータサービスの状態データを表す会話音声を生成するように、及び会話音声をスピーカに出力させるように構成され得る。
[00147] 一部の例では、コンピュータサービスが(例えば方法1700に従って、又はユーザ中心型AIナレッジベースの更新プロトコルを使用する他の任意の適切なやり方で)ユーザ中心型AIナレッジベースにファクトを自動で提供することができる。例えばコンピュータサービスは、コンピュータサービスのユーザのコンテキストに関係し得るファクトを提供するためにコンピュータサービスのセンサデータ及び/又は状態データ、例えばユーザの位置を示すGPSデータ及び現在時間を示すクロックデータを継続的にモニタすることができる。或いは又は加えて、一部の例ではコンピュータサービスが(例えば方法1800に従って、又はユーザ中心型AIナレッジベースのクエリプロトコルを使用する他の任意の適切なやり方で)ユーザ中心型AIナレッジベースによって応えられるクエリを自動で発行することができる。例えばコンピュータサービスはユーザのコンテキストをモニタするために、スケジュールに従ってユーザコンテキストクエリを(例えばコンテキストに関係するアクションを自動で実行するために)繰り返し発行することができる。
[00148] コンピュータによるパーソナルアシスタント1600は、(例えばユーザに情報を提供することによって、又はユーザのためにタスクを自動で実行することによって)広範な支援をユーザに提供することができる。一例ではコンピュータによるパーソナルアシスタント1600は、電子メールプログラム及びユーザ1690に属するユーザ装置(例えば携帯電話)の位置を示す全地球測位システム(GPS)データを出力するように構成されるセンサモニタリングプログラムを含む他の複数のコンピュータサービスと共働するように構成され得る。コンピュータによるパーソナルアシスタント1600、電子メールプログラム、及びセンサモニタリングプログラムは、例えば方法1700に従ってユーザ中心型AIナレッジベースに1つ又は複数のユーザ中心型ファクトをそれぞれ提供することができる。例えば電子メールプログラムは、ユーザが電子メールを送信する度にユーザ中心型AIナレッジベースに新たなユーザ中心型ファクトを提供することができる。新たなユーザ中心型ファクトは、ユーザ1690の正体を示す目的語グラフノード、電子メールの受信者を示す主語グラフノード、及び「電子メール送信済み」の関係を示すエッジを含み得る。新たなユーザ中心型ファクトは1つ又は複数のエンリッチメント、例えば電子メールの認識されたトピック及び電子メールが送信された時間を示すタイムスタンプを示すエンリッチメントを含むことができる。センサモニタリングプログラムは、例えばユーザの携帯電話の位置を継続的にモニタし、ユーザの携帯電話の位置が変わる度にユーザの携帯電話の位置及び対応するタイムスタンプを示す新たなユーザ中心型ファクトを提供することにより、ユーザ中心型AIナレッジベースに1つ又は複数の新たなユーザ中心型ファクトを提供することもできる。従ってユーザ中心型AIナレッジベースは、ユーザ1690の携帯電話の位置を示す複数のユーザ中心型ファクト、及びユーザ1690が送信した各電子メールを示す複数のユーザ中心型ファクトを含むことができる。
[00149] 更にユーザ中心型AIナレッジベースは、電子メールプログラムによって追加される新たなユーザ中心型ファクト及びセンサモニタリングプログラムによって追加される新たなユーザ中心型ファクトのエンリッチメントに基づく追加のユーザ中心型ファクト(例えばグラフ記憶コンピュータ1301によって追加される)を含むことができる。例えばユーザ中心型AIナレッジベースは、電子メールに関連するタイムスタンプとセンサモニタリングプログラムによって提供されるファクトに関連するタイムスタンプとを比較することに基づき、電子メールが特定の位置から送信された可能性が高いことを示す更なるファクトを含み得る。
[00150] コンピュータによるパーソナルアシスタント1600は、ユーザ1690の職場の位置を突き止めるために、(例えば方法1800により)ユーザ中心型AIナレッジベースによって応えられるクエリを後で発行することができる。例えばそのクエリは、「仕事関連の電子メール」を示すグラフコンテキスト制約、及び「位置」を示す回答の種類の制約を含むことができる。従って、クエリに応じて選択されるユーザ中心型ファクトのサブセットは、ユーザ1690が1つ又は複数の仕事関連の電子メールを送信した可能性がある位置を含み得る。ユーザ中心型ファクトのサブセットに基づき、コンピュータによるパーソナルアシスタント1600は仕事関連の電子メールの大部分が特定の位置から特定の時間範囲内で送信されていたことを認識することができる。従ってコンピュータによるパーソナルアシスタント1600は、ユーザ1690の職場の位置及びユーザ1690の仕事のスケジュールを認識することができる。
[00151] 後に同様のやり方で、ユーザ中心型AIナレッジベースは、ユーザ1690が特定の位置から夜に(例えば自分の携帯電話上で)アラームを頻繁に設定し、翌朝にそのアラームを止めることを示すユーザ中心型ファクトを含むことができる。従ってコンピュータによるパーソナルアシスタント1600は、アラームの位置及びタイミングに関するクエリを発行することができる。クエリへの応答に基づき、コンピュータによるパーソナルアシスタント1600はユーザ1690の自宅位置及びユーザ1690の睡眠スケジュールを認識することができる。
[00152] コンピュータによるパーソナルアシスタント1600は、(例えば方法1700に従ってクエリを発行することにより)ユーザ中心型AIナレッジベース内のユーザ中心型ファクトの1つ又は複数の側面を認識することに基づいて様々なタスクでユーザを自動で支援可能であり得る。例えばコンピュータによるパーソナルアシスタント1600が上記のようにユーザ1690の仕事及び睡眠のスケジュールを認識する場合、コンピュータによるパーソナルアシスタント1600は、ユーザの典型的なスケジューリングの基本設定に従ってユーザのためにアラームをデフォルトで設定可能であり得る。
[00153] 図16に示すような一部の例では、コンピュータによるパーソナルアシスタント1600は、ユーザ中心型ファクトの1つ又は複数の側面に基づいてユーザクエリに対する高度な応答を提供可能であり得る。例えばユーザ1690は、会話の吹き出し1691に示すように「職場の近くにあるいいレストランは何処ですか」とコンピュータによるパーソナルアシスタント1600に尋ねることができる。それに応じてコンピュータによるパーソナルアシスタント1600は(例えば方法1800に従って1801で)クエリのコンピュータ可読表現を認識することができる。コンピュータによるパーソナルアシスタント1600は、ユーザ中心型AIナレッジベースによって応えられるクエリを(例えば1804で説明したように複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによって)発行することができる。クエリは、「職場の近く」を示すグラフコンテキスト制約及び「レストラン」を示す回答の種類の制約を含むことができる。従ってコンピュータによるパーソナルアシスタント1600は、グラフコンテキスト制約及び回答の種類の制約を満たすユーザ中心型ファクトのサブセットに基づいて(例えば1807で説明したように)クエリへの応答を出力することができる。例えばコンピュータによるパーソナルアシスタント1600は、ユーザ1690の職場の便利な距離の範囲内にある1つ又は複数のレストランを提案することができる。
[00154] 一部の例では、コンピュータによるパーソナルアシスタント1600が、ユーザ1690の基本設定に従って選択を行うためにユーザ1690に更に多くの情報を要求することができる。例えばユーザ1690が職場の近くのいいレストランを探すように尋ねる場合、クエリに応じて選択されるユーザ中心型ファクトのサブセットは同様の距離内にある複数の異なるレストランを示すことができる。従って、コンピュータによるパーソナルアシスタント1600は特定のレストランを示す、例えば会話の吹き出し1692内に示す「「ブリトーのレストラン」はどうですか」という、続いての質問を尋ねることができる。
[00155] 一部の例では、コンピュータによるパーソナルアシスタント1600が、(例えば方法1700及び1800に従って)ユーザクエリに回答する過程でユーザ中心型AIナレッジベースに1つ又は複数の追加のユーザ中心型ファクトを提供することができる。例えばユーザ1690は、会話の吹き出し1693内に示すように「私はブリトーが好きではありません」と言うことにより、「「ブリトーのレストラン」はどうですか」(会話の吹き出し1692に示す)という質問に回答することができる。従って、コンピュータによるパーソナルアシスタント1600はユーザがブリトーを好きではないことを示す新たなファクトをユーザ中心型AIナレッジベースに追加することができる。
[00156] ユーザの好みを満たすレストランの選択を決定するために、コンピュータによるパーソナルアシスタント1600は続いての、例えば会話の吹き出し1694内に示す「「寿司のレストラン」はどうですか」という追加の質問を尋ねることができる。ユーザ1690が会話の吹き出し1695内に示すように「はい、仕事後の席を予約してください」と答える場合、コンピュータによるパーソナルアシスタント1600はユーザ1690の仕事のスケジュールを認識することに基づいて予約を行う時間を推論することができる。
[00157] ユーザ1690の仕事のスケジュールを考慮することに加えて、ユーザ中心型AIナレッジベースはコンピュータによるパーソナルアシスタント1600が他の潜在的に関連する要素、例えばユーザ中心型AIナレッジベース内に含まれる1つ又は複数のユーザ中心型ファクトに関連する要素を考慮することを可能にし得る。例えばユーザ中心型AIナレッジベースはユーザ1690が一般に食事をとることを好む時間を表すユーザ中心型ファクトを含み得る。一部の例では、ユーザ中心型AIナレッジベースはユーザ中心型ナレッジベース外の追加のファクトに基づいて決定される要素、例えばユーザの位置に関連するGPSデータ及び認識済みの仕事のスケジュールに基づいて割り出されるユーザ1690の職場から「寿司のレストラン」までの予測移動時間を考慮することができる。例えばコンピュータによるパーソナルアシスタント1600は地理位置情報及び移動計画機能を提供する地図サービスのAPIによって予測移動時間を割り出すように構成され得る。
[00158] ユーザ1690が一般に職場を離れる時間、ユーザ1690が一般に食事をとることを好む時間、及びユーザ1690の職場から「寿司のレストラン」までの予測移動時間に基づき、コンピュータによるパーソナルアシスタント1600は適切な予約時間、例えば6PMを求めることができる。従って、一連のユーザクエリ及びユーザ入力に応答し、コンピュータによるパーソナルアシスタントは会話の吹き出し1696内にあるように予約が行われたことを確認するための応答を(例えば方法1800に従って1807で)出力することができる。更にコンピュータによるパーソナルアシスタント1600は、(例えば方法1800に従って1808で)ユーザを支援するためのアクションをコンピュータによるパーソナルアシスタント1600及び/又は他の共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を出力することができる。例えばコンピュータによるパーソナルアシスタント1600は、(例えば予約を行うためのAPIを提供するレストラン予約サービスによって)予約を手配するように構成されるコンピュータ可読命令を出力することができる。加えてコンピュータによるパーソナルアシスタント1600は、ユーザ中心型AIナレッジベースに追加することができる1つ又は複数の新たな、即ちユーザ1690が寿司を好きであるというユーザ中心型ファクトを認識することができる。
[00159] ユーザ1690と対話しユーザ1690を支援することに基づき、コンピュータによるパーソナルアシスタント1600及び他のコンピュータサービスはユーザ中心型AIナレッジベースに新たなユーザ中心型ファクトを継続的に追加し、ユーザ中心型AIナレッジベース内のユーザ中心型ファクトに基づいて十分な情報を得た上での決定を行うためにクエリを発行することができる。従って、ユーザ中心型AIナレッジベースはコンピュータによるパーソナルアシスタント1600及び他のコンピュータサービスが継続的に改善すること、及びユーザ1690の好みに従ってユーザ1690に支援を提供することを可能にし得る。
[00160] 一部の例ではコンピュータによるパーソナルアシスタント1600は、各クエリに応じて選択されるユーザ中心型ファクトのサブセットに基づき、ユーザ1690を支援するためのアクションを自動で実行するために(例えばスケジュールに従って)一連のクエリを自動で発行することができる。例えばユーザ1690が「寿司のレストラン」のレストラン予約を6:00PMにしている場合、コンピュータによるパーソナルアシスタント1600は5:30PMから6:00PMの間にユーザコンテキストクエリを2分間隔で繰り返し発行するように構成され得る。ユーザコンテキストクエリは現在時間、ユーザ1690の現在の活動、及び/又はGPSデータに基づくユーザの位置に関係する制約を含むことができ、ユーザコンテキストクエリに応じて選択されるユーザ中心型ファクトのサブセットは、例えばタイムスタンプ及び位置情報の類似性に基づくレストランの予約に関係する1つ又は複数のユーザ中心型ファクトを含むことができる。後にユーザ1690は5:50PMに職場を離れ、「寿司のレストラン」に向けて移動することができる。従ってコンピュータによるパーソナルアシスタント1600は、ユーザ1690がレストランに近づいていることを認識し、関連情報、例えば予約の確認、レストランのメニュー、及び目的地までの方向を示す地図を視覚的に提示することによってユーザ1690を自動で支援することができる。
[00161] 一部の実施形態では、本明細書に記載の方法及びプロセスは1つ又は複数の計算装置の計算システムに結び付けることができる。具体的には、かかる方法及びプロセスはコンピュータアプリケーションプログラム又はサービス、アプリケーションプログラミングインタフェース(API)、ライブラリ、及び/又は他のコンピュータプログラム製品として実装することができる。
[00162] 図19は、上記の方法及びプロセスの1つ又は複数を遂行することができる計算システム1900の非限定的な実施形態を概略的に示す。例えば計算システム1900は、グラフ記憶マシン1301、アプリケーション固有データプロバイダコンピュータ1321、又はユーザコンピュータ1340として働くことができる。一部の例では、計算システム1900が(例えば方法1700若しくは方法1800に従って、又はユーザ中心型AIナレッジベースの更新プロトコル及び/又はクエリプロトコルを用いる他の任意の適切なやり方で)ユーザ中心型AIナレッジベースを使用するように構成される、コンピュータによるパーソナルアシスタント1600又は他の任意のコンピュータサービスの機能を提供し得る。計算システム1900は単純化した形式で図示してある。計算システム1900は、1つ又は複数のパーソナルコンピュータ、サーバコンピュータ、タブレットコンピュータ、家庭用娯楽コンピュータ、ネットワーク計算装置、ゲーム機、モバイル計算装置、モバイル通信装置(例えばスマートフォン)、及び/又は他の計算装置の形を取り得る。
[00163] 計算システム1900は、論理マシン1901及び記憶マシン1902を含む。計算システム1900は、ディスプレイサブシステム1903、入力サブシステム1904、通信サブシステム1905、及び/又は図19に不図示の他のコンポーネントを任意選択的に含み得る。
[00164] 論理マシン1901は、命令を実行するように構成される1つ又は複数の物理装置を含む。例えば論理マシンは、1つ又は複数のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造、又は他の論理構造の一部である命令を実行するように構成され得る。かかる命令は、タスクを実行するために、データ型を実装するために、1つ又は複数のコンポーネントの状態を変えるために、技術的効果を実現するために、或いは所望の結果に到達するために実装され得る。
[00165] 論理マシンは、ソフトウェア命令を実行するように構成される1つ又は複数のプロセッサを含み得る。加えて又は或いは、論理マシンはハードウェア又はファームウェア命令を実行するように構成される1つ又は複数のハードウェア又はファームウェア論理マシンを含むことができる。論理マシンのプロセッサはシングルコア又はマルチコアとすることができ、そこで実行される命令は逐次処理、並列処理、及び/又は分散処理に関して構成され得る。論理マシンの個々のコンポーネントは、離れて位置し及び/又は協調処理について構成され得る2つ以上の別個の装置間に任意選択的に分散され得る。論理マシンの側面は仮想化し、クラウドコンピューティング構成内で構成される遠隔アクセス可能なネットワーク化された計算装置によって実行され得る。
[00166] 記憶マシン1902は、本明細書に記載の方法及びプロセスを実施するために論理マシンによって実行可能な命令を保持するように構成される1つ又は複数の物理装置を含む。かかる方法及びプロセスを実施するとき、例えば様々なデータを保持するように記憶マシン1902の状態を変えることができる。
[00167] 記憶マシン1902は、リムーバブル装置及び/又は組み込み装置を含み得る。記憶マシン1902は、とりわけ光学メモリ(例えばCD、DVD、HD−DVD、Blu-Rayディスク等)、半導体メモリ(例えばRAM、EPROM、EEPROM等)、及び/又は磁気メモリ(例えばハードディスクドライブ、フロッピディスクドライブ、テープドライブ、MRAM等)を含み得る。記憶マシン1902は、揮発性、不揮発性、動的、静的、リード/ライト、読み取り専用、ランダムアクセス、逐次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、及び/又はコンテンツアドレス指定可能な装置を含み得る。
[00168] 記憶マシン1902は1つ又は複数の物理装置を含むが、本明細書に記載の命令の側面は有限時間にわたり物理装置によって保持されない通信媒体(例えば電磁信号、光信号等)によって代わりに伝搬されてもよい。
[00169] 論理マシン1901及び記憶マシン1902の側面は、1つ又は複数のハードウェア論理コンポーネントへと統合することができる。かかるハードウェア論理コンポーネントは、例えば書換可能ゲートアレイ(FPGA)、プログラム固有集積回路及び特定用途向け集積回路(PASIC/ASIC)、プログラム固有標準製品及び特定用途向け標準製品(PSSP/ASSP)、システムオンチップ(SOC)、及び複合プログラム可能論理装置(CPLD)を含み得る。
[00170] 「モジュール」、「プログラム」、及び「エンジン」という用語は、特定の機能を実行するために実装される計算システム1900の側面を表すために使用する場合がある。一部の事例では、モジュール、プログラム、又はエンジンが、記憶マシン1902によって保持される命令を実行する論理マシン1901によってインスタンス化され得る。「マシン」という用語は、かかるモジュール、プログラム、又はエンジンをインスタンス化する1つ又は複数の論理マシンを表すために使用する場合がある。例えば本明細書に記載の自然言語処理マシンは、生のユーザ入力(例えばマイクロフォンによって検出される会話音声)を下流での処理により適した入力のコンピュータ可読表現へと変換するソフトウェア、ファームウェア、又はハードウェア命令を実行するASIC又は汎用プロセッサの形を取り得る。様々なモジュール、プログラム、及び/又はエンジンが、同じマシン上に及び/又は同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、API、機能等からインスタンス化され得ることが理解されよう。同様に、同じモジュール、プログラム、及び/又はエンジンが2つ以上の異なるマシンにわたって、及び/又は様々なアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、API、機能等によってインスタンス化され得る。「モジュール」、「プログラム」、及び「エンジン」という用語は、実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコード等のそれぞれ又はグループを包含し得る。
[00171] 含まれる場合、ディスプレイサブシステム1903は記憶マシン1902によって保持されるデータの可視表現を提示するために使用され得る。この可視表現はグラフィカルユーザインタフェース(GUI)の形を取り得る。本明細書に記載の方法及びプロセスは記憶マシンによって保持されるデータを変更し、従って記憶マシンの状態を変えるので、基礎を成すデータの変化を視覚的に表すようにディスプレイサブシステム1903の状態も同様に変えることができる。ディスプレイサブシステム1903は、事実上あらゆる種類の技術を利用する1つ又は複数のディスプレイ装置を含み得る。かかるディスプレイ装置は、共用エンクロージャ内で論理マシン1901及び/又は記憶マシン1902と組み合わせることができ、又は周辺ディスプレイ装置とすることができる。
[00172] 含まれる場合、入力サブシステム1904はキーボード、マウス、タッチスクリーン、又はゲームコントローラ等の1つ又は複数のユーザ入力装置を含む、又はそれらとインタフェースすることができる。一部の実施形態では、入力サブシステムが選択されたナチュラルユーザ入力(NUI)コンポーネントを含む、又はかかるNUIコンポーネントとインタフェースすることができる。かかるコンポーネントは統合されたものでも周辺装置でもよく、入力アクションの変換及び/又は処理はオンボード又はオフボードで処理することができる。NUIコンポーネントの例は、会話及び/又は音声認識用のマイクロフォン、マシンビジョン及び/又はジェスチャ認識用の赤外線、カラー、立体、及び/又はデプスカメラ、運動検出及び/又は意図認識用のヘッドトラッカ、アイトラッカ、加速度計、及び/又はジャイロスコープ、並びに脳活動を評価するための電場感知コンポーネントを含み得る。
[00173] 含まれる場合、通信サブシステム1905は計算システム1900を1つ又は複数の他の計算装置と通信可能に結合するように構成され得る。通信サブシステム1905は、1つ又は複数の異なる通信プロトコルに適合する有線及び/又は無線通信装置を含み得る。非限定的な例として、通信サブシステムは無線電話網又は有線若しくは無線のローカルネットワーク若しくは広域ネットワークによる通信のために構成され得る。一部の実施形態では、通信サブシステムは、計算システム1900がインターネット等のネットワークを介して他の装置との間でメッセージを送受信することを可能にし得る。
[00174] 一例では、コンピュータによるパーソナルアシスタントが、ユーザ入力を受け付けるように構成される自然言語ユーザインタフェースと、ユーザ入力のコンピュータ可読表現を出力するように構成される自然言語処理マシンと、ユーザ入力を特定のユーザに関連付けるように構成される識別マシンと、ユーザ入力のコンピュータ可読表現に基づいて新たな又は更新済みのユーザ中心型ファクトを含むように特定のユーザに関連するユーザ中心型人工知能ナレッジベースを更新するように構成されるナレッジベース更新マシンであって、ナレッジベース更新マシンは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによってユーザ中心型人工知能ナレッジベースを更新し、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する、ナレッジベース更新マシンを含む。この例又は他の任意の例において、コンピュータによるパーソナルアシスタントは、ユーザ入力のコンピュータ可読表現に基づいてエンリッチメントを出力するように構成されるエンリッチメントアダプタを更に含み、新たな又は更新済みのユーザ中心型ファクトはエンリッチメントアダプタによって出力されるエンリッチメントを含む。この例又は他の任意の例において、ユーザ中心型人工知能ナレッジベースは1つ又は複数の暗号化ユーザ中心型ファクトを含み、1つ又は複数の暗号化ユーザ中心型ファクトへのアクセスは特定のユーザに関連する資格情報によって制約される。この例又は他の任意の例において、コンピュータによるパーソナルアシスタントは、特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリするように、及びクエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力するように構成されるナレッジベースクエリマシンを更に含む。この例又は他の任意の例において、ナレッジベースクエリマシンは、複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによってユーザ中心型人工知能ナレッジベースをクエリするように構成される。この例又は他の任意の例において、自然言語ユーザインタフェースはユーザクエリを受け付けるように更に構成され、自然言語処理マシンはユーザクエリに基づいてクエリのコンピュータ可読表現を出力するように更に構成される。この例又は他の任意の例において、自然言語処理マシンはユーザクエリに基づいて認識済みのユーザの意図を出力するように更に構成され、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約は認識済みのユーザの意図に基づく制約を含む。この例又は他の任意の例において、クエリはユーザの現在のコンテキストを決定するためのユーザコンテキストクエリであり、ユーザ中心型ファクトのサブセットは現在のコンテキストに関係する1つ又は複数のユーザ中心型ファクトを含む。この例又は他の任意の例において、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約は回答の種類の制約を含み、ユーザ中心型ファクトのサブセットは回答の種類の制約を満たすユーザ中心型ファクトだけを含む。この例又は他の任意の例において、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約はグラフコンテキスト制約を含み、ユーザ中心型ファクトのサブセットはグラフコンテキスト制約を満たすユーザ中心型人工知能ナレッジベース内のコンテキスト化ユーザ中心型ファクトに関係するユーザ中心型ファクトだけを含む。この例又は他の任意の例において、ナレッジベースクエリマシンによって出力される応答は、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションを共働コンピュータサービスに実行させるように構成されるコンピュータ可読命令を含む。この例又は他の任意の例において、ユーザを支援するためのアクションは、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて共働コンピュータサービスの優先設定を変更することを含む。この例又は他の任意の例において、ユーザを支援するためのアクションは、共働コンピュータサービスの状態データの表現を視覚的に提示することを含み、状態データはクエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに関係する。
[00175] 一例では、コンピュータによるパーソナルアシスタントが、ユーザクエリを受け付けるように構成される自然言語ユーザインタフェースと、ユーザクエリを特定のユーザに関連付けるように構成される識別マシンと、ユーザクエリのコンピュータ可読表現を出力するように構成される自然言語処理マシンと、特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリするように、及びユーザクエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザクエリに対する応答を出力するように構成されるナレッジベースクエリマシンであって、ユーザ中心型人工知能ナレッジベースは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによって新たな又は更新済みのユーザ中心型ファクトを含むように更新可能であり、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する、ナレッジベースクエリマシンを含む。
[00176] 一例では、クエリに自動で応答するための方法が、コンピュータサービスの特定のユーザに関連するクエリのコンピュータ可読表現を認識すること、複数の異なるコンピュータサービスによって使用可能なクエリプロトコルによって特定のユーザに関連するユーザ中心型人工知能ナレッジベースをクエリすること、及びクエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいて応答を出力することを含み、ユーザ中心型人工知能ナレッジベースは複数の異なるコンピュータサービスによって使用可能な更新プロトコルによって新たな又は更新済みのユーザ中心型ファクトを含むように更新可能であり、更新プロトコルは新たな又は更新済みのユーザ中心型ファクトの記憶形式をアプリケーション非依存データ形式に制約する。この例又は他の任意の例において、コンピュータサービスはコンピュータによるパーソナルアシスタントである。この例又は他の任意の例において、クエリはユーザの現在のコンテキストを決定するためのユーザコンテキストクエリであり、ユーザ中心型ファクトのサブセットは現在のコンテキストに関係する1つ又は複数のユーザ中心型ファクトを含む。この例又は他の任意の例において、クエリはコンピュータサービスの状態を示し、現在のコンテキストに関係する1つ又は複数のユーザ中心型ファクトはコンピュータサービスの状態に関係するユーザ中心型ファクトを含む。この例又は他の任意の例において、この方法は、コンピュータサービスの状態によって規定される自然言語特徴のコンピュータ可読表現を認識することを更に含み、1つ又は複数の制約は自然言語特徴に基づく制約を含む。この例又は他の任意の例において、この方法は、クエリのコンピュータ可読表現によって規定される1つ又は複数の制約を満たすユーザ中心型人工知能ナレッジベース内のユーザ中心型ファクトのサブセットに基づいてユーザを支援するためのアクションをコンピュータサービスに実行させることを更に含む。
[00177] 本明細書に記載の構成及び/又は手法は本質的に例示であり、数多くの改変形態があり得るので、これらの特定の実施形態又は例は限定的な意味で検討すべきではないことが理解されよう。本明細書に記載した特定のルーチン又は方法は任意の数の処理戦略のうちの1つ又は複数を表し得る。そのため、図示し及び/又は説明した様々な行為を図示し及び/又は説明した順序で実行することができ、他の順序で実行することができ、同時に実行することができ、又は省略することができる。同様に、上記のプロセスの順序は変更することができる。
[00178] 本開示の内容は、本明細書で開示した様々なプロセス、システム、及び構成、並びに他の特徴、機能、行為、及び/又は特性のあらゆる新規の及び非自明の組み合わせ及びサブコンビネーション、並びにその任意の及び全ての等価物を含む。