在nltk书中有一个问题 "使用state_union语料库阅读器阅读国情咨文地址的文本。计算每个文档中男性,女性和人的出现次数。随着时间的推移,这些单词的用法发生了什么变化?"
我以为我可以使用像state_union这样的函数(' 1945-Truman.txt')。count(' men') 然而,在这个国家联盟的corpa中有超过60个文本,我觉得必须有一种更简单的方法来查看每个单词的计数,而不是为每个文本反复重复这个功能。
答案 0 :(得分:3)
您可以使用语料库中的.words()
函数返回字符串列表(即代币/单词):
>>> from nltk.corpus import brown
>>> brown.words()
[u'The', u'Fulton', u'County', u'Grand', u'Jury', ...]
然后使用Counter()
对象计算实例,请参阅https://docs.python.org/2/library/collections.html#collections.Counter:
>>> wordcounts = Counter(brown.words())
但请注意,Counter是区分大小写的,请参阅:
>>> from nltk.corpus import brown
>>> from collections import Counter
>>> brown.words()
[u'The', u'Fulton', u'County', u'Grand', u'Jury', ...]
>>> wordcounts = Counter(brown.words())
>>> wordcounts['the']
62713
>>> wordcounts['The']
7258
>>> wordcounts_lower = Counter(i.lower() for i in brown.words())
>>> wordcounts_lower['The']
0
>>> wordcounts_lower['the']
69971