文本数据增强
NLP中数据增强的应用场景
样本数量较少
无论训练任何任务, 任何模型, 都需要一定数量训练样本的保证. 缺少训练样本的场景, 可以使用数据增强快速补充训练样本.
样本不均衡
在分类任务中经常遇到样本不平衡的问题, 样本数量很少的类别, 往往得不到充分的训练, 处于欠拟合的状态, 线上预测也不会得到很高的概率分数. 此时可以通过数据增强不足正样本的数量, 降低正负样本不平衡的比例, 最终提升模型的泛化能力.
提高模型的鲁棒性
通过数据增强丰富语料中信息表达的多样性, 使模型更加关注文本的语义信息, 降低局部噪声的影响, 最终提升模型的鲁棒性
NLP数据增强技术
回译
回译技术就是使用先进的翻译系统(Google)将语言A的文本先翻译成语言B, 然后再翻译回语言A从而实现样本增强的目的.
回译技术效果如此好得益于机器翻译模型的强大, 根本原因是迁移学习. 我们通过回译技术把翻译模型学到的语义, 语法, 句法等知识转移到了新生成的样本上, 为当前自然语言处理任务引入了新的信息和知识来源.
回译技术还存在多样性和噪音平衡的选择问题. 例如为了进一步丰富增强样本的多样性, 可以将样本从语言A翻译成语言B, 再翻译成语言C, 再将语言C翻译回语言A, 得到新样本. 毫无疑问, 这样得到的样本进一步丰富了, 但多个翻译模型也累积了更多的噪声, 可能会对原始文本的语义造成伤害.
词替换
EDA
EDA(Easy Data Augmentation)是论文A Survey of Data Augmentation Approaches for NLP中提出来的, 综合了四种简单操作的数据增强技术. 包含:
同义词替换(SR, Synonyms Replace): 不考虑停用词, 在句子中随机抽取N个词, 然后从同义词词典中随机抽取同义词, 并进行替换
随机插入(RI, Randomly Insert): 不考虑停用词, 随机抽取一个词, 然后在该词的同义词集合中随机选择一个, 插入原句子中的随机位置. 该过程可以重复N次
随机交换(RS, Randomly Swap): 句子中, 随机选择两个词, 位置交换. 该过程可以重复N次
随机删除(RD, Randomly Delete): 句子中的每个词, 以概率p随机删除
这种方法比较粗糙, 可能不会带来整体效果的提升, 甚至引入过多的噪音. 更详细的EDA说明参考原论文, 或下面的文章:
代码可以参考:
基于 Word Embedding 的替换
基于Word Embedding的替换技术其实和同义词典的方法是一致的, 只是这里维护的不是显式的字典, 而这种方法是将所有字词映射到embedding向量空间中, 通过向量的距离来判断词之间是否相似, 进而决定两个词是否是同义词.
基于 Masked LM 的替换
使用Word2Vec等技术得到的Word Embedding无法解决一词多义的问题, 同一个词在不同的上下文中, 蕴含的意思有非常大的差异. 因此使用同一个embedding向量表征就会出现较大的误差.
而BERT这类模型, 使用Masked LM学习token的表征, 融合了上下文的信息, 得到动态的表征. 在文本增强中使用时, 将某个token使用[mask]
token进行替代, 预测这个位置的token在词库中的概率分布, 按概率采样.
这种方法因为考虑了上下文信息, 所以生成的文本更符合语法规范.
规则
随机打乱语句顺序
将文本中的语句顺序打乱从而生成新的样本.
操纵语法树
操纵语法树技术的思想是通过解析并生成原始语句的依赖树, 然后使用规则对原来的语句进行复述从而生成新数据.
下面时一个将主动语态句子转换为被动语态的例子:
生成式
SimBERT
参考资料
最后更新于