新手在这里。我正在通过nltk书和另一本Python介绍书。 我之前在nltk书中遇到过most_common(),虽然我当时无法工作也找不到解决方案,但是我创建了一个小功能,可以完成特定练习中的技巧并继续使用。 现在我再次需要它,但我认为我不能轻易绕过它(练习是关于特定文本中最常见的单词长度),而且我知道我会在后面的例子中再次找到它,我希望能够效仿,因为正如我所说,我是一个新手。
理论上,我应该能够做到这一点:
fdist = FreqDist(len(w) for w in text1)
fdist.most_common()
[(3, 50223), (1, 47933), (4, 42345), (2, 38513) ...
然而,Python告诉我:
AttributeError: 'FreqDist' object has no attribute 'most_common'
我发现most_common()是计数器对象(http://docs.python.org/2/library/collections.html)和(http://docs.python.org/dev/library/collections#collections.Counter)的属性。我知道也许我应该导入一些东西(一个模块?),但是我尝试导入的东西不起作用(没有定义或不存在的消息)或者不包含它 - 我试过
import collections
没有错误,但是当我输入dir(collections)或dir( builtins )时,没有列出most_common()。
我安装了2.7和3.0(大部分时间都是Windows,偶尔使用ubuntu在我的虚拟机中工作)。我会继续搜索,但非常感谢您的意见。这感觉很基本,但我正在学习,至少现在不能自己解决。 再次,非常感谢。
答案 0 :(得分:6)
nltk.probability.FreqDist
不是collections.Counter
。
使用items
方法按排序顺序获取项目列表(最常见的是)。
>>> from nltk.probability import FreqDist
>>> dist = FreqDist([1, 2, 1, 2, 1])
>>> dist.items()
[(1, 3), (2, 2)]
或者只使用collections.Counter
:
>>> from collections import Counter
>>> c = Counter([1, 2, 1, 2, 1])
>>> c.most_common()
[(1, 3), (2, 2)]
答案 1 :(得分:0)
某些旧版本的nltk没有most_common
模块。这可以通过打印dir(fdist)
来验证。
如果找不到,只需使用pip升级nltk版本,如下所示:
sudo pip install -U nltk
它应该有用。