代码之家  ›  专栏  ›  技术社区  ›  Nayantara Jeyaraj

在“compat.py”中找不到引用“counter”

  •  0
  • Nayantara Jeyaraj  · 技术社区  · 7 年前

    我试着运行nltk的bleu分数计算模块 here . 但我得到一个错误为以下导入。

    from nltk.compat import Counter
    

    我尝试了pip安装计数器,但它已成功安装。我在这个项目中使用了同样的翻译。但这仍然显示为一个错误。

    在“compat.py”中找不到引用“counter”

    我正在使用Python3.5并在PyCharm中工作。

    enter image description here

    如有任何建议,我们将不胜感激。

    3 回复  |  直到 7 年前
        1
  •  2
  •   dopstar    7 年前

    关于你的 nltk 版本,下面的文档已过期。

    There used to be Counter class 是从 collections 里面 compat.py 以及 nltk.align.bleu 模块正在导入它,好像它是在内部定义的 Cop.Py

    现在已经没有了 nltk.align.bleu命令 但是 nltk.translate.bleu 你可能想用 up-to-date documentation 也。

    为了完整起见, pip install Counter 将安装 计数器 third party library (然后可以作为 counter.Counter )它只支持python2,现在应该只在python2.6和更早版本上使用(如果还有人使用这些)。它已经被纳入 standard library 作为 collections.Counter 从Python2.7开始。

        2
  •  0
  •   alvas    7 年前

    DR

    你的nltk版本已经过时了。请用升级。

    pip install -U nltk
    

    当前版本应该是3.3。3.0版太老了。

        3
  •  0
  •   Nayantara Jeyaraj    7 年前

    尽管我的nltk版本是最新的,而且我使用的是python 3.5,但我仍然得到以下错误。

    在“compat.py”中找不到引用“counter”

    它不是一个 问题 compat.py 归档而不是 无法解析计数器对象 . 自从 Counter 是用于计算散列对象的字典子类,我尝试使用python的 collections 模块。这些是高性能容器数据类型。可从Python2.7获得。

    所以我简单地修改了import语句,如下所示。

    from collections import Counter
    

    再多一点 pointers on Counters :这是一个无序集合,其中元素存储为字典键,其计数存储为字典值。允许计数为任何整数值,包括零计数或负计数。counter类类似于其他语言中的bags或multi-set。