Modelo de traducción automática neuronal (NMT)

La traducción automática neuronal (NMT) estándar de Google evolucionó a partir del sistema de traducción de redes neuronales que Google presentó en noviembre de 2016, con muchas mejoras. Puede traducir a muchos idiomas y desde ellos en tiempo real.

Su ID de modelo es general/nmt.

Puedes acceder al modelo de NMT sin modificaciones a través de la API de Cloud Translation Basic o la API de Cloud Translation Advanced. Con la API de Cloud Translation Advanced, también puedes personalizarla.

En cualquier caso, debes tener un proyecto deGoogle Cloud que tenga habilitada la API de Cloud Translation y credenciales para realizar llamadas autenticadas. Para acceder al modelo con Python o algún otro lenguaje de programación, instala la biblioteca cliente v2 o v3 adecuada.

En los ejemplos que se muestran aquí, PROJECT_ID representa el ID de tu proyecto y REGION_NAME representa el nombre de la región técnica de la región Google Cloud en la que deseas ejecutar la operación de traducción (como us-central1). Usa códigos ISO-639 para identificar los idiomas de origen y destino cuando sea necesario.

Ejemplo de la API de Cloud Translation Basic REST

Puedes realizar una llamada a la API de Cloud Translation Basic con REST para TranslateText con el modelo de NMT. Puedes colocar los campos de solicitud en un archivo JSON con un nombre como request.json, de la siguiente manera:

{
  "q": ["Hello world", "My name is Jeff"],
  "target": "de"
}

La API de Cloud Translation - Basic solo admite el modelo de NMT, por lo que no es necesario que especifiques el modelo en la solicitud.

Luego, puedes usar un comando curl para enviar la solicitud:

!curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "x-goog-user-project: cloud-ml-translate-e2e-testing" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @request.json \
     "https://translate.googleapis.com/language/translate/v2"

La respuesta es un documento JSON con el siguiente aspecto:

{
  "data": {
    "translations": [
      {
        "translatedText": "Hallo Welt",
        "detectedSourceLanguage": "en"
      },
      {
        "translatedText": "Mein Name ist Jeff",
        "detectedSourceLanguage": "en"
      }
    ]
  }
}

Ejemplo de Python de la API de Cloud Translation Basic

Aquí tienes un ejemplo de código en Python para llamar a TranslateText en el modelo de NMT con la API de Cloud Translation - Basic. Como no se especificó ningún idioma de origen, la API intenta detectarlo automáticamente.

def translate_text(
  text: str | bytes | list[str] = "¡Hola amigos y amigas!",
  target_language: str = "en",
  source_language: str | None = None,
) -> dict:

  translate_client = translate_v2.Client()

  if isinstance(text, bytes):
    text = [text.decode("utf-8")]

  if isinstance(text, str):
    text = [text]

  results = translate_client.translate(
    values=text,
    target_language=target_language,
    source_language=source_language
  )

  for result in results:
    if "detectedSourceLanguage" in result:
      print(f"Detected source language: {result['detectedSourceLanguage']}")
    print(f"Input text: {result['input']}")
    print(f"Translated text: {result['translatedText']}")
    print()

  return results

translate_text()

El resultado es el siguiente:

Detected source language: es
Input text: ¡Hola amigos y amigas!
Translated text: Hello friends!

[{'translatedText': 'Hello friends!',
  'detectedSourceLanguage': 'es',
  'input': '¡Hola amigos y amigas!'}]

Ejemplo de la API de Cloud Translation Advanced REST

Puedes realizar una llamada a la API de Cloud Translation - Advanced con TranslateText usando el modelo de NMT predeterminado. Para ello, no especifiques un modelo o solicita explícitamente el modelo de NMT. Coloca los campos de la solicitud en un archivo JSON con un nombre como request.json, de la siguiente manera:

{
  "sourceLanguageCode": "en",
  "targetLanguageCode": "ru",
  "contents": ["Dr. Watson, come here!", "Bring me some coffee!"],
  "model": "projects/PROJECT_ID/locations/REGION_NAME/models/general/nmt"
}

Luego, puedes usar un comando curl para enviar la solicitud:

curl -X POST \
     -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     -H "x-goog-user-project: PROJECT_ID" \
     -H "Content-Type: application/json; charset=utf-8" \
     -d @request.json \
     "https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/REGION_NAME:translateText"

La respuesta es un documento JSON con el siguiente aspecto:

{
  "translations": [
    {
      "translatedText": "Доктор Ватсон, иди сюда!",
    },
    {
      "translatedText": "Принеси мне кофе!",
    }
  ]
}

Ejemplo de Python de la API de Cloud Translation Advanced

def translate():

  response = translate_v3.TranslationServiceClient().translate_text(
      contents=["Life is short.",
                "Art is long."],
      target_language_code='fr',
      source_language_code='en',
      parent=f"projects/{project_id}/locations/us-central1",
      model=f"{parent}/models/general/nmt"
  )

  print(response)

  return response

translate()

El resultado es un documento JSON con el siguiente aspecto:

translations {
  translated_text: "La vie est courte."
  model: "projects/261347268520/locations/us-central1/models/general/nmt"
}
translations {
  translated_text: "L'art est long."
  model: "projects/261347268520/locations/us-central1/models/general/nmt"
}