NLP中的数据增强方法

目录

1 概述

2. 方法

2.1 随机drop和shuffle

2.2 同义词替换

2.3 回译

2.4 文档裁剪

2.5 生成对抗网络

2.6 预训练的语言模型


1 概述

NLP中的数据是离散的。它的后果是我们无法对输入数据进行直接简单地转换,而大多数CV工具则没有这个限制,如domain randomization。
小的扰动可能会改变含义。在NLP中,删掉一个否定词可能会改变整个句子的情绪,而修改一段话中的某个词甚至会改变语意。但CV不存在这种情况,不论图像中的是猫还是狗,扰动单个像素一般不会影响模型预测,甚至都不会出现明显变化,如插值就是一种有效的图像处理技术。

2. 方法

2.1 随机drop和shuffle

数据增强主要采取两种方法,一种是 drop, 对于标题和描述中的字或词,随机的进行删除,用空格代替。另一种是 shuffle, 即打乱词序。
对于"如何评价 2017 知乎看山杯机器学习比赛?" 这个问题,使用 drop 对词层面进行处理之后,可能变成"如何 2017 看山杯机器学习 “. 如果使用 shuffle 进行处理,数据就 可能变成"2017 机器学习?如何比赛知乎评价看山杯”。 数据 增强对于提升训练数据量,抑制模型过拟合等十分有效.

2.2 同义词替换

EDA 同义词替换、随机插入、随机交换、随机删除

在这种方法中,我们随机的选一些词并用它们的同义词来替换这些词,例如,我们将句子“我非常喜欢这部电影”改为“我非常喜欢这个影片”,这样句子仍具有相同的含义,很有可能具有相同的标签。

2.3 回译

在这个方法中,我们用机器翻译把一段英语翻译成另一种语言,然后再翻译回英语。这个方法已经成功的被用在Kaggle恶意评论分类竞赛中。反向翻译是NLP在机器翻译中经常使用的一个数据增强的方法。。其本质就是快速产生一些不那么准确的翻译结果达到增加数据的目的。

例如,如果我们把“I like this movie very much”翻译成俄语,就会得到“Мне очень нравится этот фильм”,当我们再译回英语就会得到“I really like this movie”。回译的方法不仅有类似同义词替换的能力,它还具有在保持原意的前提下增加或移除单词并重新组织句子的能力。

回译可使用python translate包和textblob包(少量翻译),或者使用百度翻译或谷歌翻译的api通过python实现。
参考:https://github.com/dupanfei1/deeplearning-util/tree/master/nlp

2.4 文档裁剪

新闻文章通常很长,在查看数据时,对于分类来说并不需要整篇文章。 文章的主要想法通常会重复出现。将文章裁剪为几个子文章来实现数据增强,这样将获得更多的数据。

2.5 生成对抗网络

GAN是深度学习领域中最令人兴奋的最新进展之一,它们通常用来生成新的图像,但它的一些方法或许也可以适用于文本数据。

2.6 预训练的语言模型

最近很多论文运用大量语料库预训练语言模型来处理自然语言任务得到了惊人的结果,如ULMFIT,Open-AI transformer和BERT。语言模型是通过前面的单词预测句子中会出现的下一个单词。

Reference

NLP数据增强方法

文本数据增强一(概述、中文、同义句生成、enhance、augment、text、nlp)

发布了74 篇原创文章 · 获赞 17 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/sinat_25394043/article/details/103477626
今日推荐