쿼리 답변 생성
게시 됨: 2022-05-05최근에 부여된 이 Google 특허는 일반적으로 쿼리 답변 생성과 관련이 있으며 이 특허는 쿼리 답변에 도움이 되는 Constraints 개념도 도입했습니다.
쿼리 응답에 제약 조건 사용
이 특허는 질문이 추가되고 있는 개체에 대한 사실과 관련된 내용에 대해 질문합니다.
쿼리 응답에 제약 조건 사용에 대한 문서는 다음과 같습니다.
- GRIP: 그래프 쿼리에 대한 누락된 답변에 대한 제약 조건 기반 설명
Constraint Satisfaction을 사용한 질문 답변: QA-by-Dossier-with-Constraints
흥미롭게도 첫 번째 문서는 Google 지식 저장소를 참조로 언급합니다. 제약 조건을 사용하여 질문에 대한 정답을 얻는 데 중점을 두고 있기 때문일 수 있습니다.
이 특허는 Semantic SEO에 많은 초점을 두고 있기 때문입니다. 주의 깊게 읽을 가치가 있는 다음 두 가지를 포함하여 해당 주제에 관한 다른 Google 특허가 생각났습니다.
- Google 지식 정보 조정
- Google의 지식 정보를 위한 항목 추출
이 특허는 엔터티 및 엔터티 속성이 작동하는 방식, 튜플이 그래프 검색에 사용되는 방식 및 Semantic SEO에 대한 몇 가지 통찰력을 제공합니다.
데이터베이스에서 사실을 제공하여 쿼리 응답 생성
검색 시스템은 데이터베이스에서 사실을 제공하여 사실 쿼리에 대한 응답을 생성할 수 있습니다.
이러한 사실은 실시간으로 업데이트될 수 있는 그래프에 저장될 수 있습니다.
이러한 응답은 문장이 아닌 검색 결과 목록으로 형식화될 수 있습니다.
사용자가 예를 들어 음성을 통해 대화 시스템에 사실적인 질문을 할 때 질문에 자연스럽게 응답하는 것이 바람직할 수 있습니다.
가장 자연스러운 응답은 질의 응답을 제공하기 위해 사용자의 질문에 부합하는 사실의 문법적 진술로 공식화된 응답일 수 있습니다.
따라서, 이 특허에 설명된 주제의 일반적인 한 측면에 따르면, 사실 쿼리에 응답하여 데이터베이스에 저장된 사실이 사용자 언어의 문장으로 변환됩니다.
엔터티 속성 식별 쿼리 응답 수신
본 명세서에 기술된 주제의 일 양태는 엔터티의 속성을 식별하는 쿼리를 수신하는 동작을 포함하는 방법으로 구현될 수 있습니다. 이러한 속성은 엔터티에 대한 사실입니다.
그런 다음 작업에는 엔터티의 속성을 기반으로 하는 쿼리 답변의 후보 템플릿에 액세스하는 작업이 포함됩니다. 각 후보 템플릿에는 필드가 있습니다. 여기서 각 영역은 적어도 하나의 제약과 연관됩니다.
그런 다음 작업에는 쿼리 답변을 제공하는 정보 집합을 얻고 후보 템플릿 컬렉션에서 템플릿을 선택하는 작업이 포함됩니다. 선택한 템플릿에는 정보 집합을 충족하는 제약 조건이 있는 가장 많은 수의 필드가 있습니다.
엔티티와 관련된 시맨틱 트리플
정보의 집합은 엔터티-속성-값 트리플의 집합일 수 있습니다.
동작은 단어가 질의 응답을 포함하도록 선택된 템플릿의 필드에 정보 세트를 추가함으로써 구를 생성하는 것을 더 포함합니다.
구는 문장 또는 문장의 일부입니다. 마지막으로 작업에는 클라이언트 장치에 단어를 전달하는 작업이 포함됩니다.
문구는 단어에 해당하는 오디오 신호로 전달될 수 있습니다.
제약 조건에는 다음이 포함될 수 있습니다.
- 유형 제약
- 시간적 제약
- 성별 제약
- 관계 제약
- 단수/복수 제약
- 측정 단위 제약
- 결정적 제약.
일부 구현에는 쿼리의 단일 속성에 응답하는 많은 정보 집합을 얻는 것이 포함됩니다.
조치에는 다음이 포함됩니다.
- 엔티티의 유형에 기초하여 문장 템플릿을 획득하고, 여기서 문장 템플릿은 구문에 대한 복수의 필드를 포함합니다.
- 문장을 형성하기 위해 문장 템플릿의 필드에 구를 추가
- 각 정보 집합에 대해 후보 템플릿 집합에서 템플릿 선택
- 각각의 선택된 템플릿에 대해, 각각의 선택된 템플릿의 필드에 각각의 정보 세트를 추가하여 구문 생성
- 구문이 포함된 문장을 클라이언트 장치에 통신
여기에는 많은 속성이 포함된 쿼리 답변이 포함될 수 있습니다.
- 엔터티의 많은 속성을 식별하는 쿼리 응답 수신
- 엔터티의 각 속성에 대해 엔터티의 해당 속성을 기반으로 하는 쿼리 답변에 대한 후보 템플릿 집합에 액세스
- 엔터티의 각 속성에 대해 쿼리의 각 부분에 답변하는 정보 집합 얻기
- 각 후보 템플릿 세트에서 템플릿 선택
- 엔티티의 각 속성에 대해 선택한 템플릿의 필드에 해당 정보 세트를 추가하여 구문 생성
- 엔티티의 유형에 기초하여 문장 템플릿을 획득하고, 여기서 문장 템플릿은 구문에 대한 복수의 필드를 포함합니다.
- 문장을 형성하기 위해 문장 템플릿의 필드에 구를 추가
- 구문이 포함된 문장을 클라이언트 장치에 통신
이 프로세스의 장점은 다음과 같습니다.
시스템은 복잡한 사실적 주장 및 답변으로 구성 및 확장 가능합니다.
문장 생성 메커니즘에서 실제 데이터베이스를 깔끔하게 분리할 수 있습니다.
적절한 방법을 통해 새 템플릿을 추가할 수 있습니다.
이 질의 응답 생성 특허는
쿼리 답변 생성
발명가: Engin Cinar Sahin, Vinicius J. Fortuna 및 Emma S. Persky
양수인: Google LLC
미국 특허: 11,321,331
부여: 2022년 5월 3일
출원일: 2018년 7월 23일
추상적인
서버는 엔터티의 속성을 식별하는 쿼리 답변을 받습니다.
서버는 엔티티의 속성에 기초하여 질의에 응답하기 위한 후보 템플릿 세트에 액세스하고, 각각의 후보 템플릿은 필드를 갖고, 각 필드는 적어도 하나의 제약과 연관됩니다.
서버는 정보 및 쿼리 답변 세트를 얻고 후보 템플릿 세트에서 템플릿을 선택합니다.
선택한 템플릿에는 정보 집합에 의해 충족되는 제약 조건이 있는 가장 많은 수의 필드가 있습니다.
서버는 선택한 템플릿의 필드에 정보 집합을 추가하여 구문을 생성하여 구문이 쿼리에 대한 답변을 포함하도록 합니다.
마지막으로, 서버는 이 문구를 클라이언트 장치에 전달합니다.
데이터베이스의 사실을 문장으로 변환하기
사용자가 사실적인 질문을 하면 검색 엔진이 데이터베이스에 액세스하여 쿼리 답변을 제공할 수 있습니다.
음성 기반 대화 시스템과 같은 일부 시스템에서는 사용자가 쿼리를 자연어 질문으로 계획할 수 있습니다(예: "일본의 대통령은 누구입니까?").
이러한 경우, 문서를 참조하는 검색 결과 형태의 답변보다는 문장 형태의 자연어 답변을 제공하는 것이 바람직할 수 있다.
따라서 이 명세서에서 설명하는 시스템은 데이터베이스의 사실을 문장으로 변환할 수 있습니다. 이것은 예를 들어 답변이 음성으로 사용자에게 다시 렌더링될 수 있도록 하는 데 유리할 수 있습니다.
사용자의 질문에 답하는 문장을 생성하려면 데이터베이스에서 임의의 사실을 검색하는 것이 바람직할 수 있습니다. 사실은 무작위가 아닙니다. 제약 조건 정보를 사용하여 쿼리 답변을 제공합니다. 이는 엔터티에 대한 쿼리에 대한 더 나은 답변을 의미하는 것 같습니다.
누구와 결혼했는지와 같은 질문에 답하기 위해 시스템은 모든 과거 결혼, 과거 결혼에 관련된 사람들, 노조 날짜 및 결혼 계약 유형을 포함하는 데이터를 얻을 수 있습니다. 그래프 구조를 사용하여 사실을 나타내는 유연한 데이터베이스는 이러한 사실을 제공할 수 있습니다.
속성을 기반으로 쿼리 응답을 생성하기 위한 후보 템플릿 액세스
사실이 수집되면 응답 엔진은 쿼리에 제공된 속성을 기반으로 답변을 생성하기 위한 후보 템플릿에 액세스할 수 있습니다. 예를 들어 원래 질문이 "Woody Allen은 누구와 결혼했습니까?"인 경우 요점은 "결혼"일 수 있습니다. 실제 쿼리가 "How old is Woody Allen"인 경우 속성은 "age"일 수 있습니다. 아래에 설명된 바와 같이, 질문의 각 포인트는 예를 들어 더 많거나 덜 상세한 답변을 지원하기 위해 여러 후보 템플릿에 대응할 수 있습니다.
예를 들어, 속성이 "age"인 경우 응답 엔진은 생년월일 및 나이를 포함하는 템플릿을 얻을 수 있습니다(예: {<entity>는 <date>에 태어났고 현재 <value> 세임}), 템플릿 나이만 포함하는(예: {<entity>는 현재 <value> 세임}), 생년월일과 사망 날짜를 포함하는 템플릿(예: {<entity>은 <date>에 태어나 < /날짜>}).
아래에서 더 자세히 설명하는 것처럼 "< >"로 묶인 템플릿의 부분(즉, 필드)은 보유할 수 있는 데이터에 대한 다양한 제약 조건과 연관될 수 있습니다.
답변 엔진이 후보 템플릿을 획득하면 여러 휴리스틱을 기반으로 가장 관련성이 높은 템플릿을 선택하고 템플릿에 사실을 삽입하여 문장을 생성합니다. 그러면 응답 엔진이 사용자에게 수정 내용의 답변을 다시 제공할 수 있습니다.
데이터 그래프 검색 시스템
시스템은 여기에 설명된 기술을 사용하여 데이터 그래프에 대한 검색 엔진을 구현하는 데 익숙해질 수 있습니다.
시스템은 클라이언트의 쿼리 요청을 처리하는 데이터 그래프용 검색 엔진 시스템으로 설명됩니다. 관련 기술의 다른 구성 및 응용 프로그램이 사용될 수 있습니다. 예를 들어, 쿼리 요청은 다른 서버, 일괄 작업 또는 데이터 그래프 검색 시스템과 통신하는 사용자 터미널에서 시작될 수 있습니다.
데이터 그래프 검색 시스템은 인덱싱 시스템, 검색 시스템 및 인덱스 클러스터를 포함할 수 있다. 인덱싱 시스템, 검색 시스템 및 인덱스 클러스터는 여러 다른 장치의 형태를 취하는 컴퓨팅 장치, 예를 들어 표준 서버, 이러한 서버의 그룹 또는 랙 서버 시스템일 수 있습니다.
또한, 인덱싱 시스템, 검색 시스템 및 인덱스 클러스터는 랩톱 컴퓨터와 같은 개인용 컴퓨터에서 구현될 수 있습니다.
데이터 그래프 검색 시스템은 그래프 기반 데이터 저장소를 포함할 수 있습니다. 이러한 데이터 그래프는 그래프를 생성할 수 있는 노드와 간선을 저장합니다.
노드는 엔터티라고 할 수 있고 가장자리는 두 엔터티 간의 관계라고 할 수 있습니다. 이러한 관계는 여러 가지 방법으로 저장될 수 있습니다.
그래프 기반 데이터 저장소는 한 예에서 엔터티와 관계를 나타내는 트리플 튜플을 저장합니다.
엔티티와 관계를 나타내는 트리플 튜플
트리플에는 다음이 포함될 수도 있습니다.
트리플의 한 예는 개체(또는 개체)인 우디 앨런(Woody Allen), 술어(또는 속성)로 작용하는 관계, 개체(또는 값)인 애니 홀(Annie Hall)입니다.
물론 많은 엔터티와 제한된 수의 관계가 있는 데이터 그래프에는 수십억 개의 트리플이 있을 수 있습니다.
인덱싱 시스템은 기계 실행 가능 명령어 또는 소프트웨어, 펌웨어 또는 이들의 조합을 실행하도록 구성된 프로세서를 포함할 수 있습니다.
쿼리 답변 찾기
검색 시스템은 클라이언트의 사용자로부터 쿼리를 수신하고 이러한 쿼리를 검색 시스템에 제공하는 서버(미도시)를 포함할 수 있다.
검색 시스템은 쿼리에 대한 응답으로 데이터 그래프 및 인터넷이나 인트라넷의 문서 모음과 같은 기타 데이터 소스를 검색하는 역할을 할 수 있습니다.
예를 들어, 검색 시스템은 클라이언트와 같은 클라이언트로부터 쿼리를 수신하고, 일부 쿼리 처리를 수행하고, 인덱스 클러스터 및 다른 소스 검색을 위한 인덱스를 저장하는 다른 인덱싱 클러스터에 쿼리를 보낼 수 있습니다.
검색 시스템에는 모든 소스의 결과를 컴파일하고 컴파일된 결과를 클라이언트에 제공하는 모듈이 있을 수 있습니다.
검색 시스템은 인덱스 클러스터에만 쿼리를 보낼 수 있으며 인덱스 클러스터의 검색 결과를 클라이언트에 제공할 수 있습니다.
검색 시스템은 네트워크를 통해 클라이언트와 통신할 수 있습니다.
쿼리 답변 찾기의 인덱스 클러스터
시스템에는 인덱스 클러스터도 포함될 수 있습니다. 인덱스 클러스터는 각각 자체 프로세서와 메모리가 있는 컴퓨팅 장치가 있는 단일 컴퓨팅 장치 또는 분산 데이터베이스 시스템일 수 있습니다.
인덱스 클러스터를 구성하는 컴퓨팅 장치의 수는 다양할 수 있으며 간결함을 위해 인덱스 클러스터는 단일 엔터티로 표시됩니다.
각 인덱스 클러스터는 기계 실행 가능 명령어 또는 소프트웨어, 펌웨어 또는 이들의 조합을 실행하도록 구성된 프로세서를 포함할 수 있습니다.
컴퓨팅 클러스터는 운영 체제(미도시) 및 컴퓨터 메모리, 예를 들어, 데이터 조각을 일시적으로, 영구적으로, 반영구적으로 또는 이들의 조합으로 저장하도록 구성된 메인 메모리를 포함할 수 있다.
메모리는 휘발성 메모리, 비휘발성 메모리, 또는 이들의 조합을 포함하여 프로세서에 의해 판독 및 실행될 수 있는 형식으로 정보를 저장하는 임의의 유형의 저장 장치를 포함할 수 있습니다.
쿼리에 응답하는 결과를 검색하기 위해 인덱스에 액세스하는 쿼리 해석기
인덱스 클러스터에는 쿼리에 응답하는 결과를 검색하기 위해 인덱스에 액세스하는 쿼리 해석기와 같은 모듈이 포함될 수도 있습니다.
쿼리 해석기는 검색 시스템의 일부일 수도 있고 검색 시스템과 인덱스 클러스터 간에 분산될 수도 있습니다.
점점 더 복잡한 쿼리 및 쿼리 응답
하나의 속성("연령")을 포함하고 단일 삼중 응답을 생성하는 간단한 쿼리입니다.
하나의 속성("결혼")을 포함하지만 여러 개의 3중 응답을 생성하는 간단한 쿼리의 예입니다.
두 개의 속성("hometown 및 alma mater")을 포함하고 여러 개의 3중 응답을 생성하는 복잡한 쿼리의 예입니다.
사실적인 쿼리에 대한 응답으로 문장을 생성하는 예제 시스템입니다.
시스템은 클라이언트 장치, 검색 시스템, 인덱스 클러스터 및 응답 엔진을 포함합니다.
엔티티는 시스템의 일부로 구현될 수 있습니다.
사용자는 클라이언트 장치를 사용하여 쿼리 용어가 있는 쿼리를 시작합니다.
사용자는 원래 쿼리를 문장으로 형식화할 수 있습니다.
음성 기반 대화 시스템과 상호 작용
사용자는 음성 기반 대화 시스템을 사용하여 클라이언트 장치와 상호 작용할 수 있습니다.
예를 들어, 사용자는 클라이언트 장치의 마이크에 "Woody Allen은 몇 살입니까?"라는 질문을 말할 수 있습니다.
그 다음, 클라이언트 장치는 음성 인식을 수행하여 발화를 전사로 변환한 다음 전사를 검색 엔진에 전송할 수 있습니다.
대안적으로, 클라이언트 디바이스는 발화를 인코딩하는 오디오 스피치 데이터를 전송할 수 있다.
검색 시스템은 클라이언트 장치로부터 쿼리(예: "Woody Allen은 몇 살입니까?")를 수신합니다.
쿼리가 오디오 음성 데이터로 인코딩되면 검색 시스템은 오디오 음성 데이터를 전사로 변환할 수 있습니다.
그런 다음 검색 시스템은 원래 쿼리를 구문 분석하고 <entity; 예를 들어 적절한 자연어 구문 분석 엔진을 사용하여 속성> 형식(예: <woody Allen/age<).
그런 다음 검색 시스템은 형식이 지정된 쿼리를 인덱스 클러스터로 보냅니다.
인덱스 클러스터는 쿼리에 응답하여 결과를 검색하기 위해 인덱스에 액세스합니다.
트리플 형태의 질의 응답
이러한 결과는 트리플 형식의 사실 정보 집합일 수 있습니다(예: </woody><woody Allen/born on/Dec. 1,>
그런 다음 인덱스 클러스터는 형식화된 쿼리(예: </woody><woody Allen/age> 및 쿼리에 응답하는 사실 정보(예: </woody><woody Allen/born on/1935년 12월 1일>))를 전송합니다. 응답 엔진에.
그러면 답변 엔진은 형식화된 쿼리와 사실 정보를 사용하여 문장 또는 문장 형태의 답변을 생성합니다.
응답 엔진은 다음과 같이 응답을 생성합니다. 먼저 응답 엔진은 형식이 지정된 쿼리에서 속성을 얻습니다.
그런 다음 응답 엔진은 속성을 사용하여 템플릿 데이터베이스에서 후보 문장 또는 구 템플릿에 액세스합니다.
다음으로, 응답 엔진은 사실 정보 및 후보 템플릿과 관련된 다양한 제약 조건을 기반으로 템플릿 중 하나를 선택합니다.
마지막으로 응답 엔진은 사실 정보를 사용하여 선택한 템플릿의 필드를 채웁니다.
속성을 가져오는 응답 엔진
더 자세히 말하면, 응답 엔진은 먼저 쿼리를 구문 분석하여 형식이 지정된 쿼리에서 속성을 얻습니다. 예를 들어 쿼리가 <entity/attribute> 쌍으로 형식이 지정되었다고 가정하면 응답 엔진은 쌍의 속성 부분을 추출합니다.
경우에 따라 형식이 지정된 쿼리에 여러 속성이 포함될 수 있습니다. 예를 들어, 형식화된 쿼리는 <entity/attribute/attribute> 형식일 수 있습니다. 이러한 경우 응답 엔진은 쿼리에서 각 속성을 추출할 수 있습니다.
다음으로 응답 엔진은 템플릿 데이터베이스에서 쿼리의 각 속성에 대한 후보 템플릿에 액세스합니다.
각 템플릿은 전체 문장 또는 문장의 일부(예: 구문)에 해당할 수 있습니다.
각 템플릿에는 사실 정보를 삽입할 수 있는 필드("< >" 괄호 안의 부분으로 표시)가 포함되어 있습니다.
예를 들어 템플릿은 "<날짜>, <엔티티>가 <값>과 결혼했습니다."일 수 있습니다. 템플릿은 수동으로 또는 알고리즘으로 생성할 수 있습니다.
사용자 언어로 된 후보자 템플릿
응답 엔진은 사용자의 언어를 식별하고 사용자의 언어로 후보 템플릿을 선택합니다.
예를 들어, 응답 엔진은 원래 쿼리의 언어를 나타내는 검색 엔진으로부터 데이터를 수신할 수 있습니다. 유리하게는, 이러한 구성은 답변의 국제화를 용이하게 할 수 있습니다.
필드는 각 필드에 포함될 수 있는 데이터를 제어하는 제약 조건과 연결될 수 있습니다.
본 명세서에서 "<X/Y>"라는 표기는 "X" 제약 조건과 "Y" 제약 조건을 갖는 필드를 나타낸다.
샘플 제약 조건에는 유형 제약 조건, 시간 제약 조건, 성별 제약 조건, 관계 제약 조건, 단수/복수 제약 조건, 측정 단위 제약 조건 및 결정적 제약 조건이 포함될 수 있습니다.
서로 다른 Constratinis에는 서로 다른 데이터 유형이 필요할 수 있습니다.
유형 제약은 특정 유형의 데이터를 요구할 수 있습니다. 예를 들어, <date> 제약은 날짜를 요구할 수 있고, <entity> 제약은 엔티티 이름 또는 기타 식별자를 요구할 수 있으며,
시간적 제약은 예를 들어 날짜 또는 시간이 과거 또는 미래여야 한다는 것을 요구할 수 있습니다. 예를 들어, <date/past>를 포함하는 필드는 과거의 날짜를 포함해야 할 수 있습니다. 성별 제약 조건은 예를 들어 남성 또는 여성의 성별을 요구할 수 있습니다.
관계 제약 조건은 예를 들어 다른 엔터티에 대한 관계 유형을 요구할 수 있습니다. 예를 들어 <entity/spouse>를 포함하는 필드는 필드에 다른 엔터티의 배우자인 엔터티가 포함되어야 합니다. 단수/복수 제약 조건은 예를 들어 필드의 데이터가 단수 또는 복수 형식이어야 할 것을 요구할 수 있습니다.
측정 단위 제약 조건은 예를 들어 필드의 데이터가 특정 측정 단위(예: 인치, 피트, 센티미터, 미터 등)로 측정되도록 요구할 수 있습니다. 예를 들어, 결정적 제약 조건은 "the"라는 단어가 필드 앞에 와야 합니다.
쿼리의 각 속성은 후보 템플릿 집합에 액세스하기 위한 키로 기능할 수 있습니다. 예를 들어, "age" 속성은 템플릿을 검색할 수 있습니다. 샘플 템플릿에는 첫 번째 템플릿 "
두 번째 템플릿인 "<entity>는 현재 <value< years old"이며, <entity> 필드에 대한 엔티티 이름과 <value> 필드에 대한 숫자(예: 연령)가 필요합니다.
세 번째 템플릿인 "<entity>는 <date/past>에 태어났고 <date/past>에 사망했습니다."에는 </entity><entity> 필드에 엔터티 이름이 필요하고 <date/에 대해 두 개의 과거 날짜가 필요합니다. 과거> 필드.
주어진 속성에 대한 여러 템플릿
유리하게는 주어진 속성에 대해 여러 템플릿을 사용하면 구현이 부분적인 사실을 지원할 수 있습니다. 예를 들어, 연령 템플릿의 경우 생년월일은 알려져 있지만 특정 날짜는 알 수 없는 경우 적절한 템플릿은 "</entity><entity> wasborn in <year/past>"일 수 있습니다. 주어진 속성에 대해 여러 템플릿을 제공하면 사실의 다른 부분에 대한 시제를 변경할 수도 있습니다(예: "Woody Allen은 결혼했습니다" 및 "Woody Allen은 결혼했습니다").
후보 템플릿을 얻은 후 응답 엔진은 다양한 휴리스틱을 기반으로 후보 템플릿에서 템플릿을 선택합니다. 예를 들어, 응답 엔진은 성별 동의 및 정확한 시제를 확인할 수 있습니다. 또한 응답 엔진은 원래 쿼리에 대한 응답 수가 선택한 템플릿의 필드 수와 일치한다고 결정할 수 있습니다.
응답 엔진은 선택한 템플릿의 제약 조건 및 필드가 충족되는지 여부도 결정할 수 있습니다. 응답 엔진은 사실 정보에 의해 충족되는 제약 조건이 있는 최대 필드 수를 갖는 템플릿(예: 가장 데이터가 풍부한 템플릿)을 선택할 수 있습니다. 사실 정보는 “<우디 앨런/출생/12월. 1935년 1월 1일>.”
이 예에서 첫 번째 후보 템플릿은 "<entity>가 <date/past>에 태어났고 현재
응답 엔진은 사실 정보를 기반으로 값을 도출할 수 있습니다. 따라서 응답 엔진은 생년월일을 기반으로 <값< 필드 제약 조건을 충족하도록 연령 값을 계산할 수 있습니다. 사실 정보는 첫 번째 템플릿의 필드에 대한 모든 제약 조건을 만족하므로 응답 엔진은 첫 번째 템플릿을 선택합니다.
응답 엔진은 사실 정보로 채워질 수 있는 필드가 있는 첫 번째 템플릿을 선택하고 추가 처리를 수행하지 않습니다. 또는, 응답 엔진은 후보 템플릿의 각 템플릿을 처리하고 사실 정보로 채울 수 있는 필드의 수가 가장 많은 템플릿을 선택할 수 있습니다.
템플릿을 선택한 후 응답 엔진은 템플릿을 기반으로 문장이나 구를 생성합니다. 예를 들어, 응답 엔진은 템플릿의 필드를 사실 정보의 적절한 데이터로 바꿀 수 있습니다. 응답 엔진은 선택한 템플릿을 사용하여 "Woody Allen은 1935년 12월 1일에 태어났고 현재 77세입니다"라는 문장을 생성합니다.
그런 다음 응답 엔진은 생성된 문장을 포함하는 응답을 클라이언트 장치에 전송합니다. 응답은 클라이언트 장치가 음성으로 변환하고 사용자를 위해 렌더링하는 전사일 수 있습니다.
사실 쿼리에 대한 응답으로 문장을 생성하는 시스템
시스템은 클라이언트 장치, 검색 시스템, 인덱스 클러스터 및 응답 엔진을 포함합니다. 예를 들어, 예시된 엔티티는 시스템의 일부로 구현될 수 있습니다.
클라이언트 장치는 쿼리 용어가 있는 쿼리를 시작합니다.
예를 들어, 사용자는 클라이언트 장치의 웹 브라우저에 "Woody Allen은 누구와 결혼했습니까?"라는 쿼리를 입력할 수 있습니다.
검색 시스템은 클라이언트 장치로부터 쿼리(예: "Woody Allen은 누구와 결혼했습니까?")를 수신합니다.
그런 다음 검색 시스템은 원래 쿼리를 구문 분석하고 형식을
이 예에서, 형식화된 쿼리는 엔티티의 식별자(예: Woody Allen), 엔티티의 유형(예: 사람) 및 속성(예: 결혼)을 포함합니다.
유형 정보는 아래 설명된 대로 메타 템플릿을 생성하는 데 사용될 수 있습니다. 그런 다음 검색 시스템은 형식이 지정된 쿼리를 인덱스 클러스터로 보냅니다.
인덱스 클러스터는 쿼리에 응답하는 사실 정보 세트를 검색하기 위해 인덱스에 액세스합니다.
인덱스 클러스터는 인덱스에 액세스하여 쿼리에 응답하여 사실 정보 집합을 검색합니다. 이러한 결과에는 최소 2개의 트리플이 포함됩니다(예:
그런 다음 인덱스 클러스터는 형식화된 쿼리(예: <woody Allen/age> 및 쿼리에 응답하는 사실 정보(예: <Soon-Yi Previn/wife/1997>, <louise Lasser/wife/1966/1970>)를 전송합니다. ) 응답 엔진으로 이동합니다.
그러면 답변 엔진은 형식화된 쿼리와 사실 정보를 사용하여 다음과 같이 문장 또는 문장 형태의 답변을 생성합니다.
먼저, 응답 엔진은 형식화된 쿼리(예: 사람)에서 유형 정보를 얻습니다.
유형 정보는 쿼리가 기반으로 하는 엔터티 유형을 식별합니다. 유형 정보를 사용하여 응답 엔진은 "사람" 유형의 엔터티와 연결된 후보 메타 템플릿에 액세스합니다.
이 사양에서 언급된 메타 템플릿은 다른 템플릿을 포함하도록 구성된 필드가 있는 템플릿입니다.
각각의 후보 메타 템플릿은 엔티티의 이름 또는 식별자를 위한 필드와 다른 템플릿을 추가하기 위한 적어도 하나의 필드를 포함한다.
이러한 템플릿을 사용하면 응답 엔진이 사람에 대한 정보가 포함된 다양한 구문을 통합하는 문장을 생성할 수 있습니다.
응답 엔진은 또한 형식화된 쿼리에서 속성을 얻고 속성을 사용하여 템플릿 데이터베이스에서 후보 구 템플릿에 액세스합니다.
이러한 문구 템플릿은 메타 템플릿에 통합되도록 설계되었습니다.
위에서 설명된 바와 같이, 쿼리의 각 속성은 후보 구문 템플릿 집합에 액세스하기 위한 키로 기능할 수 있습니다.
예를 들어, "marriages" 속성은 구 템플릿을 검색할 수 있습니다.
샘플 문구 템플릿에는 "<날짜/과거> 이후 <개체/배우자>와 결혼했습니다""라는 첫 번째 템플릿이 포함되어 있습니다.
두 번째 템플릿인 "<entity/spouse>와 결혼함"은 형식화된 쿼리에서 엔터티와 결혼하는 엔터티를 요구합니다.
세 번째 템플릿인 "결혼했습니다"에는 추가 정보가 필요하지 않습니다.
네 번째 템플릿인 "<날짜/과거 >에서 <날짜/과거>까지 <엔티티/배우자>와 결혼했습니다""는 형식화된 쿼리에서 엔터티와 결혼한 엔터티가 필요합니다.
다음으로, 답변 엔진은 사실 정보에 포함된 정보의 유형을 기반으로 후보 메타 템플릿 중 하나를 선택합니다. 특히, 답변 엔진은 사실 정보에 포함된 트리플의 수를 기반으로 후보 메타 템플릿을 선택합니다. 2개의 트리플이 사실 정보에 포함됩니다. 따라서 응답 엔진은 "<entity><template> 및 </template><template>"과 같은 두 개의 템플릿에 대한 필드가 있는 "사람" 메타 템플릿을 선택합니다.
사실 정보에 포함된 각 트리플에 대해 응답 엔진은 후보 문구 템플릿에서도 템플릿을 선택합니다. 응답 엔진은 사실 정보에 의해 충족되는 제약 조건이 있는 최대 필드 수를 갖는 구문 템플릿(예: 가장 데이터가 풍부한 템플릿)을 선택할 수 있습니다.
사실 정보에 포함된 첫 번째 트리플은 <순이 프레빈/아내/1997>입니다.” 이 예에서 첫 번째 후보 문구 템플릿은 "결혼했습니다.
첫 번째 트리플에는 <entity/spouse> 필드 제약 조건을 충족하는 형식화된 쿼리의 엔터티와 배우자 관계가 있는 엔터티와 <date/past> 필드 제약 조건을 충족하는 과거 날짜가 있습니다. 첫 번째 트리플은 첫 번째 템플릿의 필드에 대한 모든 제약 조건을 충족하므로 응답 엔진은 첫 번째 트리플에 대한 첫 번째 템플릿을 선택합니다.
사실 정보에 포함된 두 번째 트리플은 <louise Lasser/아내/1966/1970>입니다.” 네 번째 후보 구문 템플릿은 <entity/spouse> 필드와 2개의 <date/past> 필드가 있는 "<date/past>부터 <date/past>까지 <entity/spouse>와 결혼했습니다."입니다. 사실 정보의 두 번째 트리플은 <entity/spouse> 필드 제약 조건을 충족하는 형식화된 쿼리의 엔터티에 대한 배우자 관계와 해당 조건을 충족하는 과거의 두 날짜를 엔터티에 제공합니다.
두 번째 트리플은 네 번째 템플릿의 필드에 대한 모든 제약 조건을 충족하므로 응답 엔진은 두 번째 트리플에 대해 네 번째 템플릿을 선택합니다.
응답 엔진은 사실 정보로 채워질 수 있는 필드가 있는 첫 번째 템플릿을 선택하고 추가 처리를 수행하지 않습니다. 또는, 응답 엔진은 후보 템플릿의 각 템플릿을 처리하고 사실 정보로 채울 수 있는 필드의 수가 가장 많은 템플릿을 선택할 수 있습니다.
템플릿을 선택한 후 응답 엔진은 템플릿을 기반으로 문장을 생성합니다. 예를 들어, 응답 엔진은 선택된 템플릿의 필드를 사실 정보의 적절한 데이터로 바꿀 수 있습니다.
응답 엔진은 "결혼했습니다 따라서 응답 엔진은 "Woody Allen은 1997년부터 순이 프레빈과 결혼했으며 이전에는 1966년부터 1970년까지 Louise Lasser와 결혼했습니다."라는 문장을 생성합니다. 그러면 응답 엔진이 응답을 전송합니다. 생성된 문장을 포함하는 클라이언트 장치에 답변이 포함될 수 있습니다. 답변은 문장 및 기타 검색 결과를 포함하는 검색 결과 페이지에 포함될 수 있습니다. 검색 결과 페이지에는 원래 검색 쿼리(예: "Woody는 누구였습니까?")를 보여주는 검색 상자도 포함됩니다. Allen은 "와 결혼했습니다."). 검색 결과 페이지는 클라이언트 장치에 의해 렌더링될 수 있습니다. 문장은 대안적으로 클라이언트 장치가 음성을 생성할 수 있도록 하는 전사로 또는 문장을 인코딩하는 오디오 신호로 전송될 수 있습니다. 클라이언트 장치에서 렌더링합니다.
사실 쿼리에 대한 응답으로 문장을 생성하는 시스템
시스템은 클라이언트 장치, 검색 시스템, 인덱스 클러스터 및 응답 엔진을 포함합니다.
클라이언트 장치는 두 개의 쿼리 용어("Woody Allen의 고향 및 모교는 어디에 있습니까?")를 포함하는 쿼리를 클라이언트 장치의 웹 브라우저에 시작합니다.
검색 시스템은 클라이언트 장치로부터 쿼리(예: "Woody Allen의 고향 및 모교는 어디입니까?")를 수신합니다. 그런 다음 검색 시스템은 예를 들어 적절한 자연어 구문 분석 엔진을 사용하여 원래 쿼리를 구문 분석하고 <entity/type/attribute> 형식(예: >woody Allen/person/hometown/college<)으로 형식을 지정합니다.
이 예에서 형식화된 쿼리는 개체의 식별자(예: Woody Allen), 개체의 유형(예: 사람) 및 두 개의 속성(예: 고향 및 대학)을 포함합니다. 그런 다음 검색 시스템은 형식이 지정된 쿼리를 인덱스 클러스터로 보냅니다.
그러면 답변 엔진은 형식화된 쿼리와 사실 정보를 사용하여 다음과 같이 문장 또는 문장 형태의 답변을 생성합니다. 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.