EDA:最简单的自然语言处理数据增广方法

栏目: 编程工具 · 发布时间: 5年前

内容简介:本文为 AI 研习社编译的技术博客,原标题 :These are the Easiest Data Augmentation Techniques in Natural Language Processing you can think of — and they work.

EDA:最简单的自然语言处理数据增广方法

本文为 AI 研习社编译的技术博客,原标题 :

These are the Easiest Data Augmentation Techniques in Natural Language Processing you can think of — and they work.

作者 |  Jason Wei

翻译 | AI小山      

校对 | 酱番梨        审核 | 约翰逊·李加薪       整理 | 立鱼王

原文链接:

https://towardsdatascience.com/these-are-the-easiest-data-augmentation-techniques-in-natural-language-processing-you-can-think-of-88e393fd610

EDA:最简单的自然语言处理数据增广方法

数据增广常用于计算机视觉。在视觉领域,你几乎肯定可以翻折、旋转或镜像一幅图片,而不用担心它的标记发生变化。然后,在自然语言处理(NLP)领域,情况完全不同。改变一个词有可能改变整个句子的意思。所以,没有简单的方法能做到数据增广。真的是这样么?

我向你介绍EDA:简单数据增广技术,可以大大提升文本分类任务的性能(在EDA Github repository有简单的实现代码)。EDA包含四个简单操作,能极好地防止过拟合,并训练出更强健的模型,分别是:

  1. 同义词替换:在句子中随机选取n个非停用词。对每个选取的词,用它的随机选取的同义词替换。

  2. 随机插入:在句子中任意找一个非停用词,随机选一个它的同义词,插入句子中的任意位置。重复n次。

  3. 随机交换:任意选取句子中的两个词,交换位置。重复n次。

  4. 随机删除:对于句子中概率为p的每一个词,随机删除。

这些技术真有效吗?出乎意料,答案是肯定的。尽管生成的某些句子有点怪异,但是在数据集中的引入一些噪声,对于训练出一个健壮的模型来说,是极有好处的,特别是数据集比较小的时候。这篇论文指出,在5个文本分类任务的对比测试中,基于几乎所有大小的数据集,使用EDA都击败了常规训练方法,在训练数据集较小的时候,表现尤其突出。平均来说,用EDA训练一个循环神经网络(RNN),只需50%的训练数据,即可达到常规方法同等的精度。

EDA:最简单的自然语言处理数据增广方法

文本分类任务的性能表现,相对于训练集的使用百分比。 使用EDA(简单数据增广),在小数据集时,远胜常规方法。

    EDA会保留增广句子的真实标记吗?

我知道你在考试这个问题。真的能在做增广操作的同时,保留其真实标记吗?我们用画图形的方法来验证一下。

假设你训练一个关于产品的正面、负面评价的RNN,使用常规和增广的句子都跑一遍,抽取神经网络的最后一层,用sTNE画一个潜在空间图:

EDA:最简单的自然语言处理数据增广方法

ProCon数据集原生及增广句子的潜在空间图

可以看到增广句子的潜在空间图紧紧围绕着原生句子!这表明所生成的增广句子极大可能的保留了原始句子的标记。 雷锋网雷锋网 (公众号:雷锋网) 雷锋网

    这些操作都有效吗?

现在,我们来看看数据增广技术中每个单独操作的效果是什么样的。同义词替换好理解,但是另外三个操作真的起作用吗?我们可以做一个实验,单独做其中一种操作,并代入不同的α值,参数α大致可理解为“句子中被改变的单词的百分比”:

EDA:最简单的自然语言处理数据增广方法

在不同大小的数据集下,对比其它五种文本分类方法,EDA操作的平均性能增益。 参数α大致可理解为“句子中被每种增广操作改变的单词的百分比”。 SR: 同义词替换。 RI: 随机插入。 RS: 随机交换。 RD: 随机删除。

你能看到,在小数据集时,性能增益非常大,达到大约2-3%,数据集大的时候,增益变小(~1%)。但是,各项操作综合起来,如果设置的增广参数合理(句子中改变的单词不超过四分之一),能使训练出的模型更健壮。

    做多少增广?

最后,对于一个真实句子,我们应该增广出多少句子呢?答案取决于你的数据集的大小。如果你的数据集很小,很可能会出现过拟合,此时你应该生成多一些的增广句子。如果数据集比较大,增加太多的增广句子,意义不大,因为原有的数据已经能训练出一个好的模型了。这个图表显示了相对于每个原生句子生成的增广句子的数量的性能增益:

EDA:最简单的自然语言处理数据增广方法

不同大小的数据集下全部五种文本分类任务的EDA平均性能增益。n_aug表示每原生句子生成的增广句子的数量。

    下一步?

我们已经演示了在文本分类中,简单数据增广能显著提升性能。如果你正用小数据集训练一个文本分类器,并想取得更好的效果,请在模型中编程实现这些操作,或者从Github中下载EDA代码。更多详情请查看原文。

想要继续查看该篇文章相关链接和参考文献?

点击 EDA:最简单的自然语言处理数据增广方法 即可访问:

https://ai.yanxishe.com/page/TextTranslation/1644

AI研习社今日推荐: 2019 最新斯坦福 CS224nNLP 课程

自然语言处理(NLP)是信息时代最重要的技术之一,也是人工智能的关键部分。NLP的应用无处不在,因为人们几乎用语言进行交流:网络搜索,广告,电子邮件,客户服务,语言翻译,医学报告等。近年来,深度学习方法在许多不同的NLP任务中获得了非常高的性能,使用单个端到端神经模型,不需要传统的,任务特定的特征工程。在本课程中,学生将深入了解NLP深度学习的前沿研究。

课程链接: https://ai.yanxishe.com/page/groupDetail/59

雷锋网原创文章,未经授权禁止转载。详情见 转载须知


以上所述就是小编给大家介绍的《EDA:最简单的自然语言处理数据增广方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

微机原理与接口技术

微机原理与接口技术

李文英、李勤、刘星、宋蕴新 / 清华大学出版社 / 2001-9 / 26.00元

《高等院校计算机应用技术规划教材•应用型教材系列•微机原理与接口技术》是“高职高专计算机系列教材”之一。全书包括微机原理、汇编语言、接口技术三部分内容。微机原理部分讲述了80x86的内部结构及工作原理、半导体存储器及其系统、微型机总线结构等。汇编语言部分讲述了指令系统、编程技巧。接口技术部分讲述了中断系统、中断控制器、并行接口、串行接口、DMA控制器、定时器,以及A/D、D/A转换器等常用芯片的硬......一起来看看 《微机原理与接口技术》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具