IR Herramientas de software libre para recuperación avanzada de información
Jose Ramon Perez Agüera
Departamento de ingeniería de software e Inteligencia artificial
Universidad complutense de Madrid
Va a intentar dar una visión general y un enfoque mas practico, enfocado a seo en concreto. No pueden evitar horas de programación pero si pueden aportar soluciones útiles. Estará dividida en tres partes. Una aproximación general. Un repaso a las herramientas libres existentes y una tercera dedicada a ejemplos.
Los objetivos serán introducir las nociones básicas de recuperación de información, la base del funcionamiento de los buscadores. El conocer como funciona la trastienda de un buscador, ya sea de forma intuitiva, ya se haciendo ingeniería inversa o de modo teórico, puede ayudarnos como seos a mejorar nuestros resultados. El conocer la tecnología de los grandes buscadores y aplicarlos a nivel local en nuestros propios buscadores puede aportarnos mucha información práctica.
La intención es dar una ponencia dinámica.
Introducción a IR
La definición general es la recuperación de datos desestructurados. No estamos recuperando datos de una DDBB, si no documentos sin una estructura suficientemente definidos como para recuperarlos con suficiente claridad, no esta suficientemente definido. Nuestra intención es devolver a los usuarios los documentos más relevantes para búsquedas pocas definidas sobre ese conjunto de documentos.
Normalmente se trata de recuperación de textos, la recuperación de datos multimedia, ya sea utilizando patrones de vectores o de otra forma es, técnicamente muy compleja y se encuentra en sus inicios.
La interacción típica es:
El usuario necesita información, expresada por medio de una consulta. Actualmente la IR a derivado en la transformación de esas consultas, necesidades de información, expresadas en lenguaje natural, convertidas en una que la maquina sea capaz de interpretar.
Grafico de la arquitectura básica de un buscador.
Crawler pagesranking algorithm ranked documents
Indexer
Indices
Nos vamos a concentrar en el diseño de un prototipo que un seo pueda utilizar.
El primer filtro: el crawler
Hay que tener en cuenta, en primer lugar, que solo accedan a la web visible (sin contraseñas, sin exclusión mediante robots.txt, sin consultas a bases de datos.
Son caprichosos y no les gusta el código sucio.
Básicamente es texto, que los ordenadores no comprenden. Por eso es importante como convierten los algoritmos y como interpretan dichas cadenas. Hemos de ser capaces de codificar en números estadísticamente, el lenguaje natural, el conjunto de la información que disponemos.
Para ello usamos bolsas de palabras, no se prestan atención a las relaciones entre palabras, sintaxis, semántica. Una bolsa caracteriza un documento. Los problemas son que precisamente por ejecutar esa transformación, conceptos como la polisemia y la sinonimia son tremendamente complejos de implementar y diferenciar, aunque se esta trabajando en ello.
“Destrucción de los bosques del Amazonas”
El procesamiento lingüístico, si hay, si que hay uno, muy, muy suave que si se hace. Normalizamos las mayúsculas y las minúsculas, las palabras vacías (lista estática de palabras vacías = “destrucción bosques amazonas”)
Eliminamos sufijos (stemming)
Los buscadores no suelen usarlo directamente.
Razones: Produce resultados no esperados, ¿le gusta al usuario obtener resultados no esperados? Además es dependiente del idioma
Recuperación con ranking
Todo l que se procesa dentro de una “bolsa” permite realizar un cálculo de relevancia entre consulta y los documentos. Ordenamos los documentos en función de este cálculo. Prestamos los resultados ordenados al usuario en función de su relevancia. El conjunto de palabras de la bolsa no tiene en cuenta en principio el orden de las mismas, aunque mas adelante se tocara esta cuestión.
La puntuación de cada documento. Tenemos en cuenta dos conceptos, el documento y porcentaje de aparición del término en relación al número total de términos.
Y por otro lado el número de documentos en los que aparece un término y el número total de documentos dentro de la colección.
. TF (frecuencia de términos). IDF (frecuencia inversa de Documento).
Tf/dl
Frecuencia de un término
ES la importancia de un termino lineal? No
Con Tf e idf estamos asignando un peso a los términos que aparecen en un documento, el ranking total lo hacemos sobre una sumatoria.
Como se comporta idf?
No todos los términos de la consulta son igual de buenos?
Mediante idf podemos medir el grado de especificidad de un término. Ningún buscador trabaja con este simple esqueleto, pero todos parten de este planteamiento y tienen un tratamiento de idf.
Amazon -> Bosques -> destrucción
Robertson’s BM25 es una implementación compleja de idf,tf, mucho mas cercano a lo que están buscando ahora mismo los buscadores. Creador del modelo probabilística por relevancia, ingeniero de Microsoft. Que definen y depuran como tienen que tenerse en cuenta la aparición de términos en documentos y como normalizarlos.
Hay varios modelos de IR
Permiten modelar matemáticamente el proceso de recuperación. Es básico conocerlo para luego construir nuestro modelo. Hay 2 grandes grupos, modelos algebraicos. Modelos de espacio vectorial (smart…), potente, sencillo de entender y de implementar.
Los modelos probabilísticas, como okapi BM25, Language Models, Divergente From Randomness. Entre estos planteamientos, vectorial y probabilísticas, se mueven los grandes buscadores.
Ranking avanzado.
Hasta ahora hemos visto que dos de las cosas que tienen en cuenta son idf y TF. Que mas hay? Análisis de link, popularidad, donde están los términos (litle, body, ref., proximidad, etc…)
Localización de los términos
Al ir más al detalle, sabemos que necesitamos un software que tenga en cuenta la búsqueda por proximidad. Cual es la proximidad entre términos? del mismo modo que lo tienen en cuenta los buscadores. También la estructuración mediante fragmentos. Debemos poder asignar a un fragmento un determinado valor y ordenar los documentos en base a la puntuación del fragmento con mayor valor (después del html y los contenidos ya etiquetados dentro del mismo).
Otra información sobre la localización también debe ser tenido en cuenta, como por ejemplo la url (un elemento externo al mismo). Los metadatos? Realmente los están teniendo en cuenta los buscadores? Tienen un problema grande de confianza. Es en definitiva un problema de definición de heurísticas, que permiten refinar el funcionamiento de los buscadores. “Donde” es uno de los grandes secretos, el salto del trabajo artesanal a un acercamiento al mismo mucho mas desde un punto de vista de ingeniería, sobre un entorno controlado, no ya sobre un buscador ajeno en el que se realiza un trabajo de campo “mas o menos” metodológico.
Podemos hacer la distinción entre Autoridad y popularidad
La IR clásica es algo a lo que se ciñen TODOS los buscadores respetables. Por otro lado, a la hora de trabajar sobre sistemas distribuidos, también es MUY importante, desde el punto de vista de recuperación de información web, QUE y CUANTOS enlazan dichos documentos. Entramos en el problema de Hubs y Autoridades, donde comienza toda esta aplicación industrial de IR.
Recapitulando, necesitamos:
Implementación de algún modelo de IR
Indexación estructura de documentos
Recopilación de palabras y frases.
CLAIRLOB
Implementación en perl
Permite hacer agrupación de documentos o clustering
Indexación de documentos
PageRAnk
Análisis de grafos web
TF-IDF
Stemming
Y un Web crawling un tanto flojo, pero más que suficiente para crawlear la web de un cliente.
Zettair
Implementadas en C
Stemming
Indexación de documentos
Implementa distintas funciones para Modelos de Lenguaje (Dirichlet-smoothed language modelling metric por defecto)
Es una de las librerías mas eficientes para IR
(Resultados preguntas. Al ser modelos estadísticos son independientes del lenguaje. A la hora de procesar documentos acentuados es mas normal tener un modulo de preproceso independiente que los elimine así como las mayúsculas, aunque su recomendación es mantenerlos, son información útil)
Lemur
Uno de los grandes
Implementación den C++
Elaborado lenguaje de consultas
Soporte para indización y recuperación de documentos XML
Permite indexar páginas web de forma transparentes
Interfaces interactivos en distintas plataformas
Indexación incremental
Varios algoritmos de stemmig
Soporte para distintos formatos de documentos
Centrado en distintos modelos de lenguaje
En cuanto a recuperación soporta distintos algoritmos de reordenación de resultados PageRank, URL depth
Bueno para investigación científica
Xapian
C++
De cara a montar un buscador es mas robusto
Hace un poquito de todo (metemos prisa)
Terrier
Implementación en Java
Permite el manejo de colecciones de gran tamaño
Api completo
Permite expansión de consultas
Ligeramente inmaduro como software de producción
Interface
Lucene
Su favorito, esta enamorado ;)
Ports completos a multitud de lenguajes, de los mas robustos y mas extendidos como software de producción.
ZendSearch para PHP
Implementa modelo de Espacio Vectorial
Podemos indexar documentos estructuraos
Completo lenguaje de consulta
Búsquedas por proximidad
Stemmin
Tiene un interface, Luke, que no sirve para indexar, pero si para trabajar con el conjunto de documentos, además de mostrarte como esta rankeando al vuelo un determinado termino del documento.
Nutch
Implementación de un buscador web basado en Lucene.
Caso 1: estudiamos una web
Caso 2: comparamos dos webs, competidoras y ver como rankean