我正在编写一些代码来迭代一组POS标签(由NLTK中的pos_tag生成)来搜索POS模式。匹配的POS标签集存储在列表中以供稍后处理。当然,像这样的任务已经存在正则表达式样式过滤器,但是几个初始谷歌搜索没有给我任何东西。
有没有可以为我做POS模式过滤的代码片段?
谢谢, 戴夫
编辑:完整的解决方案(使用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。