5 de febrero de 2007

Buscar es hallar

El saber no ocupa lugar, pero llena Terabytes

El ser humano siempre ha sentido una gran pasión por el conocimiento, así como por el orden: Nuestros hijos nacen con el "por qué" en la boca y nuestras ciudades se asemejan, vistas desde el aire, a dameros gigantescos. Ordenar el conocimiento es la mejor manera de conservarlo y poder recuperarlo después. A lo largo de nuestra historia, los métodos de ordenación han ido desarrollándose de forma paralela al saber colectivo de la especie, pasando del papiro al libro y de este a las bibliotecas, la invención de la imprenta y, finalmente, la Red de redes.

La World Wide Web, la Red, la Telaraña mundial, Internet... Múltiples maneras de referirse al mismo fenómeno. Cómo lo llamen no es algo trascendental: como decía el difunto Douglas Adams, "La Telaraña Mundial es la única cosa que conozco cuya pronunciación resulta el triple de costoso en su forma abreviada [el típico "uve doble, uve doble, uve doble..."]", así que siéntase libres de referirse a la Red de la forma que les resulte más cómoda (eso sí: cuídense de los puristas).

Lo llamen como lo llamen, lo indiscutible es la gran utilidad que tiene el poder acceder a un torrente de datos tan diversos desde prácticamente cualquier parte del mundo. En Internet, cabe y prolifera todo: desde la información más superficial, como podrían ser las fotos de las vacaciones a Taipei de su vecino, hasta ese dato tan concreto acerca de la dieta de los lemures, pasando por todo tipo imaginable de información comercial, personal y didáctica.

Una aguja en un pajar

Esta obra del ser humano, que podría ser considerada una de las maravillas del mundo moderno, es un entramado de comunicaciones en el que todos somos libres de participar, donde cantidades ingentes de información están al alcance de cualquiera que posea una conexión a la Red. El Arte, la Ciencia, la Tecnología y las comunicaciones personales son llevadas a una nueva dimensión global, desapareciendo las limitaciones geográficas y fortaleciendo los vínculos intelectuales entre los miembros de la especie. Según un estudio realizado en el 2001, existen más de 550.000 millones de documentos web en la Red, y la cifra aumenta a diario. Es, sin lugar a dudas, la mayor colección de información humana que jamás haya existido en el planeta. Pero tanta información no tiene ninguna utilidad sin un orden, algún tipo de índice... sería como buscar una aguja en un pajar, una aguja especialmente diminuta en una cantidad de paja inimaginable.

Sorprendentemente, esta ordenación no se lleva a cabo "a priori", no al menos a nivel de la red global. Mi documento Web poseerá su estructura interna que define cómo ha de ser interpretado por los programas navegadores que se usarán para leerlo, pero no contendrá ninguna indicación acerca de cómo ha de catalogarse en los índices que los usuarios emplearán para encontrar mi página. Tan sólo contendrá un código acerca del estilo adecuado para su presentación: nada acerca del significado del documento, ninguna información semántica, sólo estética. Este es, entre otros, el objetivo de la Web 2.0., es decir: crear una Web Semántica, con códigos introducidos en las páginas que aporten alguna pista sobre qué es lo que hay escrito y qué relación tiene con otros posibles documentos.

Pero la Web 2.0. está poco definida aún, la gente no se pone muy de acuerdo sobre qué significa el término exactamente y, en resumidas cuentas, es algo que está por venir. La situación actual es bastante distinta. De hecho, ha cambiado muy poco en los últimos años. El mayor giro que ha tomado la Web y la forma que tienen los usuarios de acceder a sus contenidos en los últimos años ha sido Google, el motor de búsqueda más usado en el mundo desde su consolidación en 2001. Antes de la llegada de Google, existían otros buscadores Web, como Lycos o AltaVista. Otro tipo de herramientas para la búsqueda de documentos web existían, basadas en la ordenación manual de las páginas dentro de las categorías de un índice; estos repositorios son conocidos como "Directorios Web" y es, por ejemplo, el sistema utilizado por Yahoo! (no confundir con Yahoo! Search).

Reconocimiento de patrones, lenguaje natural e inteligencia

Con cientos de miles de documentos flotando en el ciberespacio, sólo un loco intentaría ordenarlo todo a mano. Pero, si se va a diseñar una máquina para que lo haga por nosotros, ¿Cuál será el criterio principal para organizar dichos textos? Bien sencillo: el mismo que usamos nosotros al realizar una exploración de la realidad, el reconocimiento de patrones. La realidad posee una estructura infinitamente compleja, mucho más que esa de la WWW. Podemos extraer de ella tantos matices como seamos capaces, pues la limitación está sólo en nosotros mismos. Sin embargo, nos relacionamos con esta catarata de datos con gran habilidad. La clave reside en nuestra destreza para encontrar similitudes y realizar asociaciones a partir de ellas. Esta es también una de las claves del éxito de Google.

A partir de un método conocido como PageRank, Google puntúa las relaciones entre páginas, siguiendo más de 150 criterios diferentes, como, por ejemplo, el número de hipervínculos que llevan a, o salen de un sitio, el número de veces que se han usado dichos hipervínculos (ambos en conjunto se conocen como el "peso" de los enlaces, "linkweight"), el análisis de los textos citados, etc. La gente de Google ha desarrollado algoritmos realmente eficientes a la hora de puntuar estas similitudes, pero todos sentimos que le falta algo... La precisión.

Si quiero que Google me muestre una lista de las celebridades que nacieron hace 35 años, usando la fórmula "lista de personas famosas nacidas en 1972" que, en mi opinión, es bastante explícita sobre lo que deseo que se me muestre, la primera página seleccionada por el sistema de Google es una acerca del año chino del cerdo. La única lista de personajes famosos que se muestra incluye a Santana, Hitchcock, Bogart, Paul Cézanne, Kublai Khan, Woody Allen, Magic Johnson, el Dalai Lama, Rockefeller, y Jorge Luis Borges, entre otros. Pero ¿Dónde están los años en los que nacieron? El algoritmo ha fallado. De las 650 páginas que han resultado de mi búsqueda, la primera no se corresponde con la información que busco. Y un vistazo a las otras cincuenta primeras me demuestra que éstas tampoco.

En este caso concreto, no sería tan difícil escrutar entre los 650 resultados. Aunque eso no es una garantía de que vaya a encontrar mi lista. Y, en otras búsquedas que devuelvan cientos de miles de resultados, leerlos todos, aunque sea sólo el título y un par de líneas, puede convertirse en una tarea de locos. ¿Qué es lo que ha fallado? ¿Por qué es Google tan popular, si no es capaz de matizar lo suficiente como para mostrarme una lista sobre algo tan concreto y al mismo tiempo, público?

Quizá el error está en las palabras exactas que he introducido. Los más acostumbrados a utilizar este y otros motores de búsqueda han aprendido a emplear una especie de "lenguaje de búsqueda" que suena un poco como los indios de las películas del salvaje oeste, o la forma en la que algunas personas hablan a los bebés: usando sólo los sustantivos más importantes, incluyendo apenas adjetivos y adverbios, muy pocos verbos y, en definitiva, usando una sintaxis minimalista y macarrónica. Refinemos ahora nuestra entrada de datos, traduciéndola a "Googlish"...

"Personas nacidas 1972"
devuelve 70.800 resultados. El primero es un enlace a la Wikipedia en español con la lista que me interesa. ¡Bingo! He conseguido que el buscador encuentre lo que deseo, pero no sin cierto esfuerzo: mi forma natural de expresarme con el lenguaje no ha bastado para que el resultado fuera el deseado. Esto implica que la interfaz es poco humana y por tanto limita su uso eficiente por muchas personas. Una solución a esto sería cambiar la interfaz, permitiendo que se introduzcan consultas en "lenguaje natural" y procesando dicha consulta para así poder descifrar qué es lo que pretende decir el usuario. Estos algoritmos podrían usarse no sólo para entender qué es lo que desea el usuario que se le muestre, sino además para analizar las páginas que se barajan como posibles resultados y así afinar al máximo la solución.

Muchos buscadores ya permiten cierta interacción de este tipo, como, por ejemplo, ask.com, un motor especializado en "respuestas a preguntas"; Google poseía una funcionalidad similar (Google answers) que todavía está en activo, pero ya no se actualiza (basta con añadir el signo "?" al final de la consulta); así como Yahoo! posee el sistema "preguntas y respuestas", con la gran diferencia de que en éste las respuestas son proporcionadas por otros usuarios del servicio y posteriormente seleccionadas por votos.

Si Google es el líder del mercado de buscadores, y la búsqueda en lenguaje natural es tan cómoda para la mayoría de la gente (sobre todo para aquellos que han tenido poco contacto con buscadores web), ¿por qué no investigan más en esa dirección? Desde luego, ya lo hacen. Pero callan mucho y muestran poco. Lo mismo puede decirse de Powerset, que según algunos desbancará a Google, precisamente usando este tipo de consultas. Pero sólo un reducido círculo ha podido verlo en marcha. Eso sí, cuentan maravillas de él. Hackia cuenta ya con una beta pública que tiene buena pinta. Pero sigue sin tener lo más importante, a mi juicio: precisión quirúrgica, capacidad para despreciar lo redundante y así mostrar sólo los resultados que quiero, y no más. Todavía hay mucho que hacer en el campo del reconocimiento de patrones y el procesamiento del lenguaje natural aplicados a los algoritmos de los motores de búsqueda. El futuro se resiste a llegar, pero se muestra emocionante.

16 de enero de 2007

CAPTCHA, o el milagro de la criptografía.



CAPTCHA es un acrónimo para "Completely Automated Public Turing test to tell Computers and Humans Apart", o lo que es lo mismo: una prueba de seguridad automatizada y pública que pretende distinguir si el individuo examinado es humano o no. Se utiliza en diferentes sitios y servicios web para impedir la entrada de robots maliciosos (spam, por ejemplo), y consiste en la muestra de un mensaje que (supuestamente) sólo puede ser entendido por un usuario humano. Estos mensajes codificados pueden tener diferentes formas: reconocimiento de caracteres borrosos o distorsionados, reconocimiento del habla en un tono familiar o poco formal, cuentas matemáticas expresadas en lenguaje ordinario o mediante imágenes, etc.

