1. 總覽
Translation API 提供簡單的程式介面,可使用先進的神經機器翻譯技術,將任意字串動態翻譯成任何支援的語言。在原文語言不明的情況下,您也可以使用這個 API 偵測語言。
在本教學課程中,您將使用 Translation API 與 Python。涵蓋的概念包括如何列出可用語言、翻譯文字,以及偵測特定文字的語言。
課程內容
- 如何設定環境
- 如何列出可用語言
- 如何翻譯文字
- 如何偵測語言
軟硬體需求
問卷調查
您要如何使用這個教學課程?
請評估您使用 Python 的體驗。
請評分你對 Google Cloud 服務的使用體驗。
2. 設定和需求
自助式環境設定
- 登入 Google Cloud 控制台,然後建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請務必建立帳戶。
- 「Project name」是這個專案參與者的顯示名稱。這是 Google API 不會使用的字元字串。您隨時可以更新。
- 專案 ID 在所有 Google Cloud 專案中都是不重複的值,且無法變更 (設定後即無法變更)。Cloud 控制台會自動產生專屬字串,您通常不需要特別在意。在大多數程式碼研究室中,您都需要參照專案 ID (通常會以
PROJECT_ID
表示)。如果您不喜歡系統產生的 ID,可以隨機產生另一個 ID。或者,您也可以自行嘗試,看看是否可用。這項設定在這個步驟後就無法變更,並會在整個專案期間維持不變。 - 提醒您,有些 API 會使用第三個值「專案編號」。如要進一步瞭解這三個值,請參閱說明文件。
- 接下來,您需要在 Cloud 控制台中啟用帳單功能,才能使用 Cloud 資源/API。執行這個程式碼研究室不會產生太多費用,甚至可能完全不會產生費用。如要關閉資源,避免在本教學課程結束後繼續產生費用,您可以刪除建立的資源或專案。Google Cloud 新使用者可享有價值 $300 美元的免費試用期。
啟動 Cloud Shell
雖然 Google Cloud 可透過筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Cloud Shell,這是在雲端運作的指令列環境。
啟用 Cloud Shell
- 在 Cloud 控制台中,按一下「啟用 Cloud Shell」 圖示
。
如果這是您首次啟動 Cloud Shell,系統會顯示中介畫面,說明 Cloud Shell 的功能。如果您看到中介畫面,請按一下「繼續」。
佈建並連線至 Cloud Shell 的作業只需幾分鐘的時間。
這個虛擬機器會載入所有必要的開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,可大幅提升網路效能和驗證功能。您可以在瀏覽器中完成本程式碼研究室的大部分工作,甚至是全部工作。
連線至 Cloud Shell 後,您應會發現自己通過驗證,且專案已設為您的專案 ID。
- 在 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`
- 在 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. 恭喜!
您已瞭解如何使用 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
瞭解詳情
- Cloud Translation 說明文件:https://cloud.google.com/translate/docs
- Google Cloud 上的 Python:https://cloud.google.com/python
- Python 適用的 Cloud 用戶端程式庫:https://github.com/googleapis/google-cloud-python
授權
這項內容採用的授權為 Creative Commons 姓名標示 2.0 通用授權。