Python调用各大机器翻译API大全
过去的二三年中,我一直关注的是机器翻译API在自动化翻译过程中的应用,包括采用CAT工具和Python编程语言来调用机器翻译API,然后再进行译后编辑,从而达到快速翻译的目的。
然而,我发现随着人工智能的发展,很多机器翻译也做了相应的调整,调用机器翻译api的样例也发生了变化,今天我特意把主流机器翻译api调用的Python代码汇聚于此,总共有七种方法,供大家学习参考。
一、Python调用Google机器翻译API
目前官方网站的调用代码没有之前的好用,所以我们依然采用以前的代码,只用安装requests, 而不用安装额外的Python包,前提是只要知道Google翻译的API密匙和翻译的语对方向即可,代码如下:
import requests
def google_api(content):
url = "https://translation.googleapis.com/language/translate/v2"
data = {
'key': "YOUR_API_KEY", #你自己的api密钥
'source': "zh",
'target': "en",
'q': content,
'format': 'text'
headers = {'X-HTTP-Method-Override': 'GET'}
response = requests.post(url, data=data, headers=headers)
res = response.json()
text = res["data"]["translations"][0]["translatedText"]
return text
print("谷歌翻译:"+google_api("好好学习,天天向上!"))
二、Python调用百度机器翻译API
Python调用百度机器翻译API的代码有些变化,但前提是需要申请百度的api id和key,放到以下代码中:
import requests
import random
import json
from hashlib import md5
# Set your own appid/appkey.
appid = 'YOUR APP ID'
appkey = 'YOU APP KEY'
# 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!'
# Generate salt and sign
def make_md5(s, encoding='utf-8'):
return md5(s.encode(encoding)).hexdigest()
def baidu_api(query,from_lang,to_lang):
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))
return result["trans_result"][0]['dst']
print(baidu_api(query,from_lang, to_lang))
更多可以参考以下文章:
三、Python调用小牛机器翻译API代码
以下代码是经过我改进后的代码,效率更高一些,供大家参考。小牛现在提供100万字符/月的额度,大家可以申请试用。
import json
import requests
apikey="YOUR_API_KEY"
def translate(sentence, src_lan, tgt_lan):
url = 'http://api.niutrans.com/NiuTransServer/translation?'
data = {"from": src_lan, "to": tgt_lan, "apikey": apikey, "src_text": sentence}
res = requests.post(url, data = data)
res_dict = json.loads(res.text)
if "tgt_text" in res_dict:
result = res_dict['tgt_text']
else:
result = res
return result
if __name__ == "__main__":
while True:
line = input("请输入要翻译的文本:")
try:
trans = translate(line, 'auto', 'en')
print(trans+"\n---------")
except Exception as exc:
print(exc)
更多详情可以参考:
四、Python调用同花顺机器翻译api
之前我已经写出采用Python调用同花顺机器翻译api来翻译字幕的代码,详情如下:
五、Python调用彩云 小译机器翻译api
彩云这个小而美的机器翻译一直很低调,翻译的速度和质量都还不错。以下是相关的样例代码:
import requests
import json
url = "http://api.interpreter.caiyunai.com/v1/translator"
token = "你的令牌" #这里填写你自己的令牌
payload = {
#"source" : ["Where there is a will, there is a way.",
#"ColorfulClouds Weather is the best weather service."],
"source" : "Where there is a will, there is a way.",
"trans_type" : "en2zh",
"request_id" : "demo",
headers = {
'content-type': "application/txt",
'x-authorization': "token " + token,
response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
#print(response.text)
resp = json.loads(response.text)['target']
print(resp)
更多信息可以参考:
六、Python调用阿里云机器翻译api
阿里云机器翻译api的调用比较繁琐,申请过程也较复杂,其翻译质量倒时一般,大家可以有选择地使用以下代码:
from alibabacloud_alimt20181012.client import Client as alimt20181012Client
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_alimt20181012 import models as alimt_20181012_models
from alibabacloud_tea_util import models as util_models
ACCESS_KEY_ID = 【Access_key_id>】#这里把尖括号里的 Acess_key_id和Acess_key_secret分别修改为自己申请的通用翻译api
ACCESS_KEY_SECRET = 【Access_key_secret】
def create_client(
access_key_id: str,
access_key_secret: str,
) -> alimt20181012Client:
config = open_api_models.Config(
access_key_id=access_key_id,
access_key_secret=access_key_secret
config.endpoint = f'mt.cn-hangzhou.aliyuncs.com'
return alimt20181012Client(config)
def translate(text):
client = create_client(ACCESS_KEY_ID, ACCESS_KEY_SECRET)
translate_general_request = alimt_20181012_models.TranslateGeneralRequest(
format_type='text',
source_language='en',
target_language='zh',
source_text=text,
scene='general'
runtime = util_models.RuntimeOptions()
resp = client.translate_general_with_options(translate_general_request, runtime)
return resp.body.data.__dict__['translated']
print(translate("Rome is not built in a day."))
更多资源信息请参考:
七、利用ChatGPT来翻译
ChatGPT也可以用于翻译,只要我们给它发出指令即可。代码如下:
import openai
openai.api_base = "https://api.openai.com/v1"
openai.api_key = "YOUR_API_KEY"
model_engine_id = "text-davinci-003"
while True:
prompt = input("Q:")
completions = openai.Completion.create(
engine=model_engine_id,
prompt="Translate the following sentences into Chinese:"+prompt,