基于BERT+MLP的文本情感分析任务

本文介绍了如何利用BERT和多层感知机(MLP)构建神经网络模型进行文本情感分析。从数据读取、模型构建到训练与验证,详细阐述了整个流程,并提到了相关依赖包如transformers和torch。
摘要由CSDN通过智能技术生成

目录

1 相关介绍

1.1 文本情感分析

1.2 BERT

1.3 MLP

2 具体实现

2.1 依赖包安装

2.2 导入包

2.2 配置路径与全局常量

2.3 定义Dataset与DataLoader进行数据读取

2.4 加载分词器与预训练模型

2.5 构建BERT+MLP模型

2.6 实例化BERT+MLP模型、优化器与损失函数

2.7 定义其他内容

2.8 定义训练函数

2.9 定义验证函数

2.10 定义结果保存函数

2.11 训练与保存

3 实验数据


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开发的一个加载预训练模型和数据集的包,tqdm是一个显示进度条的包。

pip install torch
pip install transformers
pip install tqdm

2.2 导入包

导入后续需要使用的包和类。

import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
from transformers import AutoModel, AutoTokenizer
from tqdm import tqdm
import numpy as np
import torch.optim as optim

2.3 配置路径与全局常量

将数据集、模型等路径与Batch_Size、Hidden_Size等全局常量放前面,方便后续的更改与操作。常量命名建议全部大写,以便与变量进行区分。此处路径根据自己实际情况进行配置,数据集在文章最后。

# 设置路径与预训练模型
TRAIN_DATA_DIR = r'/root/autodl-tmp/data/toutiaonews38w/train.tsv' # 训练集地址
EVAL_DATA_DIR = r'/root/autodl-tmp/data/toutiaonews38w/val.tsv' # 验证集地址
TEST_DATA_DIR = r'/root/autodl-tmp/data/toutiaonews38w/test.tsv' # 测试集地址
MODEL_NAME = 'bert-base-chinese' # 预模型名称,更换为huggingface其他模型名称则加载为其他模型
LOSS_RESULT_DIR = r'/root/Mytrain/test3-29/toutiaonews38w/result/MLP/mlp_loss.txt' # 训练损失保存路径
ACC_RESULT_DIR = r'/root/Mytrain/test3-29/toutiaonews38w/result/MLP/mlp_acc.txt' # 每个Epoch测试精度保存路径
MODEL_SAVE_DIR = r'/root/autodl-tmp/save_model/bert_mlp.pt' # 训练完毕的模型保存路径
# 设置全局常量
BATCH_SIZE = 64 # 批量大小
MAXLEN = 256 # 文本最长长度
EPOCHES = 3 # 训练轮次
HIDDEN_SIZE = 200 # 隐藏层大小
NUM_CLASS = 2 # 文本情感类别数量

2.4 定义Dataset与DataLoader进行数据读取

Dataset与DataLoader是pytorch用来读取与迭代数据集的类。想了解数据处理完之后格式的同学可以看本小节代码最后一段。

# 自定义Dataset进行数据读取
class myDataset(Dataset):
    '''
        @功能:读取数据集,将其处理为预训练模型可以接收的类型,供Dataloader进行迭代
        @输入:数据集路径、分词器、是否有标签作为输入
        @输出:1.标签(可选),格式为tuple,[batch_size,];
              2.token_ids,对数据集中的序列进行tokenizer得到,是预训练模型需要的token。格式为tensor,[batch_size,MAXLEN],MAXLEN为设定的tokenizer长度;
              3.att_mask,标记token_ids中原有的词元与padding词元。格式为tensor,[batch_size,MAXLEN],MAXLEN为设定的tokenizer长度。
        '''

    def __init__(self, data_dir, tokenizer, with_labels=True):  # data_dir为数据集地址,tokenizer为分词器࿰
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值