Lección 9 - Índices invertidos

Objetivo

El objetivo de esta lección es presentar los índices invertidos y sus aplicaciones

Índice invertido

Un índice invertido es una estructura eficiente para realizar búsqueda de documentos.

Los principales pasos para construir un índice son:

  • Colectar los documentos a indexar
  • Separar los documentos en Tokens
  • Hacer procesamiento lingüistico de los textos
  • Indexar los documentos y cada uno de los términos que aparecen en ellos

Los dos elementos principales de un índice invertido son:

  • El diccionario de términos
  • La lísta de documentos en los que aparecen dichos términos

Por ejemplo la colección de documentos:

d1: el pájaro azul canta
d2: el pájaro canta en la rama del arbol
d3: hay pájaros en el alambre

Se convierte en:

alambre: [d3]
azul: [d1]
canta: [d1]
en: [d2, d3]
el: [d1, d2, d3]
pájaro: [d1, d2]
...

El diccionario de términos debe se almacena en memoria y guarda un apundador a la lista de documentos que generalmente está almacenada en disco.

El diccionario de términos y la lista de documentos en los que aparece están ordenados alfabéticamente.

Adicionalmente almacenamos el número de documentos en los que aparece cada término como parte del diccionario con el fin de tener disponible la estadística (df) en la memoria. Así como el número de veces que aparece cada término en cada documento para tener la estadística (tf).

alambre (1): [(d3,1)]
azul (1): [(d1, 1)]
canta (1): [(d1,1)]
en (2): [d2, d3]
el (3): [d1, d2, d3]
pájaro (2): [d1, d2]
...

Estructuras para búsquedas eficientes

La primera tarea importante cuando buscamos un documento es encontrar los términos que aparecen en el índice, hay dos estructuras importantes, hashing y árboles de búsqueda.

Utilizar hashing es práctico cuado la cantidad de memoria y llaves que requerimos no es muy grande y estamos restringidos a que las concordancias sean exactas.

En cambio los árboles de búsqueda permiten hacer búsqedas en conjuntos de datos más grandes, así como realizar búsquedas por prefijos. Los tipos de arbol conocidos como árboles binarios y B-trees son útiles para realizar búsquedas en tiempo O(log M).


In [ ]: