Crear y usar un glosario

Puedes usar un glosario para definir la terminología específica de tu dominio. Con un glosario, puedes añadir pares de términos, incluidos un término en el idioma de origen y otro en el de destino. Los pares de términos aseguran que el servicio Vertex AI Translation traduce tu terminología de forma coherente.

A continuación, se muestran ejemplos de casos en los que puede definir entradas de glosario:

  • Nombres de producto: identifica los nombres de producto para que se mantengan en la traducción. Por ejemplo, Google Home debe traducirse como Google Home.
  • Palabras ambiguas: especifica el significado de palabras ambiguas y homónimos. Por ejemplo, bat puede significar un bate de béisbol o un murciélago.
  • Palabras prestadas: aclara el significado de las palabras adoptadas de otro idioma. Por ejemplo, bouillabaisse en francés se traduce como bullabesa en español, un plato de pescado.

Los términos de un glosario pueden ser palabras sueltas (también denominadas tokens) o frases cortas, normalmente de menos de cinco palabras. Vertex AI Translation ignora las entradas de glosario coincidentes si las palabras son palabras de parada.

Vertex AI Translation ofrece los siguientes métodos de glosario disponibles en Google Distributed Cloud (GDC) con air gap:

Método Descripción
CreateGlossary Crea un glosario.
GetGlossary Devuelve un glosario almacenado.
ListGlossaries Devuelve una lista de IDs de glosario de un proyecto.
DeleteGlossary Elimina un glosario que ya no necesites.

Antes de empezar

Antes de crear un glosario para definir la terminología de traducción, debes tener un proyecto llamado translation-glossary-project. El recurso personalizado del proyecto debe tener el siguiente aspecto:

  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

Para obtener los permisos que necesitas para usar un glosario, pide al administrador de gestión de identidades y accesos de tu proyecto que te conceda los siguientes roles en el espacio de nombres de tu proyecto:

  • Desarrollador de Traducción con IA: obtén el rol de Desarrollador de Traducción con IA (ai-translation-developer) para acceder al servicio Translation de Vertex AI.
  • Administrador de segmentos de proyecto: obtén el rol Administrador de segmentos de proyecto (project-bucket-admin) para gestionar los segmentos de almacenamiento y los objetos que contienen, lo que te permite crear y subir archivos.

Para obtener más información sobre los requisitos previos, consulta el artículo Configurar un proyecto de traducción.

Crear un archivo de glosario

Debes crear un archivo de glosario para almacenar los términos de los idiomas de origen y de destino. En esta sección se muestran los dos diseños de glosario que puedes usar para definir tus términos.

En la siguiente tabla se describen los límites admitidos en Distributed Cloud para los archivos de glosario:

Descripción Límite
Tamaño máximo de archivo 10,4 millones (10.485.760) de bytes UTF-8
Longitud máxima de un término de glosario 1024 bytes UTF-8
Número máximo de recursos de glosario en un proyecto 10.000

Elige uno de los siguientes diseños para tu archivo de glosario:

  • Glosario unidireccional: especifica la traducción esperada de un par de términos de origen y de destino en un idioma concreto. Los glosarios unidireccionales admiten los formatos de archivo TSV, CSV y TMX.
  • Glosario de conjuntos de términos equivalentes: especifica la traducción esperada en varios idiomas en cada fila. Los glosarios de conjuntos de términos equivalentes admiten formatos de archivo CSV.

Glosario unidireccional

La API Translation de Vertex AI acepta valores separados por tabulaciones (TSV) y valores separados por comas (CSV). Cada fila contiene un par de términos separados por una tabulación (\t) o una coma (,) en estos formatos de archivo.

La API Translation de Vertex AI también acepta el formato TMX (Translation Memory eXchange), un formato XML estándar para proporcionar pares de términos de origen y de destino de la traducción. Los archivos de entrada admitidos tienen un formato basado en la versión 1.4 de TMX.

En los siguientes ejemplos se muestra la estructura necesaria para los formatos de archivo TSV, CSV y TMX de glosarios unidireccionales:

TSV y CSV

En la siguiente imagen se muestran dos columnas de un archivo TSV o CSV. La primera columna contiene el término en el idioma de origen y la segunda, el término en el idioma de destino.

Ejemplo de términos de glosario equivalentes

Cuando creas un archivo de glosario, puedes definir una fila de encabezado. La solicitud de glosario hace que el archivo esté disponible para la API Translation de Vertex AI.

TMX

En el ejemplo siguiente se muestra la estructura necesaria en un archivo 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>

