IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> Pytorch实现中文文本分类任务(Bert,ERNIE,TextCNN,TextRNN,FastText,TextRCNN,BiLSTM_Attention DPCNN Transformer) -> 正文阅读

[人工智能]Pytorch实现中文文本分类任务(Bert,ERNIE,TextCNN,TextRNN,FastText,TextRCNN,BiLSTM_Attention DPCNN Transformer)

Chinese-Text-Classification

Github项目地址:https://github.com/JackHCC/Chinese-Text-Classification-PyTorch

中文文本分类,基于pytorch,开箱即用。

  • 神经网络模型:TextCNN,TextRNN,FastText,TextRCNN,BiLSTM_Attention, DPCNN, Transformer

  • 预训练模型:Bert,ERNIE

介绍

神经网络模型

模型介绍、数据流动过程:参考

数据以字为单位输入模型,预训练词向量使用 搜狗新闻 Word+Character 300d点这里下载

模型介绍
TextCNNKim 2014 经典的CNN文本分类
TextRNNBiLSTM
TextRNN_AttBiLSTM+Attention
TextRCNNBiLSTM+池化
FastTextbow+bigram+trigram, 效果出奇的好
DPCNN深层金字塔CNN
Transformer效果较差

预训练模型

模型介绍备注
bert原始的bert
ERNIEERNIE
bert_CNNbert作为Embedding层,接入三种卷积核的CNNbert + CNN
bert_RNNbert作为Embedding层,接入LSTMbert + RNN
bert_RCNNbert作为Embedding层,通过LSTM与bert输出拼接,经过一层最大池化层bert + RCNN
bert_DPCNNbert作为Embedding层,经过一个包含三个不同卷积特征提取器的region embedding层,可以看作输出的是embedding,然后经过两层的等长卷积来为接下来的特征抽取提供更宽的感受眼,(提高embdding的丰富性),然后会重复通过一个1/2池化的残差块,1/2池化不断提高词位的语义,其中固定了feature_maps,残差网络的引入是为了解决在训练的过程中梯度消失和梯度爆炸的问题。bert + DPCNN

参考:

环境

python 3.7
pytorch 1.1
tqdm
sklearn
tensorboardX
pytorch_pretrained_bert(预训练代码也上传了, 不需要这个库了)

中文数据集

我从THUCNews中抽取了20万条新闻标题,已上传至github,文本长度在20到30之间。一共10个类别,每类2万条。数据以字为单位输入模型。

类别:财经、房产、股票、教育、科技、社会、时政、体育、游戏、娱乐。

数据集划分:

数据集数据量
训练集18万
验证集1万
测试集1万

更换数据集

  • 按照THUCNews数据集的格式来格式化自己的中文数据集。
  • 对于神经网络模型:
    • 如果用字,按照数据集的格式来格式化你的数据。
    • 如果用词,提前分好词,词之间用空格隔开,python run.py --model TextCNN --word True
    • 使用预训练词向量:utils.py的main函数可以提取词表对应的预训练词向量。

实验效果

机器:一块2080Ti , 训练时间:30分钟。

模型acc备注
TextCNN91.22%Kim 2014 经典的CNN文本分类
TextRNN91.12%BiLSTM
TextRNN_Att90.90%BiLSTM+Attention
TextRCNN91.54%BiLSTM+池化
FastText92.23%bow+bigram+trigram, 效果出奇的好
DPCNN91.25%深层金字塔CNN
Transformer89.91%效果较差
bert94.83%单纯的bert
ERNIE94.61%说好的中文碾压bert呢
bert_CNN94.44%bert + CNN
bert_RNN94.57%bert + RNN
bert_RCNN94.51%bert + RCNN
bert_DPCNN94.47%bert + DPCNN

原始的bert效果就很好了,把bert当作embedding层送入其它模型,效果反而降了,之后会尝试长文本的效果对比。

预训练语言模型

bert模型放在 bert_pretain目录下,ERNIE模型放在ERNIE_pretrain目录下,每个目录下都是三个文件:

  • pytorch_model.bin
  • bert_config.json
  • vocab.txt

预训练模型下载地址:

bert_Chinese: 模型 https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese.tar.gz
词表 https://s3.amazonaws.com/models.huggingface.co/bert/bert-base-chinese-vocab.txt

来自这里

备用:模型的网盘地址:https://pan.baidu.com/s/1qSAD5gwClq7xlgzl_4W3Pw

ERNIE_Chinese: https://pan.baidu.com/s/1lEPdDN1-YQJmKEd_g9rLgw

来自这里

解压后,按照上面说的放在对应目录下,文件名称确认无误即可。

使用说明

神经网络方法

# 训练并测试:
# TextCNN
python run.py --model TextCNN

# TextRNN
python run.py --model TextRNN

# TextRNN_Att
python run.py --model TextRNN_Att

# TextRCNN
python run.py --model TextRCNN

# FastText, embedding层是随机初始化的
python run.py --model FastText --embedding random 

# DPCNN
python run.py --model DPCNN

# Transformer
python run.py --model Transformer

预训练方法

下载好预训练模型就可以跑了:

# 预训练模型训练并测试:
# bert
python pretrain_run.py --model bert

# bert + 其它
python pretrain_run.py --model bert_CNN

# ERNIE
python pretrain_run.py --model ERNIE

预测

预训练模型:

python pretrain_predict.py

神经网络模型:

python predict.py

参数

模型都在models目录下,超参定义和模型定义在同一文件中。

参考

论文

[1] Convolutional Neural Networks for Sentence Classification

[2] Recurrent Neural Network for Text Classification with Multi-Task Learning

[3] Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification

[4] Recurrent Convolutional Neural Networks for Text Classification

[5] Bag of Tricks for Efficient Text Classification

[6] Deep Pyramid Convolutional Neural Networks for Text Categorization

[7] Attention Is All You Need

[8] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

[9] ERNIE: Enhanced Representation through Knowledge Integration

仓库

本项目基于以下仓库继续开发优化:

  • https://github.com/649453932/Chinese-Text-Classification-Pytorch
  • https://github.com/649453932/Bert-Chinese-Text-Classification-Pytorch
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-06-18 23:24:40  更:2022-06-18 23:25:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:41:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码