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

如何从Gensim Word2Vec模型中提取对应词汇的向量矩阵

解决Word2Vec词向量与词汇索引匹配导出DataFrame的问题

问题根源

你用model.syn1neg提取的是负采样训练时的输出层权重矩阵,它和model.wv.index_to_key对应的输入层词向量(也就是我们实际要用的词嵌入)不是同一组数据,所以必然出现索引不匹配的问题。正确的词向量矩阵应该用model.wv.vectors,它的每一行和model.wv.index_to_key的词汇是一一对应的。

正确代码实现

import pandas as pd

# 获取正确的词向量矩阵与词汇列表
word_vec_matrix = model.wv.vectors
word_labels = model.wv.index_to_key

# 构造DataFrame
df = pd.DataFrame(word_vec_matrix)
# 给向量列命名为V1、V2...V300
df.columns = [f"V{i+1}" for i in range(df.shape[1])]
# 将词汇列插入到第一位置
df.insert(0, "label", word_labels)

验证索引匹配

执行以下代码可以确认对应关系:

# 获取'government'的索引
gov_index = model.wv.get_index('government')
# 查看DataFrame对应行的label和向量
print(df.iloc[gov_index])

此时你会看到label列的值是government,且向量和model.wv['government']完全一致。

额外说明

  • model.wv.vectors是Word2Vec训练完成后,输入层的词向量矩阵,也是我们做文本任务时常用的词嵌入数据。
  • syn1neg是负采样优化过程中用到的输出层权重,一般仅用于模型内部训练,不适合直接作为词向量使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:50:28