Como usar a API Translation com Python

1. Visão geral

1e2217da0416d129.png

A API Translation oferece uma interface programática simples para traduzir dinamicamente uma string arbitrária para qualquer idioma compatível usando a tradução automática neural de última geração. Ela também pode ser usada para detectar um idioma quando o idioma de origem é desconhecido.

Neste tutorial, você vai usar a API Translation com o Python. Os conceitos abordados incluem como listar os idiomas disponíveis, traduzir textos e detectar o idioma de um determinado texto.

O que você vai aprender

  • Como configurar o ambiente
  • Como listar os idiomas disponíveis
  • Como traduzir textos
  • Como detectar idiomas

O que é necessário

  • um projeto do Google Cloud;
  • Use um navegador, como o Chrome ou o Firefox.
  • Familiaridade com o Python

Pesquisa

Como você vai usar este tutorial?

Apenas leitura Ler e fazer os exercícios

Como você classificaria sua experiência com Python?

Iniciante Intermediário Proficiente

Como você classificaria sua experiência com os serviços do Google Cloud?

Iniciante Intermediário Proficiente

2. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google e pode ser atualizada quando você quiser.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser mudado após a definição. O console do Cloud gera automaticamente uma string exclusiva. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não vai ser muito cara, se tiver algum custo. Para encerrar os recursos e evitar cobranças além deste tutorial, exclua os recursos criados ou exclua o projeto. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud possa ser operado remotamente em seu laptop, neste codelab usaremos o Cloud Shell, um ambiente de linha de comando executado no Cloud.

Ativar o Cloud Shell

  1. No Console do Cloud, clique em Ativar o Cloud Shell853e55310c205094.png.

3c1dabeca90e44e5.png

Se esta for a primeira vez que você iniciar o Cloud Shell, vai aparecer uma tela intermediária com a descrição dele. Se esse for o caso, clique em Continuar.

9c92662c6a846a5c.png

Leva apenas alguns instantes para provisionar e se conectar ao Cloud Shell.

9f0e51b578fecce5.png

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB e é executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Praticamente todo o trabalho neste codelab pode ser feito em um navegador.

Depois de se conectar ao Cloud Shell, você vai notar que sua conta já está autenticada e que o projeto está configurado com seu ID do projeto.

  1. Execute o seguinte comando no Cloud Shell para confirmar se a conta está autenticada:
gcloud auth list

Resposta ao comando

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Execute o comando a seguir no Cloud Shell para confirmar se o comando gcloud sabe sobre seu projeto:
gcloud config list project

Resposta ao comando

[core]
project = <PROJECT_ID>

Se o projeto não estiver configurado, configure-o usando este comando:

gcloud config set project <PROJECT_ID>

Resposta ao comando

Updated property [core/project].

3. Configuração do ambiente

Antes de começar a usar a API Translation, execute o seguinte comando no Cloud Shell para ativá-la:

gcloud services enable translate.googleapis.com

Você verá algo como:

Operation "operations/..." finished successfully.

Agora você pode usar a API Translation.

Defina a seguinte variável de ambiente (para ser usada no seu app):

export PROJECT_ID=$(gcloud config get-value core/project)

echo "PROJECT_ID: $PROJECT_ID"

Navegue até o diretório principal:

cd ~

Crie um ambiente virtual em Python para isolar as dependências:

virtualenv venv-translate

Ative o ambiente virtual:

source venv-translate/bin/activate

Instale o IPython e a biblioteca de cliente da API Translation:

pip install ipython google-cloud-translate

Você verá algo como:

...
Installing collected packages: ..., ipython, google-cloud-translate
Successfully installed ... google-cloud-translate-3.16.0 ...

Agora você já pode usar a biblioteca de cliente da API Translation.

Nas próximas etapas, você vai usar um interpretador interativo do Python chamado IPython, que foi instalado na etapa anterior. Inicie uma sessão executando ipython no Cloud Shell:

ipython

Você verá algo como:

