Generación de respuestas de consulta

Publicado: 2022-05-05

Esta patente de Google otorgada recientemente generalmente se relaciona con la generación de respuestas a consultas, y esta patente también introduce el concepto de Restricciones para ayudar a responder consultas.

Uso de restricciones para las respuestas de consulta

Esta patente hace preguntas sobre contenidos relacionados con hechos sobre entidades a las que se agregan preguntas.

Los documentos sobre el uso de restricciones para responder consultas son estos:

    GRIP: explicación basada en restricciones de respuestas faltantes para consultas de gráficos
    Respuesta a preguntas mediante la satisfacción de restricciones: control de calidad por expediente con restricciones

Curiosamente, el primer documento se refiere a Google Knowlege Vault como referencia. Probablemente porque se enfoca en obtener respuestas correctas a las preguntas mediante el uso de restricciones.

Ya que esta patente se enfoca tanto en el SEO Semántico. Me recordó a otras patentes de Google que trataban sobre ese tema, incluidas estas dos, que vale la pena leer detenidamente:

  • Reconciliación de Google Knowledge Graph
  • Extracciones de entidades para gráficos de conocimiento en Google

La patente proporciona información sobre cómo funcionan las entidades y los atributos de las entidades, cómo se utilizan las tuplas en la búsqueda de gráficos y un vistazo al SEO semántico.

Generación de respuestas a consultas proporcionando datos de una base de datos

Los sistemas de búsqueda pueden generar respuestas a consultas fácticas proporcionando datos de una base de datos.

Estos hechos pueden almacenarse en un gráfico que puede actualizarse en tiempo real.

Estas respuestas pueden formatearse como listas de resultados de búsqueda en lugar de oraciones.

Cuando un usuario hace una pregunta objetiva, por ejemplo, a través de la voz a un sistema de diálogo, puede ser deseable tener una respuesta natural a la pregunta.

La respuesta más natural puede ser una respuesta formulada como una declaración gramatical de los hechos que satisfacen la pregunta del usuario para proporcionar respuestas a la consulta.

Así, según un aspecto general del tema descrito en esta patente, en respuesta a una consulta factual, los hechos almacenados en una base de datos se convierten en una frase en el idioma del usuario.

Recibir respuestas a consultas Identificar atributos de una entidad

Un aspecto del tema descrito en esta especificación puede incorporarse en métodos que incluyen las acciones de recibir una consulta que identifica los atributos de una entidad. Esos atributos son los hechos acerca de la entidad.

Luego, las acciones incluyen el acceso a plantillas de candidatos para respuestas de consultas basadas en los atributos de la entidad. Cada plantilla de candidato tiene campos; donde cada área se asocia con al menos una restricción.

Luego, las acciones incluyen obtener un conjunto de información que proporciona respuestas a consultas y seleccionar una plantilla de la colección de plantillas candidatas. La plantilla elegida tiene la mayor cantidad de campos con restricciones que satisfacen el conjunto de información.

Triples semánticos relacionados con entidades

El conjunto de información puede ser un conjunto de tripletas entidad-atributo-valor.

Las acciones incluyen además generar una frase agregando el conjunto de información a los campos de la plantilla seleccionada, de modo que las palabras comprendan respuestas de consulta.

La frase es una oración o una parte de una oración. Finalmente, las acciones incluyen comunicar las palabras a un dispositivo cliente.

La frase puede comunicarse como una señal de audio correspondiente a las palabras.

Las restricciones pueden incluir:

  • Restricción de tipo
  • Restricción temporal
  • Restricción de género
  • Restricción de relación
  • Restricción singular/plural
  • Restricción de unidad de medida
  • Restricción determinante.

Algunas implementaciones implican la obtención de muchos conjuntos de información en respuesta a un solo atributo en la consulta.

Las acciones incluyen además:

  • Obtener una plantilla de frase basada en un tipo de entidad, en la que la plantilla de frase incluye una pluralidad de campos para frases
  • Agregar las frases a los campos de la plantilla de oración para formar la oración
  • Seleccionar, para cada conjunto de información, una plantilla del conjunto de plantillas candidatas
  • Generar, para cada plantilla seleccionada, una frase agregando el respectivo conjunto de información a los campos de la respectiva plantilla seleccionada
  • Comunicar la oración, incluidas las frases, a un dispositivo cliente

