web-dev-qa-db-fra.com

HTTPError: Erreur HTTP 503: demande de détection de langue goslate du service indisponible: Python

Je viens de commencer à utiliser la bibliothèque goslate en Python pour détecter la langue des mots d'un texte, mais après l'avoir testée pour 7 à 8 entrées, j'ai fourni l'entrée qui avait les mots écrits en deux langues, l'arabe et l'anglais. Après quoi, cela a commencé à me donner l'erreur. 

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

J'ai écrit le code comme:

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


gs = goslate.Goslate()

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

print (gs.get_languages()[language_id])

et maintenant cela ne fonctionne pas du tout pour les entrées que j'ai testées précédemment et me donne la même erreur. J'ai essayé de trouver une résolution d'erreur sur google mais rien n'y fait. C'est ce que j'ai trouvé: Link 1 - StackOverflow

J'ai essayé de le mettre à jour avec la commande comme suggéré également dans le lien ci-dessus: 

pip install -U goslate

mais cela n'a pas aidé car c'est déjà la dernière version mise à jour que j'utilise. De plus, j'ai lu dans la documentation de la bibliothèque que ce type d'erreur de traduction est obtenu lorsque: 

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

J'ai essayé d'utiliser une connexion proxy mais rien n'y fait. 

EDIT Cela pourrait-il être dû au fait que Google n'autorise qu'un nombre limité de requêtes par jour? Dans ce cas, quoi de mieux peut-on faire? Existe-t-il une autre bibliothèque basée sur Python qui puisse m'aider à résoudre ce problème?

14
POOJA GUPTA

Dans la mise à jour de la documentation du 05 janvier 2016, l'auteur indique qu'il ne mettra pas à jour Goslate afin de ne pas contourner le contrôle d'accès de Google API:

Google a récemment mis à jour son service de traduction avec un mécanisme de ticket afin d’empêcher l’accès à un simple programme d'exploration comme goslate. Un robot sur chenilles plus sophistiqué peut toujours fonctionner techniquement, mais il aurait franchi la ligne de démarcation entre l’utilisation du service et sa rupture. goslate ne sera pas mis à jour pour casser le mécanisme de ticket de Google. Le déjeuner libre est terminé. Merci d'avoir utilisé.

La manière officielle, approuvée par Google, d’utiliser Google Traduction dans vos programmes est avec l’application payante API de traduction Google Cloud . Avec tout le reste, vous allez vous battre contre la limitation de vitesse et la détection de bot de Google.

8
Matheus Araujo

peut-être cherchez-vous ceci: https://pypi.python.org/pypi/textblob c'est mieux que goslate,

puisque textblob est bloqué à partir de maintenant, py-translate pourrait faire l'affaire,

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 est un outil CLI pour Google Traduction écrit en Python!"

le premier argument de la fonction de traduction correspond à la langue source, le second à la langue cible et le troisième à la phrase à traduire,

il renvoie un dictionnaire, que la documentation appelle une interface de requête

10
programmer44

En développant la réponse @ programmer44, voici un exemple d'utilisation de TextBlob dans ce cas particulier:

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

Depuis que TextBlob ne semble plus fonctionner pour moi non plus. J'ai utilisé langdetect qui fonctionne très bien.

Comme indiqué sur leur documentation:

from langdetect import detect

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

reviendra

en
de
1
Philippe Oger