Python textblob Translation API错误

时间:2016-02-15 22:52:54

标签: python translation textblob

我在Windows上的Python 2.7.10中使用textblob已经有一段时间了,而且出乎意料的是,它停止了工作。使用两个独立的虚拟机以及OS X进行测试会产生相同的错误。

docs

中测试一个简单的代码段
    from textblob import TextBlob
    en_blob = TextBlob(u'Simple is better than complex.')
    print(en_blob.translate(to='es'))

产生错误:

File "test.py", line 3, in <module> print(en_blob.translate(to='es'))

File "C:\Python27\lib\site-packages\textblob\blob.py", line 509, in translate
from_lang=from_lang, to_lang=to))

File "C:\Python27\lib\site-packages\textblob\translate.py", line 45, in translate
raise NotTranslated('Translation API returned the input string unchanged.')

textblob.exceptions.NotTranslated: Translation API returned the input string 
unchanged.

如何调试此错误?

4 个答案:

答案 0 :(得分:4)

正如文档中所提到的,Textblob使用Google Translate API进行翻译。

显然,这个(未记录的)API改变了它的输出格式。我能够用这个片段做一个成功的请求:

import requests
url = 'http://translate.google.com/translate_a/t'
params = {
    "text": "Simple is better than complex", 
    "sl": "en", 
    "tl": "es", 
    "client": "p"
}
print(requests.get(url, params=params).content)

>> '"Simple es mejor que complejo"'

在textblob的源代码中,代码表示json编码方法,但显然Google在这里已经确定简单确实比复杂更好。

https://github.com/sloria/TextBlob/issues/117已经提到过这个问题。

答案 1 :(得分:3)

正如@Gijs所述,谷歌翻译API发生了变化。这导致TextBlob的翻译和语言检测功能停止工作。

我已提交PR来解决问题。

答案 2 :(得分:0)

您只需要设置from_lang参数即可告诉您要翻译的语言:

en_blob = TextBlob(u'Simple is better than complex.')
print(en_blob.translate(from_lang='en', to='es'))

答案 3 :(得分:0)

根据我的经验,引入from_lang参数并不能解决问题。 我已经修复了它从另一个方面而不是通过textblob调用Google的翻译API的问题。 https://github.com/ssut/py-googletrans