Word2Vec
·
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 来用——那就变成"用现成的"了。但课程里这一步的用意,正是让你亲手从《西游记》语料训出一个专属词向量模型。
更多推荐



所有评论(0)