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

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

同义词替换

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

在这里插入图片描述

词向量替换

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

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

# pip install gensim
import gensim.downloader as api

model = 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标记预测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

'Humz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值