EOFError:输入意外结束;计数是否不正确或文件是否损坏?不知道怎么解决

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

当我尝试在 Jupyter Notebook 中运行此代码段时,我的代码遇到了这个问题,任何人都可以告诉我如何修复它吗?我正在尝试使用 word2vec 连续袋模型,并且由于此错误,此代码段未运行:

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

这是代码段:

cbow_output = gensim.models.KeyedVectors.load_word2vec_format('Downloads/vectors.txt' , binary=False)
cbow_output.most_similar(positive=['virus'])

谢谢!

python word2vec
2个回答
0
投票

如果文件顶部声明的向量多于后面的向量,则会出现错误。

您从哪里获取正在加载的

vectors.txt
文件,您确定它已完全下载,没有在任何时候被中断吗?您可以尝试重新下载吗?

如果您使用的是 Linux/MacOS/Unixy 系统,则可以在命令 shell 中执行

head -1 vectors.txt
来查看第一行,该行将声明预期的维数和向量计数。您可以执行
wc -l vectors.txt
来报告行数。

如果行数并不比报告的数多一,则说明缺少一些行 - 您应该尝试重新下载完整的副本。

如果文件被不可恢复地截断,您可以使用

limit
选项仅读取其中向量的子集。因此,如果
wc
报告了超过 100000 个向量,您可以使用
limit=100000
的可选参数
.load_word2vec_format()
加载第一个 100000 个向量(即使它最初具有并在顶部声明了更多向量)。


0
投票

您应该阅读矢量文件。第一行由 2 个数字组成。第一个是文件的总行数,第二个是尺寸。不幸的是,行数不正确,因此您应该将行数减一。例如如果第一个是 2196017 300,您应该将其替换为 2196016 300。

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