将 gensim word2vec 转换为二进制格式时出现 EOFError

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

我有一个

word2vec
格式的预训练嵌入,格式为
txt
。我加载了它,然后将其保存到
.bin
。但我无法将此嵌入加载为

EOFError:输入意外结束;计数是否错误或文件是否损坏?

我原来的代码是:

model = KeyedVectors.load_word2vec_format(wordfile)
model.save_word2vec_format("file.bin",binary=True,write_header=True)
bin_model = KeyedVectors.load_word2vec_format("file.bin",binary=True)

我可以用限制参数加载这个

file.bin

KeyedVectors.load_word2vec_format("file.bin",binary=True, limit=10000)

保存嵌入时还需要其他过程吗?

gensim word2vec
1个回答
0
投票

很有可能您的

.bin
文件的前导计数不正确,或者文件已被损坏/截断 - 因为该错误意味着文件在其标头(第一行)中声明了更多数量的词向量比尝试加载期间发现的要多。

因此,如果您下载或从其他地方复制它,请检查原始来源,以确保您获得完整的文件。

您执行此转换有原因吗?这些格式本质上是等效的,加载后会产生完全相同的 Python 对象。

如果二进制格式的磁盘空间节省很小,您可能可以通过 GZIP 压缩文件来节省更多(如果

.load_word2vec_format()
看到文件名上有尾随的
.gz
,它也会很乐意解压缩)。

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