Crea y usa un glosario

Puedes usar un glosario para definir la terminología específica de tu dominio. Con un glosario, puedes agregar pares de términos, incluido un término en el idioma de origen y otro en el idioma de destino. Los pares de términos garantizan que el servicio de Vertex AI Translation traduzca tu terminología de manera coherente.

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

  • Nombres de productos: Identifica los nombres de productos para conservarlos en la traducción. Por ejemplo, Google Home debe traducirse como Google Home.
  • Palabras ambiguas: Especifica el significado de palabras vagas y homónimos. Por ejemplo, banco puede referirse a un asiento o a una empresa dedicada a realizar operaciones financieras.
  • Palabras tomadas de otros idiomas: Se aclara el significado de las palabras adoptadas de otro idioma. Por ejemplo, bouillabaisse en francés se traduce como bouillabaisse en inglés, un guiso de pescado.

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

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

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

Antes de comenzar

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

  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, pídele al administrador de IAM del proyecto que te otorgue los siguientes roles en el espacio de nombres del proyecto:

  • Desarrollador de AI Translation: Obtén el rol de desarrollador de AI Translation (ai-translation-developer) para acceder al servicio de Vertex AI Translation.
  • Administrador de buckets del proyecto: Obtén el rol de administrador de buckets del proyecto (project-bucket-admin) para administrar los buckets de almacenamiento y los objetos dentro de los buckets, lo que te permite crear y subir archivos.

Para obtener más información sobre los requisitos previos, consulta Configura un proyecto de traducción.

Crea un archivo de glosario.

Debes crear un archivo de glosario para almacenar los términos de los idiomas fuente y objetivo. En esta sección, se incluyen los dos diseños de glosario diferentes 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 del glosario 1,024 bytes UTF-8
Cantidad máxima de recursos de glosario para un proyecto 10,000

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

  • Glosario unidireccional: Especifica la traducción esperada para un par de términos de origen y destino en un idioma específico. Los glosarios unidireccionales admiten los formatos de archivo TSV, CSV y TMX.
  • Glosario de conjunto 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 de Vertex AI Translation 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 (,) para estos formatos de archivo.

La API de Vertex AI Translation también acepta el formato de intercambio de memoria de traducción (TMX), un formato XML estándar para proporcionar los pares de términos de origen y 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 requerida para los formatos de archivo TSV, CSV y TMX de los glosarios unidireccionales:

TSV y CSV

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

Ejemplo de términos del 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 de Vertex AI Translation.

TMX

En el siguiente ejemplo, se ilustra la estructura requerida 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 tu archivo contiene etiquetas XML que no se muestran en este ejemplo, la API de Vertex AI Translation las ignora.

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

  • <header>: Identifica el idioma de origen con el atributo srclang.
  • <tu>: Incluye un par de elementos <tuv> con los mismos idiomas de origen y de destino. Estos elementos <tuv> cumplen con lo siguiente:

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

Después de identificar los términos del glosario en tu glosario unidireccional, sube el archivo a un bucket de almacenamiento y haz que esté disponible para la API de Vertex AI Translation creando e importando un glosario.

Glosario de conjuntos de términos equivalentes

La API de Vertex AI Translation acepta archivos de glosario para conjuntos de términos equivalentes en formato CSV. Para definir conjuntos de términos equivalentes, crea un archivo CSV de varias columnas en el que, en cada fila, se enumere un único término del glosario en varios idiomas. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.

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

Ejemplo de términos del 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 de Vertex AI Translation no usa información de partes del discurso (pos), y no se validan valores de posición específicos.

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

Después de identificar los términos del glosario en tu conjunto de términos equivalentes, sube el archivo a un bucket de almacenamiento y haz que esté disponible para la API de Vertex AI Translation creando e importando un glosario.

Sube tu archivo de glosario a un bucket de almacenamiento

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

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

    Puedes crear el bucket de almacenamiento implementando 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. Otorga permisos de read en el bucket a la cuenta de servicio (ai-translation-system-sa) que usa el servicio de Vertex AI Translation.

    Puedes seguir estos pasos para crear el rol y la vinculación del rol con recursos personalizados:

    1. Para crear el rol, implementa 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. Implementa un recurso RoleBinding en el espacio de nombres del proyecto para crear la vinculación del rol:

        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 tu archivo de glosario al bucket de almacenamiento que creaste. Para obtener más información, consulta Cómo subir y descargar objetos de almacenamiento en proyectos.

Crea 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, reemplaza lo siguiente antes de usar cualquiera de los datos de la solicitud:

  • ENDPOINT: Es el extremo de Vertex AI Translation que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.
  • PROJECT_ID: el ID de tu proyecto
  • GLOSSARY_ID: Es el ID de tu glosario, que es el nombre de tu recurso.
  • BUCKET_NAME: Es el nombre del bucket de almacenamiento en el que se encuentra tu archivo de glosario.
  • GLOSSARY_FILENAME: Es el nombre de tu archivo de glosario en el bucket 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 creaste, 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 objetivo (target_language_code).

Sigue estos pasos para crear un glosario unidireccional:

  1. Guarda el siguiente cuerpo de la 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"
        }
      }
    }
    

    Reemplaza lo siguiente:

    • SOURCE_LANGUAGE: Es el código de idioma del idioma fuente del glosario. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • TARGET_LANGUAGE: Es 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. Obtén un token de autenticación.

  3. Realiza la solicitud. En los siguientes ejemplos, se usan un método de la API de REST y la línea de comandos, pero también puedes usar bibliotecas 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"

Reemplaza TOKEN por el token de autenticación que obtuviste.

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

Reemplaza TOKEN por el token de autenticación que obtuviste.

Deberías 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 conjunto 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 conjunto de términos equivalentes:

  1. Guarda el siguiente cuerpo de la 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"
        }
      }
    }
    

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

  2. Obtén un token de autenticación.

  3. Realiza 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"

Reemplaza TOKEN por el token de autenticación que obtuviste.

Deberías 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

Reemplaza TOKEN por el token de autenticación que obtuviste.

Deberías 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 versión más reciente de la biblioteca cliente de Vertex AI Translation.

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

  3. Agrega el siguiente código a la secuencia de comandos de Python que creaste:

    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
    

Reemplaza SCRIPT_NAME por el nombre que le diste a tu secuencia de comandos de Python, como glossary.py.

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

Según el tamaño del archivo de glosario, la creación de un glosario suele tardar menos de 10 minutos en completarse. Puedes recuperar el estado de esta operación para saber cuándo finaliza.

Obtén un glosario

El método GetGlossary devuelve un glosario almacenado. Si el glosario no existe, el resultado devuelve el valor NOT_FOUND. Para llamar al método GetGlossary, especifica el ID del proyecto y el ID del 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"

Reemplaza TOKEN por el token de autenticación que obtuviste.

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

Enumerar glosarios

El método ListGlossaries devuelve una lista de los IDs del glosario en un proyecto. Si no existe un glosario, el resultado devuelve el valor NOT_FOUND. Para llamar al método ListGlossaries, especifica el ID de tu proyecto y el extremo de Vertex AI Translation.

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

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

Reemplaza TOKEN por el token de autenticación que obtuviste.

Borra un glosario

El método DeleteGlossary borra un glosario. Si el glosario no existe, el resultado muestra el valor NOT_FOUND. Para llamar al método DeleteGlossary, especifica el ID de tu proyecto, el ID del glosario y el extremo de Vertex AI Translation. Los métodos CreateGlossary y ListGlossaries devuelven el ID del glosario.

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

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

Reemplaza TOKEN por el token de autenticación que obtuviste.