基于Transformers+CNN/LSTM/GRU的文本分类

2020 年 1 月 10 日 深度学习自然语言处理

点击上方,选择星标置顶,每天给你送干货

阅读大概需要5分钟

跟随小博主,每天进步一丢丢


转载自:NLP太难了 公众号

Transformers_for_Text_Classification

本项目的Github地址

https://github.com/zhanlaoban/Transformers_for_Text_Classification

基于Transformers的文本分类

基于最新的 huggingface 出品的 transformers v2.2.2代码进行重构。为了保证代码日后可以直接复现而不出现兼容性问题,这里将 transformers 放在本地进行调用。

Highlights

  • 支持transformer模型后接各种特征提取器
  • 支持测试集预测代码
  • 精简原始transformers代码,使之更适合文本分类任务
  • 优化logging终端输出,使之输出内容更加合理

Support

model_type:

  • [✔] bert
  • [✔] bert+cnn
  • [✔] bert+lstm
  • [✔] bert+gru
  • [✔] xlnet
  • [ ] xlnet+cnn
  • [✔] xlnet+lstm
  • [✔] xlnet+gru
  • [ ] albert

Content

  • dataset: 存放数据集
  • pretrained_models: 存放预训练模型
  • transformers: transformers文件夹
  • results: 存放训练结果

Usage

1. 使用不同模型

在shell文件中修改model_type参数即可指定模型

如,BERT后接FC全连接层,则直接设置model_type=bertBERT后接CNN卷积层,则设置model_type=bert_cnn.

在本README的Support中列出了本项目中各个预训练模型支持的model_type

最后,在终端直接运行shell文件即可,如:

bash run_classifier.sh

在中文RoBERTa、ERNIE、BERT_wwm这三种预训练语言模型中,均使用BERT的model_type进行加载。

2. 使用自定义数据集

  1. dataset 文件夹里存放自定义的数据集文件夹,如 TestData .
  2. 在根目录下的 utils.py 中,仿照 class THUNewsProcessor 写一个自己的类,如命名为 class TestDataProcessor ,并在 tasks_num_labels , processors , output_modes 三个dict中添加相应内容.
  3. 最后,在你需要运行的shell文件中修改TASK_NAME为你的任务名称,如 TestData .

Environment

  • one 2080Ti, 12GB RAM

  • Python: 3.6.5

  • PyTorch: 1.3.1

  • TensorFlow: 1.14.0(仅为了支持TensorBoard,无其他作用)

  • Numpy: 1.14.6

Performance

数据集: THUNews/5_5000

epoch:1

train_steps: 5000

model dev set best F1 and Acc remark
bert_base 0.9308, 0.9324 BERT接FC层, batch_size 8, learning_rate 2e-5
bert_base+cnn 0.9136, 0.9156 BERT接CNN层, batch_size 8, learning_rate 2e-5
bert_base+lstm 0.9369, 0.9372 BERT接LSTM层, batch_size 8, learning_rate 2e-5
bert_base+gru 0.9379, 0.938 BERT接GRU层, batch_size 8, learning_rate 2e-5
roberta_large
RoBERTa接FC层, batch_size 2, learning_rate 2e-5
xlnet_large 0.9530, 0.954 XLNet接FC层, batch_size 2, learning_rate 2e-5
xlnet_mid+lstm 0.9269, 0.9304 XLNet接LSTM层, batch_size 2, learning_rate 2e-5
xlnet_mid+gru 0.9494, 0.9508 XLNet接GRU层, batch_size 2, learning_rate 2e-5
albert_xlarge_183k

Download Chinese Pre-trained Models

