Extraer información de la oración


11

Estoy creando un chatbot simple. Quiero obtener la información de la respuesta del usuario. Un ejemplo de escenario:

Bot : Hi, what is your name?
User: My name is Edwin.

Deseo extraer el nombre Edwin de la oración. Sin embargo, el usuario puede responder de diferentes maneras, como

User: Edwin is my name.
User: I am Edwin.
User: Edwin. 

Intenté confiar en las relaciones de dependencia entre palabras, pero el resultado no funciona bien.

¿Alguna idea de qué técnica podría utilizar para abordar este problema?

[ACTUALIZADO]

Probé con reconocimiento de entidad con nombre junto con parte de etiquetador y analizador de voz. Descubrí que la mayoría de los modelos están entrenados de tal manera que el primer carácter de la entidad para el nombre de la persona o el nombre propio debe estar en mayúscula. Esto puede ser cierto para documentos normales, pero es irrelevante para un chatbot. P.ej

User: my name is edwin.

La mayoría de los NER no pudieron reconocer esto.


Esto explica cómo se construyen los bots de chat modernos, pero no lo llamaría simple. Puede obtener más información buscando "respuesta a preguntas".
Emre

Me gusta cómo las personas que hacen preguntas y reciben respuestas marcan una respuesta como aceptable: P
chewpakabra

Respuestas:


7

Posiblemente pueda usar una combinación de Reconocimiento de entidades con nombre y Análisis sintáctico, mientras que la palabra Edwin ciertamente está apuntalando, imagine una situación en la que el nombre es Edward Philip Martel . NER detecta cada palabra como entidades separadas (por lo tanto, 3 entidades diferentes), por lo tanto, de todos modos tendrá que unirlas según alguna lógica. Además, en el caso de que haya múltiples nombres presentes, puede ser más difícil desambiguar (por ejemplo, John y Ramsey cenaron en Winterfell ).

Aquí es donde el análisis de la sintaxis de las oraciones también ayudaría (suponiendo que el usuario final ingrese una oración relativamente coherente y adecuada, si se usa argot y formas cortas de texto, incluso el PNL de Stanford puede ayudar hasta cierto punto solamente).

Una forma de aprovechar el análisis / análisis sintáctico y NER es en los siguientes ejemplos:

 1. User: Edwin is my name.
 2. User: I am Edwin.
 3. User: My name is Edwin.

En cada uno de los casos (como también es el caso genérico), el nombre de la entidad (nombre propio / nombre) se asocia muy cerca de un verbo. Por lo tanto, si primero analiza la oración para determinar los verbos y luego aplica NER a las palabras circundantes (+/- 1 o 2), puede tener una forma relativamente decente de resolver el problema. Esta solución dependerá principalmente de las reglas de sintaxis que cree para identificar NER, así como la ventana alrededor de los verbos.


2
Posiblemente implementará un 'autómata finito no determinista', donde cada oración es una respuesta que acepta un patrón. Algunas gramáticas se implementan en algo como esto. (PNL / Gramática). Si necesita cómo hacer esto, mire el marco stanfordnlp.github.io/CoreNLP
Intruso el


4

Esto se puede hacer fácilmente con CRF s. Puede usar la codificación BIO para etiquetar su oración. Luego páselo a los CRF. Solo tiene que crear algunas oraciones etiquetadas para fines de capacitación de la siguiente manera,

 I am Edwin.
 O O  B-NAME

 You can call me Alfred
 O   O    O    O B-NAME

 My name is  Edwin   thomas
 O  O     O  B-NAME  I-NAME

CRFsuite y CRF ++ son algunas de las buenas implementaciones. CRFsuite tiene un contenedor de python llamado pycrfsuite , que es bastante fácil de implementar. Consulte este cuaderno de ipython o este fragmento de código en github para la implementación de extremo a extremo de NER.

verifique este proyecto de bot de chat de código abierto en github con NER y clasificación de intención escrita en python. Tienen una interfaz de usuario de entrenamiento fácil de usar donde puedes entrenar a tu bot para extraer información de las oraciones.


0

Para realizar tales tareas con alta precisión, le sugiero que cree un modelo LSTM con incrustaciones de palabras con la ayuda de word2vec. Los LSTM pueden ayudar a recuperar información de la oración, así como a predecir el siguiente carácter o palabra dado que un conjunto de palabras ya está presente en la oración.

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.