NLTK tokenizer ImportError:没有名为copy_reg的模块

时间:2013-03-20 08:12:56

标签: python-3.x nltk importerror

简短信息:我正在运行python 3.0并安装了NLTK(从3.3切换回来,因为NLTK不支持3.3这很糟糕,因为我拥有的所有其他扩展都是3.3) 在尝试提取命名实体时,我收到此错误:

File "D:\UM\Programming\Thesis\Thesis\test.py", line 10, in <module>
   sentences = nltk.sent_tokenize(file)
File "C:\Python30\Lib\site-packages\nltk\tokenize\__init__.py", line 75, in sent_tokenize
   tokenizer = load('tokenizers/punkt/english.pickle')
File "C:\Python30\Lib\site-packages\nltk\data.py", line 630, in load
   resource_val = pickle.load(opened_resource)
File "C:\Python30\lib\pickle.py", line 1323, in load
   return Unpickler(file, encoding=encoding, errors=errors).load()
ImportError: No module named copy_reg

我在其他地方读到了ImportError在转储到非二进制文件时出现,但在这种情况下我正在尝试读取已经被转储的pickle文件。有谁知道如何解决错误?
上述行中的变量file只是包含少量文字的string

1 个答案:

答案 0 :(得分:0)

根据这个posting nltk 3.x仍然存在一个主要问题:2.x中nltk中的模型是使用python 2.x保存的。使用python 3中新的unicode感知io系统,模型必须重新训练并保存在python 3可读的文件中。发布还有一个链接到新训练模型的分支,但我还没有尝试过。所以基本上由unpickle创建的nltk中的错误消息是由python 2和3之间不兼容的pickle版本引起的。 编辑:实际上这是一个posting为什么提供的修复可能无法正常工作。