当前位置:   article > 正文

NLP 中的数据增强_nlp 数据增强

nlp 数据增强

前言

数据增强(Data augmentation,DA)是指利用 现有 的数据生成额外的 合成的 数据的技术。在训练样本匮乏,标注成本较高时,尝试数据增强方法是很有必要的。

Data Augmentation

Figure 1. 数据增强(图源:https://neptune.ai/blog/data-augmentation-nlp)

数据增强在计算机视觉(CV)领域的应用广泛,一方面是因为图像数据的增强较为容易,比如只需执行一些旋转、剪切、缩放、扩大、噪声注入等操作就行了,另一方面,数据增强确实能为 CV 模型的性能带来实质性的提升。但在自然语言处理(NLP)领域,一直没有较为有效的数据增强方法的出现,本人认为这有两点原因:第一,NLP 需要面对的是“博大精深”的自然语言,而对于自然语言,一个句子中某个词语甚至标点符号的变化都可能带来整个句子含义的反转,这就直接增加了 NLP 数据增强的难度;第二,NLP 领域各个任务(命名实体识别、文本分类等)对文本信息的侧重点不一样,所以找到一个 NLP 领域各任务通用的数据增强方法是困难的。

虽然 NLP 领域仍缺乏像 CV 领域那样有效的数据增强方法,但还是存在一些可尝试使用的数据增强方法的,本文将对此进行 不全面 的总结,并给出几个在 NLP 领域使用数据增强方法时的注意事项。

NLP 常用数据增强方法

同义词替换(Synonym Replacement)

把它排第一是因为在一般情况下它是最为有效的。

同义词替换通常的步骤如下:

  1. 对句子分词
  2. 对句子中的每个词语(除了停用词外):使用该词语的近似词将其替换

以上最重要的是如何找到词语的近似词,常见的方法有:

  • 准备一个 同义词词林 ,从中找近似词
  • 通过计算 词向量 之间的余弦距离来寻找词语的近似词,词向量可采用常见的静态词向量如 word2vec 和 glove,也可采用经 BERT 编码的动态词向量

具体使用哪种近似词选取方法可以通过实验决定,哪种方法好用哪种。

第一种同义词词林方法难点在于准备一个较为实用的同义词词林,虽然在网上已经存在一些同义词词林(如哈工大的同义词词林扩展版),但其包含的词语的范围有时很难满足数据增强的需要,所以应用也较少。

其实,我想重点介绍的是第二种使用词向量的方法,这种方法也是 TinyBERT 使用的方法。TinyBERT 同时采用静态和动态的词向量,即对于单个字使用经预训练好的 BERT 作为语言模型预测这个字的近似词(字),对于词语则使用静态词向量。使用 BERT 预测近似词时,需要在句子中将需被替换的字 masked 掉,再将句子输入到 BERT 中。具体细节可以参考 TinyBERT 的 GitHub 仓库

TinyBERT Data Augmentation

Figure 2. TinyBERT 中的数据增强

其实,在我看来,对于字的情况或是词的情况都可以使用 BERT 作为语言模型寻找近似词,只不过要注意使用基于全词遮罩(Whole Word Masking)技术的预训练模型BERT-wwm,这种预训练模型可以在这个 (https://github.com/ymcui/Chinese-BERT-wwm) 仓库下载
回译(Back Translation)

这种方法实现起来也较为简单,步骤如下(以中文与英文为例):

  1. 借用一些翻译 API 将已有的中文训练文本翻译成英文
  2. 同样借用这些翻译 API 将翻译后的英文重新翻译回中文

这种方法对翻译质量的敏感度较高,翻译质量决定了数据增强的效果。

文本生成(Text Generation)

这种方法我没有尝试过,感觉和回译这种方法类似,可以把文本生成这种数据增强方法看作一种“另类”的翻译操作,它和回译的不同之处在于,它是一步到位的,而不像回译需要另一种语言作为中间状态。

这种方法的实现较前面几种来说更为复杂,在使用文本生成进行数据增强之前,需要首先训练出一个文本生成模型,这说明又要为文本生成模型准备训练语料而头疼了

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/366444
推荐阅读
相关标签