Generowanie odpowiedzi na zapytania
Opublikowany: 2022-05-05Ten niedawno przyznany patent Google zasadniczo dotyczy generowania odpowiedzi na zapytania, a patent ten wprowadza również pojęcie ograniczeń, które mają pomóc w udzielaniu odpowiedzi na zapytania.
Używanie ograniczeń dla odpowiedzi na zapytania
Patent ten zadaje pytania dotyczące treści związanych z faktami dotyczącymi podmiotów, o które dodawane są pytania.
Dokumenty dotyczące używania ograniczeń do odpowiadania na zapytania są następujące:
- GRIP: Wyjaśnienie brakujących odpowiedzi w oparciu o ograniczenia w zapytaniach wykresu
Odpowiadanie na pytania z wykorzystaniem ograniczeń zadowolenia: kontrola jakości według dokumentacji z ograniczeniami
Co ciekawe, pierwszy dokument odnosi się do Google Knowlege Vault jako odniesienia. Prawdopodobnie dlatego, że skupia się na uzyskaniu poprawnych odpowiedzi na pytania za pomocą ograniczeń.
Ponieważ ten patent tak bardzo skupia się na semantycznym SEO. Przypomniało mi to inne patenty Google, które dotyczyły tego tematu, w tym te dwa, które warto uważnie przeczytać:
- Uzgadnianie Grafu wiedzy Google
- Wyodrębnianie jednostek do wykresów wiedzy w Google
Patent zapewnia wgląd w sposób działania jednostek i atrybutów jednostek, sposób wykorzystania krotek w wyszukiwaniu wykresów oraz spojrzenie na semantyczne SEO.
Generowanie odpowiedzi na zapytania poprzez dostarczanie faktów z bazy danych
Systemy wyszukiwania mogą generować odpowiedzi na zapytania dotyczące faktów, dostarczając fakty z bazy danych.
Te fakty mogą zostać zapisane na wykresie, który można aktualizować w czasie rzeczywistym.
Takie odpowiedzi mogą zostać sformatowane jako listy wyników wyszukiwania, a nie zdania.
Gdy użytkownik zadaje pytanie dotyczące faktów, na przykład za pomocą głosu do systemu dialogowego, może być pożądane uzyskanie naturalnej odpowiedzi na pytanie.
Najbardziej naturalną odpowiedzią może być odpowiedź sformułowana jako gramatyczne zestawienie faktów spełniających pytanie użytkownika w celu udzielenia odpowiedzi na zapytanie.
Tak więc, zgodnie z jednym ogólnym aspektem przedmiotu opisanego w tym patencie, w odpowiedzi na zapytanie merytoryczne, fakty przechowywane w bazie danych zostają przekształcone w zdanie w języku użytkownika.
Otrzymywanie odpowiedzi na zapytanie identyfikujące atrybuty podmiotu
Jeden aspekt przedmiotu opisanego w tej specyfikacji może zostać wcielony w metody, które obejmują czynności odbierania zapytania identyfikującego atrybuty jednostki. Te atrybuty to fakty dotyczące jednostki.
Działania obejmują następnie dostęp do szablonów kandydatów dla odpowiedzi na zapytania na podstawie atrybutów jednostki. Każdy szablon kandydata ma pola; gdzie każdy obszar zostaje powiązany z co najmniej jednym ograniczeniem.
Następnie działania obejmują uzyskanie zestawu informacji, które dostarczają odpowiedzi na zapytania oraz wybranie szablonu z kolekcji szablonów kandydatów. Wybrany szablon ma największą liczbę pól z ograniczeniami, które spełniają zestaw informacji.
Semantyczne trójki związane z encjami
Zbiór informacji może być zbiorem trójek encja-atrybut-wartość.
Działania obejmują ponadto generowanie frazy poprzez dodanie zestawu informacji do pól wybranego szablonu, tak aby słowa stanowiły odpowiedzi na zapytanie.
Fraza jest zdaniem lub częścią zdania. Wreszcie działania obejmują przekazywanie słów do urządzenia klienckiego.
Fraza może zostać przekazana jako sygnał dźwiękowy odpowiadający słowom.
Ograniczenia mogą obejmować:
- Wpisz ograniczenie
- Ograniczenie czasowe
- Ograniczenie płci
- Ograniczenie relacji
- Ograniczenie liczby pojedynczej/mnogiej
- Ograniczenie jednostki miary
- Ograniczenie determinujące.
Niektóre implementacje wymagają uzyskania wielu zestawów informacji odpowiadających na pojedynczy atrybut w zapytaniu.
Działania obejmują ponadto:
- Uzyskiwanie szablonu zdania na podstawie typu encji, przy czym szablon zdania zawiera wiele pól na frazy
- Dodanie fraz do pól szablonu zdania, aby utworzyć zdanie
- Wybór dla każdego zestawu informacji szablonu z zestawu szablonów kandydatów
- Generowanie dla każdego wybranego szablonu frazy poprzez dodanie odpowiedniego zestawu informacji do pól odpowiedniego wybranego szablonu
- Przekazanie zdania zawierającego frazy do urządzenia klienta
Może to obejmować odpowiedzi na zapytania zawierające wiele atrybutów.
- Otrzymywanie odpowiedzi na zapytania identyfikujące wiele atrybutów podmiotu
- Uzyskiwanie dostępu dla każdego atrybutu encji do zestawu szablonów kandydatów dla odpowiedzi na zapytania na podstawie odpowiedniego atrybutu encji
- Uzyskanie, dla każdego atrybutu podmiotu, zestawu informacji, które odpowiadają na odpowiednią część zapytania,
- Wybór szablonu z odpowiedniego zestawu szablonów kandydatów
- Generowanie, dla każdego atrybutu podmiotu, frazy poprzez dodanie odpowiedniego zestawu informacji do pól wybranego szablonu
- Uzyskiwanie szablonu zdania na podstawie typu encji, przy czym szablon zdania zawiera wiele pól na frazy
- Dodanie fraz do pól szablonu zdania, aby utworzyć zdanie
- Przekazywanie zdania zawierającego frazy do urządzenia klienta
Zalety tego procesu mogą obejmować:
System jest konfigurowalny i rozszerzalny na złożone twierdzenia i odpowiedzi oparte na faktach.
Może to pozwolić na czyste oddzielenie rzeczywistej bazy danych od mechanizmu generowania zdań.
Może umożliwiać dodawanie nowych szablonów dowolną odpowiednią metodą.
Ten patent na generowanie odpowiedzi na zapytania znajduje się pod adresem
Generowanie odpowiedzi na zapytania
Wynalazcy: Engin Cinar Sahin, Vinicius J. Fortuna i Emma S. Persky
Pełnomocnik: Google LLC
Patent USA: 11 321 331
Przyznano: 3 maja 2022
Złożono: 23 lipca 2018 r.
Abstrakcyjny
Serwer otrzymuje odpowiedzi na zapytania identyfikujące atrybuty jednostki.
Serwer uzyskuje dostęp do zestawu szablonów kandydujących w celu odpowiedzi na zapytanie na podstawie atrybutów jednostki, przy czym każdy szablon kandydujący ma pola, przy czym każde pole jest skojarzone z co najmniej jednym ograniczeniem.
Serwer uzyskuje zestaw informacji i odpowiedzi na zapytania oraz wybiera szablon ze zbioru szablonów kandydatów.
Wybrany szablon ma największą liczbę pól z ograniczeniami spełnianymi przez zestaw informacji.
Serwer generuje frazę poprzez dodanie zestawu informacji do pól wybranego szablonu, tak aby fraza stanowiła odpowiedź na zapytanie.
Na koniec serwer przekazuje frazę do urządzenia klienckiego.
Konwersja faktów z bazy danych na zdania
Gdy użytkownik zadaje pytanie dotyczące faktów, wyszukiwarka może udzielić odpowiedzi na zapytanie, uzyskując dostęp do bazy danych.
Niektóre systemy, takie jak głosowe systemy dialogowe, umożliwiają użytkownikom planowanie zapytań jako pytań w języku naturalnym (np. „Kto jest prezydentem Japonii?”).
W takich przypadkach może być pożądane udzielenie odpowiedzi w języku naturalnym w formie zdania, a nie odpowiedzi sformatowanej jako wyniki wyszukiwania odnoszące się do dokumentów.
Dlatego systemy opisane w tej specyfikacji mogą konwertować fakty z bazy danych na zdania. Może to być korzystne, na przykład, aby odpowiedź mogła zostać zwrócona użytkownikowi jako mowa.
Aby utworzyć zdania, które odpowiadają na pytania użytkowników, pożądane może być pobieranie losowych faktów z bazy danych. Fakty nie są jednak przypadkowe — używają informacji o ograniczeniach, aby dostarczyć odpowiedzi na zapytania. Wydawałoby się to oznaczać lepsze odpowiedzi na pytania dotyczące podmiotów.
Aby odpowiedzieć na pytanie, z kim ktoś się ożenił, system może uzyskać dane obejmujące wszystkie przeszłe małżeństwa, osoby biorące udział w poprzednich ślubach, daty związków i rodzaje umów małżeńskich. Elastyczna baza danych, która reprezentuje fakty za pomocą struktury wykresu, może dostarczyć te fakty.
Uzyskiwanie dostępu do szablonów kandydatów w celu generowania odpowiedzi na zapytania na podstawie atrybutu lub atrybutów
Po zebraniu faktów mechanizm odpowiedzi może uzyskać dostęp do szablonów kandydatów w celu wygenerowania odpowiedzi na podstawie atrybutu lub atrybutów podanych w zapytaniu. Na przykład, jeśli pierwotne pytanie brzmi „Z kim był żonaty Woody Allen”, może to dotyczyć „małżeństw”. Jeśli rzeczywiste zapytanie brzmi „Ile lat ma Woody Allen”, atrybutem może być „wiek”. Jak opisano poniżej, każdy punkt pytania może odpowiadać wielu szablonom kandydatów, na przykład w celu wsparcia mniej lub bardziej szczegółowych odpowiedzi.
Na przykład, jeśli atrybut to „wiek”, mechanizm odpowiedzi może uzyskać szablon, który zawiera datę urodzenia i wiek (np. {<podmiot> urodził się <data> i ma obecnie <wartość> lat}), szablon który zawiera tylko wiek (np. {<podmiot> ma obecnie <wartość> lat}) oraz szablon zawierający datę urodzenia i datę śmierci (np. {<podmiot> urodził się <data> i zmarł < /data>}).
Jak opisano bardziej szczegółowo poniżej, części szablonów zawarte w „< >” (tj. polach) mogą zostać powiązane z różnymi ograniczeniami danych, które mogą przechowywać.
Gdy silnik odpowiedzi uzyska szablony kandydatów, wybiera najbardziej odpowiedni szablon na podstawie wielu heurystyk i generuje zdanie, wstawiając fakty do szablonu. Silnik odpowiedzi może następnie dostarczyć odpowiedź w korekcie z powrotem do użytkownika.
System wyszukiwania wykresów danych
System może przyzwyczaić się do implementacji wyszukiwarki dla wykresu danych przy użyciu opisanych tutaj technik.
System jest opisywany jako system wyszukiwania dla wykresu danych, który przetwarza żądania zapytań od klienta. Mogą zostać wykorzystane inne konfiguracje i aplikacje powiązanej technologii. Na przykład żądanie zapytania może pochodzić z innego serwera, zadania wsadowego lub terminala użytkownika komunikującego się z systemem wyszukiwania wykresów danych.
System wyszukiwania wykresów danych może obejmować system indeksowania, system wyszukiwania i klaster indeksów. System indeksowania, system wyszukiwania i klaster indeksu mogą być urządzeniami obliczeniowymi, które przybierają postać kilku różnych urządzeń, na przykład standardowego serwera, grupy takich serwerów lub systemu serwerów typu rack.
Ponadto systemy indeksowania, systemy wyszukiwania i klastry indeksów mogą zostać zaimplementowane w komputerze osobistym, na przykład w laptopie.
System przeszukiwania wykresów danych może obejmować magazyn danych oparty na wykresie. Taki wykres danych przechowuje węzły i krawędzie, z których można utworzyć wykres.
Węzły mogą być nazywane jednostkami, a krawędzie mogą być określane jako relacje między dwoma jednostkami. Takie relacje mogą być przechowywane na kilka sposobów.
Magazyn danych oparty na wykresach przechowuje potrójne krotki reprezentujące jednostki i relacje w jednym przykładzie.
Potrójne krotki reprezentujące byty i relacje
Trójka może również zawierać
Jednym z przykładów trójki jest encja Woody Allen jako podmiot (lub encja), relacja działała jako orzeczenie (lub atrybut) oraz encja Annie Hall jako obiekt (lub wartość).
Oczywiście wykres danych z wieloma podmiotami, a nawet ograniczoną liczbą relacji, może mieć miliardy trójek.
Systemy indeksujące mogą obejmować procesory skonfigurowane do wykonywania instrukcji wykonywanych przez maszynę lub części oprogramowania, oprogramowania układowego lub ich kombinacji.
Znajdowanie odpowiedzi na pytania
System wyszukiwania może obejmować serwery (nie pokazane), które odbierają zapytania od użytkownika klienta i dostarczają te zapytania do systemu wyszukiwania.
System wyszukiwania może być odpowiedzialny za przeszukiwanie wykresu danych i innych źródeł danych, takich jak korpus dokumentów z Internetu lub Intranetu, w odpowiedzi na zapytanie.
Na przykład system wyszukiwania może otrzymać zapytanie od klienta, takiego jak klient, wykonać pewne przetwarzanie zapytań i wysłać zapytanie do klastra indeksowania oraz do innych klastrów indeksowania, które przechowują indeksy w celu przeszukiwania innych źródeł.
System wyszukiwania może mieć moduł, który kompiluje wyniki ze wszystkich źródeł i dostarcza skompilowane wyniki do klienta.
System wyszukiwania może wysyłać zapytania tylko do klastra indeksów i dostarczać wyniki wyszukiwania z klastra indeksów do klienta.
System wyszukiwania może komunikować się z klientami przez sieć.
Klaster indeksów w znajdowaniu odpowiedzi na zapytania
System może również zawierać klaster indeksów. Klaster indeksów może być pojedynczym urządzeniem obliczeniowym lub systemem rozproszonej bazy danych z urządzeniami obliczeniowymi, z których każde ma własny procesor i pamięć.
Liczba urządzeń obliczeniowych składających się na klaster indeksu może się zmieniać, a dla zachowania zwięzłości klaster indeksu jest wyświetlany jako pojedyncza jednostka.
Każdy klaster indeksów może zawierać procesory skonfigurowane do wykonywania instrukcji wykonywanych maszynowo lub fragmentów oprogramowania, oprogramowania układowego lub ich kombinacji.
Klaster obliczeniowy może zawierać system operacyjny (nie pokazany) i pamięci komputera, na przykład pamięć główną, skonfigurowaną do przechowywania fragmentów danych, albo tymczasowo, na stałe, półtrwale, albo ich kombinację.
Pamięć może obejmować dowolny rodzaj urządzenia pamięciowego, które przechowuje informacje w formacie, który może zostać odczytany i wykonany przez procesor, w tym pamięć ulotną, pamięć nieulotną lub ich kombinację.
Program do rozwiązywania zapytań, który uzyskuje dostęp do indeksu w celu pobrania wyników odpowiadających zapytaniu
Klaster indeksów może również zawierać moduły, takie jak program rozpoznawania zapytań, które uzyskują dostęp do indeksu w celu pobrania wyników odpowiadających zapytaniu.
Mechanizm rozpoznawania zapytań może być również częścią systemu wyszukiwania lub może zostać rozdzielony między system wyszukiwania a klaster indeksu.
Stopniowo bardziej skomplikowane zapytania i odpowiedzi na zapytania
Proste zapytanie, które zawiera jeden atrybut („wiek”) i daje w wyniku pojedynczą potrójną odpowiedź.
Przykład prostego zapytania, które zawiera jeden atrybut („małżeństwa”), ale daje wiele potrójnych odpowiedzi.
Przykład skomplikowanego zapytania, które zawiera dwa atrybuty („miasto rodzinne i macierzysta uczelnia”) i daje wiele potrójnych odpowiedzi.
Przykładowy system generujący zdania w odpowiedzi na zapytania merytoryczne.
System obejmuje urządzenie klienckie, system wyszukiwania, klaster indeksów i mechanizm odpowiedzi.
Podmioty mogą zostać zaimplementowane w ramach systemu.
Użytkownik inicjuje zapytanie zawierające terminy zapytania przy użyciu urządzenia klienckiego.
Użytkownik może sformatować oryginalne zapytanie jako zdanie.
Interakcja z systemem dialogowym opartym na głosie
Użytkownik może wchodzić w interakcję z urządzeniem klienckim za pomocą systemu dialogowego opartego na głosie.
Na przykład użytkownik może wypowiedzieć zapytanie „Ile lat ma Woody Allen” do mikrofonu urządzenia klienckiego.
Urządzenie klienckie może następnie przeprowadzić rozpoznawanie mowy, aby przekształcić wypowiedź w transkrypcję, a następnie przesłać transkrypcję do wyszukiwarki.
Alternatywnie, urządzenie klienckie może przesyłać dane audio mowy kodujące wypowiedź.
System wyszukiwania otrzymuje zapytanie (np. „Ile lat ma Woody Allen”) z urządzenia klienckiego.
Jeżeli zapytanie zostanie zakodowane jako dane mowy audio, system wyszukiwania może przekonwertować dane mowy audio w transkrypcję.
System wyszukiwania następnie analizuje i formatuje oryginalne zapytanie w <entity; atrybut> (taki jak <woody Allen/wiek<) przy użyciu na przykład odpowiedniego silnika parsującego języka naturalnego.
System wyszukiwania wysyła następnie sformatowane zapytanie do klastra indeksu.
Klaster indeksów uzyskuje dostęp do indeksu w celu pobrania wyników odpowiadających zapytaniu.
Zapytanie o odpowiedzi w formie trójek
Wyniki te mogą być zbiorem faktycznych informacji w formie trójek (np. </woody><woody Allen/born on/Dec. 1,>
Klaster indeksów przesyła następnie sformatowane zapytanie (np. </woody><woody Allen/age> oraz faktyczne informacje, które odpowiadają na zapytanie (np. </woody><woody Allen/born on/Dec. 1, 1935>) do silnika odpowiedzi.
Korzystając ze sformatowanego zapytania i informacji faktycznych, silnik odpowiedzi generuje następnie odpowiedź w postaci zdania lub zdań.
Silnik odpowiedzi generuje odpowiedź w następujący sposób. Najpierw aparat odpowiedzi uzyskuje atrybut lub atrybuty ze sformatowanego zapytania.
Następnie silnik odpowiedzi używa atrybutu lub atrybutów, aby uzyskać dostęp do szablonów zdań lub fraz kandydata z bazy danych szablonów.
Następnie silnik odpowiedzi wybiera jeden z szablonów na podstawie informacji faktycznych i różnych ograniczeń związanych z szablonami kandydatów.
Wreszcie silnik odpowiedzi wypełnia pola w wybranym szablonie, korzystając z informacji faktycznych.
Silnik odpowiedzi uzyskujący atrybut lub atrybuty
Bardziej szczegółowo, aparat odpowiedzi najpierw uzyskuje atrybut lub atrybuty ze sformatowanego zapytania, analizując zapytanie. Na przykład zakładając, że zapytanie zostało sformatowane jako para <podmiot/atrybut>, aparat odpowiedzi wyodrębnia część atrybutu z pary.
W niektórych przypadkach sformatowane zapytanie może zawierać wiele atrybutów. Na przykład sformatowane zapytanie może mieć postać <podmiot/atrybut/atrybut>. W takich przypadkach silnik odpowiedzi może wyodrębnić każdy atrybut z zapytania.
Następnie aparat odpowiedzi uzyskuje dostęp do szablonów kandydatów dla każdego atrybutu w zapytaniu z bazy danych szablonów.
Każdy szablon może odpowiadać całemu zdaniu lub jego części (np. frazie).
Każdy szablon zawiera pola (pokazane jako części w nawiasach „< >”), w których można wstawić informacje faktyczne.
Na przykład szablonem może być „W dniu <data> <podmiot> ożenił się z <wartość>”. Szablony mogą być generowane ręcznie lub algorytmicznie.
Szablony kandydatów w języku użytkownika
Silnik odpowiedzi identyfikuje język użytkownika i wybiera szablony kandydatów w języku użytkownika.
Na przykład wyszukiwarka może otrzymywać dane z wyszukiwarki wskazujące język oryginalnego zapytania. Korzystnie taka konfiguracja może ułatwić internacjonalizację odpowiedzi.
Pola mogą zostać powiązane z ograniczeniami, które zarządzają danymi, które może zawierać każde pole.
Stosowany w tej specyfikacji zapis „<X/Y >” wskazuje pole posiadające ograniczenie „X” i ograniczenie „Y”.
Przykładowe ograniczenia mogą obejmować ograniczenia typu, ograniczenia czasowe, ograniczenia płci, ograniczenia relacji, ograniczenia liczby pojedynczej/mnogiej, ograniczenia jednostek miary i ograniczenia determinantowe.
Różne Constratini mogą wymagać różnych typów danych
Ograniczenie typu może wymagać określonego typu danych, np. ograniczenie <data> może wymagać daty, ograniczenie <entity> może wymagać nazwy jednostki lub innego identyfikatora, a
Ograniczenie czasowe może wymagać, na przykład, aby data lub godzina przypadały w przeszłości lub w przyszłości, np. pole zawierające <data/przeszłość> może wymagać, aby pole zawierało datę, która jest w przeszłości. Ograniczenie płci może wymagać na przykład płci męskiej lub żeńskiej.
Ograniczenie relacji może wymagać, na przykład, rodzaju relacji z inną jednostką, np. pole zawierające <podmiot/małżonka> może wymagać, aby pole zawierało podmiot będący małżonkiem innej jednostki. Ograniczenie liczby pojedynczej/mnogiej może wymagać, na przykład, aby dane w polu były w formie liczby pojedynczej lub mnogiej.
Ograniczenie jednostki miary może na przykład wymagać, aby dane w terenie były mierzone w określonej jednostce miary (np. cale, stopy, centymetry, metry itp.). Ograniczenie determinujące może wymagać, na przykład, aby słowo „the” poprzedzało pole.
Każdy atrybut w zapytaniu może działać jako klucz dostępu do zestawu szablonów kandydatów. Na przykład atrybut „wiek” może spowodować pobranie szablonów. Przykładowe szablony obejmują pierwszy szablon „
Drugi szablon, „<entity> ma obecnie <wartość< lat”, wymaga nazwy jednostki dla pola <entity> i numeru (np. wieku) dla pola <value>.
Trzeci szablon, „<entity> urodził się <date/past> i zmarł <date/past>”, wymaga nazwy encji dla pola </entity><entity> i dwóch przeszłych dat dla <date/ przeszłość> pola.
Wiele szablonów dla danych atrybutów
Korzystnie, posiadanie wielu szablonów dla danego atrybutu umożliwia implementacje obsługujące częściowe fakty. Na przykład w przypadku szablonów wieku, jeśli rok urodzenia jest znany, ale konkretna data jest nieznana, odpowiednim szablonem może być „</entity><entity> urodził się w <rok/w przeszłości>”. Dostarczenie wielu szablonów dla danego atrybutu pozwala również na zmianę czasów dla różnych fragmentów faktów (np. „Woody Allen bierze ślub” i „Woody Allen się ożenił”).

Po uzyskaniu szablonów kandydatów, silnik odpowiedzi wybiera szablon z szablonów kandydatów w oparciu o różne heurystyki. Na przykład silnik odpowiedzi może sprawdzać zgodność płci i poprawny czas. Dodatkowo silnik odpowiedzi może określić, że liczba odpowiedzi na oryginalne zapytanie odpowiada liczbie pól wybranego szablonu.
Silnik odpowiedzi może również określić, czy ograniczenia i pola wybranego szablonu są spełnione. Silnik odpowiedzi może wybrać szablon mający maksymalną liczbę pól z ograniczeniami, które spełniają informacje faktyczne (np. szablon o największej ilości danych). Faktyczne informacje to „<woody Allen/ur./gru. 1, 1935>”.
W tym przykładzie pierwszy szablon kandydata to „<podmiot> urodził się <data/przeszłość> i jest obecnie
Silnik odpowiedzi może wyprowadzać wartości na podstawie informacji faktycznych. Mechanizm odpowiedzi może zatem obliczyć wartość wieku, aby spełnić ograniczenie pola <wartość< na podstawie daty urodzenia. Ponieważ informacje faktyczne spełniają wszystkie ograniczenia dotyczące pól w pierwszym szablonie, aparat odpowiedzi wybiera pierwszy szablon.
Silnik odpowiedzi wybiera pierwszy szablon z polami, które można wypełnić informacjami faktycznymi, i nie wykonuje żadnego dodatkowego przetwarzania. Alternatywnie silnik odpowiedzi może przetworzyć każdy szablon w szablonach kandydatów i wybrać szablon mający największą liczbę pól, które można wypełnić informacjami faktycznymi.
Po wybraniu szablonu silnik odpowiedzi generuje zdanie lub frazę na podstawie szablonu. Na przykład silnik odpowiedzi może zastąpić pola w szablonie odpowiednimi danymi z informacji faktycznych. Silnik odpowiedzi generuje zdanie „Woody Allen urodził się 1 grudnia 1935 r. i ma obecnie 77 lat” przy użyciu wybranego szablonu.
Silnik odpowiedzi przesyła następnie odpowiedź do urządzenia klienta, gdzie odpowiedź zawiera wygenerowane zdanie. Odpowiedź może być transkrypcją, którą urządzenie klienta konwertuje na mowę i renderuje dla użytkownika.
System generujący zdania w odpowiedzi na zapytania dotyczące faktów
System obejmuje urządzenie klienckie, system wyszukiwania, klaster indeksów i mechanizm odpowiedzi. Zilustrowane podmioty mogą np. zostać zaimplementowane w ramach systemu.
Urządzenie klienckie inicjuje zapytanie zawierające terminy zapytania.
Na przykład użytkownik może wprowadzić zapytanie „Z kim był Woody Allen żonaty” w przeglądarce internetowej na urządzeniu klienta.
System wyszukiwania otrzymuje zapytanie (np. „Z kim był żonaty Woody Allen”) z urządzenia klienta.
Następnie system wyszukiwania analizuje i formatuje oryginalne zapytanie na
W tym przykładzie sformatowane zapytanie zawiera identyfikator jednostki (np. Woody Allen), typ jednostki (np. osoba) i atrybut (np. małżeństwa).
Informacje o typie mogą zostać wykorzystane do wygenerowania meta-szablonu, jak opisano poniżej. System wyszukiwania wysyła następnie sformatowane zapytanie do klastra indeksu.
Klaster indeksów uzyskuje dostęp do indeksu w celu pobrania zestawu faktycznych informacji odpowiadających zapytaniu
Klaster indeksów uzyskuje dostęp do indeksu, aby pobrać zestaw informacji faktycznych odpowiadających na zapytanie. Wyniki te obejmują co najmniej dwie trójki (np.
Klaster indeksów przesyła następnie sformatowane zapytanie (np. <woody Allen/wiek> oraz faktyczne informacje, które odpowiadają na zapytanie (np. <Soon-Yi Previn/wife/1997> i <louise Lasser/wife/1966/1970> ) do mechanizmu odpowiedzi.
Korzystając ze sformatowanego zapytania i informacji faktycznych, silnik odpowiedzi generuje następnie odpowiedź w postaci zdania lub zdań w następujący sposób.
Najpierw silnik odpowiedzi uzyskuje informacje o typie ze sformatowanego zapytania (np. osoba).
Informacje o typie identyfikują typ jednostki, na podstawie której pobierane jest zapytanie. Korzystając z informacji o typie, aparat odpowiedzi uzyskuje dostęp do meta-szablonów kandydatów, które są powiązane z typem encji „osoba”.
Jak wspomniano w tej specyfikacji, meta-szablony to szablony, których pola są skonfigurowane tak, aby zawierały inne szablony.
Każdy z kandydujących meta-szablonów zawiera pole na nazwę lub identyfikator jednostki oraz co najmniej jedno pole do dodawania innych szablonów.
Te szablony umożliwiają silnikowi odpowiedzi generowanie zdań zawierających różne frazy zawierające informacje o osobie.
Mechanizm odpowiedzi uzyskuje również atrybut lub atrybuty ze sformatowanego zapytania i używa atrybutu lub atrybutów w celu uzyskania dostępu do szablonów fraz kandydatów z bazy danych szablonów.
Te szablony fraz zostały zaprojektowane tak, aby można je było włączyć do metaszablonów.
Jak opisano powyżej, każdy atrybut w zapytaniu może funkcjonować jako klucz dostępu do zestawu szablonów fraz kandydujących.
Na przykład atrybut „małżeństwa” może spowodować pobranie szablonów fraz.
Przykładowe szablony wyrażeń zawierają pierwszy szablon „poślubił <podmiot/małżonka> od <data/przeszłość>”, który wymaga encji, która zawiera związek małżeński z podmiotem w sformatowanym zapytaniu dla
Drugi szablon, „zamężna się z <podmiotem/małżonkiem>”, wymaga podmiotu, który zawiera związek małżeński z podmiotem w sformatowanym zapytaniu dla
Trzeci szablon, „jest żonaty”, nie wymaga dodatkowych informacji.
Czwarty szablon, „poślubił <podmiot/małżonek > od <data/przeszłość> do <data/przeszłość>”, wymaga, aby podmiot zawarł związek małżeński z podmiotem w sformatowanym zapytaniu dla
Następnie silnik odpowiedzi wybiera jeden z kandydujących meta-szablonów na podstawie rodzaju informacji zawartych w informacjach faktycznych. W szczególności silnik odpowiedzi wybiera kandydata na meta-szablon na podstawie liczby trójek zawartych w informacjach faktycznych. W informacjach faktycznych zawarte są dwie trójki. Dlatego silnik odpowiedzi wybiera meta-szablon „osoba” mający pola dla dwóch szablonów, tj. „<entity><template> i </template><template>”.
Dla każdej trójki zawartej w informacjach faktycznych silnik odpowiedzi wybiera również szablon spośród szablonów fraz kandydata. Silnik odpowiedzi może wybrać szablon frazy mający maksymalną liczbę pól z ograniczeniami, które spełniają informacje faktyczne (np. szablon najbardziej bogaty w dane).
Pierwsza trójka zawarta w informacjach faktycznych to <Soon-Yi Previn/wife/1997>.” W tym przykładzie pierwszy szablon frazy kandydata to „została żoną”
Pierwsza trójka ma podmiot ze związkiem współmałżonka z podmiotem w sformatowanym zapytaniu, który spełnia ograniczenia pola <entity/współmałżonka> oraz datę z przeszłości, która spełnia ograniczenia pola <data/przeszłość>. Ponieważ pierwsza trójka spełnia wszystkie ograniczenia dla pól w pierwszym szablonie, aparat odpowiedzi wybiera pierwszy szablon dla pierwszej trójki.
Druga trójka zawarta w informacjach faktycznych to <louise Lasser/wife/1966/1970>.” Czwarty szablon wyrażenia kandydata to „był żonaty z <podmiot/małżonka> od <data/przeszłość> do <data/przeszłość>”, który zawiera pole <podmiot/małżonek> i dwa pola <data/przeszłość>. Druga trójka w informacjach faktycznych przedstawia podmiot związany pokrewieństwem z podmiotem w sformatowanym zapytaniu, który spełnia ograniczenie pola <entity/współmałżonek>, oraz dwie daty z przeszłości, które spełniają warunek
Ponieważ druga trójka spełnia wszystkie ograniczenia dla pól w czwartym szablonie, silnik odpowiedzi wybiera czwarty szablon dla drugiej trójki.
Silnik odpowiedzi wybiera pierwszy szablon z polami, które można wypełnić informacjami faktycznymi, i nie wykonuje żadnego dodatkowego przetwarzania. Alternatywnie silnik odpowiedzi może przetworzyć każdy szablon w szablonach kandydatów i wybrać szablon mający największą liczbę pól, które można wypełnić informacjami faktycznymi.
Po wybraniu szablonów silnik odpowiedzi generuje zdanie na podstawie szablonów. Na przykład silnik odpowiedzi może zastąpić pola w wybranych szablonach odpowiednimi danymi z informacji faktycznych.
Silnik odpowiedzi może zastąpić pola w pierwszym wybranym szablonie frazy (tj. „wyszła za mąż za <podmiot/małżonka> od <<data/przeszłość>”) informacjami z pierwszej trójki, aby wygenerować frazę „wyszła za mąż do Soon-Yi Previn od 1997”. Tak więc silnik odpowiedzi generuje zdanie „Woody Allen ożenił się z Soon-Yi Previn od 1997, a wcześniej był żonaty z Louise Lasser od 1966 do 1970”. Silnik odpowiedzi następnie przesyła odpowiedź do urządzenia klienckiego, które zawiera wygenerowane zdanie. Odpowiedź może zostać uwzględniona na stronie wyników wyszukiwania zawierającej to zdanie i inne wyniki wyszukiwania. Strona wyników wyszukiwania zawiera również pole wyszukiwania pokazujące oryginalne zapytanie wyszukiwania (tj. „Kim był Woody Allen żonaty z"). renderowanie na urządzeniu klienckim.
System, który generuje zdania w odpowiedzi na faktyczne zapytania
System obejmuje urządzenie klienckie, system wyszukiwania, klaster indeksów i mechanizm odpowiedzi.
Urządzenie klienckie inicjuje zapytanie zawierające dwa terminy zapytania („Gdzie jest miasto rodzinne i uczelnia Woody'ego Allena”) w przeglądarce internetowej na urządzeniu klienckim.
System wyszukiwania otrzymuje zapytanie (np. „Gdzie jest rodzinne miasto i uczelnia Woody'ego Allena”) z urządzenia klienckiego. Następnie system wyszukiwania analizuje i formatuje oryginalne zapytanie do formatu <jednostka/typ/atrybut> (np. >woody Allen/osoba/miasto rodzinne/uczelnia<) przy użyciu, na przykład, odpowiedniego silnika analizującego język naturalny.
W tym przykładzie sformatowane zapytanie zawiera identyfikator jednostki (np. Woody Allen), typ jednostki (np. osoba) i dwa atrybuty (np. miasto rodzinne i uczelnia). System wyszukiwania wysyła następnie sformatowane zapytanie do klastra indeksu.
Korzystając ze sformatowanego zapytania i informacji faktycznych, silnik odpowiedzi generuje następnie odpowiedź w postaci zdania lub zdań w następujący sposób. 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.
