每天给你送来NLP技术干货!


来自:NLP工作站

作者:刘聪NLP

前两天刷arXiv时,刷到了一篇蛮有意思的论文,今天跟大家分享一下。论文来自EMNLP2021,论文全称为AEDA:AnEasier Data Augmentation Technique for Text Classification,即一种更简单的文本分类数据增强技术

论文地址:https://arxiv.org/pdf/2108.13230.pdf

代码地址:https://github.com/akkarimi/aeda_nlp

在人工智能领域,为了使模型具有更好地泛化能力,一般需要更多更全面的训练数据集;而往往真实情况,在工业界获取大量标注数据是不现实的;这时,数据增强技术就尤为关键。

2019年的EDA(Easy Data Augmentation Techniques for Boosting Performance on TextClassification Tasks)论文发表于ICLR 2019,提出了四种简单的数据增强操作,包括:同义词替换(通过同义词表将句子中的词语进行同义词替换)、随机交换(随机交换句子的两个词语,改变语序)、随机插入(在原始句子中随机插入,句子中某一个词的同义词)和随机删除(随机删除句子中的词语)。

目前,也有一些其他的数据增强方法,例如:同义词替换不使用词表,而是使用词向量或者预训练语言模型;通过在在文本中插入一些符合或者词语,来增加噪声;将句子通过翻译器翻译成另外一种语言再翻译回来的回译手段等。

AEDA Augmentation

该论文所提出的AEDA方法,主要是在原始文本中随机插入一些标点符号,属于增加噪声的一种,主要与EDA论文对标,突出“简单”二字。注意:该方法仅适用于文本分类任务

Q:插入多少标点符号?

A:从1到三分之一句子长度中,随机选择一个数,作为插入标点符号的个数。

Q:为什么是1到三分之一句长?

A:作者表示,即想每个句子中有标点符号插入,增加句子的复杂性;又不想加入太多标点符号,过于干扰句子的语义信息,并且太多噪声对模型可能有负面影响。

Q:句子插入标点符号的位置如何选取?

A:随机插入。

Q:标点符号共包含哪些?

A:主要有6种,“.”、“;”、“?”、“:”、“!”、“,”。

Q:AEDA比EDA效果好的理论基础是什么?

A:作者认为,EDA方法,如论是同义词替换,还是随机替换、随机插入、随机删除,都改变了原始文本的序列信息;而AEDA方法,只是插入标点符号,对于原始数据的序列信息修改不明显。个人理解,通过词语修改的方法,与原始语义改变可以更加负面;而仅插入一些标点符号,虽然增加了噪声,但是原始文本的语序并没有改变

代码如下:

PUNCTUATIONS = ['.', ',', '!', '?', ';', ':']
PUNC_RATIO = 0.3def insert_punctuation_marks(sentence, punc_ratio=PUNC_RATIO):words = sentence.split(' ')new_line = []q = random.randint(1, int(punc_ratio * len(words) + 1))qs = random.sample(range(0, len(words)), q)for j, word in enumerate(words):if j in qs:new_line.append(PUNCTUATIONS[random.randint(0, len(PUNCTUATIONS)-1)])new_line.append(word)else:new_line.append(word)new_line = ' '.join(new_line)return new_line

Experimental Setup

1、AEDA方法与EDA方法在不同数据比例上,RNN模型和CNN模型的效果比较。

从下表可以看出,在RNN模型和CNN模型上,AEDA方法均好于EDA方法和原始训练方法。并且EDA方法,在数据集比较小时,效果有所提升;数据集增大后,效果有所下降。而AEDA方法,如论数据集大小,效果均匀提升,不过数据集越小,提升的越明显。

下图为,AEDA方法与EDA方法在不同数据集上的效果分布图,更加验证了上述观点。

2、数据增强比例的影响。

如下图所示,当数据集较小时,数据增强倍数越大,效果提升的越明显;但是当数据量较大时,数据增强倍数越大,效果提升将会下降。

3、在深度模型(BERT)中,该方法依然有效。

如下表所示,在BERT模型上,AEDA方法依然有效,只不过提升不明显。而EDA方法却使效果降低。

总结

ADEA方法主要突出“简单”二字,个人觉得还是蛮有意思的。在工业界,有时为了推理速度,常常采用一些小模型,并且真的没有客户原因给你标数据,这时数据增强技术就派上了大用处。


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

