如何解决自然语言模型训练中数据不足?进行文本数据增强方法分享

Published on Aug. 22, 2023, 12:10 p.m.

句自然语言任务中数据标注的成本一般都比较高,所以获取高质量数据集便成了最大的难题.
虽然最近几年各种预训练模型大行其道,但是如果能够有足够好的数据集也是能够解决问题的关键。

Mask

如果使用bert作为模型一部分微调数据,mask方案没准是最廉价的创造数据的方法。之前看到有人说用mlm做内容替换生成训练,为什么不直接搞个动态mask呢?一切需要的全都有了。
file

基于词典的替换

这个无需多言了。借助word2vec这种词向量,实现起来也是相当简单,还有fasttext也不错。
[caption id=”attachment_5091” align=”alignnone” width=”370”]同义词替换 同义词替换[/caption]

回翻译

这个简单就是 中文>英文>日文>中文,这么折腾一通,自己都看不懂的数据集就产生了。

file

file

HuggingFace的MarianMT预训练模型可以拿来做增强数据,直接模型做翻译。
https://huggingface.co/transformers/model_doc/marian.html#marianmtmodel
支持的翻译语言模型
https://huggingface.co/Helsinki-NLP

滑窗

这个起初是为了应对模型处理内容不够长来的处理方案,
最简单的方案:
可以在文章开头动态pad一定字符,然后在做数据截断处理,直接所有数据就可以平移了,对于Bert这种绝对位置编码,应该比较好用。

打断

还是依赖Bert mask法,随机在句子中插入mask,依赖语言模型的特性,让模型去预测中间缺失mask数据内容。
file

LaserTagger

谷歌家提出的方法,小样本福音。
文本复述任务是指把一句/段文本A改写成文本B,要求文本B采用与文本A略有差异的表述方式来表达与之意思相近的文本。
https://github.com/tongchangD/text_data_enhancement_with_LaserTagger

GAN

生成

参考:
A Visual Survey of Data Augmentation in NLP
https://amitness.com/2020/05/data-augmentation-for-nlp/