テキスト翻訳

Vertex AI Translation サービスを使用すると、ある言語で記述されたテキストを、サポートされている他の言語に翻訳できます。

このページでは、Google Distributed Cloud(GDC)エアギャップ環境で Vertex AI Translation API を使用してサンプルテキストを翻訳する方法について説明します。

始める前に

Vertex AI Translation API の使用を開始する前に、Vertex AI Translation API が有効になっているプロジェクトと、適切な認証情報が必要です。また、この API の呼び出しを支援するクライアント ライブラリをインストールすることもできます。詳細については、 翻訳プロジェクトを設定するをご覧ください。

テキストを翻訳する

translateText メソッドは、特定の言語の入力テキストを受け取り、翻訳されたテキストを別の言語で返します。入力には、プレーン テキストまたは HTML テキストを入力できます。

HTML テキストを入力した場合、translateText メソッドはタグを翻訳せずに、HTML タグ間のテキストのみを翻訳します。ただし、alt 属性など、HTML5 タグの属性は翻訳されます。HTML5 タグと属性の使用例は、翻訳からテキストを除外する構文で使用されています。 出力には、翻訳されていない HTML タグが保持され、その間に翻訳されたテキストが含まれます。

Vertex AI Translation 事前トレーニング済み API に curl リクエストを行います。それ以外の場合は、Python スクリプトから Vertex AI Translation 事前トレーニング済み API を操作して、テキストをある言語から別の言語に翻訳します。

次の例は、入力テキストをある言語から別の言語に翻訳する方法を示しています。

curl

curl リクエストを行う手順は次のとおりです。

  1. 認証トークンを取得します

  2. 次のリクエストを行います。

curl -vv -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID:translateText -d '{"parent": "projects/PROJECT_ID", "source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE", "contents": ["INPUT_TEXT"]}'

次のように置き換えます。

mime_type フィールドを使用して、ファイルの種類を指定します。mime_type フィールドを次のいずれかの値に設定します。

  • text/plain: 入力がプレーン テキストです。
  • text/html: 入力が HTML テキストです。

mime_type フィールドが空の場合、デフォルト値は text/html です。

次の例では、mime_type フィールドを使用しています。

curl -vv -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID:translateText -d '{"mime_type": "text/html", "parent": "projects/PROJECT_ID", "source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE", "contents": ["INPUT_TEXT"]}'

出力には翻訳されたテキストが返されます。

Python

Python スクリプトから Vertex AI Translation サービスを使用する手順は次のとおりです。

  1. Vertex AI Translation クライアント ライブラリの最新バージョンをインストールします

  2. Python スクリプトに必要な環境変数を設定します

  3. API リクエストを認証します

  4. 作成した Python スクリプトに次のコードを追加します。

    from google.cloud import translate
    import google.auth
    from google.auth.transport import requests
    from google.api_core.client_options import ClientOptions
    
    audience = "https://ENDPOINT:443"
    api_endpoint="ENDPOINT:443"
    
    def translate_client(creds):
      opts = ClientOptions(api_endpoint=api_endpoint)
      return translate.TranslationServiceClient(credentials=creds, client_options=opts)
    
    def main():
      creds = None
      try:
        creds, project_id = google.auth.default()
        creds = creds.with_gdch_audience(audience)
        req = requests.Request()
        creds.refresh(req)
        print("Got token: ")
        print(creds.token)
      except Exception as e:
        print("Caught exception" + str(e))
        raise e
      return creds
    
    def translate_func(creds):
      tc = translate_client(creds)
      req = {
        "parent": "projects/PROJECT_ID",
        "source_language_code": "SOURCE_LANGUAGE",
        "target_language_code": "TARGET_LANGUAGE",
        "mime_type": "text/plain",
        "contents": ["INPUT_TEXT"]
      }
    
      resp = tc.translate_text(req)
      print(resp)
    
    if __name__=="__main__":
      creds = main()
      translate_func(creds)
    

    次のように置き換えます。

    mime_type フィールドを使用して、ファイルの種類を指定します。mime_type フィールドを次のいずれかの値に設定します。

    • text/plain: 入力がプレーン テキストです。
    • text/html: 入力が HTML テキストです。

    mime_type フィールドが空の場合、デフォルト値は text/html です。

  5. Python スクリプトを保存します。

  6. Python スクリプトを実行してテキストを翻訳します。

    python SCRIPT_NAME
    

    SCRIPT_NAME は、Python スクリプトに付けた名前(translation.py など)に置き換えます。

translateText メソッドの詳細については、Python クライアント ライブラリをご覧ください。

翻訳からテキストを除外する

