2011-06-26 16 views
8

Actualmente estoy tratando de comprender frases de esta forma:Extrayendo información 'útil' de oraciones?

The problem was more with the set-top box than the television. Restarting the set-top box solved the problem.

estoy totalmente nuevo para el Procesamiento del Lenguaje Natural y comenzaron a usar el paquete NLTK de Python para conseguir mis manos sucias. Sin embargo, me pregunto si alguien podría darme una visión general de los pasos de alto nivel involucrados en lograr esto.

Lo que trato de hacer es identificar cuál era el problema así que en este caso, set-top box y si la acción que se tomó resolvió el problema, en este caso, yes porque reiniciar solucionó el problema. Así que si todas las sentencias fueron de esta forma, mi vida habría sido más fácil, sino porque es el lenguaje natural, las oraciones también podría ser de la siguiente forma:

I took a look at the car and found nothing wrong with it. However, I suspect there is something wrong with the engine

Así que en este caso, el problema era con el car. La acción tomada no resolvió el problema debido a la presencia de la palabra suspect. Y el problema potencial podría ser con el engine.

No estoy buscando una respuesta absoluta ya que sospecho que esto es muy complejo. Lo que estoy buscando es más bien una descripción general de alto nivel que me orientará en la dirección correcta. Si hay una forma más fácil/alternativa de hacerlo, también es bienvenido.

+7

Al tener un poco de experiencia con NLP/NLTK, creo que este problema está firmemente en el cuento "El tiempo vuela como una flecha, la fruta vuela como un banano" análisis semántico. Este pequeño acertijo aún no tiene ninguna solución general de la que yo tenga conocimiento. – msw

+0

@msw: Oh ... :) ¡Bien! No estoy buscando diseñar una solución general. Sería una solución muy específica del dominio. Lo que trato de entender es cómo abordar estos problemas (es decir,qué conocimiento de dominio se requiere, qué bases de datos deben compilarse, en qué debe capacitarse un clasificador, etc.) – Legend

+0

La frase de muestra es una castaña NLP antigua, lo que demuestra la inutilidad incluso de acercarse a su objetivo. Siguiendo su ejemplo, reemplace "motor" por "estéreo" y dígame cómo usted, con todas sus habilidades personales en PNL, podría desambiguar su muestra (una cosa mala) y mi modificación (una cuestión de no prestar atención). – msw

Respuesta

3

Probablemente, si las oraciones están bien formadas, experimentaría con dependency parsing (http://nltk.googlecode.com/svn/trunk/doc/api/nltk.parse.malt.MaltParser-class.html# raw_parse). Eso le da un gráfico de los constituyentes de una oración y puede decir las relaciones entre los elementos léxicos. Más adelante, puede extraer frases del resultado de un analizador de dependencias (http://nltk.googlecode.com/svn/trunk/doc/book/ch08.html#code-cfg2) que podría ayudarlo a extraer el objeto directo de una oración, o la frase verbal en una oración.

Si solo quiere obtener frases o "fragmentos" de una oración, puede probar el analizador de fragmentos (http://nltk.googlecode.com/svn/trunk/doc/api/nltk.chunk-module.html) También puede llevar a cabo el reconocimiento de entidad nombrada (http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/). Por lo general, se usa para extraer instancias de lugares, organizaciones o nombres de personas, pero también podría funcionar en su caso.

Suponiendo que resuelve el problema de extraer frases de sustantivo/verbo de una oración, puede necesitar filtrarlas para facilitar el trabajo de su experto de dominio (demasiadas frases podrían abrumar a un juez). Puede realizar un análisis de frecuencia en sus frases, eliminar las más frecuentes que no están generalmente relacionadas con el dominio del problema, o compilar una lista blanca y guardar las frases que contienen un conjunto predefinido de palabras, etc.

4

Realmente lo mejor que puede esperar es un Naive Bayesian Classifier con un conjunto de entrenamiento lo suficientemente grande (probablemente más de lo que tiene) y estar dispuesto a tolerar una tasa justa de determinaciones falsas.

Buscar el santo grial de NLP te dejará un tanto insatisfecho.

+0

"Lo mejor que puedes esperar" en la misma oración que "un clasificador bayesiano ingenuo" te otorga un -1. Existen ** muchos **, ** muchos ** modelos de aprendizaje automático más sólidos para la extracción de información. Sospecho que sería más fácil escribir un conjunto de expresiones regulares que tratar de obtener un aprendizaje débil como Naive Bayes para manejar un problema tan complejo. –

Cuestiones relacionadas