Cómo usar la API de Translation con Python

1. Descripción general

1e2217da0416d129.png

La API de Translation brinda una interfaz programática simple para traducir de forma dinámica una cadena arbitraria a cualquier idioma compatible mediante la tecnología de última generación de traducción automática neuronal. También se puede utilizar para detectar un idioma en casos en los que se desconoce el idioma de origen.

En este instructivo, usarás la API de Translation con Python. Entre los conceptos que se abordan, se incluye la manera de enumerar los idiomas disponibles, traducir texto y detectar el idioma de un texto determinado.

Qué aprenderás

  • Cómo configurar tu entorno
  • Cómo enumerar los idiomas disponibles
  • Cómo traducir texto
  • Cómo detectar idiomas

Requisitos

  • Un proyecto de Google Cloud
  • Un navegador, como Chrome o Firefox.
  • Conocimientos de Python

Encuesta

¿Cómo usarás este instructivo?

Leer Leer y completar los ejercicios

¿Cómo calificarías tu experiencia en Python?

Principiante Intermedio Avanzado

¿Cómo calificarías tu experiencia con los servicios de Google Cloud?

Principiante Intermedio Avanzado .
.

2. Configuración y requisitos

Configuración del entorno de autoaprendizaje

  1. Accede a Google Cloud Console y crea un proyecto nuevo o reutiliza uno existente. Si aún no tienes una cuenta de Gmail o de Google Workspace, debes crear una.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • El Nombre del proyecto es el nombre visible de los participantes de este proyecto. Es una cadena de caracteres que no se utiliza en las APIs de Google. Puedes actualizarla cuando quieras.
  • El ID del proyecto es único en todos los proyectos de Google Cloud y es inmutable (no se puede cambiar después de configurarlo). La consola de Cloud genera automáticamente una cadena única. Por lo general, no importa cuál sea. En la mayoría de los codelabs, deberás hacer referencia al ID de tu proyecto (suele identificarse como PROJECT_ID). Si no te gusta el ID que se generó, podrías generar otro aleatorio. También puedes probar uno propio y ver si está disponible. No se puede cambiar después de este paso y se usa el mismo durante todo el proyecto.
  • Recuerda que hay un tercer valor, un número de proyecto, que usan algunas APIs. Obtén más información sobre estos tres valores en la documentación.
  1. A continuación, deberás habilitar la facturación en la consola de Cloud para usar las APIs o los recursos de Cloud. Ejecutar este codelab no costará mucho, tal vez nada. Para cerrar recursos y evitar que se generen cobros más allá de este instructivo, puedes borrar los recursos que creaste o borrar el proyecto. Los usuarios nuevos de Google Cloud son aptos para participar en el programa Prueba gratuita de $300.

Inicia Cloud Shell

Si bien Google Cloud se puede operar de manera remota desde tu laptop, en este codelab usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en la nube.

Activar Cloud Shell

  1. En la consola de Cloud, haz clic en Activar Cloud Shell853e55310c205094.png.

55efc1aaa7a4d3ad.png

Si es la primera vez que inicias Cloud Shell, verás una pantalla intermedia que describe en qué consiste. Si apareció una pantalla intermedia, haz clic en Continuar.

9c92662c6a846a5c.png

El aprovisionamiento y la conexión a Cloud Shell solo tomará unos minutos.

9f0e51b578fecce5.png

Esta máquina virtual está cargada con todas las herramientas de desarrollo necesarias. Ofrece un directorio principal persistente de 5 GB y se ejecuta en Google Cloud, lo que mejora considerablemente el rendimiento de la red y la autenticación. Gran parte de tu trabajo en este codelab, si no todo, se puede hacer con un navegador.

Una vez que te conectes a Cloud Shell, deberías ver que estás autenticado y que el proyecto está configurado con tu ID del proyecto.

  1. En Cloud Shell, ejecuta el siguiente comando para confirmar que tienes la autenticación:
gcloud auth list

Resultado del comando

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Ejecuta el siguiente comando en Cloud Shell para confirmar que el comando de gcloud conoce tu proyecto:
gcloud config list project

Resultado del comando

[core]
project = <PROJECT_ID>

De lo contrario, puedes configurarlo con el siguiente comando:

gcloud config set project <PROJECT_ID>

Resultado del comando

Updated property [core/project].

3. Configuración del entorno

Antes de comenzar a usar la API de Translation, ejecuta el siguiente comando en Cloud Shell para habilitarla:

