创建和使用术语表

您可以使用术语表来定义特定于您领域的术语。借助术语表,您可以添加术语对,包括源语言术语和目标语言术语。 术语对可确保 Vertex AI Translation 服务始终如一地翻译您的术语。

以下是一些您可以定义术语表条目的示例:

  • 产品名称:标识产品名称,以便在翻译中保留这些名称。例如, “Google Home”必须翻译为“Google Home”
  • 多义词:指定模糊字词和同音异义词的含义。例如,“bat”一词可能表示一种体育用品或动物。
  • 外来词:阐明从其他 语言采用的字词的含义。例如,法语的“bouillabaisse”翻译为英语的“bouillabaisse ”,是一种鱼汤菜肴。

术语表中的术语可以是单个字词(也称为“词条” )或短语,通常少于五个字词。如果字词是停用词,Vertex AI Translation 会忽略 匹配的术语表条目。

Vertex AI Translation 提供以下可在 Google Distributed Cloud (GDC) 网闸隔离配置中使用的术语表方法:

方法 说明
CreateGlossary 创建术语表。
GetGlossary 返回存储的术语表。
ListGlossaries 返回项目中的术语表 ID 列表。
DeleteGlossary 删除不再需要的术语表。

准备工作

在创建术语表以定义翻译术语之前,您必须有一个名为 translation-glossary-project 的项目。项目的自定义资源必须与以下示例类似:

  apiVersion: resourcemanager.gdc.goog/v1
  kind: Project
  metadata:
    labels:
      atat.config.google.com/clin-number: CLIN_NUMBER
      atat.config.google.com/task-order-number: TASK_ORDER_NUMBER
    name: translation-glossary-project
    namespace: platform

如需获得使用术语表所需的权限,请让您的 Project IAM 管理员在您的项目命名空间中授予您以下角色:

  • AI Translation Developer:获取 AI Translation Developer (ai-translation-developer) 角色以访问 Vertex AI Translation 服务。
  • Project Bucket Admin:获取 Project Bucket Admin (project-bucket-admin) 角色以管理存储分区和存储分区中的对象,从而创建和上传文件。

如需详细了解前提条件,请参阅 设置翻译项目

创建术语表文件

您必须创建术语表文件来存储源语言和目标语言术语。本部分包含两种不同的术语表布局,您可以使用它们来定义术语。

下表介绍了 Distributed Cloud 支持的术语表文件限制:

说明 限制
文件大小上限 1040 万 (10,485,760) 个 UTF-8 字节
术语表术语的长度上限 1,024 个 UTF-8 字节
项目的术语库资源数上限 10,000

为术语表文件选择以下布局之一:

  • 单向术语表 :指定特定语言中一对源语言和目标语言术语的预期翻译。单向术语表支持 TSV、CSV 和 TMX 文件格式。
  • 等效术语集术语表:在每一行中指定多种语言的预期 翻译。等效术语集术语表支持 CSV 文件格式。

单向术语表

Vertex AI Translation API 接受制表符分隔值 (TSV) 和逗号分隔值 (CSV)。对于这些文件格式,每一行都包含一对术语,这些术语之间以制表符 (\t) 或逗号 (,) 分隔。

Vertex AI Translation API 还接受 TMX 格式,这是一种用于提供翻译的源语言和目标语言术语对的标准 XML 格式。支持的输入文件采用基于 TMX 1.4 版的格式。

以下示例展示了单向术语表的 TSV、CSV 和 TMX 文件格式的所需结构:

TSV 和 CSV

下图显示了 TSV 或 CSV 文件中的两列。第一列包含源语言术语,第二列包含目标语言术语。

等效术语示例

创建术语表文件时,您可以定义标题行。 术语表请求会使该文件可用于 Vertex AI Translation API。

TMX

以下示例说明了 TMX 文件中的所需结构:

<?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>

如果您的文件包含此示例中未显示的 XML 标记,Vertex AI Translation API 会忽略这些标记。

