术语表是一种自定义字典,用于确保 Cloud Translation API 以一致的方式对客户特定领域的术语进行翻译。这通常涉及指定如何翻译命名实体。
术语表用例可能涉及以下内容:
- 产品名称:例如,“Google Home”必须翻译为“Google Home”。
- 有歧义的字词:例如,“bat”一词既可能表示体育用品,也可能表示动物。如果您知道自己正在翻译有关体育的字词,您可能需要使用术语表向 Cloud Translation API 提供“bat”的体育用品译文,而非动物相关译文。
- 外来词:例如,法语的“bouillabaisse”翻译为英语的“bouillabaisse”。十九世纪,英语借用了法语中的“bouillabaisse”一词。一个说英语的人,如果欠缺法国文化背景知识,可能不知道 bouillabaisse 是一种浓味鱼肉汤。术语表可以替换译文,以便将法语的“bouillabaisse”翻译为英语的“fish stew”。
准备工作
在开始使用 Cloud Translation API 之前,您必须有一个启用了 Cloud Translation API 的项目,以及相应的凭据。您还可以安装常用编程语言的客户端库,以便调用 API。
如需了解详情,请参阅设置页面。
所需权限
要使用术语表,您的服务帐号需要具备特定于术语表的权限。您可以使用预定义的 IAM 角色(例如 Cloud Translation API Editor (roles/cloudtranslate.editor
))之一向服务帐号授予角色,或者创建能够授予所需权限的自定义角色。您可以参阅 IAM 权限参考文档,了解所有 Cloud Translation API 权限。Translation 权限以 cloudtranslate
开头。
要创建术语表,您还需要具备读取术语表所在的 Cloud Storage 存储分区内中的文件的权限。您可以使用预定义的 IAM 角色之一(例如 Storage Object Viewer (roles/storage.objectViewer
))向服务帐号授予角色,或者创建可授予读取对象权限的自定义角色。
如需了解如何向角色添加帐号,请参阅授予、更改、撤消对资源的访问权限。
创建术语表
术语表中的术语可以是单个词条(单词)或短语(通常少于五个单词)。每个项目的独立术语表数量的当前上限为 1000。
如需使用术语表,您需要执行以下主要步骤:
一个项目可以有多个术语表。您可以获取可用术语表的列表,还可以删除不再需要的术语表。
创建术语表文件
从根本上说,术语表是一个文本文件,其中每一行包含对应术语的多种语言版本翻译。Cloud Translation API 既支持使用单向术语表指定一对源语言和目标语言所需的翻译,也支持使用等效术语集确定多种语言版本的等效术语。
一个术语表输入文件中的术语总数(包括所有语言的所有术语)不能超过 10485760 个 UTF-8 字节。术语表中的任何一个术语都必须小于 1024 个 UTF-8 字节。长度超过 1024 个字节的术语会被忽略。
单向术语表
Cloud Translation API 接受 TSV、CSV 或 TMX 文件。
制表符分隔值 (TSV)
Cloud Translation API 支持以制表符分隔的文件,其中每一行都采用以下格式:
Term in source language
制表符Term in target language
例如:
account\tcuenta directions\tindicaciones
制表符分隔的源数据不包含用于标识源语言和目标语言的语言代码。您可在创建术语库时标识源语言和目标语言。
逗号分隔值 (CSV)
对于 CSV 文件中的每一行,请使用英文逗号 (,
) 分隔源语言术语和目标语言术语,如以下示例所示:
account,cuenta directions,indicaciones
请勿在 CSV 文件中添加标题行以标识源语言和目标语言。您可以在创建术语库时标识它们。
TMX 格式
TMX 格式是一种用于提供源文本和目标译文的标准 XML 格式。Cloud Translation API 支持采用 TMX 1.4 版格式的输入文件。此示例说明了所需的结构:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE tmx SYSTEM "tmx14.dtd">
<tmx version="1.4">
<header segtype="sentence" o-tmf="UTF-8"
adminlang="en" srclang="en" datatype="PlainText"/>
<body>
<tu>
<tuv xml:lang="en">
<seg>account</seg>
</tuv>
<tuv xml:lang="es">
<seg>cuenta</seg>
</tuv>
</tu>
<tu>
<tuv xml:lang="en">
<seg>directions</seg>
</tuv>
<tuv xml:lang="es">
<seg>indicaciones</seg>
</tuv>
</tu>
</body>
</tmx>
在格式正确的 TMX 文件中,<header>
元素必须使用 srclang
特性标识源语言,并且每个 <tuv>
元素都必须使用 xml:lang
特性标识所含文本的语言。您可以使用 ISO-639-1 代码来标识源语言和目标语言。
所有 <tu>
元素必须包含一对具有相同源语言和目标语言的 <tuv>
元素。如果一个 <tu>
元素包含两个以上的 <tuv>
元素,则 Cloud Translation API 只会处理与源语言和目标语言匹配的第一对 <tuv>
并忽略其余 <tuv> 元素。
如果一个 <tu>
元素没有匹配的 <tuv>
元素对,则 Cloud Translation API 会跳过无效的 <tu>
元素。
Cloud Translation API 在处理 <seg>
元素之前,会先剥离其周围的标记。如果一个 <tuv>
元素包含多个 <seg>
元素,则 Cloud Translation API 会将其中的文本连接成一个元素,并在它们之间留一个空格。
如果文件包含上文没有提及的 XML 标记,则 Cloud Translation API 将忽略这些标记。
如果文件不符合正确的 XML 和 TMX 格式,例如缺少结束标记或 <tmx>
元素,则 Cloud Translation API 将取消处理。如果 Cloud Translation API 跳过 1024 个以上无效的 <tu>
元素,那么系统也会取消处理。
等效术语集 (CSV)
对于等效术语集,Cloud Translation API 仅接受 CSV 格式的文件。如需定义等效术语集,您可以创建一个多列 CSV 文件,其中每一行列出一个术语表术语的多种语言版本翻译。
此文件中的第一行是标题行,其中使用 ISO-639-1 或 BCP-47 语言代码标识每一列对应的语言。您还可以选择添加词性 (pos) 列和说明 (description) 列。
后续各行包含标题中所标识语言版本的等效术语表术语。如果该术语仅提供了部分语言版本,则可以将某些列留空。
创建术语表资源
确定等效术语表术语以后,您可以通过创建术语表资源,使术语表文件可用于 Cloud Translation API。
单向术语表
创建单向术语表时,必须通过指定源语言 (source_language_code
) 和目标语言 (target_language_code
) 来指示语言对 (language_pair
)。以下示例使用的是 REST API 和命令行,但您也可以使用客户端库创建单向术语表。
REST 和命令行
创建新的术语表时,需要提供术语表 ID(资源名称)。 例如:projects/my-project/locations/us-central1/glossaries/my-en-to-ru-glossary其中
my-project
是 project-number-or-id,my-en-ru-glossary
是您提供的 glossary-id。在使用下面的请求数据之前,请先进行以下替换:
- project-number-or-id:您的 Google Cloud 项目编号或 ID
- glossary-id:您的术语库 ID,例如 my_en_ru_glossary
- bucket-name:您的术语库文件所在的存储分区的名称
- glossary-filename:术语库的文件名
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries
请求 JSON 正文:
{ "name":"projects/project-number-or-id/locations/us-central1/glossaries/glossary-id", "languagePair": { "sourceLanguageCode": "en", "targetLanguageCode": "ru" }, "inputConfig": { "gcsSource": { "inputUri": "gs://bucket-name/glossary-filename" } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/project-number/locations/us-central1/operations/operation-id", "metadata": { "@type": "type.googleapis.com/google.cloud.translation.v3beta1.CreateGlossaryMetadata", "name": "projects/project-number/locations/us-central1/glossaries/glossary-id", "state": "RUNNING", "submitTime": "2019-11-19T19:05:10.650047636Z" } }
等效术语集术语表
在等效术语集中确定术语表术语以后,请通过创建术语表资源,使术语表文件可用于 Cloud Translation API。
REST 和命令行
在使用下面的请求数据之前,请先进行以下替换:
- project-number-or-id:您的 Google Cloud 项目编号或 ID
- glossary-id:您的术语库 ID
- bucket-name:您的术语库文件所在的存储分区的名称
- glossary-filename:术语库的文件名
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries
请求 JSON 正文:
{ "name":"projects/project-number-or-id/locations/us-central1/glossaries/glossary-id", "languageCodesSet": { "languageCodes": ["en", "en-GB", "ru", "fr", "pt-BR", "pt-PT", "es"] }, "inputConfig": { "gcsSource": { "inputUri": "gs://bucket-name/glossary-file-name" } } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/project-number/locations/us-central1/operations/20191103-09061569945989-5d937985-0000-21ac-816d-f4f5e80782d4", "metadata": { "@type": "type.googleapis.com/google.cloud.translation.v3beta1.CreateGlossaryMetadata", "name": "projects/project-number/locations/us-central1/glossaries/glossary-id", "state": "RUNNING", "submitTime": "2019-11-03T16:06:29.134496675Z" } }
C#
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 Translation C# API 参考文档。
Go
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Translation Go API 参考文档。
Java
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Translation Java API 参考文档。
Node.js
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Translation Node.js API 参考文档。
PHP
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Translation PHP API 参考文档。
Python
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Translation Python API 参考文档。
Ruby
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Translation Ruby API 参考文档。
操作状态
术语表创建属于一项长时间运行的操作,可能需要大量时间才能完成。您可以轮询此操作的状态以查看它是否已完成,也可以取消此操作。
如需了解详情,请参阅长时间运行的操作。
使用术语表
使用术语表翻译文本
在 Cloud Translation 高级版中,您可以明确指定要用于翻译文本的翻译模型。还可以确定为特定领域的术语使用的术语表。
REST 和命令行
以下示例使用默认 NMT 模型和术语表翻译文本。
在使用下面的请求数据之前,请先进行以下替换:
- project-number-or-id:您的 Google Cloud 项目编号或 ID
- glossary-id:您的术语库 ID,例如 my-en-ru-g 术语库
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1:translateText
请求 JSON 正文:
{ "sourceLanguageCode": "en", "targetLanguageCode": "ru", "contents": "Dr. Watson, please discard your trash. You've shared unsolicited email with me. Let's talk about spam and importance ranking in a confidential mode.", "glossaryConfig": { "glossary": "projects/project-number/locations/us-central1/glossaries/glossary-id" } }
如需发送请求,请选择以下方式之一:
curl
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
curl -X POST \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1:translateText
PowerShell
将请求正文保存在名为 request.json
的文件中,然后执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1:translateText " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "glossaryTranslations": { "translatedText": "Доктор Ватсон, пожалуйста, откажитесь от своего мусора. Вы поделились нежелательной электронной почтой со я . Давайте поговорим о спаме и важности рейтинга в конфиденциальном режиме.", "glossaryConfig": { "glossary": "projects/project-number/locations/us-central1/glossaries/glossary-id" } }, "translations": { "translatedText": "Доктор Ватсон, пожалуйста, откажитесь от своего мусора. Вы поделились нежелательной электронной почтой со мной. Давайте поговорим о спаме и важности рейтинга в конфиденциальном режиме.", } }
translations
字段包含应用术语表之前的常规机器翻译;glossaryTranslations
字段包含应用术语表之后的翻译。
C#
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 Translation C# API 参考文档。
Go
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Translation Go API 参考文档。
Java
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Translation Java API 参考文档。
Node.js
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Translation Node.js API 参考文档。
PHP
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Translation PHP API 参考文档。
Python
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Translation Python API 参考文档。
Ruby
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Translation Ruby API 参考文档。
获取有关术语表的信息
REST 和命令行
在使用下面的请求数据之前,请先进行以下替换:
- project-number-or-id:您的 Google Cloud 项目编号或 ID
- glossary-id:您的术语库 ID,例如“ my-en-to-ru-glossary”
HTTP 方法和网址:
GET https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id
PowerShell
执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/project-number/locations/us-central1/glossaries/glossary-id", "languagePair": { "sourceLanguageCode": "en", "targetLanguageCode": "ru" }, "inputConfig": { "gcsSource": { "inputUri": "gs://bucket-name/glossary-file-name" } }, "entryCount": 9603 }
C#
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 Translation C# API 参考文档。
Go
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Translation Go API 参考文档。
Java
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Translation Java API 参考文档。
Node.js
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Translation Node.js API 参考文档。
PHP
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Translation PHP API 参考文档。
Python
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Translation Python API 参考文档。
Ruby
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Translation Ruby API 参考文档。
列出术语表
一个项目可以包括若干术语表。本部分介绍如何检索特定项目的可用术语表列表。
REST 和命令行
以下示例将列出与指定项目关联的所有术语表。
在使用下面的请求数据之前,请先进行以下替换:
- project-number-or-id:您的 Google Cloud 项目编号或 ID
HTTP 方法和网址:
GET https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X GET \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries
PowerShell
执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries " | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "glossaries": [ { "name": "projects/project-number/locations/us-central1/glossaries/glossary-id", "languagePair": { "sourceLanguageCode": "en", "targetLanguageCode": "ru" }, "inputConfig": { "gcsSource": { "inputUri": "gs://bucket-name/glossary-file-name" } }, "entryCount": 9603 }, ... ] }
C#
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 Translation C# API 参考文档。
Go
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Translation Go API 参考文档。
Java
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Translation Java API 参考文档。
Node.js
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Translation Node.js API 参考文档。
PHP
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Translation PHP API 参考文档。
Python
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Translation Python API 参考文档。
Ruby
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Translation Ruby API 参考文档。
删除术语表
以下示例将删除术语表。
REST 和命令行
在使用下面的请求数据之前,请先进行以下替换:
- project-number-or-id:您的 Google Cloud 项目编号或 ID
- glossary-id:您的术语库 ID
HTTP 方法和网址:
DELETE https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
curl -X DELETE \
-H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id
PowerShell
执行以下命令:
$cred = gcloud auth application-default print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest `
-Method DELETE `
-Headers $headers `
-Uri "https://translation.googleapis.com/v3/projects/project-number-or-id/locations/us-central1/glossaries/glossary-id " | Select-Object -Expand Content
您应该会收到一个成功的状态代码 (2xx) 和一个空响应。
C#
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 C# 设置说明进行操作。如需了解详情,请参阅 Translation C# API 参考文档。
Go
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 Translation Go API 参考文档。
Java
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Java 设置说明进行操作。如需了解详情,请参阅 Translation Java API 参考文档。
Node.js
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Translation Node.js API 参考文档。
PHP
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 PHP 设置说明进行操作。如需了解详情,请参阅 Translation PHP API 参考文档。
Python
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 Translation Python API 参考文档。
Ruby
在试用此示例之前,请按照《Translation 快速入门:使用客户端库》中的 Ruby 设置说明进行操作。如需了解详情,请参阅 Translation Ruby API 参考文档。