前言
鉴于英文水平有限,读相关外文学术论文实在是困得要死,就想着能不能通过调用百度翻译API实现固定格式文字的多语种翻译工作,试了一下成功了。下面分享一下其思路与代码。
数据格式如下:
百度翻译api申请网址:https://api.fanyi.baidu.com/
对于个人账户而言,每月翻译字符数低于200万,享免费服务;超过200万字符,按照49元/百万字符支付当月超出部分字符量费用。
1.导入库和数据
import requests
import random
import json
import pandas as pd
from hashlib import md5
from tqdm import tqdm
df = pd.read_excel(r'001.xlsx')
2.设置appid和appkey
# 输入自己申请的id和key
appid = 'xxxxxxxxxx'
appkey = 'xxxxxxxxxxxxxxxx'
3.调用百度翻译api获取翻译后的内容
def baidu_translate(api, key, content):
appid = api
appkey = key # 设置你自己的appid/appkey
from_lang = 'en'
to_lang = 'zh' #设置语言代码,本次实现的英译汉
endpoint = 'http://api.fanyi.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path #配置url
query = content
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) #基于md5算法生成加密后的字符串
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}
r = requests.post(url, params=payload, headers=headers) # 构造request请求
result = r.json()
return result['trans_result'][0]['dst'] #返回翻译后的内容
4.数据导出
title_list = [] #中文题目
abstract_list = [] #中文摘要
for i in tqdm(df['题目']):
title_list.append(baidu_translate(appid, appkey, i))
for i in tqdm(df['摘要_英文']):
abstract_list.append(baidu_translate(appid, appkey, i))
df['题目_中文'] = title_list
df['摘要_中文'] = abstract_list
df.to_excel(r'output.xlsx')
导出后的数据格式如下所示:
总结
本文主要通过调用百度翻译API实现了英语to汉语的翻译。当然,修改相关的参数,也自然可以实现其他语种之间的互译。