使用 Translation API 與 Python

1. 總覽

1e2217da0416d129.png

Translation API 提供簡單的程式介面,可使用最先進的神經機器翻譯技術,將任意字串動態翻譯成任何支援的語言。如果原文語言不明,也可以使用這項功能偵測語言。

在本教學課程中,您將使用 Python 搭配 Translation API。涵蓋的概念包括如何列出可用語言、翻譯文字,以及偵測指定文字的語言。

課程內容

  • 如何設定環境
  • 如何列出可用語言
  • 如何翻譯文字
  • 如何偵測語言

軟硬體需求

  • 具備 Google Cloud 專案
  • ChromeFirefox 瀏覽器
  • 熟悉 Python

問卷調查

您會如何使用本教學課程?

僅閱讀 閱讀並完成練習

你對 Python 的使用體驗如何?

新手 中級 熟練

你對 Google Cloud 服務的體驗滿意嗎?

新手 中級 熟練

2. 設定和需求條件

自修實驗室環境設定

  1. 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 專案名稱是這個專案參與者的顯示名稱。這是 Google API 未使用的字元字串。你隨時可以更新。
  • 專案 ID 在所有 Google Cloud 專案中都是不重複的,而且設定後即無法變更。Cloud 控制台會自動產生專屬字串,通常您不需要在意該字串為何。在大多數程式碼研究室中,您需要參照專案 ID (通常標示為 PROJECT_ID)。如果您不喜歡產生的 ID,可以產生另一個隨機 ID。你也可以嘗試使用自己的名稱,看看是否可用。完成這個步驟後就無法變更,且專案期間會維持不變。
  • 請注意,有些 API 會使用第三個值,也就是「專案編號」。如要進一步瞭解這三種值,請參閱說明文件
  1. 接著,您需要在 Cloud 控制台中啟用帳單,才能使用 Cloud 資源/API。完成這個程式碼研究室的費用不高,甚至可能完全免費。如要關閉資源,避免在本教學課程結束後繼續產生費用,請刪除您建立的資源或專案。Google Cloud 新使用者可參加價值$300 美元的免費試用計畫。

啟動 Cloud Shell

雖然您可以透過筆電遠端操作 Google Cloud,但在本程式碼研究室中,您將使用 Cloud Shell,這是 Cloud 中執行的指令列環境。

啟用 Cloud Shell

  1. 在 Cloud 控制台,點選「啟用 Cloud Shell」 圖示 853e55310c205094.png

3c1dabeca90e44e5.png

如果您是首次啟動 Cloud Shell,系統會顯示中繼畫面,說明這個指令列環境。如果出現中繼畫面,請按一下「繼續」

9c92662c6a846a5c.png

佈建並連至 Cloud Shell 預計只需要幾分鐘。

9f0e51b578fecce5.png

這部虛擬機器已載入所有必要的開發工具,並提供永久的 5 GB 主目錄,而且可在 Google Cloud 運作,大幅提升網路效能並強化驗證功能。本程式碼研究室幾乎所有工作都可在瀏覽器上完成。

連至 Cloud Shell 後,您應該會看到驗證已完成,專案也已設為獲派的專案 ID。

  1. 在 Cloud Shell 中執行下列指令,確認您已通過驗證:
gcloud auth list

指令輸出

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. 在 Cloud Shell 中執行下列指令,確認 gcloud 指令知道您的專案:
gcloud config list project

指令輸出

[core]
project = <PROJECT_ID>

如未設定,請輸入下列指令手動設定專案:

gcloud config set project <PROJECT_ID>

指令輸出

Updated property [core/project].

3. 環境設定

如要開始使用 Translation API,請先在 Cloud Shell 中執行下列指令來啟用 API:

gcloud services enable translate.googleapis.com

畫面應如下所示:

Operation "operations/..." finished successfully.

現在您可以使用 Translation API 了!

設定下列環境變數 (供應用程式使用):

export PROJECT_ID=$(gcloud config get-value core/project)

echo "PROJECT_ID: $PROJECT_ID"

前往主目錄:

cd ~

建立 Python 虛擬環境,隔離依附元件:

virtualenv venv-translate

啟動虛擬環境:

source venv-translate/bin/activate

安裝 IPython 和 Translation API 用戶端程式庫:

pip install ipython google-cloud-translate

畫面應如下所示:

...
Installing collected packages: ..., ipython, google-cloud-translate
Successfully installed ... google-cloud-translate-3.16.0 ...

現在,您可以使用 Translation API 用戶端程式庫了!

在接下來的步驟中,您會使用名為 IPython 的互動式 Python 解譯器,這個解譯器已在先前的步驟中安裝。在 Cloud Shell 中執行 ipython,啟動工作階段:

ipython

畫面應如下所示:

Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.27.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

將下列程式碼複製到 IPython 工作階段:

from os import environ

from google.cloud import translate


PROJECT_ID = environ.get("PROJECT_ID", "")
assert PROJECT_ID
PARENT = f"projects/{PROJECT_ID}"

您已準備好發出第一個要求,並列出支援的語言...

4. 列出支援的語言

在本節中,您將列出 Translation API 中所有可用的語言。

