word2vec-通过特定向量查找单词

时间:2018-08-15 06:56:45

标签: python-3.x nlp gensim word2vec

我训练了gensim Word2Vec模型。 假设我有一个向量,我想找到它代表的词-最好的方法是什么?

含义,针对特定向量:

vec = array([-0.00449447, -0.00310097,  0.02421786, ...], dtype=float32)

我想说一个话:

 'computer' = model.vec2word(vec)

2 个答案:

答案 0 :(得分:1)

字向量是通过迭代的近似过程生成的-因此不应认为它是正确的(即使它们确实具有精确的坐标),而只是“在一定的公差范围内有用”。

因此,不存在用于精确坐标的精确单词查询。相反,在gensim Word2Vec和相关类中有most_similar(),它以已知的词或矢量坐标将已知词最接近排序,并具有余弦相似度。因此,如果您刚刚将完整的Word2Vec模型训练(或加载)到变量model中,则可以使用以下方法获得与向量最接近的词:

vec = array([-0.00449447, -0.00310097,  0.02421786, ...], dtype=float32)
similars = model.wv.most_similar(positive=[vec])
print(similars)

如果只需要一个最接近的单词,它将在similars[0][0](排名最高的元组的第一个位置)中。

答案 1 :(得分:0)

现在通过vocab.vectors.most_similar

支持此功能
import spacy
nlp = spacy.load('en_core_web_md')
word_vec = nlp(u"Test").vector
result = nlp.vocab.vectors.most_similar(word_vec.reshape((1, -1)))
print(nlp.vocab.strings[result[0][0,0]], result)