在 TMX 文件中添加以下元素,以确保 Vertex AI Translation API 成功处理:

  • <header>:使用 srclang 属性标识源语言。
  • <tu>:包含一对具有相同源语言和目标语言 的 <tuv> 元素。这些 <tuv> 元素符合以下条件:

    • 每个 <tuv> 元素都使用 xml:lang 属性标识所含文本的语言 。使用 ISO-639-1 代码标识源语言和目标语言。 请参阅支持的语言及其各自的语言代码列表。
    • 如果 <tu> 元素包含两个以上的 <tuv> 元素, Vertex AI Translation API 只会处理与 源语言匹配的第一个 <tuv> 元素和与目标 语言匹配的第一个 <tuv> 元素。该服务会忽略其余的 <tuv> 元素。
    • 如果 <tu> 元素没有匹配的 <tuv> 元素对, Vertex AI Translation API 会忽略无效的 <tu> 元素。
  • <seg>:表示广义的文本字符串。Vertex AI Translation API 会从 <seg> 元素中排除标记,然后再处理文件。 如果 <tuv> 元素包含多个 <seg> 元素, Vertex AI Translation API 会将文本连接成一个元素,并在文本字符串之间留一个 空格。

在单向术语表中标识术语表术语后, 将文件上传到存储桶并通过 创建和导入术语表,使其可用于 Vertex AI Translation API。

等效术语集术语表

Vertex AI Translation API 接受使用 CSV 格式的等效术语集术语表文件。如需定义等效术语集,您可以创建一个多列 CSV 文件,其中每一行列出一个术语表术语的多种语言版本翻译。请参阅 支持的语言 及其各自的语言代码列表。

下图显示了一个多列 CSV 文件示例。每一行表示一个术语表术语,每一列表示该术语的不同语言版本翻译。

等效术语示例

标题是文件中的第一行,用于标识每一列对应的语言。标题行使用 ISO-639-1 或 BCP-47 标准语言代码。Vertex AI Translation API 不使用词性 (pos) 信息,并且不会验证特定的位置值。

后续各行包含标题中所标识语言版本的等效术语表术语。如果该术语仅提供了部分语言版本,则可以将列留空。

在等效术语集中标识术语表术语后, 将文件上传到存储桶并通过 创建和导入术语表,使其可用于 Vertex AI Translation API。

将术语表文件上传到存储桶

请按照以下步骤将术语表文件上传到存储桶:

  1. 为对象存储配置 gdcloud CLI
  2. 在项目命名空间中创建存储桶。使用 Standard 存储类别。

    您可以通过在项目命名空间中部署 Bucket 资源来创建存储桶:

      apiVersion: object.gdc.goog/v1
      kind: Bucket
      metadata:
        name: glossary-bucket
        namespace: translation-glossary-project
      spec:
        description: bucket for translation glossary
        storageClass: Standard
        bucketPolicy:
          lockingPolicy:
            defaultObjectRetentionDays: 90
    
  3. 向 Vertex AI Translation 服务使用的服务帐号 (g-vai-translation-sie-sa) 授予对存储桶的 read 权限。

    您可以按照以下步骤使用自定义资源创建角色和角色绑定:

    1. 通过在项目命名空间中部署 Role 资源来创建角色:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: Role
        metadata:
          name: ai-translation-glossary-reader
          namespace: translation-glossary-project
        rules:
          -
            apiGroups:
              - object.gdc.goog
            resources:
              - buckets
            verbs:
              - read-object
      
    2. 通过在项目命名空间中部署 RoleBinding 资源来创建角色绑定:

        apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: ai-translation-glossary-reader-rolebinding
          namespace: translation-glossary-project
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: Role
          name: ai-translation-glossary-reader
        subjects:
          -
            kind: ServiceAccount
            name: g-vai-translation-sie-sa
            namespace: g-vai-translation-sie
      
  4. 将您的 术语表文件 上传到您创建的存储桶。如需了解详情,请参阅在项目中上传和下载存储对象

创建术语表

CreateGlossary 方法会创建一个术语表,并返回生成该术语表的 长时间运行的操作的标识符。

