You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用word2vec生成词汇列表的两两余弦相似度矩阵

相似度矩阵实现方案

前提:你已经训练完成gensim的word2vec模型,可正常调用wv.similarity()方法,待计算的目标词汇列表为word_list。

方法1:双重循环实现(逻辑简单,适合小词汇量场景)

不需要额外依赖复杂计算库,逻辑直观易调整:

import pandas as pd
import numpy as np

# 替换为你自己的词汇列表
word_list = ["苹果", "香蕉", "水果", "汽车"]
vocab_len = len(word_list)
# 初始化空矩阵
sim_matrix = np.zeros((vocab_len, vocab_len))

# 两两遍历计算相似度
for i in range(vocab_len):
    for j in range(vocab_len):
        sim_matrix[i][j] = wv.similarity(word_list[i], word_list[j])

# 转换为带行列标签的表格形式,方便查看
sim_df = pd.DataFrame(sim_matrix, index=word_list, columns=word_list)
print(sim_df)

方法2:向量化计算实现(效率更高,适合大词汇量场景)

直接批量提取所有词汇的向量,一次性计算所有两两余弦相似度,避免循环耗时:

from sklearn.metrics.pairwise import cosine_similarity
import pandas as pd

# 过滤不在wv词汇表中的词,避免报错
filtered_word_list = [word for word in word_list if word in wv.key_to_index]
# 批量提取所有词的向量
word_vecs = wv[filtered_word_list]
# 直接计算相似度矩阵
sim_matrix = cosine_similarity(word_vecs)
# 生成带标签的表格
sim_df = pd.DataFrame(sim_matrix, index=filtered_word_list, columns=filtered_word_list)

# 导出到本地csv文件
sim_df.to_csv("词相似度矩阵.csv", encoding="utf-8-sig")

注意事项

  • 不同gensim版本判断词汇是否存在的属性略有差异,低版本可将wv.key_to_index替换为wv.vocab
  • 矩阵对角线数值恒为1,是单词与自身的相似度,属于正常结果
  • 若不需要带标签的表格格式,直接使用sim_matrix数组即可进行后续计算

内容的提问来源于stack exchange,提问作者Doosan Paik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:48:04