基于TextCNN、TextRNN、Transformer等多个模型的文本分类项目实操总结(包括长文本、短文本)

一、长文本分类

参考项目来源:https://github.com/CLOVEXCWZ/Pytorch_LongText_Classification_Demo

1、数据集介绍

数据集使用的是搜狗新闻数据语料,下载链接:http://thuctc.thunlp.org/ ,新闻语料中主要有包含多个类别,由于考虑到样本量和样本均衡情况,该任务只选取前4种样本量比较多且较为均衡的类别作为项目的数据集,可通过链接:处理后的数据集百度云盘下载地址 提取码:mbt3

下载处理好的数据集的训练集sougou_train.txt和验证集sougou_dev.txt,下载后放在Pytorch_LongText_Classification_Demo-master\datas\SougouNews目录下。

数据集每一行的格式为: 文本+Tab+标签

数据集情况如下:

类别数量对应index
sports 85984 0
news 827401
house712212
business618433

2、数据预处理

可运行文件dataprocess.py中的代码

    train_char = load_dataset(model='train', leve='char', max_setence=10, max_words=50)

进行数据预处理生成词典,处理逻辑是对长文本按句子分割,再对句子按词或字分割,选取前max_setence的前max_words的字或词,然后统计出现的字或词的频率,按频率从高到低排序,选取排名前50000的字或词,生成pkl文件用于保存这些词或字的索引,最后将训练文本按词或字转成成对应的索引向量。

model='train'表示对训练数据做处理,'dev'表示对验证数据做处理;leve='char'表示对文本按字分割,'word'表示按词分割,生成的对应pkl文件为char_vocab.pkl和word_vocab.pkl

若运行过程中,以下代码出现bug

    samples_b = np.array(samples_b)

改成这样即可

    samples_b = np.array(samples_b, dtype=object)

3、模型训练

运行文件train_all.py可训练模型

用到的模型有fasttext、textcnn、textrcnn、textrnn和transformer

参数leve = 'char'表示训练字级别的模型,'word'表示训练词级别

模型结构介绍可参考:https://zhuanlan.zhihu.com/p/73176084

Transformer模型的介绍可参考:

训练结果:

网络字级别(准确率)词级别(准确率)
FastText0.94100.9650
TextCNN0.96620.9693
TextRNN0.9661  0.9702
TextRCNN0.97050.9712
Transformer0.96440.9684


 二、短文本分类

短文本分类可参考链接:https://github.com/CLOVEXCWZ/Pytorch_Text_Classification_Demo

模型效果:

网络模型准确率
FastText85.34%
TextCNN89.62%
TextRNN88.9%
TextRCNN90.22%
Transformer88.98%

也可参考链接:https://github.com/649453932/Chinese-Text-Classification-Pytorch?tab=readme-ov-file ,使用的模型更多

模型效果:

模型 准确率备注
TextCNN91.22%Kim 2014 经典的CNN文本分类
TextRNN91.12%BiLSTM
TextRNN_Att90.90%BiLSTM+Attention
TextRCNN91.54% BiLSTM+池化
FastText 92.23%bow+bigram+trigram, 效果出奇的好
DPCNN91.25%深层金字塔CNN
Transformer89.91%效果较差
bert94.83%bert + fc
ERNIE94.61%比bert略差(说好的中文碾压bert呢)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值