文本数据增强方法

文本数据增强方法-百度翻译API的使用

文本数据增强不同于图像领域的数据增强,因为文本是离散的,而图像是属于连续空间的.  
例如针对两张图片,可以通过线性插值,旋转或者SMOTE等方法构造出出另外一张图片;然而对于文本数据而言,假设 x 1 , x 2 x_1, x_2 x1,x2分别表示一句话,通过线性插值出来的句子可能根本就不存在,再或者假设构造出来的句子存在性满足,然而也可能因为一个较小的扰动影响整个句子的语义信息, 故文本数据增强存在一定的难度.

以下是本人借鉴的一些文本数据增强的方法,在此感谢以下作者:
参考资料:

  1. https://www.zhihu.com/question/305256736
  2. https://github.com/quincyliang/nlp-data-augmentation
  3. https://github.com/yongzhuo/nlp_xiaojiang/tree/master/AugmentText
  4. https://blog.youkuaiyun.com/nineship/article/details/84452127

目前常用的文本数据增强方法有:
(1) 同义词替换,去停用词;
(2) 随机插入,随机删除;
(3) 随机打乱句子的顺序(对不注重语义信息的文本可能有用);
(4) 随机Mask掉原始文本中的某些词;
(5) 回译-回翻译:指的是将目标语言翻译成另外一种语言再翻译回来的一种方法.

百度的通用翻译API

下边介绍一下如何使用百度的通用翻译API,具体使用文档可参照如下:
http://api.fanyi.baidu.com/api/trans/product/apidoc
通用翻译API每月提供200万字符免费额度,超出后仅收取超出部分费用.

首先需要按照上述链接文档要求注册认证账号,注册账号之后管理控制台会显示对应开发者信息的APP ID与密钥,具体使用方法,可参照上述技术文档,也可参阅一下代码块:

1. 导入基本包
import time
import http.client
import hashlib
import json
import urllib
import random
2. 百度翻译API使用
def baidu_translate(content,from_lang,to_lang):
    # 开发者信息申请信息处的APP ID
    appid = '***'   
    # 开发者信息申请信息处的密钥
    secretKey = '***'
    # 本机的ip地址
    httpClient = "***"
    myurl = '/api/trans/vip/translate'
    
    # 需要翻译的文本内容
    q = content
    salt = random.randint(32768, 65536)
    sign = appid + q + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(
        q) + '&from=' + from_lang + '&to=' + to_lang + '&salt=' + str(
        salt) + '&sign=' + sign

    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
        # response是HTTPResponse对象
        response = httpClient.getresponse()
        # 获得返回的结果,结果为json格式
        jsonResponse = response.read().decode("utf-8") 
         # 将json格式的结果转换字典结构
        js = json.loads(jsonResponse) 
         # 取得翻译后的文本结果
        dst = str(js["trans_result"][0]["dst"]) 
        return dst
    except Exception as e:
        print("Error",e)
    finally:
        if httpClient:
            httpClient.close()

def back_translate(content,from_lang, language_types):
    results = []
    for to_lang in language_types:
        try:
            # 将原始语种翻译成另外一种语言
            temp_content = baidu_translate(content,from_lang,to_lang)
            # 往回翻译
            result_content = baidu_translate(temp_content,to_lang,from_lang)
            # 存储翻译结果
            results.append(result_content)
        except Exception as  e:
            print("Error", e)
    return results
3. 具体调用
lang = ['en','yue','wyw','jp','kor']
content = "该地方填写需要翻译的内容"
results = back_translate(content, "zh", lang)
print(results)
4.调用过程中,可能遇到错误,可查看官方的error_code,对应的错误原因

错误码列表: http://api.fanyi.baidu.com/api/trans/product/apidoc

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值