Generarea de răspunsuri la interogare

Publicat: 2022-05-05

Acest brevet Google acordat recent se referă în general la generarea de răspunsuri la interogări, iar acest brevet introduce, de asemenea, conceptul de Constrângeri pentru a ajuta la răspunsul la întrebări.

Utilizarea constrângerilor pentru răspunsurile la interogare

Acest brevet pune întrebări despre conținutul legat de fapte despre entități despre care se adaugă întrebări.

Documentele despre Utilizarea constrângerilor pentru răspunsul la interogări sunt următoarele:

    GRIP: Explicație bazată pe constrângeri a răspunsurilor lipsă pentru interogările grafice
    Răspunsuri la întrebări folosind Constraint Satisfaction: QA-by-Dossier-with-Constraints

Interesant, primul document se referă la Google Knowlege Vault ca referință. Probabil pentru că se concentrează pe obținerea de răspunsuri corecte la întrebări folosind constrângeri.

Deoarece acest brevet se concentrează atât de mult pe SEO semantic. Mi-a adus aminte de alte brevete Google care s-au referit la acest subiect, inclusiv acestea două, care merită citite cu atenție:

  • Google Knowledge Graph Reconciliation
  • Extracții de entități pentru Knowledge Graphs la Google

Brevetul oferă câteva perspective asupra modului în care funcționează entitățile și atributele entității, cum sunt utilizate tuplurile în căutarea grafică și o privire asupra SEO semantic.

Generarea de răspunsuri la interogare prin furnizarea de fapte dintr-o bază de date

Sistemele de căutare pot genera răspunsuri la întrebări concrete prin furnizarea de fapte dintr-o bază de date.

Aceste fapte pot fi stocate într-un grafic care poate fi actualizat în timp real.

Astfel de răspunsuri pot fi formatate ca liste de rezultate ale căutării, mai degrabă decât propoziții.

Când un utilizator pune o întrebare reală, de exemplu, prin voce la un sistem de dialog, poate fi de dorit să aibă un răspuns natural la întrebare.

Răspunsul cel mai natural poate fi un răspuns formulat ca o declarație gramaticală a faptelor care îndeplinesc întrebarea utilizatorului pentru a oferi răspunsuri la interogare.

Astfel, conform unui aspect general al subiectului descris în acest brevet, ca răspuns la o interogare de fapt, faptele stocate într-o bază de date sunt convertite într-o propoziție în limba utilizatorului.

Primirea răspunsurilor la interogare care identifică atributele unei entități

Un aspect al subiectului descris în această specificație poate fi încorporat în metode care includ acțiunile de primire a unei interogări de identificare a atributelor unei entități. Aceste atribute sunt faptele despre entitate.

Acțiunile includ apoi accesarea șabloanelor candidate pentru răspunsuri la interogare bazate pe atributele entității. Fiecare șablon de candidat are câmpuri; în care fiecare zonă este asociată cu cel puțin o constrângere.

Apoi, acțiunile includ obținerea unui set de informații care oferă răspunsuri la interogare și selectarea unui șablon din colecția de șabloane candidate. Șablonul ales are cel mai semnificativ număr de câmpuri cu constrângeri care satisfac setul de informații.

Triple semantice legate de entități

Setul de informații poate fi un set de triple entitate-atribut-valoare.

Acțiunile includ în plus generarea unei fraze prin adăugarea setului de informații la câmpurile șablonului selectat, astfel încât cuvintele să cuprindă răspunsuri la interogare.

Expresia este o propoziție sau o parte a unei propoziții. În cele din urmă, acțiunile includ comunicarea cuvintelor către un dispozitiv client.

Expresia poate fi comunicată ca un semnal audio corespunzător cuvintelor.

Constrângerile pot include:

  • Constrângere de tip
  • Constrângere temporală
  • Constrângere de gen
  • Constrângere relațională
  • Constrângere la singular/plural
  • Constrângere de unitate de măsură
  • Constrângere determinantă.

Unele implementări implică obținerea mai multor seturi de informații care răspund la un singur atribut din interogare.

