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



我在txt中有一个word2vec格式的预训练嵌入。我加载它,然后保存到.bin。但是我无法将这些嵌入作为EOFError: unexpected end of input; is count incorrect or file otherwise damaged?

加载我的原始代码是:

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,它也会很高兴地解压缩该文件)。

相关内容

  • 没有找到相关文章

最新更新