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

关于Word2Vec中model.similarity结果不符合预期的技术咨询

为什么你的Word2Vec模型里Yellow和Banana相似度这么低?

嘿,作为Word2Vec新手遇到这个问题太正常了,我来帮你拆解下你忽略的几个核心点:

1. 训练数据集太小了(最关键原因)

Word2Vec的本质是通过大量语料的统计规律学习词与词的关联,它需要成百上千次看到“Yellow”和“Banana”一起出现的场景,才能把它们的向量拉近。你现在只有3个短句,模型根本没有足够数据捕捉“黄色”和“香蕉”的绑定关系——就像只看3个例子没法总结普遍规律一样,最终得到的向量基本是随机初始化后的微小调整,相似度自然毫无意义。

2. 输入句子结构不符合Word2Vec训练逻辑

Word2Vec依赖上下文窗口(默认是5个词)学习语义,但你的每个句子只有2个词,上下文窗口完全没法发挥作用。模型看不到“Yellow”在哪些语境下和“Banana”关联,只能孤立处理每个词对,学不到有效关联特征。

3. 模型参数设置不合理

你设置了size=300(现在gensim里该参数叫vector_size),300维的向量需要大量数据填充语义信息,在极小数据集下这么大的维度只会导致向量稀疏、随机化,反而没法学到有用的关联。


给你的改进建议

我调整了代码,你可以试试:

import gensim
from gensim.models import Word2Vec

# 扩充包含更多上下文的训练语料
sentences = [
    ["I", "eat", "a", "yellow", "banana"],
    ["Yellow", "banana", "tastes", "sweet"],
    ["Red", "apple", "is", "my", "favorite"],
    ["Green", "apple", "is", "sour"],
    ["I", "love", "drinking", "hot", "green", "tea"]
]

# 调整参数:减小向量维度,增加训练迭代次数
model = gensim.models.Word2Vec(
    sentences, 
    min_count=1, 
    vector_size=50,  # 小数据集用小维度更合适
    workers=4, 
    epochs=20  # 增加迭代次数让模型充分学习语料
)

print(model.similarity('Yellow', 'Banana'))

这样修改后,模型能从更多上下文里学到“Yellow”和“Banana”的关联,相似度会明显提升。如果想要更准确的结果,建议找更大的语料(比如包含大量食物、颜色描述的文本)来训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:55