Ok

By continuing your visit to this site, you accept the use of cookies. These ensure the smooth running of our services. Learn more.

jueves, 26 junio 2014

Volumen de datos

informática, tecnologíaHace mucho tiempo, es decir como treinta y ocho años, en uno de mis primeros contratos de ingeniero informático, me tocó diseñar no sé qué encuesta que iba a ser almacenada en tarjetas perforadas de papel para luego procesarla en un computador central muy potente para la época. Mi tarea era poner el máximo de información en el mínimo de espacio. Cuando terminé mi primer diseño, me reuní con uno de los responsables que sacó la calculadora para ver cuántas tarjetas perforadas se iban a necesitar, cuánto costaría la captura de datos y el material. Llegó rápidamente a la conclusión de que era muy caro y me pidió que revisara el diseño para reducir la cantidad de información. No recuerdo exactamente, pero quizás no iban a ser más de dos mil o tres mil tarjetas que eran de ochenta caracteres aproximadamente, es decir que el fichero completo hubiera ocupado unos 234 KB. Hoy cualquier foto digital ocupa treinta veces más de kilobytes sin ningún problema. Esa anécdota que había casi olvidado me vino a la memoria pensando en el volumen de datos en línea que está al alcance de cualquiera gracias a la Internet. Sorprendente, ¿no?

lunes, 04 marzo 2013

De picas y de famas (4)

NV-IMP840.JPGMe entró la duda de que se cumpliera la desigualdad triangular. Entonces traté de encontrar un contraejemplo calculando la distancia de una cantidad muy grande de palabras con ayuda del computador. Al comienzo de los años 90 los PC no eran muy potentes. Mi programa calculó día y noche durante una semana sin llegar a encontrar un solo error.

Comentando estas dificultades con mi amigo Ascánder, me dio una idea genial. Como la fórmula funcionaba para palabras de la misma longitud, me dijo que podría considerar que dos palabras eran siempre de longitud igual rellenando la más corta con espacios. ¡Por fin pude probar que la fórmula así modificada era una distancia!

Me puse a la tarea de crear un prototipo de corrector ortográfico para la base de datos terminológica a partir de unas cincuenta mil palabras por idioma. Empecé con inglés, francés y español. El programa calculó día y noche durante una semana completa hasta llegar a una tabla completa de distancias que me daba resultados muy buenos y sugerencias de corrección impecables.

Todavía funciona en línea. Si uno busca una palabra que no está en la base, la interface propone una lista de palabras parecidas por si acaso se trata de un error de escritura.

Recuerdo que escribí un artículo para una revista especializada. La opinión del revisor del artículo era que a pesar de ser en efecto una fórmula de distancia, yo no había mostrado en qué era superior a la fórmula de distancia más comúnmente utilizada en informática y que consistía en calcular la distancia a partir del mínimo número de operaciones de edición necesarias para pasar de una palabra a otra con adiciones y supresiones de letras. Tenía razón, pero ese no era mi objetivo. Yo no quería demostrar que mi fórmula era mejor sino simplemente mostrar que funcionaba y era fácil de calcular.

Desistí de enviar el artículo a ese tipo de revistas, pero tuve la ocasión de presentarlo en una conferencia de ingeniería de terminología y bases de conocimientos en Alemania (TKE 1996). No estoy seguro de que el público haya entendido muy bien mi presentación, pero estuvo muy atento escuchándome.

Hoy podría adaptarla fácilmente al árabe y ruso, pero no vale la pena, ya que la mayor parte del tiempo las búsquedas se hace en inglés. Cuando uno busca en Google, el sistema propone palabras similares en caso de que no encuentre lo que uno busca o de que sospeche que uno busca otra cosa. Esos algoritmos de distancia están escondidos detrás de la pantalla. Curioso que un juego infantil me haya permitido realizar ese corrector ortográfico.

domingo, 03 marzo 2013

De picas y de famas (3)

programación, informática Cuando mi amigo Rodrigo supo que yo estaba escribiendo un programa para jugar Picas y Famas se interesó mucho en el algoritmo y en las bases matemáticas que empleaba. En esa época, él trabajaba en un ministerio, quizás el de hacienda. Se le ocurrió que la fórmula podría servir para encontrar no sé qué similitud entre los números de las cédulas de ciudadanía. Programó una prueba para ver si le funcionaba pero se equivocó en los parámetros pues en lugar de imprimir unas pocas páginas, usó una caja entera o más de papel perforado con copia de carbón que era de los más caros. Me contó que le tocó inventar una excusa para evitar problemas.

No sé quién nos dio la idea de escribir un artículo para una revista especializada. Lo cierto es que nunca lo escribimos y lo único que quedó fue el programa de demostración para cuando los estudiantes de informática fueran a visitar el centro de cálculo. Ni siquiera guardé copia para mí. Cuando cambiaron el computador solo me quedó el recuerdo.

Pasaron más de diez años hasta que tuve otra oportunidad de revivir la fórmula de las picas y famas para una aplicación diferente. Se trataba de un corrector ortográfico que propusiera palabras correctas suficientemente cercanas a la equivocada. Era para una base de datos terminológica. Me acordé del juego y empecé a ver si podía escribir una fórmula que cumpliera con la definición matemática de distancia.

Una función de distancia o métrica debe cumplir tres condiciones:

  1. La distancia entre dos puntos debe ser cero o positiva.
  2. Debe ser simétrica, es decir la distancia de A a B debe ser igual a la distancia de B a A y
  3. Las distancias entre tres puntos A, B y C deben cumplir la desigualdad triangular, es decir la suma de las distancias de A a B y de B a C siempre debe ser mayor a la distancia de A a B cualesquiera que sean los puntos A, B y C.

La función que me inventé calculaba un valor entre 0 y 1 a partir del número de picas y famas que tenían dos palabras entre sí. Mientras más parecidas, el valor era más cercano a cero; mientras más diferentes, el valor era más cercano a uno.

Pasé días tratando de probar matemáticamente que mi fórmula era una distancia. Lo pude demostrar para palabras que tuvieran el mismo número de letras, pero todo se complicaba con longitudes desiguales pues no llegaba a demostrar la desigualdad triangular.