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 リクエストを行う手順は次のとおりです。
次のリクエストを行います。
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"]}'
次のように置き換えます。
TOKEN: 取得した認証トークン。ENDPOINT: 組織で使用する Vertex AI Translation エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。PROJECT_ID: プロジェクト ID。SOURCE_LANGUAGE: 入力テキストの言語コード。サポートされている言語とそれぞれの言語コードの一覧をご覧ください。TARGET_LANGUAGE: テキストの翻訳先の言語コード。サポートされている言語とそれぞれの言語コードのリストをご覧ください。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 サービスを使用する手順は次のとおりです。
作成した 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)次のように置き換えます。
ENDPOINT: 組織で使用する Vertex AI Translation エンドポイント。詳細については、サービス ステータスとエンドポイントを表示するをご覧ください。PROJECT_ID: プロジェクト ID。SOURCE_LANGUAGE: 入力テキストの言語コード。サポートされている言語とそれぞれの言語コードの一覧をご覧ください。TARGET_LANGUAGE: テキストの翻訳先の言語コード。サポートされている言語とそれぞれの言語コードのリストをご覧ください。INPUT_TEXT: 原文の言語の入力テキスト。
mime_typeフィールドを使用して、ファイルの種類を指定します。mime_typeフィールドを次のいずれかの値に設定します。text/plain: 入力がプレーン テキストであることを示します。text/html: 入力が HTML テキストである。
mime_typeフィールドが空の場合、デフォルト値はtext/htmlです。Python スクリプトを保存します。
Python スクリプトを実行してテキストを翻訳します。
python SCRIPT_NAMESCRIPT_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.\""]}'
用語集を使用して翻訳する
用語集の単語を使用してテキストを翻訳するには、用語集を作成する必要があります。
次の
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次のように置き換えます。
PROJECT_ID: プロジェクト ID。SOURCE_LANGUAGE: ドキュメントの作成に使用されている言語。サポートされている言語とその言語コードのリストをご覧ください。TARGET_LANGUAGE: ドキュメントの翻訳先の言語。サポートされている言語とその言語コードのリストをご覧ください。TEXT: 用語集の単語を含むテキストを翻訳するGLOSSARY_ID: 用語集の ID(例:G11111111114524)
次のリクエストを行います。
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 でサポートされている言語をご覧ください。