gcloud services enable translate.googleapis.com

Debería ver algo como esto:

Operation "operations/..." finished successfully.

Ahora puedes usar la API de Translation.

Configura la siguiente variable de entorno (para usarla en tu aplicación):

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

echo "→ PROJECT_ID: $PROJECT_ID"

Navega a tu directorio principal:

cd ~

Crea un entorno virtual de Python para aislar las dependencias:

virtualenv venv-translate

Activa el entorno virtual:

source venv-translate/bin/activate

Instala IPython y la biblioteca cliente de la API de Translation:

pip install ipython google-cloud-translate

Debería ver algo como esto:

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

Ya está todo listo para usar la biblioteca cliente de la API de Translation.

En los siguientes pasos, usarás un intérprete de Python interactivo llamado IPython, que instalaste en el paso anterior. Para iniciar una sesión, ejecuta ipython en Cloud Shell:

ipython

Debería ver algo como esto:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.12.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Copia el siguiente código en tu sesión de IPython:

from os import environ

from google.cloud import translate


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

Ya puedes realizar tu primera solicitud y enumerar los idiomas compatibles...

4. Enumera los idiomas disponibles

En esta sección, obtendrás una lista de todos los idiomas disponibles en la API de Translation.

Para enumerar los lenguajes disponibles, copia el siguiente código en tu sesión de 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}")
    

Llama a la función:

print_supported_languages("en")

Deberías obtener un resultado similar al siguiente:

---------------------- Languages: 136 ----------------------
af        Afrikaans
ak        Akan
sq        Albanian
am        Amharic
ar        Arabic
...
cy        Welsh
xh        Xhosa
yi        Yiddish
yo        Yoruba
zu        Zulu

Descubra los beneficios del idioma de visualización en francés:

print_supported_languages("fr")

Deberías obtener la misma lista, ordenada con los nombres en francés, similar a este:

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

Puedes probar con otro código de idioma.

Resumen

En este paso, pudiste enumerar todos los idiomas disponibles en la API de Translation. Puedes encontrar la lista completa de idiomas admitidos en la página de idiomas admitidos.

5. Traducir texto

Puedes usar la API de Translation para traducir texto de un idioma a otro. El texto se traduce con el modelo de traducción automática neuronal (NMT). Si el modelo de NMT no es compatible con el par de traducción de idiomas solicitado, se usa el modelo de traducción automática basada en frases (PBMT). Para obtener más información sobre Google Traductor y sus modelos de traducción, consulta la entrada de anuncio de NMT.

Para traducir texto, copia el siguiente código en tu sesión de 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]
    

Llama a la función para traducir el mismo texto en 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}")
    

Deberías obtener lo siguiente:

------------------ 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 : 안녕하세요 세계!

Resumen

En este paso, pudiste usar la API de Translation para traducir texto a varios idiomas. Obtén más información sobre cómo traducir texto.

6. Detecta idiomas

También puedes usar la API de Translation para detectar el idioma de una cadena de texto.

Copia el siguiente código en tu sesión de IPython:

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

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

    return response.languages[0]
    

Llama a la función para detectar el idioma de diferentes oraciones:

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=" | ",
    )
    

Deberías obtener lo siguiente:

Confidence: 100% | Language: tr    | Selam Dünya!
Confidence:  80% | 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    | 안녕하세요 세계!

Resumen

En este paso, pudiste detectar el idioma de un texto con la API de Translation. Obtén más información sobre cómo detectar idiomas.

7. ¡Felicitaciones!

1e2217da0416d129.png

Aprendiste a usar la API de Translation con Python.

Realiza una limpieza

Para limpiar tu entorno de desarrollo, desde Cloud Shell, haz lo siguiente:

  • Si aún estás en la sesión de IPython, vuelve a la shell: exit
  • Deja de usar el entorno virtual de Python: deactivate
  • Borra tu carpeta de entorno virtual: cd ~ ; rm -rf ./venv-translate

Para borrar tu proyecto de Google Cloud de Cloud Shell, haz lo siguiente:

  • Recupera el ID de tu proyecto actual: PROJECT_ID=$(gcloud config get-value core/project)
  • Asegúrate de que este sea el proyecto que quieres borrar: echo $PROJECT_ID
  • Borrar el proyecto: gcloud projects delete $PROJECT_ID

Más información

Licencia

Este trabajo cuenta con una licencia Atribución 2.0 Genérica de Creative Commons.