¿Cómo funciona un buscador? – Capítulo 2

Esta es la continuación de un artículo anterior donde aprendíamos las diferencias entre un Sistema de Recuperación de información, uno de Extracción de Información y otro de Búsqueda de respuestas. En este segundo Capítulo nos vamos a centrar en las características básicas de un buscador y su funcionamiento interno. Voy a intentar escribirlo de forma que cualquiera pueda entenderlo.

Vamos a hacernos primero la pregunta de oro: ¿Cómo puede un buscador encontrar una palabra buscando en todas las páginas webs del mundo en menos de un segundo? . La primera idea que nos viene a la cabeza es que debemos guardar toda la información de texto útil en el servidor que va a hacer de buscador, de esta forma no tendremos que ir buscando por internet, lo cual es más lento. La información que guarda Google en sus servidores de forma local la podéis ver pulsando en el enlace de Caché que aparece al lado de cada página encontrada. El proceso mediante el cual se actualiza la Caché con los nuevos datos de Internet se conoce como Google Dance:

Aún así la cantidad de información que hay guardada es inmensa y buscar algo aunque sea de forma local es un proceso lento. Pensad lo que le cuesta encontrar un simple archivo en a vuestro ordenador, seguramente tarde más que Google en realizar una tarea similar. Esto se debe a que en nuestros ordenadores no tenemos la tecnología de los grandes buscadores de Internet.

¿Cuál es la forma más directa para hacer una búsqueda? Pues vamos mirando cada palabra del texto de una en una hasta que encontramos la palabra que buscamos. Esta técnica es conocida como Búsqueda secuencial. Por ejemplo, si tenemos la frase Perico va de paseo a la playa con Perica y estamos buscando Perica; el programa para buscar comenzará comparando con la primera palabra de la frase: ¿Perico == Perica? No, entonces continua con la segunda palabra: ¿ va==Perica? No. Así continuaría hasta ¿Perica==Perica? y terminaría la búsqueda con éxito.

El gran problema (entre otros) de esta forma de buscar es que si la cantidad de texto es muy grande y la palabra que buscamos se encuentra al final, deberemos recorrer todo el texto palabra por palabra obligatoriamente. Imaginaros buscar una palabra en todo Internet y tener la mala suerte de que Perica es la última palabra de la última web que miramos, la búsqueda tardará bastante tiempo aunque usemos un ordenador muy muy potente porque tendremos que ir comparando la palabra que buscamos con todas las palabras de Internet.

Veamos cómo buscaría Google si usara búsqueda secuencial. Las flechas Rojas indican las comparaciones de la palabra Einstein con cada palabra de las páginas webs, y las flechas Naranjas indican el movimiento entre las diferentes webs.

A partir de la imágen anterior vemos intuitivamente que mediante Búsqueda Secuencial debemos recorrer todas las páginas de la caché, es decir, todo Internet para obtener los resultados de una búsqueda.

Las Búsquedas secuenciales se usan para buscar cuando la cantidad de información a tratar no es muy grande. Por ejemplo, el buscador de tu propio blog, la búsqueda de vuestro procesador de Textos etc. ¿Pero que pasaría se nuestro blog tuviera 5 millones de posts y tuvieramos que buscar algo? Tardaría mucho en darnos la solución. Ese es uno de los problemas con el que se enfrentan los grandes buscadores, la cantidad inmensa de información.

Espero que me hayáis seguido todos hasta aquí porque ahora viene lo bueno. La forma de ahorrar tiempo es tratando la información previamente a las búsquedas. El proceso es el siguiente: Una vez tenemos ‘todo’ Internet guardado en local se realiza un proceso de Indexación. Con este proceso lo que se pretende es reducir al máximo la cantidad de información guardada. ¿Cómo lo conseguimos? Pensad en la cantidad de veces que se repite la palabra Einstein en Internet, ¿Es necesario que guardemos la palabra en nuestro disco duro 20 millones de veces? ¿No seria mejor guadarla Una sola vez e indicarle en que páginas web aparece?.

