Day06【使用Word2Vec模型训练词向量】

摘要

使用 Word2Vec 模型训练一个词向量模型,并进行一些基本的词向量操作,比如查找相似词和进行词向量的类比。
代码的每个部分有如下解释:

1. 导入库

import jieba
from gensim.models import Word2Vec
  • jieba:一个中文分词库,用于将中文句子分割成词语。
  • gensim.models.Word2Vec:用于训练和使用 Word2Vec 词向量模型。

2. 训练词向量模型

def train_word2vec_model(corpus, dim):
    model = Word2Vec(corpus, size=dim, sg=1, min_count=1,workers=4, iter=15,compute_loss=True, callbacks=[PlotCallback()])
    model.save("model.w2v")
    return model
  • train_word2vec_model(corpus, dim):该函数用来训练一个 Word2Vec 模型。
    • corpus:传入的语料是一个列表,列表的每个元素都是一个由词语构成的子列表(例如 ["今天", "天气", "不错"])。这些子列表是已经分好词的句子。
    • dim:词向量的维度,决定了词向量的大小(例如 128)。
    • sg=1:使用 Skip-Gram 模型(如果设置为 0 则使用 CBOW 模型)。在 Skip-Gram 模型中,通过当前词来预测上下文词。
    • min_count=1:这是词频的最小阈值,任何出现次数小于此值的词都会被忽略。在这个代码中,注释掉的部分其实原本是希望使用 min_count=3。然而,这里硬编码为 min_count=1,意味着即使是非常稀有的单词也会被包括进训练。
    • workers=4:设置用于训练的线程数。4 表示使用 4 个线程进行训练,加速训练过程。
    • iter=15:指定模型迭代次数,模型会根据训练数据进行 15 轮的优化。
    • compute_loss=True:启用计算训练过程中的损失函数,这对于调试和分析模型训练的效果很有用。
    • callbacks=[PlotCallback()]:使用一个回调函数 PlotCallback,这个回调函数通常用于在训练过程中绘制损失曲线等图表,帮助监控训练的进度和效果。
    • model.save("model.w2v"):将训练好的模型保存为文件 model.w2v,方便后续加载使用。
    • return model:返回训练好的 Word2Vec 模型。

3.训练的回调函数

# 启用 compute_loss=True 后,通过回调函数监控
class PlotCallback(CallbackAny2Vec):
    def __init__(self):
        super().__init__()
        self.epoch_losses = []  # 存储每个epoch的损失值
        self.epoches = 0  # 精确记录实际epoch数

    def on_epoch_end(self, model):
        """每epoch结束时记录损失并重置计数器"""
        loss = model.get_latest_training_loss()
        model.running_training_loss = 0.0  # 关键!防止损失值累积
        self.epoch_losses.append(loss)
        self.epoches += 1

    def on_train_end(self, model):
        """训练完全结束后生成最终可视化图表"""
        plt.figure(figsize=(12, 6))
        # 生成正确的x轴范围(从1到总epoch数)
        x_values = range(1, self.epoches + 1)
        plt.plot(x_values, self.epoch_losses, 'b-',  marker='o', markersize=8,
            linewidth=2, alpha=0.7, label=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值