Você pode usar um glossário para definir a terminologia específica do seu domínio. Com um glossário, é possível adicionar pares de termos, incluindo um termo de origem e um de destino. Os pares de termos garantem que o serviço de tradução da Vertex AI traduza seu vocabulário de forma consistente.
Confira alguns exemplos de casos em que você pode definir entradas de glossário:
- Nomes de produtos: identifique os nomes de produtos para mantê-los na tradução. Por exemplo, Google Home precisa ser traduzido como Google Home.
- Palavras ambíguas: especifique o significado de palavras vagas e homônimos. Por exemplo, morcego pode significar um equipamento esportivo ou um animal.
- Palavras emprestadas: esclareça o significado de palavras adotadas de um idioma diferente. Por exemplo, bouillabaisse em francês é traduzido como bouillabaisse em inglês, um prato de ensopado de peixe.
Os termos em um glossário podem ser palavras únicas (também chamadas de tokens) ou frases curtas, geralmente com menos de cinco palavras. A Vertex AI Translation ignora as entradas correspondentes do glossário se as palavras forem palavras de parada.
A Vertex AI Translation oferece os seguintes métodos de glossário disponíveis no Google Distributed Cloud (GDC) com isolamento físico:
Método | Descrição |
---|---|
CreateGlossary |
Crie um glossário. |
GetGlossary |
Retorna um glossário armazenado. |
ListGlossaries |
Retorna uma lista de IDs de glossários em um projeto. |
DeleteGlossary |
Exclua um glossário que não seja mais necessário. |
Antes de começar
Antes de criar um glossário para definir sua terminologia de tradução, você precisa
ter um projeto chamado translation-glossary-project
. O recurso personalizado do
projeto precisa ser semelhante ao exemplo a seguir:
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 receber as permissões necessárias para usar um glossário, peça ao administrador do IAM do projeto para conceder a você os seguintes papéis no namespace do projeto:
- Desenvolvedor de tradução de IA: receba a função
Desenvolvedor de tradução de IA (
ai-translation-developer
) para acessar o serviço de tradução da Vertex AI. - Administrador de buckets do projeto: receba o papel de administrador de buckets do projeto (
project-bucket-admin
) para gerenciar buckets de armazenamento e objetos dentro deles, o que permite criar e fazer upload de arquivos.
Para mais informações sobre pré-requisitos, consulte Configurar um projeto de tradução.
Criar um arquivo de glossário
Você precisa criar um arquivo de glossário para armazenar os termos nos idiomas de origem e de destino. Esta seção contém os dois layouts de glossário diferentes que você pode usar para definir seus termos.
A tabela a seguir descreve os limites aceitos no Distributed Cloud para arquivos de glossário:
Descrição | Limite |
---|---|
Tamanhos máximos dos arquivos | 10,4 milhões (10.485.760) de bytes UTF-8 |
Comprimento máximo de um termo do glossário | 1.024 bytes UTF-8 |
Número máximo de recursos de glossário para um projeto | 10.000 |
Escolha um dos seguintes layouts para o arquivo de glossário:
- Glossário unidirecional: especifique a tradução esperada para um par de termos de origem e de destino em um idioma específico. Os glossários unidirecionais são compatíveis com os formatos de arquivo TSV, CSV e TMX.
- Glossário de conjuntos de termos equivalentes: especifique a tradução esperada em vários idiomas em cada linha. Os glossários de conjuntos de termos equivalentes são compatíveis com formatos de arquivo CSV.
Glossário unidirecional
A API Vertex AI Translation aceita valores separados por tabulação (TSV) e valores separados por vírgula (CSV). Cada linha contém um par de termos separados por uma tabulação (\t
) ou uma vírgula (,
) para esses formatos de arquivo.
A API Vertex AI Translation também aceita o formato Translation Memory eXchange (TMX), um formato XML padrão para fornecer pares de termos de origem e destino da tradução. Os arquivos de entrada aceitos estão em um formato baseado na versão 1.4 do TMX.
Os exemplos a seguir mostram a estrutura necessária para formatos de arquivo TSV, CSV e TMX de glossários unidirecionais:
TSV e CSV
A imagem a seguir mostra duas colunas em um arquivo TSV ou CSV. A primeira coluna contém o termo no idioma de origem, e a segunda contém o termo no idioma de destino.
Ao criar um arquivo de glossário, é possível definir uma linha de cabeçalho. A solicitação de glossário disponibiliza o arquivo para a API Vertex AI Translation.
TMX
O exemplo a seguir ilustra a estrutura necessária em um arquivo 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>
Se o arquivo contiver tags XML que não aparecem neste exemplo, a API Vertex AI Translation as ignorará.
Inclua os seguintes elementos no arquivo TMX para garantir o processamento bem-sucedido pela API Translation da Vertex AI:
<header>
: identifique o idioma de origem usando o atributosrclang
.<tu>
: inclua um par de elementos<tuv>
com os mesmos idiomas de origem e de destino. Esses elementos<tuv>
obedecem ao seguinte:- Cada elemento
<tuv>
identifica o idioma do texto contido usando o atributoxml:lang
. Use os códigos ISO-639-1 para identificar os idiomas de origem e de destino. Confira a lista de idiomas aceitos e os respectivos códigos. - Se um elemento
<tu>
contiver mais de dois elementos<tuv>
, a API Vertex AI Translation processará apenas o primeiro elemento<tuv>
correspondente ao idioma de origem e o primeiro elemento<tuv>
correspondente ao idioma de destino. O serviço ignora o restante dos elementos<tuv>
. - Se um elemento
<tu>
não tiver um par correspondente de elementos<tuv>
, a API Vertex AI Translation vai ignorar o elemento<tu>
inválido.
- Cada elemento
<seg>
: representam strings de texto generalizadas. A API Vertex AI Translation exclui as tags de marcação de um elemento<seg>
antes de processar o arquivo. Se um elemento<tuv>
contiver mais de um elemento<seg>
, a API Vertex AI Translation vai concatenar o texto em um único elemento com um espaço entre as strings de texto.
Depois de identificar os termos no glossário unidirecional, faça upload do arquivo para um bucket de armazenamento e disponibilize-o para a API Vertex AI Translation criando e importando um glossário.
Glossário de conjuntos de termos equivalentes
A API Vertex AI Translation aceita arquivos de glossário para conjuntos de termos equivalentes usando o formato CSV. Para definir conjuntos de termos equivalentes, crie um arquivo CSV de várias colunas em que cada linha lista um único termo do glossário em vários idiomas. Confira a lista de idiomas compatíveis e os respectivos códigos.
A imagem a seguir mostra um exemplo de arquivo CSV de várias colunas. Cada linha representa um termo do glossário, e cada coluna representa uma tradução do termo em diferentes idiomas.
O cabeçalho é a primeira linha do arquivo, que identifica o idioma de cada coluna. A linha de cabeçalho usa os códigos de idioma padrão ISO-639-1 ou BCP-47. A API Vertex AI Translation não usa informações de classe gramatical (pos
), e valores de posição específicos não são validados.
Cada linha posterior contém termos de glossário equivalentes nos idiomas identificados no cabeçalho. Deixe as colunas em branco se o termo não estiver disponível em todos os idiomas.
Depois de identificar os termos de glossário no conjunto de termos equivalentes, faça upload do arquivo para um bucket de armazenamento e disponibilize-o para a API Vertex AI Translation criando e importando um glossário.
Fazer upload do arquivo de glossário para um bucket de armazenamento
Siga estas etapas para fazer upload do arquivo de glossário em um bucket de armazenamento:
- Configure a CLI gdcloud para armazenamento de objetos.
Crie um bucket de armazenamento no namespace do projeto. Use uma classe de armazenamento
Standard
.Para criar o bucket de armazenamento, implante um recurso
Bucket
no namespace do projeto: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
Conceda permissões
read
no bucket à conta de serviço (ai-translation-system-sa
) usada pelo serviço Vertex AI Translation.Siga estas etapas para criar a função e a vinculação de função usando recursos personalizados:
Crie a função implantando um recurso
Role
no namespace do projeto: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
Implante um recurso
RoleBinding
no namespace do projeto para criar a vinculação de função: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
Faça upload do arquivo de glossário para o bucket de armazenamento que você criou. Para mais informações, consulte Fazer upload e download de objetos de armazenamento em projetos.
Criar um glossário
O método CreateGlossary
cria um glossário e retorna o identificador para a
operação de longa duração que
gera o glossário.
Para criar um glossário, substitua o seguinte antes de usar os dados da solicitação:
ENDPOINT
: o endpoint da Vertex AI Translation que você usa na sua organização. Para mais informações, consulte o status e os endpoints do serviço.PROJECT_ID
: o ID do projeto.GLOSSARY_ID
: o ID do glossário, que é o nome do recurso.BUCKET_NAME
: o nome do bucket de armazenamento em que o arquivo de glossário está localizado.GLOSSARY_FILENAME
: o nome do arquivo de glossário no bucket de armazenamento.
Esta é a sintaxe de uma solicitação HTTP para criar um glossário:
POST https://ENDPOINT/v3/projects/PROJECT_ID/glossaries
De acordo com o arquivo de glossário que você criou, escolha uma das seguintes opções para criar um glossário:
Unidirecional
Para criar um glossário unidirecional, especifique um par de idiomas (language_pair
) com um idioma de origem (source_language_code
) e um idioma de destino (target_language_code
).
Siga estas etapas para criar um glossário unidirecional:
Salve o corpo da solicitação a seguir em um arquivo JSON chamado
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" } } }
Substitua:
SOURCE_LANGUAGE
: o código do idioma de origem do glossário. Confira a lista de idiomas compatíveis e os respectivos códigos.TARGET_LANGUAGE
: o código do idioma de destino do glossário. Confira a lista de idiomas compatíveis e os respectivos códigos.
Faça a solicitação. Os exemplos a seguir usam um método da API REST e a linha de comando, mas também é possível usar bibliotecas de cliente para criar um glossário unidirecional.
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"
Substitua TOKEN
pelo
token de autenticação
que você recebeu.
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
Substitua TOKEN
pelo
token de autenticação
que você recebeu.
Você vai receber uma resposta JSON semelhante a esta:
{
"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 termos equivalentes
Para criar um glossário de conjuntos de termos equivalentes, especifique um conjunto de idiomas (language_codes_set
) com os códigos de idioma (language_codes
) do glossário.
Siga estas etapas para criar um glossário de conjunto de termos equivalente:
Salve o corpo da solicitação a seguir em um arquivo JSON chamado
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" } } }
Substitua
LANGUAGE_CODE
pelo código do idioma ou dos idiomas do glossário. Confira a lista de idiomas aceitos e os respectivos códigos.Faça a solicitação:
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"
Substitua TOKEN
pelo
token de autenticação
que você recebeu.
Você vai receber uma resposta JSON semelhante a esta:
{
"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
Substitua TOKEN
pelo
token de autenticação
que você recebeu.
Você vai receber uma resposta JSON semelhante a esta:
{
"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
Instale a versão mais recente da biblioteca de cliente da Vertex AI Translation.
Defina as variáveis de ambiente necessárias em um script Python.
Adicione o seguinte código ao script Python que você criou:
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", ...
Salve o script Python.
Execute o script Python:
python SCRIPT_NAME
Substitua SCRIPT_NAME
pelo nome que você deu ao
script do Python, como glossary.py
.
Para mais informações sobre o método create_glossary
, consulte a biblioteca de cliente Python.
Dependendo do tamanho do arquivo, a criação de um glossário geralmente leva menos de 10 minutos. É possível recuperar o status dessa operação para saber quando ela será concluída.
Acessar um glossário
O método GetGlossary
retorna um glossário armazenado. Se o glossário não existir, a saída vai retornar o valor NOT_FOUND
. Para chamar o método GetGlossary
, especifique o ID do projeto e do glossário. Os métodos
CreateGlossary
e ListGlossaries
retornam o ID do glossário.
Por exemplo, as solicitações a seguir retornam informações sobre um glossário específico no seu projeto:
curl
curl -X GET \
-H "Authorization: Bearer TOKEN" \
"http://ENDPOINT/v3/projects/PROJECT_ID/glossaries/GLOSSARY_ID"
Substitua TOKEN
pelo
token de autenticação
que você recebeu.
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))
Listar glossários
O método ListGlossaries
retorna uma lista de IDs de glossário em um projeto. Se um glossário não existir, a saída vai retornar o valor NOT_FOUND
. Para chamar o método
ListGlossaries
, especifique o ID do projeto e o
endpoint da Vertex AI Translation.
Por exemplo, a solicitação a seguir retorna uma lista de IDs de glossário no seu projeto:
curl -X GET \
-H "Authorization: Bearer TOKEN" \
"http://ENDPOINT/v3/projects/PROJECT_ID/glossaries?page_size=10"
Substitua TOKEN
pelo
token de autenticação
que você recebeu.
Excluir um glossário
O método DeleteGlossary
exclui um glossário. Se o glossário não existir, a saída vai retornar o valor NOT_FOUND
. Para chamar o método DeleteGlossary
,
especifique o ID do projeto, o ID do glossário e o
endpoint da Vertex AI Translation.
Os métodos
CreateGlossary
e ListGlossaries
retornam o ID do glossário.
Por exemplo, a solicitação a seguir exclui um glossário do seu projeto:
curl -X DELETE \
-H "Authorization: Bearer TOKEN" \
"http://ENDPOINT/v3/projects/PROJECT_ID/glossaries/GLOSSARY_ID"
Substitua TOKEN
pelo
token de autenticação
que você recebeu.