¿Cómo funcionan los "reconocedores de intenciones"?


11

Alexa de Amazon , Mix de Nuance y Wit.ai de Facebook usan un sistema similar para especificar cómo convertir un comando de texto en una intención, es decir, algo que una computadora entendería. No estoy seguro de cuál es el nombre "oficial" para esto, pero lo llamo "reconocimiento de intenciones". Básicamente, una forma de pasar de "por favor configure mis luces a 50% de brillo" a lights.setBrightness(0.50).

La forma en que se especifican es haciendo que el desarrollador proporcione una lista de "enunciados de muestra" que están asociados con una intención, y opcionalmente etiquetados con ubicaciones de "entidades" (básicamente parámetros). Aquí hay un ejemplo de Wit.ai:

ejemplo wit.ai

Mi pregunta es: ¿cómo funcionan estos sistemas? Como todos son muy similares, supongo que hay un trabajo fundamental que todos utilizan. ¿Alguien sabe qué es esto?

Curiosamente Houndify utiliza un sistema diferente que es más como expresiones regulares: ["please"] . ("activate" | "enable" | "switch on" | "turn on") . [("the" | "my")] . ("lights" | "lighting") . ["please"]. Supongo que está integrado en la búsqueda de haz de su sistema de reconocimiento de voz, mientras que Alexa, Wit.ai y Mix parecen tener sistemas separados de Voz-> Texto y Texto-> Intención.

Editar: Encontré un punto de partida: un mecanismo para la interacción humano - robot a través de comandos de voz informales . Utiliza algo llamado Análisis semántico latente para comparar enunciados. Voy a leer sobre eso. Al menos me ha dado un punto de partida en la red de citas.

Edición 2: LSA está esencialmente comparando las palabras utilizadas (Bolsa de palabras) en cada párrafo del texto. No veo cómo puede funcionar muy bien para este caso, ya que pierde totalmente el orden de las palabras. Aunque tal vez el orden de las palabras no importa mucho para este tipo de comandos.

Edición 3: Tema oculto Los modelos de Markov parecen ser interesantes.


Esta publicación explica la clasificación de la intención en detalles: mrbot.ai/blog/natural-language-processing/…
znat

Esto parece utilizar el método de "bolsa de palabras" que mencioné en mi pregunta. Básicamente solo suma los vectores de palabras en la oración. Sin embargo, no puede ser así como funciona. Las interfaces de Wit y Nuance muestran que reconocen entidades que la bolsa de palabras no puede hacer fácilmente. Además, la bolsa de palabras pierde todo orden, por lo que algo como "Establecer una alarma para las 10 y 5 pasadas" no se distinguirá de "Establecer una alarma para las 10 y 5 pasadas 10". Debe haber algo más sucediendo.
Timmmm

La extracción de entidades es otro problema donde la secuencia importa. Si tiene muchos datos, un Rnn funcionará, en conjuntos de datos más pequeños, que son frecuentes en chatbots, los campos aleatorios condicionales funcionan muy bien
znat

Ok, entonces ... Estoy buscando una respuesta más detallada que "un RNN funcionará". La mayoría de los sistemas modernos de aprendizaje de secuencias utilizan RNN, por lo que parece un hecho.
Timmmm

las intenciones tratan sobre el significado general de las oraciones (promedio de vectores) y las entidades tratan sobre el aprendizaje del contexto (palabras circundantes) en el que aparecen. Rnn o CRF son solo algoritmos que se pueden usar porque aprenden de las secuencias. Si quieres aprender en detalle, mira el código fuente de Rasa
znat

Respuestas:


4

Aunque no responda directamente a su pregunta, puede estar interesado en el campo de la respuesta automática a preguntas . Para responder preguntas de texto en lenguaje natural, primero deben entenderse, lo que se superpone con su problema.

Un buen recurso es el curso de Jurafsky y Manning . En particular, las secciones sobre semántica y respuesta de preguntas pueden ayudarlo con lo que está buscando. Hay videos de conferencias disponibles en YouTube aquí .


La primera parte de tu respuesta me parece muy divertida pero informativa.
Diego

Quizás esto sería mejor como comentario ya que, como admites, no responde la pregunta.
kbrose

2

Esta publicación tiene un enfoque. Básicamente usan una bolsa de palabras: convierten las palabras en vectores dispersos y luego las suman.

Parece funcionar bastante bien, pero una falla importante es que la respuesta es independiente del orden de las palabras, por lo que no puede hacer consultas como "¿Cuántos kilos en una libra?" A menos que las ponga en un caso especial.

Sin embargo, escribí un mensaje de texto con Alexa y es bastante insensible a los cambios en el orden de las palabras, por lo que tal vez usan algo similar.


Curioso: ¿qué ventaja tienen los vectores dispersos sobre los ingenuos bayesianos? Ambos para mí resuelven problemas linealmente separables con la ingenua suposición de la bolsa de palabras
Angad
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.