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