我刚开始使用Python中的goslate库来检测文本中单词的语言,但在测试了7-8个输入后,我给出了输入,其中包含用阿拉伯语和英语两种语言书写的单词。之后,它开始给我错误。
Public Class DateGridModels
Public Property FirstName() As String
Public Property LastName() As String
End Class
我把代码编写为:
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
execfile("C:/test_goslate.py");
File "C:/test_goslate.py", line 12, in <module>
language_id = gs.detect('الدولة')
File "C:\Python27\lib\site-packages\goslate.py", line 484, in detect
return self._detect_language(text)
File "C:\Python27\lib\site-packages\goslate.py", line 448, in _detect_language
return self._basic_translate(text[:50].encode('utf-8'), 'en', 'auto')[1]
File "C:\Python27\lib\site-packages\goslate.py", line 251, in _basic_translate
response_content = self._open_url(url)
File "C:\Python27\lib\site-packages\goslate.py", line 181, in _open_url
response = self._opener.open(request, timeout=self._TIMEOUT)
File "C:\Python27\lib\urllib2.py", line 410, in open
response = meth(req, response)
File "C:\Python27\lib\urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python27\lib\urllib2.py", line 448, in error
return self._call_chain(*args)
File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 503: Service Unavailable
现在它根本没有用于我之前测试的任何输入,并且给我同样的错误。 我尝试在谷歌上找到错误解决但没有任何帮助。这是我发现的: Link 1 - StackOverflow
我尝试使用上面的链接中建议的命令更新它:
# -*- coding: utf8 -*-
import urllib2
import goslate
gs = goslate.Goslate()
language_id = gs.detect('wait الدولة')
print (gs.get_languages()[language_id])
但它没有帮助,因为它已经是我正在使用的最新版本。另外,我在图书馆文档中读到,在以下情况下会出现这种翻译错误:
pip install -U goslate
我尝试使用代理连接,但没有任何帮助。
修改 原因可能是Google每天只允许一些请求吗?在那种情况下,可以做得更好吗?有没有其他基于Python的库可以帮我解决这个问题?
答案 0 :(得分:11)
也许正在寻找:https://pypi.python.org/pypi/textblob它比goslate好,
由于textblob截止到目前为止,也许py-translate可以解决问题,
https://pypi.python.org/pypi/py-translate/#downloads
http://pythonhosted.org/py-translate/devs/api.html
from translate import translator
translator('en', 'es', 'Hello World!')
&#34; py-translate是用Python编写的谷歌翻译的CLI工具!&#34;
翻译函数的第一个参数是源语言,第二个是目标语言,第三个是要翻译的短语,
它返回一个字典,文档将其称为请求接口
答案 1 :(得分:10)
在2016年1月5日的文档更新中,作者说他们不会更新Goslate以覆盖Google API访问控制:
Google最近使用故障单机制更新了其翻译服务,以防止像goslate这样的简单抓取程序访问。虽然更复杂的爬虫可能仍然在技术上工作,但它在使用服务和破坏服务之间会越过细微之处。 goslate将不会更新以打破谷歌的票务机制。免费午餐结束了。感谢您使用。
谷歌批准在您的计划中使用谷歌翻译的官方方式是付费Google Cloud Translation API。除此之外,您还将与谷歌的速率限制和机器人检测作斗争。
答案 2 :(得分:6)
详细阐述@ programmer44的回答,这是一个使用own来解决这个特例的例子:
from textblob.blob import TextBlob
blob = TextBlob('wait الدولة')
print(blob.detect_language())
答案 3 :(得分:2)
由于TextBlob似乎对我不起作用。我使用了langdetect,效果很好。
如他们的文件所示:
from langdetect import detect
print detect("War doesn't show who's right, just who's left.")
print detect("Ein, zwei, drei, vier")
将返回
en
de