当我尝试在 Jupyter Notebook 中运行此代码段时,我的代码遇到了这个问题,任何人都可以告诉我如何修复它吗?我正在尝试使用 word2vec 连续袋模型,并且由于此错误,此代码段未运行:
EOFError:输入意外结束;计数是否错误或文件是否损坏?
这是代码段:
cbow_output = gensim.models.KeyedVectors.load_word2vec_format('Downloads/vectors.txt' , binary=False)
cbow_output.most_similar(positive=['virus'])
谢谢!
如果文件顶部声明的向量多于后面的向量,则会出现错误。
您从哪里获取正在加载的
vectors.txt
文件,您确定它已完全下载,没有在任何时候被中断吗?您可以尝试重新下载吗?
如果您使用的是 Linux/MacOS/Unixy 系统,则可以在命令 shell 中执行
head -1 vectors.txt
来查看第一行,该行将声明预期的维数和向量计数。您可以执行 wc -l vectors.txt
来报告行数。
如果行数并不比报告的数多一,则说明缺少一些行 - 您应该尝试重新下载完整的副本。
如果文件被不可恢复地截断,您可以使用
limit
选项仅读取其中向量的子集。因此,如果 wc
报告了超过 100000 个向量,您可以使用 limit=100000
的可选参数 .load_word2vec_format()
加载第一个 100000 个向量(即使它最初具有并在顶部声明了更多向量)。
您应该阅读矢量文件。第一行由 2 个数字组成。第一个是文件的总行数,第二个是尺寸。不幸的是,行数不正确,因此您应该将行数减一。例如如果第一个是 2196017 300,您应该将其替换为 2196016 300。