NodeJS 使用百度翻译API

在大数据处理中,经常需要大批量地翻译短小的文字,使用在线翻译平台的API 调用能够大幅度提高效率。

最近尝试了一下。

第一步在百度翻译开放平台注册 

百度翻译开放平台 (baidu.com)

申请APPID 和SECRET加密码 

源代码(mjs)

import md5 from "md5"
import axios from "axios"
const apiUrl = 'http://api.fanyi.baidu.com/api/trans/vip/translate';
const appid = "APPID" //process.env.APPID;
const secret = "SECRET" // process.env.SECRET;

const qs = `苹果
`;

const requestTranslate = (q) => {
    const salt = Math.random();
    const sign = md5(appid + q + salt + secret);
    const params = {
        q,
        from: 'zh',
        to: 'en',
        salt,
        appid,
        sign,
    };
    return axios.get(apiUrl, {
        params,
    });
};
requestTranslate(qs).then((v) => {
    console.log(v.data.trans_result);
});

目前我已经成功地应用与UNSPSC 分类数据的翻译,可惜的是百度对于专业术语的翻译还不太准确。

import requests
import random
import json
from hashlib import md5

# Set your own appid/appkey.
appid = 'INPUT_YOUR_APPID' 
appkey = 'INPUT_YOUR_APPKEY'

# For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21`
from_lang = 'en'
to_lang =  'zh'

endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path

query = 'Hello World! This is 1st paragraph.\nThis is 2nd paragraph.'

# Generate salt and sign
def make_md5(s, encoding='utf-8'):
    return md5(s.encode(encoding)).hexdigest()

salt = random.randint(32768, 65536)
sign = make_md5(appid + query + str(salt) + appkey)

# Build request
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}

# Send request
r = requests.post(url, params=payload, headers=headers)
result = r.json()

# Show response
print(json.dumps(result, indent=4, ensure_ascii=False))
def baiduTranslate(translate_text, flag=1):
    '''
    :param translate_text: 待翻译的句子,len(q)<2000
    :param flag: 1:原句子翻译成英文;0:原句子翻译成中文
    :return: 返回翻译结果。
    For example:
    q=我今天好开心啊!
    result = {'from': 'zh', 'to': 'en', 'trans_result': [{'src': '我今天好开心啊!', 'dst': "I'm so happy today!"}]}
    '''

    appid = 'xxxxx'  # 填写你的appid
    secretKey = 'xxxxxx'  # 填写你的密钥
    httpClient = None
    myurl = '/api/trans/vip/translate'  # 通用翻译API HTTP地址
    fromLang = 'auto'  # 原文语种

    if flag:
        toLang = 'en'  # 译文语种
    else:
        toLang = 'zh'  # 译文语种

    salt = random.randint(3276, 65536)

    sign = appid + translate_text + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(translate_text) + '&from=' + fromLang + \
            '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign

    # 建立会话,返回结果
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
        # response是HTTPResponse对象
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)

        # return result
        return result['trans_result'][0]['dst']

    except Exception as e:
        print(e)
    finally:
        if httpClient:
            httpClient.close()
if __name__ == '__main__':
    # 手动录入翻译内容,q存放
    # q = raw_input("please input the word you want to translate:")
    q = "介绍一下整本书,比如是传主的人生,或者作者写这本书的特色。可参看目录、序言或简介等资料。"
    '''
    flag=1 输入的句子翻译成英文
    flag=0 输入的句子翻译成中文
    '''
    result = baiduTranslate(q, flag=1)  # 百度翻译
    print("原句:"+q)
    print(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值