和图像数据增强不同,NLP中文本数据增强比较少见。图像的一些增强操作,如图像旋转、灰度处理等等都不会改变图像的语义,语义不变变换的存在使得增广成为计算机视觉研究中必不可少的工具。但在NLP中进行数据增强很容易就改变了文本的语义,这样就失去了增强的意义。接下来给大家介绍几种能够在不改变基础语言前提下,进行文本数据扩增的方法。

同义词替换

即采用同义词替换文本中的词,丰富程度取决于同义词的数量,且基本不会改变语义。

词向量替换

NLP中常见的embeding方式由bert、word2vec、tf-idf等等,我们可以选择使用词向量余弦夹角最相近的几个词进行替换。

使用像Gensim这样的python包很容易得到预先训练好的单词向量并获得最相近的词向量。例如,这里我们使用在tweet上训练的单词向量找到单词“awesome”的同义词。

# pip install gensim
import gensim.downloader as apimodel = api.load('glove-twitter-25')
model.most_similar('awesome', topn=5)
# 五个最相近的词向量
[('amazing', 0.9687871932983398),('best', 0.9600659608840942),('fun', 0.9331520795822144),('fantastic', 0.9313924312591553),('perfect', 0.9243415594100952)]

Masked Language Model 遮盖词替换

像BERT、ROBERTA和ALBERT这样的Transformer模型已经在大量的文本上进行了训练,使用了一个称为MLM的模型,会随机对文本中的单词进行遮盖,再利用上下文对该遮盖词进行预测。

基于这一机制,我们可以遮盖需要增强文本的任一单词,再使用MLM模型对该词进行预测,选取前几个高概率单词进行替换。

采用transformers包能够很容易实现这一方法,我们能够通过设置来标记我们想要遮盖的词,并生成多个预测词汇。

from transformers import pipeline
nlp = pipeline('fill-mask')
nlp('This is <mask> cool')# Result
[{'score': 0.515411913394928,'sequence': '<s> This is pretty cool</s>','token': 1256},{'score': 0.1166248694062233,'sequence': '<s> This is really cool</s>','token': 269},{'score': 0.07387523353099823,'sequence': '<s> This is super cool</s>','token': 2422},{'score': 0.04272908344864845,'sequence': '<s> This is kinda cool</s>','token': 24282},{'score': 0.034715913236141205,'sequence': '<s> This is very cool</s>','token': 182}]

但这种方式存在一个重要问题,如果选择的遮盖词过于重要,很容易预测出影响原文本语义的词汇。

这里可以采用tf-idf算法,筛选出数值较低的单词,表明对于文本的重要性较低,再进行mask标记预测。

NLP中文本数据扩增的几种方法【一】单词替换相关推荐

  1. WPF中在XAML中实现数据类型转换的两种方法

    WPF中在XAML中实现数据类型转换的两种方法 原文:WPF中在XAML中实现数据类型转换的两种方法 熟悉数据绑定的朋友都知道,当我们在Model中获取一个对象的数据,常常需要对其进行数据转换后显示在 ...

  2. cxgrid中纵横单元格合并_逆向查询合并单元格中的数据,这两种方法你值得拥有...

    ​有同事询问了一个问题,说下面的这种表格,我有部门和人员的清单列表,如果我想根据人员清单去查询其所在的部门要怎么实现呢? 因为部门列的数据内容是经过合并的,如果我们直接使用Vlookup进行查找,查找 ...

  3. 【NLP】文本关键词提取的两种方法-TFIDF和TextRank

    背景 前两天看到论文<Chinese Poetry Generation with Planning based Neural Network>中使用TextRank进行关键词提取.在阅读 ...

  4. html中vue数据请求的三种方法

    1.resource Vue 要实现异步加载需要使用到 vue-resource 库. Vue.js 2.0 版本推荐使用 axios 来完成 ajax 请求. 先导入一个线上cdn的地址,也可以去n ...

  5. Oracle中新建数据表的两种方法

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  6. 【100个 Unity实用技能】☀️ | C# 中 Sort() 对List中的数据排序的几种方法 整理总结

    Unity 小科普 老规矩,先介绍一下 Unity 的科普小知识: Unity是 实时3D互动内容创作和运营平台 . 包括游戏开发.美术.建筑.汽车设计.影视在内的所有创作者,借助 Unity 将创意 ...

  7. NLP中的数据增强技术综述

    NLP数据增强技术 1. 词汇替换 Lexical Substitution 基于词典的替换 Thesaurus-based substitution 基于词向量的替换 Word-Embeddings ...

  8. NLP中的数据增强方法

    目录 1 概述 2. 方法 2.1 随机drop和shuffle 2.2 同义词替换 2.3 回译 2.4 文档裁剪 2.5 生成对抗网络 2.6 预训练的语言模型 1 概述 NLP中的数据是离散的. ...

  9. NLP中的数据增强方法综述

    论文链接:A Survey of Data Augmentation Approaches for NLP 摘要 由于越来越多的研究在低资源领域.新任务和需要大量训练数据的大规模神经网络中,NLP中的 ...

最新文章

  1. android 绘画,Android绘图基础
  2. python学习(2)--变量与表达式
  3. ViewFlipper的使用
  4. 类加载过程(加载+验证+准备+解析+初始化)
  5. VMP分析之VM解码循环与基本架构(一)
  6. 聚类 —— DBSCAN
  7. 呼叫中心的技术创新源于管理文化的变革
  8. 《守墓人》主程:如何用像素风做出真实的游戏世界
  9. zoj 3791 An Easy Game
  10. 颜色选择器的设计与实现II
  11. 手动添加linux用户
  12. java cookie保存登录信息吗_使用COOKIE对像实现保存用户基本信息(结合Session),ASP.Net实现用户登录全过程...
  13. 两个整形变量的值进行交换
  14. 求PSASP大神指教一下安装问题
  15. vue导出excel并修改表头样式
  16. 尔雅 2017大学计算机基础答案,2018超星尔雅大学计算机基础答案
  17. 谷歌浏览器显示一直加载的解决方法
  18. SSH项目整合基本步骤
  19. 爱快可以外接文件服务器吗,听说爱快路由器也支持NAS了?
  20. python数据分析——pandas

热门文章

  1. CNTK中GPU信息的获取
  2. 苹果电脑安装XP无声音问题的解决
  3. android padding margin的区别,如何正确使用padding和margin
  4. 别再逼三星了,它在起死回生的路上挣扎很久了
  5. linux命令总结dd命令详解
  6. (已更新)BGS本地局域网视频源码
  7. 2019-8-7欢乐捕鱼人的新手引导
  8. Linux下文件的打包与压缩(tar命令)
  9. 周末与神州租车一起开启的威海治愈之旅
  10. python手机运行器_MobileNet教程:用TensorFlow搭建在手机上运行的图像分类器