找回密码
 立即注册
搜索

自然言语处理中数据加强(Data Augmentation)技术最全清点




与“计算机视觉”中运用图像数据加强的标准做法不同,在NLP中,文本数据的加强非常少见。这是由于对图像的琐碎操作(例如将图像旋转几度或将其转换为灰度)不会改变其语义。语义上不变的转换的存在是使加强成为Computer Vision研讨中必不可少的工具的缘由。

能否有尝试为NLP开发加强技术的方法,并讨论了现有文献。在这篇文章中,将基于我的发现概述当前用于文本数据扩大的方法。

本文内容翻译整理自网络。

NLP数据扩大技术

1.词汇替代

此工作尝试在不更改句子含义的状况下交换文本中出现的单词。

基于同义词库的交换在此技术中,从句子中抽取一个随机单词,然后运用同义词库将其交换为其同义词。例如,可以运用WordNet数据库中的英语查找同义词,然后执行交换。它是一个人工编辑的数据库,描画单词之间的关系。




Zhang在他们的2015年论文“Character-level Convolutional Networks for Text Classification”中运用了该技术。Mueller等人运用相似的策略为其句子相似性模型生成额外的10K训练数据。Wei等人也运用了这种技术作为“轻松数据加强”论文中四个随机加强集合中的一种技术。 为了完成,NLTK提供了对WordNet 的编程访问。读者也可以运用TextBlob API。此外,还有一个名为PPDB的数据库,其中包含数百万个可以经过编程方式下载和运用的短语。

词嵌入交换在这种方法中,采用了经过预训练的词嵌入,例如Word2Vec,GloVe,FastText,Sent2Vec,并运用嵌入空间中最近的相邻词作为句子中某些词的交换。Jiao已在他们的论文“ TinyBert ” 中将这种技术与GloVe嵌入一同运用,以改进其言语模型在下游义务上的通用性。Wang等人用它来加强学习主题模型所需的推文。




例如,读者可以将单词交换为最接近的3个单词,并获得文本的三种变体。




运用诸如Gensim之类的包来访问预先训练的单词向量并获取最近的邻居是很容易的。例如,在这里运用在推特上训练的单词向量找到单词“ awesome”的同义词。

相关好书引荐,京东1万+回复,99%好评:

# pip install gensim

import gensim.downloader as api

model = api.load('glove-twitter-25') model.most_similar('awesome', topn=5)

读者将获得5个最相似的词以及余弦相似度。

[('amazing', 0.9687871932983398),

('best', 0.9600659608840942),

('fun', 0.9331520795822144),

('fantastic', 0.9313924312591553),

('perfect', 0.9243415594100952)]

Masked言语模型 诸如BERT,ROBERTA和ALBERT之类的Transformer模型已运用称为“屏蔽言语模型”的预置义务在大量文本上停止了训练,其中该模型必须根据上下文预测屏蔽词。




这可以用来扩大一些文本。例如,可以运用预训练的BERT模型,对文本的某些部分停止遮罩,然后要求BERT模型预测被遮罩token。




