NLP文本数据增强热门技术

背景

CV中有很多简单实用的数据增强方式,如旋转图像、调整RGB等。这些方法在保证图像特征的基础上增加了训练量,进而能够提升模型的表现效果。但在NLP中这些方法就不再适用,文本上少量的调整都可能改变整体上下文语义信息。
A Visual Survey of Data Augmentation in NLP》(本文主要参考文章)中这样阐述这种情况:

CV和NLP数据增强对比

word替换

同义词替换

基于公开的知识库,随机选择当前句子中的单词,应用同义词库将其替换为其同义词。比如,使用WordNet数据库,将「awesome」替换为「amazing」。
同义词替换
使用该方法扩充数据集的论文如:

词向量替换

采用预先训练好的单词嵌入,如Word2Vec、GloVe、FastText、Sent2Vec,并使用嵌入空间中最近的相邻单词替换句子中的某些单词。(个人认为用bert微调后的向量表现更佳)
词向量实例
因为词向量可将词汇映射到同一个语义空间,在具体应用中,我们可以通过临近词替换当前词的方式,随机替换单词进而增加训练数据。
使用该方法的论文如:

另外,也可以调用api接口,来获取词向量和每个词的临近词向量。可以导入预训练好的词向量,也可以自行训练(自行训练需要构建个人语料集,分词后feed到词向量模型,经过训练后再计算相似度)。

#导入预训练好的Glove词向量
import gensim.downloader as api

info = api.info()  # show info about available models/datasets
model = api.load("glove-twitter-25")  # download the model and return as object ready for use
model.most_similar("cat")
#导入预训练好的word2vec词向量
from gensim.models.word2vec import Word2Vec
import gensim.downloader as api

corpus = api.load('text8')  # download the corpus and return it opened as an iterable
model = Word2Vec(corpus)  # train a model from the corpus
model.most_similar("car")

掩码语言模型(Masked Language Model,MLM)

在BERT模型中,可以通过MLM来根据上下文预测遮盖的词汇。因为bert已经采用大量语料集进行了预训练,所以这种方法生成的词汇在语义程度上更接近原词,生成的文本也更有可解释性。
bert MLM实例
这种方法存在的问题是要考虑遮盖哪些词,能最大限度保留文本上下文语义。
源码可参考:token预测

基于tfidf的词替换

替换文本中tfidf分数较低的词汇,要替换的词汇由所有分数较低的词汇中随机抽样。
使用该方法的论文有:

反向翻译

先将文本翻译成其他语言,再翻译回来,如果新文本与原文本形式不一,即可用于数据增强。
反向翻译实例
资源:Google Sheets说明

文本表面转换

使用简单模式匹配来进行转换,这个主要基于正则表达式,无太多技术含量,此处不详述。

扫描二维码关注公众号,回复: 11569295 查看本文章

随机噪声

加入噪声是机器学习常用的用于提高模型鲁棒性的方法。主要有如下几种噪声注入方式。

注入拼写错误例子

映射常见拼写句子,生成错误映射。
拼写错误实例
资源:英文常见错误映射

空白噪声

随机去除一些词汇,并用占位符标记。常用于缓解过拟合问题。

打乱文本句子顺序

随机处理(插入、替换、删除)

语法树

总结可为:规则+语法依赖树。实用价值较小,不详述。

文本混合

思想基于图像增强技术,经过修改应用于NLP。相关论文:

wordMixup

随机选择两个文本,经过等长的embedding嵌入,按比例组合在一起。然后再经过CNN/LSTM等编码得到文本嵌入,计算交叉熵。

sentMixup

与上述方法类似,在细节处做了调整。

猜你喜欢

转载自blog.csdn.net/qq_36663518/article/details/107413268