Il semble que la précision de la traduction de Google augmente de plus en plus. Je pense qu'il y a des situations où vous avez une grande quantité de phrases en anglais sous la main et que vous souhaitez les traduire en japonais. Jusqu'à ce que j'écrive ce Qiita, je pensais que l'orthographe de traduire était traduite, mais en appuyant sur l'API, même une personne aussi faible peut lire des phrases en anglais.
Document de traduction dans le cloud
La [bibliothèque cliente] Python officiellement distribuée (https://cloud.google.com/translate/docs/quickstart-client-libraries?hl=ja) ne fonctionnait pas bien dans mon environnement, donc j'avais des problèmes. J'ai décidé de frapper sans utiliser ce module. Veuillez consulter d'autres sites pour savoir comment enregistrer Google Cloud et obtenir une clé API.
Nous avons confirmé que cela fonctionne dans les deux environnements suivants.
Mac OS Mojave chardet(3.0.4) requests(2.18.4) urllib3(1.22)
Ubuntu 18.04 chardet (3.0.4) requests (2.22.0) urllib3 (1.25.7)
translate.py
import requests
import json
import time
private_key = '<Mettez votre clé API ici>'
def post_text(text):
url_items = 'https://www.googleapis.com/language/translate/v2'
item_data = {
'target': 'ja',
'source': 'en',
'q':text
}
response = requests.post('https://www.googleapis.com/language/translate/v2?key={}'.format(private_key), data=item_data)
# print(response.status_code)
#Code d'état
# print(response.text)
#Obtenez la réponse sous forme de chaîne
return json.loads(response.text)["data"]["translations"][0]["translatedText"]
def split_and_send_to_post(text):
sen_list = text.split('.')
to_google_sen = ""
translated_text = ""
for index, sen in enumerate(sen_list[:-1]):
to_google_sen += sen + '. '
if len(to_google_sen)>1000:
#Envoyer à Google s'il dépasse 1 000 caractères
translated_text += post_text(to_google_sen)
time.sleep(3)
to_google_sen = ""
if index == len(sen_list)-2:
#Traduction de la dernière phrase
translated_text += post_text(to_google_sen)
time.sleep(3)
return translated_text
if __name__ == '__main__':
original_text = "I hope this sentence is transrated."
if original_text[-1] != '.':
original_text+='.'
#.Si cela ne se termine pas par, cela interférera avec le processus de division.
text_translated = split_and_send_to_post(original_text)
print(text_translated)
Si la phrase est trop longue, une erreur se produira du côté de Google, je vais donc la diviser en environ 1000 caractères et l'envoyer. (Je pense qu'une phrase incroyablement longue qui n'utilise pas. Provoquera une erreur. Elle est supposée pour une utilisation normale.) De plus, à partir de la v3, il semble que vous ne puissiez pas utiliser la clé API, donc j'utilise la v2.
Résultat d'exécution
$ python translate.py
J'espère que cette phrase est traduite.
référence Cloud Translation API
Recommended Posts