2015-10-13 26 views
13

Właśnie zacząłem używać biblioteki goslate w pythonie, aby wykryć język słów w tekście, ale po przetestowaniu go pod kątem 7-8 wejść, dałem wejście zawierające słowa napisane w dwóch językach arabskim i angielskim. Po czym zaczęło mi podawać błąd.HTTPError: Błąd HTTP 503: Usługa Niedostępne żądanie wykrycia języka goslate: Python

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 

pisałem kod jako:

# -*- coding: utf8 -*- 
import urllib2 
import goslate 


gs = goslate.Goslate() 

language_id = gs.detect('wait الدولة') 

print (gs.get_languages()[language_id]) 

i teraz nie działa w ogóle dla każdego wejścia, które ja wcześniej testowane i daje mi ten sam błąd. Próbowałem znaleźć rozwiązanie problemu w Google, ale nic nie pomogło. To co znalazłem: Link 1 - StackOverflow

Próbowałem aktualizacji za pomocą polecenia jak również sugerowane w linku powyżej:

pip install -U goslate 

ale to nie pomogło, ponieważ jest już najnowsza zaktualizowana wersja, że ​​jestem za pomocą. Również czytałem w dokumentacji biblioteki, że jeden dostaje ten rodzaj błędu do tłumaczenia, gdy:

If you get HTTP 5xx error, it is probably because google has banned your client IP address from transation querying. 

You could verify it by access google translation service in browser manually. 

You could try the following to overcome this issue: 

query through a HTTP/SOCK5 proxy, see Proxy Support 
using another google domain for translation: gs = Goslate(service_urls=['http://translate.google.de']) 
wait for 3 seconds before issue another querying 

Próbowałem za pomocą połączenia z serwerem proxy, ale nic nie pomogło.

EDIT może być powodem, że Google pozwala tylko trochę liczbę żądań dziennie? W takim razie, co można zrobić lepiej? Czy istnieje inna biblioteka oparta na pythonie, która może mi pomóc rozwiązać ten problem?

Proszę, pomóż mi w tym. Jestem dla niego nowy.

Odpowiedz

8

W aktualizacji dokumentacji z 05 stycznia 2016, autor mówi, że nie będzie aktualizować Goslate na wiadukt kontrolę dostępu API Google:

Google has updated its translation service recently with a ticket mechanism to prevent simple crawler program like goslate from accessing. Though a more sophisticated crawler may still work technically, however it would have crossed the fine line between using the service and breaking the service. goslate will not be updated to break google’s ticket mechanism. Free lunch is over. Thanks for using.

11

może szukasz to: https://pypi.python.org/pypi/textblob lepiej niż goslate,

od textblob jest zablokowany jak teraz, może py-translate mógłby rade,

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!') 

"py-translate to narzędzie CLI dla Google Translat e napisane w Pythonie!"

pierwszy argument do funkcji tłumacz jest język źródłowy, drugi język docelowy, a trzeci jest wyrażenie do przetłumaczenia,

zwraca słownik, którego dokumentacja określa jako interfejs prośba

+0

To doskonały wybór. – AritzBi

+0

Nie, jest to również oparte na Google Translate API. Napotkasz ten sam błąd. Od textblob.py, linii 34: url = "http://translate.google.com/translate_a/t" – Taylor

+0

jakieś wieści? czy istnieje realna alternatywa, która działa? –

4

Elaborati ng na @ programmer44 odpowiedź, tutaj jest przykładem wykorzystania TextBlob w tym konkretnym przypadku:

from textblob.blob import TextBlob 
blob = TextBlob('wait الدولة') 
print(blob.detect_language()) 
+0

Daje mi "urllib2.HTTPError: HTTP Error 503: Service Unavailable." błąd. –

+0

@ M.Mashaye Czy na pewno masz najnowszą wersję Textblob? – gerosalesc

1

Od TextBlob nie wydają się działać dla mnie już nie. Używam langdetect, który działa dobrze.

Jak pokazano na ich dokumentacji:

from langdetect import detect 

print detect("War doesn't show who's right, just who's left.") 
print detect("Ein, zwei, drei, vier") 

powróci

en 
de