În plus, acțiunile includ:

  • Obținerea unui șablon de propoziție bazat pe un tip al entității, în care șablonul de propoziție include o multitudine de câmpuri pentru fraze
  • Adăugarea frazelor în câmpurile șablonului de propoziție pentru a forma propoziția
  • Selectarea, pentru fiecare set de informații, a unui șablon din setul de șabloane candidate
  • Generarea, pentru fiecare șablon selectat, a unei fraze prin adăugarea setului respectiv de informații la câmpurile șablonului respectiv selectat
  • Comunicarea propoziției, inclusiv frazele, către un dispozitiv client

Aceasta poate implica răspunsuri la interogare care includ multe atribute.

  • Primirea răspunsurilor la interogare care identifică multe atribute ale unei entități
  • Accesarea, pentru fiecare atribut al entității, a unui set de șabloane candidate pentru răspunsuri la interogare bazate pe atributul respectiv al entității
  • Obținerea, pentru fiecare atribut al entității, a unui set de informații care răspunde unei părți respective a interogării
  • Selectarea unui șablon din setul respectiv de șabloane candidate
  • Generarea, pentru fiecare atribut al entității, a unei fraze prin adăugarea setului respectiv de informații la câmpurile șablonului selectat
  • Obținerea unui șablon de propoziție bazat pe un tip al entității, în care șablonul de propoziție include o multitudine de câmpuri pentru fraze
  • Adăugarea expresiilor în câmpurile șablonului de propoziție pentru a forma o propoziție
  • Comunicarea unei propoziții incluzând frazele către un dispozitiv client

Avantajele acestui proces pot include:

Sistemul este configurabil și extensibil la afirmații și răspunsuri factuale complexe.
Poate permite o separare curată a bazei de date actuale de mecanismul de generare a propozițiilor.
Poate permite adăugarea de noi șabloane prin orice metodă adecvată.

Acest brevet Generating Query Answers este la

Generarea de răspunsuri la întrebări
Inventatori: Engin Cinar Sahin, Vinicius J. Fortuna și Emma S. Persky
Cesionar: Google LLC
Brevet SUA: 11.321.331
Acordat: 3 mai 2022
Depus: 23 iulie 2018

Abstract

Un server primește răspunsuri la întrebări care identifică atributele unei entități.

Serverul accesează un set de șabloane candidate pentru a răspunde la interogare pe baza atributelor entității, fiecare șablon candidat având câmpuri, în care fiecare câmp este asociat cu cel puțin o constrângere.

Serverul obține un set de informații și răspunsuri la întrebări și selectează un șablon din setul de șabloane candidate.

Șablonul selectat are cel mai mare număr de câmpuri cu constrângeri îndeplinite de setul de informații.

Serverul generează o frază prin adăugarea setului de informații în câmpurile șablonului selectat, astfel încât fraza să cuprindă un răspuns la interogare.

În cele din urmă, serverul comunică fraza unui dispozitiv client.

Conversia faptelor dintr-o bază de date în propoziții

Atunci când un utilizator pune o întrebare concretă, un motor de căutare poate oferi răspunsuri la întrebări accesând o bază de date.

Unele sisteme, cum ar fi sistemele de dialog vocale, permit utilizatorilor să planifice interogări ca întrebări în limbaj natural (de exemplu, „Cine este președintele Japoniei?”).

În astfel de cazuri, poate fi de dorit să se furnizeze un răspuns în limbaj natural sub forma unei propoziții, mai degrabă decât un răspuns formatat ca rezultate de căutare care se referă la documente.

Astfel, sistemele descrise în această specificație pot converti fapte dintr-o bază de date în propoziții. Acest lucru poate fi avantajos, de exemplu, pentru ca răspunsul să fie redat înapoi utilizatorului ca vorbire.

Pentru a produce propoziții care să răspundă la întrebările utilizatorilor, poate fi de dorit să se regăsească fapte aleatorii dintr-o bază de date. Faptele nu sunt însă aleatorii – ele folosesc informațiile privind constrângerile pentru a oferi răspunsuri la întrebări. Acest lucru ar părea să însemne răspunsuri mai bune la întrebările despre entități.

Pentru a răspunde la o întrebare, cum ar fi cine s-a căsătorit cineva, un sistem poate obține date care includ toate căsătoriile anterioare, persoanele implicate în nunțile anterioare, datele unirilor și tipurile de acorduri maritale. O bază de date flexibilă care reprezintă fapte folosind o structură grafică poate furniza aceste fapte.

Accesarea șabloanelor de candidați pentru generarea de răspunsuri la interogare pe baza atributului sau atributelor

