数据增强–目的
利用有限的标注数据,获得到更多的标注数据,减少网络中的过拟合现象,训练出泛化能力更强的网络
数据增强起初在计算机视觉领域应用较多,主要是运用各种技术生成新的训练样本,可以通过对图像的平移、旋转、压缩、调整色彩等方式创造新的数据。
而在nlp领域中数据是离散的,这导致我们无法直接简单的转换(换掉一个词可能影响整个句子的含义)。因此就需要研究具有针对性的文本数据增强技术;
数据增强–技术
传统数据增强技术
现有NLP的Data Augmentation大致有两条思路,一个是加噪,另一个是回译,均为有监督方法。加噪即为在原数据的基础上通过替换词、删除词等方式创造和原数据相类似的新数据。回译则是将原有数据翻译为其他语言再翻译回原语言,由于语言逻辑顺序等的不同,回译的方法也往往能够得到和原数据差别较大的新数据。
加噪
词汇替换
基于词典的替换
我们从句子中随机取出一个单词,并使用同义词词典将其替换为同义词。例如,我们可以使用WordNet的英语词汇数据库来查找同义词,然后执行替换。它是一个手动管理的数据库,其中包含单词之间的关系。
基于TF-IDF的词替换
其基本思想是,TF-IDF分数较低的单词不能提供信息,因此可以在不影响句子的ground-truth的情况下替换它们。
要替换的单词是从整个文档中TF-IDF分数较低的整个词汇表中选择的。你可以参考原文中的实现:https://github.com/googresearch/uda/blob/master/text/augmentation/word_level_augment.py。
文字表面转换
这些是使用正则表达式的简单的模式匹配的转换,由Claude Coulombe在他的论文中介绍。
在本文中,他给出了一个将动词形式由简写转化为完整形式或者反过来的例子。我们可以通过这个来生成增强型文本。
主要是针对英文文本中 It is–> It’s 类似的缩略处理;
你可以在这里找到英语缩略语的列表
随机噪声注入
这些方法的思想是在文本中加入噪声,使所训练的模型对扰动具有鲁棒性
拼写错误注入
eg:天气–>天启 (可能需要维护一张常见的拼写错误表)
QWERTY键盘错误注入
该方法试图模拟在QWERTY布局键盘上输入时发生的常见错误,这些错误是由于按键之间的距离非常近造成的。错误是根据键盘距离注入的。
eg: This is very cool --> This is bery cool
Unigram噪声
其思想是用从单字符频率分布中采样的单词进行替换。这个频率基本上就是每个单词在训练语料库中出现的次数。
eg:这是[mask]书–>这是[一本]书
Blank Noising
这个方法是由Xie et al.在他们的论文中提出的。其思想是用占位符标记替换一些随机单词。本文使用“_”作为占位符标记。在论文中,他们将其作为一种避免特定上下文过拟合的方法,以及语言模型的平滑机制。该技术有助于提高perplexity和BLEU评分。
eg:This is very cool --> This _ very cool
句子打乱
这是一种朴素的技术,我们将训练文本中的句子打乱,以创建一个增强版本。
Eg: “如何评价 2017 知乎看山杯机器学习比赛?” —> “2017 机器学习?如何比赛知乎评价看山杯”。
实例交叉增强
这项技术是由Luque在他的关于TASS 2019情绪分析的论文中提出的。这项技术的灵感来自于遗传学中发生的染色体交叉操作。
该方法将tweets分为两部分,两个具有相同极性的随机推文(即正面/负面)进行交换。这个方法的假设是,即使结果是不符合语法和语义的,新文本仍将保留情感的极性。
eg:positive Tweet1:(这个菜非常棒,我很喜欢) positive Tweet2(这个男生太优秀了,太吸引人了)—>(这个菜非常棒,太吸引人了) & (这个男生太优秀了,我很喜欢)
语法树操作
其思想是解析和生成原始句子的依赖关系树,使用规则对其进行转换,并生成改写后的句子。
eg:句子的主动语态变成被动语态
EDA
Easy Data Augmentation for Text Classification Tasks (EDA)提出并验证了几种加噪的 text augmentation 技巧,分别是同义词替换(SR: Synonyms Replace)、随机插入(RI: Randomly Insert)、随机交换(RS: Randomly Swap)、随机删除(RD: Randomly Delete),下面进行简单的介绍:
(1) 同义词替换(SR: Synonyms Replace):不考虑stopwords,在句子中随机抽取n个词,然后从同义词词典中随机抽取同义词,并进行替换。
Eg: “我非常喜欢这部电影” —> “我非常喜欢这个影片”,句子仍具有相同的含义,很有可能具有相同的标签。
缺点:同义词具有非常相似的词向量,而训练模型时这两个句子会被当作几乎相同的句子,但在实际上并没有对数据集进行有效的扩充。
(2) 随机插入(RI: Randomly Insert):不考虑stopwords,随机抽取一个词,然后在该词的同义词集合中随机选择一个,插入原句子中的随机位置。该过程可以重复n次。
Eg : “我非常喜欢这部电影” —> “爱我非常喜欢这部影片”。
缺点:随机插入RI很直观的可以看到原本的训练数据丧失了语义结构和语义顺序,而不考虑停用词的做法使得扩充出来的数据并没有包含太多有价值的信息,同义词的加入并没有侧重句子中的关键词,在数据扩充的多样性上实际会受限较多。
(3) 随机交换(RS: Randomly Swap):句子中,随机选择两个词,位置交换。该过程可以重复n次。
Eg: “如何评价 2017 知乎看山杯机器学习比赛?” —> “2017 机器学习?如何比赛知乎评价看山杯”。
缺点:随机交换RS实质上并没有改变原句的词素,对新句式、句型、相似词的泛化能力实质上提升很有限。
(4) 随机删除(RD: Randomly Delete):句子中的每个词,以概率p随机删除。
Eg: “如何评价 2017 知乎看山杯机器学习比赛?" —> “如何 2017 看山杯机器学习 ”。
缺点:随机删除RD不仅有随机插入的关键词没有侧重的缺点,也有随机交换句式句型泛化效果差的问题。随机的方法固然能够照顾到每一个词,但是没有关键词的侧重,若随机删除的词刚好是分类时特征最强的词,那么不仅语义信息可能被改变,标签的正确性也会存在问题。
回译
在这个方法中,我们用机器翻译把一段中文翻译成另一种语言,然后再翻译回中文。
Eg: “周杰伦是一位华语乐坛的实力唱将,他的专辑卖遍了全球。" —>“Jay Chou is a strength singer in the Chinese music scene, his albums are sold all over the world.”—>“周杰伦是中国音乐界的优秀歌手,他的专辑畅销全世界。”
优点:回译的方法往往能够增加文本数据的多样性,相比替换词来说,有时可以改变句法结构等,并保留语义信息。
缺点:回译的方法产生的数据依赖于翻译的质量,大多数出现的翻译结果可能并不那么准确。如果使用某些翻译软件的接口,也可能遇到账号限制等情况。
深度学习-数据增强技术
基于词向量的替换
采用预先训练好的单词嵌入,如Word2Vec、GloVe、FastText、Sent2Vec,并使用嵌入空间中最近的相邻单词替换句子中的某些单词。
Masked Language Model
像BERT、ROBERTA和ALBERT这样的Transformer模型已经接受了大量的文本训练,使用一种称为“Masked Language Modeling”的预训练,即模型必须根据上下文来预测遮盖的词汇。这可以用来扩充一些文本。例如,我们可以使用一个预训练的BERT模型并屏蔽文本的某些部分。然后,我们使用BERT模型来预测遮蔽掉的token。
参考文献
[1]NLP中数据增强的综述,快速的生成大量的训练数据
[2] NLP数据增强方法总结:EDA、BT、MixMatch、UDA