如何使用gensim的word2vec实现找到给出单词的N个最近单词。那是什么API?我在这里指的是跳过克。也许我错过了一些东西,我读到所有关于找到相似的单词,找到奇怪的东西等等......
在DL4j中,我有一个名为wordsNearest(String A, int n) which gives me the n-nearest words to A
的方法。在Gensim中,这相当于什么?
答案 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'])