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 + pathquery = '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 requestheaders = {'Content-Type': 'application/x-www-form-urlencoded'}payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}# Send requestr = 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 = resreturn 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来翻译字幕的代码,详情如下:

import json,os,sys
import requests
import easygui as g
# appid = '你申请的id'
# appkey = '你申请的key'
# 解说打包报错问题
os.environ['REQUESTS_CA_BUNDLE'] =  os.path.join(os.path.dirname(sys.argv[0]), 'cacert.pem')def get_key():
"""读取本地appid.txt,获取id和key并生成字典"""dic={}with open("appid.txt","r",encoding="utf-8") as f:lines=[line.strip() for line in f.readlines()]for line in lines:ls=line.split("=")dic[ls[0].strip()]=ls[1].strip()return dicdef getToken():
"因为用同花顺的API时要校验token,由于token只有24小时的有效期,因此每次都要调用一下,以防过期。本函数获取最新的token"tokenUrl = 'https://b2b-api.10jqka.com.cn/gateway/service-mana/app/login-appkey'param = {}param['appId'] = appidparam['appSecret'] = appkeyauthResult = requests.post(tokenUrl, data=param)authResult = authResult.contentres = json.loads(authResult)access_token = ''if 0 == res['flag']:access_token = res['data']['access_token']return access_tokendef translate(texts, token):
"调用同花顺机器翻译API函数,注意这里是英文翻译成中文,如果要中文翻译成英文要修改【param['from']】为zh,【param['to'] 】为en"ls=[]if '' == token:returnparam = {}param['app_id'] = appidparam['from'] = "en"param['to'] = 'zh'param['domain'] = 'default'param['text'] = json.dumps(texts)headers = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", "open-authorization": "Bearer" + token}url = 'https://b2b-api.10jqka.com.cn/gateway/arsenal/machineTranslation/batch/get/result'response = requests.post(url, headers=headers, data=param)Ret = response.contentres = json.loads(Ret)if 0 == res['status_code']:res = res['data']for rst in res['trans_result']:ls.append(rst['dst'])return lsdef read_srt(file):
"读取字幕文件,生成字幕序号、时间和字幕内容的列表"with open(file, "r", encoding = "utf-8-sig") as f:lines=[line.strip() for line in f.readlines()]max_line=len(lines)if max_line<=600:texts=lines[2:max_line:4]times=lines[1:max_line:4]nums=lines[:max_line:4]else:g.msgbox("字幕文件超过150行!请更换文件。")return nums,times,textsdef add_to_srt(nums,times,texts,trans):
"生成新的字幕文件,把译文也添加上。"final_list=[]for (num,time,text,tran) in zip(nums,times,texts,trans):new_line = num + "\n"+ time + "\n" + text + "\n" + tran +"\n\n"final_list.append(new_line)with open(srt.replace(".srt", "_new.srt"), "wt", encoding= "utf-8-sig") as f:f.write("".join(final_list))print("done!")if __name__ == '__main__':d=get_key()appid=d["id"]appkey=d["key"]title='请打开字幕文件'srt=g.fileopenbox(default='*.srt')nums,times,texts=read_srt(srt)token = getToken() #token有效期为24小时,请在应用程序中做好定时获取操作,避免token失效trans=translate(texts, token)add_to_srt(nums,times,texts,trans)g.msgbox("字幕文件已经翻译成功,请在字幕所在目录查看。")

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

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

import requests
import jsonurl = "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_modelsACCESS_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 openaiopenai.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,max_tokens=800,)message = completions.choices[0].text.strip()print("A:",message,end="\n")

八、学后反思

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/14835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32 LWIP UDP 一对一 一对多发送

STM32 LWIP UDP通信 前言设置 IP 地址UDP函数配置实验结果单播发送&#xff0c;一对一发送广播发送&#xff0c;一对多发送 可能遇到的问题总结 前言 之前没有接触过网络的通信&#xff0c;工作需要 UDP 接收和发送通信&#xff0c;在网上没有找到一对一、一对多的相关例程&am…

什么是SVM算法?硬间隔和软间隔的分类问题

SVM全称是supported vector machine(支持向量机)&#xff0c;即寻找到一个超平面使样本分成两类&#xff0c;并且间隔最大。 SVM能够执行线性或⾮线性分类、回归&#xff0c;甚至是异常值检测任务。它是机器学习领域最受欢迎的模型之一。SVM特别适用于中小型复杂数据集的分类。…

使用Python生成文件的MD5和sha1

使用Python生成文件的MD5和sha1 1. [代码]生成文件的MD5和sha1 #codingUTF-8 # www.iplaypy.com python # XingHe Studio File to MD5 and SHA1def fil_changefileext(filename,extname):# FIL ChangeFileExt 改变文件扩展名# filename 输入的文件路径名# extname 要更改…

CentOS 8 错误: Error setting up base repository

配置ip、掩码、网关、DNS VMware网关可通过如下查看 打开网络连接 配置镜像的地址 vault.centos.org/8.5.2111/BaseOS/x86_64/os/

Spring Data Redis

启动指令 redis-server.exe redis.windows.conf 1.导入Spring Data Redis的maven坐标 在pom.xml中添加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependen…

通过String字符生成base64编码在生成图片

* base64转图片 //对字节数组字符串进行Base64解码并生成图片 * param base64str base64码 * return // param savePath 图片路径private static final String savePath"image_ver\\verifyCode"; 判断是否为base64编码 public static void mainDD…

【JavaEE初阶】Servlet (三)MessageWall

