神經機器翻譯 (NMT) 模型
Google 的標準神經機器翻譯 (NMT) 是從 Google 於 2016 年 11 月推出的神經網路翻譯系統演變而來,並經過多次改良。這項功能可以即時翻譯多種語言。
型號 ID 為 general/nmt。
您可以透過 Cloud Translation - Basic API 或 Cloud Translation - Advanced API,存取未經修改的 NMT 模型。您也可以使用 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 模型TranslateText,方法是不指定模型,或是明確要求使用 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"
}