NLTK - 没有名为语料库的模块

时间:2014-07-06 02:38:16

标签: python nltk importerror

使用PIP安装NLTK和NLTK-DATA后,我运行 python 然后我从nltk.corpus import cmudict 键入并且它可以正常运行。 但是当我写这样的剧本时:

from nltk.corpus import cmudict

d = cmudict.dict()

def nsyl(word):
    return [len(list(y for y in x if y[-1].isdigit())) for x in d[word.lower()]]

print nsyl("hello")

我有以下错误:

Traceback (most recent call last):
File "nltk.py", line 1, in <module>
from nltk.corpus import cmudict
File "nltk.py", line 1, in <module>
from nltk.corpus import cmudict
ImportError: No module named corpus

我该如何解决这个问题?

提前致谢

2 个答案:

答案 0 :(得分:7)

从你的堆栈跟踪:File "nltk.py", line 1, in <module>,你已经调用了你的文件nltk.py.当python搜索模块时,它首先查看当前目录,然后你有“nltk.py”。它会将其导入为nltk,并且由于您的代码未定义语料库,因此无法找到nltk.corpus

要解决此问题,您应该将文件重命名为其他内容,例如nltkexperience.py。还要确保从目录中删除“nltk.pyc”(如果存在),因为这也将被加载(它是代码的字节编译版本)。在那之后,它应该工作正常。

答案 1 :(得分:1)

正如其他人所指出的,这似乎是版本不匹配的情况。如果您安装了多个版本的Python,请确保安装NLTK的版本是运行脚本时使用的版本。

作为一个例子,我安装了Python 2.7,Python 3.3和Anaconda Python(2.7)。我的shell默认为Anaconda(以及它的pip,例如)。因此,当我通过pip安装并在命令行上运行它时,它可以工作。与此同时,我的Vim被编译为使用系统的Python,并没有看到Anaconda的安装/库。因此,如果从Vim内部运行Python,我将收到一个错误,我找不到我安装的库。

希望这有帮助。