最近有个需求,要将几万条数据从日语翻译成中文。因为数据的获取和处理用的是python代码,所以想先尝试翻译部分也用python实现。

目前网上查到的翻译方法有百度、有道以及谷歌翻译,下面会对这三个方法进行简单的测试和分析。如果大家知道有更好的方法(速度快、结果准确),还请分享!

模块导入

1 import re2 import urllib.parse, urllib.request3 import hashlib4 import urllib5 import random6 import json7 import time8 from translate import Translator

非python自带的库,如python google translator,需要手动安装,命令pip install module_name。

1. 百度翻译

1 appid = 'your_appid'

2 secretKey = 'your_secretKey'

3 url_baidu = 'http://api.fanyi.baidu.com/api/trans/vip/translate'

4

5 def translateBaidu(text, f='ja', t='zh'):6 salt = random.randint(32768, 65536)7 sign = appid + text + str(salt) +secretKey8 sign =hashlib.md5(sign.encode()).hexdigest()9 url = url_baidu + '?appid=' + appid + '&q=' + urllib.parse.quote(text) + '&from=' + f + '&to=' + t +\10 '&salt=' + str(salt) + '&sign=' +sign11 response =urllib.request.urlopen(url)12 content = response.read().decode('utf-8')13 data =json.loads(content)14 result = str(data['trans_result'][0]['dst'])15 print(result)

参数:text--待翻文本,f--初始语言,t--目标语言,后面方法类似。

2. 有道翻译

1 url_youdao = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom='\2 'http://www.youdao.com/'

3 dict ={}4 dict['type'] = 'AUTO'

5 dict['doctype'] = 'json'

6 dict['xmlVersion'] = '1.8'

7 dict['keyfrom'] = 'fanyi.web'

8 dict['ue'] = 'UTF-8'

9 dict['action'] = 'FY_BY_CLICKBUTTON'

10 dict['typoResult'] = 'true'

11

12 def translateYoudao(text):13 globaldict14 dict['i'] =text15 data = urllib.parse.urlencode(dict).encode('utf-8')16 response =urllib.request.urlopen(url_youdao, data)17 content = response.read().decode('utf-8')18 data =json.loads(content)19 result = data['translateResult'][0][0]['tgt']20 print(result)

参数主要由字典dict指定,发现没有地方可以指定语言(可能是我没找到),测试结果是不管输入什么语言的文本,输出均是中文。

3. 谷歌翻译

1 url_google = 'http://translate.google.cn'

2 reg_text = re.compile(r'(?<=TRANSLATED_TEXT=).*?;')3 user_agent = r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)'\4 r'Chrome/44.0.2403.157 Safari/537.36'

5

6 def translateGoogle(text, f='ja', t='zh-cn'):7 values = {'hl': 'zh-cn', 'ie': 'utf-8', 'text': text, 'langpair': '%s|%s' %(f, t)}8 value =urllib.parse.urlencode(values)9 req = urllib.request.Request(url_google + '?' +value)10 req.add_header('User-Agent', user_agent)11 response =urllib.request.urlopen(req)12 content = response.read().decode('utf-8')13 data =reg_text.search(content)14 result = data.group(0).strip(';').strip('\'')15 print(result)

和上面两种方法一样,采用的是访问网页的形式来进行翻译。

还有一种是利用python谷歌翻译模块Translator:

1 def translateGoogle2(text):2 result =translator.translate(text)3 print(result)

4. 测试代码

测试过程:

翻译5个字串为一个小的单位,输出消耗时间;

循环10次为一个大的单位,输出消耗时间;

对不同的语言字串和循环次数做过多次测试,发现情况基本类似,所以这里选择了10次。

1 text_list = ['こんにちは', 'こんばんは', 'おはようございます', 'お休(やす)みなさい', 'お元気(げんき)ですか']2

3 time_baidu = 0

4 time_youdao = 0

5 time_google = 0

6 time_google2 = 0

7

8 for i in list(range(1, 11)):9 time1 =time.time()10 for text intext_list:11 translateBaidu(text)12 time2 =time.time()13 print('百度翻译第%s次时间:%s' % (i, time2 -time1))14 time_baidu += (time2 -time1)15

