gpt4 book ai didi

python - 加载在 Python 2 中计算的 gensim Word2Vec,在 Python 3 中

转载 作者:太空宇宙 更新时间:2023-11-04 03:24:13 27 4
gpt4 key购买 nike

我有一个用 Python 2 计算的 gensim Word2Vec 模型:

from gensim.models import Word2Vec
from gensim.models.word2vec import LineSentence

model = Word2Vec(LineSentence('enwiki.txt'), size=100,
window=5, min_count=5, workers=15)
model.save('w2v.model')

但是,我需要在 Python 3 中使用它。如果我尝试加载它,

import gensim
from gensim.models import Word2Vec
model = Word2Vec.load('w2v.model')

它会导致错误:

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

我想问题出在 Python2 和 Python3 之间的编码差异上。此外,gensim 似乎正在使用 pickle 来保存/加载模型。

有没有办法设置编码/pickle 选项以便模型正确加载?或者可能使用一些外部工具来转换模型文件?

在 Python 3 中重新计算它不是一种选择:它需要太多时间。

最佳答案

这确实看起来像是某个地方的错误,正如 memoselyk 所指出的,并且可以通过对 this 的评论中描述的方式进行修复。回答。

所以你必须添加encoding='latin1'gensim.utils.unpickle中对_pickle.loads的调用,加载Python 3 中的模型,然后保存它,现在您可以恢复此修复并使用 Python 3 在未修改的 gensim 中加载此新模型。

关于python - 加载在 Python 2 中计算的 gensim Word2Vec,在 Python 3 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com