NLP文本数据增强热门技术

  • 背景
    • word替换
      • 同义词替换
      • 词向量替换
      • 掩码语言模型(Masked Language Model,MLM)
      • 基于tfidf的词替换
    • 反向翻译
    • 文本表面转换
    • 随机噪声
      • 注入拼写错误例子
      • 空白噪声
      • 打乱文本句子顺序
      • 随机处理(插入、替换、删除)
    • 语法树
    • 文本混合
      • wordMixup
      • sentMixup

背景

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

word替换

同义词替换

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

使用该方法扩充数据集的论文如:

  • Character-level Convolutional Networks for Text Classification
  • EDA: Easy Data Augmentation Techniques for Boosting Performance on Text Classification Tasks
  • Siamese Recurrent Architectures for Learning Sentence Similarity

词向量替换

采用预先训练好的单词嵌入,如Word2Vec、GloVe、FastText、Sent2Vec,并使用嵌入空间中最近的相邻单词替换句子中的某些单词。(个人认为用bert微调后的向量表现更佳)

因为词向量可将词汇映射到同一个语义空间,在具体应用中,我们可以通过临近词替换当前词的方式,随机替换单词进而增加训练数据。
使用该方法的论文如:

  • TinyBERT: Distilling BERT for Natural Language Understanding

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

#导入预训练好的Glove词向量
import gensim.downloader as apiinfo = 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 apicorpus = 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已经采用大量语料集进行了预训练,所以这种方法生成的词汇在语义程度上更接近原词,生成的文本也更有可解释性。

这种方法存在的问题是要考虑遮盖哪些词,能最大限度保留文本上下文语义。
源码可参考:token预测

基于tfidf的词替换

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

  • Unsupervised Data Augmentation for Consistency Training
    源码可参考:word_level_augment

反向翻译

先将文本翻译成其他语言,再翻译回来,如果新文本与原文本形式不一,即可用于数据增强。

资源:Google Sheets说明

文本表面转换

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

随机噪声

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

注入拼写错误例子

映射常见拼写句子,生成错误映射。

资源:英文常见错误映射

空白噪声

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

打乱文本句子顺序

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

语法树

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

文本混合

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

  • Augmenting Data with Mixup for Sentence Classification: An Empirical Study
    具体方法有wordMixup和sentMixup两种。

wordMixup

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

sentMixup

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

NLP文本数据增强热门技术相关推荐

  1. nlp文本数据增强_如何使用Texthero为您的NLP项目准备基于文本的数据集

    nlp文本数据增强 Natural Language Processing (NLP) is one of the most important fields of study and researc ...

  2. 人机交互系统(3.1)——NLP文本数据增强方法

    一.数据增强的背景和应用场景 随着AI技术的逐步发展,更好的神经网络模型对数据规模的要求也逐步提升.而在分类任务中,若不同类别数据量相差很大,模型则会出现过拟合现象,严重影响预测的正确性. 从广义上来 ...

  3. NLP的数据增强技术总结

    文章目录 一.简单的数据增强技术 EDA (Easy Data Augmentation) 即Normal Augmentation Method 1.`同义词替换`(Synonym Replacem ...

  4. 文本数据增强一(概述、中文、同义句生成、enhance、augment、text、nlp)

    文本数据增强(扩充增加.中文.同义句生成.enhance.augment.text.nlp) AugmentText 概述 - 相较于图像数据增强,文本数据增强,现在还是有很多问题的: - 往更严格的 ...

  5. 【NLP】文本数据分析文本特征处理文本数据增强

    一.文本数据分析 文本数据分析的作用: 文本数据分析能够有效帮助我们理解数据语料, 快速检查出语料可能存在的问题, 并指导之后模型训练过程中一些超参数的选择. 常用的几种文本数据分析方法: 标签数量分 ...

  6. NLP中数据增强的综述,快速的生成大量的训练数据

    作者:amitness编译:ronghuaiyang 导读 深度学习视觉领域的增强方法可以很大程度上提高模型的表现,并减少数据的依赖,而NLP上做数据增强不像在图像上那么方便,但还是有一些方法的. 与 ...

  7. 2.文本预处理(分词,命名实体识别和词性标注,one-hot,word2vec,word embedding,文本数据分析,文本特征处理,文本数据增强)

    文章目录 1.1 认识文本预处理 文本预处理及其作用 文本预处理中包含的主要环节 文本处理的基本方法 文本张量表示方法 文本语料的数据分析 文本特征处理 数据增强方法 重要说明 1.2 文本处理的基本 ...

  8. 文本数据增强三(回译,不同语种间的翻译)

    一.中文文本数据增强 (中文文本.同义句生成.扩充,增加,enhance.augment.text.nlp.样本不均衡.语料不够.数据不足.扩充增加),相较于图片,中文文本数据强的效果似乎没那么靠谱( ...

  9. NLP:数据增强/Data Argumentation【词汇替换、随机Mask、回译、添加噪声】

    数据增强技术在计算机视觉中应用的比较广泛,但是在 NLP 中却很少能得到有效的应用.本质原因在于图像中的一些数据增强方法,比如将图像旋转几度或将其色度转换为灰度,在增强数据的同时并不会改变图像本身的含 ...

最新文章

  1. 锐捷RG-S2126G交换机密码恢复实战
  2. 爱上经典之《蜗牛与黄鹂鸟》
  3. 基于注解的方式装配bean
  4. Tab标签页接口---使用Intent对象
  5. linux c 封装redis,封装hiredis——C++与redis对接(一)(string的SET与GET操作)
  6. mysql数据库内存分配_MySQL OOM 系列一 Linux内存分配
  7. POJ 1080 Human Gene Functions(DP:LCS)
  8. selenium python自动化测试 ddt数据驱动
  9. html支付系统时间,中国人民银行支付系统介绍
  10. python外汇兑换代码_Python爬取中国银行外汇牌价
  11. Prometheus监控案例
  12. 使用线性神经网络实现逻辑与和逻辑异或(一)
  13. 小程序登录授权获取用户信息
  14. 计算机视觉与摄影测量的不同2
  15. python中找最小值,使用循环python查找最小值
  16. docker更换自己的阿里云镜像地址
  17. 4、JSX 基本语法规则
  18. Implement (interface)
  19. 姿态解算进阶:互补滤波(陀螺仪、加速度计、地磁计数据融合)
  20. Adaptive AUTOSAR (AP) 平台设计(9)——Persistency

热门文章

  1. Vue中的scoped实现原理和样式穿透方法及原理
  2. teb局部路径规划算法
  3. 自动驾驶的核心技术之四:线控技术
  4. java实现舞伴分配问题
  5. 我用Python来测运势,五月份好像有桃花。
  6. ubuntu查看显卡是否安装
  7. C语言中函数的定义举例说明,C语言函数的定义与使用
  8. 目标检测YOLO实战应用案例100讲-基于去雾增强和张量分析的红外小目标检测
  9. 微信小程序学习记录2(js中数组和对象)
  10. 女友遭遇职场不公?程序员怒怼女友领导后替女友辞职!网友:你凭什么替她做决定?...