NLP.TM[32] | 浅谈文本增强技术

【NLP.TM】

本人有关自然语言处理和文本挖掘方面的学习和笔记,欢迎大家关注。

往期回顾:

在大多数情况下数据量、多样性不足,由于深度学习普遍会具有很高的数据依赖性,效果往往会受到严重限制,为了尽可能增加数据质量和数量,数据增强开始受到关注,最早是在CV领域,而现在其实NLP领域也有开始被广泛使用。今天我们来聊聊NLP领域有什么文本增强的技术吧~

文本增强的任务

在我的理解下,文本增强绝对不是“文本增多”,片面的增加样本的数量对训练没有太大帮助,我们需要做的,是根据目前模型所出现的问题,去产生具有一定针对性的样本,从而提升模型的效果,这就是所谓的“强”。这点其实也得到了著名文本增强论文EDA的验证:

Automatic data augmentation is commonly used in computer vision (Simard et al., 1998; Szegedy et al., 2014; Krizhevsky et al., 2017) and speech (Cui et al., 2015; Ko et al., 2015) and can help train more robust models, particu- larly when using smaller datasets.

继续剖析,往往能通过数据增强,增加特定的一些样本,使模型效果提升。

值得注意的是,很多文章里喜欢说增加一些“不一样的说法”,诚然内容的“丰富性”有利于模型的泛化能力,但是我的个人理解还要更加广泛一些,除了“不一样的说法”,还可以是一些特殊的调整模型的操作。

说了一堆,其实就想纠正两个比较浅显的理解:

  • 不是简单的“增多”文本。

  • 不是简单的“增加不同的说法”。

而是根据实际需求调整、优化模型而做出的基于数据的策略。

他山之石

其实最早提到数据增强的应该是CV,CV不是我擅长的点,只是有一些有关图像处理的基础知识,后面简单的以图片为例吧。其实在我眼里,图片的获取难度其实比文本要难,然而简单的一些变换其实就已经能为模型带来很强的正面效果,来举几个例子:

  • 翻转。

  • 旋转。

  • 缩放。

  • 裁剪。

  • 移位。

  • 噪声。

  • 锐化。

另外还会有一些图片生成的方法,这种一般是基于某种条件的,比较严格,因此也被称为条件对抗生成。

简单也好,复杂也罢,在这些技巧下,图片逐步丰富起来,确实为模型带来了不小的提升,那么对应的,其实我们也就可以对文本做类似的操作了。

基本操作

CV里面尝试对图片进行一些基本的变换,就能产生新的样本,NLP里面,同样可以有类似的方法去做,那就变换起来:

  • 同义词替换:Synonym Replacement (SR)

  • 随机插入:Random Insertion (RI)

  • 随机交换:Random Swap (RS)

  • 随机删除:Random Deletion (RD)

这种变换能增加样本的多样性,这种多样性毫无疑问对模型的泛化能力有很高的提升,同时,模型见多识广后,训练也更加充分。

更进一步,为了丰富文本描述的多样性,除了直接对文本进行处理,还可以通过“回译”的方法,即将原文本翻译成一种语言再翻译回来,从而让一个含义的句子有了更加丰富的“说法”,这种说法无疑也是对模型有巨大的好处。

embedding增强

embedding已经是NLP任务里面非常常规的操作了,从word2vector开始到现在的bert,文本层面,可能我们无法产生足够优秀的样本,但是对于数据,我们可操作的空间就变得非常大了,我们可以通过在embedding的数据加入一些噪音首先这种增强。

噪音知识一种简单的形式,但是他的随机性可能会导致出现一些标签漂移的现象,也就是变换后的数据可能就不是原来的label了,为了使这种标签尽可能稳定,就出现了一些基于编码器等方式的生成方法,最为经典的就是受限变分自编码器(Conditional Variational Auto-Encoders,CVAE),自编码器的思路其实前面提到的“回译”的升级版,灵活化中间过程的语言,最终在翻译回去,整体架构就变成了这样:

可能会有人问到自编码器这么多,为什么会选择CVAE,其实也有人通过实验给到了答案,说白了就是效果好,损失的准确性较少,而多样性和创新性上都有较高的幅度的提升,有关CVAE有兴趣的可以去看看论文哈。

文本生成

自编码器实质上是经历两层类似文本生成的方式完成文本增强,那么我们能不能一步到位呢?答案是肯定的,而且这块随着对抗生成的进步,在准确性和稳定性上也有了不小的提升,更进一步又有了条件文本生成,也就是有目的的产生样本,似的数据增强能力进一步提升,虽然个人感觉这些工作说起来已经逐步偏移了文本增强的初衷,不过通过这些思路来生成样本可以说是一些比较高端的方案了。

对抗增强上,FGM、PGD、YOPO等,都是一些比较经典的例子,最初都是针对图像使用,虽然如此,但是由于处理的还是矩阵,因此对同样可以embedding为矩阵的文本而言,应该是同样适用。

这块只想列举名词到这里,主要是个人认为这些工作已经逐步偏离了文本增强本身的初衷,而是一种“为了生成文本而生成文本”的思想,下面想进一步介绍——条件生成,这应该是未来一段时间内可以成为一个思路。

条件生成

条件生成是一种更为定向的文本生成方法,可能不是完整意义的文本生成,但我们需要知道的是,到目前为止,我们已经可以实现有方向性、针对性的产生新的样本。

Contextual Augment就是这样一种方法,他本身其实可以认为是EDA的升级版。它实际上是使用BiLSTM的方式,预测可以被替换的位置并通过语言模型(Language model,LM)预测可以被替换成的词,从而完成了一个新样本的生成。另外由于语言模型本身给的结果只基于上下文,而忽略了本身正负语义,对一个句子“今天天气真好”,“坏”被替换的概率其实很高,因此作者对原有的基于上下文的语言模型进行改进,除了基于上下文,还会基于标签,这样来保证文本替换的准确性。

有了BiLSTM版本的模型,当然就可以有bert的模型了,整体框架上其实是类似的。

更为高端的框架

这里所谓的高端,不是在于有么有用bert之类的操作,而是使用一些简单的积木能够完成自己的目。当然了,如果增强样本能够直接用于模型训练,边训边生成,那将会有更好的提升,这种随心所欲可能很难,但是去逐步逼近慢慢的开始有人开始去逼近。

ACL出了一篇文章,在文本相似度角度,在生成负样本的基础上升级,要求产生的是“与正样本相近”的负样本,整体架构长这样:

主线路是一个比较常规的分类,而支线就有一个变分编码-解码生成器(a variational encoder-decoder query generator,VED)。这篇文章我应夕小瑶的卖萌屋之邀,以这篇文章为中心做过一次对文本相似度的分享。在这里想聊的是,这种生成的方式一定程度上就会是未来精准数据增强的方向。

文章在这里哈~有兴趣可以读一下,另外近期我也会搬运到我的公众号里面来。

ACL2020 | 线上搜索结果大幅提升!亚马逊提出对抗式query-doc相关性模型

重谈文本增强

很多文本增强的文章很多容易跑偏,最终变成了一个文本生成介绍的文章,我自己本身也在尽可能克制,大部分人在阅读这种文章的时候,应该更多的是找到借助样本数据策略来实现模型效果提升的方法,如果动不动就要到文本生成的层面,那我们到底要解决的是要解决文本生成问题,还是我们的“原问题”?为了解决一个问题我们去产生一个新的问题,工程上成本肯定是太高了,因此,我们更多的应该是去思考,如何能快速简单的实现这种功能,产生样本,数据增强是其中一种手段而已。

同时我们也应该主动尝试打开思路,去思考我们有什么新的手段能解决自己模型目前存在的问题,最简单的其实就是看到了bad case,把一定量的bad case放入训练样本而修正模型,未登录词过多就通过词典等方式加入,这些都是简单的不行的方法,却有着非常明确的效果。

曾经我在知乎上聊过未深度学习的热点,其实我并不care模型变得多复杂多高端,我只希望深度学习本身的问题能够被慢慢解决——强数据依赖,其实主动学习、数据增强等方面对解决这个问题非常有价值。

参考文献

  • 经典论文EDA:EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks

  • CVAE论文:Controlled Text Generation for Data Augmentation in Intelligent Artificial Agents

  • 条件生成论文,使用的是bilstm,Contextual augmentation: Data augmentation by words with paradigmatic relations

  • 条件生成论文,使用的是bert,Conditional BERT contextual augmentation

  • ACL论文,Learning Robust Models for e-Commerce Product Search。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值