首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Doc2Vec模型Python3兼容性

Doc2Vec模型Python3兼容性
EN

Stack Overflow用户
提问于 2016-07-20 22:31:00
回答 1查看 357关注 0票数 3

我用Python2训练了一个doc2vec模型,我想在Python3中使用它。

当我尝试在Python 3中加载它时,我得到:

代码语言:javascript
复制
Doc2Vec.load('my_doc2vec.pkl')

UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 0: ordinal not in range(128)

这似乎与一个泡菜兼容性问题有关,我试图通过执行以下操作来解决这个问题:

代码语言:javascript
复制
with open('my_doc2vec.pkl', 'rb') as inf:
    data = pickle.load(inf)
data.save('my_doc2vec_python3.pkl')

Gensim还保存了我重命名的其他文件,以便在调用时可以找到它们

代码语言:javascript
复制
de = Doc2Vec.load('my_doc2vec_python3.pkl')

使用UnicodeDecodeError时,load()不会失败,但在推理之后会提供无意义的结果。

我不能在Python3中使用Gensim轻松地重新训练它,因为我使用这个模型从它创建派生数据,所以我必须重新运行一个又长又复杂的管道。

如何使doc2vec模型与Python3兼容?

EN

回答 1

Stack Overflow用户

发布于 2016-07-21 00:33:27

在回答我自己的问题时,这个answer对我很有效。

下面是一些更详细的步骤:

  1. 下载gensim源码,例如从gensim/utils.py中的repo
  2. 中克隆,编辑unpickle方法,添加编码参数:

encoding='latin1')

  • using _pickle.loads(f.read() ),return Python3和修改后的gensim,加载模型:

de = Doc2Vec.load('my_doc2vec.pkl')

  • save it:

de.save('my_doc2vec_python3.pkl')

这个模型现在应该可以在Python3中使用未修改的gensim加载。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38484117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档