基于BERT+MLP的文本情感分析任务
1 相关介绍
1.1 文本情感分析
文本情感分析又被称为意见挖掘,主要是对文字内容进行情感分析,希冀获得其蕴藏的情感极性,可广泛应用于舆情监测、电商评价分析等领域。文本情感分析本质为分类任务。
1.2 BERT
BERT是一个基于自注意力机制实现的文本预训练模型,是自然语言处理领域近年来最重要的工作之一。BERT及其后续改进型深刻改变了深度学习在自然语言处理各项任务的处理方法,已经成为大规模迁移学习的典型代表。BERT具体实现与解析有很多优秀文章进行了详细说明,本文在此不再赘述。
1.3 MLP
一个简单的全连接线性分类层,主要是对BERT的输出进行维度变换,实现文本分类的标签预测。
2 具体实现
本文核心是从始至终构建一个BERT+MLP的神经网络模型进行文本情感分析,具体的细节在后续文章进行介绍,本文不再赘述。
2.1 依赖包安装
安装pytorch与transformers。在终端(命令行窗口)切换到虚拟环境,执行以下命令。(假设已经安装了conda等虚拟环境,如果有同学不会安装conda环境的话,后续再出一个Anaconda或者Miniconda的安装配置教程)
torch包是一个深度学习的主流框架pytorch,transformers是Huggingface[2]开发的一个加载预训练模型和数据集的包,tqdm是一个显示进度条的包。
2.2 导入包
导入后续需要使用的包和类。
2.3 配置路径与全局常量
将数据集、模型等路径与Batch_Size、Hidden_Size等全局常量放前面,方便后续的更改与操作。常量命名建议全部大写,以便与变量进行区分。此处路径根据自己实际情况进行配置,数据集在文章最后。
2.4 定义Dataset与DataLoader进行数据读取
Dataset与DataLoader是pytorch用来读取与迭代数据集的类。想了解数据处理完之后格式的同学可以看本小节代码最后一段。
2.5 加载分词器与预训练模型
使用AutoTokenizer与AutoModel加载分词器与预训练模型,BERT模型还可以使用BertTokenizer与BertModel进行加载,但为了方便更换预训练模型,个人更喜欢使用AutoTokenizer与AutoModel。
2.6 构建BERT+MLP模型
自定义神经网络模型,继承torch.nn.Module类。神经网络模型可以自由定义,但须包含__init__初始化与forward两个方法。
2.7 实例化BERT+MLP模型、优化器与损失函数
将构建好的BERT+MLP模型进行实例化,加载优化器与定义损失函数。优化器用于训练时对模型参数进行更新优化。
2.8 定义其他内容
2.9 定义训练函数
定义函数用于模型训练,每2个批量保存一次损失,每100个批量进行一次损失输出,每1个epoch进行一次验证集验证。
2.10 定义验证函数
用于每个epoch的验证集验证。
2.11 定义结果保存函数
用于将训练数据保存为文本文件,方便后续绘图。
2.12 训练与保存
3 实验数据
https://github.com/lxssg1231/ChnSenticorpgithub.com/lxssg1231/ChnSenticorp
参考
^1 https://arxiv.org/abs/1810.04805
^2 https://huggingface.co/