什么是数据增强
数据增强可以简单理解为由少量数据生成大量数据的过程。一般比较成功的神经网络拥有大量参数,使这些参数正确工作需要用大量的数据进行训练,但实际情况中数据并没有那么多,因此需要做数据增强。
数据增强的作用
- 增加训练的数据量,提高模型的泛化能力
- 增加噪声数据,提升模型的鲁棒性
- 解决数据不足或数据不均衡问题
数据增强的分类
根据数据增强的对象可以将增强研究分类两类:
- 面向文本表示的增强研究: 主要是对原始文本的特征表示进行处理,比如在表示层注入随机噪音等方法,来获得增强后的文本表示。增强后的表示可以再进行解码获得增强文本或者直接用于训练模型。
- 面向原始文本的增强研究: 主要是通过对原始文本中的词进行同义词替换或者删除等操作来进行增强。大部分研究都通过引入各种外部资源来提升增强效果。
本文针对于面向原始文本的增强研究,总结以下几种方法。
EDA
ICLR 2019 workshop 论文《EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks》介绍了几种NLP数据增强技术,并推出了EDA github代码。EDA github repo提出了四种简单的操作来进行数据增强,以防止过拟合,并提高模型的泛化能力。EDA 在个文本分类问题上带来性能的提升,但是其增强方式可能会破坏原始文本的句法结构和通顺性。
同义词替换
不考虑 stopwords,在句子中随机抽取n个词,然后从同义词词典中随机抽取同义词,并进行替换。关于同义词可以使用开源同义词表+领域自定义词表来建立。
def synonym_replacement(words, n):
new_words = words.copy()
random_word_list = list(set([word for word in words if word not in stop_words]))
random.shuffle(random_word_list)
num_replaced = 0
for random_word in random_word_list:
# get_synonyms 获取某个单词的同义词列表
synonyms = get_synonyms(random_word)
if len(synonyms) >= 1:
synonym = random.

数据增强通过少量数据生成大量数据,提高模型泛化和鲁棒性。EDA包括同义词替换、随机删除、随机交换和随机插入。回译是通过多语言翻译增强文本,保持语义接近。其他方法如预打标和添加无意义词语。
最低0.47元/天 解锁文章
672

被折叠的 条评论
为什么被折叠?