Odată ce faptele au fost colectate, un motor de răspuns poate accesa șabloane de candidat pentru a genera un răspuns pe baza atributului sau atributelor furnizate în interogare. De exemplu, dacă întrebarea inițială este „Cu cine a fost căsătorit Woody Allen”, ideea poate fi „căsătorii”. Dacă interogarea reală este „Câți ani are Woody Allen”, atributul poate fi „vârsta”. După cum este descris mai jos, fiecare punct al unei întrebări poate corespunde mai multor șabloane de candidat, de exemplu, pentru a sprijini răspunsuri mai mult sau mai puțin detaliate.

De exemplu, dacă atributul este „vârstă”, motorul de răspunsuri poate obține un șablon care include data și vârsta nașterii (de exemplu, {<entity> s-a născut pe <data> și are în prezent <value> ani}), un șablon care include numai vârsta (de exemplu, {<entity> are în prezent <valoare> ani}) și un șablon care include data nașterii și data morții (de exemplu, {<entity> s-a născut pe <data> și a murit pe < /data>}).

După cum este descris mai detaliat mai jos, porțiunile șabloanelor incluse în „< >” (adică, câmpurile) pot fi asociate cu diverse constrângeri asupra datelor pe care le pot deține.

Odată ce motorul de răspunsuri a obținut șabloanele candidate, selectează cel mai relevant șablon pe baza euristicii multiple și generează o propoziție prin inserarea faptelor în șablon. Motorul de răspunsuri poate oferi apoi utilizatorului un răspuns într-o corecție.

Un sistem de căutare grafică de date

Sistemul se poate obișnui cu implementarea unui motor de căutare pentru un grafic de date folosind tehnicile descrise aici.

Un sistem este descris ca un sistem de motor de căutare pentru un grafic de date care procesează cererile de interogare de la un client. Alte configurații și aplicații ale tehnologiei aferente pot fi utilizate. De exemplu, cererea de interogare poate proveni de la un alt server, de la un job batch sau de la un terminal de utilizator în comunicare cu un sistem de căutare a graficelor de date.

Sistemul de căutare a graficelor de date poate include un sistem de indexare, un sistem de căutare și un cluster de indexare. Sistemul de indexare, sistemul de căutare și clusterul de indexare pot fi dispozitive de calcul care iau forma mai multor dispozitive diferite, de exemplu, un server standard, un grup de astfel de servere sau un sistem de server rack.

În plus, sistemele de indexare, sistemele de căutare și clusterele de indexare pot fi implementate într-un computer personal, de exemplu, un laptop.

Sistemul de căutare a graficelor de date poate include un depozit de date bazat pe grafic. Un astfel de grafic de date stochează noduri și margini, din care poate fi creat un grafic.

Nodurile pot fi numite entități, iar marginile pot fi denumite relații între două entități. Astfel de relații pot fi stocate în mai multe moduri.

Magazinul de date bazat pe grafice stochează tuple triple reprezentând entități și relații într-un exemplu.

Triple tupluri reprezentând entități și relații

Un triplu poate include și un format, cu entitatea reprezentând entitatea de pornire, punctul reprezentând o caracteristică a unei entități afiliate ca margini redefinite din entitate și valoarea reprezentând entitatea aferentă.

Un exemplu de triplu este entitatea Woody Allen ca subiect (sau entitate), relația în care a acționat ca predicat (sau atribut) și entitatea Annie Hall ca obiect (sau valoare).

Desigur, un grafic de date cu multe entități și chiar un număr limitat de relații poate avea miliarde de triple.

Sistemele de indexare pot include procesoare configurate pentru a executa instrucțiuni executabile de mașină sau bucăți de software, firmware sau o combinație a acestora.

Găsirea răspunsurilor la întrebări

Sistemul de căutare poate include servere (neprezentate) care primesc interogări de la un utilizator al unui client și furnizează acele interogări sistemului de căutare.

Sistemul de căutare poate fi responsabil pentru căutarea în graficul de date și, în alte surse de date, cum ar fi un corpus de documente de pe Internet sau un Intranet, ca răspuns la o interogare.

De exemplu, sistemul de căutare poate primi o interogare de la un client, cum ar fi un client, poate efectua unele procesări de interogare și poate trimite interogarea către clusterul de indexare și către alte clustere de indexare care stochează indici pentru căutarea altor surse.

