文本数据增强方法总结

我们知道,在NLP领域,特别是工业界中,标签数据是很难获得的,很多时候会面临数据量太小的问题,这个时候,文本数据增强可以有效地帮我们缓解这个问题。我本人在今年的科大讯飞AI大赛中也使用了下文提到的一些方法,并提升了5个百分点左右(后续的文章会详细介绍,请持续关注…),可以说效果是相当明显,所以说数据增强方法绝对是值得大家花点时间学习的。

本篇文章,我们将介绍常用的文本数据增强方法,并提供相应的参考文献以及使用案例。

1. Easy Data Augmentation(EDA)

EDA是一种简单但非常有效的方法,具体包括随机替换,随机插入,随机交换,随机删除等。
在这里插入图片描述
代码也很简单: EDA code

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方法的思想是在文本中注入噪声,来生成新的文本,最后使得训练的模型对扰动具有鲁棒性。

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

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

  3. Unigram Noising
    其思想是使用从 unigram 频率分布中采样的单词进行替换。这个频率基本上就是每个单词在训练语料库中出现的次数。
    在这里插入图片描述

6. Instance Crossover Augmentation

在该方法中,一条 tweet 被分成两半,然后两个相同情绪类别(正/负)的 tweets 各自交换一半的内容。这么做的假设是,即使结果在语法和语义上不健全,新的文本仍将保留原来的情绪类别。
在这里插入图片描述
这种方法对准确性没有影响,并且在 F1-score 上还有所提升,这表明它帮助了模型提升了在罕见类别上的判断能力,比如 tweet 中较少的中立类别。
在这里插入图片描述

7. Syntax-tree Manipulation

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

8. MixUp for Text

  1. wordMixup
    在这里插入图片描述
  2. sentMixup
    在这里插入图片描述
    该方法以给定的比例计算原始文本的两个标签的交叉熵损失。

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

一些注意事项:
在这里插入图片描述

### 文本数据增强方法和技术 文本数据增强是一种通过增加训练集中的样本来提高模型性能的技术。这种方法特别适用于解决实际项目中训练样本不足或标注成本高的问题[^4]。 #### EDA(Easy Data Augmentation) EDA 是一种简单但高效的文本数据增强方法,由 Protago 实验室提出并应用于 EMNLP-IJCNLP 2019 大会。该方法受到计算机视觉领域增强技术的启发,并提出了四种具体的增强策略[^1]: 1. **同义词替换(Synonym Replacement, SR)**: 随机选择一些单词,并用它们的同义词替代。 2. **随机插入(Random Insertion, RI)**: 随机选择一个句子中的某个单词,并在其前后插入其同义词。 3. **随机交换(Random Swap, RS)**: 随机选择两个单词并对调位置。 4. **随机删除(Random Deletion, RD)**: 随机删除某些单词以改变句式结构。 这些操作可以单独应用,也可以组合使用来生成多样化的增强样本[^3]。 #### 回译法(Back Translation) 回译法利用机器翻译模型将源语言文本翻译为目标语言后再转译回来的方式生成新的变体文本。具体过程如下: - 将原始文本从语种 A 翻译到另一种语种 B; - 再将语种 B 的文本重新翻译回到语种 A。 这种技术能够有效捕捉不同表达方式之间的转换关系,从而提升模型泛化能力[^2]。以下是简单的 Python 示例代码展示如何实现这一功能: ```python from googletrans import Translator def back_translation(text, intermediate_lang='fr'): translator = Translator() # Translate to an intermediate language translated_text = translator.translate(text, dest=intermediate_lang).text # Back-translate to the original language back_translated_text = translator.translate(translated_text, src=intermediate_lang, dest='en').text return back_translated_text original_sentence = "The cat is sitting on the mat." augmented_sentence = back_translation(original_sentence) print(f"Original Sentence: {original_sentence}") print(f"Augmented Sentence: {augmented_sentence}") ``` #### 句子重排序(Text Reordering) 除了上述两种主流方法外,还可以通过对句子内部成分的位置调整来进行增强处理。例如,`text_reordering()` 函数可以通过打乱词语顺序或者重组短语片段达到相似目的[^5]。 --- ### 总结 以上介绍了几种常见的文本数据增强手段及其应用场景。每种方法各有优劣,在实际部署过程中可以根据任务需求灵活选用合适方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值