昇思25天学习打卡营第10天|基于 MindSpore 实现 BERT 对话情绪识别

课程打卡凭证

下载MindSpore的NLP框架

模型简介

BERT,即Bidirectional Encoder Representations from Transformers,它是一种预训练语言模型(Pre-trained Language Model, PLM),由Google公司在2018年推出。

概念与原理

BERT是一种基于Transformer架构的预训练语言模型,旨在通过在大规模文本数据上的预训练来捕捉语言的深层双向表征。它的主要特点是使用了Transformer的encoder部分进行堆叠构建,通过预训练和微调两个阶段来生成深度的双向语言表征。双向性(Bidirectional)意味着BERT在预测一个词时,可以同时考虑这个词的上下文信息,包括它的前面和后面的词,从而提高了模型对语言的理解能力。

结构与特点

BERT有两种size,base版有110M参数,large版有340M的参数,参数量庞大。BERT的预训练阶段包括两个任务:Masked LM(遮蔽语言模型)和Next Sentence Prediction(下句预测)。Masked LM通过在输入文本中随机遮蔽一些词,然后让模型预测这些被遮蔽的词来训练模型。Next Sentence Prediction则是为了训练模型对句子关系的理解能力。BERT的编码层数可以根据需要进行调整,常见的有12层(base)和24层(large)两种配置。在维度方面,BERT通常采用768维度的向量表示。

导入必要的库与模块

定义加载并处理情感分析数据集的类

数据集介绍

该数据集来自百度飞桨团队,示例如图。它已经过了分词预处理与情感标注,其中0表示消极,1表示中性,2表示积极。下载地址为:https://baidu-nlp.bj.bcebos.com/emotion_detection-dataset-1.0.0.tar.gz

下载并解压数据集

数据加载和数据集预处理

定义process_dataset函数来处理数据集,它使用了前面定义的GeneratorDataset类来处理来自source的数据,并对其进行一系列的转换。

从mindnlp.transformers中的BertTokenizer来加载BERT中文分词器,并准备用于情感分析任务的数据集。定义三个数据集:dataset_train、dataset_val和dataset_test,分别对应训练集、验证集和测试集。

模型构建

使用mindnlp库中的BertForSequenceClassification模型来进行序列分类任务,并且启用自动混合精度(AMP)训练来加速训练并减少显存使用。

定义Accuracy对象来作为模型评估的指标;CheckpointCallback用于在训练过程中保存模型的检查点;BestModelCallback用于在验证集上评估模型性能,并在模型性能提升时保存最佳模型;Trainer用于管理训练过程。

启动训练过程,并输出训练的时间。

模型验证

使用Evaluator来评估训练好的模型在测试集上的性能。

模型推理

定义predict函数来预测文本的情感标签。

自定义推理数据集

通过自定义推理数据集,可以展示模型的泛化能力。

“奇葩”在现在网络用语中,偏向消极,而原意为积极。因此,该模型泛化能力还不够。

  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值