Sistemul de căutare poate avea un modul care compila rezultatele din toate sursele și furnizează rezultatele compilate clientului.

Sistemul de căutare poate trimite interogări numai către clusterul de index și poate furniza rezultate de căutare din clusterul de index către client.

Sistemul de căutare poate fi în comunicare cu clienții prin rețea.

Un grup index în găsirea răspunsurilor la interogare

Sistemul poate include, de asemenea, un cluster de index. Clusterul index poate fi un singur dispozitiv de calcul sau un sistem de baze de date distribuite cu dispozitive de calcul, fiecare cu propriul procesor și memorie.

Numărul de dispozitive de calcul care cuprind clusterul de index poate varia și, de dragul conciziei, clusterul de index este afișat ca o singură entitate.

Fiecare cluster de index poate include procesoare configurate pentru a executa instrucțiuni executabile de mașină sau bucăți de software, firmware sau o combinație a acestora.

Clusterul de calcul poate include un sistem de operare (neprezentat) și memorii de computer, de exemplu, memoria principală, configurată pentru a stoca bucăți de date, fie temporar, permanent, semi-permanent, sau o combinație a acestora.

Memoria poate include orice tip de dispozitiv de stocare care stochează informații într-un format care poate fi citit și executat de un procesor, inclusiv memorie volatilă, memorie nevolatilă sau o combinație a acestora.

Un instrument de rezolvare a interogărilor care accesează indexul pentru a prelua rezultate care răspund la interogare

Clusterul de index poate include, de asemenea, module, cum ar fi soluția de interogare, care accesează indexul pentru a prelua rezultate care răspund la interogare.

Un rezolutor de interogări poate face, de asemenea, parte din sistemul de căutare sau poate fi distribuit între sistemul de căutare și clusterul de indexuri.

Interogări și răspunsuri la interogări din ce în ce mai complicate

O interogare simplă care implică un singur atribut („vârstă”) și are ca rezultat un singur răspuns triplu.

Un exemplu de interogare simplă care implică un singur atribut („căsătorii”), dar are ca rezultat mai multe răspunsuri triple.

Un exemplu de interogare complicată care implică două atribute („orașul natal și alma mater”) și are ca rezultat răspunsuri triple multiple.

Un exemplu de sistem care generează propoziții ca răspuns la întrebări de fapt.

Sistemul include un dispozitiv client, un sistem de căutare, un cluster de indexuri și un motor de răspunsuri.

Entitățile pot fi implementate ca parte a sistemului.

Un utilizator inițiază o interogare având termeni de interogare folosind un dispozitiv client.

Utilizatorul poate formata interogarea originală ca o propoziție.

Interacțiunea cu un sistem de dialog vocal

Utilizatorul poate interacționa cu dispozitivul client folosind un sistem de dialog vocal.

De exemplu, utilizatorul poate rosti interogarea „Câți ani are Woody Allen” într-un microfon al dispozitivului client.

Dispozitivul client poate efectua apoi recunoașterea vorbirii pentru a converti enunțul în transcriere și apoi transmite transcrierea motorului de căutare.

Alternativ, dispozitivul client poate transmite date audio de vorbire care codifică enunţul.

Sistemul de căutare primește interogarea (de exemplu, „Câți ani are Woody Allen”) de la dispozitivul client.

Dacă interogarea este codificată ca date audio de vorbire, sistemul de căutare poate converti datele de vorbire audio într-o transcriere.

Apoi, sistemul de căutare analizează și formatează interogarea originală într-o <entity; attribute> (cum ar fi <woody Allen/age<) folosind, de exemplu, un motor adecvat de analiză a limbajului natural.

Sistemul de căutare trimite apoi interogarea formatată către clusterul de indexuri.

Clusterul de indexuri accesează indexul pentru a prelua rezultate care răspund la interogare.

Răspunsuri la întrebări sub formă de triple

