Word2Vec 是需要训练的模型,它和我们平时调用 ChatGPT 那种"现成预训练好的大模型 API"完全不同。

一、它训练的是什么

Word2Vec 本质是一个浅层神经网络,目标不是做分类或生成,而是把每个词学成一个稠密向量(embedding),使得语义相近的词在向量空间里距离更近。

它有两种训练架构:

  • CBOW(连续词袋):用上下文词预测中心词。
  • Skip-gram:用中心词预测上下文词。

你代码里这句就是在"训练":

model = word2vec.Word2Vec(sentences, vector_size=100, window=3, min_count=1)

这里 sentences(你的 segment_*.txt 分词语料)就是训练数据。模型从随机初始化开始,在语料上反复迭代,调整神经网络参数,最终让每个词对应一个 100 维向量。

二、为什么必须训练

  • 词向量不是"算出来"的,而是从数据中"学出来"的。同一个词(如"孙悟空")在不同语料里学到的向量会不同——在《西游记》里它和"唐僧/猪八戒"接近,在另一本小说里可能和别的词接近。
  • 训练就是最小化"预测上下文"的损失函数,反向传播更新词向量权重。迭代越多、语料越大,向量质量越好。
  • 你代码里 model2.save('./models/word2Vec.model') 就是把训练好的参数(词向量矩阵)持久化到磁盘,下次用 Word2Vec.load() 直接加载,不必重训。

三、和"预训练大模型"的区别

Word2Vec 现代大模型(如 GPT)
是否要训练 (在自己的语料上训) 通常直接用厂商训好的
学什么 只学"词 → 向量"映射 学语言生成、理解等通用能力
参数量 很小(词数 × 向量维度) 巨大( billions 级)
产物 一张词向量查找表 能对话/生成的模型

所以:Word2Vec 是模型,但它"小",且通常需要在你自己的语料上训练才能得到贴合该语料的词向量。训练完得到的 .model 文件,就是那张"词 → 向量"的表,之后 similarity / most_similar 都是在这张表上做向量运算,不再训练。

补充一点:如果你不想自己训,也可以下载别人训好的中文 Word2Vec 模型直接 load 来用——那就变成"用现成的"了。但课程里这一步的用意,正是让你亲手从《西游记》语料训出一个专属词向量模型。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