Esto puede implicar respuestas de consulta que incluyen muchos atributos.

  • Recibir respuestas a consultas que identifiquen muchos atributos de una entidad
  • Acceder, para cada atributo de la entidad, a un conjunto de plantillas candidatas para respuestas de consulta basadas en el atributo respectivo de la entidad
  • Obtención, para cada atributo de la entidad, de un conjunto de informaciones que responde a una parte respectiva de la consulta
  • Selección de una plantilla del conjunto respectivo de plantillas candidatas
  • Generar, para cada atributo de la entidad, una frase agregando el respectivo conjunto de información a los campos de la plantilla seleccionada
  • Obtener una plantilla de frase basada en un tipo de entidad, en la que la plantilla de frase incluye una pluralidad de campos para frases
  • Agregar las frases a los campos de la plantilla de oración para formar una oración
  • Comunicar una oración que incluye las frases a un dispositivo cliente

Las ventajas de este proceso pueden incluir:

El sistema es configurable y extensible a afirmaciones y respuestas fácticas complejas.
Puede permitir una separación clara de la base de datos real del mecanismo de generación de oraciones.
Puede permitir la adición de nuevas plantillas a través de cualquier método adecuado.

Esta patente de generación de respuestas a consultas se encuentra en

Generar respuestas de consulta
Inventores: Engin Cinar Sahin, Vinicius J. Fortuna y Emma S. Persky
Cesionario: Google LLC
Patente de EE. UU.: 11,321,331
Concedido: 3 de mayo de 2022
Archivado: 23 de julio de 2018

Resumen

Un servidor recibe respuestas a consultas que identifican los atributos de una entidad.

El servidor accede a un conjunto de plantillas candidatas para responder a la consulta en función de los atributos de la entidad, cada plantilla candidata tiene campos, en el que cada campo se asocia con al menos una restricción.

El servidor obtiene un conjunto de información y respuestas a consultas y selecciona una plantilla del conjunto de plantillas candidatas.

La plantilla seleccionada tiene la mayor cantidad de campos con restricciones satisfechas por el conjunto de información.

El servidor genera una frase añadiendo el conjunto de información a los campos de la plantilla seleccionada, de forma que la frase constituya una respuesta a la consulta.

Finalmente, el servidor comunica la frase a un dispositivo cliente.

Convertir hechos de una base de datos en oraciones

Cuando un usuario hace una pregunta objetiva, un motor de búsqueda puede proporcionar respuestas de consulta accediendo a una base de datos.

Algunos sistemas, como los sistemas de diálogo basados ​​en voz, permiten a los usuarios planificar consultas como preguntas en lenguaje natural (p. ej., "¿Quién es el presidente de Japón?").

En tales casos, puede ser deseable proporcionar una respuesta en lenguaje natural en forma de oración en lugar de una respuesta formateada como resultados de búsqueda que se refieran a documentos.

Por lo tanto, los sistemas descritos en esta especificación pueden convertir hechos de una base de datos en oraciones. Esto puede ser ventajoso, por ejemplo, para que la respuesta pueda devolverse al usuario como voz.

Para producir oraciones que respondan a las preguntas de los usuarios, puede ser deseable recuperar hechos aleatorios de una base de datos. Sin embargo, los hechos no son aleatorios: están utilizando la información de restricciones para proporcionar respuestas a las consultas. Esto parecería significar mejores respuestas a consultas sobre entidades.

Para responder a una consulta como con quién se casó alguien, un sistema puede obtener datos que incluyen todos los matrimonios anteriores, las personas involucradas en las bodas anteriores, las fechas de las uniones y los tipos de acuerdos matrimoniales. Una base de datos flexible que represente hechos usando una estructura gráfica puede proporcionar estos hechos.

Acceso a plantillas de candidatos para generar respuestas de consulta basadas en el atributo o atributos