Aceste rezultate pot fi un set de informații faptice sub formă de triple (de exemplu, </woody><woody Allen/născut pe/dec. 1,>

Clusterul de indexuri transmite apoi interogarea formatată (de exemplu, </woody><woody Allen/age> și informațiile faptice care răspund la interogare (de exemplu, </woody><woody Allen/născut pe/dec. 1, 1935>) la motorul de răspunsuri.

Folosind interogarea formatată și informațiile faptice, motorul de răspunsuri generează apoi un răspuns sub forma unei propoziții sau propoziții.

Motorul de răspunsuri generează un răspuns după cum urmează. În primul rând, motorul de răspunsuri obține atributul sau atributele din interogarea formatată.

Apoi, motorul de răspunsuri folosește atributul sau atributele pentru a accesa șabloanele de propoziții sau fraze candidate din baza de date de șabloane.

Apoi, motorul de răspunsuri selectează unul dintre șabloane pe baza informațiilor faptice și a diferitelor constrângeri asociate șabloanelor candidate.

În cele din urmă, motorul de răspuns completează câmpurile din șablonul selectat folosind informațiile faptice.

Un motor de răspunsuri care obține un atribut sau atribute

Mai detaliat, motorul de răspunsuri obține mai întâi atributul sau atributele din interogarea formatată prin analizarea interogării. De exemplu, presupunând că interogarea a fost formatată ca o pereche <entity/attribute>, motorul de răspuns extrage porțiunea cu atribut a perechii.

În unele cazuri, interogarea formatată poate include mai multe atribute. De exemplu, interogarea formatată poate fi sub forma <entity/attribute/attribute>. În astfel de cazuri, motorul de răspunsuri poate extrage fiecare atribut din interogare.

Apoi, motorul de răspunsuri accesează șabloane candidate pentru fiecare atribut din interogarea din baza de date de șabloane.

Fiecare șablon poate corespunde unei propoziții întregi sau unei porțiuni de propoziție (de exemplu, o frază).

Fiecare șablon include câmpuri (afișate ca porțiuni în paranteze „< >”) care pot avea informații concrete inserate.

De exemplu, un șablon poate fi „La <data>, <entity> s-a căsătorit cu <valoare>”. Șabloanele pot fi generate manual sau algoritmic.

Șabloane de candidat în limba utilizatorului

Motorul de răspunsuri identifică limba utilizatorului și selectează șabloane candidate în limba utilizatorului.

De exemplu, motorul de răspunsuri poate primi date de la motorul de căutare care indică limba interogării inițiale. În mod avantajos, o astfel de configurație poate facilita internaționalizarea răspunsului.

Câmpurile pot fi asociate cu constrângeri care guvernează datele pe care le poate conține fiecare câmp.

Așa cum este utilizat în această specificație, notația „<X/Y >” indică un câmp având o constrângere „X” și o constrângere „Y”.

Constrângerile eșantionului pot include constrângeri de tip, constrângeri temporale, constrângeri de gen, constrângeri de relație, constrângeri singular/plural, constrângeri de unități de măsură și constrângeri determinanți.

Constratinis diferite pot necesita tipuri diferite de date

O constrângere de tip poate necesita un anumit tip de date, de exemplu, o constrângere <date> poate necesita o dată, o constrângere <entity> poate necesita un nume de entitate sau alt identificator și un constrângerea poate necesita un număr.

O constrângere temporală poate necesita, de exemplu, ca o dată sau o oră să fie în trecut sau în viitor, de exemplu, un câmp care conține <data/past> poate necesita ca câmpul să includă o dată care este în trecut. O constrângere de gen poate necesita, de exemplu, un gen masculin sau feminin.

O constrângere de relație poate necesita, de exemplu, un tip de relație cu o altă entitate, de exemplu, un câmp care conține <entity/souse> poate cere ca câmpul să includă o entitate care este soțul unei alte entități. O constrângere singular/plural poate cere, de exemplu, ca datele din câmp să fie în forma singular sau plural.

O constrângere de unitate de măsură poate, de exemplu, să necesite ca datele din câmp să fie măsurate într-o anumită unitate de măsură (de exemplu, inci, picioare, centimetri, metri etc.). O constrângere determinantă poate necesita, de exemplu, ca cuvântul „the” să preceadă câmpul.

Fiecare atribut din interogare poate funcționa ca o cheie pentru accesarea unui set de șabloane candidate. De exemplu, atributul „vârstă” poate duce la preluarea șabloanelor. Exemplele de șabloane includ un prim șablon „ s-a născut la <data/trecut&glt; și are în prezent <value> ani”, ceea ce necesită un nume de entitate pentru <entity&lgt; câmp, o dată din trecut pentru câmp și un număr (de exemplu, o vârstă) pentru câmpul <valoare<.

Al doilea șablon, „<entity> are <value< years old”, necesită un nume de entitate pentru câmpul <entity> și un număr (de exemplu, o vârstă) pentru câmpul <value>.

Al treilea șablon, „<entity> s-a născut pe <date/past> și a murit pe <date/past>”, necesită un nume de entitate pentru câmpul </entity><entity> și două date anterioare pentru <data/ trecut> câmpuri.

Șabloane multiple pentru atribute date

În mod avantajos, a avea mai multe șabloane pentru un anumit atribut permite implementărilor să susțină fapte parțiale. De exemplu, pentru șabloanele de vârstă, dacă anul nașterii este cunoscut, dar data specifică este necunoscută, un șablon adecvat poate fi „</entity><entity> was born in <year/past>.” Furnizarea mai multor șabloane pentru un anumit atribut permite, de asemenea, schimbarea timpurilor pentru diferite părți ale faptelor (de exemplu, „Woody Allen se căsătorește” și „Woody Allen s-a căsătorit”).

După obținerea șabloanelor candidate, motorul de răspunsuri selectează un șablon din șabloanele candidate pe baza diverselor euristici. De exemplu, motorul de răspunsuri poate verifica acordul de gen și timpul corect. În plus, motorul de răspunsuri poate determina că numărul de răspunsuri la interogarea originală se potrivește cu numărul de câmpuri ale șablonului selectat.

Motorul de răspunsuri poate determina, de asemenea, dacă constrângerile și câmpurile șablonului selectat sunt satisfăcute. Motorul de răspunsuri poate selecta șablonul având numărul maxim de câmpuri cu constrângeri care sunt satisfăcute de informațiile faptice (de exemplu, șablonul cel mai bogat în date). Informațiile faptice sunt „<woody Allen/născut pe/dec. 1, 1935>.”

În acest exemplu, primul șablon candidat este „<entity> s-a născut pe <data/past> și este în prezent varsta." Acest șablon are un câmp, un câmp <dat/trecut> și un câmp <valoare>. Informațiile faptice oferă o entitate care satisface constrângerea câmpului <entity> și o dată din trecut care satisface constrângeri de câmp.

Motorul de răspunsuri poate obține valori pe baza informațiilor faptice. Prin urmare, motorul de răspunsuri poate calcula o valoare de vârstă pentru a satisface constrângerea câmpului <valoare< pe baza datei de naștere. Deoarece informațiile faptice satisfac toate constrângerile pentru câmpurile din primul șablon, motorul de răspunsuri selectează primul șablon.

Motorul de răspunsuri selectează primul șablon cu câmpuri care pot fi completate cu informațiile faptice și nu efectuează nicio prelucrare suplimentară. Alternativ, motorul de răspunsuri poate procesa fiecare șablon din șabloanele candidate și poate selecta șablonul care are cea mai mare cantitate de câmpuri care pot fi completate de informațiile faptice.

După selectarea șablonului, motorul de răspunsuri generează apoi o propoziție sau o expresie bazată pe șablon. De exemplu, motorul de răspunsuri poate înlocui câmpurile din șablon cu datele corespunzătoare din informațiile faptice. Motorul de răspunsuri generează propoziția „Woody Allen sa născut la 1 decembrie 1935 și are în prezent 77 de ani” folosind șablonul selectat.

Motorul de răspunsuri transmite apoi un răspuns către dispozitivul client, unde răspunsul include propoziția generată. Răspunsul poate fi o transcriere pe care dispozitivul client o convertește în vorbire și o redă pentru utilizator.

Sistem care generează propoziții ca răspuns la întrebările de fapt

Sistemul include un dispozitiv client, un sistem de căutare, un cluster de indexuri și un motor de răspunsuri. Entitățile ilustrate pot, de exemplu, să fie implementate ca parte a sistemului.

Un dispozitiv client inițiază o interogare având termeni de interogare.

De exemplu, un utilizator poate introduce interogarea „Cu cine a fost căsătorit Woody Allen” într-un browser web de pe dispozitivul client.

Sistemul de căutare primește interogarea (de exemplu, „Cu cine a fost căsătorit Woody Allen”) de la dispozitivul client.

Apoi, sistemul de căutare analizează și formatează interogarea originală într-un format (de exemplu, ) folosind, de exemplu, un motor adecvat de analiză a limbajului natural.

În acest exemplu, interogarea formatată include un identificator al entității (de exemplu, Woody Allen), un tip de entitate (de exemplu, persoană) și un atribut (de exemplu, căsătorii).

Informațiile de tip pot fi folosite pentru a genera un meta-șablon așa cum este descris mai jos. Sistemul de căutare trimite apoi interogarea formatată către clusterul de indexuri.

Clusterul de indexuri accesează indexul pentru a prelua un set de informații faptice care răspund la interogare

Clusterul de indexuri accesează indexul Pentru a prelua un set de informații faptice care răspund la interogare. Aceste rezultate includ cel puțin două triple (de exemplu, , și <louise Lasser/wife/1966/1970>).

Clusterul index transmite apoi interogarea formatată (de exemplu, <woody Allen/vârstă> și informațiile concrete care răspunde la interogare (de exemplu, <Soon-Yi Previn/wife/1997> și <louise Lasser/wife/1966/1970>). ) la motorul de răspuns.

Folosind interogarea formatată și informațiile faptice, motorul de răspunsuri generează apoi un răspuns sub forma unei propoziții sau propoziții, după cum urmează.

În primul rând, motorul de răspunsuri obține informațiile de tip din interogarea formatată (de exemplu, persoană).

Informațiile de tip identifică tipul de entitate pe care se bazează interogarea. Folosind informațiile de tip, motorul de răspunsuri accesează metașabloane candidate care sunt asociate cu o entitate de tip „persoană”.

După cum se face referire în această specificație, meta-șabloane sunt șabloane care au câmpuri configurate pentru a conține alte șabloane.

Fiecare dintre meta-șabloanele candidate include un câmp pentru un nume sau un identificator al unei entități și cel puțin un câmp pentru adăugarea altor șabloane.

Aceste șabloane permit motorului de răspunsuri să genereze propoziții pentru a încorpora diverse fraze care au informații despre o persoană.

Motorul de răspunsuri obține, de asemenea, atributul sau atributele din interogarea formatată și folosește atributul sau atributele pentru a accesa șabloanele de fraze candidate din baza de date de șabloane.

Aceste șabloane de fraze sunt concepute pentru a fi încorporate în meta-șabloane.

După cum este descris mai sus, fiecare atribut din interogare poate funcționa ca o cheie pentru accesarea unui set de șabloane de fraze candidate.

De exemplu, atributul „căsătorii” poate duce la regăsirea șabloanelor de expresii.

Exemplele de șabloane de expresii includ un prim șablon „sa căsătorit cu <entitatea/soțul> de la <data/trecut>”, care necesită o entitate care se căsătorește cu entitatea în interogarea formatată pentru câmp și o dată din trecut pentru camp.

Al doilea șablon, „se căsătorește cu <entitate/soț>”, necesită o entitate care se căsătorește cu entitatea în interogarea formatată pentru camp.

Al treilea șablon, „este căsătorit”, nu necesită informații suplimentare.

Al patrulea șablon, „a fost căsătorit cu <entity/soț > de la <data/past > la <data/past >”, necesită o entitate care se căsătorește cu entitatea în interogarea formatată pentru câmp și două date în trecut pentru câmpurile <date/past>. Al cincilea șablon, „a fost căsătorit cu <entitate/soț>”, necesită o entitate care se căsătorește cu entitatea în interogarea formatată pentru câmpul <entitate/soț>. Iar al șaselea șablon, „a fost căsătorit”, nu necesită informații suplimentare.

Apoi, motorul de răspunsuri selectează unul dintre metașabloanele candidate pe baza tipului de informații incluse în informațiile faptice. În special, motorul de răspunsuri selectează un metașablon candidat pe baza numărului de triple incluse în informațiile faptice. Două triple sunt incluse în informațiile faptice. Prin urmare, motorul de răspunsuri selectează metașablonul „persoană” având câmpuri pentru două șabloane, adică „<entity><template> și </template><template>”.

Pentru fiecare triplă inclusă în informațiile faptice, motorul de răspunsuri selectează și un șablon din șabloanele de fraze candidate. Motorul de răspunsuri poate selecta șablonul de frază având numărul maxim de câmpuri cu constrângeri care sunt satisfăcute de informațiile faptice (de exemplu, șablonul cel mai bogat în date).

Primul triplu inclus în informațiile faptice este <Soon-Yi Previn/wife/1997>.” În acest exemplu, primul șablon de expresie candidat este „a fost căsătorit cu de cand .” Acest șablon are un <ntity/sotie&g; câmp și un câmp <data/trecut>.

Prima triplă are o entitate cu o relație de soț cu entitatea din interogarea formatată care satisface constrângerea câmpului <entity/souse> și o dată din trecut care satisface constrângerile câmpului <date/past>. Deoarece primul triplu satisface toate constrângerile pentru câmpurile din primul șablon, motorul de răspuns selectează primul șablon pentru primul triplu.

Al doilea triplu inclus în informațiile faptice este <louise Lasser/wife/1966/1970>.” Cel de-al patrulea șablon de expresie candidat este „a fost căsătorit cu <entitate/soț> de la <data/trecut> la <data/trecut>”, care are un câmp <entitate/soț> și două câmpuri <data/trecut>. Al doilea triplu din informațiile faptice oferă o entitate cu o relație de soț cu entitatea din interogarea formatată care satisface constrângerea câmpului <entity/souse> și două date din trecut care satisfac constrângeri de câmp.

Deoarece al doilea triplu satisface toate constrângerile pentru câmpurile din al patrulea șablon, motorul de răspuns selectează al patrulea șablon pentru al doilea triplu.

Motorul de răspunsuri selectează primul șablon cu câmpuri care pot fi completate cu informațiile faptice și nu efectuează nicio prelucrare suplimentară. Alternativ, motorul de răspunsuri poate procesa fiecare șablon din șabloanele candidate și poate selecta șablonul care are cea mai mare cantitate de câmpuri care pot fi completate de informațiile faptice.

După selectarea șabloanelor, motorul de răspunsuri generează apoi o propoziție bazată pe șabloane. De exemplu, motorul de răspunsuri poate înlocui câmpurile din șabloanele selectate cu datele corespunzătoare din informațiile faptice.

Motorul de răspunsuri poate înlocui câmpurile din primul șablon de expresie selectat (adică „s-a căsătorit cu <entitate/soț> de la <<data/trecut>”) cu informațiile din primul triplu pentru a genera expresia „sa căsătorit la Soon-Yi Previn din 1997." Astfel, motorul de răspuns generează propoziţia "Woody Allen s-a căsătorit cu Soon-Yi Previn din 1997 şi a fost căsătorit anterior cu Louise Lasser din 1966 până în 1970." Motorul de răspuns transmite apoi un răspuns către dispozitivul client care include propoziția generată. Răspunsul poate fi inclus într-o pagină cu rezultatele căutării care include propoziția și alte rezultate ale căutării. Pagina cu rezultatele căutării include, de asemenea, o casetă de căutare care arată interogarea de căutare inițială (de exemplu, „Cine a fost Woody Allen married to"). Pagina cu rezultatele căutării poate fi apoi redată de dispozitivul client. Propoziția poate fi transmisă alternativ ca o transcriere care permite dispozitivului client să genereze vorbire sau ca semnal audio care codifică propoziția pentru redare la dispozitivul client.

Un sistem care generează propoziții ca răspuns la întrebările de fapt

Sistemul include un dispozitiv client, un sistem de căutare, un cluster de indexuri și un motor de răspunsuri.

Un dispozitiv client inițiază o interogare având doi termeni de interogare („Unde este orașul natal al lui Woody Allen și alma mater”) într-un browser web de pe dispozitivul client.

Sistemul de căutare primește interogarea (de exemplu, „Unde este orașul natal și alma mater al lui Woody Allen”) de la dispozitivul client. Apoi, sistemul de căutare analizează și formatează interogarea inițială într-un format <entity/type/attribute> (de exemplu, >woody Allen/persoană/oșaș/colegiu<) folosind, de exemplu, un motor adecvat de analiză a limbajului natural.

În acest exemplu, interogarea formatată include un identificator al entității (de exemplu, Woody Allen), un tip de entitate (de exemplu, persoană) și două atribute (de exemplu, orașul natal și facultate). Sistemul de căutare trimite apoi interogarea formatată către clusterul de indexuri.

Folosind interogarea formatată și informațiile faptice, motorul de răspunsuri generează apoi un răspuns sub forma unei propoziții sau propoziții, după cum urmează. 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 camp.

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.