将GloVe向量导入gensim。 UnicodeDecodeError:'utf-8'编解码器无法解码位置0的字节0xe6:无效的继续字节

问题描述 投票:0回答:1

我已经使用我自己的语料库,使用https://github.com/stanfordnlp/GloVe/blob/master/demo.sh提供的代码生成了GloVe向量。因此,我同时具有.bin文件和.txt文件向量。我正在尝试将这些文件导入gensim,以便可以像word2vec矢量一样使用它们。

我曾尝试使用二进制格式和文本文件格式来更改加载,但最终导致出现酸洗错误:

models = gensim.models.Word2Vec.load(file)

我尝试忽略unicode错误,该错误无效。我仍然收到unicode错误。

model = gensim.models.KeyedVectors.load_word2vec_format(file, binary=True, unicode_errors='ignore')

这就是我现在的代码:

from gensim.models import KeyedVectors
import gensim
from gensim.models import word2vec

file = 'vectors.bin'
model = KeyedVectors.load_word2vec_format(file, binary=True, unicode_errors='ignore')  
model.wv.most_similar(positive=['woman', 'king'], negative=['man'])

这是我不断收到的错误消息:

Traceback (most recent call last):
  File "glove_to_word2vec.py", line 6, in <module>
    model = KeyedVectors.load_word2vec_format(file, binary=True)  # C  binary format
  File "/home/users/epair/.local/lib/python3.6/site- packages/gensim/models/keyedvectors.py", line 1498, in load_word2vec_format
    limit=limit, datatype=datatype)
  File "/home/users/epair/.local/lib/python3.6/site-packages/gensim/models/utils_any2vec.py", line 343, in _load_word2vec_format
    header = utils.to_unicode(fin.readline(), encoding=encoding)
  File "/home/users/epair/.local/lib/python3.6/site-packages/gensim/utils.py", line 359, in any2unicode
    return unicode(text, encoding, errors=errors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 0:  invalid continuation byte

酸洗错误是这样的:Unpickling Error while using Word2Vec.load()

Text file format

python gensim word2vec glove
1个回答
0
投票

没想到普通的.load()会起作用–仅适用于gensim自己的模型,并以匹配的.save()方法保存。

但是,.load_word2vec_format()应该使用正确格式的文件。

您确定文件格式兼容吗? (是否将其加载到原始的Google word2vec.c兄弟姐妹工具中,例如distanceword-analogy可执行文件?)

您还提到了.txt格式–您是否尝试过使用binary=False加载该文件?

查看utils_any2vec.py的第343行(在您可能使用的gensim版本中,似乎正在读取文件的第一行,该行上应该只有2个以空格分隔的数字) :字数和维数。 (也就是说,甚至不涉及与您的实际单词标记有关的编码问题。)

[如果您用head -1 vectors.txt查看文件,那是您看到的全部吗? (否则,您的GLoVe代码未编写正确的兼容格式。)

© www.soinside.com 2019 - 2024. All rights reserved.