16 time1 =time.time()17 for text intext_list:18 translateYoudao(text)19 time2 =time.time()20 print('有道翻译第%s次时间:%s' % (i, time2 -time1))21 time_youdao += (time2 -time1)22

23 time1 =time.time()24 for text intext_list:25 translateGoogle(text)26 time2 =time.time()27 print('谷歌翻译第%s次时间:%s' % (i, time2 -time1))28 time_google += (time2 -time1)29

30 time1 =time.time()31 for text intext_list:32 translateGoogle2(text)33 time2 =time.time()34 print('谷歌2翻译第%s次时间:%s' % (i, time2 -time1))35 time_google2 += (time2 -time1)36

37

38 print('百度翻译时间:%s' % (time_baidu / 10))39 print('有道翻译时间:%s' % (time_youdao / 10))40 print('谷歌翻译时间:%s' % (time_google / 10))41 print('谷歌2翻译时间:%s' % (time_google2 / 10))

5. 结果分析

日语字串原意为['你好', '晚上好', '早上好', '晚安', '您还好吧']。

测试代码输出结果:

您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第1次时间:0.5849709510803223你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第1次时间:0.46173906326293945您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第1次时间:3.84399676322937你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第1次时间:6.819758892059326您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第2次时间:0.4968142509460449你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第2次时间:0.3870818614959717您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第2次时间:3.5689375400543213你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第2次时间:6.108794450759888您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第3次时间:0.4832003116607666你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第3次时间:0.40560245513916016您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第3次时间:3.875128984451294你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第3次时间:5.547708034515381您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第4次时间:0.4904344081878662你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第4次时间:0.3860180377960205您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第4次时间:3.5466465950012207你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第4次时间:7.052653551101685您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第5次时间:0.4754292964935303你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第5次时间:0.37929368019104004您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第5次时间:3.503594160079956你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第5次时间:4.944894552230835您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第6次时间:0.4637324810028076你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第6次时间:0.3679838180541992您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第6次时间:3.4939000606536865你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第6次时间:4.786132335662842您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第7次时间:0.4783976078033447你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第7次时间:0.3760185241699219您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第7次时间:3.485666036605835你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第7次时间:6.591272592544556您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第8次时间:0.4756813049316406你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第8次时间:0.4083871841430664您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第8次时间:3.3123676776885986你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第8次时间:5.902927875518799您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第9次时间:0.46607208251953125你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第9次时间:0.5259883403778076您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第9次时间:3.919294834136963你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第9次时间:6.256660223007202您好

晚上好

早上好!

请您休息。

您身体好吗?

百度翻译第10次时间:0.5158905982971191你好

晚安

早上好。

您休息吧、)

好(身体)好吗?有道翻译第10次时间:0.38652658462524414您好

晚上好

早上好

看看你的假期(康)

小心(元气)是

谷歌翻译第10次时间:3.3273775577545166你好

问候

问候

请休息

照顾 (玄龟) 吗?

谷歌2翻译第10次时间:6.155425071716309百度翻译时间:0.4930623292922974有道翻译时间:0.4084639549255371谷歌翻译时间:3.5876910209655763谷歌2翻译时间:6.016622757911682

从打印的内容分析,耗时情况为有道<百度<谷歌<谷歌2,准确度情况为百度>有道>谷歌>谷歌2。

速度先不管,对后面两个文本的翻译结果,谷歌的准确度是较低的,网页版的翻译结果为:

其实像有道或百度,5条字串耗时400毫秒左右,对于大量数据是不太可取的。如20万条数据,需要约4.4个小时。

所以,如果你知道python中有更好的翻译方法,欢迎分享。或许,这种大量数据的翻译操作用其他语言实现比较合适?

6. 改进 & 感谢

谷歌翻译,灿烂千阳建议日语->英语->中文的顺序,结果的准确度改进了很多(只是多了一步,速度下降了些);

耗时问题,codegay提出多线程方案,可以将速度提升几倍,取决于线程或服务器的个数;

具体改进的代码就不贴出来了,在原来的基础上做调整即可。

