一.中文文本数据增强
(中文文本、同义句生成、扩充,增加,enhance、augment、text、nlp、样本不均衡、语料不够、数据不足、扩充增加),相较于图片,中文文本数据强的效果似乎没那么靠谱(效果没那么好),也更加困难,但是捏,很多时候,使用中文文本数据增强还是很有必要的,尤其是项目初期语料不够(估计只能手工构建),或者是样本严重不均衡的情况(比如说分类中一个类有200条数据,另外一个类有100万条数据)。
这个时候,我们就需要使用中文文本数据增强了,通俗的说,也可理解成同义句生成。看见过paperweekly上的一篇论文介绍,说中文文本的语序不是那么重要,如果存在部分词语顺序错误、错别字,人类也能get这句话是什么意思,比如说“大漠帝国并不是一个历史上存在的国度,人类在实真的史历上没有录记,这是真的。”一眼看去,我们就能识别这句话什么意思,少部分语序错误我们也能够区分。
又比如如果遮挡住,一句话的小半边或者是一半,我们依旧可以理解它们。
所以,在分类、阅读理解、对话系统、检索......大多数领域,是可以容忍噪声的,我们引入同义句,也是有一定道理的。
二.回译
回译,顾名思义,就是将A语言的译文B,再根据得到的译文B翻译成A语言。
很简单是不是。
我感觉这是比较靠普的方案了,一般任务下,中文-大语种间的回译,得到的语料,应该还是比较通顺的,质量勉勉强强也可以接受吧。至少比起《文本数据增强二》中的同义词的增-删-改-换读起来通顺点,句子间也有相对较大的差异。
为什么会这样子呢,你也可以看得出来,这是翻译过程中信息损失造成的。
三.技术方案
很自然的,你可以想到两种方案,
1. 第一,当然是调用在线翻译工具啦,像百度翻译、谷歌翻译、搜狗翻译、有道翻译、腾讯翻译什么的,有资源不用白不用,大公司的技术水平应该总会比大多数人强一点吧。
2. 第二,你不想用,就只能老老实实自己训练咯,Tranformer、Seq2Seq、NMT、Attention,只要你有高质量的语料,就好,不过我不太建议你这么做。当然你想离线部署,那又是另外一回事了。
这个工程代码实现的github项目地址为:
https://github.com/yongzhuo/nlp_xiaojiang/tree/master/AugmentText
希望对你有所帮助吧!