时间:2022-10-09 17:38:00 | 浏览:331
别人家的宝宝过生日,无非是鲜花、包包和红包什么的,可我是程序员诶,怎么可以这么俗套呢?那就写个小软件给宝宝用,给她减轻一点做事情的辛苦,每天都能贴心的呵护她。
宝宝经常接触一些英文资料,免不了要进行翻译。而今,翻译这个活儿人工智能已经可以干个七七八八了,再辅助以人工校对就可以高质量的完成翻译工作。
于是,决定帮宝宝做人工智能翻译的活儿。借助谷歌翻译这个人工智能翻译机器来实现。我负责“人工”,宝宝负责“智能”。我把文本Ctrl+C、Ctrl+V到谷歌翻译,再Ctrl+C、Ctrl+V到Word,编辑好后给宝宝用她的智能去校对。
我可是程序员诶,怎么能做Ctrl+C、Ctrl+V的苦力活儿呢?那就用Python写个小软件来替我做苦力吧。说干就干!
一、翻译软件需求分析
输入为word文档(.docx),选择文档语言和翻译目标语言。
输出仍为word文档(.docx),以段落为单位,中英文对照,方便宝宝校对。如下图所示:
二、翻译软件设计实现
(1)人工智能翻译
基本上搜索引擎都提供了机器翻译的功能,国内的百度、搜狗、腾讯、有道等等,国外的谷歌等。除了网页版,还提供了API供开发者使用,但是API基本上都是收费的。所以还是用网页版的免费功能吧。这么多家到底哪家翻译技术强呢?肯定不是蓝翔。个人比较喜欢谷歌的,那就选Google的吧。正好谷歌中国的翻译功能访问起来是通畅的:
https://translate.google.cn/
方便的是,基于网页版的Google翻译已经有人做成了Python库:
googletrans
就是它了。
(2)人机界面
现在的软件都流行云服务,即处理运算都在服务器上,用户只需要浏览器打开一个网页操作,就是所谓的B/S架构。这样的好处是,软件修改升级都很方便。
然而,谷歌翻译的使用有频率限制,后面软件开源了,大家都通过我的服务器进行谷歌翻译,我的服务器很容易比谷歌服务器封杀。所以决定写成一个纯粹的PC版软件,用户的电脑直接访问翻译服务器。
Python写图形化界面(GUI)的库也有好几个,比较有名的是wxpython和pyqt。我对Qt早有耳闻,而且它在图形化界面领域地位很高,决定选择pyqt来写软件的图形化界面。
进一步了解,原来pyqt不是Qt官方写的,而是一个叫Riverbank Computing 的公司对C++编写的Qt的Python绑定,并且基于GPL协议发布的。GPL具有传染性,不是特别喜欢它。正好发现,Qt官方自己按照PyQt的接口自己写了一套Python绑定,起名为PySide,并以LGPL协议发布,这个协议友好多了。最新的PySide基于Qt 5,并起名PySide2,就选它了(哎,这是个坑啊,后面详解)。
但是我对Qt写界面完全不熟啊。不过我是谁啊,我可是程序员诶,这难不倒我。找来PySide2自带的example,从里面找个跟我需要类似的。我需要选择框(选语言用)、文件选择器(选要翻译的文档用)这两个。发现有个 findfiles.py 有点类似。就从它开始改…… 边学边改……. 终于成型了:
(3)功能实现
边学边写界面耗时很长,剩下的就简单多了。读取docx用python-docx库,翻译用前面说的googletrans,一气呵成。最后,把提示语言写到界面的文本区域时遇到点问题,还是Qt不熟悉造成的,继续学习,其实就是Qt的信号传递。大功告成,测试一下:
三、翻译软件发布
软件写好了,要交给宝宝使用。但是我没有信心教会宝宝从源代码运行这个程序。毕竟是宝宝嘛,能双击运行就可以啦。
于是用pyinstaller打包这个软件。一条命令完成,非常easy,生成一个可以单独运行的exe文件,双击运行没问题。作为老江湖,当然还要拿到其它机器上去测试一下下。纳尼?!报错了!!!把错误信息google一下,搜到的结果不多,而且是PyQt5的,没有PySide2的信息。为了这个错误,又耗费了几个小时,这就是坑啊。选择要慎重啊。
果断换成PyQt5,因为两者很相似改起来并不复杂,只是信号部分的名称不一样。换成PyQt5后,一切正常了。不过,作为一个程序员并不打算就此放过PySide2,有时间还是要搞定它的pyinstaller发布的,哼!
后记
这个小软件虽然小,但涉及的技术栈还不少,完全用Python完成:
Python 3.7:编程语言;
googletrans:谷歌翻译网页版接口;
PyQt5/PySide2:图形化界面库
小软件大功能,借助谷歌人工智能的强大力量,翻译质量有保证,几十种语言之间自由切换相互翻译,是居家生活、工作学习的必备良器。这么好的工具,当然不能给我家宝宝独享
我不喜欢一上来就推荐一堆参考资料的东西,那只会让初学者更迷茫。好比一个婴儿,你告诉他学会走路的方法有100种,他只会变的对走路毫无兴趣,他要的只是一种最有效的学会走路的办法,而不是100种。同样的,下面介绍的是我之前刚开始自己学习pytho
一、强类型和弱类型语言:C、 C++、 Java 、Python都是强类型的语言。PHP是弱类型的语言。强类型语言是一种强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就是该数据类型。而弱类型语言是一种弱类型定义
乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAIPython势头不减,依旧第一,而且进一步拉开了与其他语言的差距。这一结果,来自IEEE Spectrum2019年度编程语言排行榜。这已经是Python连续3年保持第一。在Pyth
首先,我们先普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如编写一篇文章,下载一首MP3等,而计算机干活的CPU只认识机器的指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。
全球知名TIOBE 编程语言社区发布了11 月编程语言排行榜。下面让我们一起来看看,本月榜单中有哪些值得注意的新变化吧!01PHP即将跌出前十自 20 多年前 TIOBE 指数开始发布以来,PHP 一直常驻在榜单前十,然而最近,该语言已经开
【51CTO.com快译】在本文中,我们将逐一介绍目前人气较高的三种编程语言:PHP、Ruby和Python。我们将分析它们是如何工作的,它们彼此有何不同,谁在使用它们,以及每种语言受欢迎的程度。一、 PHP:互联网上最受欢迎的脚本语言PH
TIOBE 编程社区指数是编程语言流行程度的指标。该指数每月更新一次。评级基于全球熟练工程师、课程和第三方供应商的数量。谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度等流行搜索引擎用于计算评分。需要注意的是,TIOBE 指数与最
IT行业现在依然是求职转行人群的首选,那么当下的IT培训机构中IT技术课程类目繁多,尤其是Java培训,PHP培训,Python培训以及前端培训最火,零基础人员如何选择一种适合自己的编程开发语言课程去学习入行呢?前三者属于后端的开发语言,我
来源:陕西疾控为什么要宣传管好孩子视力?近视对孩子未来的影响?未来择业根据《普通高等学校招生体检工作指导意见》、《公务员录用体检通用标准(试行)》、《中国人民解放军院校招收学员体格检查标准》等要求,考生视力不符合要求时相关专业不予录取或不宜
大家对视力筛查都已经很熟悉了,但是怎样理解视力筛查报告的反馈信息?小朋友的视力达到什么水平才能“达标”?什么样的情况下就可能需要戴眼镜?大家在拿到视力筛查报告时,这一连串的问号就开始在大家的心中荡漾开来。今天,就让我们一起来聊一聊视觉发育和