集合啦,NLP数据增强技术!超全资源汇总

白交 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

数据增强技术已经是CV领域的标配,比如对图像的旋转、镜像、高斯白噪声等等。

但在NLP领域,针对文本的数据增强,却是不那么多见。

于是,就有一位机器学习T型工程师,在现有的文献中,汇总一些NLP数据增强技术。

妥妥干货,在此放送。

文本替代

文本替代主要是针对在不改变句子含义的情况下,替换文本中的单词,比如,同义词替换、词嵌入替换等等。

接着,我们就来好好介绍一下。

同义词替换

顾名思义,就是在文本中随机抽取一个单词,然后再同义词库里将其替换为同义词。

比如,使用WordNet数据库,将「awesome」替换为「amazing」。

这个技术比较常见,在以往的论文中有很多都使用了这个技术,比如,

Zhang et al.「Character-level Convolutional Networks for Text Classification」

论文链接:https://arxiv.org/abs/1509.01626

Wei et al. 「EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks」

论文链接:https://arxiv.org/abs/1901.11196

要实现这项技术,可通过NLTK对WordNet进行访问,还可以使用TextBlob API。

此外,还有一个PPDB数据库,包含着百万个单词的词库。

词嵌入替换

这种方法是,采取已经预训练好的单词嵌入,如Word2Vec、GloVe、FastText、Sent2Vec等,并将嵌入空间中最近的邻接词作为句子中某些单词的替换。

比如:

这样,就可以将单词替换成临近的3个单词,获得文本的3种变体形式。

掩码语言模型(MLM)

类似于BERT、ROBERTA、ALBERT,Transformer模型已经在大量的文本训练过,使用掩码语言模型的前置任务。

在这个任务中,模型必须依照上下文来预测掩码的单词。此外,还可以利用这一点,对文本进行扩容。

跟之前的方法相比,生成的文本在语法上会更加连贯。

但是,需要注意的是,决定掩盖哪一个单词并非易事,它决定了效果的最终呈现。

基于TF-IDF的单词替换

这一方法最初是出现在Xie et al.「Unsupervised Data Augmentation for Consistency Training」。

论文链接:https://arxiv.org/abs/1904.12848

基本思路在于TF-IDF得分低的单词是没有信息量的的词,因此可以替换,而不影响句子的原本含义。

通过计算整个文档中单词的 TF - IDF得分并取最低得分来选择替换原始单词的单词。

反向翻译

反向翻译,就是先将句子翻译成另一种语言,比如,英语翻译成法语。

然后再翻译回原来的语言,也就是将法语翻译回英语。

检查两个句子之间的不同之处,由此将新的句子作为增强文本。

还可以一次使用多种语言进行反向翻译,产生更多的变体。

比如,除了法语以外,再将其翻译为汉语和意大利语。

要实现反向翻译,可以使用TextBlob。另外,还可以使用Google Sheets,说明书已附文末。

文本形式转换

这一方法主要是利用正则表达式应用的的简单模式匹配转换,在Claude Coulombe的论文「Text Data Augmentation Made Simple By Leveraging NLP Cloud APIs」中有详细介绍。

论文链接:https://arxiv.org/abs/1812.04718

举个简单的例子,将原本形式转换为缩写,反之亦然。

但是也会出现一些歧义,比如:

在此,选择允许歧义的收缩,但不允许扩展。

       

Python的收缩库已附文末。

随机噪声注入

顾名思义,也就是在文本中注入噪声,来训练模型对扰动的鲁棒性。

比如,拼写错误。

句子改组。

空白噪声。

随机插入。

随机交换。

随机删除。

语法树

这一方法也出现在了Claude Coulombe的论文「Text Data Augmentation Made Simple By Leveraging NLP Cloud APIs」中。

论文链接:https://arxiv.org/abs/1812.04718

其思路是解析并生成原句的从属树,利用规则进行转换,生成新句子。

比如,将句子的主动语气转换为被动语气,反之亦然。

文本混合

这项技术的想法源于一项名为“Mixup”的图像增强技术。

Guo et al.在此基础上进行了修改,将其应用到NLP。

「Augmenting Data with Mixup for Sentence Classification: An Empirical Study」

论文链接:https://arxiv.org/abs/1905.08941

主要有两种方法。

wordMixup

这个方法在于,抽取两个随机的句子,将它们进行零填充,使其长度相同。然后,按一定比例组合在一起。

所得到的单词嵌入通过CNN/LSTM编码器传递到句子嵌入中,随后计算交叉熵损失。

sentMixup

可以看到这一方法,与上述方法类似,只不过在具体步骤上有所调整。

好了,NLP的数据增强技术就介绍到这里,希望能够对你有所帮助。

传送门

博客地址:
https://amitness.com/2020/05/data-augmentation-for-nlp/

WordNet数据集:
https://www.nltk.org/howto/wordnet.html

TextBlob API:
https://textblob.readthedocs.io/en/dev/quickstart.html#wordnet-integration

PPDB数据集:
http://paraphrase.org/#/download

YF-IDF代码:
https://github.com/google-research/uda/blob/master/text/augmentation/word_level_augment.py

使用Google Sheets实现反向翻译:
https://amitness.com/2020/02/back-translation-in-google-sheets/

Python收缩库:
https://github.com/kootenpv/contractions

作者系网易新闻·网易号“各有态度”签约作者

华为MindSpore布道师招募

助力小白成为大牛

告别技术造神,尊重每个开发者。

在开源社区中一起快速成长,共建开源生态!

扫描下图二维码即可报名参与▽

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「在看」吧 !

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值