1. 概览
Translation API 提供了一个简单的程序化接口,可使用先进的神经机器翻译技术将任意字符串动态翻译成任何受支持的语言。在源语言未知的情况下,还可以用来检测语言。
在本教程中,您将将 Translation API 与 Python 搭配使用。涵盖的概念包括如何列出可用语言、翻译文本以及检测给定文本的语言。
学习内容
- 如何设置环境
- 如何列出可用语言
- 如何翻译文字
- 如何检测语言
所需条件
调查问卷
您将如何使用本教程?
您如何评价使用 Python 的体验?
您如何评价自己在 Google Cloud 服务方面的经验水平?
2. 设置和要求
自定进度的环境设置
- 登录 Google Cloud 控制台,然后创建一个新项目或重复使用现有项目。如果您还没有 Gmail 或 Google Workspace 账号,则必须创建一个。
- 项目名称是此项目参与者的显示名称。它是 Google API 尚未使用的字符串。您可以随时对其进行更新。
- 项目 ID 在所有 Google Cloud 项目中是唯一的,并且是不可变的(一经设置便无法更改)。Cloud 控制台会自动生成一个唯一字符串;通常情况下,您无需关注该字符串。在大多数 Codelab 中,您都需要引用项目 ID(通常用
PROJECT_ID
标识)。如果您不喜欢生成的 ID,可以再随机生成一个 ID。或者,您也可以尝试自己的项目 ID,看看是否可用。完成此步骤后便无法更改该 ID,并且此 ID 在项目期间会一直保留。 - 此外,还有第三个值,即部分 API 使用的项目编号,供您参考。如需详细了解所有这三个值,请参阅文档。
- 接下来,您需要在 Cloud 控制台中启用结算功能,以便使用 Cloud 资源/API。运行此 Codelab 应该不会产生太多的费用(如果有的话)。若要关闭资源以避免产生超出本教程范围的结算费用,您可以删除自己创建的资源或删除项目。Google Cloud 新用户符合参与 300 美元免费试用计划的条件。
启动 Cloud Shell
虽然您可以通过笔记本电脑对 Google Cloud 进行远程操作,但在此 Codelab 中,您将使用 Cloud Shell,这是一个在云端运行的命令行环境。
激活 Cloud Shell
- 在 Cloud Console 中,点击激活 Cloud Shell
。
如果这是您首次启动 Cloud Shell,系统会显示一个中间屏幕,介绍 Cloud Shell 是什么。如果系统显示中间屏幕,请点击继续。
预配和连接到 Cloud Shell 只需花几分钟时间。
此虚拟机已加载所需的所有开发工具。它提供了一个持久的 5 GB 主目录,并且在 Google Cloud 中运行,大大增强了网络性能和身份验证。只需使用一个浏览器即可完成本 Codelab 中的大部分工作。
在连接到 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.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. 恭喜!
您已了解如何使用 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 Attribution 2.0 通用许可授权。