nltk.word_tokenize()给出了AttributeError:' module'对象没有属性' defaultdict'

时间:2015-07-08 14:39:44

标签: nltk attributeerror 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'

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

4 个答案:

答案 0 :(得分:8)

我刚刚在我的系统上查看过它。

修正:

$PATH

然后一切正常。

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

答案 1 :(得分:5)

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

答案 2 :(得分:1)

后来我发现我使用的是过时的nltk数据。一旦更新数据,程序就开始正常工作。

答案 3 :(得分:1)

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

    require 'socket'

    hostname = "localhost"
    port = 2000

    s = TCPSocket.open(hostname, port)

    while line = s.gets   # Reads lines from socket
      puts line.chop      # And print with platform line terminator
    end

    s.close               # Close socket when done

它会更新nltk。然后重启ipython,它应该可以工作!