如需创建术语表,请先替换以下内容,然后再使用任何请求数据:

  • ENDPOINT:您组织使用的 Vertex AI Translation 端点。如需了解详情, 请查看服务状态和端点
  • PROJECT_ID:您的项目 ID。
  • GLOSSARY_ID:您的术语表 ID,即您的资源名称。
  • BUCKET_NAME:您的术语表文件所在的存储桶 的名称。
  • GLOSSARY_FILENAME:存储桶中术语表文件的名称。

以下是创建术语表的 HTTP 请求的语法:

POST https://ENDPOINT/v3/projects/PROJECT_ID/glossaries

根据您创建的术语表文件,选择以下选项之一来创建术语表:

单向

如需创建单向术语表,请指定包含源语言 (source_language_code) 和目标语言 (target_language_code) 的语言对 (language_pair)。

请按照以下步骤创建单向术语表:

  1. 将以下请求正文保存在名为 request.json 的 JSON 文件中:

    {
      "name":"projects/PROJECT_ID/glossaries/GLOSSARY_ID,
      "language_pair": {
        "source_language_code": "SOURCE_LANGUAGE",
        "target_language_code": "TARGET_LANGUAGE"
        },
      "{"input_config": {
        "s3_source": {
          "input_uri": "s3://BUCKET_NAME/GLOSSARY_FILENAME"
        }
      }
    }
    

    替换以下内容:

    • SOURCE_LANGUAGE:术语表的源语言的语言代码。请参阅支持的语言及其 各自的语言代码列表。
    • TARGET_LANGUAGE:术语表的目标语言的语言代码。请参阅支持的语言及其 各自的语言代码列表。
  2. 获取身份验证令牌

  3. 发出请求。以下示例使用的是 REST API 方法和命令行,但您也可以使用客户端库创建单向术语表。

curl

curl -X POST \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://ENDPOINT/v3/projects/PROJECT_ID/glossaries"

TOKEN 替换为 身份验证令牌 您获得的。

PowerShell

$cred = TOKEN
$headers = @{ "Authorization" = "Bearer $cred" }
Invoke-WebRequest
  -Method POST
  -Headers $headers
  -ContentType: "application/json; charset=utf-8"
  -InFile request.json
  -Uri "https://ENDPOINT/v3/projects/PROJECT_ID/glossaries"
  | Select-Object -Expand Content

TOKEN 替换为 身份验证令牌 您获得的。

您必须收到类似于以下内容的 JSON 响应:

{
"name": "projects/PROJECT_ID/operations/operation-id",
"metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3.CreateGlossaryMetadata",
    "name": "projects/PROJECT_ID/glossaries/GLOSSARY_ID",
    "state": "RUNNING",
    "submitTime": TIME
  }
}

等效术语集

如需创建等效术语集术语表,请指定包含术语表的语言代码 (language_codes) 的语言集 (language_codes_set)。

请按照以下步骤创建等效术语集术语表:

  1. 将以下请求正文保存在名为 request.json 的 JSON 文件中:

    {
      "name":"projects/PROJECT_ID/glossaries/GLOSSARY_ID",
      "language_codes_set": {
        "language_codes": ["LANGUAGE_CODE_1",
                            "LANGUAGE_CODE_2",
                            "LANGUAGE_CODE_3",
                            ...
                          ]
      },
      "input_config": {
        "s3_source": {
          "input_uri": "s3://BUCKET_NAME/GLOSSARY_FILENAME"
        }
      }
    }
    

    LANGUAGE_CODE 替换为术语表的一种或多种语言的代码。请参阅支持的语言及其各自的语言代码列表。

  2. 获取身份验证令牌

  3. 发出请求:

curl

curl -X POST \
    -H "Authorization: Bearer TOKEN" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://ENDPOINT/v3/projects/PROJECT_ID/glossaries"

TOKEN 替换为 身份验证令牌 您获得的。

您必须收到类似于以下内容的 JSON 响应:

{
  "name": "projects/PROJECT_ID/operations/GLOSSARY_ID,
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3.CreateGlossaryMetadata",
    "name": "projects/PROJECT_ID/glossaries/GLOSSARY_ID",
    "state": "RUNNING",
    "submitTime": TIME
  }
}

