基于 BERT 的情感分析案例。
情感分析是自然语言处理中的一个重要任务,它的目标是识别出文本中的情感色彩,通常分为积极、消极、中性三种情感。情感分析在很多领域都有应用,比如舆情分析、产品评论分析等。本案例使用 BERT 模型进行情感分析。
本案例使用了 THUCNews 数据集,THUCNews 是根据新浪新闻 RSS 订阅频道 2005~2011 年间的历史数据筛选过滤生成,包含 74 万篇新闻文档(2.19 GB),均为 UTF-8 纯文本格式。我们在原始新浪新闻分类体系的基础上,重新整合划分出 14 个候选分类类别:财经、彩票、房产、股票、家居、教育、科技、社会、时尚、时政、体育、星座、游戏、娱乐。 本案例使用其中的财经、科技、体育、娱乐四个类别的新闻文本,每个类别有 50000 条数据,共 200000 条数据。我们将这些数据按照 8:1:1 的比例划分为训练集、验证集和测试集,用于训练和评估模型的性能。 数据集的格式如下:
label text
0 财经 新华社北京月日电记者李延霞
1 科技 新华社北京月日电记者李延霞
2 体育 新华社北京月日电记者李延霞
3 娱乐 新华社北京月日电记者李延霞
本案例使用了 BERT 模型进行情感分析。BERT 是 Google 在 2018 年提出的预训练模型,它在多个自然语言处理任务上取得了最先进的效果。BERT 模型的预训练过程是在大规模文本语料上进行的,因此可以学习到丰富的语言知识,可以很好地适应各种自然语言处理任务。
- Python 3.7
- PyTorch 1.9.0
- Transformers 4.9.2
- Streamlit
使用前需下载相应的已训练模型(pytorch_model.bin 和 bert.ckpt 这两个大文件),并导入相应位置:
模型下载地址:链接:https://pan.baidu.com/s/1fyENks6pJ3rreHPCRBzpKQ 提取码:qotk
在终端中执行以下命令:
streamlit run app.py
然后在浏览器中打开 http://localhost:8501 ,即可看到情感分析的界面。
本案例使用 BERT 模型在 IMDB 数据集上进行情感分析,最终在测试集上的准确率为 0.91。
- data: 存放数据集
- model: 存放训练好的模型
- app.py: Streamlit应用程序
- train.py: 训练模型
- predict.py: 预测
- utils.py: 工具函数