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

如何在TensorBoard Projector中可视化Gensim训练的Word2vec词向量

报错原因

你触发UnicodeDecodeError的核心原因是model.save()导出的是gensim自定义的pickle序列化格式,而gensim.scripts.word2vec2tensor脚本仅支持标准word2vec格式(文本或二进制导出的词向量文件),两种格式不兼容导致解析失败。

新版本适配解决方案

这里提供两种适配gensim 4.0+版本的方案,优先推荐第二种手动生成的方式,兼容性更强。

方案一:导出标准word2vec格式后用脚本转换

训练模型后先导出标准word2vec词向量格式,再执行转换命令:

from gensim.test.utils import common_texts
from gensim.models import Word2Vec
# 注意:gensim 4.0+版本中向量维度参数已从size改为vector_size,旧参数会触发警告
model = Word2Vec(sentences=common_texts, vector_size=100, window=5, min_count=1, workers=4)
# 导出标准word2vec文本格式,而非完整模型的pickle格式
model.wv.save_word2vec_format("/content/word2vec.kv", binary=False)

再执行原转换命令即可正常运行:

!python3 -m gensim.scripts.word2vec2tensor -i /content/word2vec.kv -o /content/my_model

方案二:手动生成Embedding Projector所需文件(推荐)

Embedding Projector仅需要两个TSV文件即可完成可视化:vectors.tsv存储所有词的向量、metadata.tsv存储对应词的文本内容。无需依赖官方转换脚本,直接通过代码生成即可,适配所有版本:

import io
from gensim.models import Word2Vec

# 加载之前通过model.save()保存的完整模型
model = Word2Vec.load("/content/word2vec.model")

# 初始化两个输出文件
vec_file = io.open('/content/my_model_vecs.tsv', 'w', encoding='utf-8')
meta_file = io.open('/content/my_model_meta.tsv', 'w', encoding='utf-8')

# 遍历所有词,写入向量和元数据
# 注意:gensim 4.0+版本中词表索引属性已从index2word改为index_to_key
for word in model.wv.index_to_key:
    word_vec = model.wv[word]
    meta_file.write(word + "\n")
    vec_file.write("\t".join([str(x) for x in word_vec]) + "\n")

vec_file.close()
meta_file.close()

生成后直接将两个TSV文件上传到Embedding Projector平台即可完成可视化。

内容的提问来源于stack exchange,提问作者G. Macia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:30:01