简 介: 测试了一些在线翻译工具的效果,利用有道翻译 可以方便对常见到的生词进行确认。对于 TEASOFT软件PYTHON功能进行改建,给出了 ?>的翻译模式功能。
关键词
: 在线翻译,中英文翻译
Contents
§01 中英文翻译
在平时工作中经常会应用到中英文翻译。利用很多基于互联网的英语词典软件(比如 YouDao) 虽然可用,但有时还是希望能够机制在TEASOFT软件环境中完成单词的翻译,或者很多单词的批量翻译。下面测试一些基于PYTHON环境的中英文翻译的软件。
下面的方法是来自于 CSDN 博文 PYTHON 实现中英文自动翻译 中整理的方案,下面进行初步测试一下。
1.1 有道翻译
参考链接:https://segmentfault/a/1190000015643320
1.1.1 代码实现
from headm import * # =
import json
import requests
def translate(word):
url = 'http://fanyi.youdao/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
key = {
'type': "AUTO",
'i': word,
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"ue": "UTF-8",
"action": "FY_BY_CLICKBUTTON",
"typoResult": "true"
}
response = requests.post(url, data=key)
if response.status_code == 200:
return response.text
else:
print("有道词典调用失败")
return None
def get_reuslt(repsonse):
result = json.loads(repsonse)
printf ("输入的词为:%s" % result['translateResult'][0][0]['src'])
printf ("翻译结果为:%s" % result['translateResult'][0][0]['tgt'])
def main():
word = 'distortion'
list_trans = translate(word)
get_reuslt(list_trans)
if __name__ == '__main__':
main()
1.1.2 测试结果
测试输出结果:
输入的词为:distortion
翻译结果为:失真
1.1.3 使用限制
每小时1000次访问限制,超过就会被禁封!!!!
1.1.4 封装为函数
"""有道翻译API的调用函数(封装为一个函数使用)"""
import json
import requests
import re
def translator(str):
"""
input : str 需要翻译的字符串
output:translation 翻译后的字符串
"""
# API
url = 'http://fanyi.youdao/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
# 传输的参数, i为要翻译的内容
key = {
'type': "AUTO",
'i': str,
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"ue": "UTF-8",
"action": "FY_BY_CLICKBUTTON",
"typoResult": "true"
}
# key 这个字典为发送给有道词典服务器的内容
response = requests.post(url, data=key)
# 判断服务器是否相应成功
if response.status_code == 200:
# 通过 json.loads 把返回的结果加载成 json 格式
result = json.loads(response.text)
# print ("输入的词为:%s" % result['translateResult'][0][0]['src'])
# print ("翻译结果为:%s" % result['translateResult'][0][0]['tgt'])
translation = result['translateResult'][0][0]['tgt']
return translation
else:
print("有道词典调用失败")
# 相应失败就返回空
return None
"""有道翻译函数 DONE!"""
1.2 百度翻译
参考文献:https://blog.csdn/baidu_33718858/article/details/83306851
最新百度翻译API收费标准:最近流水记录若当月翻译字符数≤2百万,当月免费;若超过2百万字符,按照49元/百万字符支付当月超出部分费用。
1.2.1 测试代码
"""官方Python接入百度翻译API测试Demo(有所改动,官方DEMO有些过时,Python包有些变化)"""
import httplib2
import urllib
import random
import json
from hashlib import md5
appid = '*********' #你的appid
secretKey = '********' #你的密钥
httpClient = None
myurl = 'http://api.fanyi.baidu/api/trans/vip/translate'
q = 'apple' # 要翻译的词
fromLang = 'en' # 翻译源语言
toLang = 'zh' # 译文语言
salt = random.randint(32768, 65536)
# 签名
sign = appid+q+str(salt)+secretKey
m1 = md5()
m1.update(sign.encode(encoding = 'utf-8'))
sign = m1.hexdigest()
# myurl = myurl+'?appid='+appid+'&q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&salt='+str(salt)+'&sign='+sign
myurl = myurl+'?q='+urllib.parse.quote(q)+'&from='+fromLang+'&to='+toLang+'&appid='+appid+'&salt='+str(salt)+'&sign='+sign
try:
h = httplib2.Http('.cache')
response, content = h.request(myurl)
if response.status == 200:
print(content.decode('utf-8'))
print(type(content))
response = json.loads(content.decode('utf-8')) # loads将json数据加载为dict格式
print(type(response))
print(response["trans_result"][0]['dst'])
except httplib2.ServerNotFoundError:
print("Site is Down!")
1.2.2 测试结果
运行之后,始终出现如下错误:
{"error_code":"52003","error_msg":"UNAUTHORIZED USER"}
<class 'bytes'>
<class 'dict'>
Traceback (most recent call last):
File "D:\Temp\TEMP0001\test2.PY", line 45, in <module>
print(response["trans_result"][0]['dst'])
KeyError: 'trans_result'
这里唯一的疑问:就是其中的 appid、secretkey 究竟需要填写什么? 是需要进行申请相应的应用账号吗? 我使用自己百度的账号,测试还是不行。
1.3 谷歌在线翻译
Reference: https://github/terryyin/translate-python
每天有1000个单词的翻译限制,不适合大量单词翻译
1.3.1 测试代码
from translate import Translator
translator= Translator(to_lang="zh")
translation = translator.translate("Steelmaking")
print(translation)
1.3.2 运行结果
炼钢
1.3.3 存在问题
这个翻译过程虽然比较简洁,但是在从汉语翻译成英语的时候,出错的概率很大。
from translate import Translator
translator= Translator(to_lang="english")
translation = translator.translate("数据")
print(translation)
输出的结果还是“数据”
1.4 有道在线翻译
Reference: https://pypi/project/pytranslator/
1.4.1 安装软件包
首先需要安装相应的软件包: pytranslator
pythom -m pip install pytranslator
▲ 图1.4.1 pytranslator
1.4.2 测试代码
import pytranslator
youdao = pytranslator.youdao('YOUR_KEY','YOU_KEY_FROM')
youdao.trans('help')
但是,运行出现错误:
Traceback (most recent call last):
File "D:\Temp\TEMP0001\test4.PY", line 12, in <module>
youdao = pytranslator.youdao('YOUR_KEY','YOU_KEY_FROM')
AttributeError: module 'pytranslator' has no attribute 'youdao'
1.4.3 使用说明
项目名称 :
  pytranslator
