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