1. 總覽
Translation API 提供簡單的程式輔助介面,可使用最先進的神經機器翻譯技術,將任意字串動態翻譯成任何支援的語言。在原文語言不明的情況下,這項功能也可用來偵測語言。
在這個教學課程中,您會使用 Python 搭配 Translation API。概念包括如何列出可用語言、翻譯文字,以及偵測特定文字的語言。
課程內容
- 如何設定環境
- 如何列出支援的語言
- 如何翻譯文字
- 如何偵測語言
軟硬體需求
問卷調查
您會如何使用這個教學課程?
您對 Python 的使用體驗有何評價?
針對使用 Google Cloud 服務的經驗,您會給予什麼評價?
2. 設定和需求
自修環境設定
- 登入 Google Cloud 控制台,建立新專案或重複使用現有專案。如果您還沒有 Gmail 或 Google Workspace 帳戶,請先建立帳戶。
- 「專案名稱」是這項專案參與者的顯示名稱。這是 Google API 未使用的字元字串。您可以隨時更新付款方式。
- 所有 Google Cloud 專案的專案 ID 均不得重複,而且設定後即無法變更。Cloud 控制台會自動產生一個不重複的字串。但通常是在乎它何在在大部分的程式碼研究室中,您必須參照專案 ID (通常為
PROJECT_ID
)。如果您對產生的 ID 不滿意,可以隨機產生一個 ID。或者,您也可以自行嘗試,看看是否支援。在這個步驟後,這個名稱即無法變更,而且在專案期間內仍會保持有效。 - 資訊中的第三個值是專案編號,部分 API 會使用這個編號。如要進一步瞭解這三個值,請參閱說明文件。
- 接下來,您需要在 Cloud 控制台中啟用計費功能,才能使用 Cloud 資源/API。執行本程式碼研究室不會產生任何費用 (如果有的話)。如要關閉資源,以免產生本教學課程結束後產生的費用,您可以刪除自己建立的資源或刪除專案。新使用者符合 $300 美元免費試用計畫的資格。
啟動 Cloud Shell
雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Cloud Shell,這是一種在 Cloud 中執行的指令列環境。
啟用 Cloud Shell
- 在 Cloud 控制台中,按一下「啟用 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. 環境設定
開始使用 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.11.0 ...
您現在可以使用 Translation API 用戶端程式庫了!
在後續步驟中,您將使用名為 IPython 的互動式 Python 解譯器,此語言是在之前的步驟中安裝。在 Cloud Shell 中執行 ipython
即可啟動工作階段:
ipython
畫面應如下所示:
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.12.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: 136 ---------------------- af Afrikaans ak Akan sq Albanian am Amharic ar Arabic ... cy Welsh xh Xhosa yi Yiddish yo Yoruba zu Zulu
查看您使用法文的顯示語言有哪些內容:
print_supported_languages("fr")
畫面應該會顯示相同的清單,並以法文名稱排序,如下所示:
---------------------- Languages: 136 ---------------------- af Afrikaans sq Albanais de Allemand am Amharique en Anglais ... vi Vietnamien xh Xhosa yi Yiddish yo Yorouba 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: 80% | 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 工作階段,請返回殼層:
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
授權
這項內容採用的是創用 CC 姓名標示 2.0 通用授權。