Una vez que se han recopilado los datos, un motor de respuesta puede acceder a plantillas de candidatos para generar una respuesta basada en el atributo o atributos proporcionados en la consulta. Por ejemplo, si la pregunta original es "¿Con quién se casó Woody Allen?", el punto puede ser "matrimonios". Si la consulta real es "¿Cuántos años tiene Woody Allen?", el atributo puede ser "edad". Como se describe a continuación, cada punto de una pregunta puede corresponder a varias plantillas de candidatos, por ejemplo, para respaldar respuestas más o menos detalladas.

Por ejemplo, si el atributo es "edad", el motor de respuesta puede obtener una plantilla que incluya la fecha de nacimiento y la edad (p. ej., {<entidad> nació el <fecha> y actualmente tiene <valor> años}), una plantilla que incluye solo la edad (p. ej., {<entidad> tiene actualmente <valor> años}) y una plantilla que incluye la fecha de nacimiento y la fecha de fallecimiento (p. ej., {<entidad> nació el <fecha> y murió el < /fecha>}).

Como se describe con más detalle a continuación, las partes de las plantillas encerradas en “< >” (es decir, los campos) pueden asociarse con varias restricciones sobre los datos que pueden contener.

Una vez que el motor de respuesta ha obtenido las plantillas candidatas, selecciona la plantilla más relevante basándose en múltiples heurísticas y genera una oración insertando los hechos en la plantilla. El motor de respuesta puede proporcionar una respuesta en forma de corrección al usuario.

Un sistema de búsqueda de gráficos de datos

El sistema puede acostumbrarse a implementar un motor de búsqueda para un gráfico de datos usando las técnicas descritas aquí.

Un sistema se describe como un sistema de motor de búsqueda para un gráfico de datos que procesa las solicitudes de consulta de un cliente. Pueden usarse otras configuraciones y aplicaciones de la tecnología relacionada. Por ejemplo, la solicitud de consulta puede originarse en otro servidor, en un trabajo por lotes o en un terminal de usuario en comunicación con un sistema de búsqueda de gráficos de datos.

El sistema de búsqueda de gráficos de datos puede incluir un sistema de indexación, un sistema de búsqueda y un grupo de índices. El sistema de indexación, el sistema de búsqueda y el grupo de índices pueden ser dispositivos informáticos que toman la forma de varios dispositivos diferentes, por ejemplo, un servidor estándar, un grupo de dichos servidores o un sistema de servidor en rack.

Además, los sistemas de indexación, los sistemas de búsqueda y los grupos de indexación pueden implementarse en una computadora personal, por ejemplo, una computadora portátil.

El sistema de búsqueda de gráficos de datos puede incluir un almacén de datos basado en gráficos. Tal gráfico de datos almacena nodos y bordes, a partir de los cuales se puede crear un gráfico.

Los nodos pueden denominarse entidades y los bordes pueden denominarse relaciones entre dos entidades. Tales relaciones pueden almacenarse de varias maneras.

El almacén de datos basado en gráficos almacena tuplas triples que representan entidades y relaciones en un ejemplo.

Tuplas triples que representan entidades y relaciones

Un triple también puede incluir un formato, con la entidad que representa la entidad inicial, el punto que representa una característica de una entidad relacionada como bordes redefinidos de la entidad y el valor que representa la entidad relacionada.

Un ejemplo de un triple es la entidad Woody Allen como sujeto (o entidad), la relación en la que actúa como predicado (o atributo) y la entidad Annie Hall como objeto (o valor).

Por supuesto, un gráfico de datos con muchas entidades e incluso un número limitado de relaciones puede tener miles de millones de triples.

Los sistemas de indexación pueden incluir procesadores configurados para ejecutar instrucciones ejecutables por máquina o piezas de software, firmware o una combinación de los mismos.

Búsqueda de respuestas de consulta

El sistema de búsqueda puede incluir servidores (no mostrados) que reciben consultas de un usuario de un cliente y proporcionan esas consultas al sistema de búsqueda.

El sistema de búsqueda puede ser responsable de buscar el gráfico de datos y otras fuentes de datos, como un corpus de documentos de Internet o una Intranet, en respuesta a una consulta.

Por ejemplo, el sistema de búsqueda puede recibir una consulta de un cliente, como un cliente, realizar algún procesamiento de consultas y enviar la consulta al grupo de índices ya otros grupos de indexación que almacenan índices para buscar en otras fuentes.

