题目

'''
Description: 文本数据增强之回译数据增强
Autor: 365JHWZGo
Date: 2021-12-05 16:54:33
LastEditors: 365JHWZGo
LastEditTime: 2021-12-05 18:23:23
'''

回译数据增强法

回译数据增强目前是文本数据增强方面效果较好的增强方法, 一般基于google翻译接口, 将文本数据翻译成另外一种语言(一般选择小语种),之后再翻译回原语言, 即可认为得到与与原语料同标签的新语料, 新语料加入到原数据集中即可认为是对原数据集数据增强.

回译数据增强优势
  • 操作简便, 获得新语料质量高.
回译数据增强存在的问题
  • 在短文本回译过程中, 新语料与原语料可能存在很高的重复率, 并不能有效增大样本的特征空间.

  • 高重复率解决办法:

    • 进行连续的多语言翻译, 如: 中文–>韩文–>日语–>英文–>中文, 根据经验, 最多只采用3次连续翻译, 更多的翻译次数将产生效率低下, 语义失真等问题.

前言

pip install googletrans==4.0.0-rc1

在client.py中的translate()函数中添加

   if isinstance(text, list):
   result = []
   for item in text:
       translated = self.translate(item, dest=dest, src=src)
       result.append(translated)
   return result

在这里插入图片描述
作用:
在没有添加这段话之前只能单句翻译,添加之后便可以使用数组进行翻译

单句翻译代码

# 提供正负样本各两例
positive_sample1 = "房间里有电脑,虽然房间的条件略显简陋,但环境、服务还有饭菜都还是很不错的。"
positive_sample2 = "是一家很实惠的酒店,交通方便,房间也宽敞。"
negative_sample1 = "漆面都掉了,估计是十年前的四星级吧,总之下次是不会入住了。"
negative_sample2 = "价格确实比较高,而且还没有早餐提供。"


review_array = [positive_sample1,positive_sample2,negative_sample1,negative_sample2]
print(review_array)

from googletrans import Translator
# 设置Google翻译服务地址
translator = Translator(service_urls=[
      'translate.google.cn'
])

# 进行第一次翻译,翻译目标是英文
for i in range(len(review_array)):
    res_trans = translator.translate(review_array[i],dest="en").text
    #读取翻译后的结果
    print(res_trans)

运行结果1

在这里插入图片描述

数组翻译法代码

# 提供正负样本各两例
positive_sample1 = "房间里有电脑,虽然房间的条件略显简陋,但环境、服务还有饭菜都还是很不错的。"
positive_sample2 = "是一家很实惠的酒店,交通方便,房间也宽敞。"
negative_sample1 = "漆面都掉了,估计是十年前的四星级吧,总之下次是不会入住了。"
negative_sample2 = "价格确实比较高,而且还没有早餐提供。"

review_array = [positive_sample1,positive_sample2,negative_sample1,negative_sample2]
print(review_array)

from googletrans import Translator
# 设置Google翻译服务地址
translator = Translator(service_urls=[
      'translate.google.cn'
])
res = translator.translate(review_array,dest="en")
print(list(map(lambda x: x.text, res)))

运行结果2

在这里插入图片描述

回译

res = translator.translate(review_array,dest="en")
res_text = list(map(lambda x: x.text, res))

#回译
res = translator.translate(res_text,dest="zh-cn")
print(list(map(lambda x: x.text, res)))

回译结果

在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