Fijaros que ahora en vez de guardar la palabra Einstein 20 millones de veces, solo la guardamos una vez. Ahora al hacer una búsqueda no se accede a la Caché, sino que se accede a los Datos Tratados. De esta forma si buscamos la palabra Einstein solo hay que hacer la búsqueda dentro de la lista de palabras y luego retornar las páginas en las que está. ¿Aún no veis la ventaja? Antes teníamos que ir comparando la palabra que buscamos con todo el texto de Internet, ahora solo tenemos que comparar con todas las palabras posibles ya que hemos eliminado todas las repeticiones.

Para verlo más claro veamos como sería una búsqueda usando los datos tratados. En esta ocasión vamos a buscar la palabra Gödel. Las flechas rojas indican las diferentes comparaciones que se van haciendo con cada palabra indexada, y la flecha naranja indica el resultado de la búsqueda.

Fijaros que ahora no tenemos que buscar dentro del texto de las páginas. Solo tenemos que ir mirando palabra a palabra y si no interesa pasamos a la siguiente, sería una busqueda secuencial con pocos datos. Este proceso es muchísimo más rápido que una búsqueda secuencial dentro del texto de todas las páginas y añadiendole ciertas mejoras se puede convertir en algo ‘parecido’ a Google. Una de las mejoras más evidentes es usar técnicas de busqueda más avanzadas usando los Datos Tratados.

De esta forma Google reduce la cantidad de información donde tiene que buscar de varios miles de Gigas de texto a unos pocos Gigas de palabras tratadas. Estos pocos Gigas se pueden cargar en memoria (Necesitan servidores bastante potentes) y así hacer las búsquedas muy rápidamente.

Puff. En teoría ya tenéis los conocimientos necesarios para programar un Sistema de recuperación de Información muy básico. Pensaba que sería más sencillo de explicar, espero que os haya quedado más o menos claro. Ya podéis preguntar y criticar 😉

Software Libre para windows

Para todos aquellos reacios a pasarse a Linux también podéis beneficiaros de las posibilidades del software libre y así ir entrando en el mundillo. Seguro que para cada programa que usáis hay una alternativa libre, solo es cuestión de buscar. Hay gente que se dedica a recopilar y organizar programas GNU para windows para facilitarnos el trabajo.

Una iniciativa muy interesante es Open CD donde nos podemos bajar un CD entero con aplicaciones libres como OpenOffice, Mozilla, 7-Zip, NetTime, FileZilla, Gimp, AbiWord, Celestia etc .

Otro proyecto muy parecido es Gnu Win donde tenéis programas libres organizados por categorías: compiladores, editores, comunicaciones, seguridad etc. También hay juegos como el Tux Racer 😉

Cooperative Linux

Interesante iniciativa para crear algo parecido a VMWare pero en su versión de código libre. Para quien no conozca VMWare, se trata de una máquina virtual que es capaz de ejecutar Linux desde Windows y viceversa. La gente de Colinux está intentando hacer algo similar, todavía está en una fase de desarrollo muy temprana pero promete mucho.

¿Cómo funciona un buscador? – Capítulo 1

Para mi proyecto final de carrera estoy programando un buscador. No es una tarea fácil, pero gracias a lo que estoy aprendiendo ya no veo a Google como algo tan misterioso. Tengo pensado escribir unos cuantos artículos para divulgar lo que vaya aprendiendo, es importante saber como funciona un buscador para hacer que sea más fácil para ellos encontrar información en nuestros blogs y páginas webs.

Clasificar información para luego encontrarla con facilidad es una tarea que lleva realizando la humanidad desde hace muchos siglos, el problema es que cada vez disponemos de más cantidad de información escrita. Necesitamos mejores métodos para organizar la información y luego obtenerla con facilidad. Uno de los métodos más potentes que existe hoy en día consiste en obtener la información de forma automática.

Dentro de la obtención de información de forma automática se pueden definir varios enfoques según la finalidad y modo de funcionamiento:

  • Recuperación de información (Information Retrieval)
  • Extracción de información (Information Extraction)
  • Búsqueda de respuestas (Question answering)

La Recuperación de información consiste en indicar al usuario en qué documentos puede haber información relevante. Un sistema de Recuperación de información nos indica en que documentos hay apariciones de las palabras que hemos puesto en nuestra búsqueda y los ordena según una puntuación. Un ejemplo de este tipo de sistemas son los típicos buscadores como Google, Yahoo etc.

