首页 > 其他分享 >自然语言处理中数据增强(Data Augmentation)技术最全盘点

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

时间:2023-06-23 20:04:29浏览次数:38  
标签:文本 训练 单词 Augmentation https 使用 自然语言 Data 句子




自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据


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

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


1.词汇替代

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

基于同义词库的替换

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据_02


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等人用它来增强学习主题模型所需的推文。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_03


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据_04


使用诸如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模型已使用称为“屏蔽语言模型”的预置任务在大量文本上进行了训练,其中该模型必须根据上下文预测屏蔽词。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_05


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_06


因此,可以使用遮罩预测来生成文本的变体。与以前的方法相比,生成的文本在语法上更加连贯,因为模型在进行预测时会考虑上下文。使用诸如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分数较低的单词是无意义的,因此可以替换而不会影响句子的真实标签。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据_07


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

2. 回译(Back Translation)

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

反向翻译过程如下:

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

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

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据_08


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_09


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

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

这些是使用正则表达式应用的简单模式匹配转换,由Claude Coulombe在他的论文中介绍。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_10


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_11


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_人工智能_12


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

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

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

拼写错误注入

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_13


QWERTY键盘错误注入

此方法尝试模拟在QWERTY布局键盘上键入时由于相互之间非常靠近的键而发生的常见错误。根据键盘距离插入错误。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_自然语言处理_14


Unigram噪声

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据_15


空白噪声

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_16


句子改组

这是一种幼稚的技术,可以对训练文本中存在的句子进行改组以创建增强版本。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_人工智能_17


随机插入

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_人工智能_18


随机交换

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_19


相关好书推荐,京东1万+评论,99%好评:

随机删除

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_Powered by 金山文档_20


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

这项技术是Luque(https://arxiv.org/abs/1909.11241)在他对TASS 2019的情感分析的论文中引入的。它受到遗传学中染色体交叉操作的启发。

在该方法中,一条推文被分为两半,并且两个极性相同(即正/负)的随机推文被互换。假设是,即使结果是不合语法且语义上不合理的,新文本仍将保留情感。


自然语言处理中数据增强(Data Augmentation)技术最全盘点_计算机视觉_21


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_计算机视觉_22


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

此技术已在Coulombe(https://arxiv.org/abs/1812.04718)的论文中使用。想法是解析并生成原始句子的依存关系树,使用规则对其进行转换并生成释义的句子。

例如,一种不改变句子含义的转换就是从主动语态到被动语态的转换,反之亦然。



7.文字混合(Mixup for Text)

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_计算机视觉_23


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

· wordMixup:

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_计算机视觉_24


sentMixup:

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_自然语言处理_25


8.生成方法(Generative Methods)

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

条件预训练语言模型

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

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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_人工智能_26


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_自然语言处理_27


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


自然语言处理中数据增强(Data Augmentation)技术最全盘点_数据_28


实现

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

结论

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

标签:文本,训练,单词,Augmentation,https,使用,自然语言,Data,句子
From: https://blog.51cto.com/u_13046751/6538932

相关文章

  • 中文医疗领域自然语言处理相关数据集、经典论文资源蒸馏分享
        在医疗领域,一些应用已经从科幻小说变为现实。人工智能系统通过了中国和英国的医学执照考试,而且它们比普通医生考得更好。最新的系统比初级医生能更好地诊断出55种儿科疾病。但是,这些系统比第一批计算机视觉深度学习应用(例如研究一个图像)中的一些更难构建,因为它们需要具有......
  • 自然语言处理顶会ACL 2020会议核心要点分享
        今年受疫情影响,ACL只能举行线上虚拟会议,因此不能近距离跟行业学者们进行交流。但我任然想把我了解到的ACL的争取趋势和研究动态分享处理,因而有了这篇文章。     这些年来ACL的总体趋势    在开始讨论整个趋势之前之前,让我们先看一下ACL会议的一些总体统计数据。今......
  • 记WinForm DataGridView 表格显示的不同风格
    第一种风格:1///<summary>2///第一种样式3///</summary>4publicvoidDgvStyle1(DataGridViewdgv)5{6//奇数行的背景色7dgv.AlternatingRowsDefaultCellStyle.BackColor=S......
  • 记WinForm DataGridView 新增行号列
    下面是 DataGridView 新增行号封装的通用方法:1///<summary>2///给DataGridView添加行号3///</summary>4///<paramname="dgv"></param>5///<paramname="e"></param>......
  • Vue(四):el和data的两种写法
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>el和data的两种写法</title><scripttype="text/javascript"src="../js/vue.js"></script></head><body......
  • 历史最全最新中文自然语言处理预训练模型汇总分享
        在自然语言处理领域中,预训练语言模型(PretrainedLanguageModels)已成为非常重要的基础技术,本仓库主要收集目前网上公开的一些高质量中文预训练模型,并将持续更新。包含自然语言理解系列模型,如BERT、RoBERTa、ALBERT、NEZHA、XLNET、MacBERT、ELECTRA、ZEN、ERNIE。自然语言......
  • 自然语言处理历史最全预训练模型(部署)汇集分享
    什么是预训练模型?预练模型是其他人为解决类似问题而创建的且已经训练好的模型。代替从头开始建立模型来解决类似的问题,我们可以使用在其他问题上训练过的模型作为起点。预训练的模型在相似的应用程序中可能不是100%准确的。本文整理了自然语言处理领域各平台中常用的NLP模型,常......
  • 23年自然语言处理系统性入门学习指南中文版分享
    本教程致力于帮助同学们快速入门NLP,并掌握各个任务的SOTA模型。1.系统入门方法2.各任务模型list汇总:文本分类、文本匹配、序列标注、文本生成(todo)、语言模型3.各任务综述&技巧:文本分类、文本匹配、序列标注、文本生成、语言模型如何系统地入门机器学习是一门既重理论又......
  • UT Austin 2021-自然语言处理
    课程描述   这门课是对自然语言处理(NLP)详细介绍,自然语言处理是对能够用人类语言处理、理解或交流的计算系统的研究。该课程涵盖了基本方法,主要是机器学习和深度学习,用于整个自然语言处理领域,以及一套历史和当代的自然语言处理任务。所研究的模型包括基本分类模型、条件随机场......
  • 自然语言处理必读经典-统计自然语言处理基础
    本书介绍    近年来,统计方法已经成为处理自然语言文本主流。本书是第一本全面介绍统计自然语言处理的基础文本。本书包含了构建自然语言处理工具所需的所有理论和算法。它提供了广泛但严格的数学和语言学基础,以及统计方法的详细讨论,允许学生和研究人员构建自己的代码和模型。这......