מודל של תרגום מכונה עצבי (NMT)

התרגום המכונה העצבי (NMT) הרגיל של Google התפתח ממערכת התרגום של רשת הנוירונים ש-Google הציגה בנובמבר 2016, עם שיפורים רבים. הוא יכול לתרגם בזמן אמת להרבה שפות ומהן.

מזהה המודל הוא general/nmt.

אפשר לגשת למודל NMT ללא שינוי דרך Cloud Translation - Basic API או Cloud Translation - Advanced API. ב-Cloud Translation - Advanced API, אפשר גם להתאים אישית את התרגום.

בכל מקרה, צריך שיהיה לכם Google Cloud פרויקט שבו מופעל Cloud Translation API, עם פרטי כניסה לביצוע קריאות מאומתות. כדי לגשת למודל באמצעות Python או שפת תכנות אחרת, צריך להתקין את ספריית הלקוח המתאימה v2 או v3.

בדוגמאות שמוצגות כאן, PROJECT_ID מייצג את מזהה הפרויקט, ו-REGION_NAME מייצג את השם הטכני של האזור Google Cloud שבו רוצים להפעיל את פעולת התרגום (למשל us-central1). כשצריך, משתמשים בקודים לפי תקן ISO-639 כדי לזהות את שפות המקור והיעד.

דוגמה ל-REST API של Cloud Translation – Basic

אפשר לבצע קריאה ל-REST באמצעות Cloud Translation - Basic API כדי TranslateText באמצעות מודל NMT. אפשר להכניס את שדות הבקשה לקובץ JSON בשם request.json, למשל, כך:

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

‫Cloud Translation - Basic API תומך רק במודל NMT, כך שלא צריך לציין את המודל בבקשה.

אחר כך אפשר להשתמש בפקודה curl כדי לשלוח את הבקשה:

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

התגובה היא מסמך JSON שנראה כך:

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

דוגמה ל-Python של Cloud Translation - Basic API

הנה קוד Python לדוגמה לקריאה ל-TranslateText במודל NMT באמצעות Cloud Translation - Basic API. מכיוון שלא צוינה שפת מקור, ה-API מנסה לזהות אותה באופן אוטומטי.

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()

הפלט אמור להיראות כך:

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 – דוגמה מתקדמת ל-API ל-REST

אפשר לבצע קריאה ל-REST עם Cloud Translation - Advanced API כדי TranslateText באמצעות מודל NMT שמוגדר כברירת מחדל. לשם כך, לא צריך לציין מודל או לבקש במפורש את מודל NMT. מכניסים את השדות של בקשת ה-PUT לקובץ JSON בשם כלשהו, למשל 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"
}

אחר כך אפשר להשתמש בפקודה curl כדי לשלוח את הבקשה:

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"

התגובה היא מסמך JSON שנראה כך:

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

Cloud Translation – דוגמה מתקדמת ל-API ב-Python

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()

הפלט הוא מסמך JSON שנראה כך:

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