当前位置:   article > 正文

Python调用各大机器翻译API大全_python翻译api

python翻译api

过去的二三年中,我一直关注的是机器翻译API在自动化翻译过程中的应用,包括采用CAT工具和Python编程语言来调用机器翻译API,然后再进行译后编辑,从而达到快速翻译的目的。

然而,我发现随着人工智能的发展,很多机器翻译也做了相应的调整,调用机器翻译api的样例也发生了变化,今天我特意把主流机器翻译api调用的Python代码汇聚于此,总共有七种方法,供大家学习参考。

一、Python调用Google机器翻译API

目前官方网站的调用代码没有之前的好用,所以我们依然采用以前的代码,只用安装requests, 而不用安装额外的Python包,前提是只要知道Google翻译的API密匙和翻译的语对方向即可,代码如下:

  1. import requests
  2. def google_api(content):
  3. url = "https://translation.googleapis.com/language/translate/v2"
  4. data = {
  5. 'key': "YOUR_API_KEY", #你自己的api密钥
  6. 'source': "zh",
  7. 'target': "en",
  8. 'q': content,
  9. 'format': 'text'
  10. }
  11. headers = {'X-HTTP-Method-Override': 'GET'}
  12. response = requests.post(url, data=data, headers=headers)
  13. res = response.json()
  14. text = res["data"]["translations"][0]["translatedText"]
  15. return text
  16. print("谷歌翻译:"+google_api("好好学习,天天向上!"))

二、Python调用百度机器翻译API

Python调用百度机器翻译API的代码有些变化,但前提是需要申请百度的api id和key,放到以下代码中:

  1. import requests
  2. import random
  3. import json
  4. from hashlib import md5
  5. # Set your own appid/appkey.
  6. appid = 'YOUR APP ID'
  7. appkey = 'YOU APP KEY'
  8. # For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21`
  9. from_lang = 'en'
  10. to_lang = 'zh'
  11. endpoint = 'http://api.fanyi.baidu.com'
  12. path = '/api/trans/vip/translate'
  13. url = endpoint + path
  14. query = 'Hello World!'
  15. # Generate salt and sign
  16. def make_md5(s, encoding='utf-8'):
  17. return md5(s.encode(encoding)).hexdigest()
  18. def baidu_api(query,from_lang,to_lang):
  19. salt = random.randint(32768, 65536)
  20. sign = make_md5(appid + query + str(salt) + appkey)
  21. # Build request
  22. headers = {'Content-Type': 'application/x-www-form-urlencoded'}
  23. payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}
  24. # Send request
  25. r = requests.post(url, params=payload, headers=headers)
  26. result = r.json()
  27. # Show response
  28. #print(json.dumps(result, indent=4, ensure_ascii=False))
  29. return result["trans_result"][0]['dst']
  30. print(baidu_api(query,from_lang, to_lang))

三、Python调用小牛机器翻译API代码

以下代码是经过我改进后的代码,效率更高一些,供大家参考。小牛现在提供100万字符/月的额度,大家可以申请试用。

  1. import json
  2. import requests
  3. apikey="YOUR_API_KEY"
  4. def translate(sentence, src_lan, tgt_lan):
  5. url = 'http://api.niutrans.com/NiuTransServer/translation?'
  6. data = {"from": src_lan, "to": tgt_lan, "apikey": apikey, "src_text": sentence}
  7. res = requests.post(url, data = data)
  8. res_dict = json.loads(res.text)
  9. if "tgt_text" in res_dict:
  10. result = res_dict['tgt_text']
  11. else:
  12. result = res
  13. return result
  14. if __name__ == "__main__":
  15. while True:
  16. line = input("请输入要翻译的文本:")
  17. try:
  18. trans = translate(line, 'auto', 'en')
  19. print(trans+"\n---------")
  20. except Exception as exc:
  21. print(exc)

四、Python调用同花顺机器翻译api

