为什么要自己写一个翻译

自己去实现一个翻译引擎这太难了,一是没有这么多语料,二是没有这个技术能力,但是我可以调用几家翻译平台的 API,在体验上进行优化,我做的这个事情是完全解决我自己和我身边人的需求,我准备写完后,开源给大家用。

相比百度、腾讯、Google 网页的翻译,我主要优化了如下几个点。

  1. 没有长度限制,你可以上传任意长度的文本,翻译完成后,会自动拼接起来。
  2. 批量翻译,你可以上传多一个文件,以 zip 包的方式,我会自动解压,然后把每一个文件都翻译完成后,再把翻译结果打包成一个 zip 包,这样就可以节省你的时间。
  3. 多个翻译结果同时对比,你可以选择多个翻译平台,然后比较翻译结果,这样就可以看到哪个翻译结果更好。
  4. 支持图片到图片的翻译,比如电商场景下,可以把中文的图片翻译成英文的图片。

用了哪些技术

语言:golang
框架:gin
服务器:腾讯轻量云服务器

遇到了哪些困难

在项目集成了百度翻译、腾讯翻译后,这次又集成了 Google 翻译,Google 翻译的开发者体验比腾讯和百度好一些,主要体现在接口的灵活性和易用性方面,我本来认为 3 天就可以把各个翻译平台的 API 接完的,但是最后超出了我的预期,差不多 5 天才接完,因为我没有用 golang 写过项目,以前只是听说过这一门语言,这次是完整的来写一个项目,遇到不少问题,要不断的Google,另外一个原因是在翻译长度这里遇到了点问题,如百度和腾讯翻译都有字数限制,一次只能翻译 2000 个汉字的长度,超过了就直接告诉你翻译失败,所以我要把要翻译的文本分段,然后每段翻译完成后再拼接起来,这样就可以解决这个问题,但是在分段的时候,就会遇到一个很现实的问题,有可能把一个完整的句子分成了两段,这样翻译的结果肯定不对。

  1. 第一次用 golang 写项目,虽然我那个年代主要写 c,后来写过php,但是遇到一门新的语言时,还是要不断的学习,不然只有思想,无法实现。
  2. 文本分句,翻译 api 字数的限制,我要先把长文本切成 2000 字以内的块,不能把句子切断了,最简单的办法是根据标点分句,但是会把人名给切断,比如 罗伯特.李,在这个问题上花了不少时间,还没有完全解决。
  3. api 的调试,主要是在百度 api 格式保留上,花了不少时间,最后发现百度 api 本来就有这方面的问题,不得不放弃了。

Google

Google Api 我认为是在文档和示例上做的最好的,不过 google 文档太多,经常找不到入品,汇总如下。

quickstart

使用文档

golang samples translate

Google 翻译 api 参考文档

发表评论