Я пишу некоторый код, который повторяет набор POS-тегов (сгенерированных pos_tag в NLTK) для поиска POS-шаблонов. Соответствующие наборы POS-тегов сохраняются в списке для последующей обработки. Конечно, для такой задачи уже существует фильтр шаблонов в стиле регулярных выражений, но пара начальных поисков в Google ничего мне не дала.
Существуют ли какие-нибудь фрагменты кода, которые могут выполнить мою POS-фильтрацию для меня?
Спасибо,
Dave
РЕДАКТИРОВАТЬ: полное решение (с использованием RegexParser и где сообщения - любая строка)
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
Проверьте http://nltk.googlecode.com/svn/trunk/doc/book/ch07.html и http://www.regular -expressions.info / reference.html , чтобы узнать больше о создании правил.