クエリ回答の生成

公開: 2022-05-05

この最近付与されたGoogle特許は、一般にクエリ回答の生成に関連しており、この特許は、クエリの回答に役立つ制約の概念も導入しています。

クエリ回答に制約を使用する

この特許は、質問が追加されているエンティティに関する事実に関連する内容について質問します。

クエリ応答に制約を使用することに関するドキュメントは次のとおりです。

    GRIP:グラフクエリの欠落した回答の制約ベースの説明
    制約の満足度を使用した質問応答:制約付きのDossierによるQA

興味深いことに、最初のドキュメントでは、参照としてGoogleKnowlegeVaultを参照しています。 制約を使用して質問に対する正しい答えを得ることに焦点を当てているためと思われます。

この特許はセマンティックSEOに重点を置いているためです。 この2つを含め、そのトピックに関する他のGoogle特許を思い出しました。これらは、注意深く読む価値があります。

  • Googleナレッジグラフの調整
  • Googleでの知識グラフのエンティティ抽出

この特許は、エンティティとエンティティ属性がどのように機能するか、グラフ検索でタプルがどのように使用されるか、およびセマンティックSEOについての洞察を提供します。

データベースからファクトを提供することによるクエリ回答の生成

検索システムは、データベースからファクトを提供することにより、ファクトクエリへの応答を生成する場合があります。

これらのファクトは、リアルタイムで更新できるグラフに保存される場合があります。

このような応答は、文ではなく検索結果のリストとしてフォーマットされる場合があります。

ユーザーが、たとえば音声を介してダイアログシステムに事実上の質問をする場合、その質問に対して自然な応答をすることが望ましい場合があります。

最も自然な応答は、クエリの回答を提供するためにユーザーの質問に一致する事実の文法的なステートメントとして定式化された回答である可能性があります。

したがって、この特許に記載されている主題の1つの一般的な側面によれば、事実の照会に応答して、データベースに格納されている事実は、ユーザーの言語の文に変換されます。

エンティティの属性を識別するクエリ回答の受信

本明細書に記載されている主題の一態様は、エンティティの属性を識別するクエリを受信するアクションを含む方法で具体化することができる。 これらの属性は、エンティティに関する事実です。

次に、アクションには、エンティティの属性に基づいてクエリ回答の候補テンプレートにアクセスすることが含まれます。 各候補テンプレートにはフィールドがあります。 ここで、各領域は少なくとも1つの制約に関連付けられます。

次に、アクションには、クエリの回答を提供する一連の情報の取得と、候補テンプレートのコレクションからのテンプレートの選択が含まれます。 選択したテンプレートには、情報セットを満たす制約を持つ最も重要な数のフィールドがあります。

エンティティに関連するセマンティックトリプル

情報のセットは、エンティティ-属性-値のトリプルのセットである場合があります。

アクションには、選択したテンプレートのフィールドに情報のセットを追加してフレーズを生成することも含まれます。これにより、単語がクエリの回答を構成します。

フレーズは、文または文の一部です。 最後に、アクションには、クライアントデバイスへの単語の伝達が含まれます。

フレーズは、単語に対応する音声信号として伝達される場合があります。

制約には次のものが含まれる場合があります。

  • タイプ制約
  • 時間的制約
  • 性別の制約
  • 関係の制約
  • 単数形/複数形の制約
  • 測定単位の制約
  • 行列式の制約。

一部の実装では、クエリ内の単一の属性に応答する多くの情報セットを取得する必要があります。

アクションにはさらに次のものが含まれます。

  • エンティティのタイプに基づいてセンテンステンプレートを取得します。センテンステンプレートには、フレーズの複数のフィールドが含まれます。
  • 文を形成するために文テンプレートのフィールドにフレーズを追加する
  • 情報のセットごとに、候補テンプレートのセットからテンプレートを選択します
  • 選択したテンプレートごとに、選択したテンプレートのフィールドにそれぞれの情報セットを追加してフレーズを生成します。
  • フレーズを含む文章をクライアントデバイスに伝達する

これには、多くの属性を含むクエリ回答が含まれる場合があります。

  • エンティティの多くの属性を識別するクエリ回答を受信する
  • エンティティの属性ごとに、エンティティのそれぞれの属性に基づくクエリ回答の候補テンプレートのセットにアクセスする
  • エンティティの属性ごとに、クエリのそれぞれの部分に回答する一連の情報を取得します
  • 候補テンプレートのそれぞれのセットからテンプレートを選択する
  • エンティティの属性ごとに、選択したテンプレートのフィールドにそれぞれの情報セットを追加してフレーズを生成します
  • エンティティのタイプに基づいてセンテンステンプレートを取得します。センテンステンプレートには、フレーズの複数のフィールドが含まれます。
  • 文を形成するために文テンプレートのフィールドにフレーズを追加する
  • フレーズを含む文章をクライアントデバイスに伝達する