EMNLP2021之AEDA:一种更简单的文本分类数据增强技术相关推荐

  1. 总结 62 种在深度学习中的数据增强方式

    数据增强 数据增强通常是依赖从现有数据生成新的数据样本来人为地增加数据量的过程 这包括对数据进行不同方向的扰动处理 或使用深度学习模型在原始数据的潜在空间(latent space)中生成新数据点从而 ...

  2. 一种单独适配于NER的数据增强方法:DAGA

    链接:http://www.elecfans.com/d/1468784.html 本文首先介绍传统的数据增强在NER任务中的表现,然后介绍一种单独适配于NER的数据增强方法,这种方法生成的数据更具丰 ...

  3. AutoAugment: Learning Augmentation Policies from Data(一种自动数据增强技术)

    谷歌大脑提出自动数据增强方法AutoAugment:可迁移至不同数据集 近日,来自谷歌大脑的研究者在 arXiv 上发表论文,提出一种自动搜索合适数据增强策略的方法 AutoAugment,该方法创建 ...

  4. SimMIM:一种更简单的MIM方法

    自从何恺明的MAE(←点击蓝字查看文章详情)出来之后,基于MIM(Masked Image Modeling)的无监督学习方法越来越受到关注.这里介绍一篇和MAE同期的工作:SimMIM: A Sim ...

  5. simhash算法和余弦相似度算法哪种更适合微博文本的相似度计算

    对于微博文本的相似度计算,simhash算法可能更适合. 余弦相似度算法是一种常见的文本相似度计算方法,它可以计算两个文本向量之间的夹角余弦值,用于衡量它们的相似度.但是,当面对大量文本时,计算文本向 ...

  6. EMNLP2021论文:元学习大规模多标签文本分类

    每天给你送来NLP技术干货! 来自:南大NLP 01 - 研究动机 大规模多标签文本分类(简称LMTC)是自然语言处理领域中一个十分重要的任务,其旨在从一个大规模的标签集合(标签集合大小一般以千为数量 ...

  7. 一种更简单的求最小平方均值函数(MSE)的方法 -- 梯度下降法。

    在上一篇博客中我们通过解析解法算出来了 但是上面公式中的对称阵是N维乘以N维的,复杂度为O(n*n*n),虽然很精准但是很慢. 为此我们引入梯度下降法 我们首先大致画出MSE的图像,MSE是一个开口向 ...

  8. panda 满足条件的行 index_Excel – 困扰很久的跳过隐藏行粘贴,2 种更简单的方法了解一下...

    跳过隐藏行/列复制不难,只要选取区域以后按 Alt+; 就可以了:但是要跳过隐藏行/列粘贴的话,就不那么容易了. 我曾经写过一个解决方案,具体可参见 Excel 实用 tips(七) – 粘贴时如何跳 ...

  9. php json csv,比JSON更简单,随便记数据的CSV介绍,以及PHP解析方法-csv文件怎么打开...

    聊起记录数据-- 用什么文件格式记录我的数据比较方便? 简单的往往是最好的. 今天介绍一个文件格式CSV. 它可以记录类似表格的数据也可以记录数组,数据太小不想用数据库?用这个. CSV是个啥? 很简 ...

  10. [学习日志]使用pytorch 和 bert 实现一个简单的文本分类任务

    项目简介 最近在学习pytorch和Bert,所以做了一个这样完全新手向的入门项目来练习. 由于之前在网上学习发现现存的教程比较少,所以记录一下自己的学习过程,加深印象,也希望能帮到别的学习者吧,能涨 ...

最新文章

  1. 突发!贝壳董事长左晖因疾病意外去世
  2. Tensorflow安装与测试
  3. mysql查询各科前3_MySQL 查询各科前三的数据
  4. 网络编程释疑之:TCP连接拔掉网线后会发生什么
  5. Year-End Review
  6. 报错,o.h.engine.jdbc.spi.SqlExceptionHelper   : Unknown column ‘template_name‘ in ‘field list‘
  7. java JDBC操作MySQL数据库
  8. 错误: 找不到或无法加载主类 helloworld_你还不知道Java的类加载机制?
  9. Python 机器学习 随机森林 天气最高温度预测任务(三)
  10. R in action读书笔记(3)-第六章:基本图形
  11. mysql into outfile语法_select into outfile
  12. 5.支付平台架构:业务、规划、设计与实现 --- 账务系统
  13. 阶段3 1.Mybatis_10.JNDI扩展知识_3 补充-测试JNDI数据源的使用以及使用细节
  14. 字符编码(1)-- 基本概念
  15. 适用于中小型公司代理服务器的IPTABLES脚本
  16. 【操作系统】斐讯K2 PSG1218 A2 版本22.6.512.75 刷breed+老毛子固件
  17. 错误 LNK1104 无法打开文件“C:\Users\Administrator\Desktop\新建文件夹\ConsoleApplication1\x64\Debug\ConsoleApplicat
  18. oj刷题 Problem J: 软件工程
  19. 如何配置linux下的防火墙,如何配置linux下的防火墙?
  20. GBase xdm管理端

热门文章

  1. 安卓奇葩问题之:返回按键监听,使Dialog不消失
  2. --allow-file-access-from-files 命令的使用
  3. 安装列表阿里云UBUNTU 12下安装LAMP
  4. 【转载】SQL Server 2005关于数据类型最大值(3)
  5. java day56【 Mybatis 延迟加载策略 、 Mybatis 缓存、Mybatis 注解开发 】
  6. 24.1 新建集成库工程
  7. java线程并发库之--线程阻塞队列ArrayBlockingQueue
  8. 人月神话阅读笔记06
  9. 80 行代码爬取豆瓣 Top250 电影信息并导出到 CSV 及数据库
  10. android错误详细教程四