Es scheint, dass die Genauigkeit der Google-Übersetzung immer höher wird. Ich denke, es gibt Situationen, in denen Sie eine große Anzahl englischer Sätze zur Hand haben und diese ins Japanische übersetzen möchten. Bis ich diese Qiita schrieb, dachte ich, dass die Schreibweise von übersetzen übersetzt war, aber durch Drücken der API kann selbst eine so schwache Person englische Sätze lesen.
Die offiziell verteilte Python Client Library funktionierte in meiner Umgebung nicht gut, sodass ich Probleme hatte. Ich habe mich entschieden, ohne dieses Modul zu schlagen. Auf anderen Websites erfahren Sie, wie Sie Google Cloud registrieren und einen API-Schlüssel erhalten.
Wir haben bestätigt, dass es in den folgenden zwei Umgebungen funktioniert.
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 = '<Geben Sie hier Ihren API-SCHLÜSSEL ein>'
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)
#Statuscode
# print(response.text)
#Erhalten Sie die Antwort als Zeichenfolge
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:
#An Google senden, wenn mehr als 1000 Zeichen vorhanden sind
translated_text += post_text(to_google_sen)
time.sleep(3)
to_google_sen = ""
if index == len(sen_list)-2:
#Übersetzung des letzten Satzes
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+='.'
#.Wenn es nicht mit endet, stört es den Teilungsprozess.
text_translated = split_and_send_to_post(original_text)
print(text_translated)
Wenn der Satz zu lang ist, tritt auf der Google-Seite ein Fehler auf, sodass ich ihn in etwa 1000 Zeichen aufteilen und senden werde. (Ich denke, dass ein wahnsinnig langer Satz, der nicht verwendet wird, einen Fehler verursacht. Er wird für den normalen Gebrauch angenommen.) Außerdem scheint es, dass Sie ab Version 3 nicht mit dem API-Schlüssel treffen können, sodass ich Version 2 verwende.
Ausführungsergebnis
$ python translate.py
Ich hoffe dieser Satz ist übersetzt.
Referenz Cloud Translation API