Tuesday, July 14, 2009

Corrector fonético

Todos los que usamos la computadora para escribir textos, utilizamos comúnmente algún tipo de procesador de palabras. Este mercado, sin duda fundamental en el cómputo personal, se ha desarrollado de manera impresionante, a tal grado que algunas empresas venden sistemas completos que contienen todo lo que el usuario puede necesitar: hoja de cálculo, programa para presentación de conferencias, procesador de textos, bases de datos, etc. A esto se le ha denominado una “suite” de aplicaciones y las prestaciones de cada una de ellas ha logrado su propio nicho de clientes. Sin embargo, es claro que la campaña mediática de algunas compañías de software, o bien, el hecho de traer “preinstalado” en las computadoras en venta esas suites, hace que muchos usuarios se conviertan en una especie de clientes cautivos.

Ése es quizás el caso de la Suite Office, de Microsoft, que sin duda es líder del mercado en este nicho particular de aplicaciones y además de las razones ya expuestas, es evidente que la calidad de sus productos lo hacen ciertamente uno de los favoritos. Es decir, hay que reconocer que amén de la publicidad que la empresa de las ventanas pueda hacer, es claro que sus productos realizan con bastante versatilidad las tareas encomendadas.

Como sea, lo importante de un procesador de palabras no es nada más que permita la escritura de documentos, sino que además, corrija los errores que los usuarios cometemos al escribir algún texto. MsWord, por poner el programa más popular en el mercado, tiene sus propias dificultades. Por ejemplo, hace unos años se descubrió una cantidad de pifias bastante graves en el tesaurus de MsWord. Definiciones como la de “flojo”, si mal no recuerdo, que aludían a los de ciertos pueblos latinoamericanos, solamente podían explicarse por la xenofobia del creador de dicho archivo de definiciones. Microsoft contestó a las críticas indicando que un nuevo equipo de lingüistas y gente profesional de la palabra, haría una revisión exhaustiva de estos problemas para que no volvieran a ocurrir. Hasta donde sé, las correcciones se habrán hecho, pues nadie más ha encontrado este tipo de errores después de que fueron señalados.


La pantalla principal del verificador fonético

Sin embargo, a veces los correctores integrados al procesador de palabras no funcionan correctamente. Ilustremos el caso: uno escribe la palabra “etsa”, por decir algo, y el sistema no lo cambia por “esta”, ni se da cuenta del error de dedo. ¿Cómo lidiar con este tipo de errores? ¿qué tipo de software podría atrapar estos problemillas, simples “errores de dedo”? Pues bien, hace unos años, para ser precisos, en 1988, Enricco Wizard, un buen colega y mejor amigo, que murió hace un par de años, discutía conmigo acerca de esta dificultad. Después de un par de horas de someter al ring de las ideas los diferentes aspectos del problema, Enricco dio con una solución simpática: se le ocurrió hallar todas las parejas de letras posibles en las palabras en español y entonces comparar contra esa lista de dos letras contra cada palabra y así ver si había errores de dedo. Así, se escribió una primera versión de lo que Wizard llamó el “turbo verificador” (pues estaba escrito en Turbo Pascal 5.5). El programa trabajaba realmente bien y era muy, pero muy rápido. Hoy, casi 20 años después, decidí pasar este esfuerzo a Windows. Tomé el código fuente que Enricco escribió, lo modifiqué de acuerdo a la herramienta que uso actualmente (Delphi) y de nuevo, note que el sistema corre rápido y que además, hace la tarea fenomenalmente bien.

Desde luego que el mérito principal de este esfuerzo de software es de Enricco Wizard, que ya no está entre nosotros, pero que ha dejado en el tintero algunas ideas que han sobrepasado, sin duda, la prueba del tiempo.

El software está disponible para quien deseé probarlo. Escríbanme a morsa@la-morsa.com y a vuelta de correo tendrá el software y cómo se instala.

6 comments:

Kike Cerati Clark said...

Orale, se lee interesante el programa, si me interesaría tenerno, ups tenerlo (ojalá se pudiera tener en javascript pa' errores en blogs :P)
Y el problema que hubo con Microsoft según recuerdo, era que al buscar los sinónimos de mariachi, estaba flojo, perezoso, etc.
A lo mejor es xenofóbico o en el mejor de los casos con poco tacto, porque recuerdo a mi 'apá q me decía "Ay kike tan mariachi" pero usando "mariachi" como "sope" o "sopenco" (claro como mucho cariño, creo). Y bueno en sí es una expresión de la familia de mi papá, justamente de Gdl.

Salu2

Ernesto said...

Hola!

Ya estuve probando el programa de Enrico y Manuel.
Lo corrí sobre XP dentro de mi parallels.

Me salieron unos errores de IO, pero parece ser que eran debido a que los archivos de texto que le pasaba al programa estaban en UNICODE 8.

Después de eso, el programa me generó un out.txt con el resultado de la corrección.

Sin ánimos de quitarle mérito a Manuel; lo interesante y maravilloso no es el programa, sino el algoritmo.

Si a uno se lo plantean, uno dice: "¡Que sencillo!" y uno no se explica por que a nadie se le había ocurrido. Al menos yo no había escuchado de una solución tan simple.

Considerando lo sencillo del programa, su tasa de detección de errores ortográficos es sorprendentemente alto.

Ahora el reto para mí, sería, hacer una versión de una sola línea de código. Con expresiones regulares.

En este contexto, simple y sencillo es un cumplido.

Saludos!
Ernesto

Morsa said...

Gracias, Ernesto... Ahora queda ver cómo encaras el reto que te has impuesto...

saludos
Manuel

Cyberprimo said...

Interesantisimo que suena el programa al rato mando un email para checarlo en carne propia, lo que me parece bueno es la idea de tu amigo Q.E.P.D

"hallar todas las parejas de letras posibles en las palabras en español y entonces comparar contra esa lista de dos letras contra cada palabra y así ver si había errores de dedo"

Sencillo como dijeron por ahi pero a nadie se le ocurrio sino a Enricco Wizard XD, me supongo habra una BD algo grande contra que comparar, asi que ya no habra excusas para mis errores de dedo XD

Saludos

Ernesto said...

En realidad la base de datos en muy pequeña.

Si fueran todas las confinaciones de dos letras. 26^2=676 pares.

Los pares válidos en realidad son mucho menos.

Saludos

Akheron said...

Que hay, bueno pues al parecer leo e imagino el esfuerzo para generar un algoritmo tan efeciente como el que leo en los comments, es por eso que me gustaria probar el programa. =D