nltk函数计算某些单词的出现次数

时间:2014-03-31 13:31:16

标签: nltk corpus

在nltk书中有一个问题 "使用state_union语料库阅读器阅读国情咨文地址的文本。计算每个文档中男性,女性和人的出现次数。随着时间的推移,这些单词的用法发生了什么变化?"

我以为我可以使用像state_union这样的函数(' 1945-Truman.txt')。count(' men') 然而,在这个国家联盟的corpa中有超过60个文本,我觉得必须有一种更简单的方法来查看每个单词的计数,而不是为每个文本反复重复这个功能。

1 个答案:

答案 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