百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

NLP 数据增强方法回译(transformer数据增强)

toyiye 2024-08-16 05:14 10 浏览 0 评论

数据增强是扩充数据集的有效方法,本文介绍一种简单可行的 NLP 数据集扩充方法——回译,回译在文本分类中有比较好的效果,也被成功地用在 Kaggle 恶意评论分类比赛中。

1. 回译

上一篇文章《NLP 数据增强方法 EDA》介绍了一种 NLP 数据增强方法 EDA,本文介绍另一种简单的数据增强方法回译回译指首先把句子翻译成另一种语言,然后再翻译回原来的语言。

原始句子:对面的女孩看过来

翻译成英文:The girl from the opposite looks over

回译:对面的女孩朝这边看了看

可以看到回译之后的句子和原始句子会存在不同,但是意思大体上一直。

2. 百度通用翻译 API

百度提供了通用翻译的 API,如下图所示。其中标准版是免费使用的,不限使用的字符量,但是每秒并发请求量是 1。通用翻译 API 地址:

http://api.fanyi.baidu.com/api/trans/product/prodinfo

点击下方的开始使用,然后注册成为开发者就可以获得 APPID。

得到 APPID 和密钥后可以通过 HTTP 接口获取翻译结果,需要通过翻译 API 传入待翻译的文本,源语言 (可自动识别) 和目标语言,即可得到翻译结果。

3. 代码

可以用下面的代码执行自动回译,用循环从文件中读取要回译的句子即可。注意事项:

  • 在下面的代码中,使用的是百度通用翻译 API 的标准版,因此两个翻译请求之间需要等待一秒,否则会返回错误码,54003 (访问频率受限)。
  • 需要输入自己的 appid 和 secretKey。

详细的可参考通用翻译 API 的技术文档,地址: http://api.fanyi.baidu.com/api/trans/product/apidoc#joinFile

# coding=utf-8

import http.client
import hashlib
import urllib
import random
import json
import time

appid = ''  # 填写你的appid
secretKey = ''  # 填写你的密钥
httpClient = None
myurl = '/api/trans/vip/translate'

ChineseLang = 'zh'   # 原文语种,填写中文 (zh),也可自动识别 (填auto)
EnglishLang = 'en'   # 译文语种,填英文 (en)

for i in range(2):
    query = input('请输入要回译的句子: ')  # 可以从数据集中读取

    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')

        # 翻译成英文,from=ChineseLang,to=EnglishLang
        salt = random.randint(32768, 65536)
        sign = appid + query + str(salt) + secretKey
        sign = hashlib.md5(sign.encode()).hexdigest()
        first_url = myurl + '?appid=' + appid + '&q=' + \
                   urllib.parse.quote(query) + '&from=' + \
                   ChineseLang + '&to=' + EnglishLang + '&salt=' + \
                   str(salt) + '&sign=' + sign

        httpClient.request('GET', first_url)
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        english_result = json.loads(result_all)
        english_result = english_result['trans_result'][0]['dst']
        print('翻译结果: ', english_result)

        # 本人使用的是通用翻译 API 的标准版,请求之间要限制频率,等待一秒
        time.sleep(1)

        # 翻译回中文,from=EnglishLang,to=ChineseLang
        salt = random.randint(32768, 65536)
        sign = appid + english_result + str(salt) + secretKey
        sign = hashlib.md5(sign.encode()).hexdigest()
        second_url = myurl + '?appid=' + appid + '&q=' + \
                    urllib.parse.quote(english_result) + '&from=' + \
                    EnglishLang + '&to=' + ChineseLang + '&salt=' + \
                    str(salt) + '&sign=' + sign

        httpClient.request('GET', second_url)
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        chinese_result = json.loads(result_all)
        chinese_result = chinese_result['trans_result'][0]['dst']
        print('回译结果: ', chinese_result)

    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()

运行效果如下图所示

4. 总结

  • 通过回译可以比较好的增加文本的多样性,有时可以在改变语法结构的情况下保留正确的语义信息。
  • 但是回译依赖于翻译的质量,可能会有不少文本的翻译结果不准确。

5. 参考文献

百度通用翻译 API 技术文档

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码