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 de idioma de origen y otro de idioma de destino. Los pares de términos garantizan que el servicio Vertex AI Translation traduzca tu terminología de forma coherente.

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

  • Nombres de productos: identifica los nombres de productos para que se mantengan 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, bat puede significar un bate de béisbol o un murciélago.
  • Palabras prestadas: aclara el significado de palabras adoptadas de otro idioma. Por ejemplo, bouillabaisse en francés se traduce como bouillabaisse en inglés, un plato de sopa 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 vacías.

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

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 que se va a traducir, 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 a tu administrador de IAM del proyecto que te asigne los siguientes roles en el espacio de nombres de tu proyecto:

  • Desarrollador de IA Translation: obtén el rol Desarrollador de IA Translation (ai-translation-developer) para acceder al servicio Vertex AI Translation.
  • Administrador de segmentos del proyecto: obtén el rol Administrador de segmentos del proyecto (project-bucket-admin) para gestionar los segmentos de almacenamiento y los objetos de los segmentos, 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 idioma de origen y de destino. 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 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 para 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 los formatos de archivo CSV.

Glosario unidireccional

La API 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 Vertex AI Translation también acepta el formato TMX (Translation Memory eXchange), un formato XML estándar para proporcionar los 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 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 de idioma de origen y la segunda, el término de 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 pone el archivo a disposición de la API Vertex AI Translation.

TMX

En el siguiente ejemplo se ilustra 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 tu 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 que la API Vertex AI Translation pueda procesarlo 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 <tuv> elementos cumplen lo siguiente:

    • Cada elemento <tuv> identifica el idioma del texto incluido 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 de idioma correspondientes.
    • Si un elemento <tu> contiene más de dos elementos <tuv>, la API Vertex AI Translation 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 un par de elementos <tuv> que coincidan, la API Vertex AI Translation 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.

Después de identificar los términos del glosario en tu glosario unidireccional, sube el archivo a un segmento de almacenamiento y ponlo a disposición de la API Vertex AI Translation creando e importando un glosario.

Glosario de conjuntos de términos equivalentes

La API 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 con 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 de idioma correspondientes.

En la siguiente imagen se muestra un ejemplo de archivo CSV con varias columnas. Cada fila representa un término de glosario y cada columna representa 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 Vertex AI Translation no usa información sobre 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. 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 segmento de almacenamiento y ponlo a disposición de la API Vertex AI Translation creando e importando un glosario.

Subir un archivo de glosario a un segmento de almacenamiento

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

  1. Configura la CLI 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 read permisos en el segmento a la cuenta de servicio (g-vai-translation-sie-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: g-vai-translation-sie-sa
            namespace: g-vai-translation-sie
      
  4. Sube tu archivo de glosario al segmento de almacenamiento que has creado. Para obtener más información, consulta el artículo Subir y descargar objetos de almacenamiento en proyectos.

Crear un glosario

El método CreateGlossary crea un glosario y devuelve el identificador de 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 y los endpoints del servicio.
  • PROJECT_ID: el ID del proyecto.
  • GLOSSARY_ID: el ID de tu glosario, que es el nombre del recurso.
  • BUCKET_NAME: el nombre del segmento de almacenamiento donde se encuentra el 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 hayas 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 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"
        }
      }
    }
    

    Haz los cambios siguientes:

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

  3. Envía 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 conjuntos 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 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"
        }
      }
    }
    

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

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

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

  2. Define las variables de entorno necesarias en un script de Python.

  3. Añade el siguiente código al script 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 el script de Python.

  5. Ejecuta el script de Python:

    python SCRIPT_NAME
    

Sustituye SCRIPT_NAME por el nombre que le has asignado 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 de tu proyecto y el ID del glosario. Tanto el CreateGlossary como ListGlossaries métodos 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 un glosario no existe, la salida devuelve el valor NOT_FOUND. Para llamar al ListGlossaries método, especifica el ID del 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 de tu proyecto, el ID del glosario y el endpoint de Vertex AI Translation. Tanto el CreateGlossary como ListGlossaries métodos 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.