NLP 数据增强
Created time: June 26, 2021 5:23 PM
Last edited time: Sept 8, 2021 20:18 PM
参考资料:https://amitness.com/2020/05/data-augmentation-for-nlp/
1. 词汇替换
替换语句中的单词而不改变句子原本的语义,即同义词替换,同义词的来源可以有以下几种方式。
1.1 基于词库的替换
词库比如WordNet,可以通过NLTK、或TextBlob来使用。
1.2 word-embedding替换
使用预训练的词嵌入模型,如Word2Vec,GloVe,FastText,Sent2Vec。从词嵌入空间中选择邻近词进行替换。词嵌入模型可以使用Gensim库进行使用。
1.3 Masked Language Model
用Bert,Roberta等模型的MLM任务预测[MASK]位置词,进行数据增强。例子。
1.4 基于TF-IDF的词汇替换
基本思想是TF-IDF分数低的词是无信息的(信息量不足的),因此可以在不影响句子的真实标签的情况下被替换。
2. 回译
你可以使用TextBlob、Google Translate、MarianMT,来实现回译。
3. Text Surface Transformation
该方法通过简单的正则表达式进行相应的匹配和替换.
4. 随机噪声注入
4.1 拼写错误注入
4.2 QWERTY Keyboard Error Injection
该方法模拟了用户使用QWERTY布局的键盘进行(英文)文本输入时,由于触碰到临近键位而产生的错误输入.
4.3 Unigram Noising
没有太懂博客的讲解, 根据Unigram统计的词频分布,然后进行替换.
那这里的替换是替换的源单词怎么选择?目标单词怎么选择?如果仅是用相近的Unigram分布频数相近的单词进行替换应该会有语义差异吧.
TODO: 有时间看一下出处论文: Data Noising as Smoothing in Neural Network Language Models
4.4 Blank Noising
随机将单词替换为一个占位符(如’_’), 避免模型过拟合到某些特定文本上, 一定程度上起到平滑的作用.
4.5 打乱句子顺序
4.6 (同义词)随机插入
首先从句子中选择随机选择一个非停用词,然后找到该停用词的同义词, 最后将该同义词随机插入到句子中的随机位置(??).
在EDA那篇论文中使用到.
4.7 随机交换
选择句子中任意两个单词进行交换
4.8 随机删除
随机删除句子中的任意单词
5. Instance Crossover Augmentation
该方法在一篇情感分析论文中被使用, 选择两个情感相同的文本, 各自拆分然后交换片段, 即使句法上会出现不通顺的情况, 但是文本仍然保留了情感.
6. 基于句法树的操作
一个例子是,主动句和被动句的转换操作.
7. MixUp for Text
方法出处: Augmenting Data with Mixup for Sentence Classification: An Empirical Study
7.1 wordMixup
7.2 sentMixup
两种方法都是将Embedding以不同的比例进行合并, 一个实在word embedding阶段,一个是在sent embedding阶段, 合并后的loss计算也遵从同样的比例
8. 生成式的方法
8.1 Conditional Pre-trained Language Models
在GPT2上训练: 给定label下的文本生成模型