NLP极简数据增强+源码

2019 年 11 月 4 日 AINLP

对于变化莫测的神经网络,虽然有时候模型表现很好,但可能把输入加一些噪声就会生成完全相反的输出,这时候数据增强就很重要,一方面可以根据当前数据分布生成更多样化的训练数据,提升模型的效果;另一方面可以生成有噪声的测试数据,评估模型的鲁棒性。

NLP的数据增强一直是个难题,本来数据的标注成本就高一些,还不好添添补补,比如情感分类,把“不高兴”的“不”字去掉了,整句话的意思就变了。相比之下,图像不仅可以翻转、平移、加噪,还有高级的GAN,不知道NLP什么时候也能gan一把。

今天分享一个很简单的、基于马尔可夫链的生成式数据增强方法,比起纯规则的增删改来说,能生成多样化的句子,比起生成模型来说又没那么难,主要用于分类任务,可以快速实现,看看在自己的任务上有没有效果。

源码已上传至:https://github.com/leerumor/nlpcab/blob/master/code/markovdataaugmentation.py

基于马尔可夫链的数据增强

马尔可夫链指具有马尔可夫性质的离散随机变量的集合,马尔可夫性质是指在随机变量的序列中,下一状态的概率分布只由当前状态决定,与之前的时间无关,即:

这样我们只要知道所有词之间的条件概率分布,就可以一个个地把词拼成句子。

具体的做法很简单,就是用词典(dict)保存两个词之间的关系,每个词是一个key,value是在该词后出现的所有词的列表。另外,可以只统计特定label下数据的条件概率,即每个label对应一个词典,这样就能根据label生成文本。最后,为了尽可能和数据集的分布一致,可以提前把句子的长度分布统计好,并在最后生成句子时指定长度。

大概的算法如下:

  1. 预处理:分词、统计句子长度分布

  2. 根据各个label的训练数据生成多个词典

  3. 根据词典和长度生成句子文本

用这种方法生成的数据可读性并不强,但在词向量+maxpooling这种分类场景下却比较实用,而且也可以作为带噪声的评估集查看模型效果。

效果展示

任务:新闻分类

数据:ChineseGLUE里头条新闻标题分类任务TNEWS的训练数据(链接见文末)

一共15个类,每类我都生成了一些数据,这里选取一些能看的分享下,以空格分割词语:

  
  
    
  1. news_story: 救护车 当婚车 无意 听到 婚前

  2. news_story: 想得美 河北 情义 女子 离家出走 孩子

  3. news_story: 一月 妻子 打工 回家 听到 儿媳

  4. news_culture: 墨家 为什么 黄药师 无意间 透出 答案

  5. news_culture: 刽子手 推荐 哪些 原来 这么

  6. news_entertainment: 大师 主题曲 天宇 古装 眼光

  7. news_entertainment: 沦为 家妓 网友 与其 替身 合照

  8. news_sports: 跌下 神坛 听清哥 分析 两队 情侣 求婚

  9. news_sports: 中德之战 索萨 信任 威廉 王子 如此 精明

  10. news_finance: 第二十三 伊利 中国 股市 何时能 突破

  11. news_finance: 周海江 马化腾 马斯克 豪掷 4

  12. news_house: 90% 以上 揭露 高房价 时间

  13. news_house: 部委 发文 现在 楼盘 抢先 抛售 房子

  14. news_car: 裸价 6 北汽 要火 为啥 适合

  15. news_car: 发达国家 SUV 车型 性价比 如何 选择 CT6

  16. news_edu: 孩子 补课 懂得 感恩

  17. news_tech: 亿万 身家 雷军 为什么 小商贩 小商店 盯上

  18. news_military: 纸上谈兵 现在 盟友 失败 伊朗 研发 核武器

  19. news_travel: 大本营 住宿 100 上海 英式 设计 惊艳

  20. stock: 下行 通道 年销售额 2000 怎么

  21. news_agriculture: 强调 大力 整顿 农村 产业 示范园区 点名

  22. news_game: 蛇皮 走位 丝血 反杀 剑网

目前还没有测试过在实际分类任务上的效果,但原po主在kaggle上的Uber Ride Reviews Dataset情感分析数据上得到了不错的结论。分别用这种方法生成了Augmented Train和Fake Test,用TF-IDF作为特征,感知机、逻辑回归、随机森林作为模型,效果如下:

原po没用更复杂的模型,所以也不能肯定的说这种方法就好,只是对于简单模型有提升。

