¿Cómo funcionan los traductores automáticos? (I)

Un traductor automático es un sistema que traduce texto de un idioma a otro. El ejemplo más famoso sin duda (creo yo) debe ser el traductor de Google, pero también hay otros de uso muy frecuente como el traductor Reverso o, haciendo un poco de publicidad al equipo de la casa, el traductor Catalán-Castellano de la UPC que suele recibir en promedio unas 160 visitas diarias, un 3% de ellas desde teléfonos móviles.

En este artículo pretendo hacer una introducción a la manera en que funcionan estos sistemas, alejándome lo más posible de las formas complicadas de los ingenieros y científicos. Es el primero de una serie de artículos en los que iré describiendo, cada vez con más detalle, los procesos involucrados en la traducción automática estadística.

Si te fijas bien he añadido un nuevo término al sistema, “estadística”. Es la palabra clave sobre la que se sustentan los sistemas de traducción de los que estaremos hablando en esta sección. No es la única manera de traducir, también existe la traducción automática basada en reglas por ejemplo, pero en nuestro caso nos centraremos en la Traducción Automática Estadística (SMT por sus siglas en inglés).

Los sistemas de traducción estadísticos parten de lo que se conoce como un corpus bilingüe. Más allá de lo atemorizante que pueda parecer el nombre, un corpus bilingüe no es más que una colección de documentos que están escritos en dos idiomas. Por ejemplo, el diario catalán “El Periódico” se distribuye en dos versiones: en catalán y en español. Otro ejemplo típico pueden ser los subtítulos de alguna película, las transcripciones de las sesiones del Parlamento Europeo o algunos artículos de Wikipedia. A continuación pueden ver las versiones castellana y catalana de El Periódico.

Ediciones castellana y catalana de El Periódico

Una vez que disponemos de un corpus bilingüe pasamos a la etapa de alineación. La finalidad de la alineación del corpus es crear una correspondencia entre las palabras de un idioma y otro. Aquí empieza la estadística a jugar un papel importante.

Imagina que compraste ambas versiones del diario y te has puesto a comparar una noticia en ambos idiomas, oración por oración. Al hacer la comparación, notas que ciertas palabras en español siempre se corresponde con otras en catalán. Por ejemplo en la imagen anterior podemos ver (con cierto esfuerzo dependiendo del tamaño de tu pantalla),  que la palabra “reducir” del segundo titular se corresponde con “reduir” y que “hijos” en el tercer titular se corresponde con “fills”. Estas asociaciones las hacemos fácilmente debido a la similitud entre estos dos idiomas.

Pues bien, durante la etapa de alineación el sistema observa millones de oraciones escritas en ambos idiomas (y en las cuales una es traducción de la otra) y a partir de esas observaciones construye asociaciones entre palabras. Se necesitan muchos pares de oraciones para llegar a asociaciones correctas. Tomemos por ejemplo, el siguiente par de oraciones.:

Estimo als meus fills – Amo a mis hijos

Observando solo este caso, no podríamos decir con certeza que “fills” se traduce como “hijos”. Bien podría ser “mis” o “Amo”, o incluso “a”. Sin saber nada del idioma, es imposible de determinar. En cambio, supongamos que nuestro corpus es más grande y tenemos dos pares de oraciones más:

Has vist als seus fills? – ¿Has visto a sus hijos?

Els fills de l’Elena no volen jugar – Los hijos de Elena no quieren jugar

Ahora sí empezamos a notar que en todas las oraciones catalanas que aparece “fills”, la versión en castellano tiene la palabra “hijos”. Mientras más grande sea el corpus, con más certeza pueden crearse las asociaciones.

Una vez completado el alineamiento de todos los pares de oraciones, utilizamos las asociaciones resultantes como piezas de Lego. Cada vez que queramos traducir una oración nueva, buscamos entre nuestras millones de piezas (sí, se crean millones de ellas) las que van encajando con nuestra oración y así se va formando la traducción. Algunos ejemplos de pieza tomados de las oraciones anteriores: “jugar -> jugar”, “fills -> hijos”, “vist -> visto”, “volen -> quieren”.

Vamos a dejarlo hasta aquí por hoy. Aún quedan muchos temas pendientes por resolver, por ejemplo: qué pasa cuando el orden de escritura de un idioma es distinto al de otro (como un “libro azul” y “blue book”), cómo te aseguras que la pieza que elegiste es la correcta (“duda” en castellano es femenino pero en catalán es masculino, por lo tanto “una duda” se traduce como “un dubte”, no “una dubta”) o qué pasa con los términos con muchas palabras (“fire truck” es “camión de bomberos”, no “camión de fuego” y mucho menos “fuego camión”).

Hoy hemos hablado de la definición de un corpus bilingüe, el proceso de alineado y la traducción “palabra a palabra” entre un idioma y otro. En la próxima entrega trataremos la traducción basada en frases (en contraste con la de hoy basada en palabras) y definiremos lo que es un modelo de traducción y un modelo de lenguaje y cómo trabajan conjuntamente para traducir. Empezará a aparecer un poco de matemáticas pero nada del otro mundo.

Por último les dejo unos enlaces que pueden ser de interés para los programadores que se hayan pasado por aquí, con las principales herramientas de código abierto que se utilizan para construir sistemas de traducción estadísticos:

Moses – Sistema de traducción que incluye scripts y tutoriales para todas las fases  involucradas en la creación del sistema. Desarrollado en C++.

Joshua – Sistema de traducción estadístico basado en frases jerárquicas con un tutorial para partir desde cero. Desarrollado en Java.

GIZA++ – Sistema que realiza el proceso de alineado de un corpus bilingüe. Desarrollado en C++.

SRILM – Paquete utilizado para construir modelos de lenguaje estadísticos. Desarrollado en C++.

Machine Translation Archive – Repositorios con publicaciones científicas relacionadas con la traducción automática.

Espero que les haya gustado y si tienen alguna pregunta sobre lo que hemos visto hasta ahora, no duden en hacerla.

Continúa en ¿Cómo funcionan los traductores automáticos? (II) >>

3 thoughts on “¿Cómo funcionan los traductores automáticos? (I)

  1. Estupendo artículo!!! estupendo!! Me acuerdo aun de cuando “el Periódico” empezó y que salió en un diario impreso el nombre de “Juliol Esglèsia”, refiriéndose a “Julio Iglesias”. La cosa ha mejorado por lo que veo y leo 🙂 felicidades!

  2. Has tenido una excelente iniciativa. Me interesa mucho este campo y te agradezco mucho que intentes explicarlo de forma más amena. Espero algún día poder leer el libro “Statistical Machine Translation” y enterarme medianamente de lo que dice… Muchas gracias.

Deja un comentario