Si el archivo contiene etiquetas XML que no se muestran en este ejemplo, la API Vertex AI Translation las ignora.

Incluye los siguientes elementos en tu archivo TMX para asegurarte de que la API Translation de Vertex AI lo procese correctamente:

  • <header>: identifica el idioma de origen mediante el atributo srclang.
  • <tu>: incluye un par de elementos <tuv> con el mismo idioma de origen y de destino. Estos elementos <tuv> cumplen lo siguiente:

    • Cada elemento <tuv> identifica el idioma del texto contenido mediante el atributo xml:lang. Usa los códigos ISO-639-1 para identificar los idiomas de origen y de destino. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • Si un elemento <tu> contiene más de dos elementos <tuv>, la API Translation de Vertex AI solo procesa el primer elemento <tuv> que coincida con el idioma de origen y el primer elemento <tuv> que coincida con el idioma de destino. El servicio ignora el resto de los elementos <tuv>.
    • Si un elemento <tu> no tiene ningún par de elementos <tuv> que coincida, la API Translation de Vertex AI ignora el elemento <tu> no válido.
  • <seg>: representa cadenas de texto generalizadas. La API Vertex AI Translation excluye las etiquetas de marcado de un elemento <seg> antes de procesar el archivo. Si un elemento <tuv> contiene más de un elemento <seg>, la API Vertex AI Translation concatena el texto en un único elemento e incluye un espacio entre las cadenas de texto.

Una vez que hayas identificado los términos del glosario unidireccional, sube el archivo a un segmento de almacenamiento y haz que esté disponible para la API Translation de Vertex AI creando e importando un glosario.

Glosario de términos equivalentes

La API Translation de Vertex AI acepta archivos de glosario para conjuntos de términos equivalentes en formato CSV. Para definir conjuntos de términos equivalentes, cree un archivo CSV de varias columnas en el que cada fila incluya un término de glosario en varios idiomas. Consulta la lista de idiomas admitidos y sus códigos correspondientes.

En la siguiente imagen se muestra un ejemplo de archivo CSV con varias columnas. Cada fila representa un término del glosario y cada columna, una traducción del término a diferentes idiomas.

Ejemplo de términos de glosario equivalentes

El encabezado es la primera fila del archivo, que identifica el idioma de cada columna. La fila de encabezado usa los códigos de idioma estándar ISO-639-1 o BCP-47. La API Translation de Vertex AI no usa información de la parte de la oración (pos) y no se validan los valores de posición específicos.

Cada fila posterior contiene términos de glosario equivalentes en los idiomas identificados en el encabezado. Puede dejar las columnas en blanco si el término no está disponible en todos los idiomas.

Una vez que hayas identificado los términos del glosario en tu conjunto de términos equivalentes, sube el archivo a un segmento de almacenamiento y haz que esté disponible para la API Vertex AI Translation creando e importando un glosario.

Subir un archivo de glosario a un depósito de almacenamiento

Sigue estos pasos para subir tu archivo de glosario a un segmento de almacenamiento:

  1. Configura la CLI de gdcloud para el almacenamiento de objetos.
  2. Crea un segmento de almacenamiento en el espacio de nombres de tu proyecto. Usa una clase de almacenamiento Standard.

    Puedes crear el segmento de almacenamiento desplegando un recurso Bucket en el espacio de nombres de tu proyecto:

      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. Concede permisos de read en el segmento a la cuenta de servicio (ai-translation-system-sa) que usa el servicio Vertex AI Translation.

    Puedes seguir estos pasos para crear el rol y el enlace de rol mediante recursos personalizados:

    1. Crea el rol desplegando un recurso Role en el espacio de nombres del proyecto:

        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. Crea el enlace de rol desplegando un recurso RoleBinding en el espacio de nombres del proyecto:

        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: ai-translation-system-sa
            namespace: ai-translation-system
      
  4. Sube el archivo de glosario al segmento de almacenamiento que has creado. Para obtener más información, consulta Subir y descargar objetos de almacenamiento en proyectos.

Crear un glosario

El método CreateGlossary crea un glosario y devuelve el identificador a la operación de larga duración que genera el glosario.

Para crear un glosario, sustituye lo siguiente antes de usar los datos de la solicitud:

  • ENDPOINT: el endpoint de Vertex AI Translation que usas en tu organización. Para obtener más información, consulta el estado del servicio y los endpoints.
  • PROJECT_ID: tu ID de proyecto.
  • GLOSSARY_ID: el ID de tu glosario, que es el nombre del recurso.
  • BUCKET_NAME: el nombre del segmento de almacenamiento en el que se encuentra tu archivo de glosario.
  • GLOSSARY_FILENAME: el nombre del archivo de glosario en el segmento de almacenamiento.