示例 :
  import pytranslator
  youdao = pytranslator.youdao("YOUR_KEY","YOU_KEY_FROM")
  youdao.trans("Help")
更新日志 :
  ==============
  时间 : 2017/02/20
  作者 : 王一航
  描述 : 开源到 pypi
  版本 : 1.3.6
  ==============
原理说明 :
  利用有道翻译开放API进行中英互译
  将有道服务器返回的 JSON 数据解析后包装成函数以供调用
环境要求 :
  python 2.x
  requests
下载安装 :
1. install with pip
  sudo pip install pytranslator
2. install with source code
  git clone https://git.coding,net/yihangwang/PyTranslator.git
  cd ./PyTranslator
  sudo python setup.py install
使用方法 :
  1. [申请有道翻译Key](http://fanyi.youdao/openapi?path=data-mode)
  需要填写一下邮箱和应用名称 , 然后邮箱中会收到 KEY 和 KEY_FROM
  2. 引入包 pytranslator
  3. 根据第 1 步邮件中收到的 KEY 和 KEY_FROM 调用 youdao 类的构造函数
  4. 调用成功后 , 就可以调 youdao 类的函数 trans 来进行返回
  入口参数为需要被翻译的字符串 , 会自动识别中英文
TODO :
  1. 开放更多的接口(更加接近有道API提供的各种功能)
  2. 将结果保存在本地 , 当用户多次查找的时候减轻服务器的压力
  3. 汉译英功能
  4. 自动补全功能
  5. 短语查询功能
  6. 整句翻译功能
1.4.4 申请KEY
可以看到,前面使用过程中,所填写的KEY,KEY_FROM没有进行申请。需要通过 申请有道翻译Key 获得对应的KEY,KEY_FROM。
不过在后面的网页登录以及申请账号的过程中适中遇到麻烦。暂时先放弃。
▲ 图1.4.2 有道翻译对应的API说明界面
§02 翻译助手
通过前面的测试,可以看到使用有道翻译的效果还是不错的。下面对于cdtm 进行改造,形成翻译快捷助手。
2.1 修改方法
2.1.1 使用语法
利用:
?>word1 单词2
完成对word1、单词2的查询。
2.1.2 实现方式
(1)命令解析部分
elif sys.argv[1][0] == '>' or sys.argv[1][0] == '》':
strall = sys.argv[1:]
strall[0] = strall[0][1:]
for word in strall:
list_trans = translate(word)
get_reuslt(list_trans)
exit()
(2)增加相应函数
import json
import requests
def translate(word):
url = 'http://fanyi.youdao/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
key = {
'type': "AUTO",
'i': word,
"doctype": "json",
"version": "2.1",
"keyfrom": "fanyi.web",
"ue": "UTF-8",
"action": "FY_BY_CLICKBUTTON",
"typoResult": "true"
}
response = requests.post(url, data=key)
if response.status_code == 200:
return response.text
else:
return None
def get_reuslt(repsonse):
result = json.loads(repsonse)
printf ("%s --> %s" %(result['translateResult'][0][0]['src'], result['translateResult'][0][0]['tgt']))
2.2 使用效果
?可能性 中国
可能性 --> possibility
中国 --> China
python --> python
beauty --> 美
command --> 命令
数据接口 --> Data interface
※ 测试总结 ※
测试了一些在线翻译工具的效果,利用有道翻译 可以方便对常见到的生词进行确认。对于 TEASOFT软件PYTHON功能进行改建,给出了 ?>的翻译模式功能。
■ 相关文献链接:
- PYTHON 实现中英文自动翻译
● 相关图表链接:
- 图1.4.1 pytranslator
- 图1.4.2 有道翻译对应的API说明界面
发布评论