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

阅读大概需要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=bert;BERT后接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在法律领域的相关研究工作


让更多的人知道你“在看”

基于Transformers+CNN/LSTM/GRU的文本分类相关推荐

  1. 猿创征文丨深度学习基于双向LSTM模型完成文本分类任务

    大家好,我是猿童学,本期猿创征文的第三期,也是最后一期,给大家带来神经网络中的循环神经网络案例,基于双向LSTM模型完成文本分类任务,数据集来自kaggle,对电影评论进行文本分类. 电影评论可以蕴含 ...

  2. 深度学习基于双向 LSTM 模型完成文本分类任务

    大家好,本期给大家带来神经网络中的循环神经网络案例,基于双向LSTM模型完成文本分类任务,数据集来自kaggle,对电影评论进行文本分类. 电影评论可以蕴含丰富的情感:比如喜欢.讨厌.等等.情感分析( ...

  3. 基于Keras搭建LSTM网络实现文本情感分类

    基于Keras搭建LSTM网络实现文本情感分类 一.语料概况 1.1 数据统计 1.1.1 查看样本均衡情况,对label进行统计 1.1.2 计句子长度及长度出现的频数 1.1.3 绘制句子长度累积 ...

  4. 【文本分类】基于BERT预训练模型的灾害推文分类方法、基于BERT和RNN的新闻文本分类对比

    ·阅读摘要: 两篇论文,第一篇发表于<图学学报>,<图学学报>是核心期刊:第二篇发表于<北京印刷学院学报>,<北京印刷学院学报>没有任何标签. ·参考文 ...

  5. 【文本分类】基于改进TF-IDF特征的中文文本分类系统

    摘要:改进TFIDF,提出相似度因子,提高了文本分类准确率. 参考文献:[1]但唐朋,许天成,张姝涵.基于改进TF-IDF特征的中文文本分类系统[J].计算机与数字工程,2020,48(03):556 ...

  6. 基于协同训练的半监督文本分类算法

    标签: 半监督学习,文本分类 作者:炼己者 --- 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! 如果大家觉得格式看着不舒服,也欢迎大家去看我的 ...

  7. 基于Kaggle数据的词袋模型文本分类教程

     基于Kaggle数据的词袋模型文本分类教程 发表于23小时前| 454次阅读| 来源FastML| 0 条评论| 作者Zygmunt Z 词袋模型文本分类word2vecn-gram机器学习 w ...

  8. cnn 预测过程代码_代码实践 | CNN卷积神经网络之文本分类

    学习目录阿力阿哩哩:深度学习 | 学习目录​zhuanlan.zhihu.com 前面我们介绍了:阿力阿哩哩:一文掌握CNN卷积神经网络​zhuanlan.zhihu.com阿力阿哩哩:代码实践|全连 ...

  9. Tensorflow使用LSTM实现中文文本分类(1)

    前言 使用Tensorflow,利用LSTM进行中文文本的分类. 数据集格式如下: ''' 体育 马晓旭意外受伤让国奥警惕 无奈大雨格外青睐殷家军记者傅亚雨沈阳报道 来到沈阳,国奥队依然没有摆脱雨水的 ...

  10. PyTorch入门(五)使用CNN模型进行中文文本分类

      本文将会介绍如何在PyTorch中使用CNN模型进行中文文本分类.   使用CNN实现中文文本分类的基本思路: 文本预处理 将字(或token)进行汇总,形成字典文件,可保留前n个字 文字转数字, ...

最新文章

  1. 你面试稳了!通关LeetCode刷题完整攻略,省时又高效
  2. 工业电脑中PCI、CPCI、PXI插槽的区别
  3. 如何使用Meter-WebSocketSampler
  4. ccpc中国大学生首届程序设计竞赛
  5. 牛逼!一款基于SpringBoot的微信点餐系统
  6. win10时间自动更新错误
  7. CentOS 7下安装Tomcat8.0.53并设置自动启动:
  8. C++将二进制转换为十进制
  9. NetWorker Pro for Mac (菜单栏网速监测显示工具) v8.11
  10. 大疆Tello EDU版本(新发布)
  11. GitHub网站的主题设置
  12. 深度学习入门笔记(十七):深度学习的极限在哪?
  13. 数据库中如何备份数据
  14. 谷歌浏览器中英文切换
  15. 英语四级作文备战全攻略
  16. jenkins中maven的安装及配置,如何在jenkins中创建maven任务。
  17. BS1039-基于Python+BS架构开发实现在线图书管理系统
  18. 简单理解ASCLL码
  19. ippicv_2020_lnx_intel64_20191018_general.tgz 无法下载
  20. Mathematica 科学计算软件

热门文章

  1. vue.js MVVM模式介绍及案例
  2. hdu5652:India and China Origins(并查集)
  3. maven内部运行原理解析
  4. angularjs compile和link
  5. [Swift]LeetCode1051.高度检查器 | Height Checker
  6. 『007』MySQL
  7. flask—wtforms
  8. iOS 去掉UISearchBar输入框上面的黑线
  9. 如何导出ane所需的swc
  10. CentOS的SSH,Putty配置说明