如要列出可用語言,請將下列程式碼複製到 IPython 工作階段:

def print_supported_languages(display_language_code: str):
    client = translate.TranslationServiceClient()

    response = client.get_supported_languages(
        parent=PARENT,
        display_language_code=display_language_code,
    )

    languages = response.languages
    print(f" Languages: {len(languages)} ".center(60, "-"))
    for language in languages:
        language_code = language.language_code
        display_name = language.display_name
        print(f"{language_code:10}{display_name}")
    

呼叫函式:

print_supported_languages("en")

您應該會看到如下內容:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanian
am        Amharic
ar        Arabic
hy        Armenian
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

以下是顯示語言設為法文時的畫面:

print_supported_languages("fr")

您應該會看到相同的清單,但會以法文名稱排序,如下所示:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanais
de        Allemand
am        Amharique
en        Anglais
...
vi        Vietnamien
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zoulou

你可以嘗試使用其他語言代碼

摘要

在這個步驟中,您已列出 Translation API 中的所有可用語言。如需支援語言的完整清單,請前往語言支援頁面。

5. 翻譯文字

您可以使用 Translation API,將文字從某種語言翻譯成另一種語言。系統會使用神經機器翻譯 (NMT) 模型翻譯文字。如果 NMT 模型不支援要求的語言翻譯組合,系統會使用詞組式機器翻譯 (PBMT) 模型。如要進一步瞭解 Google 翻譯和翻譯模型,請參閱 NMT 公告文章

如要翻譯文字,請將下列程式碼複製到 IPython 工作階段:

def translate_text(text: str, target_language_code: str) -> translate.Translation:
    client = translate.TranslationServiceClient()

    response = client.translate_text(
        parent=PARENT,
        contents=[text],
        target_language_code=target_language_code,
    )

    return response.translations[0]
    

呼叫函式,以不同語言翻譯相同文字:

text = "Hello World!"
target_languages = ["tr", "de", "es", "it", "el", "zh", "ja", "ko"]

print(f" {text} ".center(50, "-"))
for target_language in target_languages:
    translation = translate_text(text, target_language)
    source_language = translation.detected_language_code
    translated_text = translation.translated_text
    print(f"{source_language}{target_language} : {translated_text}")
    

您應該會看到以下內容:

------------------ Hello World! ------------------
en → tr : Selam Dünya!
en → de : Hallo Welt!
en → es : ¡Hola Mundo!
en → it : Ciao mondo!
en → el : Γεια σου Κόσμο!
en → zh : 你好世界!
en → ja : 「こんにちは世界」
en → ko : 안녕하세요!

摘要

在這個步驟中,您已使用 Translation API 將文字翻譯成多種語言。進一步瞭解如何翻譯文字

6. 偵測語言

您也可以使用 Translation API 偵測文字字串的語言。

將下列程式碼複製到 IPython 工作階段:

def detect_language(text: str) -> translate.DetectedLanguage:
    client = translate.TranslationServiceClient()

    response = client.detect_language(parent=PARENT, content=text)

    return response.languages[0]
    

呼叫函式來偵測不同句子的語言:

sentences = [
    "Selam Dünya!",
    "Hallo Welt!",
    "¡Hola Mundo!",
    "Ciao mondo!",
    "Γεια σου Κόσμο!",
    "你好世界!",
    "「こんにちは世界」",
    "안녕하세요!",
]
for sentence in sentences:
    language = detect_language(sentence)
    confidence = language.confidence
    language_code = language.language_code
    print(
        f"Confidence: {confidence:4.0%}",
        f"Language: {language_code:5}",
        sentence,
        sep=" | ",
    )
    

您應該會看到以下內容:

Confidence: 100% | Language: tr    | Selam Dünya!
Confidence:  81% | Language: de    | Hallo Welt!
Confidence: 100% | Language: es    | ¡Hola Mundo!
Confidence: 100% | Language: it    | Ciao mondo!
Confidence: 100% | Language: el    | Γεια σου Κόσμο!
Confidence: 100% | Language: zh-CN | 你好世界!
Confidence: 100% | Language: ja    | 「こんにちは世界」
Confidence: 100% | Language: ko    | 안녕하세요!

摘要

在這個步驟中,您已使用 Translation API 偵測一段文字的語言。進一步瞭解偵測語言

7. 恭喜!

1e2217da0416d129.png

您已學會如何使用 Python 呼叫 Translation API!

清理

如要清除開發環境,請在 Cloud Shell 中執行下列指令:

  • 如果仍在 IPython 工作階段中,請返回 Shell:exit
  • 停止使用 Python 虛擬環境:deactivate
  • 刪除虛擬環境資料夾:cd ~ ; rm -rf ./venv-translate

如要刪除 Google Cloud 專案,請在 Cloud Shell 中執行下列操作:

  • 擷取目前的專案 ID:PROJECT_ID=$(gcloud config get-value core/project)
  • 確認這是要刪除的專案:echo $PROJECT_ID
  • 刪除專案:gcloud projects delete $PROJECT_ID

瞭解詳情

授權

這項內容採用的授權為 Creative Commons 姓名標示 2.0 通用授權。