nltk.word_tokenize() giving AttributeError: 'module' object has no attribute 'defaultdict'

nltk.word_tokenize() giving AttributeError: 'module' object has no attribute 'defaultdict'

我是nltk的新手。 我正在尝试一些基础知识。

import nltk
nltk.word_tokenize("Tokenize me")

给我以下错误

Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
nltk.word_tokenize("hi im no onee")
File "C:\Python27\lib\site-packages\nltk\tokenize\__init__.py", line 101, in word_tokenize
return [token for sent in sent_tokenize(text, language)
File "C:\Python27\lib\site-packages\nltk\tokenize\__init__.py", line 85, in sent_tokenize
tokenizer = load('tokenizers/punkt/{0}.pickle'.format(language))
File "C:\Python27\lib\site-packages\nltk\data.py", line 786, in load
resource_val = pickle.load(opened_resource)
AttributeError: 'module' object has no attribute 'defaultdict'

请有人帮忙。请告诉我如何修复此错误。

我刚在我的系统上检查过。

修复:

>> import nltk
>> nltk.download('all')

然后一切正常。

>> import nltk
>> nltk.word_tokenize("Tokenize me")
['Tokenize', 'me']

后来我发现我用的是回溯的nltk数据。我一更新数据,程序就开始正常工作了。

您需要更新您的 nltk 版本。如果您使用的是 anaconda,请在终端中执行以下操作:

>> conda update nltk

它将更新nltk。然后重启 ipython 应该可以了!

我有同样的错误,然后我意识到我已经将文件保存为 tokenize.py 这就是为什么当我用另一个名称更改 python 文件的名称时出现此错误的原因它工作正常。希望这会有所帮助。