El sistema de búsqueda puede tener un módulo que recopile los resultados de todas las fuentes y proporcione los resultados compilados al cliente.

El sistema de búsqueda solo puede enviar consultas al grupo de índices y puede proporcionar resultados de búsqueda del grupo de índices al cliente.

El sistema de búsqueda puede estar en comunicación con los clientes a través de la red.

Un grupo de índices para encontrar respuestas a consultas

El sistema también puede incluir un grupo de índices. El clúster de índice puede ser un solo dispositivo informático o un sistema de base de datos distribuido con dispositivos informáticos, cada uno con su propio procesador y memoria.

La cantidad de dispositivos informáticos que componen el clúster de índice puede variar y, en aras de la brevedad, el clúster de índice se muestra como una sola entidad.

Cada grupo de índices puede incluir procesadores configurados para ejecutar instrucciones ejecutables por máquina o piezas de software, firmware o una combinación de los mismos.

El grupo informático puede incluir un sistema operativo (no mostrado) y memorias informáticas, por ejemplo, la memoria principal, configurada para almacenar datos, ya sea de forma temporal, permanente, semipermanente o una combinación de los mismos.

La memoria puede incluir cualquier tipo de dispositivo de almacenamiento que almacene información en un formato que pueda ser leído y ejecutado por un procesador, incluida la memoria volátil, la memoria no volátil o una combinación de las mismas.

Un solucionador de consultas que accede al índice para recuperar resultados que respondan a la consulta

El clúster de índices también puede incluir módulos, como la resolución de consultas, que acceden al índice para recuperar resultados que respondan a la consulta.

Una resolución de consultas también puede ser parte del sistema de búsqueda o puede distribuirse entre el sistema de búsqueda y el grupo de índices.

Consultas y respuestas de consultas cada vez más complicadas

Una consulta simple que involucra un atributo ("edad") y da como resultado una sola respuesta triple.

Un ejemplo de una consulta simple que involucra un atributo ("matrimonios") pero da como resultado múltiples respuestas triples.

Un ejemplo de una consulta complicada que involucra dos atributos ("ciudad natal y alma mater") y da como resultado múltiples respuestas triples.

Un sistema de ejemplo que genera oraciones en respuesta a consultas fácticas.

El sistema incluye un dispositivo cliente, un sistema de búsqueda, un grupo de índices y un motor de respuesta.

Las entidades pueden implementarse como parte del sistema.

Un usuario inicia una consulta con términos de consulta utilizando un dispositivo cliente.

El usuario puede formatear la consulta original como una oración.

Interactuando con un sistema de diálogo basado en voz

El usuario puede interactuar con el dispositivo cliente usando un sistema de diálogo basado en voz.

Por ejemplo, el usuario puede formular la consulta "¿Cuántos años tiene Woody Allen?" en un micrófono del dispositivo cliente.

El dispositivo cliente puede entonces realizar un reconocimiento de voz para convertir la expresión verbal en una transcripción y luego transmitir la transcripción al motor de búsqueda.

Alternativamente, el dispositivo cliente puede transmitir datos de voz de audio que codifican la pronunciación.

El sistema de búsqueda recibe la consulta (por ejemplo, "¿Cuántos años tiene Woody Allen?") del dispositivo cliente.

Si la consulta se codifica como datos de voz de audio, el sistema de búsqueda puede convertir los datos de voz de audio en una transcripción.

Luego, el sistema de búsqueda analiza y formatea la consulta original en una <entidad; atributo> formato (como <woody Allen/age<) utilizando, por ejemplo, un motor de análisis de lenguaje natural adecuado.

Luego, el sistema de búsqueda envía la consulta formateada al clúster de índice.

El clúster de índice accede al índice para recuperar resultados que respondan a la consulta.

Respuestas a consultas en forma de triples

