我该如何使用 Python 轻松进行机器翻译?

16

以前可以使用 nltk.misc.babelfish 来翻译,但是雅虎Babelfish API不再可用。有没有简单的方法能够实现这个功能呢?

>>> import translate
>>> translate('carpe diem', 'latin', 'english')

'seize the day' 

我建议使用https://github.com/nidhaloff/deep_translator。 - basilisk
3个回答

15

Goslate是一个使用Google翻译的优秀库:http://pythonhosted.org/goslate/

这是文档中的示例:

>>> import goslate
>>> gs = goslate.Goslate()
>>> print(gs.translate('hello world', 'de'))
hallo welt

为了从"carpe diem"(抓住今天)到"seize the day"(把握今天):

>>> print(gs.translate('carpe diem', 'en', 'la'))
seize the day

它本质上与以前使用的Babelfish API相同,但目标语言和源语言的顺序被交换了。还有一件事 - 如果你需要找出短代码,gs.get_languages() 将给您一个包含每种支持语言的所有短代码的字典:{...'la':'拉丁语'...}


太棒了,谢谢。虽然我尝试了前两次似乎成功了,但现在却只显示“HTTPError:HTTP错误503:服务不可用”。我被禁止了吗? - Jonathan
1
很可能是Google正在限制翻译API的使用,因为它设置了相当低的限制。请参考此答案以获取可能的解决方案:https://dev59.com/XVwY5IYBdhLWcg3wCD6W#33448911 - G Brown
1
Goslate不再可用。从库主页上可以看到:“谷歌最近更新了其翻译服务,采用了一种票据机制来防止像goslate这样的简单爬虫程序访问。尽管更复杂的爬虫在技术上可能仍然有效,但它已经越过了使用服务和破坏服务之间的微妙界线。goslate将不会更新以破解谷歌的票据机制。免费午餐结束了。感谢您的使用。” - malfroid

4

googletrans和NLTK是处理语言翻译的优秀库。

from nltk import sent_tokenize

from googletrans import Translator

translator = Translator()

data = "All work and no play makes jack dull boy. All work and no play 
makes jack a dull boy."

token = sent_tokenize(data)

for tt in token:
    translatedText = translator.translate(tt, dest="ko")
    print(translatedText.text)

结果:

所有的工作和娱乐都会使一个懒惰的男孩变得更加懒惰。

所有的工作和娱乐都会让一个勤奋的男孩变得更加勤奋。


2

你可以使用 Python translate 库。 通过 pip 安装:

$ pip install translate

代码示例:
In [1]: from translate import Translator
In [2]: translator= Translator(to_lang="zh")
In [3]: translation = translator.translate("This is a pen.")
Out [3]: 这是一支笔

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接