PowerShell

$cred = TOKEN
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method POST `
  -Headers $headers `
  -ContentType: "application/json; charset=utf-8" `
  -InFile request.json `
  -Uri "https://ENDPOINT/v3/projects/PROJECT_ID/glossaries"
  | Select-Object -Expand Content

TOKEN 替换为 身份验证令牌 您获得的。

您必须收到类似于以下内容的 JSON 响应:

{
  "name": "projects/PROJECT_ID/operations/GLOSSARY_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.translation.v3.CreateGlossaryMetadata",
    "name": "projects/PROJECT_ID/glossaries/GLOSSARY_ID",
    "state": "RUNNING",
    "submitTime": TIME
  }
}

Python

  1. 安装最新版本的 Vertex AI Translation 客户端库

  2. 在 Python 脚本中设置所需的环境变量

  3. 将以下代码添加到您创建的 Python 脚本:

    from google.cloud import translate_v3 as translate
    
    def create_glossary(
        project_id=PROJECT_ID,
        input_uri= "s3://BUCKET_NAME/GLOSSARY_FILENAME",
        glossary_id=GLOSSARY_ID,
        timeout=180,
    ):
    
        client = translate.TranslationServiceClient()
    
        # Supported language codes
        source_lang_code = "LANGUAGE_CODE_1"
        target_lang_code = "LANGUAGE_CODE_2", "LANGUAGE_CODE_3", ...
    
  4. 保存 Python 脚本。

  5. 运行 Python 脚本:

    python SCRIPT_NAME
    

SCRIPT_NAME 替换为您为 Python 脚本指定的名称,例如 glossary.py

如需详细了解 create_glossary 方法,请参阅 Python 客户端库

创建术语表通常需要不到 10 分钟的时间,具体取决于术语表文件的大小。 您可以检索此操作的状态 以了解其完成时间。

获取术语表

GetGlossary 方法会返回存储的术语表。如果术语表不存在,输出会返回 NOT_FOUND 值。如需调用 GetGlossary 方法,请指定您的项目 ID 和术语表 ID。Both the CreateGlossaryListGlossaries methods 都会返回术语表 ID。

例如,以下请求会返回项目中特定术语表的相关信息:

curl

curl -X GET \
   -H "Authorization: Bearer TOKEN" \
   "http://ENDPOINT/v3/projects/PROJECT_ID/glossaries/GLOSSARY_ID"

TOKEN 替换为 身份验证令牌 您获得的。

Python

from google.cloud import translate_v3 as translate

def get_glossary(project_id="PROJECT_ID", glossary_id="GLOSSARY_ID"):
    """Get a particular glossary based on the glossary ID."""

client = translate.TranslationServiceClient()

name = client.glossary_path(project_id, glossary_id)

response = client.get_glossary(name=name)
print(u"Glossary name: {}".format(response.name))
print(u"Input URI: {}".format(response.input_config.s3_source.input_uri))

列出术语表

ListGlossaries 方法会返回项目中的术语表 ID 列表。如果术语表不存在,输出会返回 NOT_FOUND 值。如需调用 ListGlossaries 方法,请指定您的项目 ID 和 Vertex AI Translation 端点

例如,以下请求会返回项目中术语表 ID 的列表:

curl -X GET \
    -H "Authorization: Bearer TOKEN" \
    "http://ENDPOINT/v3/projects/PROJECT_ID/glossaries?page_size=10"

TOKEN 替换为 身份验证令牌 您获得的。

删除术语表

DeleteGlossary 方法会删除术语表。如果术语表不存在,输出会返回 NOT_FOUND 值。如需调用 DeleteGlossary 方法,请指定您的项目 ID、术语表 ID 和 Vertex AI Translation 端点。Both the CreateGlossaryListGlossaries methods 都会返回术语表 ID。

例如,以下请求会从您的项目中删除术语表:

curl -X DELETE \
    -H "Authorization: Bearer TOKEN" \
    "http://ENDPOINT/v3/projects/PROJECT_ID/glossaries/GLOSSARY_ID"

TOKEN 替换为 身份验证令牌 您获得的。