Este intento de proteger la información de aquellos que no están destinados a recibirla no es nada nuevo: la historia de la criptografía se remonta a los orígenes de la civilización y la escritura; la escritura jeroglífica, en el antiguo Egipto, es un ejemplo de ello. Los hebreos también acuñaron sus propios criptogramas con códigos de sustitución, envolviéndolo todo en un ambiente de misticismo y cálculos cabalísticos con el fin de disuadir a los profanos en su intento de descifrar los textos. Dichos mensajes cifrados se utilizaban para tratar temas que supondrían un escándalo político, social o religioso si hubieran sido tratados en público.

En el periodo clásico, según Herodoto, los griegos ocultaban textos en la cera o tatuados en la cabeza de esclavos, cuyo cabello cubriría posteriormente el mensaje. Estas prácticas no son propiamente criptográficas, pues no pretenden hacer un mensaje ilegible, sino ocultar la existencia del mensaje, lo que es conocido como "estenografía". A Julio César, emperador romano, se le atribuye la escritura de ciertos tomos sobre criptografía militar, ahora desaparecidos, así como la creación del Código César, un cifrado consistente en desplazar un número determinado de posiciones las letras en un alfabeto.

La criptografía militar alcanzó su cénit durante los años más oscuros del Siglo XX: La Segunda Guerra Mundial. La Wehrmacht (el ejercito de la Alemania Nazi) poseía una flota de U-boot, o navíos submarinos, muy superior a la de sus adversarios. Dicha flota submarina era efectiva contra los buques de superficie de los aliados, y lo que es peor: eran realmente difíciles de detectar. Estos submarinos empleaban la famosa máquina "Enigma" para transmitir mensajes cifrados; sin el libro de códigos y una máquina similar, a los aliados les hubiera costado décadas romper las claves de los alemanes. Incluso teniendo los códigos y una máquina enigma, el código es susceptible de cambiar, retrasando todavía más el proceso.

Es aquí cuando entra en la historia Alan Turing, matemático británico y padre de las modernas ciencias de la computación. El grupo liderado por él creó, en 1943, la primera computadora digital programable, llamada Colossus (quizá por su desmesurado tamaño), y a parte de ayudar a los aliados a desencriptar los mensajes de los alemanes, permitió al matemático realizar conjeturas sobre cómo se desarrollarían las máquinas de computación que supondrían, años más tarde, la revolución tecnológica de nuestra sociedad. Turing vivió en sus propias carnes el desarrollo desmesurado de las máquinas de calcular debido a ese juego del engaño y los mensajes cifrados. Quizá esto fue lo que le impulsó a publicar su famoso artículo "Computing machinery and intelligence", en el que se expone la posibilidad de crear una inteligencia no natural implementada en una máquina (Inteligencia Artificial), así como un curioso juego de "engaño y descifre" conocido como el "Test de Turing", en el que un interrogador intenta averiguar si su interlocutor es un hombre o una máquina. La función de la máquina destinada a pasar la prueba sería la de descifrar lo expresado por el interrogador, así como codificar una respuesta que sea adecuada para continuar con el engaño.

Con los métodos modernos de seguridad electrónica, las máquinas son las encargadas de realizar dicho interrogatorio. A esto se le suele llamar "Test de Turing inverso". Al principio de la década de los 90, Internet era un medio cada vez más popular, pero pocos tenían acceso a él. Era el terrirorio de los "hackers", los gurús de la informática. Gente con ideas muy dispares y aficiones que rozan la ilegalidad. Esta afición por saltarse las reglas es lo que llevó a los hackers a crear la llamada "jerga élite", o "1337", que es, simplemente, una sustitución de los caracteres alfabéticos ordinarios por una serie de símbolos o números que se le asemejen. Así, la "E" se convierte en "3" y la letra "A" podría ser "4", ó "/-\", o cualquier otra cosa entendible por un humano y que evitase que una máquina dedicada a registrar estas conversaciones entendiese el mensaje. Algo así como un CAPTCHA primitivo.

Hoy día, muchos CAPTCHA son descifrados por robots, pero otros surgen en respuesta. Esto hace avanzar a los robots tanto como a la seguridad, debido a que los CAPTCHA están basados en problemas abiertos de la inteligencia artificial. Las computadoras nos han ayudado a realizar cálculos que eran inimaginables hace unos siglos, como estas hercúleas tareas de criptografía. Pero nosotros también las hemos ayudado a ellas, mejorándolas para hacerlas más aptas. Turing sabía que este juego de comprender el mensaje oculto llevaría a las máquinas más allá: por eso propuso su Test de la imitación. De momento, nosotros hemos conseguido engañar a las máquinas. La pregunta es: ¿Serán las máquinas capaces de engañar a los humanos algún día?