このプロセスの利点は次のとおりです。

システムは構成可能であり、複雑な事実の主張と回答に拡張できます。
これにより、実際のデータベースを文生成メカニズムから明確に分離できる場合があります。
これにより、適切な方法で新しいテンプレートを追加できる場合があります。

このGeneratingQueryAnswersの特許は、

クエリ回答の生成
発明者:Engin Cinar Sahin、Vinicius J. Fortuna、およびEmma S. Persky
譲受人:Google LLC
米国特許:11,321,331
付与:2022年5月3日
提出日:2018年7月23日

概要

サーバーは、エンティティの属性を識別するクエリ回答を受信します。

サーバーは、エンティティの属性に基づいてクエリに回答するための候補テンプレートのセットにアクセスします。各候補テンプレートにはフィールドがあり、各フィールドは少なくとも1つの制約に関連付けられます。

サーバーは一連の情報とクエリの回答を取得し、一連の候補テンプレートからテンプレートを選択します。

選択したテンプレートには、情報セットによって満たされる制約を持つフィールドの数が最も多くなります。

サーバーは、選択したテンプレートのフィールドに情報のセットを追加することによってフレーズを生成します。これにより、フレーズはクエリへの回答を構成します。

最後に、サーバーはフレーズをクライアントデバイスに伝達します。

データベースからのファクトのセンテンスへの変換

ユーザーが事実に基づく質問をすると、検索エンジンはデータベースにアクセスしてクエリの回答を提供する場合があります。

音声ベースのダイアログシステムなどの一部のシステムでは、ユーザーが自然言語の質問としてクエリを計画できます(たとえば、「日本の社長は誰ですか?」)。

このような場合、ドキュメントを参照する検索結果としてフォーマットされた回答ではなく、文の形式で自然言語の回答を提供することが望ましい場合があります。

したがって、この仕様で説明されているシステムは、データベースからのファクトを文に変換する場合があります。 これは、たとえば、回答を音声としてユーザーに返すことができるようにするために有利な場合があります。

ユーザーの質問に答える文を作成するには、データベースからランダムな事実を取得することが望ましい場合があります。 ただし、事実はランダムなものではありません。制約情報を使用してクエリの回答を提供しています。 これは、エンティティに関するクエリに対するより良い回答を意味するように思われます。

誰かが誰と結婚したかなどの質問に答えるために、システムは、過去のすべての結婚、過去の結婚式に関係した人々、組合の日付、および結婚契約の種類を含むデータを取得する場合があります。 グラフ構造を使用してファクトを表す柔軟なデータベースは、これらのファクトを提供する場合があります。

1つまたは複数の属性に基づいてクエリ回答を生成するための候補テンプレートへのアクセス

ファクトが収集されると、回答エンジンは、クエリで提供された1つまたは複数の属性に基づいて回答を生成するための候補テンプレートにアクセスできます。 たとえば、元の質問が「ウディアレンは誰と結婚したか」である場合、ポイントは「結婚」である可能性があります。 実際のクエリが「ウディアレンは何歳ですか」の場合、属性は「年齢」である可能性があります。 以下で説明するように、質問の各ポイントは、たとえば、多かれ少なかれ詳細な回答をサポートするために、複数の候補テンプレートに対応する場合があります。

たとえば、属性が「年齢」の場合、回答エンジンは、生年月日と年齢(たとえば、{<entity>は<date>に生まれ、現在は<value>歳})を含むテンプレートを取得する場合があります。これには、年齢(たとえば、{<entity>は現在<value>歳})と、生年月日と死亡日(たとえば、{<entity>は<date>に生まれ、<に死亡した)を含むテンプレートが含まれます。 / date>})。

以下でより詳細に説明するように、「<>」で囲まれたテンプレートの部分(つまり、フィールド)は、保持できるデータに対するさまざまな制約に関連付けられる可能性があります。

回答エンジンは候補テンプレートを取得すると、複数のヒューリスティックに基づいて最も関連性の高いテンプレートを選択し、テンプレートに事実を挿入して文を生成します。 回答エンジンは、修正で回答をユーザーに提供できます。

データグラフ検索システム

システムは、ここで説明する手法を使用して、データグラフの検索エンジンを実装することに慣れている場合があります。

システムは、クライアントからのクエリ要求を処理するデータグラフの検索エンジンシステムとして説明されます。 関連するテクノロジーの他の構成およびアプリケーションが使用される場合があります。 たとえば、クエリ要求は、別のサーバー、バッチジョブ、またはデータグラフ検索システムと通信しているユーザー端末から発信される場合があります。

データグラフ検索システムは、索引付けシステム、検索システム、および索引クラスターを含み得る。 索引付けシステム、検索システム、および索引クラスターは、いくつかの異なるデバイス、例えば、標準サーバー、そのようなサーバーのグループ、またはラックサーバーシステムの形をとるコンピューティングデバイスであり得る。

さらに、索引付けシステム、検索システム、および索引クラスターは、パーソナルコンピューター、例えば、ラップトップコンピューターに実装され得る。

データグラフ検索システムは、グラフベースのデータストアを含み得る。 このようなデータグラフにはノードとエッジが格納され、そこからグラフを作成できます。

ノードはエンティティと呼ばれる場合があり、エッジは2つのエンティティ間の関係と呼ばれる場合があります。 このような関係は、いくつかの方法で保存される可能性があります。

グラフベースのデータストアには、1つの例でエンティティと関係を表すトリプルタプルが格納されます。

エンティティと関係を表すトリプルタプル

トリプルには、 形式。エンティティは開始エンティティを表し、ポイントはエンティティからの再定義されたエッジとしての関連エンティティの特性を表し、値は関連エンティティを表します。

トリプルの1つの例は、サブジェクト(またはエンティティ)としてのエンティティWoody Allen、述語(または属性)として機能するリレーションシップ、およびオブジェクト(または値)としてのエンティティAnnieHallです。

もちろん、多くのエンティティと限られた数の関係を持つデータグラフには、数十億のトリプルが含まれる場合があります。

インデックスシステムには、マシンで実行可能な命令またはソフトウェア、ファームウェア、またはそれらの組み合わせを実行するように構成されたプロセッサを含めることができます。

クエリ回答の検索

検索システムは、クライアントのユーザからクエリを受信し、それらのクエリを検索システムに提供するサーバー(図示せず)を含み得る。

検索システムは、クエリに応答して、データグラフや、インターネットやイントラネットからのドキュメントのコーパスなどの他のデータソースの検索を担当する場合があります。

たとえば、検索システムは、クライアントなどのクライアントからクエリを受信し、クエリ処理を実行して、インデックスクラスタと、他のソースを検索するためのインデックスを格納する他のインデックスクラスタにクエリを送信する場合があります。

検索システムには、すべてのソースからの結果をコンパイルし、コンパイルされた結果をクライアントに提供するモジュールが含まれている場合があります。

検索システムは、クエリをインデックスクラスタにのみ送信し、インデックスクラスタからクライアントに検索結果を提供する場合があります。

検索システムは、ネットワークを介してクライアントと通信している可能性があります。

クエリ回答の検索におけるインデックスクラスタ

システムには、インデックスクラスターが含まれる場合もあります。 インデックスクラスタは、単一のコンピューティングデバイス、またはそれぞれが独自のプロセッサとメモリを備えたコンピューティングデバイスを備えた分散データベースシステムの場合があります。

インデックスクラスターを構成するコンピューティングデバイスの数はさまざまであり、簡潔にするために、インデックスクラスターは単一のエンティティとして表示されます。

各インデックスクラスタには、マシンで実行可能な命令またはソフトウェア、ファームウェア、またはそれらの組み合わせを実行するように構成されたプロセッサを含めることができます。

コンピューティングクラスタは、一時的、永久的、半永久的、またはそれらの組み合わせのいずれかでデータの断片を格納するように構成されたオペレーティングシステム(図示せず)およびコンピュータメモリ、例えば、メインメモリを含むことができる。

メモリは、揮発性メモリ、不揮発性メモリ、またはそれらの組み合わせを含む、プロセッサによって読み取られて実行されることができるフォーマットで情報を格納する任意のタイプの記憶装置を含み得る。

インデックスにアクセスしてクエリに応答する結果を取得するクエリリゾルバ

インデックスクラスターには、クエリリゾルバーなど、インデックスにアクセスしてクエリに応答する結果を取得するモジュールが含まれる場合もあります。

クエリリゾルバは、検索システムの一部である場合もあれば、検索システムとインデックスクラスタ間で分散される場合もあります。

次第に複雑なクエリとクエリ回答

1つの属性(「年齢」)を含み、単一のトリプル回答になる単純なクエリ。

1つの属性(「結婚」)を含むが、複数のトリプル回答が得られる単純なクエリの例。

2つの属性(「出身地と母校」)を含み、複数のトリプル回答が得られる複雑なクエリの例。

事実に基づくクエリに応答して文を生成するシステムの例。

このシステムには、クライアントデバイス、検索システム、インデックスクラスター、および応答エンジンが含まれます。

エンティティは、システムの一部として実装できます。

ユーザーは、クライアントデバイスを使用して、クエリ用語を含むクエリを開始します。

ユーザーは、元のクエリを文としてフォーマットできます。

音声ベースのダイアログシステムとの対話

ユーザーは、音声ベースのダイアログシステムを使用してクライアントデバイスと対話できます。

