自然语言处理的数据增强分析☞Easy Data Augmentation

自然语言处理的EDA-最简单数据增强探索性数据分析
论文原文详情:Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks

论文英文代码:代码

中国大哥做的中文扩展代码:代码

    数据增强常用于计算机视觉。翻折、旋转或镜像一幅图片,改变相应的标记便是可以的。然而,在自然语言处理中,情况完全不同。改变一个词有可能改变整个句子的意思。
    即使相同的字读音不同就可以改变该句子的意思
    EDA:简单数据增广技术,可以大大提升文本分类任务的性能
    在EDA Github repository有简单的实现代码)。EDA包含四个方向,能极好地防止过拟合,并训练出更强健的模型:
  同义词替换(Synonym Replacement, SR):在句子中随机选取n个非停用词。对每个选取的词,用它的随机选取的同义词替换。
  随机插入(Random Insertion, RI):在句子中任意找一个非停用词,随机选一个它的同义词,插入句子中的任意位置。重复n次。
  随机交换(Random Swap, RS):任意选取句子中的两个词,交换位置。重复n次。
    随机删除(Random Deletion, RD):对于句子中概率为p的每一个词,随机删除。
    论文原文效果:在完整的数据集上,平均性能提升0.8%;在大小为500的训练集上,提升3.0%。
    
    在EDA操作之后生成的某些句子有点怪异,但是在数据集中的引入一些噪声,对于训练出一个健壮的模型来说,是极有好处的,特别是数据集比较小的时候。这篇论文指出,在5个文本分类任务的对比测试中,基于几乎所有大小的数据集,使用EDA都击败了常规训练方法,在训练数据集较小的时候,表现尤其突出。平均来说,用EDA训练一个卷积神经网络(RNN),只需50%的训练数据,即可达到常规方法同等的精度。

这些方法里,只有SR曾经被人研究过,其他三种方法都是本文作者首次提出。

值得一提的是,长句子相对于短句子,存在一个特性:长句比短句有更多的单词,因此长句在保持原有的类别标签的情况下,能吸收更多的噪声。
为了充分利用这个特性,作者提出一个方法:基于句子长度来变化改变的单词数,换句话说,就是不同的句长,因增强而改变的单词数可能不同。
具体实现:对于SR、RI、RS,遵循公式:$n$ = $\alpha$ * $l$,$l$ 表示句长,$\alpha$ 表示一个句子中需要改变的单词数的比例。
在RD中,让 $p$ 和 $\alpha$ 相等。另外,每个原始句子,生成个增强的句子。

回顾老扩充方法
    已有方法及其问题所在
    - 英法互译
    - 同义词替换
    - 数据噪声
    由于没有一般的语言转换的通用规则,因此NLP中的通用数据增强技术人们探索甚少。上述若干方法,相对于其能提升的性能,实现开销更大。
 

结合公司数据,觉得这个EDA是没啥卵用的。不知道在其他场景会不会好用一点。期待下次尝试

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章