2010-11-17 60 views
2

如何使用FreqDist中的fd.items()来总结词频数量?使用FreqDist总结词频数量,python

>>> fd = FreqDist(text) 
>>> most_freq_w = fd.keys()[:10] #gives me the most 10 frequent words in the text 
>>> #here I should sum up numbers of each of these 10 freq words appear in the text 

例如,如果most_freq_w中的每个单词出现10次,结果应该是100

!!!我不需要这个数字的所有词语的文字,只是最常见的10

+1

认为(这几乎是侮辱性的简单)。或者至少向我们展示你的尝试。 – delnan 2010-11-17 17:05:06

+0

我试过的是将'fd.items'从'most_freq_w'中取出 - 但这是绝对错误的,因为结果为'0' – Gusto 2010-11-17 17:27:14

回答

4

我不熟悉nltk,但由于FreqDistdict派生,那么下面应该工作:

v = fd.values() 
v.sort() 
count = sum(v[-10:]) 
+0

对我来说工作正常! – Gusto 2010-11-17 18:00:43

+2

注意:'FreqDist'已经返回按降序排序的值,即'count = sum(fd.values()[:10])'产生与上面相同的结果。 – jfs 2012-09-01 03:50:45

0

如果FreqDist是的话,以它们的频率映射:

sum(map(fd.get, most_freq_w)) 
2

要查找的次数的单词出现在语料(你的一段文字):

raw="<your file>" 
tokens = nltk.word_tokenize(raw) 
fd = FreqDist(tokens) 
print fd['<your word here>'] 
2

它有一个漂亮的打印功能

fd.pprint() 

将做到这一点。