algorithm nlp semantics lexical-analysis

algorithm - ¿Existe un algoritmo para ayudar a detectar el "tema principal" de una oración en inglés?



nlp semantics (12)

Estoy intentando averiguar si existe un algoritmo conocido que pueda detectar el "concepto clave" de una oración.

El caso de uso es el siguiente:

  1. El usuario ingresa una oración como consulta (¿El pollo sabe a pavo?)
  2. Nuestro sistema identifica los conceptos de la oración (pollo, pavo)
  3. Y se ejecuta una búsqueda de nuestro contenido del corpus.

El área que nos falta es identificar de qué trata realmente el "tema" principal de la oración. La frase "¿El pollo sabe a pavo?" Tiene un tema principal de "pollo", porque el usuario pregunta sobre el sabor del pollo. Mientras que "pavo" es un tema de ayuda de menor importancia.

Entonces ... estoy tratando de averiguar si hay un algoritmo que me ayude a identificar el tema principal de una oración ... ¡¡Avíseme si tiene conocimiento de alguno !!!



El "concepto clave" no es un término bien definido en lingüística, pero este puede ser un punto de partida: parse la oración, encontrar el sujeto en el árbol de análisis sintáctico o la estructura de dependencia que se obtiene. (Esto no siempre funciona; por ejemplo, el tema de "¿Está lloviendo?" Es "eso", mientras que el concepto clave es probablemente "lluvia". Además, ¿cuál es el concepto clave en "Son lo mismo los espaguetis y lasaña? ? ")

Este tipo de problema (búsqueda NLP +) se trata más adecuadamente con métodos como LSA , pero ese es un tema bastante avanzado.


En realidad hice un proyecto de investigación sobre esto, gané dos concursos y estoy compitiendo en nacionales.

Hay dos pasos para el método:

  1. Analizar la oración con una gramática libre de contexto
  2. En los árboles de análisis resultantes, encuentre todos los sustantivos que solo estén subordinados a los constituyentes de tipo Frase-Sustantivo

Por ejemplo, "I ate pie" tiene 2 sustantivos: "I" y "pie". Al mirar el árbol de análisis, "pie" está dentro de una frase verbal, por lo que no puede ser un tema. "Yo", sin embargo, está solo dentro de los constituyentes similares a NP. siendo el único candidato candidato, es el sujeto. Encuentre una copia temprana de este programa en http://www.candlemind.com . Tenga en cuenta que el vocabulario está limitado a palabras singulares básicas, y no hay conjugaciones verbales, por lo que tiene "hombre" pero no "hombres", tiene "comer" pero no "comer". Además, el CFG que utilicé fue hecho a mano y limitado. Estaré actualizando este programa en breve.

De todos modos, hay limitaciones para este programa. Mi mentor señaló en su estado actual que no puede reconocer oraciones con sujetos que son NP "reales" (lo que en realidad la gramática llama PN). Por ejemplo, "que la luna ya no es un debate". El tema es en realidad "que la luna es plana". Sin embargo, el programa reconocería "luna" como sujeto. Lo arreglaré en breve.

De todos modos, esto es lo suficientemente bueno para la mayoría de las oraciones ...

Mi trabajo de investigación se puede encontrar allí también. Ve a la página 11 para leer los métodos.

Espero que esto ayude.



La mayoría de las técnicas básicas de análisis de la PNL podrán extraer los aspectos básicos de la oración, es decir, que el pollo y el pavo son un NP y están vinculados por un adjetivo "me gusta", etc. Llevándolos a un "tema" o "concepto" '' Es más dificil

Técnicas como el Análisis semántico latente y sus muchos derivados transforman esta información en un vector (algunos tienen métodos de retener en alguna parte la jerarquía / relaciones entre las partes del habla) y luego las comparan con vectores existentes, generalmente preclasificados por concepto. Consulte http://en.wikipedia.org/wiki/Latent_semantic_analysis para comenzar.

Editar Aquí hay un ejemplo de aplicación LSA con la que puedes jugar para ver si es posible que desees continuar con ella. http://lsi.research.telcordia.com/lsi/demos.html


La solución simple es etiquetar la oración con el etiquetador de parte de la oración (por ejemplo, de la biblioteca NLTK para Python) y luego encontrar coincidencias con algunos patrones de parte de la oración predefinidos en los que está claro dónde se encuentra el sujeto principal de la oración.


Las oraciones compuestas o complejas pueden tener más de un concepto clave de una oración.

Puede usar stanfordNLP o MaltParser, que puede dar la estructura de dependencia de una oración. También proporciona las partes del etiquetado de voz, incluyendo el sujeto, el verbo, el objeto, etc.

Creo que la mayoría de las veces el objeto será el concepto clave de la oración.


Para muchas oraciones más largas, es difícil decir qué es exactamente un tema y también puede haber más de uno.

Una forma de obtener ans aproximado es

1.) Primero etiqueta la oración usando openNLP, stanford Parser o cualquiera. 2.) Luego elimine todas las palabras de parada de la oración. 3.) Recoger Sustantivos (propios, singulares y plurales).

Otra forma es

1.) Chuck la frase en frases por cualquier analizador. 2.) Recoge todas las frases nominales. 3.) Elimine las frases de Sustantivo que no tengan los Sustantivos como niño. 4.) Mantenga solo los adjetivos y los sustantivos, elimine todas las palabras de las frases de sinónimos restantes.

Esto podría dar aprox. adivinación.


Por "tema principal" te refieres a lo que se denomina el tema de la oración.

El sujeto se puede identificar mediante la comprensión de una oración a través del procesamiento del lenguaje natural.

La respuesta a esta pregunta es la misma que la de ¿Cómo determinar el sujeto, el objeto y otras palabras? - Este es un problema actualmente sin resolver.


Si está dispuesto a desembolsar dinero, se supone que http://www.connexor.com/ puede realizar este tipo de análisis semántico para una amplia variedad de idiomas, incluido el inglés. Nunca he utilizado directamente su producto, por lo que no puedo comentar qué tan bien funciona.


Una opción es mirar algo como esto como un primer paso:

http://www.abisource.com/projects/link-grammar/

Pero cómo derivar el tema de estos enlaces es otro problema en sí mismo. Pero como Abiword está tratando de detectar problemas gramaticales, es posible que pueda usarlo para determinar el tema.


En el nivel más básico, una pregunta en inglés suele ser en forma de <verb> <subject> ... ? o <pronoun> <verb> <subject> ... ? . Este no es de ninguna manera un buen algoritmo, especialmente considerando que el tema puede abarcar varias palabras, pero dependiendo de qué tan sofisticada sea la solución que necesite, podría ser un punto de partida útil.

Si necesita precisión, ignore esta respuesta.