如何使用gensim Word2Vec的输入或输出向量计算词相似度?
Gensim 单独使用输入/输出向量计算相似词方法
核心实现逻辑
Gensim 已经封装了成熟的向量计算工具,不需要手动实现余弦相似度计算、排序逻辑,只需单独把对应向量矩阵加载到KeyedVectors实例中,即可直接调用most_similar方法。
具体操作步骤
1. 仅使用输入向量计算相似词
默认model.wv.most_similar本身就是基于输入向量(即model.syn0/model.wv.vectors)计算,直接调用即可:
# 输入向量计算Top10相似词,和常规用法完全一致 model.wv.most_similar("目标词", topn=10)
2. 仅使用输出向量计算相似词
你只需要把输出向量矩阵单独封装为KeyedVectors对象即可:
from gensim.models import KeyedVectors # 初始化输出向量实例,维度和训练的词向量维度保持一致 output_kv = KeyedVectors(vector_size=model.vector_size) # 加载词表与输出向量矩阵,旧版本Gensim可把model.trainables.syn1neg替换为model.syn1neg output_kv.add_vectors(list(model.wv.index_to_key), model.trainables.syn1neg) # 调用方法计算输出向量下的Top10相似词 output_kv.most_similar("目标词", topn=10)
补充说明
- 上述方法复用了Gensim内置的优化计算逻辑,比手动用Numpy实现余弦相似度计算效率高很多,尤其适合大词表场景。
- 如果是旧版本Gensim,词表获取可替换为
model.wv.index2word。
内容的提问来源于stack exchange,提问作者coder11
相关产品推荐
相关产品推荐

