6 文本数据增强
学习目标¶
- 了解文本数据增强的作用.
-
掌握实现常见的文本数据增强的具体方法.
-
常见的文本数据增强方法:
- 回译数据增强法
1 回译数据增强法¶
-
回译数据增强目前是文本数据增强方面效果较好的增强方法, 一般基于google翻译接口, 将文本数据翻译成另外一种语言(一般选择小语种),之后再翻译回原语言, 即可认为得到与与原语料同标签的新语料, 新语料加入到原数据集中即可认为是对原数据集数据增强.
-
回译数据增强优势:
- 操作简便, 获得新语料质量高.
-
回译数据增强存在的问题:
- 在短文本回译过程中, 新语料与原语料可能存在很高的重复率, 并不能有效增大样本的特征空间.
-
高重复率解决办法:
- 进行连续的多语言翻译, 如: 中文→韩文→日语→英文→中文, 根据经验, 最多只采用3次连续翻译, 更多的翻译次数将产生效率低下, 语义失真等问题.
-
回译数据增强实现:
# 导入对应的工具包
from google_trans_new import google_translator
# 实例化翻译对象
translator = google_translator()
# 进行第一次翻译, 目标语言是韩语
texts= ['这家价格很便宜', '这家价格很便宜']
tra_list= []
for text in texts:
ko_res= translator.translate(text, lang_src='zh-cn', lang_tgt='ko')
tra_list.append(ko_res)
# 打印中间结果
print('中间结果是:')
print(tra_list)
# 进行第二次翻译, 目标语言是汉语
cn_list = []
for text in tra_list:
cn_res = translator.translate(text, lang_src='ko', lang_tgt='zh-cn')
cn_list.append(cn_res)
# 打印最后的结果
print("最后的结果是:")
print(cn_list)
输出结果展示:
中间翻译结果:
["이 가격은 매우 싼 ", "이 가격은 매우 싼"]
回译得到的增强数据:
["这个价格非常便宜","这个价格很便宜"]
- 注意
- 如果在运行过程中报:json.decoder.JSONDecodeError: Extra data: line 1 column 1962 (char 1961)错误
- 修改地址参考:https://github.com/lushan88a/google_trans_new/issues/36
- 温馨提示: 翻译接口在实时进行修改, 所以以后在使用第三方接口的时候要关注接口是否发生变化
- 修改方案:
-
- 使用find命令在服务器上找到对应的google_trans_new.py文件,即: find / -name 'google_trans_new.py'
-
- 将google_trans_new.py文件中151行的**response = (decoded_line + ']')修改为**response = decoded_line, 然后保存退出即可.
2 小结¶
-
学习了常见的文本数据增强方法:
- 回译数据增强法
-
学习了什么是回译数据增强法:
- 回译数据增强目前是文本数据增强方面效果较好的增强方法, 一般基于google翻译接口, 将文本数据翻译成另外一种语言(一般选择小语种),之后再翻译回原语言, 即可认为得到与与原语料同标签的新语料, 新语料加入到原数据集中即可认为是对原数据集数据增强.
-
学习了回译数据增强优势:
- 操作简便, 获得新语料质量高.
-
学习了回译数据增强存在的问题:
- 在短文本回译过程中, 新语料与原语料可能存在很高的重复率, 并不能有效增大样本的特征空间.
-
学习了高重复率解决办法:
- 进行连续的多语言翻译, 如: 中文→韩文→日语→英文→中文, 根据经验, 最多只采用3次连续翻译, 更多的翻译次数将产生效率低下, 语义失真等问题.
-
学习了回译数据增强实现.