2011-09-29 16 views
6

Estoy tratando de escribir un algoritmo (que supongo que se basará en las técnicas de procesamiento del lenguaje natural) para 'completar' una lista de términos de búsqueda. Probablemente haya un nombre para este tipo de cosas que desconozco. ¿Cómo se llama este tipo de problema y qué tipo de algoritmo me dará el siguiente comportamiento?Algoritmo NLP para 'completar' los términos de búsqueda

de entrada:

docs = [ 
    "I bought a ticket to the Dolphin Watching cruise", 
    "I enjoyed the Dolphin Watching tour", 
    "The Miami Dolphins lost again!", 
    "It was good going to that Miami Dolphins game" 
    ], 
    search_term = "Dolphin" 

Salida:

["Dolphin Watching", "Miami Dolphins"] 

Debe básicamente darse cuenta de que si "Dolphin" aparece en absoluto, es prácticamente siempre, ya sea en los Bigramas "Delfines" o "Miami Delfines ". Soluciones en Python preferidas.

+0

¿Cómo sabes que Dolphin es parte de los bigrams "Dolphin Watching" o "Miami Dolphins?" ¿Es porque ambas palabras en cada bramram están en mayúscula? ¿O tienes otra lista que contiene los bigrams deseados? –

+0

@RobertHarvey: Un buen algoritmo NLP debería ser capaz de analizar [Miami Dolphins] como un término. Lo mismo con [Dolphin Watching]. Es más fácil cuando lo piensas como si hubieras formado cada una de las frases como una pregunta. P: "¿Qué recorrido disfrutaste viendo?" A: [La gira [Dolphin Watching]], Q: ¿Quién perdió el juego? A: [The [Miami Dolphins]]. Tienes que analizarlo en un árbol para ver qué pertenece a qué. No es un problema fácil de ninguna manera ... pero puede obtener resultados algo precisos. – mpen

+0

@RobertHarvey Tengo una lista de palabras específicas, así que sé que Dolphin tiene que estar allí en alguna parte. – Trindaz

Respuesta

6

Básicamente debe darse cuenta de que si aparece "Dolphin", es prácticamente siempre en los bigrams "Dolphin Watching" o "Miami Dolphins".

suena como usted desea determinar el collocations que Dolphin se produce en. Hay varios métodos para encontrar la función de proximidad, es el más popular para calcular point-wise mutual information (PMI) entre los términos de su corpus, a continuación, seleccione los términos con el PMI más alto para Dolphin. Puede recordar el PMI del sentiment analysis algorithm que sugerí anteriormente.

En NLTK se incluye una implementación de Python de varios métodos de localización de hallazgos como nltk.collocations. El área está cubierta con cierta profundidad en Manning and Schütze's FSNLP (1999, pero sigue vigente para este tema).

0

Usé el Natural Language Toolkit en mi clase NLP en la universidad con un éxito decente. Creo que tiene algunos etiquetadores que pueden ayudarte a determinar cuáles son los sustantivos y ayudarte a analizarlo en un árbol. No recuerdo mucho, pero comenzaría allí.

Cuestiones relacionadas