2010-08-08 10 views
11

Estoy buscando un modo dado a las frases verbales de conteo de texto en inglés en tiempo pasado, presente y futuro. Por ahora estoy usando NLTK, hago un etiquetado POS (Part-Of-Speech), y luego cuento decir 'VBD' para pasar los tiempos verbales. Sin embargo, esto no es lo suficientemente preciso, así que supongo que tengo que ir más allá y usar fragmentación, luego analizar los fragmentos VP para ver los patrones de tiempo específicos. ¿Hay algo existente que haga eso? ¿Alguna lectura adicional que pueda ser útil? El NLTK book se enfoca principalmente en NP-chunks, y puedo encontrar muy poca información sobre VP-chunks.Detecta los tiempos verbales en inglés usando NLTK

+0

Hay un error en su lógica. Si un chunker puede detectar NP, entonces debe poder detectar VP. –

+0

Por supuesto, pero estoy más interesado en más análisis de VP: cómo hacer una diferencia entre los diferentes tiempos verbales. –

Respuesta

9

La respuesta exacta depende del chunker que pretenda usar, pero las listas de comprensión le llevarán un largo camino. Esto te da la cantidad de frases verbales que usan un chunker inexistente.

len([phrase for phrase in nltk.Chunker(sentence) if phrase[1] == 'VP']) 

Puede adoptar un enfoque más preciso para detectar números de tiempos verbales.

+0

Gracias por el puntero, eso es lo que voy a usar; mi siguiente pregunta es si existe algo para detectar patrones de tensión. Para cada VP me gustaría saber en qué tiempo está. –

+2

De hecho, logré resolver mi problema con este enfoque, etiquetando esto como respuesta aceptada. El siguiente artículo es realmente útil: http://streamhacker.com/2009/02/23/chunk-extraction-with-nltk/ –

+0

Hola Michael, ¡es genial escuchar que las cosas te funcionan bien! –

1

Puede hacerlo con Berkeley Parser o Stanford Parser. Pero no sé si hay una interfaz de Python disponible para cualquiera.

+0

Muchas gracias, esta podría ser una opción; sin embargo, como ya estoy usando NLTK en gran medida, podría ser mucho trabajo cambiar. Sin embargo, se verá. –

+1

Hay una interfaz para el analizador de Stanford en el NLTK. Puede usarlo de la siguiente manera: 'tagger = nltk.tag.stanford.POSTagger ('models/german-fast.tagger', 'stanford-postagger.jar')' Puede que tenga que codificar las cadenas para UTF-8 primero (al menos para el modelo alemán). –

+2

Berkeley fue deletreado incorrectamente arriba. No puedo sugerir soluciones de tipografía para la respuesta. – Streeter

Cuestiones relacionadas