Vertex AI Translation サービスを使用すると、ある言語で記述されたテキストを、 サポートされている他の言語に翻訳できます。
このページでは、Google Distributed Cloud(GDC)エアギャップ環境で Vertex AI Translation API を使用してサンプルテキストを翻訳する方法について説明します。
始める前に
テキストを翻訳するには、プロジェクト IAM 管理者に連絡して、プロジェクト名前空間で AI Translation
デベロッパー(ai-translation-developer)ロールをリクエストしてください。
このロールの詳細については、 IAM 権限を準備するをご覧ください。
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 でサポートされている言語をご覧ください。