A continuación se muestra la sintaxis de una solicitud HTTP para crear un glosario:

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

Según el archivo de glosario que has creado, elige una de las siguientes opciones para crear un glosario:

Unidireccional

Para crear un glosario unidireccional, especifica un par de idiomas (language_pair) con un idioma de origen (source_language_code) y un idioma de destino (target_language_code).

Sigue estos pasos para crear un glosario unidireccional:

  1. Guarda el siguiente cuerpo de solicitud en un archivo JSON llamado request.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"
        }
      }
    }
    

    Haz los cambios siguientes:

    • SOURCE_LANGUAGE: código de idioma del idioma de origen del glosario. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • TARGET_LANGUAGE: el código de idioma del idioma de destino del glosario. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
  2. Obtener un token de autenticación

  3. Haz la solicitud. En los siguientes ejemplos se usan un método de la API REST y la línea de comandos, pero también puedes usar bibliotecas de cliente para crear un glosario unidireccional.

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"

Sustituye TOKEN por el token de autenticación que has obtenido.

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

Sustituye TOKEN por el token de autenticación que has obtenido.

Debes recibir una respuesta JSON similar a la siguiente:

{
"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
  }
}

Conjunto de términos equivalentes

Para crear un glosario de términos equivalentes, especifica un conjunto de idiomas (language_codes_set) con los códigos de idioma (language_codes) del glosario.

Sigue estos pasos para crear un glosario de conjuntos de términos equivalentes:

  1. Guarda el siguiente cuerpo de solicitud en un archivo JSON llamado request.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"
        }
      }
    }
    

    Sustituye LANGUAGE_CODE por el código del idioma o los idiomas del glosario. Consulta la lista de idiomas admitidos y sus códigos correspondientes.

  2. Obtener un token de autenticación

  3. Haz la solicitud:

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"

Sustituye TOKEN por el token de autenticación que has obtenido.

Debes recibir una respuesta JSON similar a la siguiente:

{
  "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

Sustituye TOKEN por el token de autenticación que has obtenido.

Debes recibir una respuesta JSON similar a la siguiente:

{
  "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. Instala la última versión de la biblioteca de cliente de Vertex AI Translation.

  2. Define las variables de entorno necesarias en una secuencia de comandos de Python.

  3. Añade el siguiente código a la secuencia de comandos de Python que has creado:

    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. Guarda la secuencia de comandos de Python.

  5. Ejecuta la secuencia de comandos de Python:

    python SCRIPT_NAME
    

Sustituye SCRIPT_NAME por el nombre que le hayas dado a tu script de Python, como glossary.py.

Para obtener más información sobre el método create_glossary, consulta la biblioteca de cliente de Python.

En función del tamaño del archivo de glosario, la creación de un glosario suele tardar menos de 10 minutos. Puedes consultar el estado de esta operación para saber cuándo ha terminado.

Obtener un glosario

El método GetGlossary devuelve un glosario almacenado. Si el glosario no existe, la salida devuelve el valor NOT_FOUND. Para llamar al método GetGlossary, especifica el ID del proyecto y el ID de la glosario. Los métodos CreateGlossary y ListGlossaries devuelven el ID del glosario.

Por ejemplo, las siguientes solicitudes devuelven información sobre un glosario específico de tu proyecto:

curl

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

Sustituye TOKEN por el token de autenticación que has obtenido.

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

Mostrar glosarios

El método ListGlossaries devuelve una lista de IDs de glosario de un proyecto. Si no existe ningún glosario, la salida devuelve el valor NOT_FOUND. Para llamar al método ListGlossaries, especifica el ID de tu proyecto y el endpoint de Vertex AI Translation.

Por ejemplo, la siguiente solicitud devuelve una lista de IDs de glosario de tu proyecto:

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

Sustituye TOKEN por el token de autenticación que has obtenido.

Eliminar un glosario

El método DeleteGlossary elimina un glosario. Si el glosario no existe, la salida devuelve el valor NOT_FOUND. Para llamar al método DeleteGlossary, especifica el ID del proyecto, el ID de la glosario y el endpoint de Vertex AI Translation. Los métodos CreateGlossary y ListGlossaries devuelven el ID del glosario.

Por ejemplo, la siguiente solicitud elimina un glosario de tu proyecto:

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

Sustituye TOKEN por el token de autenticación que has obtenido.