2011-04-11 18 views
5

Estoy escribiendo un código que repite un conjunto de etiquetas POS (generadas por pos_tag en NLTK) para buscar patrones de POS. Los conjuntos coincidentes de etiquetas POS se almacenan en una lista para su posterior procesamiento. Seguramente ya existe un filtro de patrón de estilo regex para una tarea como esta, pero un par de búsquedas iniciales de Google no me dieron nada.POS Pattern Filter?

¿Hay algún fragmento de código por ahí que pueda hacer mi filtrado de patrón POS para mí?

Gracias a Dave,

EDIT: Solución completa (usando RegexParser, y donde los mensajes son cualquier cadena)

text = nltk.word_tokenize(message) 
tags = nltk.pos_tag(text) 
grammar = r""" 
    RULE_1: {<JJ>+<NNP>*<NN>*} 
    """ 
chunker = nltk.RegexpParser(grammar) 
chunked = chunker.parse(tags) 
def filter(tree): 
    return (tree.node == "RULE_1") 
for s in chunked.subtrees(filter): 
    print s 

Echa un vistazo a http://nltk.googlecode.com/svn/trunk/doc/book/ch07.html y http://www.regular-expressions.info/reference.html para más información sobre la creación de las reglas.

Respuesta

3

Creo que estás buscando RegexpChunkParser.

+1

Enlaces más recientes que probablemente sean útiles para otra persona: [NLTK book - CH7 - Chunking] (http://www.nltk.org/book/ch07.html) y [NLTK HowTo - on Chunking] (http: //www.nltk.org/howto/chunk.html). – zEro