Extracción de nombres de la fase nominal en PNL

¿Podría alguien decirme cómo extraer solo los sustantivos de la siguiente salida:

He simbolizado y analizado la cadena “Dame la reseña de la película” basada en una gramática determinada mediante el siguiente procedimiento:

sent=nltk.word_tokenize(msg) parser=nltk.ChartParser(grammar) trees=parser.nbest_parse(sent) for tree in trees: print tree tokens=find_all_NP(tree) tokens1=nltk.word_tokenize(tokens[0]) print tokens1 

y obtuvo la siguiente salida:

 >>> (S (VP (V Give) (Det me)) (NP (Det the) (N review) (PP (P of) (N movie)))) (S (VP (V Give) (Det me)) (NP (Det the) (N review) (NP (PP (P of) (N movie))))) ['the', 'review', 'of', 'movie'] >>> 

Ahora me gustaría obtener solamente los sustantivos. ¿Cómo puedo hacer eso?

No es necesario utilizar un analizador completo para obtener sustantivos. Simplemente puede utilizar un etiquetador. Una función que puede usar es nltk.tag.pos_tag (). Esto devolverá una lista de tuplas con la palabra y parte del discurso. Podrá iterar sobre las tuplas y encontrar palabras etiquetadas con ‘NN’ o ‘NNS’ para sustantivo o plural.

NLTK tiene una forma de documentar cómo usar sus etiquetadores. Se puede encontrar aquí: https://nltk.googlecode.com/svn/trunk/doc/howto/tag.html y aquí hay un enlace al capítulo en el libro NLTK sobre el uso de taggers: https: //nltk.googlecode .com / svn / trunk / doc / book / ch05.html

Hay muchos ejemplos de código en cada uno de esos lugares.