La Extracción de información consiste en hacer lo mismo que la Recuperación de información pero en vez de mostrar los resultados al usuario se generan una serie de archivos con los datos más importantes que se han encontrado. Estos sistemas eliminarían la tarea del usuario de tener que seleccionar los resultados realmente importantes. Aun no existe ningún sistema de este tipo realmente efectivo en entornos abiertos como Internet, solo se han hecho pruebas con colecciones de datos de temas concretos.

La Búsqueda de respuestas consiste en responder a una pregunta concreta del usuario. A un sistema de búsqueda de respuestas le podemos hacer peticiones del tipo ¿Cuándo nació Einstein? ¿Dónde está la plaza roja? y debe ser capaz de respondernos con una frase concreta. Puede sonar a ciencia ficción pero ya hay sistemas que son capaces de responder a preguntas sencillas.

Mis compañeros y yo estamos construyendo por ahora un sistema de Recuperación de información que utilizaremos para intentar crear encima un sistema de Búsqueda de respuestas sencillo.

Gaim en dispositivos móviles


Mariano me ha pasado un link al proyecto sourceforge para poder usar Gaim en PDAs. Seguramente en el futuro estaremos siempre disponibles a través de un sistema de mensajeria instantánea. Cuando estemos en casa se conectará con el Gaim del ordenador, cuando nos vayamos se hará un switch y estaremos disponibles a través del móvil o del PDA etc. Pero para que esto que acabo de comentar sea asequible aquí en España pasarán muchos años 🙁

El futuro está en las universidades

Leo en Merodeando (Un nuevo blog muy interesante), un post comentando ciertos avances que se están llevando a cabo en universidades Americanas y que constituirán el futuro de la tecnología. Escribo este post para comentar que no solo en la universidades americanas se investigan cosas interesantes, aquí en España se hacen cosas muy interesantes que apenas se les da publicidad. La ventaja de los americanos es que tienen ingentes cantidades de dinero para gastarse en publicidad y buscar aplicaciones a las nuevas tecnologías. Aquí en cambio se investiga mucho pero no hay «Una transferencia tecnológica efectiva», eso quiere decir que las investigaciones se quedan en los papeles sin poderse aplicar, de esta forma se adelantan los americanos comercializando cualquier cosa.

Yo llevo casi 5 años en la Escuela Politécnica de la Universidad de Alicante y os puedo contar algunas cosas interesantes que se están llevando a cabo:

  • Internostrum está considerado como el mejor traductor del mundo entre dos lenguas (Catalán-Castellano)
  • Ganadores del concurso europeo de buscadores en páginas web con texto en castellano
  • En la vanguardia mundial de creación de algoritmos de inferencia lingüística (esos que usan nuestros teléfonos móviles para predecir lo que escribimos)
  • Muchas investigaciones en visión articial y robótica. En concreto conozco un proyecto mediante el cual se intentan guiar a robots a partir de las posiciones de puntos de acceso Wifi para orientarse
  • El sistema de Campus Virtual de la universidad ya se está usando en decenas de Universidades por toda Europa
  • La Biblioteca cervantes es la mayor biblioteca en internet con textos en lengua castellana

Esto solo son algunos de los ejemplos de cosas que se hacen en mi Universidad, pero en toda España hay muchas otras Universidades que están en la vanguardia mundial en cuanto a tecnología. No somos más tontos que los americanos, simplemente el gobierno actual pasa de la tecnología. Por cierto, en el post de Merodeando se comenta que allí tienen sistemas para enviar a imprimir trabajos a la impresora más cercana de la universidad, en nuestra uni y supongo que en otras de España este servicio ya está disponible desde hace tiempo. Es posible conectarse a internet desde el cesped del campus y enviar a imprimir un trabajo a la biblioteca, pasarse a los cinco minutos y recogerlo. Sistema de localización de alumnos aun no tenemos, pero si que hay un sistema con un mapa de todos los despachos de la universidad para poder encontrar a cualquier profesor. Lo que nos falta es publicidad para que estas cosas se den a conocer.

Saludos a Julio desde aquí y a seguir con esos excelentes posts con los que nos deleita en Merodeando