之前我已经写出采用Python调用同花顺机器翻译api来翻译字幕的代码,详情如下:

  1. import json,os,sys
  2. import requests
  3. import easygui as g
  4. # appid = '你申请的id'
  5. # appkey = '你申请的key'
  6. # 解说打包报错问题
  7. os.environ['REQUESTS_CA_BUNDLE'] = os.path.join(os.path.dirname(sys.argv[0]), 'cacert.pem')
  8. def get_key():
  9. """读取本地appid.txt,获取id和key并生成字典"""
  10. dic={}
  11. with open("appid.txt","r",encoding="utf-8") as f:
  12. lines=[line.strip() for line in f.readlines()]
  13. for line in lines:
  14. ls=line.split("=")
  15. dic[ls[0].strip()]=ls[1].strip()
  16. return dic
  17. def getToken():
  18. "因为用同花顺的API时要校验token,由于token只有24小时的有效期,因此每次都要调用一下,以防过期。本函数获取最新的token"
  19. tokenUrl = 'https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey'
  20. param = {}
  21. param['appId'] = appid
  22. param['appSecret'] = appkey
  23. authResult = requests.post(tokenUrl, data=param)
  24. authResult = authResult.content
  25. res = json.loads(authResult)
  26. access_token = ''
  27. if 0 == res['flag']:
  28. access_token = res['data']['access_token']
  29. return access_token
  30. def translate(texts, token):
  31. "调用同花顺机器翻译API函数,注意这里是英文翻译成中文,如果要中文翻译成英文要修改【param['from']】为zh,【param['to'] 】为en"
  32. ls=[]
  33. if '' == token:
  34. return
  35. param = {}
  36. param['app_id'] = appid
  37. param['from'] = "en"
  38. param['to'] = 'zh'
  39. param['domain'] = 'default'
  40. param['text'] = json.dumps(texts)
  41. headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "open-authorization": "Bearer" + token}
  42. url = 'https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result'
  43. response = requests.post(url, headers=headers, data=param)
  44. Ret = response.content
  45. res = json.loads(Ret)
  46. if 0 == res['status_code']:
  47. res = res['data']
  48. for rst in res['trans_result']:
  49. ls.append(rst['dst'])
  50. return ls
  51. def read_srt(file):
  52. "读取字幕文件,生成字幕序号、时间和字幕内容的列表"
  53. with open(file, "r", encoding = "utf-8-sig") as f:
  54. lines=[line.strip() for line in f.readlines()]
  55. max_line=len(lines)
  56. if max_line<=600:
  57. texts=lines[2:max_line:4]
  58. times=lines[1:max_line:4]
  59. nums=lines[:max_line:4]
  60. else:
  61. g.msgbox("字幕文件超过150行!请更换文件。")
  62. return nums,times,texts
  63. def add_to_srt(nums,times,texts,trans):
  64. "生成新的字幕文件,把译文也添加上。"
  65. final_list=[]
  66. for (num,time,text,tran) in zip(nums,times,texts,trans):
  67. new_line = num + "\n"+ time + "\n" + text + "\n" + tran +"\n\n"
  68. final_list.append(new_line)
  69. with open(srt.replace(".srt", "_new.srt"), "wt", encoding= "utf-8-sig") as f:
  70. f.write("".join(final_list))
  71. print("done!")
  72. if __name__ == '__main__':
  73. d=get_key()
  74. appid=d["id"]
  75. appkey=d["key"]
  76. title='请打开字幕文件'
  77. srt=g.fileopenbox(default='*.srt')
  78. nums,times,texts=read_srt(srt)
  79. token = getToken() #token有效期为24小时,请在应用程序中做好定时获取操作,避免token失效
  80. trans=translate(texts, token)
  81. add_to_srt(nums,times,texts,trans)
  82. g.msgbox("字幕文件已经翻译成功,请在字幕所在目录查看。")

五、Python调用彩云 小译机器翻译api

彩云这个小而美的机器翻译一直很低调,翻译的速度和质量都还不错。以下是相关的样例代码:

  1. import requests
  2. import json
  3. url = "http://api.interpreter.caiyunai.com/v1/translator"
  4. token = "你的令牌" #这里填写你自己的令牌
  5. payload = {
  6. #"source" : ["Where there is a will, there is a way.",
  7. #"ColorfulClouds Weather is the best weather service."],
  8. "source" : "Where there is a will, there is a way.",
  9. "trans_type" : "en2zh",
  10. "request_id" : "demo",
  11. }
  12. headers = {
  13. 'content-type': "application/txt",
  14. 'x-authorization': "token " + token,
  15. }
  16. response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
  17. #print(response.text)
  18. resp = json.loads(response.text)['target']
  19. print(resp)

六、Python调用阿里云机器翻译api

阿里云机器翻译api的调用比较繁琐,申请过程也较复杂,其翻译质量倒时一般,大家可以有选择地使用以下代码:

  1. from alibabacloud_alimt20181012.client import Client as alimt20181012Client
  2. from alibabacloud_tea_openapi import models as open_api_models
  3. from alibabacloud_alimt20181012 import models as alimt_20181012_models
  4. from alibabacloud_tea_util import models as util_models
  5. ACCESS_KEY_ID = 【Access_key_id>】#这里把尖括号里的 Acess_key_id和Acess_key_secret分别修改为自己申请的通用翻译api
  6. ACCESS_KEY_SECRET = 【Access_key_secret】
  7. def create_client(
  8. access_key_id: str,
  9. access_key_secret: str,
  10. ) -> alimt20181012Client:
  11. config = open_api_models.Config(
  12. access_key_id=access_key_id,
  13. access_key_secret=access_key_secret
  14. )
  15. config.endpoint = f'mt.cn-hangzhou.aliyuncs.com'
  16. return alimt20181012Client(config)
  17. def translate(text):
  18. client = create_client(ACCESS_KEY_ID, ACCESS_KEY_SECRET)
  19. translate_general_request = alimt_20181012_models.TranslateGeneralRequest(
  20. format_type='text',
  21. source_language='en',
  22. target_language='zh',
  23. source_text=text,
  24. scene='general'
  25. )
  26. runtime = util_models.RuntimeOptions()
  27. resp = client.translate_general_with_options(translate_general_request, runtime)
  28. return resp.body.data.__dict__['translated']
  29. print(translate("Rome is not built in a day."))

七、利用ChatGPT来翻译

ChatGPT也可以用于翻译,只要我们给它发出指令即可。代码如下:

  1. import openai
  2. openai.api_base = "https://api.openai.com/v1"
  3. openai.api_key = "YOUR_API_KEY"
  4. model_engine_id = "text-davinci-003"
  5. while True:
  6. prompt = input("Q:")
  7. completions = openai.Completion.create(
  8. engine=model_engine_id,
  9. prompt="Translate the following sentences into Chinese:"+prompt,
  10. max_tokens=800,
  11. )
  12. message = completions.choices[0].text.strip()
  13. print("A:",message,end="\n")

八、学后反思

1. 本文总结了六大机器翻译api的调用方法,供大家参考。英译汉,个人推荐的是Google翻译。汉译英推荐百度翻译、小牛翻译等。译文润色可以调用ChatGPT帮忙。

2. 下一步,我将努力整合一下更多的机器翻译api的调用方法,添加在一起,也可以写一个调用包,以方便大家使用。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/186847
推荐阅读
相关标签
  

闽ICP备14008679号