ニューラル機械翻訳(NMT)モデル

Google の標準のニューラル機械翻訳(NMT)は、2016 年 11 月に Google が導入した ニューラル ネットワーク翻訳システム から進化し、多くの改善が加えられています。多くの言語間でリアルタイムに翻訳できます。

モデル ID は general/nmt です。

NMT モデルには、Cloud Translation - Basic API または Cloud Translation - Advanced API を介して変更なしでアクセスできます。Cloud Translation - Advanced API を使用すると、 カスタマイズすることも できます

いずれの場合も、Cloud Translation API が有効になっている Google Cloud プロジェクトと、認証済みの呼び出しを行うための認証情報が必要です。Python または他のプログラミング言語を使用してモデルにアクセスするには、 適切な v2 または v3 クライアント ライブラリをインストールします。

ここに示されている例では、PROJECT_ID はプロジェクト ID を表し、 REGION_NAME は翻訳オペレーションを実行する Google Cloud リージョン の技術リージョン名(us-central1 など)を表します。 必要に応じて、ISO-639 コードを使用してソース 言語とターゲット言語を指定します。

Cloud Translation - Basic API REST の例

Cloud Translation - Basic API を使用して REST 呼び出しを行い、 TranslateText を NMT モデルを使用して実行できます。リクエスト フィールドは、次のように request.json などの名前の JSON ファイルに配置できます。

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

Cloud Translation - Basic API は、デフォルトで NMT モデルをサポートしています。指定する必要はありません。完全なリソース名を渡すと、標準の TLLM モデルを指定することもできます。Cloud Translation - Basic では、カスタマイズされたモデルはサポートされていません。

リクエストを送信するには、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"
      }
    ]
  }
}

Cloud Translation - Basic API Python の例

Cloud Translation - Basic API を使用して NMT モデルで TranslateText を呼び出す Python コードのサンプルを次に示します。 原文の言語が指定されていないため、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 - Advanced API REST の例

Cloud Translation - Advanced API を使用して REST 呼び出しを行い、 TranslateText を、モデルを指定しないか、 NMT モデルを 明示的にリクエストすることで、デフォルトの NMT モデルを使用して実行できます。リクエスト フィールドは、次のように request.json などの名前の 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 - Advanced 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"
}