Modelo de traducción automática neuronal (NMT)
La traducción automática neuronal (NMT) estándar de Google ha evolucionado a partir del sistema de traducción de redes neuronales que Google introdujo en noviembre del 2016, con muchas mejoras. Puede traducir de y a muchos idiomas en tiempo real.
Su ID de modelo es general/nmt.
Puedes acceder al modelo NMT sin modificaciones a través de la API Cloud Translation Basic o de la API Cloud Translation Advanced. Con la API Cloud Translation - Advanced, también puedes personalizarla.
En cualquier caso, debes tener un Google Cloud proyecto que tenga habilitada la API Cloud Translation y las credenciales para hacer llamadas autenticadas. Para acceder al modelo con Python u otro lenguaje de programación, instala la biblioteca de cliente v2 o v3 correspondiente.
En los ejemplos que se muestran aquí, PROJECT_ID representa el ID de tu proyecto y REGION_NAME representa el nombre técnico de la región Google Cloud en la que quieres ejecutar la operación de traducción (por ejemplo, us-central1). Usa los códigos ISO-639 para identificar los idiomas de origen y de destino cuando sea necesario.
Ejemplo de API REST de Cloud Translation - Basic
Puedes hacer una llamada REST con la API Cloud Translation - Basic para TranslateText con el modelo NMT. Puedes incluir los campos de solicitud en un archivo JSON llamado request.json, por ejemplo, de esta forma:
{
"q": ["Hello world", "My name is Jeff"],
"target": "de"
}
La API Cloud Translation Basic solo admite el modelo NMT, por lo que no es necesario que especifiques el modelo en la solicitud.
Después, 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 Cloud Translation - Basic
Aquí tienes un ejemplo de código de Python para llamar a TranslateText en el modelo NMT mediante la API Cloud Translation Basic.
Como no se ha especificado 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 API REST de Cloud Translation (Advanced)
Puedes hacer una llamada REST con la API Cloud Translation - Advanced para TranslateText usando el modelo NMT predeterminado. Para ello, no especifiques ningún modelo o solicita explícitamente el modelo NMT. Incluye los campos de la solicitud PUT en un archivo JSON llamado request.json, por ejemplo, de esta forma:
{
"sourceLanguageCode": "en",
"targetLanguageCode": "ru",
"contents": ["Dr. Watson, come here!", "Bring me some coffee!"],
"model": "projects/PROJECT_ID/locations/REGION_NAME/models/general/nmt"
}
Después, 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 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()
La salida es un documento JSON con este 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"
}