phpcms网站logo,南通网站定制哪家好,产品设计方案模板范文,马鞍山网站建设费用#xff08;PyTorch#xff09;BERT文本分类#xff1a;七种模型架构
#x1f31f; 1. 介绍
使用BERT完成文本分类任务#xff08;如情感分析#xff0c;新闻文本分类等等#xff09;对于NLPer已经是很基础的工作了#xff01;虽说已迈入LLM时代#xff0c;但是BERT…PyTorchBERT文本分类七种模型架构 1. 介绍
使用BERT完成文本分类任务如情感分析新闻文本分类等等对于NLPer已经是很基础的工作了虽说已迈入LLM时代但是BERT这类较小的传统预训练模型的作用同样不可小觑常常在某些场景下达到出乎意料的效果。本文介绍了一个利用BERT完成文本分类的开源项目项目源码 Bert-Text-Classification。项目包含了7条基线每条基线运行起来所需的显存都很小用来作baseline非常的不错。 为方便下载夸克网盘链接大家也可直接进入GitHub地址访问项目同时给作者点个哈哈哈 另外当前很多的BERT文本分类项目都是很老的包了可能在配置环境时会出现问题。但本项目使用的包在当前主流的服务器上肯定可以配置成功按照本项目的依赖文件去安装肯定不会出问题 2. 模型架构解析
模型类型模型描述适用场景BertOrigin标准BERT实现基线对比实验BertATT动态注意力机制增强长文本关键信息提取BertLSTMRNN时序建模能力融合序列依赖性强的任务BertCNN局部特征提取器设计短文本模式识别BertDPCNN深度金字塔卷积架构层次化特征学习BertRCNNRNN-CNN混合架构上下文敏感的分类任务BertCNNPlus全局-局部特征融合机制需要综合语义理解的场景 3. 快速开始
话不多说直接开始复现步骤作者已按照以下步骤完成复现若遇到问题欢迎在评论区提出或者在GitHub的issue中提出issue中提出问题会有邮件通知作者
3.1 环境要求
Python 3.8依赖安装pip install -r requirements.txt
# 创建conda环境
conda create -n bert2text python3.8
# 安装依赖
cd xx/xx/Bert-Text-Classification
pip install -r requirements.txt3.2 数据准备
文本分类数据集包含训练集、验证集、测试集单条数据格式label \t text如 0 我爱北京天安门
1 这个电影真好看数据集存放路径data/数据集文件名train.tsv、dev.tsv、test.tsv 源码中的数据集因版权只保留了前100条数据若需要情感二分类SST2的完整数据集可通过链接 SST2 访问下载。若是自己的数据集请自行按照以上格式修改注意分类类别需自行转换为数字标签比如0对应“消极”1对应“积极 3.3 模型训练和评估
0️⃣ 修改相应的运行文件的配置信息如run_STT2.py
# 数据集路径
data_dir ./data/SST2
# 标签列表
label_list [0, 1] # SST2数据集标签列表SST2是情感二分类数据集
# 所需运行的模型名称列表
model_name_list [BertOrigin, BertATT, BertCNN, BertCNNPlus, BertDPCNN, BertRCNN, BertLSTM] # 运行七条基线模型
# 模型保存路径、缓存保存路径、日志保存路径
output_dir ./sst2_output/
cache_dir ./sst2_cache/
log_dir ./sst2_log/
# BERT预训练模型路径中文数据集使用bert-base-chinese英文数据集使用bert-base-uncased
model_name_or_path XXXX/XXX/bert-base-uncased需要运行几条基线就在model_name_list 中保留哪几个模型的名称。中文文本分类需要使用中文版的BERT。 1️⃣ 运行训练脚本
# 注意修改执行的数据集脚本名称如运行SST2数据集时run.sh中应该是python3 run_SST2.py
CUDA_VISIBLE_DEVICES0 bash run.sh# run.sh中的参数说明
max_seq_length句子截断长度
num_train_epochs训练轮数
do_train是否训练
gpu_ids使用的GPU编号注意单卡训练时gpu_ids为0
gradient_accumulation_steps梯度累积步数
print_step打印训练信息的步数验证频率
early_stop早停步数即验证集准确率连续early_stop次不再提升时停止训练。当设置很大时相当于关闭了早停功能。
train_batch_size训练批次大小第一次跑可以直接使用默认配置看是否能运行成功。若爆显存可修改max_seq_length和train_batch_size大小。 2️⃣ 测试模型
# 训练完成后模型保存在output_dir目录下如./sst2_output/BertOrigin/包含模型文件、词表文件、配置文件等。
# 移除run.sh中的do_train参数运行测试脚本
CUDA_VISIBLE_DEVICES0 bash run.sh在源码的设置中其实每训练一个epoch后都在测试集上进行了预测同时记录了对应的结果。所以做不做步骤2其实都可以。保存的结果在./sst2_output/BertXXX/BertXXX/metric_info_for_test.json中。记录的指标包含 {epoch: 1,auc: 0.5,accuracy: 66.69859514687101,P_macro_avg: 44.97381885071993,R_macro_avg: 45.84622325341583,F1_macro_avg: 44.36622804917629,P_weighted_avg: 63.133033572230936,R_weighted_avg: 66.69859514687101,F1_weighted_avg: 63.44510333347591}注意若分类类别大于2则AUC指标设置为0.5不变。 3.4 训练监控 可通过TensorBoard查看训练日志日志路径示例./sst2_log/ tensorboard的使用在此处就不再赘述了若有需要可自行搜索教程