我有一个
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)
保存嵌入时还需要其他过程吗?
很有可能您的
.bin
文件的前导计数不正确,或者文件已被损坏/截断 - 因为该错误意味着文件在其标头(第一行)中声明了更多数量的词向量比尝试加载期间发现的要多。
因此,如果您下载或从其他地方复制它,请检查原始来源,以确保您获得完整的文件。
您执行此转换有原因吗?这些格式本质上是等效的,加载后会产生完全相同的 Python 对象。
如果二进制格式的磁盘空间节省很小,您可能可以通过 GZIP 压缩文件来节省更多(如果
.load_word2vec_format()
看到文件名上有尾随的 .gz
,它也会很乐意解压缩)。