当前位置:   article > 正文

NLP数据增强方法总结及实现_数据增强 easy eda

数据增强 easy eda

目录

1、数据增强

2、简单数据增强(Easy Data Augmentation,EDA)

(1)EDA方法

(2)EDA工具使用方法

(3)EDA相关工具

3、回译

4、基于上下文的数据增强方法

5、数据增强的作用


1、数据增强

数据增强是扩充数据样本规模的一种有效地方法,数据的规模越大、质量越高越好,模型才能够有着更好的泛化能力。

2、简单数据增强(Easy Data Augmentation,EDA)

(1)EDA方法

同义词替换、随机插入、随机交换、随机删除

  • 同义词替换(Synonym Replacement, SR):从句子中随机选取n个不属于停用词集的单词,并随机选择其同义词替换它们;
  • 随机插入(Random Insertion, RI):随机的找出句中某个不属于停用词集的词,并求出其随机的同义词,将该同义词插入句子的一个随机位置。重复n次;
  • 随机交换(Random Swap, RS):随机的选择句中两个单词并交换它们的位置。重复n次;
  • 随机删除(Random Deletion, RD):以 $p$ 的概率,随机的移除句中的每个单词。

(2)EDA工具使用方法

  • 先将需要处理的语料按照下面的例子处理好成固定的格式

0 今天天气不错哦。

1 今天天气不行啊!不能出去玩了。

0 又是阳光明媚的一天!

即,标签+一个制表符\t+内容

  • 命令使用例子
$python code/augment.py --input=train.txt --output=train_augmented.txt --num_aug=16 --alpha=0.05

其中:

  • input参数:需要进行增强的语料文件
  • output参数:输出文件
  • num_aug参数:每一条语料将增强的个数
  • alpha参数:每一条语料中改动的词所占的比例

(3)EDA相关工具

3、回译

在这个方法中,我们用机器翻译把一段中文翻译成另一种语言,然后再翻译回中文。回译的方法不仅有类似同义词替换的能力,它还具有在保持原意的前提下增加或移除单词并重新组织句子的能力。

回译可使用python translate包和textblob包(少量翻译),或者使用百度翻译或谷歌翻译的api通过python实现。

百度开放的翻译接口百度翻译开放平台支持每月200万字的免费翻译,提供了各种语言的使用demo,本篇使用Python3调用百度API实现自然语言的翻译,实现代码如下。

  1. import http.client
  2. import hashlib
  3. import json
  4. import urllib
  5. import random
  6. #调用百度翻译API将中文翻译成英文
  7. def baidu_translate(content):
  8. appid = 'appid'
  9. secretKey = '秘钥'
  10. httpClient = None
  11. myurl = '/api/trans/vip/translate'
  12. q = content
  13. fromLang = 'zh' # 源语言
  14. toLang = 'en' # 翻译后的语言
  15. salt = random.randint(32768, 65536)
  16. sign = appid + q + str(salt) + secretKey
  17. sign = hashlib.md5(sign.encode()).hexdigest()
  18. myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(
  19. q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
  20. salt) + '&sign=' + sign
  21. try:
  22. httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
  23. httpClient.request('GET', myurl)
  24. # response是HTTPResponse对象
  25. response = httpClient.getresponse()
  26. jsonResponse = response.read().decode("utf-8") # 获得返回的结果,结果为json格式
  27. js = json.loads(jsonResponse) # 将json格式的结果转换字典结构
  28. dst = str(js["trans_result"][0]["dst"]) # 取得翻译后的文本结果
  29. #print(dst) # 打印结果
  30. return dst
  31. except Exception as e:
  32. print('err:' + e)
  33. finally:
  34. if httpClient:
  35. httpClient.close()
  36. if __name__=='__main__':
  37. contents='百度翻译开放平台是百度翻译针对广大开发者提供的开放服务平台'
  38. #将翻译后的英文写入文件
  39. with open('data/test_data_translate', 'a', encoding="utf-8") as f:
  40. translate_en = baidu_translate_1(contents) # 中文翻译成英文
  41. f.write( '\t' + translate_zh + '\n')
  42. print(translate_en)

4、基于上下文的数据增强方法

(1)方法论文:Contextual Augmentation: Data Augmentation by Words with Paradigmatic Relations

(2)方法实现代码:使用双向循环神经网络进行数据增强。

(3)该方法目前针对于英文数据进行增强,实验工具:spacy(NLP自然语言工具包)和chainer(深度学习框架)。

5、数据增强的作用

(1)增加训练的数据量,提高模型的泛化能力。

(2)增加噪声数据,提升模型的鲁棒性。

参考:数据增强方法

本人博文NLP学习内容目录:

一、NLP基础学习

1、NLP学习路线总结

2、TF-IDF算法介绍及实现

3、NLTK使用方法总结

4、英文自然语言预处理方法总结及实现

5、中文自然语言预处理方法总结及实现

6、NLP常见语言模型总结

7、NLP数据增强方法总结及实现

8、TextRank算法介绍及实现

9、NLP关键词提取方法总结及实现

10、NLP词向量和句向量方法总结及实现

11、NLP句子相似性方法总结及实现

12、NLP中文句法分析

二、NLP项目实战

1、项目实战-英文文本分类-电影评论情感判别

2、项目实战-中文文本分类-商品评论情感判别

3、项目实战-XGBoost与LightGBM文本分类

4、项目实战-TextCNN文本分类实战

5、项目实战-Bert文本分类实战

6、项目实战-NLP中文句子类型判别和分类实战

交流学习资料共享欢迎入群:955817470(群一),801295159(群二)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/366449
推荐阅读
相关标签
  

闽ICP备14008679号