(找不到)python countable属性most_common()

时间:2014-01-02 06:05:20

标签: python python-2.7 python-3.x nltk

新手在这里。我正在通过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在我的虚拟机中工作)。我会继续搜索,但非常感谢您的意见。这感觉很基本,但我正在学习,至少现在不能自己解决。 再次,非常感谢。

2 个答案:

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

它应该有用。