Correo electrónico | nube@criptonube.com

Traducción automática de texto con Amazon Translate

Traducción automática de texto con Amazon Translate

Por Andrea Monzón

Amazon Translate es un servicio de AWS que, como su nombre lo indica, permite traducir grandes cantidades de texto de un lenguaje a otro. Amazon Translate soporta 71 lenguajes, como el español, inglés, alemán, francés, italiano y muchos más (ver documentación en: https://docs.aws.amazon.com/translate/latest/dg/what-is.html#language-pairs para más detalles). Detrás de cámaras, este servicio utiliza Machine Learning y aprendizaje continuo para mejorar la eficacia de las traducciones a lo largo del tiempo. También es capaz de detectar el lenguaje de la fuente cuando este no es especificado (utilizando Amazon Comprehend internamente), y la parte de terminología personalizada permite al usuario definir cómo se traducen términos o nombres que son únicos para la organización, dominio o industria que se está traduciendo. La habilidad de personalizar la salida con la terminología personalizada puede decrementar la cantidad de traducciones que necesitan ser editadas por traductores profesionales, resultando en ahorro de costos y traducciones más rápidas.

Hay muchísimos casos de uso para este servicio, como contenido de soporte en internet, la traducción de material introductorio interno de una organización, instrucciones para nuevos cargos, entre otros escenarios donde el mismo contenido debe estar disponible en diferentes idiomas.

¿Cómo empezar a implementarlo?

Un ejercicio muy sencillo para empezar a implementar Amazon Translate es algo como lo que se puede ver en este diagrama:

En este flujo, cuando un archivo de texto es cargado en el bucket de Amazon S3, eso actúa como un trigger para la función Amazon Lambda, que invoca al servicio de Amazon Translate para traducir el archivo que ha sido cargado, y luego dicha función almacena el resultado en un bucket de Amazon S3 (que para este ejemplo será el mismo bucket, pero también podría ser uno diferente).

Creando el bucket de Amazon S3

Lo primero que haremos será buscar el servicio de Amazon S3 dentro de la consola para crear el bucket que utilizaremos en esta implementación.

Una vez dentro del servicio de Amazon S3, buscaremos el botón naranja al lado derecho que dice Crear bucket. Dentro de la configuración del bucket, vamos llenando los campos:

  • Nombre del bucket: Colocamos un nombre para el bucket, este debe ser único globalmente, si el nombre ya existiera, Amazon S3 lo indicará para que elijamos otro. En mi caso, el bucket tiene el nombre de auto-s3-translate-07202
  • Región: us-east-1 (Virginia) para este ejercicio
  • Dejamos el resto de configuraciones por defecto, bajando en la página hasta llegar a la opción de Guardar bucket.

Función Amazon Lambda

Amazon Lambda es un servicio de cómputo serverless que nos permite correr código sin tener que preocuparnos por proporcionarle la infraestructura para hacerlo. Y en este caso, es en una función Lambda donde llevaremos la lógica para traducir los archivos que se suban a Amazon S3.

Al igual que Amazon S3, buscamos el servicio de Lambda dentro de la consola de AWS.

Y una vez dentro de Lambda, buscamos del lado derecho el botón que dice Crear una función.

En la configuración de la función, colocamos lo siguiente:

  • Dejamos seleccionada la opción que dice Crear desde cero
  • Nombre de la función: auto-s3-translate-function
  • Dejamos Node.js 14.x como runtime.
  • Dejamos el resto de configuraciones por defecto, y hacemos click sobre el botón de Crear una función hasta el final de la página.

Nos aparecerá el siguiente mensaje y nos redirigirá a la función que acabamos de crear.

Bajamos un poco, hasta el código fuente, y hacemos doble click sobre index.js para que nos muestre el código de nuestra función.

Antes de empezar a escribir código, necesitaremos que la función tenga los permisos suficientes para interactuar con Amazon S3 y Amazon Translate, por lo que hacemos click en Configuración, luego en Permisosy finalmente hacemos click sobre el rol de la función.

Ahora editaremos los permisos del rol haciendo click en y luego hacemos click en JSONdonde insertaremos lo siguiente:

{

    “Version”: “2012-10-17”,

    “Statement”: [

        {

            “Sid”: “ComprehendTranslate”,

            “Effect”: “Allow”,

            “Action”: [

                “comprehend:DetectDominantLanguage”,

                “translate:TranslateText”

            ],

            “Resource”: “*”

        },

        {

            “Sid”: “s3”,

            “Effect”: “Allow”,

            “Action”: [

                “s3:PutObject”,

                “s3:GetObject”,

                “s3:ListBucket”

            ],

            “Resource”: [

                “arn:aws:s3:::EL_NOMBRE_DE_NUESTRO_BUCKET/*”,

                “arn:aws:s3:::EL_NOMBRE_DE_NUESTRO_BUCKET”

            ]

        }

    ]

}

Luego hacemos click donde dice Revisar la política y le ponemos un nombre, como translator-policy y damos click donde dice Crear una política.

Posteriormente, haremos algunos cambios en las configuraciones generales de la función. A la izquierda de la pantalla hacemos click en donde dice Configuración general y luego en la parte derecha, sobre Editar. En donde dice Tiempo de espera colocamos 20 segundos y luego presionamos Guardar.

Ahora configuraremos el evento de Amazon S3 que iniciará automáticamente la ejecución de nuestro código. Siempre en la configuración, hacemos click en Desencadenadores y luego en Agregar desencadenador. En la parte de Seleccione un desencadenador podremos ver todas las opciones de eventos que existen para las funciones Lambda, en nuestro caso elegiremos la opción que dice Amazon S3. En los campos que aparecen, colocamos lo siguiente:

  • Bucket: EL_NOMBRE_DE_NUESTRO_BUCKET
  • Tipo de evento: dejamos seleccionada la opción de Todos los eventos de creación de objetos.
  • Prefijo: original/
  • Sufijo: .txt
  • Aceptamos la advertencia que aparece sobre invocación recurrente.
  • Hacemos click sobre Agregar.

Una vez hechos estos cambios, podemos iniciar la carga del código. Este se puede descargar desde el siguiente link: https://github.com/andreamz05/auto-s3-translate/blob/main/index.js

En el código mostrado ocurren una serie de pasos muy sencillos: la función se desencadena cuando se crea un nuevo objeto .txt en el bucket bajo la ruta original/, en la ejecución de la función, Amazon Lambda va a traer el contenido de ese archivo y lo envía a Amazon Translate para traducirlo al idioma inglés, y luego ese resultado que Amazon Translate retorna, es almacenado en el mismo bucket bajo la ruta de translations/.

Probando la función

Ahora para poder probar el funcionamiento, podemos crear un archivo .txt en nuestra computadora con el siguiente texto:

Amazon Translate es un servicio de traducción automática neuronal que ofrece traducción de idiomas rentable, personalizable, de alta calidad y rápida. La traducción automática neuronal es una forma de automatización de traducciones entre idiomas que usa modelos de aprendizaje profundo para ofrecer traducciones más naturales y precisas que los algoritmos estadísticos tradicionales y de traducción basados en reglas.

Con Amazon Translate, puede localizar contenido, como sitios web y aplicaciones para diversos usuarios, traducir grandes volúmenes de texto para análisis con facilidad y permitir una comunicación eficaz entre usuarios de diferentes idiomas.

Luego, en la consola nos dirigimos al servicio de Amazon S3 y al bucket que creamos para esta implementación. Dentro del bucket, buscamos el botón de Crear carpeta, y creamos una de nombre original. Estando dentro de esta carpeta, podemos arrastrar el archivo .txt con el texto a traducir, dejamos las opciones por defecto en el menú que nos aparece y damos click donde dice Cargar.

Unos instantes después de haber cargado el archivo, veremos en nuestro bucket de Amazon S3 la carpeta de translations y dentro de ella el archivo con la traducción del texto que cargamos previamente.

Lo descargamos y al abrirlo veremos el resultado siguiente:

Amazon Translate is a neural machine translation service that provides cost-effective, customizable, high-quality and fast language translation. Neural machine translation is a form of cross-language translation automation that uses deep learning models to deliver more natural and accurate translations than traditional statistical and rule-based translation algorithms.

With Amazon Translate, you can easily locate content, such as websites and applications for multiple users, translate large volumes of text for analysis, and enable efficient communication between users of different languages.

Que es justo la traducción del texto que cargamos al idioma inglés.

Conclusiones

Este es un ejemplo sencillo de lo que puede hacerse con Amazon Translate. Las aplicaciones de este servicio son muchas y la versatilidad que tiene hace que sea fácil y rápido empezar a implementarlo en nuestros propios proyectos.

Autor: Andrea Monzón

Más temas que te pueden interesar: