学习系列 | 浅谈NLP数据增强技术

流媒体协议图像处理直播

1、简介

数据增强——即对原始数据进行一系列操作后并产生同样有效的新数据的过程。在CV中,数据增强已经被玩出了很多花样,再NLP中都具有哪些操作呢?

NLP常见的有两类数据增强手段: 词语修改句法语义增强

2、词语修改

这种技术仅仅在单词层面做简单修改与替换,易于理解,实现简单无需训练,并且执行速度快,但效果并不理想,甚至会改变语义结构,使得句子不通顺。常见的操作有:

随机删除

picture.image

随机替换

picture.image

随机交换

picture.image

插入

picture.image

上述方法在文献【1】(文末)中有详细介绍,此类方法被证明在小量数据中有一定效果,当数据量比较大时效果并不理想。

3、句法语义增强

该类方法旨在改变语义,并保持相对通顺的语句,是NLP中比较可靠且稳定的数据增强手段,然而该类方法现阶段并不十分成熟,常见有以下操作:

回译

使用机器翻译模型将句子翻译成另外一种语言,再翻译回目标语言。但会存在问题:当前机器翻译效果已逐渐完善,增强后的文本与原文几乎一致甚至完全一致,此时数据增强效果将大打折扣,因此可做出了以下改进:

picture.image

从可翻译的语言池中,随机抽取N种语言作为中间翻译过程,最后再翻译为目标语言。这种改进会使得增强后的文本与源文本一致性大大降低,但调用API的时间较长,而且推荐大家找到足够的免费翻译API后使用该方法。

句子改写

顾名思义即对句子进行相同语义的转写,可以使用生成模型或者爬虫的方式进行。

SimBert 模型

比如苏剑林大神基于Bert,提出了Sim Bert相似语句改写模型,已经更新到2.0版本,对于某类型文本有一定改写能力:


        
          
>>> gen_synonyms(u'微信和支付宝哪个好?')  
[  
    u'微信和支付宝,哪个好?',  
    u'微信和支付宝哪个好',  
    u'支付宝和微信哪个好',  
    u'支付宝和微信哪个好啊',  
    u'微信和支付宝那个好用?',  
    u'微信和支付宝哪个好用',  
    u'支付宝和微信那个更好',  
    u'支付宝和微信哪个好用',  
    u'微信和支付宝用起来哪个好?',  
    ...........  
]  

      

可能受限于数据集,SimBert依然不能“通杀”所有数据,实际效果并不特别理想。

句子续写模型

句子续写是极具商业价值的NLP任务,可用于小说创作、文章修改等,因此开源模型并不多见,虽然GPT系列开源可用,但受限于硬件条件,一般个人难以驾驭。秘塔写作猫、彩云小梦等,澜舟科技、PaddlePaddle等科技公司提供句子续写API,但仅有少量的免费试用,仍然无法满足大批量使用。以下是秘塔写作猫和澜舟科技的使用样例:picture.image

相似语句爬虫

使用爬虫也可得到与原文相似的文本,例如我们可以从百度搜索中将相关语句输入,可得到相似语句:picture.image但对百度网页爬虫具有一定难度,同时到达一定量后会遭到封IP,该方法实现时需要具有较高的反爬虫能力,请密切关注手写AI,不久将来会推出解决方案。

总结

当前NLP领域中,同时具有:效果佳、免费开源、性能稳定特点的数据增强技术仍有待发现,各位同学在使用过程中,应根据硬件性能、处理时间、实际效果等出发,选择最合适数据增强手段。

相关文献

【1】 EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks.

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论