其他分享
首页 > 其他分享> > NLP——文本数据增强方法总结

NLP——文本数据增强方法总结

作者:互联网

转载自: https://blog.csdn.net/Flying_sfeng/article/details/121691380

 

1. Easy Data Augmentation(EDA)

EDA是一种简单但非常有效的方法,具体包括随机替换,随机插入,随机交换,随机删除等。

 

 代码也很简单: 

EDA代码

2. An Easier Data Augmentation(AEDA)

AEDA方法很简单,就是在句子中间添加标点符号以此来增强数据。整篇文章正文只有一段,所谓大道至简。中了EMNLP2021 Findings。

 

 代码同样很简单: AEDA code

 

3. Back translation(回译)

Back translation即回译:将文本翻译成另外一种语言,然后再翻译回来。同时,我们也可以翻译成多个语言,从而得到多条回译样本。

 

 

实现代码: 回译代码

 

4. Masked Language Model(掩码语言模型)

掩码语言模型(Masked Language Model),即利用预训练好的BERT, Roberta等模型,对原句子进行部分掩码,然后让模型预测掩码部分,从而得到新的句子。
使用方法也很简单:

 

但是,这种方法存在的一个问题是,决定要屏蔽文本的哪一部分并不简单。可以考虑使用启发式来确定掩码部分,否则,生成的文本可能无法保留原始句子的含义。具体请参考paper:Generating adversarial examples for text classification 

5. Random Noise Injection(随机注入噪音)

Random Noise Injection方法的思想是在文本中注入噪声,来生成新的文本,最后使得训练的模型对扰动具有鲁棒性。

在这种方法中,我们在句子中添加一些随机单词的拼写错误。可以通过编程方式或使用常见拼写错误的映射来添加这些拼写错误。

这种方法试图模拟在 QWERTY 键盘布局上打字时由于键之间非常接近而发生的常见错误

其思想是使用从 unigram 频率分布中采样的单词进行替换。这个频率基本上就是每个单词在训练语料库中出现的次数

 

 

6. Instance Crossover Augmentation(实例交叉增强)

在该方法中,一条 tweet 被分成两半,然后两个相同情绪类别(正/负)的 tweets 各自交换一半的内容。这么做的假设是,即使结果在语法和语义上不健全,新的文本仍将保留原来的情绪类别。

 

 这种方法对准确性没有影响,并且在 F1-score 上还有所提升,这表明它帮助了模型提升了在罕见类别上的判断能力,比如 tweet 中较少的中立类别。

 

 

7. Syntax-tree Manipulation(语法树增强)

其思想是解析并生成原始句子的依赖树,使用规则对其进行转换来对原句子做复述生成。
例如,一个不会改变句子意思的转换是句子的主动语态和被动语态的转换。

 

 

8. MixUp for Text(用于文本的混合)

 

 

 

该方法以给定的比例计算原始文本的两个标签的交叉熵损失。

9. Conditional Pre-trained Language Models(有条件的预训练语言模型)

通过文本生成的方法来增加样本(有点像今年比较火的prompt learning方法)

第一步:

 

 

第二步:

 

 

10. 工具介绍

10.1 NLP Albumentation

 

 code: code-sample

 

10.2 NLPAug Library

一些总结:

 

 

来自某kaggler:From my experience, the most commonly used and effective technique is synonym replacement via word embeddings.

 

 code: nlpaug

10.3 Things to keep in mind

一些注意事项:

 

标签:总结,NLP,code,随机,掩码,文本,方法,句子
来源: https://www.cnblogs.com/IllidanStormrage/p/16347433.html