Python Word2vec-获取相似度等级
假设我得到了一个word2vec模型(由gensim提供),我想得到单词之间的等级相似性。 例如,假设我有一个单词“desk”,与“desk”最相似的单词是:Python Word2vec-获取相似度等级,python,python-3.x,nlp,gensim,word2vec,Python,Python 3.x,Nlp,Gensim,Word2vec,假设我得到了一个word2vec模型(由gensim提供),我想得到单词之间的等级相似性。 例如,假设我有一个单词“desk”,与“desk”最相似的单词是: 表0.64 主席:0.61 第0.59册 铅笔0.52 我想创建一个函数,以便: f(桌子、书)=3 因为书是与书桌最相似的第三个词。 它存在吗?最有效的方法是什么 您可以使用秩(entity1,entity2)获得距离-与索引相同 model.wv.rank(sample_word, most_similar_word) 此处不需要
秩(entity1,entity2)
获得距离-与索引相同
model.wv.rank(sample_word, most_similar_word)
此处不需要下面给出的单独函数。为了获取信息而保存它 假设您有一个元组列表中的单词及其向量,由
model.wv.most\u相似(示例单词)
返回,如图所示
[('table', 0.64), ('chair', 0.61), ('book', 0.59), ('pencil', 0.52)]
下面的函数接受样本字和最相似的字作为参数,并返回索引或秩(例如[2]),如果它出现在输出中
def rank_of_most_similar_word(sample_word, most_similar_word):
l = model.wv.most_similar(sample_word)
return [x+1 for x, y in enumerate(l) if y[0] == most_similar_word]
sample_word = 'desk'
most_similar_word = 'book'
rank_of_most_similar_word(sample_word, most_similar_word)
注意:按照注释中的建议,在使用
model.wv.most_-similable()
时,使用topn=x
获取前x个最相似的单词。调用most_-similable
可能必须包括topn=len(model.wv.vocab)
,否则,列表中将找不到最相似的单词,您将返回一个空列表