大家好,我是灿视,一个人工智能与医疗交叉的在读博士生。
最近在做一点东西,需要将英文的东西,翻译成中文。
目前有一些软件当然是可以直接进行翻译的,比如deepl,百度翻译,google翻译,有道词典,这些软件都很方便,比如我们需要翻译一篇paper的时候,我们甚至还有知云这样,指哪翻译哪的神器。
但是如果你需要翻译几万次不同的英文字符串,你不可能每一次输入一个词到有道的软件中,再翻译之后,把它复制出来呀?
因此,我这边采用的是写一点点代码的方式来教你如何调用一些现成的翻译接口,为我们更好的工作。
什么是接口呢?这里的软件接口,我特指是运行在云端的算法,将其输入的参数告诉你,你运行这个算法,把你需要完成的功能按照这个参数的要求给输入进去。举个例子呗:
比如我需要做英文到中文的转换,那么这个参数就是我需要进行转换的具体字符串。每个人需要翻译的内容不同,有的人输入的参数是"I Love You",有的人需要输入的参数是"I want to have lots of money"。因此我们把这个需要翻译的字符串抽象成一个参数,供不同的人来调用就好。
那么什么是云端?就是你们实验室师兄师姐那黑漆漆的代码行的桌面,通过工具连接上的计算机。
人工智能,如果不是这个相关专业或者方向的同学,可能还不太了解人工智能能干啥。目前我们的方方面面都有人工智能的影子了。如,嗨siri,各种音箱,支付宝刷脸付,高铁站进站刷脸,垃圾邮件分类等各个方向。
更具体一点,我们可以看看百度怎么归类的。
如这边第一列,人工智能目前主要是这几个大方向中的运用。从语音,到图像(视频),文本数据等几个大方向。每个大方向中,又是那么多小方向。当然,其实不同的学科都是可以用到人工智能技术的,比如基因组组学数据,就是可以看成文本的数据,病理,ct,超声等数据,也可以运用图像人工智能技术来进行研究。
那么其它学科可以用人工智能吗?当然也是可以的,比如使用人工智能技术来进行股票预测(目前比较拉垮),学习目前已有材料的性能,预测新的材料的关键指标。各个专业,如果你想进行研究,都是可以借鉴已有的人工智能技术,来进行辅助研究。(对于想发文章的同学,可以好好了解下人工智能与本专业可以怎么结合~)
目前如百度,腾讯等大公司都是有自己的人工智能开放平台。对于我而言,现在我有时候有一些任务,还是真的会免费白piao它们的接口。作为一个前百度,腾讯的算法员工,也会更加安利他们给各位的。我们不需要了解里面的算法原理,用它就完事儿了。这不,我这次的一些翻译工作,就用到了。
我目前做的是一些网站翻译,数据库整理的工作。其中一个任务是在一些公开的网站上,找到某一段信息,再翻译成中文。
其中一个数据库就是omim,这是一个人类遗传病的数据库。
其中我想得到里面所有的基因描述,这个数据库中,总共有16652个基因描述,那么我不可能一个个去点开,再去翻译。
随便举个例子,我需要翻译其中一个病的基因的相关描述。那么一万多个怎么做呢?
我就是用的requests python的库来获取这个网页,再进行解析,得到这个段的信息了。这个具体的细节就不说了
这里我们主要使用python,python各位应该都听过?我这边有一些python的基础教程,如果各位没有学过,可以按照我这个入门python。不管什么专业,学点python还是有用的。
我们可以安装anaconda管理python环境,再装一个pycharm作为python的编辑器。都是可以参考下面我之前写得几篇文章的。
安装好之后,我们可以进入百度翻译的算法介绍页中。网址是:
http://api.fanyi.baidu.com/
鼠标放置在产品服务上,会有一些东西弹出来。主要目前的翻译分成通用翻译,以及垂直领域的翻译。
垂直领域呢?就是这几个小领域。比如生物医药,有的词确实很生僻,比如三羧酸循环,你咋翻译呢?当然,给你更垂直的翻译,就是需要挣钱的,一般来说,这些免费版本的够用了。
通用领域的话,每个月免费使用200w个字符,一般是够了的。不过各位要弄清楚,这个字符是算上标点符号的。
首先,我们需要开通这个通用/垂直的服务。在下面的页面,我们点击立即使用。
再就是进行注册的正常流程,进入即可。
我们需要得到我们在百度人工智能平台中的APPID与密钥。
我们进入这个网站:
http://api.fanyi.baidu.com/manage/developer
就可以看到后面我们需要的APPID与密钥了。
或者也可以进入这个网页:
http://api.fanyi.baidu.com/api/trans/product/desktop
也是可以看到相对应的APPID跟密钥的。
这个APPID与密钥都是我们后面调用它接口所需要的。
目前的百度这个接口可能是需要我们进行IP配置的。就是我们在开发者信息中,找到我们要用的这个服务。
点击修改服务信息,进去之后,可以配置下我们请求时候的本地IP。
这个IP怎么获取呢?这个IP不是我们的内网IP,我们可以从百度中进行获得。在百度中输入"IP"。
然后把这个本纪IP复制到上面的服务器地址的这一栏中。
这样的话,基本配置就没啥问题了。
这里的话,我们需要安装一些库,比如我们之前已经安装了anaconda,这时候,我们需要安装下requests库。我们可以使用windows下的cmd工具。
win+R,之后,输出cmd,点击enter,可以弹出cmd的窗口。
mac/linux系统的话,就使用terminal即可。
进入窗口之后,看看我们的python环境有没有问题,输入python。
上面图中的 (base)表示的是一个虚拟环境的意思。这里是指的anaconda中的一个工具叫做conda,可以虚拟化不同的环境出来。因为我们不同的任务,可能依赖的版本也是不同的,因此我们每一个任务,我们可以虚拟化一个虚拟环境出来。这里我们不讲那么多,我们直接在base环境中,输入:
pip install requests
我这边已经安装好了,如果你没有安装,那么就会出现安装的过程。
当环境配好了,基本的requests等包都安装好了,百度开发者账号等基本资料都整好了。我们就可以调用了!
新建一个文件,比如baidu.py,这个py是python文件的后缀。我们可以使用记事本,或者pycharm/vscode进行打开。打开之后,把下面的代码复制进去。
# -*- coding:utf-8 -*-
import json
import http.client
import hashlib
from urllib import parse
import random
def translate_baidu(params):
appid = '202xxxxxxxx' # 你的appid
secretKey = 'k3xxxxxxx' # 你的密钥
myurl = '/api/trans/vip/fieldtranslate'
q = params
fromLang = 'en'
toLang = 'zh'
salt = random.randint(32768, 65536)
sign = appid + q + str(salt) + secretKey
m1 = hashlib.md5()
m1.update(sign.encode("utf-8"))
sign = m1.hexdigest()
myurl = myurl + '?appid=' + appid + '&q=' + parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(
salt) + '&sign=' + sign
httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
httpClient.request('GET', myurl)
response = httpClient.getresponse()
# 转码
html = response.read().decode('utf-8')
html = json.loads(html)
dst = html["trans_result"][0]["dst"]
print(dst)
params = 'I want to have lots of money!' #这里随便我们输入,比如:I want to have lots of money!
translate_baidu(params)
主要修改的就是appid,secretKey,以及我们需要翻译的params就好。
我们可以在cmd或者terminal中直接输入下面的命令来进行调用。
python baidu.py
也可以使用pycharm这样的编辑器来跑程序。(左边是我项目的代码,比较乱~)
如图,我直接点击这个开关,就可以在下面看到这个结果。
当然,这只是一句话翻译。如果你想翻译很多话,或者是很灵活得使用这样的代码,需要一点点代码基础,比如简单写个for循环就好。 - END -