1

简短信息:我正在运行 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转储到非二进制文件时会出现这种情况,但在这种情况下,我试图读取已经转储的泡菜文件。有谁知道如何解决错误?
上述行中的变量file只是一个string包含少量文本的变量。

4

1 回答 1

0

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

于 2013-08-14T10:57:23.863 回答