扩增方法:回译
将文本数据翻译成某种语言,然后再将其翻译回原始语言。回译可以生成带有不同单词的文本数据,同时保留文本数据的上下文。
一般情况下回译需要借助翻译API来完成,需要耗费一定的时间。
扩增方法:同义词替换
从句子中随机选择N个非停止词,随机选择的同义词替换这些单词。
替换前:This article
will focus on summarizing data augmentation techniques
in NLP.
替换后:This write-up
will focus on summarizing data augmentation methods
in NLP.
在进行同义词替换时,关键是计算得到同义词的方法:
- word2vec距离
- Bert Mask预测
扩增方法:同义词插入
在句子中随机找一个非停止词的同义词。把同义词插入句子中的任意位置。
替换前:This article
will focus on summarizing data augmentation techniques
in NLP.
替换后:This article
will focus on write-up
summarizing data augmentation techniques in NLP methods.
扩增方法:随机替换
从句子中随机选取两个单词,互换它们的位置。
替换前:This article
will focus on summarizing data augmentation techniques
in NLP.
替换后:This techniques
will focus on summarizing data augmentation article
in NLP.
扩增方法:随机删除
随机删除句子中的单词。
替换前:This article
will focus on summarizing data augmentation techniques
in NLP.
替换后:This article
focus on summarizing data augmentation in NLP.
扩增方法:对抗训练
对抗样本是让能够模型误分类的样本,且对抗样本与原始样本区别不大。将模型生成的对抗样本加入训练过程,即为对抗训练
对抗训练思路:通过产生对抗样本的思路,如FGSM来计算出扰动,添加到到连续的Word Embedding上产生,然后将再进行一次正向传播和反向传播。
https://arxiv.org/abs/1605.07725
扩增库:EDA
EDA是Easy Data Augmentation的缩写,原始提出于论文EDA: Easy Data Augmentation techniques for boosting performance on text classification tasks.
EDA库实现了同义词替换、随机插入、随机交换和随机删除等操作,使用起来非常简单。
英文版:https://github.com/jasonwei20/eda_nlp
中文版:https://github.com/zhanlaoban/EDA_NLP_for_Chinese
扩增库:nlpaug
nlpaug是一个非常常用的数据扩增库,支持文本和音频数据。nlpaug实现了较多的同义词替换方法,底层支持pytorch和tf。
https://github.com/makcedward/nlpaug
使用案例:https://github.com/makcedward/nlpaug/blob/master/example/textual_augmenter.ipynb