NMÜ-Modell (Neuronale Maschinenübersetzung)

Die standardmäßige neuronale maschinelle Übersetzung (NMT) von Google hat sich aus dem auf neuronalen Netzwerken basierenden Übersetzungssystem entwickelt, das Google im November 2016 eingeführt hat. Es kann in Echtzeit in viele Sprachen übersetzen und aus vielen Sprachen übersetzen.

Die Modell-ID lautet general/nmt.

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

In beiden Fällen benötigen Sie ein Google Cloud -Projekt, für das die Cloud Translation API aktiviert ist, sowie 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 für den technischen Regionsnamen der Google Cloud Region, in der Sie den Übersetzungsvorgang ausführen möchten (z. B. us-central1). Verwenden Sie bei Bedarf ISO-639-Codes, um die Ausgangs- und Zielsprachen anzugeben.

Cloud Translation – Basic API – REST-Beispiel

Sie können einen REST-Aufruf mit der Cloud Translation Basic API für TranslateText mit dem NMÜ-Modell ausführen. Sie können Anforderungsfelder 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 nur das NMT-Modell. Sie müssen das Modell daher nicht in der Anfrage angeben.

Anschließend können Sie die Anfrage mit einem curl-Befehl 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"
      }
    ]
  }
}

Cloud Translation – Basic API – Python-Beispiel

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 Ausgangssprache 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!'}]

Cloud Translation Advanced API – REST-Beispiel

Sie können einen REST-Aufruf mit der Cloud Translation Advanced API ausführen, um TranslateText mit dem standardmäßigen NMT-Modell zu übersetzen. Dazu müssen Sie entweder kein Modell angeben oder das NMT-Modell explizit anfordern. Fügen Sie die Felder der PUT-Anfrage in eine JSON-Datei ein, z. B. request.json:

{
  "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 die Anfrage mit einem curl-Befehl 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": "Принеси мне кофе!",
    }
  ]
}

Cloud Translation Advanced API – Python-Beispiel

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"
}