NMÜ-Modell (Neuronale Maschinenübersetzung)

Das standardmäßige NMÜ-Modell (Neuronale Maschinenübersetzung) von Google hat sich aus dem neuronalen Netzwerkübersetzungssystem entwickelt, das Google im November 2016 eingeführt hat, und wurde seitdem erheblich verbessert. Es kann in Echtzeit in viele Sprachen übersetzen und aus vielen Sprachen übersetzen.

Die Modell-ID lautet general/nmt.

Sie können ohne Änderungen auf das NMÜ-Modell zugreifen, entweder über die Cloud Translation Basic API oder die Cloud Translation Advanced API. Mit der Cloud Translation Advanced API können Sie es auch anpassen.

In beiden Fällen benötigen Sie ein Google Cloud Projekt, für das die Cloud Translation API aktiviert ist, sowie die Anmeldedaten für authentifizierte Aufrufe. Wenn Sie mit Python oder einer anderen Programmiersprache auf das Modell zugreifen möchten, installieren Sie die entsprechende v2 oder v3 Clientbibliothek.

In den hier gezeigten Beispielen steht PROJECT_ID für Ihre Projekt-ID und REGION_NAME Google Cloud für den technischen Namen der Region, in der Sie den Übersetzungsvorgang ausführen möchten (z. B. us-central1). Verwenden Sie bei Bedarf ISO-639-Codes, um Quell- und Zielsprachen zu identifizieren.

REST-Beispiel für die Cloud Translation Basic API

Sie können mit der Cloud Translation Basic API einen REST-Aufruf an TranslateText mit dem NMÜ-Modell ausführen. Sie können Anfragenfelder in eine JSON-Datei mit einem Namen wie request.json einfügen, z. B. so:

{
  "q": ["Hello world", "My name is Jeff"],
  "target": "de"
}

Die Cloud Translation Basic API unterstützt standardmäßig das NMÜ-Modell. Sie müssen es nicht angeben. Sie können auch das standardmäßige TLLM-Modell angeben, indem Sie den vollständigen Ressourcennamen übergeben. Cloud Translation Basic unterstützt keine benutzerdefinierten Modelle.

Anschließend können Sie mit einem curl-Befehl die Anfrage senden:

!curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "x-goog-user-project: cloud-ml-translate-e2e-testing" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @request.json \
     "https://translate.googleapis.com/language/translate/v2"

Die Antwort ist ein JSON-Dokument, das so aussieht:

{
  "data": {
    "translations": [
      {
        "translatedText": "Hallo Welt",
        "detectedSourceLanguage": "en"
      },
      {
        "translatedText": "Mein Name ist Jeff",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

Python-Beispiel für die Cloud Translation Basic API

Hier ist ein Beispiel für Python-Code zum Aufrufen von TranslateText für das NMÜ-Modell mit der Cloud Translation Basic API. Da keine Quellsprache angegeben ist, versucht die API, sie automatisch zu erkennen.

def translate_text(
  text: str | bytes | list[str] = "¡Hola amigos y amigas!",
  target_language: str = "en",
  source_language: str | None = None,
) -> dict:

  translate_client = translate_v2.Client()

  if isinstance(text, bytes):
    text = [text.decode("utf-8")]

  if isinstance(text, str):
    text = [text]

  results = translate_client.translate(
    values=text,
    target_language=target_language,
    source_language=source_language
  )

  for result in results:
    if "detectedSourceLanguage" in result:
      print(f"Detected source language: {result['detectedSourceLanguage']}")
    print(f"Input text: {result['input']}")
    print(f"Translated text: {result['translatedText']}")
    print()

  return results

translate_text()

Die Ausgabe sieht so aus:

Detected source language: es
Input text: ¡Hola amigos y amigas!
Translated text: Hello friends!

[{'translatedText': 'Hello friends!',
  'detectedSourceLanguage': 'es',
  'input': '¡Hola amigos y amigas!'}]

REST-Beispiel für die Cloud Translation Advanced API

Sie können mit der Cloud Translation Advanced API einen REST-Aufruf an TranslateText mit dem standardmäßigen NMÜ-Modell ausführen, indem Sie entweder kein Modell angeben oder das NMÜ-Modell explizit anfordern. Fügen Sie Anfragenfelder in eine JSON-Datei mit einem Namen wie request.json ein, z. B. so:

{
  "sourceLanguageCode": "en",
  "targetLanguageCode": "ru",
  "contents": ["Dr. Watson, come here!", "Bring me some coffee!"],
  "model": "projects/PROJECT_ID/locations/REGION_NAME/models/general/nmt"
}

Anschließend können Sie mit einem curl-Befehl die Anfrage senden:

curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "x-goog-user-project: PROJECT_ID" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @request.json \
     "https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/REGION_NAME:translateText"

Die Antwort ist ein JSON-Dokument, das so aussieht:

{
  "translations": [
    {
      "translatedText": "Доктор Ватсон, иди сюда!",
    },
    {
      "translatedText": "Принеси мне кофе!",
    }
  ]
}

Python-Beispiel für die Cloud Translation Advanced API

def translate():

  response = translate_v3.TranslationServiceClient().translate_text(
      contents=["Life is short.",
                "Art is long."],
      target_language_code='fr',
      source_language_code='en',
      parent=f"projects/{project_id}/locations/us-central1",
      model=f"{parent}/models/general/nmt"
  )

  print(response)

  return response

translate()

Die Ausgabe ist ein JSON-Dokument, das so aussieht:

translations {
  translated_text: "La vie est courte."
  model: "projects/261347268520/locations/us-central1/models/general/nmt"
}
translations {
  translated_text: "L'art est long."
  model: "projects/261347268520/locations/us-central1/models/general/nmt"
}