NLP中数据增强

Data Augmentation Approaches in Natural Language Processing: A Survey

数据增强方法

数据增强(Data Augmentation,简称DA),是指根据现有数据,合成新数据的一类方法。毕竟数据才是真正的效果天花板,有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP任务天生的难度,类似CV的裁剪方法可能会改变语义,既要保证数据质量又要保证多样性。

作者根据生成样本的多样性程度,将DA方法分为了以下三种:

Paraphrasing:对句子中的词、短语、句子结构做一些更改,保留原始的语义
Noising:在保证label不变的同时,增加一些离散或连续的噪声,对语义的影响不大

Paraphrasing

这类方法根据替换的成分不同,又可以分为词、短语、句子级别。作者共总结了6种方法:

  1. Thesaurus:利用词典、知识图谱等外部数据,随机将非停用词替换成同义词或上位词,如果增加多样性的话还可以替换成相同词性的其他词
  2. Semantic Embeddings:利用语义向量,将词或短语替换成相近的(不一定是同义词)。由于每个词都有语义表示,可替换的范围更大。而上一种方法只能替换图谱里的
  3. MLMs:利用BERT等模型,随机mask掉一些成分后生成新的
  4. Rules:利用一些规则,例如缩写、动词变位、否定等,对句子一些成分进行改写,比如把 is not 变成 isn't
  5. Machine Translation:分为两种,Back-translation指把句子翻译成其他语言再翻译回来,Unidirectional Translation指在跨语言任务中,把句子翻译成其他语言
  6. Model Generation:利用Seq2Seq模型生成语义一致的句子
  7. Dropout:SimCSE中使用的,用dropout机制生成语义相近的表示(自己加的)

优缺点

Noising

人在读文本时对噪声是免疫的,比如单词乱序、错别字等。基于这个思想,可以给数据增加些噪声来提升模型鲁棒性。

作者给出了5种增加噪声的方法:

  1. Swapping:除了交换词之外,在分类任务中也可以交换instance或者sentence
  2. Deletion:可以根据tf-idf等词的重要程度进行删除
  3. Insertion:可以把同义词随机插入句子中
  4. Substitution:把一些词随机替换成其他词(非同义),模拟misspelling的场景。为了避免改变label,可以使用label-independent的词,或者利用训练数据中的其他句子
  5. Mixup:这个方法最近两年比较火,把句子表示和标签分别以一定权重融合,引入连续噪声,可以生成不同label之间的数据,但可解释性较差

总的来说,引入噪声的DA方法使用简单,但会对句子结构和语义造成影响,多样性有限,主要还是提升鲁棒性

posted @ 2023-04-29 10:43  shiiiilong  阅读(72)  评论(0编辑  收藏  举报