因此,可以运用遮罩预测来生成文本的变体。与以前的方法相比,生成的文本在语法上愈加连接,由于模型在停止预测时会思索上下文。运用诸如Hugging Face开源的tranformer(https://huggingface.co/transformers/)之类的开源库很容易完成。读者可以设置要交换的令牌<mask>并生成预测。

from transformers import pipelinenlp = pipeline('fill-mask')nlp('This is <mask> cool')

[{'score': 0.515411913394928,

'sequence': '<s> This is pretty cool</s>',

'token': 1256},

{'score': 0.1166248694062233,

'sequence': '<s> This is really cool</s>',

'token': 269},

{'score': 0.07387523353099823,

'sequence': '<s> This is super cool</s>',

'token': 2422},

{'score': 0.04272908344864845,

'sequence': '<s> This is kinda cool</s>',

'token': 24282},

{'score': 0.034715913236141205,

'sequence': '<s> This is very cool</s>',

'token': 182}]

但是,此方法的一个需求留意的点是,决议要掩盖文本的哪一部分并非易事。读者将必须运用启示式方法来确定掩码,否则生成的文本能够不会保留原始句子的含义。

基于TF-IDF的单词交换这种扩展方法是由Xie等人提出的。在无监督数据加强论文中。基本思想是,TF-IDF分数较低的单词是有意义的,因此可以交换而不会影响句子的真实标签。




经过计算整个文档中单词的TF-IDF得分并取最低得分来选择交换原始单词的单词。读者可以在此处的原始文件中参考此代码的完成(https://github.com/google-research/uda/blob/master/text/augmentation/word_level_augment.py)。

2. 回译(Back Translation)

在这种方法中,应用机器翻译来释义文本,同时重新训练其含义。Xie运用此方法来扩大未标记的文本,并仅运用20个标记的示例在IMDB数据集上学习半监督模型。他们的模型优于以前在25,000个带标签的示例上训练的最新模型。

反向翻译过程如下:

· 用一些句子(例如英语)并翻译成另一种言语,例如法语

· 将法语句子翻译回英语句子

· 检查新句子能否与的原始句子不同。假如是这样,那么将这个新句子用作原始文本的加强版本。




读者还可以一次运用不同的言语停止反向翻译,以产生更多的变化。如下所示,将英语句子翻译成目的言语,然后再将英语翻译成三种目的言语的英语:法语,普通话和意大利语。该技术还被用于Kaggle上的“有毒回复分类应战” 的第一名处理方案。获胜者将其用于训练数据的添加以及测试时期,将英语句子的预测概率以及运用三种言语(法语,德语,西班牙语)的反向翻译的平均值停止平均,以得出最终预测。




对于实施反向翻译,可以运用TextBlob。另外,读者也可以运用Google表格并按照此处提供的阐明收费运用Google翻译(https://amitness.com/2020/02/back-translation-in-google-sheets/)。

3.文字表面转换(Text Surface Transformation)

这些是运用正则表达式运用的简单形式婚配转换,由Claude Coulombe在他的论文中引见。




在本文中,他提供了一个将言语方式从收缩转变为扩张,反之亦然的例子。可以经过运用此生成加强文本。




由于转换不应该改变句子的含义,因此可以看到,在展开歧义言语方式的状况下,这样做能够会失败:为处理此成绩,本文建议允许歧义收缩,但跳过歧义扩展。




读者可以在此处找到英语的收缩列表。为了扩展,读者可以运用Python中的收缩库(https://en.wikipedia.org/wiki/Wikipedia%3aList_of_English_contractions)。

相关好书引荐,京东1万+回复,99%好评:

4.随机噪声注入(Random Noise Injection)

这些方法的思想是在文本中注入噪声,以便训练的模型对扰动具有鲁棒性。

拼写错误注入在这种方法中,向句子中的某些随机单词添加了拼写错误。这些拼写错误可以经过编程方式添加,也可以运用常见拼写错误的映射(例如英语列表)来添加。




QWERTY键盘错误注入 此方法尝试模拟在QWERTY规划键盘上键入时由于互相之间非常接近的键而发生的常见错误。根据键盘间隔插入错误。




Unigram噪声

Xie等人已运用此方法。这个想法是用从字法频率分布中采样的单词停止交换。该频率基本上是每个单词在训练语料库中出现的次数。




空白噪声 该方法由Xie等人(https://arxiv.org/abs/1703.02573)提出。在他们的论文中。这个想法是用一个占位符标记代替一些随机词。本文运用“ _”作为占位符标记。在本文中,他们将其用作避免在特定上下文上过度拟合的方法以及言语模型的平滑机制。该技术有助于提高困惑度和BLEU分数。




句子改组 这是一种干练的技术,可以对训练文本中存在的句子停止改组以创建加强版本。




随机插入 该技术由Wei等人(https://arxiv.org/abs/1901.11196)提出。在他们的论文“Easy Data Augmentation”中。在这种技术中,首先从不是停用词的句子中选择一个随机词。然后,找到其同义词并将其插入句子中的随机地位。




随机交换此技术也由Wei等人提出。在他们的论文“Easy Data Augmentation”中。想法是随机交换句子中的任何两个单词。




随机删除该技术也是由Wei等人提出的。在他们的论文“Easy Data Augmentation”中。在这种状况下,以一定概率p随机删除句子中的每个单词。




5.实例交叉扩展(Instance Crossover Augmentation)

这项技术是Luque(https://arxiv.org/abs/1909.11241)在他对TASS 2019的情感分析的论文中引入的。它遭到遗传学中染色体交叉操作的启示。在该方法中,一条推文被分为两半,并且两个极性相反(即正/负)的随机推文被互换。假设是,即便结果是不合语法且语义上不合理的,新文本仍将保留情感。




该技术对准确性没有影响,但有助于提高F1分数,表明该技术可协助减少诸如Tweet的中性类别等多数群体。




6.语法树(Syntax-tree)操作

此技术已在Coulombe(https://arxiv.org/abs/1812.04718)的论文中运用。想法是解析并生成原始句子的依存关系树,运用规则对其停止转换并生成释义的句子。例如,一种不改变句子含义的转换就是从自动语态到被动语态的转换,反之亦然。




相关好书引荐,京东1万+回复,99%好评:

7.文字混合(Mixup for Text)

混合是张等人(https://arxiv.org/abs/1710.09412)引见的一种简单而有效的图像加强技术。这是在2017年提出的。想法是将两个随机图像按一定比例组合在一个小批量中,以生成用于训练的合成示例。对于图像,这意味着将两个不同类别的图像像素组合在一同。它是训练过程中的一种正轨化方式。




郭等人(https://arxiv.org/abs/1905.08941)将这个想法带给了自然言语处理。修正了Mixup以处理文本。他们提出了两种新颖的方法将Mixup运用于文本:

· wordMixup:在此方法中,在一个小批量中获取两个随机句子,并将它们零填充为相反的长度。然后,将它们的词嵌入按一定比例组合。生成的单词嵌入将传递到常规流程以停止文本分类。对于给定比例的原始文本的两个标签,计算交叉熵损失。




sentMixup:在此方法中,采用两个句子并将它们零填充为相反的长度。然后,它们的词嵌入经过LSTM / CNN编码器传递,将最后的隐藏形状作为句子嵌入。这些嵌入按一定比例组合,然后传递到最终分类层。基于给定比例的原始句子的两个标签计算交叉熵损失。




8.生成方法(Generative Methods)

此工作尝试在保留标签类别的同时生成其他训练数据。

条件预训练言语模型 这项技术由Anaby-Tavor等人首先提出。在他们的论文Not Enough Data? Deep Learning to the Rescue!。Kumar等人的(https://arxiv.org/abs/2003.02245)最新论文。在多个基于Transformer的预训练模型中评价了这个想法。成绩表述如下:

将类别标签附加到训练数据中的每个文本




在修正后的训练数据上微调一个大型的预训练言语模型(BERT / GPT2 / BART)。对于GPT2,微调义务是生成,而对于BERT,目的将是屏蔽token预测。




运用微调的言语模型,可以经过运用类标签和大批的初始单词作为模型提示来生成新样本。本文运用每个训练文本的3个初始单词,并为训练数据中的每个点生成一个综合示例。




完成

诸如nlpaug(https://github.com/makcedward/nlpaug)和textattack(https://github.com/QData/TextAttack)之类的库提供了简单而分歧的API,以在Python中运用上述NLP数据加强方法。它们与框架有关,可以轻松集成到读者的管道中。

结论

我从文献回顾中得出的结论是,许多这些NLP加强方法都是非常特定于义务的,并且仅在某些特定用例中研讨了它们对功能的影响。系统地比较这些方法并分析它们对许多义务的功能的影响将是一个风趣的研讨。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评3

candywei 2020-6-25 12:24:07 显示全部楼层
看起来好像不错的样子
回复

使用道具 举报

小名混 2020-6-26 09:51:29 来自手机 显示全部楼层
老哥,这波稳
回复

使用道具 举报

xzz111116 2020-6-27 11:31:37 显示全部楼层
呵呵,低调,低调!
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies