NLP数据增强

文本中的数据增强

NLP中小的扰动可能会对含义造成比较大的影响,比如:去掉或改变某个词,会导致整个句子的含义或情感发生巨大偏差。

1.随机drop和shuffle drop:

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

https://github.com/dupanfei1/deeplearning-util/blob/master/nlp/augment.py

2.传统EDA

(1)同义词替换(SR: Synonyms Replace):

不考虑stopwords,在句子中随机抽取n个词,然后从同义词词典中随机抽取同义词,并进行替换。

(2)随机插入(RI: Randomly Insert):

不考虑stopwords,随机抽取一个词,然后在该词的同义词集合中随机选择一个,插入原句子中的随机位置。该过程可以重复n次。

(3)随机交换(RS: Randomly Swap):

句子中,随机选择两个词,位置交换。该过程可以重复n次。

(4)随机删除(RD: Randomly Delete):

句子中的每个词,以概率p随机删除。

EDA对于句子的修改,并没有改变数据分布以及标签的分布。

论文《EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks》

3.回译

概念:用机器翻译把一段中文翻译成另一种语言,然后再翻译回中文。具有在保持原意的前提下增加或移除单词并重新组织句子的能力。

方法:使用python translate包和textblob包(少量翻译),或者使用百度翻译或谷歌翻译的api通过python实现。

链接:https://amitness.com/2020/05/data-augmentation-for-nlp/

https://github.com/dupanfei1/deeplearning-util/tree/master/nlp

4. 文档裁剪

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

5.生成对抗网络

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

6.预训练模型

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

7.预训练的词向量

NLP深度学习架构通常以嵌入层开始,该嵌入层将一个热编码字转换为数字矢量表示。我们可以从头开始训练嵌入层,但我们也可以使用预训练的单词向量,如Word2Vec,FastText或Glove,这些词向量使用无监督学习方法训练大量数据或训练我们域中的数据。预训练的词向量非常有效,因为它们为基于大量数据的单词提供模型上下文,并减少模型的参数数量,从而显着降低过度拟合的可能性。

8.预训练的句子向量

我们可以将模型的输入从单词更改为句子,这样我们可以使用较少的模型,其中参数数量较少,仍然具有足够的表达能力。为了做到这一点,我们可以使用预先训练好的句子编码器,如Facebook的InferSent或谷歌的通用句子编码器。我们还可以使用跳过思维向量或语言模型等方法训练未标记数据的句子编码器。

9.预训练的语言模型

最近的论文如ULMFIT、Open-AI变换器和BERT通过在非常大的语料库中预训练语言模型,为许多NLP任务获得了惊人的结果。语言模型是使用前面的单词预测句子中的下一个单词的任务。对我来说,这种预训练并没有真正帮助获得更好的结果,但文章已经展示了一些方法来帮助我更好地微调,我还没有尝试过。

10.无人监督或自我监督学习的预训练

如果我们有一个来自未标记数据的大型数据集,我们可以使用无监督的方法,如自动编码器或掩码语言模型,仅使用文本本身预训我们的模型。对我来说更好的另一个选择是使用自我监督。自我监督模型是在没有人类注释的情况下自动提取标签的模型。一个很好的例子是Deepmoji项目,在Deepmoji中,作者训练了一个模型,用于从推文中预测表情符号,在表情符号预测中获得良好结果之后,他们使用他们的网络预先训练了一个获得最新结果的高音扬声器情绪分析模型。表情符号预测和情绪分析显然非常相关,因此它作为预训练任务表现得非常好。新闻数据的自我监督任务可以预测标题、报纸、评论数量、转推的数量等等。自我监督可以是一种非常好的预训方法,但通常很难分辨出哪个代理标签将与你的真实标签相关联。

11. 基于上下文的数据增强方法

(1)论文:Contextual Augmentation: Data Augmentation by Words with Paradigmatic Relations

(2)代码:使用双向循环神经网络进行数据增强。https://github.com/pfnet-research/contextual_augmentation

(3)该方法目前针对于英文数据进行增强,实验工具:spacy(NLP自然语言工具包)和chainer(深度学习框架)。

本文参考:https://zhuanlan.zhihu.com/p/56139575

欢迎关注公众号“NLP小讲堂”,获取更多人工智能和自然语言处理前沿热点内容。

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值