- NLP中的数据是离散的。它的后果是我们无法对输入数据进行直接简单地转换,而大多数CV工具则没有这个限制,如domain randomization。
- 小的扰动可能会改变含义。在NLP中,删掉一个否定词可能会改变整个句子的情绪,而修改一段话中的某个词甚至会改变语意。但CV不存在这种情况,不论图像中的是猫还是狗,扰动单个像素一般不会影响模型预测,甚至都不会出现明显变化,如插值就是一种有效的图像处理技术。
以下是一些针对文本的数据的增强方法:
随机drop和shuffle
数据增强主要采取两种方法,一种是 drop, 对于标题和描述中的字或词,随机的进行删除,用空格代替。另一种是 shuffle, 即打乱词序。
对于"如何评价 2017 知乎看山杯机器学习比赛?" 这个问题,使用 drop 对词层面进行处理之后,可能变成"如何 2017 看山杯机器学习 “. 如果使用 shuffle 进行处理,数据就 可能变成"2017 机器学习?如何比赛知乎评价看山杯”。 数据 增强对于提升训练数据量,抑制模型过拟合等十分有效.
code:https://github.com/dupanfei1/deeplearning-util/blob/master/nlp/augment.py
同义词替换
在这种方法中,我们随机的选一些词并用它们的同义词来替换这些词,例如,我们将句子“我非常喜欢这部电影”改为“我非常喜欢这个影片”,这样句子仍具有相同的含义,很有可能具有相同的标签。但这种方法对我的任务来说没什么用,因为同义词具有非常相似的词向量,因此模型会将这两个句子当作相同的句子,而在实际上并没有对数据集进行扩充。
回译
在这个方法中,我们用机器翻译把一段英语翻译成另一种语言,然后再翻译回英语。这个方法已经成功的被用在Kaggle恶意评论分类