リクエストの contents フィールドで次のいずれかの HTML タグを使用して、テキストの一部を翻訳から除外します。

  • <span translate="no">"TEXT"</span>
  • <span class="notranslate">"TEXT"</span>

TEXT は、翻訳から除外するテキストの部分に置き換えます。

たとえば、スペイン語で次の入力テキストがあるとします。

Hola, esto es una prueba.

英語に翻訳されたテキストは次のようになります。

Hello, this is a test.

入力テキストから Hola, を除外して、テキストの次の部分のみを翻訳するとします。

esto es una prueba.

英語に翻訳されたテキストは次のようになります。

this is a test.

HTML タグを使用して、翻訳からテキストを除外します。たとえば、次の curlリクエストでは、<span class="notranslate">"TEXT"</span> タグを使用して、テキストを英語に翻訳するときに、スペイン語の前の入力テキストからHola,を除外します。

curl -vv -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID:translateText -d '{"parent": "projects/PROJECT_ID", "source_language_code": "es", "target_language_code": "en", "contents": ["<span class=\"notranslate\">\"Hola,\"</span>\"esto es una prueba.\""]}'

用語集を使用して翻訳する

用語集の単語を使用してテキストを翻訳するには、用語集を作成する必要があります。

  1. 次の request_glossary.json ファイルを保存します。

    cat <<- EOF > request_glossary.json
    {
    "sourceLanguageCode": "SOURCE_LANGUAGE",
    "targetLanguageCode": "SOURCE_LANGUAGE",
    "contents": "TEXT",
    "glossaryConfig": {
      "glossary": "projects/PROJECT_ID/glossaries/GLOSSARY_ID",
      "ignoreCase": IGNORE_CASE_BOOLEAN,
      "contextual_translation_enabled": CONTEXTUAL_BOOLEAN
    }
    }
    EOF
    

    次のように置き換えます。

  2. 次のリクエストを行います。

    curl -vv -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID:translateText -d @request_glossary.json
    

例と予想される出力:

リクエスト:

{
  "sourceLanguageCode": "es",
  "targetLanguageCode": "en",
  "contents": "La novela cuenta la historia de una joven que viaja a Madrid",
  "glossaryConfig": {
    "glossary": "projects/test-project/glossaries/GLOSSARY_ID",
    "ignoreCase": true,
    "contextual_translation_enabled": true
  }
}

対応:

{"translations":[
  {
    "translatedText":"The novel tells the story of a young woman who travels to Madrid"}],
    "glossaryTranslations":[{"translatedText":"The novel account the story of a young woman who travels to Madrid",
    "glossaryConfig":
      {
        "glossary":"projects/test-project/glossaries/GLOSSARY_ID"
      }}
  ]}

translations フィールドには、用語集を適用する前の通常の機械翻訳が含まれています。glossaryTranslations フィールドには、用語集を適用した後の翻訳が含まれています。contextual_translation_enabled フィールドを true に設定すると、レスポンスには glossaryTranslations フィールドのみが含まれ、translations フィールドは含まれません。

言語を検出する

detectLanguage メソッドは、HTTP リクエストを送信して、テキスト文字列の言語を返します。

たとえば、次のリクエストでは、入力テキスト Hello, this is a test から英語が言語として検出されます。

curl

curl -vv -X POST -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID:detectLanguage -d '{"parent": "projects/PROJECT_ID", "content": "Hello, this is a test"}'

オペレーションを取得する

getOperation メソッドは、 長時間実行オペレーションの最新の状態を返します。 このメソッドを使用して、Vertex AI Translation API サービスによって生成されたオペレーションの結果を取得します。このメソッドを使用するには、 プロジェクト ID と Vertex AI Translation エンドポイントを指定します。

たとえば、次のリクエストは、プロジェクトで実行されている オペレーション(用語集の作成など) の状態を返します。

curl

curl -vv -X GET -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID/operations/PROJECT_ID

処理の一覧を表示します

listOperations メソッドは、リクエストで指定されたフィルタに一致する 長時間実行オペレーション のリストを返します。このメソッドを使用するには、 プロジェクト ID と Vertex AI Translation エンドポイントを指定します。

たとえば、次のリクエストは、プロジェクトで実行されているオペレーションのリストを返し、ページサイズを 1 ページあたり 10 件の結果に制限します。

curl

curl -vv -X GET -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID/operations?page_size=10

サポートされている言語を取得する

supportedLanguages メソッドは、Vertex AI Translation API がサポートする言語のリストを返します。

たとえば、次のリクエストは、 Vertex AI Translation エンドポイントを指定して、サポートされている言語を返します。

curl

curl -vv -X GET -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID/locations/PROJECT_ID/supportedLanguages

サポートされている言語の完全なリストについては、Vertex AI Translation でサポートされている言語をご覧ください。