2015-10-13 13 views
13

Ho appena iniziato a utilizzare la libreria goslate in python per rilevare la lingua delle parole in un testo ma dopo averlo testato per 7-8 ingressi, ho dato il input che aveva le parole scritte in due lingue arabo e inglese. Dopo di che, ha iniziato a darmi l'errore.HTTPError: Errore HTTP 503: servizio Non disponibile richiesta di rilevamento lingua 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 

ho scritto il codice come:

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


gs = goslate.Goslate() 

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

print (gs.get_languages()[language_id]) 

ed ora non funziona affatto per qualsiasi ingresso, che ho provato in passato e mi sta dando lo stesso errore. Ho provato a trovare la risoluzione dell'errore su google, ma nulla ha aiutato. Questo è quello che ho trovato: Link 1 - StackOverflow

ho provato ad aggiornare con il comando suggerito come anche nel link qui sopra:

pip install -U goslate 

ma non ha aiutato in quanto è già la nuova versione aggiornata che io sono utilizzando. Inoltre ho letto nella documentazione della libreria che si ottiene questo tipo di errore per la traduzione quando:

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 

Ho provato ad utilizzare connessione proxy, ma non serviva a niente.

EDIT Può essere che Google consenta solo un numero limitato di richieste al giorno? In tal caso, cosa si può fare meglio? C'è qualche altra libreria basata su Python che può aiutarmi a risolvere questo?

Per favore qualcuno mi aiuti in questo. Sono nuovo ad esso.

risposta

8

Nella aggiornamento della documentazione dal 05 gennaio del 2016, l'autore dice che non aggiorneranno Goslate a superare Google il controllo di accesso API:

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

forse alla ricerca di questo: https://pypi.python.org/pypi/textblob è meglio di goslate,

dal textblob è bloccato fin d'ora, forse py-translate potrebbe fare il trucco,

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 è uno strumento CLI per Google Translat e scritto in Python!"

il primo argomento della funzione traduttore è la lingua di origine, il secondo è la lingua di destinazione, e il terzo è la frase da tradurre,

restituisce un dizionario, che la documentazione si riferisce a come un'interfaccia richiesta

+0

Si tratta di una scelta eccellente. – AritzBi

+0

No, questo è anche costruito sull'API di Google Translate. Incontrerai lo stesso errore. Da textblob.py, riga 34: url = "http://translate.google.com/translate_a/t" – Taylor

+0

ci sono novità? c'è una valida alternativa che funzioni? –

4

Elaborati ng sulla risposta @ programmer44, ecco un esempio di utilizzo di TextBlob per questo caso particolare:

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

Mi dà "urllib2.HTTPError: Errore HTTP 503: servizio non disponibile." errore. –

+0

@ M.Mashaye Sei sicuro di avere l'ultima versione di Textblob? – gerosalesc

1

Dato TextBlob non sembra funzionare per me più nessuno dei due. Ho usato langdetect che funziona bene.

Come mostrato sul loro documentazione:

from langdetect import detect 

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

tornerà

en 
de 
Problemi correlati