19 octubre 2006

Reconocedor de idiomas

Hace mucho, mucho tiempo leí en una revista "Scientific American" la forma de que un programa pueda reconocer un idioma o incluso generar un texto, por ejemplo en Alemán, de forma que aunque el texto no tenga sentido ninguno, una persona que no sepa Alemán lo identificaría inmediatamente como Alemán.

El algoritmo es bien sencillo. Basta tener varios textos de muestra en varios idiomas y hacer unas estadísticas sobre el número de apariciones de las letras o de las parejas de letras o de trios de letras. Por ejemplo, "hola", tiene las parejas "ho", "ol" y "la".

Cuando queramos saber un texto de qué idioma es, basta con comparar sus grupos de letras con los que tenemos en los distintos idiomas, para ver a cual se parece más.

En cuanto a generar el texto, sólo hay que apuntar después de cada pareja de letras, qué letra suele seguir a esa pareja concreta, qué probabilidades tiene cada letra de seguir a una pareja. En inglés, por ejemplo, detrás de un "th" es bastante posible que vaya una vocal y casi imposible que vaya otra consonante. Para generar el texto basta con elegir la primera pareja de letras e ir generando las siguientes letras de acuerdo con esas probabilidades.

Bien, pues al menos de la primera parte, la de reconocer el idioma, he hecho un pequeño programa de ejemplo en java, que por supuesto puedes probar en forma de Applet, bajarte los fuentes o el jar como aplicación independiente. Por supuesto, también, no garantizo en absoluto que funcione bien y sólo sirve para jugar un poco con él si te interesa el tema.

Lo de generar el texto, seguramente lo añada dentro de poco.

No hay comentarios: