Generieren von Abfrageantworten
Veröffentlicht: 2022-05-05Dieses kürzlich von Google erteilte Patent bezieht sich im Allgemeinen auf das Generieren von Antworten auf Anfragen, und dieses Patent führt auch das Konzept von Constraints ein, um die Beantwortung von Anfragen zu unterstützen.
Verwenden von Einschränkungen für Abfrageantworten
Dieses Patent stellt Fragen zu Inhalten, die sich auf Tatsachen über Entitäten beziehen, zu denen Fragen hinzugefügt werden.
Dokumente zur Verwendung von Einschränkungen für die Abfragebeantwortung sind diese:
- GRIP: Constraint-based Explanation of Missing Answers for Graph Queries
Beantwortung von Fragen mit Constraint Satisfaction: QA-by-Dossier-with-Constraints
Interessanterweise verweist das erste Dokument auf den Google Knowledge Vault als Referenz. Wahrscheinlich, weil es sich darauf konzentriert, mithilfe von Einschränkungen richtige Antworten auf Fragen zu erhalten.
Da sich dieses Patent so sehr auf semantisches SEO konzentriert. Es erinnerte mich an andere Google-Patente, die sich mit diesem Thema befassten, einschließlich dieser beiden, die es wert sind, sorgfältig durchgelesen zu werden:
- Google Knowledge Graph-Abgleich
- Entitätsextraktionen für Knowledge Graphs bei Google
Das Patent bietet einige Einblicke in die Funktionsweise von Entitäten und Entitätsattributen, die Verwendung von Tupeln bei der Graphsuche und einen Blick auf semantisches SEO.
Generieren von Abfrageantworten durch Bereitstellen von Fakten aus einer Datenbank
Suchsysteme können Antworten auf sachliche Anfragen generieren, indem sie Fakten aus einer Datenbank bereitstellen.
Diese Fakten können in einem Diagramm gespeichert werden, das in Echtzeit aktualisiert werden kann.
Solche Antworten können als Listen von Suchergebnissen und nicht als Sätze formatiert werden.
Wenn ein Benutzer eine Sachfrage zum Beispiel per Sprache an ein Dialogsystem stellt, kann es wünschenswert sein, eine natürliche Antwort auf die Frage zu haben.
Die natürlichste Antwort kann eine Antwort sein, die als grammatikalische Aussage der Tatsachen formuliert ist, die der Frage des Benutzers entsprechen, um Antworten auf die Frage zu liefern.
Somit werden gemäß einem allgemeinen Aspekt des in diesem Patent beschriebenen Gegenstands als Antwort auf eine Tatsachenabfrage in einer Datenbank gespeicherte Tatsachen in einen Satz in der Sprache des Benutzers umgewandelt.
Empfangen von Abfrageantworten, die Attribute einer Entität identifizieren
Ein Aspekt des in dieser Beschreibung beschriebenen Gegenstands kann in Verfahren verkörpert werden, die die Aktionen des Empfangens einer Abfrage beinhalten, die Attribute einer Entität identifiziert. Diese Attribute sind die Fakten über die Entität.
Die Aktionen umfassen dann den Zugriff auf Kandidatenvorlagen für Abfrageantworten basierend auf den Attributen der Entität. Jede Kandidatenvorlage hat Felder; wobei jedem Bereich mindestens eine Einschränkung zugeordnet wird.
Dann umfassen die Aktionen das Erhalten eines Satzes von Informationen, die Abfrageantworten liefern, und das Auswählen einer Vorlage aus der Sammlung von Kandidatenvorlagen. Die gewählte Vorlage hat die bedeutendste Anzahl von Feldern mit Einschränkungen, die den Informationssatz erfüllen.
Semantische Tripel in Bezug auf Entitäten
Der Informationssatz kann ein Satz von Entitäts-Attribut-Wert-Tripeln sein.
Die Aktionen umfassen ferner das Erzeugen eines Satzes durch Hinzufügen des Satzes von Informationen zu den Feldern der ausgewählten Vorlage, so dass die Wörter Abfrageantworten umfassen.
Die Phrase ist ein Satz oder ein Teil eines Satzes. Schließlich umfassen die Aktionen das Kommunizieren der Wörter an ein Client-Gerät.
Der Satz kann als ein den Wörtern entsprechendes Audiosignal übermittelt werden.
Die Einschränkungen können Folgendes umfassen:
- Typbeschränkung
- Zeitliche Einschränkung
- Geschlechtsbeschränkung
- Beziehungszwang
- Singular/Plural-Einschränkung
- Beschränkung der Maßeinheit
- Determinante Einschränkung.
Einige Implementierungen umfassen das Erhalten vieler Informationssätze als Reaktion auf ein einzelnes Attribut in der Abfrage.
Die Maßnahmen umfassen ferner:
- Erhalten einer Satzvorlage basierend auf einem Typ der Entität, wobei die Satzvorlage eine Vielzahl von Feldern für Phrasen enthält
- Hinzufügen der Phrasen zu den Feldern der Satzvorlage, um den Satz zu bilden
- Auswählen einer Vorlage aus der Menge von Kandidatenvorlagen für jeden Informationssatz
- Generieren eines Satzes für jede ausgewählte Vorlage durch Hinzufügen des jeweiligen Informationssatzes zu den Feldern der jeweiligen ausgewählten Vorlage
- Kommunizieren des Satzes einschließlich der Phrasen an eine Client-Vorrichtung
Dabei kann es sich um Abfrageantworten handeln, die viele Attribute enthalten.
- Empfangen von Abfrageantworten, die viele Attribute einer Entität identifizieren
- Zugreifen für jedes Attribut der Entität auf einen Satz von Kandidatenvorlagen für Abfrageantworten basierend auf dem jeweiligen Attribut der Entität
- Erhalten eines Informationssatzes für jedes Attribut der Entität, der einen entsprechenden Teil der Abfrage beantwortet
- Auswählen einer Vorlage aus dem jeweiligen Satz von Kandidatenvorlagen
- Generieren eines Satzes für jedes Attribut der Entität durch Hinzufügen des jeweiligen Informationssatzes zu den Feldern der ausgewählten Vorlage
- Erhalten einer Satzvorlage basierend auf einem Typ der Entität, wobei die Satzvorlage eine Vielzahl von Feldern für Phrasen enthält
- Hinzufügen der Phrasen zu den Feldern der Satzvorlage, um einen Satz zu bilden
- Kommunizieren eines Satzes, der die Phrasen enthält, an ein Client-Gerät
Vorteile dieses Prozesses können sein:
Das System ist konfigurierbar und erweiterbar auf komplexe Tatsachenbehauptungen und Antworten.
Es kann eine saubere Trennung der eigentlichen Datenbank von dem Satzerzeugungsmechanismus ermöglichen.
Es kann das Hinzufügen neuer Templates über jedes geeignete Verfahren ermöglichen.
Dieses Patent zum Generieren von Abfrageantworten befindet sich unter
Generieren von Abfrageantworten
Erfinder: Engin Cinar Sahin, Vinicius J. Fortuna und Emma S. Persky
Zessionar: Google LLC
US-Patent: 11.321.331
Gewährt: 3. Mai 2022
Eingereicht: 23. Juli 2018
Abstrakt
Ein Server empfängt Abfrageantworten, die die Attribute einer Entität identifizieren.
Der Server greift auf einen Satz von Kandidatenvorlagen zu, um die Abfrage basierend auf den Attributen der Entität zu beantworten, wobei jede Kandidatenvorlage Felder aufweist, wobei jedes Feld mindestens einer Einschränkung zugeordnet wird.
Der Server erhält eine Menge von Informationen und Abfrageantworten und wählt eine Vorlage aus der Menge von Kandidatenvorlagen aus.
Die ausgewählte Vorlage hat die größte Anzahl von Feldern mit Einschränkungen, die durch den Informationssatz erfüllt werden.
Der Server erzeugt einen Satz, indem er den Informationssatz zu den Feldern der ausgewählten Vorlage hinzufügt, so dass der Satz eine Antwort auf die Abfrage umfasst.
Schließlich übermittelt der Server den Satz an ein Client-Gerät.
Fakten aus einer Datenbank in Sätze umwandeln
Wenn ein Benutzer eine sachliche Frage stellt, kann eine Suchmaschine Abfrageantworten liefern, indem sie auf eine Datenbank zugreift.
Einige Systeme, wie z. B. sprachbasierte Dialogsysteme, ermöglichen Benutzern, Abfragen als Fragen in natürlicher Sprache zu planen (z. B. „Wer ist der Präsident von Japan?“).
In solchen Fällen kann es wünschenswert sein, eine Antwort in natürlicher Sprache in Form eines Satzes statt einer Antwort bereitzustellen, die als Suchergebnisse formatiert ist, die sich auf Dokumente beziehen.
Somit können in dieser Beschreibung beschriebene Systeme Tatsachen aus einer Datenbank in Sätze umwandeln. Dies kann beispielsweise vorteilhaft sein, damit die Antwort dem Benutzer als Sprache wiedergegeben werden kann.
Um Sätze zu erzeugen, die die Fragen der Benutzer beantworten, kann es wünschenswert sein, zufällige Fakten aus einer Datenbank abzurufen. Die Fakten sind jedoch keine zufälligen – sie verwenden die Beschränkungsinformationen, um Abfrageantworten bereitzustellen. Dies scheint bessere Antworten auf Abfragen zu Entitäten zu bedeuten.
Um eine Frage zu beantworten, wie z. B. mit wem jemand geheiratet hat, kann ein System Daten erhalten, die alle vergangenen Ehen, an den vergangenen Ehen beteiligte Personen, Daten der Gewerkschaften und Arten von Eheverträgen umfassen. Eine flexible Datenbank, die Fakten unter Verwendung einer Graphstruktur darstellt, kann diese Fakten liefern.
Zugreifen auf Kandidatenvorlagen zum Generieren von Abfrageantworten basierend auf dem Attribut oder den Attributen
Sobald die Fakten gesammelt wurden, kann eine Antwortmaschine auf Kandidatenvorlagen zugreifen, um eine Antwort basierend auf dem Attribut oder den Attributen zu erzeugen, die in der Abfrage bereitgestellt werden. Wenn die ursprüngliche Frage beispielsweise lautet: „Mit wem war Woody Allen verheiratet?“, könnte der Punkt „Ehen“ sein. Wenn die eigentliche Abfrage „Wie alt ist Woody Allen“ lautet, kann das Attribut „Alter“ lauten. Wie unten beschrieben, kann jeder Punkt einer Frage mehreren Kandidatenvorlagen entsprechen, um beispielsweise mehr oder weniger detaillierte Antworten zu unterstützen.
Wenn das Attribut beispielsweise „Alter“ ist, kann die Antwortmaschine eine Vorlage erhalten, die Geburtsdatum und Alter enthält (z. B. {<Entität> wurde am <Datum> geboren und ist derzeit <Wert> Jahre alt}), eine Vorlage das nur das Alter enthält (z. B. {<Entität> ist derzeit <Wert> Jahre alt}) und eine Vorlage, die Geburts- und Todesdatum enthält (z. B. {<Entität> wurde am <Datum> geboren und starb am < /Datum>}).
Wie nachstehend ausführlicher beschrieben, können die in „< >“ eingeschlossenen Teile der Vorlagen (dh die Felder) mit verschiedenen Beschränkungen hinsichtlich der Daten, die sie aufnehmen können, verknüpft werden.
Sobald die Antwortmaschine die Kandidatenvorlagen erhalten hat, wählt sie die relevanteste Vorlage basierend auf mehreren Heuristiken aus und generiert einen Satz, indem sie die Fakten in die Vorlage einfügt. Die Antwortmaschine kann dann eine Antwort in Form einer Korrektur an den Benutzer zurückgeben.
Ein Datendiagramm-Suchsystem
Das System kann sich daran gewöhnen, eine Suchmaschine für einen Datengraphen unter Verwendung der hier beschriebenen Techniken zu implementieren.
Ein System wird als Suchmaschinensystem für ein Datendiagramm beschrieben, das Abfrageanforderungen von einem Client verarbeitet. Andere Konfigurationen und Anwendungen der verwandten Technologie können verwendet werden. Beispielsweise kann die Abfrageanforderung von einem anderen Server, von einem Batch-Job oder einem Benutzerendgerät in Kommunikation mit einem Datengraph-Suchsystem stammen.
Das Datengraph-Suchsystem kann ein Indizierungssystem, ein Suchsystem und einen Index-Cluster umfassen. Das Indizierungssystem, das Suchsystem und der Indexcluster können Rechengeräte sein, die die Form mehrerer unterschiedlicher Geräte haben, beispielsweise ein Standardserver, eine Gruppe solcher Server oder ein Rack-Serversystem.
Außerdem können die Indizierungssysteme, Suchsysteme und Index-Cluster in einem Personal Computer, beispielsweise einem Laptop-Computer, implementiert werden.
Das Datengraph-Suchsystem kann einen graphbasierten Datenspeicher enthalten. Ein solcher Datengraph speichert Knoten und Kanten, aus denen ein Graph erstellt werden kann.
Die Knoten können als Entitäten bezeichnet werden, und die Kanten können als Beziehungen zwischen zwei Entitäten bezeichnet werden. Solche Beziehungen können auf verschiedene Arten gespeichert werden.
Der graphbasierte Datenspeicher speichert in einem Beispiel Tripeltupel, die Entitäten und Beziehungen darstellen.
Dreifache Tupel, die Entitäten und Beziehungen darstellen
Ein Tripel kann auch ein enthalten
Ein Beispiel für ein Tripel ist die Entität Woody Allen als Subjekt (oder Entität), die Beziehung, in der gehandelt wird, als Prädikat (oder Attribut) und die Entität Annie Hall als Objekt (oder Wert).
Natürlich kann ein Datendiagramm mit vielen Entitäten und sogar einer begrenzten Anzahl von Beziehungen Milliarden von Tripeln haben.
Indizierungssysteme können Prozessoren beinhalten, die dazu konfiguriert sind, maschinenausführbare Anweisungen oder Teile von Software, Firmware oder eine Kombination davon auszuführen.
Antworten auf Abfragen finden
Das Suchsystem kann (nicht gezeigte) Server enthalten, die Abfragen von einem Benutzer eines Clients empfangen und diese Abfragen an das Suchsystem liefern.
Das Suchsystem kann für das Durchsuchen des Datendiagramms und anderer Datenquellen, wie z. B. eines Korpus von Dokumenten aus dem Internet oder einem Intranet, als Antwort auf eine Anfrage verantwortlich sein.
Zum Beispiel kann das Suchsystem eine Abfrage von einem Client, wie etwa einem Client, empfangen, einige Abfrageverarbeitungen durchführen und die Abfrage an den Index-Cluster und an andere Indizierungs-Cluster senden, die Indizes zum Durchsuchen anderer Quellen speichern.
Das Suchsystem kann ein Modul haben, das die Ergebnisse aus allen Quellen kompiliert und die kompilierten Ergebnisse dem Client bereitstellt.
Das Suchsystem darf nur Abfragen an den Index-Cluster senden und kann Suchergebnisse aus dem Index-Cluster an den Client liefern.
Das Suchsystem kann mit den Clients über das Netzwerk kommunizieren.
Ein Index-Cluster beim Finden von Abfrageantworten
Das System kann auch einen Index-Cluster enthalten. Der Index-Cluster kann ein einzelnes Computergerät oder ein verteiltes Datenbanksystem mit Computergeräten sein, jedes mit seinem eigenen Prozessor und Speicher.
Die Anzahl der Computergeräte, die den Index-Cluster umfassen, kann variieren, und der Kürze halber wird der Index-Cluster als eine einzelne Entität gezeigt.
Jeder Index-Cluster kann Prozessoren umfassen, die konfiguriert sind, um maschinenausführbare Anweisungen oder Teile von Software, Firmware oder eine Kombination davon auszuführen.
Der Rechencluster kann ein Betriebssystem (nicht gezeigt) und Computerspeicher, zum Beispiel den Hauptspeicher, enthalten, der dazu konfiguriert ist, Datenstücke entweder temporär, dauerhaft, halbpermanent oder eine Kombination davon zu speichern.
Der Speicher kann jede Art von Speichergerät umfassen, das Informationen in einem Format speichert, das von einem Prozessor gelesen und ausgeführt werden kann, einschließlich flüchtiger Speicher, nichtflüchtiger Speicher oder eine Kombination davon.
Ein Abfrage-Resolver, der auf den Index zugreift, um Ergebnisse als Reaktion auf die Abfrage abzurufen
Der Index-Cluster kann auch Module enthalten, wie z. B. Abfrageauflöser, die auf den Index zugreifen, um Ergebnisse als Reaktion auf die Abfrage abzurufen.
Ein Abfrageauflöser kann auch Teil des Suchsystems sein oder zwischen dem Suchsystem und dem Index-Cluster verteilt werden.
Immer kompliziertere Abfragen und Abfrageantworten
Eine einfache Abfrage, die ein Attribut („Alter“) beinhaltet und zu einer einzigen dreifachen Antwort führt.
Ein Beispiel für eine einfache Abfrage, die ein Attribut („Ehen“) beinhaltet, aber zu mehreren Dreifachantworten führt.
Ein Beispiel für eine komplizierte Abfrage, die zwei Attribute umfasst („Heimatstadt und Alma Mater“) und zu mehreren Dreifachantworten führt.
Ein Beispielsystem, das Sätze als Antwort auf Sachfragen generiert.
Das System umfasst ein Clientgerät, ein Suchsystem, einen Indexcluster und eine Antwortmaschine.
Die Entitäten können als Teil des Systems implementiert werden.
Ein Benutzer initiiert eine Abfrage mit Abfragebegriffen unter Verwendung einer Client-Vorrichtung.
Der Benutzer kann die ursprüngliche Abfrage als Satz formatieren.
Interaktion mit einem sprachbasierten Dialogsystem
Der Benutzer kann unter Verwendung eines sprachbasierten Dialogsystems mit dem Client-Gerät interagieren.
Beispielsweise kann der Benutzer die Abfrage „Wie alt ist Woody Allen” in ein Mikrofon des Client-Geräts äußern.
Das Client-Gerät kann dann eine Spracherkennung durchführen, um die Äußerung in eine Transkription umzuwandeln, und dann die Transkription an die Suchmaschine übertragen.
Alternativ kann die Client-Vorrichtung Audio-Sprachdaten übertragen, die die Äußerung codieren.
Das Suchsystem empfängt die Anfrage (z. B. „Wie alt ist Woody Allen“) von der Client-Vorrichtung.
Wenn die Abfrage als Audio-Sprachdaten codiert wird, kann das Suchsystem die Audio-Sprachdaten in eine Transkription umwandeln.
Das Suchsystem analysiert und formatiert dann die ursprüngliche Abfrage in ein <entity; attribute>-Format (z. B. <Woody Allen/Alter<) unter Verwendung von z. B. einer geeigneten Parsing-Engine für natürliche Sprache.
Das Suchsystem sendet dann die formatierte Abfrage an den Index-Cluster.
Der Index-Cluster greift auf den Index zu, um auf die Abfrage ansprechende Ergebnisse abzurufen.
Abfrageantworten in Form von Tripeln
Diese Ergebnisse können eine Reihe von Sachinformationen in Form von Tripeln sein (z. B. </woody><woody Allen/geboren am/1. Dez.>
Der Index-Cluster übermittelt dann die formatierte Anfrage (z. B. </woody><woody Allen/Alter> und die Sachinformationen, die die Anfrage beantworten (z. B. </woody><woody Allen/geboren am/1. Dez. 1935>) zur Antwortmaschine.
Unter Verwendung der formatierten Abfrage und der Sachinformationen generiert die Antwortmaschine dann eine Antwort in Form eines Satzes oder von Sätzen.
Die Antwortmaschine generiert eine Antwort wie folgt. Zuerst erhält die Antwortmaschine das Attribut oder die Attribute aus der formatierten Abfrage.
Dann verwendet die Antwortmaschine das Attribut oder die Attribute, um auf Kandidatensatz- oder Phrasenvorlagen aus der Vorlagendatenbank zuzugreifen.
Als nächstes wählt die Antwortmaschine eine der Vorlagen basierend auf den Tatsacheninformationen und verschiedenen Beschränkungen aus, die mit den Kandidatenvorlagen verbunden sind.
Abschließend füllt die Antwortmaschine die Felder in der ausgewählten Vorlage mit den Sachinformationen aus.
Eine Antwortmaschine, die ein Attribut oder Attribute erhält
Genauer gesagt erhält die Antwortmaschine zuerst das Attribut oder die Attribute von der formatierten Abfrage, indem sie die Abfrage parst. Angenommen, die Abfrage wurde beispielsweise als <Entität/Attribut>-Paar formatiert, extrahiert die Antwortmaschine den Attributteil des Paars.
In einigen Fällen kann die formatierte Abfrage mehrere Attribute enthalten. Beispielsweise kann die formatierte Abfrage die Form <entity/attribute/attribute> haben. In solchen Fällen kann die Antwortmaschine jedes Attribut aus der Abfrage extrahieren.
Als nächstes greift die Antwortmaschine auf Kandidatenvorlagen für jedes Attribut in der Abfrage aus der Vorlagendatenbank zu.
Jede Vorlage kann einem vollständigen Satz oder einem Teil eines Satzes (z. B. einem Satz) entsprechen.
Jede Vorlage enthält Felder (dargestellt als Teile in Klammern „< >“), in die Sachinformationen eingefügt werden können.
Eine Vorlage kann beispielsweise lauten: „Am <Datum> hat <Entität> mit <Wert> geheiratet.“ Die Vorlagen können manuell oder algorithmisch generiert werden.
Kandidatenvorlagen in der Sprache des Benutzers
Die Antwortmaschine identifiziert die Sprache des Benutzers und wählt Kandidatenvorlagen in der Sprache des Benutzers aus.
Beispielsweise kann die Antwortmaschine Daten von der Suchmaschine empfangen, die die Sprache der ursprünglichen Anfrage angeben. Vorteilhafterweise kann eine solche Konfiguration die Internationalisierung der Antwort erleichtern.
Felder können Einschränkungen zugeordnet werden, die die Daten steuern, die jedes Feld enthalten kann.
Wie in dieser Beschreibung verwendet, bezeichnet die Notation „<X/Y>“ ein Feld mit einer „X“-Beschränkung und einer „Y“-Beschränkung.
Stichprobenbeschränkungen können Typbeschränkungen, zeitliche Beschränkungen, geschlechtsspezifische Beschränkungen, Beziehungsbeschränkungen, Singular/Plural-Beschränkungen, Maßeinheitenbeschränkungen und Determinantenbeschränkungen umfassen.
Unterschiedliche Konstratinis können unterschiedliche Arten von Daten erfordern
Eine Typbeschränkung kann einen bestimmten Datentyp erfordern, z. B. kann eine <date>-Beschränkung ein Datum erfordern, eine <entity>-Beschränkung kann einen Entitätsnamen oder eine andere Kennung erfordern, und a
Eine zeitliche Einschränkung kann beispielsweise erfordern, dass ein Datum oder eine Uhrzeit in der Vergangenheit oder in der Zukunft liegt, z. B. kann ein Feld, das <Datum/Vergangenheit> enthält, erfordern, dass das Feld ein Datum enthält, das in der Vergangenheit liegt. Eine Geschlechtseinschränkung kann beispielsweise ein männliches oder weibliches Geschlecht erfordern.
Eine Beziehungsbeschränkung kann beispielsweise eine Art von Beziehung zu einer anderen Entität erfordern, z. B. kann ein Feld, das <Entität/Ehepartner> enthält, erfordern, dass das Feld eine Entität enthält, die der Ehepartner einer anderen Entität ist. Eine Singular/Plural-Einschränkung kann beispielsweise erfordern, dass die Daten in dem Feld in der Singular- oder Pluralform vorliegen.
Eine Maßeinheitseinschränkung kann beispielsweise erfordern, dass die Daten im Feld in einer bestimmten Maßeinheit (z. B. Zoll, Fuß, Zentimeter, Meter usw.) gemessen werden. Eine Determinantenbeschränkung kann beispielsweise erfordern, dass das Wort „the“ dem Feld vorangestellt wird.
Jedes Attribut in der Abfrage kann als Schlüssel für den Zugriff auf einen Satz von Kandidatenvorlagen fungieren. Beispielsweise kann das Attribut „Alter“ zum Abruf der Vorlagen führen. Die Beispielvorlagen beinhalten eine erste Vorlage „
Die zweite Vorlage, „<Entität> ist derzeit <Wert< Jahre alt“, erfordert einen Entitätsnamen für das Feld <Entität> und eine Zahl (z. B. ein Alter) für das Feld <Wert>.
Die dritte Vorlage, „<Entität> wurde am <date/past> geboren und starb am <date/past>“, erfordert einen Entitätsnamen für das Feld </entity><entity> und zwei vergangene Daten für das <date/ Vergangenheit> Felder.
Mehrere Vorlagen für bestimmte Attribute
Vorteilhafterweise ermöglicht das Vorhandensein mehrerer Vorlagen für ein bestimmtes Attribut, dass Implementierungen Teilfakten unterstützen. Wenn beispielsweise für Altersvorlagen das Geburtsjahr bekannt ist, aber das genaue Datum unbekannt ist, kann eine geeignete Vorlage lauten: „</entität><entität> wurde im <Jahr/Vergangenheit> geboren.“ Das Bereitstellen mehrerer Vorlagen für ein bestimmtes Attribut ermöglicht auch das Ändern der Zeitformen für verschiedene Teile von Tatsachen (z. B. „Woody Allen heiratet“ und „Woody Allen hat geheiratet“).
Nach Erhalt der Kandidatenvorlagen wählt die Antwortmaschine eine Vorlage aus den Kandidatenvorlagen basierend auf verschiedenen Heuristiken aus. Beispielsweise kann die Antwortmaschine die Geschlechterübereinstimmung und die korrekte Zeitform prüfen. Außerdem kann die Antwortmaschine bestimmen, dass die Anzahl der Antworten auf die ursprüngliche Anfrage mit der Anzahl der Felder der ausgewählten Vorlage übereinstimmt.
Die Antwortmaschine kann auch bestimmen, ob die Beschränkungen und Felder der ausgewählten Vorlage erfüllt werden. Die Antwortmaschine kann die Vorlage mit der maximalen Anzahl von Feldern mit Einschränkungen auswählen, die durch die Sachinformationen erfüllt werden (z. B. die datenreichste Vorlage). Die Sachinformation lautet „<woody Allen/geboren am/Dez. 1, 1935>.“
In diesem Beispiel lautet die erste Kandidatenvorlage „<Entität> wurde am <Datum/Vergangenheit> geboren und ist derzeit
Die Antwortmaschine kann Werte basierend auf Sachinformationen ableiten. Die Antwortmaschine kann daher basierend auf dem Geburtsdatum einen Alterswert berechnen, um die <Wert<-Feldbeschränkung zu erfüllen. Da die Sachinformationen alle Beschränkungen für die Felder in der ersten Vorlage erfüllen, wählt die Antwortmaschine die erste Vorlage aus.
Die Antwortmaschine wählt die erste Vorlage mit Feldern aus, die mit den Sachinformationen gefüllt werden können, und führt keine zusätzliche Verarbeitung durch. Alternativ kann die Antwortmaschine jede Vorlage in den Kandidatenvorlagen verarbeiten und die Vorlage mit der größten Menge an Feldern auswählen, die mit den Sachinformationen gefüllt werden können.
Nach Auswahl der Vorlage generiert die Antwortmaschine dann einen Satz oder eine Wendung basierend auf der Vorlage. Beispielsweise kann die Antwortmaschine die Felder in der Vorlage durch die entsprechenden Daten aus den Sachinformationen ersetzen. Die Antwort-Engine generiert den Satz „Woody Allen wurde am 1. Dezember 1935 geboren und ist derzeit 77 Jahre alt“ unter Verwendung der ausgewählten Vorlage.
Die Antwortmaschine überträgt dann eine Antwort an das Client-Gerät, wobei die Antwort den generierten Satz enthält. Die Antwort kann eine Transkription sein, die das Client-Gerät in Sprache umwandelt und für den Benutzer wiedergibt.
System, das Sätze als Antwort auf sachliche Anfragen generiert
Das System umfasst ein Clientgerät, ein Suchsystem, einen Indexcluster und eine Antwortmaschine. Die dargestellten Entitäten können beispielsweise als Teil des Systems implementiert werden.
Ein Client-Gerät initiiert eine Abfrage mit Abfragebegriffen.
Beispielsweise kann ein Benutzer die Abfrage „Mit wem war Woody Allen verheiratet?“ in einen Webbrowser auf dem Clientgerät eingeben.
Das Suchsystem empfängt die Abfrage (z. B. „Mit wem war Woody Allen verheiratet“) von der Client-Vorrichtung.
Das Suchsystem analysiert und formatiert dann die ursprüngliche Abfrage in eine
In diesem Beispiel enthält die formatierte Abfrage eine Kennung der Entität (z. B. Woody Allen), einen Entitätstyp (z. B. Person) und ein Attribut (z. B. Ehen).
Die Typinformationen können verwendet werden, um eine Metavorlage zu generieren, wie unten beschrieben. Das Suchsystem sendet dann die formatierte Abfrage an den Index-Cluster.
Der Index-Cluster greift auf den Index zu, um als Antwort auf die Abfrage eine Reihe von Sachinformationen abzurufen
Der Index-Cluster greift auf den Index zu, um als Antwort auf die Abfrage einen Satz faktischer Informationen abzurufen. Diese Ergebnisse beinhalten mindestens zwei Tripel (z. B.
Der Index-Cluster überträgt dann die formatierte Abfrage (z. B. <woody Allen/Alter>) und die Sachinformationen, die die Abfrage beantworten (z. B. <Soon-Yi Previn/Frau/1997> und <louise Lasser/Frau/1966/1970>). ) an die Antwortmaschine.
Unter Verwendung der formatierten Abfrage und der Sachinformationen erzeugt die Antwortmaschine dann eine Antwort in Form eines Satzes oder von Sätzen wie folgt.
Zunächst erhält die Antwortmaschine die Typinformationen aus der formatierten Abfrage (z. B. Person).
Die Typinformationen identifizieren den Entitätstyp, auf dem die Abfrage basiert. Unter Verwendung der Typinformationen greift die Antwortmaschine auf Kandidaten-Metavorlagen zu, die mit einem Entitätstyp "Person" verknüpft sind.
Wie in dieser Spezifikation erwähnt, sind Metavorlagen Vorlagen, deren Felder so konfiguriert sind, dass sie andere Vorlagen enthalten.
Jede der Kandidaten-Metavorlagen enthält ein Feld für einen Namen oder eine Kennung einer Entität und mindestens ein Feld zum Hinzufügen anderer Vorlagen.
Diese Vorlagen ermöglichen es der Antwortmaschine, Sätze zu erzeugen, um verschiedene Sätze mit Informationen über eine Person zu integrieren.
Die Antwortmaschine erhält auch das Attribut oder die Attribute von der formatierten Abfrage und verwendet das Attribut oder die Attribute, um auf Kandidatensatzvorlagen aus der Vorlagendatenbank zuzugreifen.
Diese Satzvorlagen werden so gestaltet, dass sie in die Metavorlagen integriert werden.
Wie oben beschrieben, kann jedes Attribut in der Abfrage als Schlüssel zum Zugreifen auf einen Satz von Kandidatensatzvorlagen fungieren.
Beispielsweise kann das Attribut „Ehen“ zum Abrufen der Phrasenvorlagen führen.
Die Mustersatzvorlagen enthalten eine erste Vorlage „hat geheiratet mit <Entität/Ehepartner> seit <Datum/Vergangenheit>“, die eine Entität erfordert, die mit der Entität in der formatierten Abfrage für die verheiratet ist
Die zweite Vorlage, „heiratet mit <Entität/Ehepartner>“, erfordert eine Entität, die mit der Entität in der formatierten Abfrage für die verheiratet ist
Die dritte Vorlage „ist verheiratet“ erfordert keine zusätzlichen Informationen.
Die vierte Vorlage, „war verheiratet mit <Entität/Ehepartner > von <Datum/Vergangenheit> bis <Datum/Vergangenheit>“, erfordert eine Entität, die mit der Entität in der formatierten Abfrage für die verheiratet ist
Als Nächstes wählt die Antwortmaschine eine der Kandidaten-Metavorlagen basierend auf der Art von Informationen aus, die in den Sachinformationen enthalten sind. Insbesondere wählt die Antwortmaschine basierend auf der Anzahl von Tripeln, die in den Sachinformationen enthalten sind, ein Kandidaten-Meta-Template aus. Zwei Tripel werden in die Sachinformation aufgenommen. Die Antwortmaschine wählt daher die Metavorlage „Person“ mit Feldern für zwei Vorlagen aus, dh „<Entität><Vorlage> und </Vorlage><Vorlage>“.
Für jedes Tripel, das in den Sachinformationen enthalten ist, wählt die Antwortmaschine auch eine Vorlage aus den Kandidatensatzvorlagen aus. Die Antwortmaschine kann die Phrasenvorlage mit der maximalen Anzahl von Feldern mit Beschränkungen auswählen, die durch die Sachinformationen erfüllt werden (z. B. die datenreichste Vorlage).
Das erste Tripel, das in den Tatsacheninformationen enthalten ist, ist <Soon-Yi Previn/Ehefrau/1997>.“ In diesem Beispiel lautet die erste Kandidatenphrasenvorlage „war verheiratet mit
Das erste Tripel hat eine Entität mit einer Ehepartnerbeziehung zu der Entität in der formatierten Abfrage, die die Feldeinschränkung <Entität/Ehepartner> erfüllt, und ein Datum in der Vergangenheit, das die Feldeinschränkungen <Datum/Vergangenheit> erfüllt. Da das erste Tripel alle Einschränkungen für die Felder in der ersten Vorlage erfüllt, wählt die Antwortmaschine die erste Vorlage für das erste Tripel aus.
Das zweite in den Tatsachenangaben enthaltene Tripel ist <louise Lasser/Ehefrau/1966/1970>.“ Die vierte Kandidatensatzvorlage lautet „war verheiratet mit <Entität/Ehepartner> von <Datum/Vergangenheit> bis <Datum/Vergangenheit>“, die ein <Entität/Ehepartner>-Feld und zwei <Datum/Vergangenheit>-Felder enthält. Das zweite Tripel in den Sachinformationen stellt eine Entität mit einer Ehepartnerbeziehung zu der Entität in der formatierten Abfrage bereit, die die Feldeinschränkung <Entität/Ehepartner> erfüllt, und zwei Datumsangaben in der Vergangenheit, die die erfüllen
Da das zweite Tripel alle Einschränkungen für die Felder in der vierten Vorlage erfüllt, wählt die Antwortmaschine die vierte Vorlage für das zweite Tripel aus.
Die Antwortmaschine wählt die erste Vorlage mit Feldern aus, die mit den Sachinformationen gefüllt werden können, und führt keine zusätzliche Verarbeitung durch. Alternativ kann die Antwortmaschine jede Vorlage in den Kandidatenvorlagen verarbeiten und die Vorlage mit der größten Menge an Feldern auswählen, die mit den Sachinformationen gefüllt werden können.
Nach Auswahl der Vorlagen generiert die Antwortmaschine dann einen Satz basierend auf den Vorlagen. Beispielsweise kann die Antwortmaschine die Felder in den ausgewählten Vorlagen durch die entsprechenden Daten aus den Sachinformationen ersetzen.
Die Antwortmaschine kann die Felder in der ersten ausgewählten Phrasenvorlage (d. h. „hat geheiratet mit <Entität/Ehepartner> seit <<Datum/Vergangenheit>“) durch die Informationen aus dem ersten Tripel ersetzen, um die Phrase „hat geheiratet an Soon-Yi Previn seit 1997.“ Die Antwortmaschine generiert also den Satz „Woody Allen ist seit 1997 mit Soon-Yi Previn verheiratet und war zuvor von 1966 bis 1970 mit Louise Lasser verheiratet.“ Die Antwortmaschine übermittelt dann eine Antwort an das Client-Gerät, das den generierten Satz enthält. Die Antwort kann in eine Suchergebnisseite aufgenommen werden, die den Satz und andere Suchergebnisse enthält. Die Suchergebnisseite enthält auch ein Suchfeld, das die ursprüngliche Suchanfrage anzeigt (d. h. „Wer war Woody Allen verheiratet mit“). Die Suchergebnisseite kann dann vom Clientgerät gerendert werden. Der Satz könnte alternativ als Transkription übertragen werden, die es dem Clientgerät ermöglicht, Sprache zu erzeugen, oder als Audiosignal, das den Satz für kodiert Rendering auf dem Client-Gerät.
Ein System, das Sätze als Antwort auf sachliche Fragen generiert
Das System umfasst ein Clientgerät, ein Suchsystem, einen Indexcluster und eine Antwortmaschine.
Ein Client-Gerät initiiert eine Abfrage mit zwei Abfragebegriffen („Wo ist Woody Allens Heimatstadt und Alma Mater”) in einen Webbrowser auf dem Client-Gerät.
Das Suchsystem empfängt die Abfrage (z. B. „Wo ist Woody Allens Heimatstadt und Alma Mater“) von der Client-Vorrichtung. Das Suchsystem parst und formatiert dann die ursprüngliche Anfrage in ein <Entität/Typ/Attribut>-Format (z. B. >woody Allen/Person/Heimatstadt/College<) unter Verwendung von beispielsweise einer geeigneten Parsing-Engine für natürliche Sprache.
In diesem Beispiel enthält die formatierte Abfrage eine Kennung der Entität (z. B. Woody Allen), einen Entitätstyp (z. B. Person) und zwei Attribute (z. B. Heimatstadt und Hochschule). Das Suchsystem sendet dann die formatierte Abfrage an den Index-Cluster.
Unter Verwendung der formatierten Abfrage und der Sachinformationen erzeugt die Antwortmaschine dann eine Antwort in Form eines Satzes oder von Sätzen wie folgt. 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.