一、文本数据增强方法
- 随机drop和shuffle
- drop:对于标题和描述中的字或词,随机的进行删除,用空格代替。另一种是 shuffle, 即打乱词序。
- 对于提升训练数据量,抑制模型过拟合等十分有效.
- code:https://github.com/dupanfei1/deeplearning-util/blob/master/nlp/augment.py
- 同义词替换
- 随机的选一些词并用它们的同义词来替换这些词,但这种方法作用较小,因为同义词具有非常相似的词向量,因此模型会将这两个句子当作相同的句子,而在实际上并没有对数据集进行扩充。
- 可以使用知乎 - 安全中心WordNet | A Lexical Database for English来查找同义词进行替换知乎 - 安全中心
- 回译
- 在这个方法中,我们用机器翻译把一段英语翻译成另一种语言,然后再翻译回英语。这个方法已经成功的被用在Kaggle恶意评论分类竞赛中。反向翻译是NLP在机器翻译中经常使用的一个数据增强的方法。其本质就是快速产生一些不那么准确的翻译结果达到增加数据的目的。
- 回译的方法不仅有类似同义词替换的能力,它还具有在保持原意的前提下增加或移除单词并重新组织句子的能力。
- 回译可使用python translate包和textblob包(少量翻译),或者使用百度翻译或谷歌翻译的api通过python实现。
- 参考:https://github.com/dupanfei1/deeplearning-util/tree/master/nlp
- 文档裁剪
- 新闻文章通常很长,在查看数据时,对于分类来说并不需要整篇文章。 文章的主要想法通常会重复出现。将文章裁剪为几个子文章来实现数据增强,这样将获得更多的数据。
- 生成对抗网络
- GAN是深度学习领域中很经典的算法,它们通常用来生成新的图像,但它的一些方法也可以适用于文本数据。
- 预训练模型
- 最近很多论文运用大量语料库预训练语言模型来处理自然语言任务得到了很好的效果,如ULMFIT,Open-AI transformer和BERT。语言模型是通过前面的单词预测句子中会出现的下一个单词。
- 预先训练的词向量
- NLP深度学习架构通常以嵌入层开始,该嵌入层将一个热编码字转换为数字矢量表示。我们可以从头开始训练嵌入层,但我们也可以使用预训练的单词向量,如Word2Vec,FastText或Glove,这些词向量使用无监督学习方法训练大量数据或训练我们域中的数据。预训练的词向量非常有效,因为它们为基于大量数据的单词提供模型上下文,并减少模型的参数数量,从而显着降低过度拟合的可能性。
- 预先训练的句子向量
- 我们可以将模型的输入从单词更改为句子,这样我们可以使用较少的模型,其中参数数量较少,仍然具有足够的表达能力。为了做到这一点,我们可以使用预先训练好的句子编码器,如Facebook的InferSent或谷歌的通用句子编码器。我们还可以使用跳过思维向量或语言模型等方法训练未标记数据的句子编码器。
- 预先训练的语言模型
- 最近的论文如ULMFIT、Open-AI变换器和BERT通过在非常大的语料库中预训练语言模型,为许多NLP任务获得了很好的效果。语言模型是使用前面的单词预测句子中的下一个单词的任务。像 BERT、ROBERTA 和 ALBERT 这样基于 Transformer 的模型已经使用 "Masked Language Modeling" 的方式,即模型要根据上下文来预测被 Mask 的词语,通过这种方式在大规模的文本上进行预训练。
- 无人监督或自我监督学习的预训练
- 如果我们有一个来自未标记数据的大型数据集,我们可以使用无监督的方法,如自动编码器或掩码语言模型,仅使用文本本身预训我们的模型。对我来说更好的另一个选择是使用自我监督。自我监督模型是在没有人类注释的情况下自动提取标签的模型。一个很好的例子是Deepmoji项目,在Deepmoji中,作者训练了一个模型,用于从推文中预测表情符号,在表情符号预测中获得良好结果之后,他们使用他们的网络预先训练了一个获得最新结果的高音扬声器情绪分析模型。表情符号预测和情绪分析显然非常相关,因此它作为预训练任务表现得非常好。新闻数据的自我监督任务可以预测标题、报纸、评论数量、转推的数量等等。自我监督可以是一种非常好的预训方法,但通常很难分辨出哪个代理标签将与你的真实标签相关联。
- Text Surface Transformation
- 使用正则表达式进行简单的模式匹配变换
- Random Noise Injection
- 在文本中注入噪声,以生成新的文本,使得训练的模型对扰动具有鲁棒性
- 具体方法有:Spelling error injection、keyboard error injection、unigram noising、Blank noising、sentence shuffling、random insertion、random swap
- Instance Crossover Augmentation
- 将一条样本分成两半,交换情绪类别相同的内容
- 帮助模型提升了在罕见类别上的判断能力
- Word Mixup
- 随机选两个句子,按比例组合embedding和label
- 生成式方法
参考: