使用 Translation API 與 Python

1. 總覽

1e2217da0416d129.png

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

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

課程內容

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

軟硬體需求

  • Google Cloud 專案
  • ChromeFirefox 等瀏覽器
  • 熟悉如何使用 Python

問卷調查

您要如何使用這個教學課程?

只閱讀 閱讀並完成練習

請評估您使用 Python 的體驗。

新手 中級 熟練

請評分你對 Google Cloud 服務的使用體驗。

新手 中級 熟練

2. 設定和需求

自助式環境設定

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 「Project name」是這個專案參與者的顯示名稱。這是 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 Shell

  1. 在 Cloud 控制台中,按一下「啟用 Cloud Shell」 圖示 853e55310c205094.png

3c1dabeca90e44e5.png

如果這是您首次啟動 Cloud Shell,系統會顯示中介畫面,說明 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. 環境設定

您必須先在 Cloud Shell 中執行下列指令來啟用 API,才能開始使用 Translation 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 用戶端程式庫了!

在後續步驟中,您將使用互動式 Python 解譯器 IPython,這是您在先前步驟中安裝的工具。在 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 通用授權。