【笔记】NLP 数据增强

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. 回译

你可以使用TextBlobGoogle TranslateMarianMT,来实现回译。

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下的文本生成模型

在这里插入图片描述


附:数据增强工具

nlpaug

textattack

猜你喜欢

转载自blog.csdn.net/weixin_45850137/article/details/120187745
今日推荐