Gensim word2vec找到最近的单词

时间:2015-06-01 20:58:47

标签: gensim word2vec

如何使用gensim的word2vec实现找到给出单词的N个最近单词。那是什么API?我在这里指的是跳过克。也许我错过了一些东西,我读到所有关于找到相似的单词,找到奇怪的东西等等......

在DL4j中,我有一个名为wordsNearest(String A, int n) which gives me the n-nearest words to A的方法。在Gensim中,这相当于什么?

2 个答案:

答案 0 :(得分:1)

这个问题真的很旧,但无论如何: 我还不完全确定分层softmax和负采样是如何工作的,但原则上你应该能够从输入矩阵中取一个向量,将其乘以输出矩阵中的向量,然后选择最高值。

w1_vec = model[word] #Get the vector for the word you're interested in.
# Loop over the words in the output matrix and take dot products.
for idx, w2_vec in enumerate(model.syn1neg):
    print(idx, model.index2word[idx], np.exp(np.dot(w1_vec, w2_vec)))

然后从输出中选择最高值。根据负采样/分层softmax使用syn1neg / syn1。我在一些示例文本中使用了这种技术,结果是合理的。

答案 1 :(得分:0)

如果我正确理解您的问题,您可以使用most_similar

model.most_similar(positive=['woman'])