Listas invertidas

Las listas invertidas son una herramienta básica para búsqueda por contenido en
texto. Consiste en '' factorizar'' las palabras del texto, guardando las referencias a
ocurrencias en documentos relevantes.

Conforme las grandes carreteras de la información proliferan y crecen en
capacidad, proporcionan acceso a un creciente número de repositorios
electrónicos de documentos. En cada repositorio, el número de documentos
disponible en linea aumenta rápidamente. Al mismo tiempo, el número de usuarios
finales con accesos de red crece rápidamente y una variedad de herramientas
como WWW (World Wide Web) y WAIS (Wide Area Information Servers or
Service) hacen posible siempre tener alcance a más fuentes de información. Esto
incrementa rápidamente el número de documentos, sitios y los usuarios tienen
pensado renovar el interés en las técnicas de indexación para la documentación
eficiente.

La estructura de datos básica para la mayoría de los sistemas IR son las Listas
Invertidas originalmente diseñadas por Donald Knuth. La lista invertida para un
palabra en particular w contiene una secuencia de ligas, para cada ocurrencia de
w en algún documento. Cada referencia debe incluir una variedad de información,
por ejemplo el ``offset'' (desplazamiento) de la palabra (dentro de cada
documento) por cada una de sus ocurrencias y la zona donde esta ocurre (título,
resumen, lista de autores, etc.). En un índice completamente de texto, cada una
de las palabras del texto (con algunas excepciones, como palabras comunes el, la,
los, si, no, etc.) tiene una lista invertida. Como una regla general, el tamaño de las
listas invertidas para índices de texto es del mismo tamaño que los documentos de
texto de las bases de datos. En un índice de resúmenes (abstracts), solo las
palabras que aparecen en la información bibliografica (título, resumen) tienen
listas
Listas invertidas
Es una estructura que puede describirse como una tabla que contiene en cada fila
un término (palabra) que existe en la BD. A cada file se le asocia una lista de
identificadores de documentos y ocurrencias del término en cada documento en
que aparece.

se envían de la misma forma y luego se obtiene el resultado final. En el siguiente superstep todos los procesadores examinan sus índices locales para obtener la lista invertida 4. 8. la consulta se envía a todos los demás procesadores en el superstep actual 3. puesto que un mismo término puede estar en varios índices. . la máquina front-end sabe a que procesador enviar la consulta.Se ha paralelizado de dos formas: a) Indice Local b) Indice Global Indice Local: los documentos se distribuyen uniformemente entre los P procesadores. en el próximo superstep el procesador i produce la lista final Indice Global: Se hace un solo índice con sus respectivas listas invertidas con todos los documentos de la BD. Una lista invertida se construye en cada P. Luego de este mapeo cada procesador tienen un índice de T/P términos y listas. La máquina front-end rutea 1 término de la consulta al procesador i 2. El procesador i hace el broadcast. •Consultas random de 1-4 términos. Para resolver una consulta debe buscarse simultáneamente en cada Procesador. (idem secuencial) Luego los términos con sus respectivas listas son distribuidos uniformemente en los P procesadores. referente a los términos almacenados en el respectivo P. •P: 2. (T es el total de palabras de toda la BD o vocabulario) Implementación BSP: Dado que un término esta en un único índice en un determinado procesador. Estas sublistas se envían al procesador i 5. Implementación BSP: 1. 4. 16 •Función hash para el mapeo y búsqueda del índice en P procesadores. Si la consulta es de mas de un término. Experimento: •Web site de 50MB de texto. Se tienen P listas invertidas.

Costo de distribuir q*P consultas en P procesadores: P (q +q G) + L 2. a sus procesadores origen donde se componen las listas de tamaño W: q W D +q W G + L 3. Costo de Broadcast de Q: P(q + qG)+L 2. Finalmente en el último superstep las lista final de tamaño W es compuesta y enviada a P máquinas front-end a un costo q W + q W G + L Para P máquinas front-end el costo es: q W D + q(P + W) G + L Indice Global: 1.•El balance óptimo se logra en todos los casos. Indice Local: Todos los procesadores procesan el mismo conjunto de consultas Q = q*P 1. Cada procesador toma sus q consultas y construye en paralelo las listas de identificadores para cada consulta a un costo q W D y envía sus resultados a un costo q W G Para P máquinas front-end el costo final es: q W D + q W G + L Secuencial: q P W D + q P(1 + W) G +L (considerando una o mas máquinas front- end. separadas del servidor secuencial) . •Valores: promedio del máximo observado en cada superstep •En forma random se determina el procesador que computa una consulta: “dado un superstep se supone que P procesadores componen en paralelo resultados” Costo de la ejecución de estas estrategias (usando el modelo de costo BSP): W: largo promedio de las lista invertida D: costo promedio de accesos a disco Las tablas de términos están en memoria principal y las listas en memoria secundaria. Computación de los P procesadores para determinar las listas de identificadores de documentos y enviar listas de tamaño W/P.

por ejemplo. como se muestra en la siguiente figura: Así. front-end) Arreglo de Sufijos Es una estrategia que permite hacer búsqueda binaria para encontrar las posiciones (documento y ubicación dentro de este) en que se encuentra una determinada palabra o rango expresado como una expresión regular. Se ha paralelizado de dos formas: a) Indice Local b) Indice Global Indice Global: el arreglo considera todos los documentos (como el de la figura anterior) y éste se distribuye en los procesadores de manera balanceada como en la siguiente figura: Note que cada procesador representa un intervalo en el rango de palabras y que los punteros pueden referenciar a documentos ubicados en otros procesadores. El arreglo se encuentra ordenado lexicográficamente según las palabras apuntadas por los elementos del arreglo. Los documentos se distribuyen uniformemente en los procesadores. Búsqueda de Q=q*P consultas .La performance de la paralelización de listas invertidas esta severamente limitada por los costos de comunicación (cuando hay 1 sola máquina. para saber en qué posiciones del texto se encuentran las palabras que comienzan con “tex” se hace una búsqueda binaria para determinar el inicio del rango de posiciones en el arreglo donde se encuentran los punteros a dichas palabras (posición 7 del arreglo en el ejemplo). Si vemos la base de documentos como un simple gran documento podemos construir un arreglo que almacena posiciones de palabras en el gran texto.

En el siguiente superstep cada procesador hace en paralelo q*P búsquedas binarias para obtener las listas de identificadores parciales. Para hacer esto la máquina front-end hace P-1 pivotes para delimitar los respectivos intervalos.Las listas de identificadores de documentos se envían a P máquinas front-end a un costo q W G + L 3. Estos identificadores son enviados a los procesadores origen a un costo q WG 4. sin hacer referencia a documentos de ubicados en otros procesadores.En esta estrategia es necesario determinar en que procesador (intervalo) rutear una consulta dada. Para un arreglo global de dimensión N. Cada procesador toma sus q consultas y hace el broadcast a los demás procesadores a un costo: q + q P G + L 2. El ruteo se hace a un costo de: q P G + L Costo final: q (1 + log(N/P) + W D) +q W G + L Indice Local: en cada procesador se forman índices independientes considerando sólo los documentos ubicados en el procesador. Para un array global de dimensión N el costo es: q P log (N/P) + q W D 3.Cada procesador toma sus q consultas y realiza en paralelo q búsquedas binarias. Indice Local: 1. esto tiene un costo de: q + q log(N/P)+ q W D 2.1. La lista final se forma con un costo q W y se envía a las P máquinas front- end a un costo q W G + L Costo final para P máquinas front-end: q (1 + P log(N/P (W+D) + q (P + W) G + L Secuencial: q P log(N) + q P W D .