在我们之前博客中写到的留言墙页面,有很严重的问题:(留言墙博客) 如果刷新页面/关闭页面重开,之前输入的消息就不见了.如果一个机器上输入了数据,第二个机器上是看不到的. 针对以上问题,我们的解决思如如下: 让服务器来存储用户提交的数据,由服务器保存. 当有新的浏览器打开页…

基于java的坦克大战游戏的设计与实现--答辨PPT--【毕业论文】

文章目录 本系列校训毕设的技术铺垫PPT主体层次封面页目录页&#xff1a;设计工具与相关技术&#xff1a;系统分析总体设计&#xff1a;详细设计测试结论&#xff1a; 小技巧 本系列校训 互相伤害互相卷&#xff0c;玩命学习要你管&#xff0c;天生我才必有用&#xff0c;我命…

React(1)——快速入门

一、React背景简介 官网和资料 英文官网: https://reactjs.org/中文官网: 快速入门 – React (docschina.org) 3、如果JS基础忘了及时查看文档&#xff1a;JavaScript - 学习 Web 开发 |多核 (mozilla.org) JavaScript - 标签 - 汤姆大叔 - 博客园 (cnblogs.com) 4、React…

Neo4j图数据基本操作

Neo4j 文章目录 Neo4jCQL结点和关系增删改查匹配语句 根据标签匹配节点根据标签和属性匹配节点删除导入数据目前的问题菜谱解决的问题 命令行窗口 neo4j.bat console 导入rdf格式的文件 :GET /rdf/ping CALL n10s.graphconfig.init(); //初始化 call n10s.rdf.import.fetch(&q…

【软件测试】webdriver常用API演示(Java+IDEA+chrome浏览器)

1.元素定位方法 对象的定位应该是自动化测试的核心&#xff0c;要想操作一个对象&#xff0c;首先应该识别这个对象。一个对象就是一个人一样&#xff0c;他会有各种的特征&#xff08;属性&#xff09;&#xff0c;如比我们可以通过一个人的身份证号&#xff0c;姓名&#xf…

在CSDN学Golang云原生(监控解决方案Prometheus)

一&#xff0c;记录规则配置 在golang云原生中&#xff0c;通常使用日志库记录应用程序的日志。其中比较常见的有logrus、zap等日志库。这些库一般支持自定义的输出格式和级别&#xff0c;可以根据需要进行配置。 对于云原生应用程序&#xff0c;我们通常会采用容器化技术将其…

cmake stm32 模板

文件结构 ├─.vscode ├─build ├─cmake ├─Drivers │ ├─CMSIS │ │ ├─Device │ │ │ └─ST │ │ │ └─STM32F1xx │ │ │ ├─Include │ │ │ └─Source │ │ │ └─Templates │ │ └─Include │ └─STM32F1xx_HAL_Driver │ ├─Inc │ │ └─Leg…

Redis 笔记,基本数据类型、持久化、主从、集群等等问题

标题 &#x1f600;&#x1f600;&#x1f600;创作不易&#xff0c;各位看官点赞收藏. 文章目录 标题Redis 基础笔记1、安装及环境搭建2、Redis 数据类型2.1、String2.2、List2.3、Hash2.4、Set2.5、Zset2.6、BitMap2.7、HyperLogLog2.8、Geospatial2.9、Stream 3、Redis 持久…

「BLIP 微调指南」以 Image-Text Captioning 任务为例

前言&#xff1a;近日需要用到 BLIP 微调下游任务&#xff0c;搜索发觉如今并无 BLIP 微调教程&#xff0c;下面就以 Image-Text Captioning 任务为例&#xff0c;演示如何完成 BLIP 模型在自己数据集上的微调。 目录 1. BLIP 介绍2. 关键代码定位3. 关键参数赋值4. 模型定义&a…

HTML一些基础知识

1、Web标准&#xff1a;主要包含结构、表现、行为。结构用于对网页元素进行整理和分类&#xff0c;主要指HTML。表现用于设置网页元素的板式、颜色、大小等外观样式&#xff0c;主要指的是CSS。行为主要指的是网页模型的定义以及交互的编写&#xff0c;主要是js文件。 Html相当…

DAY1,Qt [ 手动实现登录框(信息调试类,按钮类,行编辑器类,标签类的使用)]

1.手动实现登录框&#xff1b; ---mychat.h---头文件 #ifndef MYCHAT_H #define MYCHAT_H#include <QWidget> #include <QDebug> //打印信息 #include <QIcon> //图标 #include <QPushButton> //按钮 #include <QLineEdit> //行编辑器类 #in…

尚硅谷大数据项目《在线教育之采集系统》笔记002

视频地址&#xff1a;尚硅谷大数据项目《在线教育之采集系统》_哔哩哔哩_bilibili 目录 P032 P033 P033 P034 P035 P036 P032 P033 # 1、定义组件&#xff0c;为各组件命名 a1.sources r1 a1.channels c1 a1.sinks - k1# 2、配置sources&#xff0c;描述source a1.sour…

微服务划分的原则

微服务的划分 微服务的划分要保证的原则 单一职责原则 1、耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密&#xff0c;其耦合性就越强&#xff0c;模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及…

hive删除数据进行恢复

在实际开发或生产中&#xff0c;hive表如果被误删&#xff0c;如被truncate或是分区表的分区被误删了&#xff0c;只要在回收站的清空周期内&#xff0c;是可以恢复数据的&#xff0c;步骤如下&#xff1a; &#xff08;1&#xff09; 先找到被删除数据的存放目录&#xff0c;…