Python 3.10.12 (main, Jul 29 2024, 16:56:48) [GCC 11.4.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.27.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Copie o seguinte código na sua sessão do IPython:

from os import environ

from google.cloud import translate


PROJECT_ID = environ.get("PROJECT_ID", "")
assert PROJECT_ID
PARENT = f"projects/{PROJECT_ID}"

Você está pronto para fazer sua primeira solicitação e listar os idiomas compatíveis...

4. Listar os idiomas disponíveis

Nesta seção, você vai listar todos os idiomas disponíveis na API Translation.

Para listar os idiomas disponíveis, copie o seguinte código na sua sessão do IPython:

def print_supported_languages(display_language_code: str):
    client = translate.TranslationServiceClient()

    response = client.get_supported_languages(
        parent=PARENT,
        display_language_code=display_language_code,
    )

    languages = response.languages
    print(f" Languages: {len(languages)} ".center(60, "-"))
    for language in languages:
        language_code = language.language_code
        display_name = language.display_name
        print(f"{language_code:10}{display_name}")
    

Como chamar a função:

print_supported_languages("en")

Você vai receber algo como isto:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanian
am        Amharic
ar        Arabic
hy        Armenian
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

Confira o que você tem com o idioma de exibição em francês:

print_supported_languages("fr")

Você vai receber a mesma lista, classificada com os nomes em francês, semelhante a esta:

---------------------- Languages: 137 ----------------------
af        Afrikaans
sq        Albanais
de        Allemand
am        Amharique
en        Anglais
...
vi        Vietnamien
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zoulou

Tente usar outro código de idioma.

Resumo

Nesta etapa, você listou todos os idiomas disponíveis na API Translation. Confira a lista completa de idiomas compatíveis na página Suporte a idiomas.

5. Traduzir texto

Você pode usar a API Translation para traduzir texto de um idioma para outro. O texto é traduzido usando o modelo de tradução automática neural (NMT). Se o modelo NMT não for compatível com o par de idiomas de tradução solicitado, será usado o modelo de tradução automática baseada em frase (PBMT, na sigla em inglês). Para saber mais sobre o Google Tradutor e os modelos de tradução, consulte a postagem de anúncio do NMT.

Para traduzir texto, copie o seguinte código na sua sessão do IPython:

def translate_text(text: str, target_language_code: str) -> translate.Translation:
    client = translate.TranslationServiceClient()

    response = client.translate_text(
        parent=PARENT,
        contents=[text],
        target_language_code=target_language_code,
    )

    return response.translations[0]
    

Chame a função para traduzir o mesmo texto em diferentes idiomas:

text = "Hello World!"
target_languages = ["tr", "de", "es", "it", "el", "zh", "ja", "ko"]

print(f" {text} ".center(50, "-"))
for target_language in target_languages:
    translation = translate_text(text, target_language)
    source_language = translation.detected_language_code
    translated_text = translation.translated_text
    print(f"{source_language}{target_language} : {translated_text}")
    

Você vai receber o seguinte:

------------------ Hello World! ------------------
en → tr : Selam Dünya!
en → de : Hallo Welt!
en → es : ¡Hola Mundo!
en → it : Ciao mondo!
en → el : Γεια σου Κόσμο!
en → zh : 你好世界!
en → ja : 「こんにちは世界」
en → ko : 안녕하세요!

Resumo

Nesta etapa, você usou a API Translation para traduzir textos em vários idiomas. Saiba mais sobre como traduzir textos.

6. Detectar idiomas

Também é possível usar a API Translation para detectar o idioma de uma string de texto.

Copie o seguinte código na sua sessão do IPython:

def detect_language(text: str) -> translate.DetectedLanguage:
    client = translate.TranslationServiceClient()

    response = client.detect_language(parent=PARENT, content=text)

    return response.languages[0]
    

Chame a função para detectar o idioma de frases diferentes:

sentences = [
    "Selam Dünya!",
    "Hallo Welt!",
    "¡Hola Mundo!",
    "Ciao mondo!",
    "Γεια σου Κόσμο!",
    "你好世界!",
    "「こんにちは世界」",
    "안녕하세요!",
]
for sentence in sentences:
    language = detect_language(sentence)
    confidence = language.confidence
    language_code = language.language_code
    print(
        f"Confidence: {confidence:4.0%}",
        f"Language: {language_code:5}",
        sentence,
        sep=" | ",
    )
    

Você vai receber o seguinte:

Confidence: 100% | Language: tr    | Selam Dünya!
Confidence:  81% | Language: de    | Hallo Welt!
Confidence: 100% | Language: es    | ¡Hola Mundo!
Confidence: 100% | Language: it    | Ciao mondo!
Confidence: 100% | Language: el    | Γεια σου Κόσμο!
Confidence: 100% | Language: zh-CN | 你好世界!
Confidence: 100% | Language: ja    | 「こんにちは世界」
Confidence: 100% | Language: ko    | 안녕하세요!

Resumo

Nesta etapa, você detectou o idioma de um texto usando a API Translation. Saiba mais sobre como detectar idiomas.

7. Parabéns!

1e2217da0416d129.png

Você aprendeu a usar a API Translation com Python.

Limpeza

Para limpar seu ambiente de desenvolvimento no Cloud Shell:

  • Se você ainda estiver na sessão do IPython, volte para o shell: exit
  • Pare de usar o ambiente virtual do Python: deactivate
  • Exclua a pasta do ambiente virtual: cd ~ ; rm -rf ./venv-translate

Para excluir seu projeto do Google Cloud, faça o seguinte no Cloud Shell:

  • Extraia o ID do projeto atual: PROJECT_ID=$(gcloud config get-value core/project)
  • Verifique se este é o projeto que você quer excluir: echo $PROJECT_ID
  • Excluir o projeto: gcloud projects delete $PROJECT_ID

Saiba mais

Licença

Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.