python 英语翻译_Python有哪些好用的语言翻译方法相关推荐

  1. 利用Google在线翻译引擎制作自己的多国语言翻译机

    本文介绍如何利用Google在线翻译引擎来制作自己的多国语言翻译器.本程序利用Google的在线翻译引擎实现汉语到英语,英语到汉语,英语到日语的单词,整句的翻译.因为是在命令行运行,不支持/n,不能对 ...

  2. (转)利用Google在线翻译引擎制作自己的多国语言翻译机

    出处:http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post 本文介绍如何利用Google在 ...

  3. python 百度词典_python在线抓取百度词典的翻译结果翻译单词

    这段代码通过抓取百度词典的翻译结果达到翻译单词的目的 这个小工具使用Python语言编写完成,其中使用到这 些类库(urllib,BeautifulSoup ),前者主要负责网络通讯方面,后者负责HT ...

  4. python 英语教学_Python基础教程(英文视频教学)

    Python基础教程 -.1.-.Installing_Python_video.flv: http://www.t00y.com/file/10034879 -.2.-.Numbers_and_Ma ...

  5. python 英语分词_Python英文文本分词(无空格)模块wordninja的使用实例

    在NLP中,数据清洗与分词往往是很多工作开始的第一步,大多数工作中只有中文语料数据需要进行分词,现有的分词工具也已经有了很多了,这里就不再多介绍了.英文语料由于其本身存在空格符所以无需跟中文语料同样处 ...

  6. python加密库_python基于pyDes库实现des加密的方法

    本文实例讲述了python基于pyDes库实现des加密的方法.分享给大家供大家参考,具体如下: 下载及简介地址:https://twhiteman.netfirms.com/des.html 如需要 ...

  7. python 控制库_python中实现自动化控制pyautogui库使用方法介绍

    大家在使用电脑中,有时候需要电脑进行一些繁锁的程序化操作.Python中有一个第三方库,能够帮助大家实现自动化控制电脑完成指定任务.这个库叫pyautogui库.今天,咿哑呀就简单地教大家怎样使用这个 ...

  8. python es 数据库_Python将json文件写入ES数据库的方法

    1.安装Elasticsearch数据库 PS:在此之前需首先安装Java SE环境 下载elasticsearch-6.5.2版本,进入/elasticsearch-6.5.2/bin目录,双击执行 ...

  9. python随机排列图片_python 随机打乱 图片和对应的标签方法

    如下所示: # -*- coding: utf-8 -*- import os import numpy as np import pandas as pd import h5py import py ...

最新文章

  1. 计算机笔试图形推理题,【笔记】教资笔试丨4分钟掌握信息处理以及逻辑判断!...
  2. Linux下Bluez的编程实现
  3. 滞后分析rstudio_使用RStudio进行A / B测试分析
  4. uc通讯不成功php版本过高,Ucenter通信失败排查方法
  5. java求最小步数_关于java:查找两点之间的最小步数?
  6. LSTM(长短期记忆网络)原理介绍
  7. SolidWorks2008破解版及安装方法
  8. linux apache找不到woff2,IIS Web部署: svg/woff/woff2字体找不到
  9. Elasticsearch:在华为大数据集群 从c80升级至651版本后,执行es命令修改配置失败
  10. SAP ABAP BDC调用
  11. safari 模拟手机显示
  12. QQ服务器维护一般多久,QQ扩列升级要多久?QQ扩列升级维护到什么时候结束
  13. 计算机实用教学,【实用】计算机教学工作计划3篇
  14. 用画中画剪辑技巧,给每个视频添加背景图片
  15. HttpRestful工具类
  16. 力荐几本学习MCSE的经典好书
  17. 关于泰克2465B校准
  18. 解决虚拟机中centos7中安装完毕后无法联网显示Server not found如何解决?
  19. macOS pyinstaller打包python程序, subprocess无法运行
  20. RabbitMq初识(一)

热门文章

  1. 网页版贪吃蛇(HTML 5)
  2. 亿信华辰:一文详解医疗机构数据治理六大核心环节|推荐收藏
  3. 微信小程序页面跳转后回到顶部
  4. Python 3(15)多线程
  5. 某大型水压机的驱动系统和控制系统(论文+DWG图纸)
  6. Sketch(三)——手绘微信图标
  7. 搞的跟QQ 新闻一样
  8. Nvida driver CUDA
  9. 用python制作微信好友个性签名的词云图
  10. 3D游戏建模一般需要学多久可以学会上手?