我正在尝试从特定标签的语料库中返回出现次数最多的值。我可以让标签和单词本身返回正常但是我无法让计数在输出中返回。
import itertools
import collections
import nltk
from nltk.corpus import brown
words = brown.words()
def findtags(tag_prefix, tagged_text):
cfd = nltk.ConditionalFreqDist((tag, word) for (word, tag) in tagged_text
if tag.startswith(tag_prefix))
return dict((tag, cfd[tag].keys()[:5]) for tag in cfd.conditions())
tagdictNNS = findtags('NNS', nltk.corpus.brown.tagged_words())
这将返回以下罚款
for tag in sorted(tagdictNNS):
print tag, tagdictNNS[tag]
我已经设法使用以下方法返回每个基于 NN 的单词的计数:
pluralLists = tagdictNNS.values()
pluralList = list(itertools.chain(*pluralLists))
for s in pluralList:
sincident = words.count(s)
print s
print sincident
这将返回一切。
有没有更好的方法将事件插入 a dict tagdictNN[tag]
?
编辑1:
pluralLists = tagdictNNS.values()[:5]
pluralList = list(itertools.chain(*pluralLists))
从 for s 循环中按大小顺序返回它们。虽然仍然不是正确的方法。
编辑 2:更新了字典,以便他们实际搜索 NNS 复数。