NPL_PEMDC(https://github.com/zhanlaoban/NLP_PEMDC)


欢迎大家踊跃投稿!



方便交流学习,备注: 昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多: 机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等
记得备注呦


推荐阅读:
【ACL 2019】腾讯AI Lab解读三大前沿方向及20篇入选论文
【一分钟论文】IJCAI2019 | Self-attentive Biaffine Dependency  Parsing
【一分钟论文】 NAACL2019-使用感知句法词表示的句法增强神经机器翻译
【一分钟论文】Semi-supervised Sequence Learning半监督序列学习
【一分钟论文】Deep Biaffine Attention for Neural Dependency Parsing
详解Transition-based Dependency parser基于转移的依存句法解析器
经验 | 初入NLP领域的一些小建议
学术 | 如何写一篇合格的NLP论文
干货 | 那些高产的学者都是怎样工作的?
一个简单有效的联合模型
近年来NLP在法律领域的相关研究工作




让更多的人知道你“在看”
登录查看更多
3

相关内容

循环神经网络的一种门机制
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
一份循环神经网络RNNs简明教程,37页ppt
专知会员服务
168+阅读 · 2020年5月6日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
209+阅读 · 2020年4月26日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
76+阅读 · 2020年2月3日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
一文读懂深度学习文本分类方法
AINLP
15+阅读 · 2019年6月6日
NLP - 基于 BERT 的中文命名实体识别(NER)
AINLP
466+阅读 · 2019年2月10日
NLP - 15 分钟搭建中文文本分类模型
AINLP
79+阅读 · 2019年1月29日
CNN与RNN中文文本分类-基于TensorFlow 实现
七月在线实验室
13+阅读 · 2018年10月30日
基于Lattice LSTM的命名实体识别
微信AI
47+阅读 · 2018年10月19日
收藏!CNN与RNN对中文文本进行分类--基于TENSORFLOW实现
全球人工智能
12+阅读 · 2018年5月26日
基于attention的seq2seq机器翻译实践详解
黑龙江大学自然语言处理实验室
11+阅读 · 2018年3月14日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
开源|基于tensorflow使用CNN-RNN进行中文文本分类!
全球人工智能
11+阅读 · 2017年11月12日
Arxiv
6+阅读 · 2019年9月4日
Arxiv
6+阅读 · 2019年4月8日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
The Evolved Transformer
Arxiv
5+阅读 · 2019年1月30日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Arxiv
9+阅读 · 2018年10月24日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
13+阅读 · 2017年12月5日
VIP会员
相关VIP内容
基于多头注意力胶囊网络的文本分类模型
专知会员服务
76+阅读 · 2020年5月24日
一份循环神经网络RNNs简明教程,37页ppt
专知会员服务
168+阅读 · 2020年5月6日
深度学习自然语言处理概述,216页ppt,Jindřich Helcl
专知会员服务
209+阅读 · 2020年4月26日
CVPR2020 | 商汤-港中文等提出PV-RCNN:3D目标检测新网络
专知会员服务
43+阅读 · 2020年4月17日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
Transformer文本分类代码
专知会员服务
116+阅读 · 2020年2月3日
【MIT深度学习课程】深度序列建模,Deep Sequence Modeling
专知会员服务
76+阅读 · 2020年2月3日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
最新BERT相关论文清单,BERT-related Papers
专知会员服务
52+阅读 · 2019年9月29日
相关资讯
一文读懂深度学习文本分类方法
AINLP
15+阅读 · 2019年6月6日
NLP - 基于 BERT 的中文命名实体识别(NER)
AINLP
466+阅读 · 2019年2月10日
NLP - 15 分钟搭建中文文本分类模型
AINLP
79+阅读 · 2019年1月29日
CNN与RNN中文文本分类-基于TensorFlow 实现
七月在线实验室
13+阅读 · 2018年10月30日
基于Lattice LSTM的命名实体识别
微信AI
47+阅读 · 2018年10月19日
收藏!CNN与RNN对中文文本进行分类--基于TENSORFLOW实现
全球人工智能
12+阅读 · 2018年5月26日
基于attention的seq2seq机器翻译实践详解
黑龙江大学自然语言处理实验室
11+阅读 · 2018年3月14日
tensorflow LSTM + CTC实现端到端OCR
机器学习研究会
26+阅读 · 2017年11月16日
开源|基于tensorflow使用CNN-RNN进行中文文本分类!
全球人工智能
11+阅读 · 2017年11月12日
相关论文
Arxiv
6+阅读 · 2019年9月4日
Arxiv
6+阅读 · 2019年4月8日
Universal Transformers
Arxiv
5+阅读 · 2019年3月5日
The Evolved Transformer
Arxiv
5+阅读 · 2019年1月30日
Attend More Times for Image Captioning
Arxiv
6+阅读 · 2018年12月8日
Arxiv
9+阅读 · 2018年10月24日
Arxiv
21+阅读 · 2018年5月23日
Arxiv
8+阅读 · 2018年1月25日
Arxiv
13+阅读 · 2017年12月5日
Top
微信扫码咨询专知VIP会员