Estos resultados pueden ser un conjunto de información fáctica en forma de triples (p. ej., </woody><woody Allen/nacido el/1 de diciembre>

El grupo de índice luego transmite la consulta formateada (p. ej., </woody><woody Allen/edad> y la información fáctica que responde a la consulta (p. ej., </woody><woody Allen/nacido el/1 de diciembre de 1935>) al motor de respuesta.

Utilizando la consulta formateada y la información fáctica, el motor de respuesta genera una respuesta en forma de oración o oraciones.

El motor de respuesta genera una respuesta de la siguiente manera. Primero, el motor de respuesta obtiene el atributo o atributos de la consulta formateada.

Luego, el motor de respuesta usa el atributo o los atributos para acceder a las plantillas de oraciones o frases candidatas desde la base de datos de plantillas.

A continuación, el motor de respuestas selecciona una de las plantillas en función de la información factual y varias restricciones asociadas con las plantillas candidatas.

Finalmente, el motor de respuesta llena los campos en la plantilla seleccionada utilizando la información factual.

Un motor de respuesta que obtiene un atributo o atributos

Más detalladamente, el motor de respuesta primero obtiene el atributo o los atributos de la consulta formateada al analizar la consulta. Por ejemplo, suponiendo que la consulta se formateó como un par <entidad/atributo>, el motor de respuesta extrae la parte del atributo del par.

En algunos casos, la consulta formateada puede incluir varios atributos. Por ejemplo, la consulta formateada puede tener la forma de <entidad/atributo/atributo>. En tales casos, el motor de respuesta puede extraer cada atributo de la consulta.

A continuación, el motor de respuestas accede a las plantillas candidatas para cada atributo de la consulta desde la base de datos de plantillas.

Cada plantilla puede corresponder a una oración completa oa una porción de una oración (por ejemplo, una frase).

Cada plantilla incluye campos (que se muestran como las partes entre paréntesis “< >”) que pueden tener información fáctica insertada.

Por ejemplo, una plantilla puede ser "El <fecha>, <entidad> se casó con <valor>". Las plantillas se pueden generar de forma manual o algorítmica.

Plantillas de candidatos en el idioma del usuario

El motor de respuesta identifica el idioma del usuario y selecciona plantillas candidatas en el idioma del usuario.

Por ejemplo, el motor de respuesta puede recibir datos del motor de búsqueda indicando el idioma de la consulta original. Ventajosamente, tal configuración puede facilitar la internacionalización de la respuesta.

Los campos pueden asociarse con restricciones que rigen los datos que puede contener cada campo.

Tal como se utiliza en esta especificación, la notación "<X/Y >" indica un campo que tiene una restricción "X" y una restricción "Y".

Las restricciones de muestra pueden incluir restricciones de tipo, restricciones temporales, restricciones de género, restricciones de relación, restricciones de singular/plural, restricciones de unidades de medida y restricciones de determinante.

Diferentes restricciones pueden requerir diferentes tipos de datos

Una restricción de tipo puede requerir un tipo específico de datos, por ejemplo, una restricción de <fecha> puede requerir una fecha, una restricción de <entidad> puede requerir un nombre de entidad u otro identificador, y un la restricción puede requerir un número.

Una restricción temporal puede requerir, por ejemplo, que una fecha o una hora estén en el pasado o en el futuro, por ejemplo, un campo que contenga <fecha/pasado> puede requerir que el campo incluya una fecha en el pasado. Una restricción de género puede requerir, por ejemplo, un género masculino o femenino.

Una restricción de relación puede requerir, por ejemplo, un tipo de relación con otra entidad, por ejemplo, un campo que contenga <entidad/cónyuge> puede requerir que el campo incluya una entidad que sea cónyuge de otra entidad. Una restricción singular/plural puede requerir, por ejemplo, que los datos en el campo estén en forma singular o plural.

Una restricción de unidad de medida puede, por ejemplo, requerir que los datos en el campo se midan en una unidad de medida específica (por ejemplo, pulgadas, pies, centímetros, metros, etc.). Una restricción determinante puede requerir, por ejemplo, que la palabra "el" preceda al campo.

Cada atributo de la consulta puede funcionar como una clave para acceder a un conjunto de plantillas candidatas. Por ejemplo, el atributo "edad" puede resultar en la recuperación de las plantillas. Las plantillas de muestra incluyen una primera plantilla “ nació el <fecha/pasado&glt; y actualmente tiene <valor> años”, lo que requiere un nombre de entidad para la <entidad&lgt; campo, una fecha en el pasado para el y un número (por ejemplo, una edad) para el campo <valor<.

La segunda plantilla, "<entidad> tiene actualmente <valor< años", requiere un nombre de entidad para el campo <entidad> y un número (por ejemplo, una edad) para el campo <valor>.

La tercera plantilla, "<entidad> nació el <fecha/pasado> y murió el <fecha/pasado>", requiere un nombre de entidad para el campo </entidad><entidad> y dos fechas pasadas para la <fecha/ pasado> campos.

Múltiples plantillas para atributos dados

Ventajosamente, tener múltiples plantillas para un atributo dado permite que las implementaciones admitan hechos parciales. Por ejemplo, para las plantillas de edad, si se conoce el año de nacimiento pero se desconoce la fecha específica, una plantilla adecuada puede ser “</entidad> <entidad> nació en <año/pasado>”. Proporcionar múltiples plantillas para un atributo dado también permite cambiar los tiempos verbales para diferentes partes de los hechos (p. ej., "Woody Allen se casa" y "Woody Allen se casa").

Después de obtener las plantillas candidatas, el motor de respuesta selecciona una plantilla de las plantillas candidatas en función de varias heurísticas. Por ejemplo, el motor de respuestas puede verificar la concordancia de género y el tiempo correcto. Además, el motor de respuesta puede determinar que la cantidad de respuestas a la consulta original coincida con la cantidad de campos de la plantilla seleccionada.

El motor de respuesta también puede determinar si se cumplen las restricciones y los campos de la plantilla seleccionada. El motor de respuesta puede seleccionar la plantilla que tenga el número máximo de campos con restricciones que se satisfagan con la información factual (por ejemplo, la plantilla más rica en datos). La información fáctica es “<woody Allen/nacido el/dic. 1, 1935>”.

En este ejemplo, la primera plantilla candidata es “<entidad> nació el <fecha/pasado> y actualmente años." Esta plantilla tiene un campo, un campo <fecha/pasado> y un campo <valor>. La información fáctica proporciona una entidad que satisface la restricción del campo <entidad> y una fecha en el pasado que satisface la restricciones de campo.

El motor de respuesta puede derivar valores basados ​​en información fáctica. Por lo tanto, el motor de respuesta puede calcular un valor de edad para satisfacer la restricción del campo <valor< según la fecha de nacimiento. Dado que la información factual satisface todas las restricciones de los campos en la primera plantilla, el motor de respuesta selecciona la primera plantilla.

El motor de respuesta selecciona la primera plantilla con campos que se pueden completar con la información factual y no realiza ningún procesamiento adicional. Alternativamente, el motor de respuesta puede procesar cada plantilla en las plantillas candidatas y seleccionar la plantilla que tenga la mayor cantidad de campos que se pueden llenar con la información factual.

Después de seleccionar la plantilla, el motor de respuesta genera una oración o frase basada en la plantilla. Por ejemplo, el motor de respuestas puede reemplazar los campos en la plantilla con los datos apropiados de la información fáctica. El motor de respuesta genera la oración "Woody Allen nació el 1 de diciembre de 1935 y actualmente tiene 77 años" utilizando la plantilla seleccionada.

Luego, el motor de respuesta transmite una respuesta al dispositivo cliente, donde la respuesta incluye la oración generada. La respuesta puede ser una transcripción que el dispositivo cliente convierte en voz y la presenta para el usuario.

Sistema que genera oraciones en respuesta a consultas fácticas

El sistema incluye un dispositivo cliente, un sistema de búsqueda, un grupo de índices y un motor de respuesta. Las entidades ilustradas pueden, por ejemplo, implementarse como parte del sistema.

Un dispositivo cliente inicia una consulta que tiene términos de consulta.

Por ejemplo, un usuario puede ingresar la consulta "¿Con quién se casó Woody Allen?" en un navegador web en el dispositivo cliente.

El sistema de búsqueda recibe la consulta (p. ej., "¿Con quién se casó Woody Allen?") del dispositivo cliente.

Luego, el sistema de búsqueda analiza y formatea la consulta original en un formato (por ejemplo, ) utilizando, por ejemplo, un motor de análisis de lenguaje natural adecuado.

En este ejemplo, la consulta formateada incluye un identificador de la entidad (p. ej., Woody Allen), un tipo de entidad (p. ej., persona) y un atributo (p. ej., matrimonios).

La información de tipo puede usarse para generar una metaplantilla como se describe a continuación. Luego, el sistema de búsqueda envía la consulta formateada al clúster de índice.

El grupo de índices accede al índice para recuperar un conjunto de información fáctica que responde a la consulta

El grupo de índices accede al índice para recuperar un conjunto de información fáctica en respuesta a la consulta. Estos resultados incluyen al menos dos triples (p. ej., , y <louise Lasser/esposa/1966/1970>).

Luego, el grupo de índices transmite la consulta formateada (p. ej., <woody Allen/edad>) y la información fáctica que responde a la consulta (p. ej., <Soon-Yi Previn/esposa/1997> y <louise Lasser/esposa/1966/1970> ) al motor de respuesta.

Utilizando la consulta formateada y la información fáctica, el motor de respuesta genera una respuesta en forma de una oración o oraciones de la siguiente manera.

Primero, el motor de respuesta obtiene la información de tipo de la consulta formateada (por ejemplo, persona).

La información de tipo identifica el tipo de entidad en la que se basa la consulta. Utilizando la información de tipo, el motor de respuesta accede a las metaplantillas candidatas que están asociadas con un tipo de entidad de "persona".

Como se menciona en esta especificación, las metaplantillas son plantillas que tienen campos configurados para contener otras plantillas.

Cada una de las metaplantillas candidatas incluye un campo para un nombre o identificador de una entidad y al menos un campo para agregar otras plantillas.

Estas plantillas permiten que el motor de respuesta genere oraciones para incorporar varias frases con información sobre una persona.

El motor de respuesta también obtiene el atributo o los atributos de la consulta formateada y utiliza el atributo o los atributos para acceder a las plantillas de frases candidatas desde la base de datos de plantillas.

Estas plantillas de frases se diseñan para incorporarse a las metaplantillas.

Como se describió anteriormente, cada atributo de la consulta puede funcionar como una clave para acceder a un conjunto de plantillas de frases candidatas.

Por ejemplo, el atributo "matrimonios" puede resultar en la recuperación de las plantillas de frase.

Las plantillas de frases de muestra incluyen una primera plantilla "se casó con <entidad/cónyuge> desde <fecha/pasado>", que requiere una entidad que se case con la entidad en la consulta formateada para la y una fecha en el pasado para el campo.

La segunda plantilla, "se casa con <entidad/cónyuge>", requiere una entidad que se case con la entidad en la consulta formateada para la campo.

La tercera plantilla, "está casado", no requiere información adicional.

La cuarta plantilla, "estuvo casada con <entidad/cónyuge> desde <fecha/pasado> hasta <fecha/pasado>", requiere una entidad que se case con la entidad en la consulta formateada para la y dos fechas en el pasado para los campos <date/past>. La quinta plantilla, "estaba casada con <entidad/cónyuge>", requiere una entidad que se case con la entidad en la consulta formateada para el campo <entidad/cónyuge>. Y la sexta plantilla, "estaba casado", no requiere información adicional.

A continuación, el motor de respuesta selecciona una de las metaplantillas candidatas en función del tipo de información incluida en la información fáctica. En particular, el motor de respuesta selecciona una metaplantilla candidata en función del número de triples incluidos en la información fáctica. Se incluyen dos triples en la información fáctica. El motor de respuestas, por lo tanto, selecciona la metaplantilla de "persona" que tiene campos para dos plantillas, es decir, "<entidad><plantilla> y </plantilla><plantilla>".

Para cada triple incluido en la información fáctica, el motor de respuestas también selecciona una plantilla de las plantillas de frases candidatas. El motor de respuesta puede seleccionar la plantilla de frases que tenga el número máximo de campos con restricciones que se satisfagan con la información fáctica (por ejemplo, la plantilla más rica en datos).

El primer triple incluido en la información fáctica es <Soon-Yi Previn/esposa/1997>”. En este ejemplo, la primera plantilla de frase candidata es "ha estado casado con ya que .” Esta plantilla tiene un <ntity/spouse&g; campo y un campo <fecha/pasado>.

El primer triple tiene una entidad con una relación de cónyuge con la entidad en la consulta formateada que satisface la restricción del campo <entidad/cónyuge> y una fecha en el pasado que satisface las restricciones del campo <fecha/pasado>. Dado que el primer triple satisface todas las restricciones de los campos de la primera plantilla, el motor de respuestas selecciona la primera plantilla para el primer triple.

El segundo triple incluido en la información factual es <louise Lasser/esposa/1966/1970>.” La cuarta plantilla de frase candidata es "estuvo casada con <entidad/cónyuge> desde <fecha/pasado> hasta <fecha/pasado>", que tiene un campo <entidad/cónyuge> y dos campos <fecha/pasado>. El segundo triple en la información fáctica proporciona una entidad con una relación de cónyuge a la entidad en la consulta formateada que satisface la restricción del campo <entidad/cónyuge> y dos fechas en el pasado que satisfacen la restricciones de campo.

Dado que el segundo triple satisface todas las restricciones de los campos de la cuarta plantilla, el motor de respuesta selecciona la cuarta plantilla para el segundo triple.

El motor de respuesta selecciona la primera plantilla con campos que se pueden completar con la información factual y no realiza ningún procesamiento adicional. Alternativamente, el motor de respuesta puede procesar cada plantilla en las plantillas candidatas y seleccionar la plantilla que tenga la mayor cantidad de campos que se pueden llenar con la información factual.

Después de seleccionar las plantillas, el motor de respuesta genera una oración basada en las plantillas. Por ejemplo, el motor de respuestas puede reemplazar los campos en las plantillas seleccionadas con los datos apropiados de la información factual.

El motor de respuesta puede reemplazar los campos en la primera plantilla de frase seleccionada (es decir, "se casó con <entidad/cónyuge> desde <<fecha/pasado>") con la información del primer triple para generar la frase "se casó con Soon-Yi Previn desde 1997". Por lo tanto, el motor de respuesta genera la oración "Woody Allen se ha casado con Soon-Yi Previn desde 1997 y estuvo casado anteriormente con Louise Lasser desde 1966 hasta 1970". El motor de respuesta luego transmite una respuesta al dispositivo cliente que incluye la oración generada. La respuesta puede incluirse en una página de resultados de búsqueda que incluye la oración y otros resultados de búsqueda. La página de resultados de búsqueda también incluye un cuadro de búsqueda que muestra la consulta de búsqueda original (es decir, "¿Quién fue Woody?" Allen se casó con"). La página de resultados de la búsqueda puede ser procesada por el dispositivo del cliente. La oración también podría transmitirse como una transcripción que permite que el dispositivo del cliente genere voz, o como una señal de audio que codifica la oración para representación en el dispositivo cliente.

Un sistema que genera oraciones en respuesta a consultas fácticas

El sistema incluye un dispositivo cliente, un sistema de búsqueda, un grupo de índices y un motor de respuesta.

Un dispositivo cliente inicia una consulta con dos términos de consulta ("¿Dónde está la ciudad natal y el alma mater de Woody Allen?") en un navegador web en el dispositivo cliente.

El sistema de búsqueda recibe la consulta (p. ej., "¿Dónde está la ciudad natal y el alma mater de Woody Allen?") del dispositivo cliente. Luego, el sistema de búsqueda analiza y formatea la consulta original en un formato de <entidad/tipo/atributo> (p. ej., >woody Allen/persona/ciudad natal/universidad<) utilizando, por ejemplo, un motor de análisis de lenguaje natural adecuado.

En este ejemplo, la consulta formateada incluye un identificador de la entidad (p. ej., Woody Allen), un tipo de entidad (p. ej., persona) y dos atributos (p. ej., ciudad natal y universidad). Luego, el sistema de búsqueda envía la consulta formateada al clúster de índice.

Utilizando la consulta formateada y la información fáctica, el motor de respuesta genera una respuesta en forma de una oración o oraciones de la siguiente manera. 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 campo.

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.