NLTK过滤特定词性

3

这应该很简单,但我不知道为什么会错。我有以下代码:

import nltk

f=open('...\\t.txt','rU')
raw=f.read()
tokens = nltk.word_tokenize(raw)
print nltk.pos_tag(tokens)

例如返回:

"[('processes', 'NNS'), ('a', 'DT'), ('sequence', 'NN'), ('of', 'IN'), ('words', 'NNS')]

我想知道如何只收集所有'NN'或者所有' DT 'AND' IN ',而不是字符串的每个成员。

提前谢谢。

1个回答

5

您可以使用列表推导式仅提取所需标签,例如:

>>> tags = nltk.pos_tag(tokens)
>>> dt_tags = [t for t in tags if t[1] == "DT"]
>>> dt_tags
[('a', 'DT')]

tags2 = [t for t in nltk.pos_tag(tokens) if t[1] == "NNS"] # 如果我想查找DTs和NNS,那么这个完美的代码只需要复制即可。 - saph_top
是的,你甚至可以为每种类型制作一个带有标签的字典:all_tags = {tag: [t for t in tags if t[1] == tag] for tag in ["DT", "NNS", ...]} - jonrsharpe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接