Stata调用百度翻译接口&翻译工具搜罗

这个想法在一年前我刚接触Stata编程的时候就有了。但是主要没办法解决的MD5算法的问题。因为我看不懂MD5加密算法。所以不得不搁置下来。终于昨天晚上我解决了这个问题······

百度翻译接口的使用

百度翻译API文档可以在这个网址上找到:通用翻译API技术文档。

http://api.fanyi.baidu.com/api/trans/product/apidoc

例如:将apple从英文翻译成中文,请求参数:

q=apple

from=en

to=zh

appid=2015063000000001

salt=1435660288

平台分配的密钥: 12345678

生成sign:

拼接字符串1:拼接appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678

得到字符串1 =2015063000000001apple143566028812345678

计算签名sign(对字符串1做md5加密,注意计算md5之前,串1必须为UTF-8编码)

sign=md5(2015063000000001apple143566028812345678)

sign=f89f9594663708c1605f3d736d01d2d4

完整请求为:

http://api.fanyi.baidu.com/api/trans/vip/translate?q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4

然后会返回一个json:

所以如果想在Stata里面实现这个过程,首先需要解决的问题就是md5加密字符串了。昨天晚上我发现了这个网站的这个功能:文字加密解密。

https://tool.lu/encdec/

事实上之前我也尝试找过一些这种网站,但是都没搞懂怎么做到的。但是这个网站很有趣。分析它的请求非常简单:

这个ajax返回的就是md5加密后的字符串。然后用curl就可以模拟了。简单分析了这个请求过程之后,发现下面的代码就可以得到“你好”的MD5加密字符串了:

temp.txt的内容为:

MD5字符串加密

所以可以首先写一个encryption.ado,这个命令可以把一个字符串加密然后将加密结果保存在返回值中:ado文件下载:http://www.czxa.top/mr/encryption.ado

示例:

这样我们就完成了第一步。

在进行下面一步之前我们需要先解决Unicode字符转中文的问题。

Unicode字符转中文

这个直接使用Stata的 函数就能完成了(上面的ado代码里面也就是使用这个函数解决的这个问题),例如:

调用百度翻译接口

至此,我已经把所有的问题解决了!然后就开始写这个翻译命令吧!再来看看这个示例接口:

为了方便,可以设定 和 参数的默认值为 ,appid我已经申请好了,我的appid是: ,大家不要乱用哈。salt是一个随机数,我们可以用 输入。然后就是sign了,它由appid+q+salt+密钥四部分加密组成,密钥我也早就申请好了,我的密钥是: 。接下来就简单了,我把这个命令取名为 。bdtrans.ado的代码如下,下载:

http://www.czxa.top/mr/bdtrans.ado

示例:

终于实现了一年前的想法!

对比测试

虽然网络状况的偶然性很大,但是还是可以看出,bdtrans效率较高,但是同时却没有dict强大:

另外再对比一下句子的翻译:

结果:

dict 虽然很快,但是它没翻译。再换个句子:

结果:

最后再介绍一些我搜罗的可以翻译的效率工具。

fanyi

这个工具的地址是:

https://github.com/afc163/fanyi

是一个python写的,可以在终端运行命令:

安装:

使用示例:

也可以简写为fy:

Alfred工具——bt

这是一个Alfred的workflows,Github地址为:

https://github.com/diegozeng/Alfred-workflow-baidu-translate

安装使用之后的效果:

wd

这个也是Python写的命令行工具,Github地址为:

https://github.com/chenjiandongx/youdao-wd

安装:

或者下载源码安装:

使用方法是:

例如:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180914G01F4400?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券