使用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
我该如何解决这个问题?
提前致谢
答案 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,我将收到一个错误,我找不到我安装的库。
希望这有帮助。