word2veC语言 通过特定向量查找单词



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

含义,对于特定向量:

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

我想得到一句话:

'computer' = model.vec2word(vec)

词向量是通过迭代的近似过程生成的——所以不应该被认为是完全正确的(即使它们确实有确切的坐标(,只是"在某些公差范围内有用"。

因此,没有查找精确单词的精确坐标。相反,在 gensimWord2Vec和相关类中,有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](排名靠前的元组的第一个位置(。

现在通过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)

最新更新