Python 使用word2vec和gensim查找相似的单词,抛出错误

Python 使用word2vec和gensim查找相似的单词,抛出错误,python,google-colaboratory,gensim,word2vec,drive,Python,Google Colaboratory,Gensim,Word2vec,Drive,我试图找到与我给出的代码相似的单词。但不知何故,一切都很顺利,直到最后,它说这个词不存在。有人能帮我吗 from gensim.test.utils import datapath, get_tmpfile from gensim.models import KeyedVectors from gensim.scripts.glove2word2vec import glove2word2vec glove_file = datapath('/content/drive/MyDrive/Col

我试图找到与我给出的代码相似的单词。但不知何故,一切都很顺利,直到最后,它说这个词不存在。有人能帮我吗

from gensim.test.utils import datapath, get_tmpfile
from gensim.models import KeyedVectors
from gensim.scripts.glove2word2vec import glove2word2vec

glove_file = datapath('/content/drive/MyDrive/Colab Notebooks/glove.6B.300d.txt')
tmp_file = get_tmpfile('/content/drive/MyDrive/Colab Notebooks/word2vec-glove.6B.300d.txt')

_ = glove2word2vec(glove_file, tmp_file)

model = KeyedVectors.load_word2vec_format(tmp_file)

model.most_similar(positive=["new"], topn=10)
---------------------------------------------------------------------------
KeyError回溯(最近一次呼叫最后一次)
在()
10 model=KeyedVectors.load_word2vec_格式(tmp_文件)
11
--->12型号。最相似(正=[“新”],topn=10)
1帧
/word\u vec中的usr/local/lib/python3.7/dist-packages/gensim/models/keyedvivers.py(self、word、use\u norm)
450返回结果
451其他:
-->452 raise KeyError(“单词“%s”不在词汇表“%word”中)
453
454 def get_向量(自、字):
KeyError:“单词‘new’不在词汇表中”

如果您收到错误,
KeyError:“单词‘新’不在词汇表中”
,则该单词‘新’可能不在模型的词汇表中–即使您预期/打算这样做

您是否检查了手套源文件
/content/drive/MyDrive/Colab Notebooks/globet.6B.300d.txt
,以确认其具有预期的长度/内容

您是否检查了输出文本word2vec格式文件,
/content/drive/MyDrive/Colab Notebooks/word2vec globe.6B.300d.txt

您是否检查过
模型
,一旦加载,其内部是否有预期的字数(
len(model)
),或者其前几个字(
model.index\u to\u key[20]
)是否正确

这些检查可能会显示一些比您正在点击的
最相似()
期间的
键错误
更基本的问题-因此重复手套向量下载/转换/加载并确保每个步骤都成功无误可能解决问题

另请注意:

自Gensim版本4.0(2021年)起,
glove2word2vec()
函数/脚本现在已被弃用。如果您使用它,您应该会看到一条警告消息:

KeyedVectors.load_word2vec_格式(..,binary=False,no_header=True) 加载手套文本向量

因此,您可以跳过显式转换,只需使用它即可:

glove_vecs = KeyedVectors.load_word2vec_format(glove_file, binary=False, no_header=True)
(此读取将需要一个额外的初始过程,以计算包含的字数,因此,如果您要多次重复此加载,您可能仍然希望使用
.save\u word2vec\u format()
,将
手套向量重新保存到一个新的单独文件中,前提是考虑加载速度。)

glove_vecs = KeyedVectors.load_word2vec_format(glove_file, binary=False, no_header=True)