总结

介绍这个数据增强方法主要是因为它可以快速实现,又比纯规则的增删改强一些,可以用在简单的文本分类任务中;但具体情况也视模型而定,如果现有的数据很多、模型复杂度也够,增强训练语料可能会带来反效果,但这并不妨碍我们生成一些假样本测试模型的稳定性。另外,从生成的样本可以看出有不少地方可以改进,例如加入结束符、去重等。

感谢阅读~

参考资料:

  1. https://towardsdatascience.com/text-data-augmentation-makes-your-model-stronger-7232bd23704

  2. https://github.com/chineseGLUE/chineseGLUE

  3. https://www.kaggle.com/purvank/uber-rider-reviews-dataset




本文转载自公众号: NLPCAB,作者:李如


推荐阅读

ELECTRA: 超越BERT, 19年最佳NLP预训练模型

T5 模型:NLP Text-to-Text 预训练模型超大规模探索

Google T5速读

BERT 瘦身之路:Distillation,Quantization,Pruning

超小型bert横空出世:训练和预测提速10倍


关于AINLP


AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。


登录查看更多
1

相关内容

数据增强在机器学习领域多指采用一些方法(比如数据蒸馏,正负样本均衡等)来提高模型数据集的质量,增强数据。
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
【论文推荐】文本摘要简述
专知会员服务
67+阅读 · 2020年7月20日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
六篇 EMNLP 2019【图神经网络(GNN)+NLP】相关论文
专知会员服务
71+阅读 · 2019年11月3日
【Github】GPT2-Chinese:中文的GPT2训练代码
AINLP
52+阅读 · 2019年8月23日
BERT源码分析PART I
AINLP
38+阅读 · 2019年7月12日
一文详解Google最新NLP模型XLNet
PaperWeekly
17+阅读 · 2019年7月1日
中文自然语言处理数据集:ChineseNLPCorpus
AINLP
31+阅读 · 2019年6月21日
奇点已过?聊聊BERT之后的NLP时代
AI研习社
4+阅读 · 2019年6月6日
解读谷歌最强NLP模型BERT:模型、数据和训练
未来产业促进会
5+阅读 · 2018年10月20日
收藏!CNN与RNN对中文文本进行分类--基于TENSORFLOW实现
全球人工智能
12+阅读 · 2018年5月26日
word2vec中文语料训练
全球人工智能
12+阅读 · 2018年4月23日
Question Generation by Transformers
Arxiv
5+阅读 · 2019年9月14日
Arxiv
11+阅读 · 2019年6月19日
Arxiv
3+阅读 · 2017年12月18日
VIP会员
相关VIP内容
【ICML2020】统一预训练伪掩码语言模型
专知会员服务
25+阅读 · 2020年7月23日
基于改进卷积神经网络的短文本分类模型
专知会员服务
25+阅读 · 2020年7月22日
【论文推荐】文本摘要简述
专知会员服务
67+阅读 · 2020年7月20日
【Amazon】使用预先训练的Transformer模型进行数据增强
专知会员服务
56+阅读 · 2020年3月6日
【干货】用BRET进行多标签文本分类(附代码)
专知会员服务
84+阅读 · 2019年12月27日
六篇 EMNLP 2019【图神经网络(GNN)+NLP】相关论文
专知会员服务
71+阅读 · 2019年11月3日
相关资讯
【Github】GPT2-Chinese:中文的GPT2训练代码
AINLP
52+阅读 · 2019年8月23日
BERT源码分析PART I
AINLP
38+阅读 · 2019年7月12日
一文详解Google最新NLP模型XLNet
PaperWeekly
17+阅读 · 2019年7月1日
中文自然语言处理数据集:ChineseNLPCorpus
AINLP
31+阅读 · 2019年6月21日
奇点已过?聊聊BERT之后的NLP时代
AI研习社
4+阅读 · 2019年6月6日
解读谷歌最强NLP模型BERT:模型、数据和训练
未来产业促进会
5+阅读 · 2018年10月20日
收藏!CNN与RNN对中文文本进行分类--基于TENSORFLOW实现
全球人工智能
12+阅读 · 2018年5月26日
word2vec中文语料训练
全球人工智能
12+阅读 · 2018年4月23日
相关论文
Question Generation by Transformers
Arxiv
5+阅读 · 2019年9月14日
Arxiv
11+阅读 · 2019年6月19日
Arxiv
3+阅读 · 2017年12月18日
Top
微信扫码咨询专知VIP会员