たとえば、ユーザーは「ウディ・アレンは何歳ですか」というクエリをクライアントデバイスのマイクに向かって発声することができます。

次に、クライアントデバイスは、音声認識を実行して発話を文字起こしに変換し、次にその文字起こしを検索エンジンに送信することができる。

あるいは、クライアントデバイスは、発話を符号化する音声音声データを送信することができる。

検索システムは、クライアントデバイスからクエリ(「ウディアレンは何歳ですか」など)を受け取ります。

クエリが音声音声データとしてエンコードされると、検索システムは音声音声データを文字起こしに変換する場合があります。

次に、検索システムは元のクエリを解析して<エンティティにフォーマットします。 たとえば、適切な自然言語解析エンジンを使用した属性>形式(<woody Allen / age <など)。

次に、検索システムはフォーマットされたクエリをインデックスクラスターに送信します。

インデックスクラスターはインデックスにアクセスして、クエリに応答する結果を取得します。

トリプルの形式で回答を照会する

これらの結果は、トリプル形式の一連の事実情報である可能性があります(例:</ woody> <woody Allen / born on / Dec. 1>

次に、インデックスクラスタは、フォーマットされたクエリ(たとえば、</ woody> <woody Allen / age>とクエリに回答する事実情報(たとえば、</ woody> <woody Allen / 1935年12月1日生まれ>)を送信します。回答エンジンに。

次に、フォーマットされたクエリと事実情報を使用して、回答エンジンは1つまたは複数の文の形式で回答を生成します。

回答エンジンは次のように回答を生成します。 まず、応答エンジンは、フォーマットされたクエリから1つまたは複数の属性を取得します。

次に、応答エンジンは1つまたは複数の属性を使用して、テンプレートデータベースから候補の文または句のテンプレートにアクセスします。

次に、回答エンジンは、候補テンプレートに関連付けられた事実情報とさまざまな制約に基づいて、テンプレートの1つを選択します。

最後に、回答エンジンは、事実情報を使用して、選択したテンプレートのフィールドに入力します。

1つまたは複数の属性を取得する応答エンジン

より詳細には、回答エンジンは最初に、クエリを解析することにより、フォーマットされたクエリから1つまたは複数の属性を取得します。 たとえば、クエリが<entity / attribute>ペアとしてフォーマットされたとすると、応答エンジンはペアの属性部分を抽出します。

場合によっては、フォーマットされたクエリに複数の属性が含まれることがあります。 たとえば、フォーマットされたクエリは<entity / attribute/attribute>の形式である可能性があります。 このような場合、回答エンジンはクエリから各属性を抽出する場合があります。

次に、応答エンジンは、テンプレートデータベースからクエリ内の各属性の候補テンプレートにアクセスします。

各テンプレートは、文全体または文の一部(フレーズなど)に対応する場合があります。

各テンプレートには、事実情報を挿入できるフィールド(「<>」括弧内の部分として表示)が含まれています。

たとえば、テンプレートは「<日付>に、<エンティティ>は<値>と結婚しました」のようになります。 テンプレートは、手動またはアルゴリズムで生成できます。

ユーザーの言語での候補テンプレート

回答エンジンはユーザーの言語を識別し、ユーザーの言語で候補テンプレートを選択します。

たとえば、回答エンジンは、元のクエリの言語を示すデータを検索エンジンから受信する場合があります。 有利なことに、そのような構成は、答えの国際化を容易にする可能性がある。

フィールドは、各フィールドに含まれる可能性のあるデータを管理する制約に関連付けられる場合があります。

この仕様で使用されているように、表記「<X / Y>」は、「X」制約と「Y」制約を持つフィールドを示します。

サンプルの制約には、タイプの制約、時間の制約、性別の制約、関係の制約、単数形/複数形の制約、測定単位の制約、および行列式の制約が含まれる場合があります。

異なるConstratinisは異なるTyoesのデータを必要とする場合があります

タイプ制約には特定のタイプのデータが必要な場合があります。たとえば、<date>制約には日付が必要な場合があり、<entity>制約にはエンティティ名またはその他の識別子が必要な場合があります。 制約には数値が必要な場合があります。

時間的制約では、たとえば、日付または時刻が過去または未来である必要があります。たとえば、<date / past>を含むフィールドでは、フィールドに過去の日付が含まれている必要があります。 性別の制約には、たとえば、男性または女性の性別が必要な場合があります。

関係制約は、たとえば、別のエンティティとの関係のタイプを必要とする場合があります。たとえば、<entity / spouse>を含むフィールドでは、フィールドに別のエンティティの配偶者であるエンティティが含まれる必要があります。 単数形/複数形の制約では、たとえば、フィールド内のデータが単数形または複数形である必要がある場合があります。

測定単位の制約では、たとえば、フィールド内のデータを特定の測定単位(たとえば、インチ、フィート、センチメートル、メートルなど)で測定する必要がある場合があります。 行列式の制約では、たとえば、「the」という単語がフィールドの前にある必要がある場合があります。

クエリの各属性は、候補テンプレートのセットにアクセスするためのキーとして機能する場合があります。 たとえば、属性「age」を使用すると、テンプレートが取得される場合があります。 サンプルテンプレートには、最初のテンプレート「 <date / past&glt;に生まれました現在<value>歳です。」これには、<entity&lgt;のエンティティ名が必要です。 フィールド、過去の日付フィールド、および<value <フィールドの数値(たとえば、年齢)。

2番目のテンプレート「<entity>は現在<value<歳です」では、<entity>フィールドにエンティティ名、<value>フィールドに数値(年齢など)が必要です。

3番目のテンプレート「<entity>は<date/past>に生まれ、<date / past>に死亡しました」では、</ entity> <entity>フィールドにエンティティ名、<date/に2つの過去の日付が必要です。過去>フィールド。

特定の属性の複数のテンプレート

有利なことに、特定の属性に対して複数のテンプレートを使用すると、実装で部分的なファクトをサポートできます。 たとえば、年齢テンプレートの場合、生年月日はわかっているが特定の日付が不明な場合、適切なテンプレートは「</entity><entity>は<year/past>に生まれました」のようになります。 特定の属性に複数のテンプレートを提供すると、ファクトのさまざまな部分の時制を変更することもできます(たとえば、「ウディ・アレンが結婚する」および「ウディ・アレンが結婚する」)。

候補テンプレートを取得した後、回答エンジンはさまざまなヒューリスティックに基づいて候補テンプレートからテンプレートを選択します。 たとえば、回答エンジンは性別の一致をチェックし、時制を修正する場合があります。 さらに、回答エンジンは、元のクエリに対する回答の数が、選択したテンプレートのフィールドの数と一致すると判断する場合があります。

回答エンジンは、選択したテンプレートの制約とフィールドが満たされているかどうかを判断する場合もあります。 回答エンジンは、事実情報によって満たされる制約のあるフィールドの最大数を持つテンプレート(たとえば、最もデータが豊富なテンプレート)を選択する場合があります。 事実情報は「<ウディ・アレン/12月生まれ。 1、1935>。」

この例では、最初の候補テンプレートは「<entity>は<date / past>に生まれ、現在は年です。」 このテンプレートにはフィールド、<日付/過去>フィールド、および<値>フィールド。 事実情報は、<entity>フィールドの制約を満たすエンティティと、 フィールドの制約。

回答エンジンは、事実情報に基づいて値を導き出す場合があります。 したがって、回答エンジンは、生年月日に基づいて<value<フィールド制約を満たすように年齢値を計算する場合があります。 事実情報は最初のテンプレートのフィールドのすべての制約を満たしているため、回答エンジンは最初のテンプレートを選択します。

回答エンジンは、事実情報で埋めることができるフィールドを持つ最初のテンプレートを選択し、追加の処理を実行しません。 あるいは、回答エンジンは、候補テンプレート内の各テンプレートを処理し、事実情報で埋めることができるフィールドの数が最も多いテンプレートを選択する場合があります。

テンプレートを選択した後、回答エンジンはテンプレートに基づいて文またはフレーズを生成します。 たとえば、回答エンジンは、テンプレート内のフィールドを事実情報からの適切なデータに置き換える場合があります。 回答エンジンは、選択したテンプレートを使用して、「ウディ・アレンは1935年12月1日に生まれ、現在77歳です」という文を生成します。

次に、応答エンジンは応答をクライアントデバイスに送信します。応答には、生成された文が含まれます。応答は、クライアントデバイスが音声に変換してユーザーにレンダリングする文字起こしである場合があります。

事実に基づく質問に応じて文を生成するシステム

このシステムには、クライアントデバイス、検索システム、インデックスクラスター、および応答エンジンが含まれます。 示されているエンティティは、たとえば、システムの一部として実装できます。

クライアントデバイスは、クエリ用語を持つクエリを開始します。

たとえば、ユーザーはクライアントデバイスのWebブラウザに「ウディアレンと結婚したのは誰か」というクエリを入力できます。

検索システムは、クライアントデバイスからクエリ(「ウディアレンと結婚したのは誰か」など)を受け取ります。

次に、検索システムは元のクエリを解析してフォーマットし、 フォーマット(例: )たとえば、適切な自然言語解析エンジンを使用します。

この例では、フォーマットされたクエリには、エンティティの識別子(Woody Allenなど)、エンティティのタイプ(personなど)、および属性(結婚など)が含まれています。

タイプ情報は、以下で説明するようにメタテンプレートを生成するために使用される場合があります。 次に、検索システムはフォーマットされたクエリをインデックスクラスターに送信します。

インデックスクラスターはインデックスにアクセスして、クエリに応答する一連の事実情報を取得します

インデックスクラスターはインデックスにアクセスして、クエリに応答する事実情報のセットを取得します。 これらの結果には、少なくとも2つのトリプルが含まれます(例: 、および<ルイーズ・ラサー/妻/ 1966/1970>)。

次に、インデックスクラスタは、フォーマットされたクエリ(<woody Allen / age>など)とクエリに回答する事実情報(<Soon-Yi Previn / wife / 1997>、<louise Lasser / wife / 1966/1970>など)を送信します。 )アンサーエンジンに。

次に、フォーマットされたクエリと事実情報を使用して、回答エンジンは次のように1つまたは複数の文の形式で回答を生成します。

まず、回答エンジンは、フォーマットされたクエリ(たとえば、person)からタイプ情報を取得します。

タイプ情報は、クエリが取得するエンティティのタイプを識別します。 回答エンジンは、タイプ情報を使用して、「個人」タイプのエンティティに関連付けられている候補メタテンプレートにアクセスします。

この仕様で参照されているように、メタテンプレートは、他のテンプレートを含むように構成されたフィールドを持つテンプレートです。

候補となる各メタテンプレートには、エンティティの名前または識別子用のフィールドと、他のテンプレートを追加するためのフィールドが少なくとも1つ含まれています。

これらのテンプレートを使用すると、回答エンジンは、人に関する情報を持つさまざまなフレーズを組み込むための文を生成できます。

応答エンジンは、フォーマットされたクエリから1つまたは複数の属性を取得し、1つまたは複数の属性を使用して、テンプレートデータベースから候補フレーズテンプレートにアクセスします。

これらのフレーズテンプレートは、メタテンプレートに組み込まれるように設計されています。

上記のように、クエリ内の各属性は、候補フレーズテンプレートのセットにアクセスするためのキーとして機能する場合があります。

たとえば、属性「結婚」により、フレーズテンプレートが取得される場合があります。

サンプルフレーズテンプレートには、「<日付/過去>以降に<エンティティ/配偶者>と結婚した」という最初のテンプレートが含まれています。これには、フォーマットされたクエリでエンティティと結婚するエンティティが必要です。 フィールド、および過去の日付分野。

2番目のテンプレート「<entity/配偶者>と結婚する」では、フォーマットされたクエリでエンティティと結婚するエンティティが必要です。 分野。

3番目のテンプレート「結婚している」は追加情報を必要としません。

4番目のテンプレート「<日付/過去>から<日付/過去>まで<エンティティ/配偶者>と結婚した」では、フォーマットされたクエリでエンティティと結婚するエンティティが必要です。 フィールド、および<date/past>フィールドの過去2つの日付。 5番目のテンプレート「<entity/配偶者>と結婚しました」では、<entity/spouse>フィールドのフォーマットされたクエリでエンティティと結婚するエンティティが必要です。 そして、6番目のテンプレート「結婚していた」は追加情報を必要としません。

次に、回答エンジンは、事実情報に含まれる情報のタイプに基づいて、候補メタテンプレートの1つを選択します。 特に、回答エンジンは、事実情報に含まれるトリプルの数に基づいて候補メタテンプレートを選択します。 2つのトリプルが事実情報に含まれます。 したがって、回答エンジンは、「<entity><template>」と「</template><template>」の2つのテンプレートのフィールドを持つ「person」メタテンプレートを選択します。

事実情報に含まれるトリプルごとに、回答エンジンは候補フレーズテンプレートからテンプレートも選択します。 回答エンジンは、事実情報によって満たされる制約のあるフィールドの最大数を持つフレーズテンプレート(たとえば、最もデータが豊富なテンプレート)を選択する場合があります。

事実情報に含まれる最初のトリプルは<Soon-YiPrevin/ wife/1997>です。」 この例では、最初の候補フレーズテンプレートは「 以来。」 このテンプレートには<ntity/配偶者&g;がありますフィールドと<date/past>フィールド。

最初のトリプルには、<entity / spouse>フィールドの制約を満たす、フォーマットされたクエリ内のエンティティとの配偶者関係を持つエンティティと、<date/past>フィールドの制約を満たす過去の日付があります。 最初のトリプルは最初のテンプレートのフィールドのすべての制約を満たしているため、応答エンジンは最初のトリプルの最初のテンプレートを選択します。

事実情報に含まれる2番目のトリプルは<ルイーズラサー/妻/1966/1970>です。」 4番目の候補フレーズテンプレートは「<entity/spouse>と<date/past>から<date/past>まで結婚しました」で、<entity/spouse>フィールドと2つの<date/past>フィールドがあります。 事実情報の2番目のトリプルは、<entity / spouse>フィールドの制約を満たす、フォーマットされたクエリ内のエンティティとの配偶者関係、および過去の2つの日付を提供します。 フィールドの制約。

2番目のトリプルは4番目のテンプレートのフィールドのすべての制約を満たすため、応答エンジンは2番目のトリプルの4番目のテンプレートを選択します。

回答エンジンは、事実情報で埋めることができるフィールドを持つ最初のテンプレートを選択し、追加の処理を実行しません。 あるいは、回答エンジンは、候補テンプレート内の各テンプレートを処理し、事実情報で埋めることができるフィールドの数が最も多いテンプレートを選択する場合があります。

テンプレートを選択した後、回答エンジンはテンプレートに基づいて文を生成します。 たとえば、回答エンジンは、選択されたテンプレートのフィールドを事実情報からの適切なデータに置き換える場合があります。

回答エンジンは、最初に選択したフレーズテンプレートのフィールド(つまり、「<< date / past>以降<entity/配偶者>と結婚しました」)を最初のトリプルの情報に置き換えて、「結婚しました」というフレーズを生成する場合があります。したがって、応答エンジンは、「ウディ・アレンは1997年からスン・イー・プレビンと結婚し、1966年から1970年までルイーズ・ラッサーと結婚していた」という文を生成します。応答エンジンは、応答を送信します。生成された文を含むクライアントデバイスに回答が含まれる場合があります。回答は、文やその他の検索結果を含む検索結果ページに含まれる場合があります。検索結果ページには、元の検索クエリを表示する検索ボックスも含まれます(つまり、「Who was Woodyアレンは結婚しました」)。検索結果ページは、クライアントデバイスによってレンダリングされる場合があります。代わりに、クライアントデバイスが音声を生成できるようにする文字起こしとして、または文をエンコードする音声信号として、文を送信することもできます。 クライアントデバイスでのレンダリング。

事実に基づく質問に応じて文を生成するシステム

このシステムには、クライアントデバイス、検索システム、インデックスクラスター、および応答エンジンが含まれます。

クライアントデバイスは、2つのクエリ用語(「ウディアレンの故郷と母校はどこですか」)を持つクエリをクライアントデバイスのWebブラウザに開始します。

検索システムは、クライアントデバイスからクエリ(「ウディアレンの故郷と母校はどこですか」など)を受け取ります。 次に、検索システムは、たとえば適切な自然言語解析エンジンを使用して、元のクエリを解析し、<entity / type / attribute>形式(たとえば、> woody Allen / person / hometown / college <)にフォーマットします。

この例では、フォーマットされたクエリには、エンティティの識別子(Woody Allenなど)、エンティティのタイプ(personなど)、および2つの属性(hometownとcollegeなど)が含まれています。 次に、検索システムはフォーマットされたクエリをインデックスクラスターに送信します。

次に、フォーマットされたクエリと事実情報を使用して、回答エンジンは次のように1つまたは複数の文の形式で回答を生成します。 First, the answer engine obtains the type information from the formatted query (eg, person).

Using the type information, the answer engine accesses candidate meta-templates that are associated with a “person” type of entity.

As referred to in this specification, meta-templates are templates that have fields configured to contain other templates.

The answer engine also obtains the attributes from the formatted query and uses the attributes to access candidate phrase templates from template databases.

These phrase templates get designed to get incorporated into the meta-templates.

As described above, each attribute in the query may function as a key for accessing a set of candidate phrase templates. For example, the attribute “hometown” may result in the retrieval of the phrase templates. The sample phrase templates include a first template “currently lives in >location<,” which requires a geographic location for the 分野。

The second template, “has lived in </location><location> since <date/past>,” requires a geographic location for the </location<>location> field and a date in the past for the <date/past> field. The third template, “used to live in </location><location>,” requires a geographic location for the location field.

Next, the answer engine selects one of the candidate meta-templates based on the type of information included in the factual information. In particular, the answer engine selects a candidate meta-template based on the number of triples included in the factual information. Two triples get included in the factual information.

For each triple included in the factual information, the answer engine also selects a template from the candidate phrase templates The answer engine may select the phrase template having the maximum number of fields with constraints that get satisfied by the factual information (eg, the most data-rich template). The answer engine also may perform other heuristics, such as analyzing gender agreement and correct tense of the candidate templates.

The first triple included in the factual information is <woody Allen/hometown/NYC>.” In this example, the first candidate template in the hometown templates is “currently lives in <location>.” The first triple has a location (ie, NYC) that satisfies the </location><location> field constraint. Since the first triple satisfies all of the constraints for the fields in the first template, the answer engine selects the first template from the hometown templates for the first triple.

The second triple included in the factual information is <woody Allen/college/NYU>.” The first candidate template in the college templates is “his alma mater is </college><college>.” The second triple in the factual information provides a college name (ie, NYU) that satisfies the </college<>college> field constraint.

Also, the answer engine may determine that the gender of the entity (Woody Allen) agrees with the gender of the phrase in this template. The answer engine selects the first template from the college templates for the second triple.

The answer engine selects the first template with fields that can get filled by the factual information, and does not perform any additional processing. Alternatively, the answer engine may process each template in the candidate templates and select the template having the largest quantity of fields that can get filled by the factual information.

After selecting the templates, the answer engine then generates a sentence based on the templates. For example, the answer engine may replace the fields in the selected templates with the appropriate data from the factual information. The answer engine may replace the fields in the first selected phrase template (ie, “currently lives in <location>”) with the information from the first triple to generate the phrase “currently lives in New York City.”

The answer engine then replaces the template fields in the selected meta-template (ie, “<entity><template> and &kt;/template><template>”) with the phrases generated from the first and second phrase templates. Thus, the answer engine generates the sentence “Woody Allen currently lives in New York City and his alma mater is New York University.”

The answer engine then transmits an answer to the client device that includes the generated sentence.

The answer may get included in a search results page that includes the sentence and other search results. The search results page also includes a search box showing the original search query (ie, “Where is Woody Allen's hometown and alma mater”). The search results page may then get rendered by the client device.

As getting provided in search results, the sentence could alternatively get transmitted as a transcription that allows the client device to generate speech, or as an audio signal encoding the sentence for rendering at the client device.

An Example Data Graph

The example data graph includes nodes (eg, entities) and edges connecting the nodes (eg, relationships or attributes). Naturally, the example data graph shows only a partial graph–a full graph with a large number of entities and even a limited number of relationships may have billions of triples.

An indexing system may traverse the data graph to obtain factual information as various triples. One example of a triple that may get obtained is the entity “Woody Allen” as the subject (or entity), the relationship “was born” as the predicate (or attribute), and the entity “Dec. 1, 1935” as the object (or value).

Another example of a triple that may be obtained is the entity “Woody Allen” as the subject, the relationship “has type” as the predicate, and the entity “person” as the value. This triple may get used, for example, by the answer engine as described above to select candidate meta-templates.

Another example of a triple that may get obtained is the entity “Woody Allen” as the subject, the relationship “was married to” as the predicate, and the entity “Louise Lasser” as the value.

Note that to obtain this triple, the indexing system must traverse two edges in the data graph, ie, from the “Woody Allen” entity to the “Woody Allen marriages” entity, and then from the “Woody Allen marriages” entity to the “Louise Lasser” entity.

Generating Sentences In Response To Factual Queries

A server (eg, an answer engine) receives an original query that identifies the attributes of an entity. For example, the server may receive a query that identifies multiple attributes of an entity (eg, age, date of birth, place of birth, marriages, etc.).

The server accesses a set of candidate templates for answering the query based on the attributes of the entity. Each candidate template includes fields, wherein each field gets associated with at least one constraint. When multiple attributes get identified in the original query, the server accesses a set of candidate templates for each attribute of the entity. The constraints may include of a type constraint, a temporal constraint, a gender constraint, a relationship constraint, a singular/plural constraint, a unit of measure constraint, and a determinant constraint.

The server then obtains a set of information that answers the query, for example by accessing a graph-based datastore as described above. The set of information that answers the query may be, for example, a set of entity-attribute-value triples. When multiple attributes get identified in the original query, the server obtains a set of information for each attribute (ie, to answer each portion of the original query).

Multiple sets of information (eg, multiple triples) may be responsive to a single attribute. For example, if the attribute is “marriages” or “children,” then multiple triples may get obtained in response to the attribute.

the server selects a template from the set of candidate templates, where the selected template has a maximum number of fields with constraints that may get satisfied by the set of information that answers the query. When multiple attributes get identified in the original query, the server selects a template for each attribute from the appropriate set of candidate templates.

Also, when multiple sets of information get obtained in response to a single attribute, the server may select multiple templates from the same set of candidate templates.

The server then generates a phrase. The phrase may get generated by adding the set of information that answers the query to the fields of the selected template so that the phrase answers the original query. The phrase may get sentenced. Alternatively or in addition, the phrase may be portions of a sentence. When multiple attributes get identified in the original query, the server generates a phrase for each attribute. The server may then combine the phrases to generate a complete sentence.

The server may obtain a sentence template (eg, a meta-template) based on the type of the entity (eg, person or location). The sentence template may include multiple fields for inserting phrases. For example, the server may access a set of candidate meta-templates based on the type of entity, and then select a meta-template from the set based on the number of triples that answer the original query.

The server may then add the generated phrases described with reference to step to the fields of the sentence template to form a sentence.
The server communicates the phrase or sentence to a client device. The client device may then output the phrase to a display or as speech audio. The server transmits an audio signal corresponding to the phrase or sentence to the client device.