Construcción de Índices Archivo

Anuncio
16/10/2012
Organización
 Registros (término, refLista) en un archivo B# (archivo de
vocabulario) y las listas invertidas en un archivo secuencial
indexado por el B# (archivo de listas), con dos opciones para
efectuar las búsquedas:
Construcción de Índices
• Accediendo al archivo B# para la búsqueda de términos
• Cargando los registros (término, refLista) en un arreglo al abrir
Organización
Compresión de Términos
Construcción de Listas Invertidas
Compresión de Listas Invertidas
Índices Secundarios
Índices de Porciones de Firmas
1
Recuperación de Textos
el índice para búsqueda binaria de términos en RAM
 Registros (término, refLista) en un diccionario (estructura en
RAM de lenguajes OO) y las listas invertidas en un archivo
secuencial indexado por el diccionario (archivo de listas). Los
índices se pueden construir y usar con esta organización,
persistir por serialización y cargar por hidratación.
ODD - Curso Servetto
2
Recuperación de Textos
ODD - Curso Servetto
Organización
 Políticas de actualización de índices (se adoptan según la
Vocabulario
frecuencia con que se requiera actualizar el índice)
• Por reconstrucción total (para actualizaciones poco frecuentes).
• Incremental (para actualizaciones frecuentes).
Compresión frontal (front coding)
Compresión frontal parcial o por secciones
 La organización de las listas en el archivo secuencial depende de la
política de actualización que se tenga para el índice
• Para actualizaciones por reconstrucción total se organizan como
registros de longitud variable y se refieren por su offset de comienzo
en el archivo.
• Para actualizaciones incrementales, se organizan como registros de
longitud variable en bloques y se refieren por el número relativo de
bloque donde se encuentran; deben contener como información de control
la identificación del término a la que pertenecen para poder identificarlas
dentro del bloque.
3
Recuperación de Textos
ODD - Curso Servetto
4
ODD - Curso Servetto
Compresión de Términos 1
Compresión de Términos 2
Ejemplo de Vocabulario
codazo, codearse, codera, codicia, codiciar, codiciosa, codicioso,
codificar, codigo
Compresión Frontal (front coding)
61codazo#23351earse#24321ra#23341icia#27211r#26331osa#28311o
#24351ficar#24321go#2 (en hoja de B# o en arreglo de bytes en
RAM)
Campos de control
Ejemplo de Vocabulario
codazo, codearse, codera, codicia, codiciar, codiciosa, codicioso, codificar,
codigo
Compresión Frontal Parcial o por Secciones
El tamaño de las secciones usualmente es 2T, donde T es la cantidad de términos
61codazo#23351earse#24321ra#271codicia#27311r#26331osa#2
91codicioso#24351ficar#24321go#20424446435
Campos de control
1 Prefijo
de longitud
de referencia a la lista (en el ejemplo de 2 bytes), que puede ser un offset o un
número de bloque, según la organización
3 Cantidad de caracteres coincidentes con el término previo
4 Posición relativa de términos sin comprimir: al final de nodos B# o en un arreglo de
índices al arreglo de bytes para el vocabulario en RAM.
5 Cantidad de secciones de compresión
Búsquedas: ¡permite la búsqueda binaria de términos por secciones!
1 Prefijo
de longitud
de referencia a la lista, que puede ser un offset o un número de
bloque, según la organización
3 Cantidad de caracteres coincidentes con el término previo
2 Número
2 Número
Búsquedas: sólo permite búsquedas secuenciales (muy costosas en nodos
grandes)
5
Recuperación de Textos
Recuperación de Textos
ODD - Curso Servetto
6
Recuperación de Textos
ODD - Curso Servetto
1
16/10/2012
Modelo Booleano
Documentos
Listas Invertidas
Las Cosas de laVida
LaVida es Bella
3.
Las Cosas del Querer
4.
LaVida después de laVida
Vocabulario
(bella, 3, 0), (cosas, 1, 0), (querer,
4, 0), (vida, 2, 0)
1.
2.
Archivos de control y temporales para su construcción
Técnicas de compresión
Para cada término indexable encontrado
secuencialmente en el recorrido de un documento
idDoc se hace:
• Si el término no está en el índice se lo agrega al
archivo de términos por orden de aparición para
determinar su idT en base a la posición en que quede,
y se lo agrega al índice junto con su id y una
referencia nula a la lista invertida
• Se registra en el archivo de ocurrencia de términos el
par (idT, idDoc)
Archivo de términos por orden de aparición
Se conserva como archivo de control si el índice se actualiza incrementalmente o si hay índice de n-gramas
1cosas 2vida 3bella 4querer
Archivo de ocurrencia de términos en documentos (idT, idDoc) (archivo temporal)
(1, 1), (2, 1), (2, 2), (3, 2), (1, 3), (4, 3), (2, 4), (2, 4)
Finalmente se ordena (sort externo) el archivo de ocurrencia de términos por idT+idDoc (en otro archivo
temporal) para, recorriéndolo secuencialmente una única vez, armar las listas invertidas de cada término
(1, 1), (1, 3), (2, 1), (2, 2), (2, 4), (2, 4), (3, 2), (4, 3)
Recuperación de Textos
7
ODD - Curso Servetto
1.
2.
3.
4.
Las Cosas de laVida
LaVida es Bella
Las Cosas del Querer
LaVida Después de la Vida
Se ordena el archivo de ocurrencia de términos en
documentos por idDoc+idT y recorriéndolo
secuencialmente una vez, se genera el archivo de frecuencia
de términos en documentos (idT, idDoc, ft) y, llevando
cuenta de la máxima frecuencia en cada documento, el
archivo secuencial de normas infinito de documentos.
Archivo de términos por orden de aparición
1cosas 2vida 3bella 4querer
ODD - Curso Servetto
Modelo Booleano con Búsquedas de
Frases o Términos Próximos
Modelo Vectorial
Documentos
Recuperación de Textos
8
Vocabulario
(bella, 3, 0), (cosas, 1, 0), (querer, 4, 0), (vida, 2, 0)
Documentos
1.
2.
3.
4.
Las Cosas de laVida
LaVida es Bella
Las Cosas del Querer
LaVida Después de la Vida
Se ordena el archivo de posiciones de términos en
documentos por idT+idDoc+posT y recorriéndolo
secuencialmente una vez, se genera una lista de posiciones
de cada término en cada documento (posT) y la lista
invertida de documentos por término (idDoc, refLPP), que
se persisten en dos archivos de control.
Archivo de términos por orden de aparición Vocabulario
Archivo de ocurrencia de términos en documentos (idT, idDoc) (temporal)
cosas vida bella querer
(1, 1), (2, 1), (2, 2), (3, 2), (1, 3), (4, 3), (2, 4), (2, 4)
Archivo de posiciones de términos en documentos (idT, idDoc, posT)
(1, 1, 1), (2, 1, 2), (2, 2, 1), (3, 2, 2), (1, 3, 1), (4, 3, 2), (2, 4, 1), (2, 4, 2)
Archivo de posiciones de términos en documentos ordenado por idT+idDoc+posT (se
obtiene del anterior, por sort externo)
(1, 1, 1), (1, 3, 1), (2, 1, 2), (2, 2, 1), (2, 4, 1), (2, 4, 2), (3, 2, 2), (4, 3, 2)
Archivo de frecuencia de términos en documentos (idT, idDoc, ft) (se obtiene a partir del de ocurrencias)
(1, 1, 1), (2, 1, 1), (2, 2, 1), (3, 2, 1), (1, 3, 1), (4, 3, 1), (2, 4, 2)
Archivo de normas infinito de documentos (de control – se obtiene a partir del de ocurrencias)
(no se calcula la norma euclídea porque por la cantidad de términos que suele haber, la suma de cuadrados de las frecuencias puede
resultar inmanejable)
1
1
1
2
Se ordena (sort externo) el archivo de frecuencia de términos en documentos (en otro archivo temporal) por idT+idDoc para,
recorriéndolo una única vez, armar las listas invertidas en RAM y luego persistirlas indexadas por el vocabulario
(1, 1, 1), (1, 3, 1), (2, 1, 1), (2, 2, 1), (2, 4, 2), (3, 2, 1), (4, 3, 1)
9
Recuperación de Textos
Recorriendo secuencialmente este archivo una vez, se arman las listas de documentos por término y
de posiciones de términos en documentos (dos archivos de control)
También se puede construir un índice para el modelo vectorial con búsqueda de frases o términos próximos si se
calcula la frecuencia de los términos y la norma de los documentos como se vio previamente
10
Recuperación de Textos
ODD - Curso Servetto
Compresión de Listas Invertidas 1
Compresión de Listas Invertidas 2
Reducción de cantidad de bits para representar números de
documento
Codificación Alineada a Bytes
1.

2.
Representa números naturales con la mínima cantidades de bytes,
usando los dos bits más significativos del código para indicar la
cantidad de bytes empleados
Reducción de magnitud → Se ordenan los números de
documento de menor a mayor y se representan como distancias
al número previo

Puede haber números grandes
Hay pocos números grandes y muchos chicos
0..26-1
26..214-1
214..222-1
222..230-1
Codificar con cantidades de bits proporcionales a la magnitud


11
ODD - Curso Servetto
(bella, 3, 0), (cosas, 1, 0), (querer, 4, 0), (vida, 2, 0)
Los números chicos se representan con pocos bits
Los números grandes se representan con muchos bits
Recuperación de Textos
ODD - Curso Servetto
12
→
→
→
→
Recuperación de Textos
00xxxxxx
01xxxxxx xxxxxxxx
10xxxxxx xxxxxxxx xxxxxxxx
11xxxxxx xxxxxxxx xxxxxxxx xxxxxxxx
ODD - Curso Servetto
2
16/10/2012
Compresión de Listas Invertidas 3
Compresión de Listas Invertidas 3
Códigos de Elias
Códigos de Elias
– Gamma
• log2(n) unos seguidos de un cero (log2(n) +1 en unario)
• n - 2log2(n) en log2(n) bits
Fragmentan la representación de un número n en 2 partes, la primera de
las cuales debe constituir un prefijo (debe distinguirse de la segunda por
su representación), y la segunda en notación binaria
1. Exponente de la máxima potencia de 2 que no exceda a n:
log2(n)
2. n - 2 log2(n)
El número se reconstruye sumando 2 log2(n) a la segunda parte.
Ejemplo
723 → log2(723) | 723 - 2 log2(723) → 9|723 – 29 → 9|211
9|211 → 29 + 211 = 512 + 211 = 723
13
Recuperación de Textos
ODD - Curso Servetto
723 → 10|211 → 1111111110011010011
– Delta
• log2(n)+1 en código Gamma
• n - 2log2(n) en log2(n) bits
723 → 3|2|211 → 1110010011010011
14
ODD - Curso Servetto
Compresión de Listas Invertidas 4
Compresión de Listas Invertidas 5
Codificación de Golomb
Codificación de Golomb con g Óptimo
Fragmenta la representación de un número n en 2 partes, la primera de
las cuales debe constituir un prefijo, en función de un parámetro
ajustable g
1. q = n/g con q unos seguidos de un 0 (q+1 en unario)
2. r = n mod g en log2(g) bits
Se puede demostrar que la compresión es óptima cuando g se relaciona con la
probabilidad p de que un término se encuentre en un documento de la
siguiente manera:
(1-p)^g+(1-p)^(g+1) ≤ 1 < (1-p)^(g-1)+(1-p)^g
g se obtiene redondeando al entero más próximo el valor:
log2(2-p)/(-log2(1-p)), P = nt/N (N cant. de
documentos, nt documentos en los que aparece un término t)
b = ┌log2(g)┐
Si r < 2^b-g se representa r en b-1 bits
Si r ≥ 2^b-g se representa 2^b-g+r en b bits
Ejemplo
723 con g = 512 → 723/512 +1|723 mod 512 →
10011010011 ← log2(512)=9
15
Recuperación de Textos
Recuperación de Textos
ODD - Curso Servetto
16
Recuperación de Textos
ODD - Curso Servetto
Ejemplos de Golomb con g Óptimo
Índices Secundarios
p = 8/500 = 0.016
g = Round(log2(2-0.016) / (-log2(1-0.016))) =
= Round(log2(1.984) / (-log2(0.984))) =
= Round(42.47) = 42
b = Techo(log2(42)) = Techo(5.39) = 6
2^b-g = 2^6-42 = 22
…
…
21 → 0 10101
41 → 0 111111
22 → 0 101100
42 → 10 00000
23 → 0 101101
43 → 10 00001
Decodificación
Si el número representado en los b-1 bits después del prefijo es menor a 22 entonces es el
resto, si no se toma un bit más (los b siguientes al prefijo) y se obtiene el resto restándole 22
17
Recuperación de Textos
ODD - Curso Servetto
De N-gramas y de Léxico Rotado
De Espacios Métricos
18
Recuperación de Textos
ODD - Curso Servetto
3
16/10/2012
Índices de N-gramas
Índices de N-gramas
 Se pueden construir en paralelo o a partir del índice primario
 Cada vez que se agrega un término nuevo al índice primario
 La estructura de sus registros es (n-grama, (idT)+) – no hace falta
(construcción en paralelo con el índice primario) o por cada
término del archivo de términos por orden de aparición
(construcción a partir del índice primario) a partir de su recorrido
secuencial, se registran los n-gramas del término en un archivo de
trabajo con registros (n-grama, idT)
 Luego se ordena por sort externo el archivo de n-gramas por
término por n-grama+idT
 Se recorre secuencialmente el archivo ordenado, y por cortes de
control por n-grama
usar el archivo de n-gramas por orden de aparición ni
identificadores de n-gramas porque éstos son de longitud fija
 Su organización es similar a la de los índices primarios: registros
(n-grama, refLTT) organizados en un árbol B#, con refLTT
referencia a la lista de identificadores de términos que contienen
el n-grama, y las listas de identificadores de términos en un
archivo secuencial, indexado por el árbol B#
 Los resultados de consultas son listas de identificadores de
términos, cuyas formas alfabéticas se obtienen accediendo al
archivo de términos por orden de aparición del índice primario
19
Recuperación de Textos
ODD - Curso Servetto
 Se arma la lista de idT por n-grama y se la almacena en un archivo secuencial
 Se carga (n-grama, refLTT) al árbol B#
20
Índices de Léxico Rotado
Ejemplo con Digramas
 Se pueden construir en paralelo o a partir del índice primario
Archivo de términos por orden de aparición:
1cosas 2vida 3bella 4querer
Archivo de digramas por término (digrama, idT):
 La estructura de sus registros es (rotación) –un solo campo
 Su organización es similar a la de los índices primarios: registros
(rotación) organizados en un árbol B# (el término al que refiere la
rotación se obtiene rotando la rotación hasta que el carácter „|‟ se
ubique en un extremo para luego quitarlo)
 Los resultados de consultas son secuencias de rotaciones que se
obtienen a partir de una búsqueda aproximada en el árbol B#
 Por cada término del vocabulario se agregan por alta normal todas
sus rotaciones al árbol B# secundario
Ordenamiento por digrama+idT:
(„as‟, 1), (‘a|’, 2), (‘a|’, 3), („be‟, 3), („co‟, 1), („da‟, 2), („el‟, 3), („er‟, 4),
(„er‟, 4), („id‟, 2), („la‟, 3), („ll‟, 3), („os‟, 1), („qu‟, 4), („re‟, 4), („r|‟, 4),
(„sa‟, 1), („s|‟, 1), („ue‟, 4), („vi‟, 2), („|b‟, 3), („|c‟, 1), („|q‟, 4), („|v‟, 2)
Términos que cumplan el patrón *a: 2, 3 (contienen el digrama „a|‟)
Recuperación de Textos
ODD - Curso Servetto
22
Recuperación de Textos
ODD - Curso Servetto
Índices de Léxico Rotado
Índices de Espacios Métricos
Ejemplo con Digramas
 Llamamos Espacio Métrico al universo de elementos U, con
Archivo de términos por orden de aparición:
1cosas 2vida 3bella 4querer
Rotaciones a agregar al árbol B# por cada término:
|cosas, s|cosa, as|cos, sas|co, osas|c, cosas|, |vida, a|vid, da|vi, ida|v, vida|,
|bella, a|bell, la|bel, lla|be, ella|b, bella|, |querer, r|quere, er|quer, rer|que,
erer|qu, uerer|q, querer|
Orden en árbol B#:
|bella, |cosas, |querer, |vida, a|bell, a|vid, as|cos, bella|, cosas|, da|vi,
ella|b, er|quer, erer|qu, ida|v, la|bel, lla|be, osas|c, querer|, r|quere, rer|que,
s|cosa, sas|co, uerer|q, vida|
Términos que cumplan el patrón *a: bella, vida (rotaciones de a|bell y a|vid –se
inicia búsqueda secuencial de todas las rotaciones que comiencen con „a|‟)
23
ODD - Curso Servetto
Índices de N-gramas
(„|c‟, 1), („co‟, 1), („os‟, 1), („sa‟, 1), („as‟, 1), („s|‟, 1), („|v‟, 2), („vi‟, 2),
(„id‟, 2), („da‟, 2), („a|‟, 2), („|b‟, 3), („be‟, 3), („el‟, 3), („ll‟, 3), („la‟, 3),
(„a|‟, 3), („|q‟, 4), („qu‟, 4), („ue‟, 4), („er‟, 4), („re‟, 4), („er‟, 4), („r|‟, 4)
21
Recuperación de Textos
Recuperación de Textos
ODD - Curso Servetto
una función distancia d: UUR+ asociada, también
denominada función métrica (para términos parecidos, U es
el vocabulario y d la distancia de edición o de Levenshtein)
 Propiedades
 Positividad: d(a, b) > 0 (la distancia entre dos elementos
cualesquiera de U es un numero real y mayor a cero)
 Reflexividad: d(a, a) = 0 (la distancia de un elemento a sí
mismo es igual a cero)
 Simetría: d(a, b) = d(b, a)
 Desigualdad triangular: d(a, b)  d(a, c) + d(c, b)
24
Recuperación de Textos
ODD - Curso Servetto
4
16/10/2012
Índices de Espacios Métricos
Índices de Espacios Métricos
 Para evitar el cálculo de muchas distancias en la evaluación de
 Pivotes
consultas, se construyen índices con distancias precalculadas
de manera que, aplicando la desigualdad triangular, se
reduzca la cantidad de términos para el cálculo de distancias
 Se debe seleccionar un conjunto de términos pivote cuyas
distancias entre sí superen determinada proporción de la
distancia máxima entre dos términos cualesquiera del
vocabulario
 Para la construcción del índice se calculan distancias de todos
los términos del vocabulario a todos los pivotes
25
Recuperación de Textos
ODD - Curso Servetto
M = máx{ d(x, y) : x, y V}, V vocabulario, d distancia de
edición (M coincide con la longitud máxima de términos)
Pivotes  {t1} (t1 primer término del archivo de términos por
orden de aparición)
For all t  V do
if  p  Pivotes, d(t, p)  coef * M (coef  [0.4, 0.6])
then Pivotes  Pivotes  {t}
 Índice SSS (Sparse Spatial Selection)
SSS(d(t, p1), … d(t, pn)) (c/reg se llama “firma” de t)
 Clusters: Cluster(p, r, (t, d(t, p))+), r radio del cluster
Recuperación de Textos
26
ODD - Curso Servetto
SSS
Índices de Espacios Métricos
Ejemplo
Vocabulario (preposiciones del castellano)
a, ante, bajo, cabe, con, contra, de, desde, durante, en, entre,
hacia, hasta, mediante, para, por, segun, sin, so, sobre, tras,
versus, via
Pivotes (M=8, coef=0.6)
a, contra, desde, durante
27
Recuperación de Textos
ODD - Curso Servetto
SSS  Búsqueda de términos cercanos a “cave” con radio de tolerancia menor o igual a 1:
t
a
ante
bajo
cabe
con
contra
de
desde
durante
en
entre
hacia
hasta
mediante
para
por
segun
sin
so
sobre
tras
versus
via
29
d(t, 'a')
d(t, 'contra')
0
3
3
3
3
5
2
5
6
2
5
4
4
7
3
3
5
3
2
5
3
6
2
Recuperación de Textos
d(t, 'desde')
5
4
6
5
3
0
6
6
6
5
3
5
4
7
4
4
6
5
5
4
4
6
5
d(t, 'durante')
5
4
5
4
5
6
3
0
5
4
4
5
4
6
5
5
4
4
4
4
5
4
5
6
3
6
5
6
6
5
5
0
6
5
6
5
4
5
6
6
6
4
6
5
6
6
• Firma de “cave”
(d(„cave‟, „a‟), d(„cave‟, „contra‟),
d(„cave‟, „desde‟), d(„cave‟,
„durante‟)) = (3, 5, 4, 5)
• Comparaciones
„a‟: |3-0|>1  descartado
„ante‟: |3-3| 1, |5-4| 1, |44| 1, |5-3|> 1  descartado
„bajo‟: |3-3| 1, |5-6| 1, |45| 1, |5-6| 1  dist(„cave‟,
„bajo‟) = 3  fallo
„cabe‟: |3-3| 1, |5-5| 1, |44| 1, |5-5| 1  dist(„cave‟,
„cabe‟) = 1  éxito
…
ODD - Curso Servetto
t
a
ante
bajo
cabe
con
contra
de
desde
durante
en
entre
hacia
hasta
mediante
para
por
segun
sin
so
sobre
tras
versus
via
28
d(t, 'a')
d(t, 'contra')
0
3
3
3
3
5
2
5
6
2
5
4
4
7
3
3
5
3
2
5
3
6
2
d(t, 'desde')
5
4
6
5
3
0
6
6
6
5
3
5
4
7
4
4
6
5
5
4
4
6
5
d(t, 'durante')
5
4
5
4
5
6
3
0
5
4
4
5
4
6
5
5
4
4
4
4
5
4
5
Recuperación de Textos
6
3
6
5
6
6
5
5
0
6
5
6
5
4
5
6
6
6
4
6
5
6
6
Cada registro contiene las
distancias de un término t a todos
los pivotes, y se denomina la
“firma” de t.
Para obtener los términos t con
distancia menor o igual a r (radio
de tolerancia) de uno en particular
q, se calcula la distancia de q a
todos los pivotes, y si para algún
pivote p se cumple
|d( q, p) – d(t, p)|> r
no es necesario calcular
d(q, t).
Se calcula la distancia de todo
término no descartado con q, y si
es mayor que 0 y menor o igual que
r se muestra como resultado.
ODD - Curso Servetto
Clusters
p
radio (t, d(t, p))+
Para obtener los términos t con
distancia menor o igual a r de uno
en particular q, se calcula la
distancia de q a todos los pivotes, y
si para algún pivote p se cumple
a
4
(a, 0), (bajo, 3), (cabe, 3),
(de, 2), (en, 2), (hacia, 4),
(para, 3), (por, 3), (sin, 3),
(so, 2), (tras, 3), (via, 2)
contra
3
(con, 3), (contra, 0), (entre, 3)
se descarta el cluster de p.
desde
4
(desde, 0), (hasta, 4), (segun, 4),
(sobre, 4), (versus 4)
durante
4
(ante, 3), (durante, 0),
(mediante, 4)
Dentro del cluster no descartado
de un pivote p, se descartan los
términos t tales que
30
Recuperación de Textos
d( q, p) > r + radio
|d( q, p) – d(t, p)|> r
ODD - Curso Servetto
5
16/10/2012
Búsqueda de términos cercanos a “cave”
con radio de tolerancia menor o igual a 1:
Clusters
p
d(„cave‟, „a‟) = 3  1+4  se explora el
cluster con centro en „a‟
radio (t, d(t, p))+
a
4
contra
3
(con, 3), (contra, 0), (entre, 3)
desde
4
(desde, 0), (hasta, 4), (segun, 4),
(sobre, 4), (versus 4)
durante
4
(ante, 3), (durante, 0),
(mediante, 4)
d(„cave‟, „contra‟) = 5 > 1+3  se descarta el
cluster con centro en „contra‟
d(„cave‟, „desde‟) = 4  1+4  se explora el
cluster con centro en „desde‟
Tamaño de Firmas
Construcción de Porciones
…
d(„cave‟, „durante‟) = 5  1+4  se explora el
cluster con centro en „durante‟
…
Recuperación de Textos
31
Índices de Porciones de Firmas
|3-0|>1, |3-3| 1  d(„cave‟, „bajo‟)=3
(fallo), |3-3|  1  d(„cave‟, „cabe‟)=1 (éxito),
|2-1|  1  d(„cave‟, „de‟)=3 (fallo), …
(a, 0), (bajo, 3), (cabe, 3),
(de, 2), (en, 2), (hacia, 4),
(para, 3), (por, 3), (sin, 3),
(so, 2), (tras, 3), (via, 2)
ODD - Curso Servetto
32
Recuperación de Textos
Tamaño de Firmas
Construcción de porciones
 Para la determinación del tamaño de las firmas se debe tener
Firmas con funciones de dispersión
una idea aproximada del tamaño del vocabulario
 Para una única función de dispersión, se debería prever al
menos tantos bits cuantos términos tenga el vocabulario
 Para minimizar las colisiones, se puede ampliar la cantidad de
bits, con lo cual no se evitarían totalmente, o duplicar la
cantidad de bits y agregar una segunda función de dispersión
para resolver las colisiones
 También se puede pensar firmas en las que cada término
tenga asociado un bit exclusivo: mapas de términos
(representación vectorial de documentos)
Recuperación de Textos
33
Ejemplo
1.
2.
3.
4.
Las Cosas de laVida
LaVida es Bella
Las Cosas del Querer
LaVida después de laVida
ODD - Curso Servetto
f1(„cosas‟)=2
f1(„vida‟)=3
f1(„bella‟)=4
f1(„querer‟)=2
(1, 2), (1, 6), (1, 3), (1, 8), (2, 3), (2, 8), (2, 4), (2, 5),
(3, 2), (3, 6), (3, 2), (3, 5), (4, 3), (4, 8), (4, 3), (4, 8)
Archivo de unos en porciones:
(1, 2), (3, 2), (3, 2), (1, 3), (2, 3), (4, 3), (4, 3), (2, 4),
(2, 5), (3, 5), (1, 6), (3, 6), (1, 8), (2, 8), (4, 8), (4, 8)
Recuperación de Textos
 Para cada término relevante t

Se ordena el archivo temporal de unos en firmas por
nb+idDoc obteniéndose un archivo de unos en porciones
3. Se recorre secuencialmente el archivo de unos en porciones y
para cada nb (número de porción), se ponen en uno los bits
en las posiciones idDoc de la porción (previamente se debe
haber inicializado la porción con todos sus bits en cero)
Recuperación de Textos
34
ODD - Curso Servetto
Ejemplo
1.
2.
3.
4.
Las Cosas de laVida
LaVida es Bella
Las Cosas del Querer
LaVida después de laVida
f1(„cosas‟)=2
f1(„vida‟)=3
f1(„bella‟)=4
f1(„querer‟)=2
f2(„cosas‟)=6
f2(„vida‟)=8
f2(„bella‟)=5
f2(„querer‟)=5
Consulta: cosas querer
Firma Consulta: 01001100  unos en porciones 2, 5 y 6
Firmas (no se construyen)
1: 01100101
Porciones
2: 00111001
1: 0000
3: 01001100
2: 1010
4: 00100001
3: 1101
Porciones:
1: 0000
2: 1010
3: 1101
4: 0100
5: 0110
6: 1010
7: 0000
8: 1101
4: 0100
5: 0110
6: 1010
7: 0000
8: 1101
ODD - Curso Servetto
Para cada función de dispersión f, se registra (idDoc, nb) en un archivo
temporal de unos en firmas, donde nb=f(t) (número de bit)
2.
f2(„cosas‟)=6
f2(„vida‟)=8
f2(„bella‟)=5
f2(„querer‟)=5
colisión
Para cada documento idDoc
1.
Como el vocabulario es de tamaño 4, se considera una
firma de tamaño 8 con dos funciones de dispersión, f1
con imagen en 1..4, y f2 con imagen en 5..8:
Archivo de unos en firmas (idDoc, nb):
35
ODD - Curso Servetto
36
Recuperación de Textos
colisión
Resolución:
2: 1010
and 5: 0110
0010
and 6: 1010
0010
Las posiciones de los
unos en el resultado de la
conjunción de porciones
implican los idDoc que
potencialmente
responden a la consulta
ODD - Curso Servetto
6
16/10/2012
Ejemplo
Mapas de Términos



Recuperación de Textos
37
1.
2.
3.
4.
Dados el conjunto de documentos D = { d1, d2, ... dN } y el de todos
los términos relevantes en documentos de D,
T = { t1, t2, ... tH }, la firma de cada documento dj es una secuencia de
bits p(t1, dj), p(t2, dj), ... p(tH, dj) donde p(ti, dj) es la presencia del
término i en el documento j (1 si está, 0 si no)
El índice se almacena por porciones de firmas, es decir, cada registro i
es una secuencia de bits p(ti, d1), p(ti, d2), ... p(ti, dN)
Las porciones se construyen de igual forma que las listas invertidas del
modelo booleano, es decir, se requiere un árbol o diccionario para el
vocabulario con registros ((t)i, idT), el archivo de términos por orden
de aparición para determinar idT, y el archivo de ocurrencia de
términos en documentos para construir las porciones
ODD - Curso Servetto
Las Cosas de laVida
LaVida es Bella
Las Cosas del Querer
LaVida después de laVida
39
Resolución:
1: 1010
and 4: 0010
0010
Recuperación de Textos
(bella, 3), (cosas, 1), (querer, 4), (vida, 2)
1cosas 2vida 3bella 4querer
Archivo de ocurrencia de términos en documentos
(idDoc, idT):
(1, 1), (1, 2), (2, 2), (2, 3), (3, 1), (3, 4), (4, 2), (4, 2)
Ordenamiento por idT+idDoc:
Porciones
1: 1010
2: 1101
3: 0100
4: 0010
(1, 1), (3, 1), (1, 2), (2, 2), (4, 2), (4, 2), (2, 3), (3, 4)
38
Recuperación de Textos
ODD - Curso Servetto
Ventajas de los Mapas de Términos
Vocabulario:
(bella, 3), (cosas, 1), (querer, 4), (vida, 2)
 No produce “falsos positivos” como las firmas con funciones
de dispersión
Consulta: cosas querer
 Al mantener el índice de vocabulario y el archivo de
Archivo de términos por orden de aparición:
1cosas 2vida 3bella 4querer
Porciones:
1: 1010
2: 1101
3: 0100
4: 0010
Vocabulario:
Archivo de términos por orden de aparición:
Ejemplo
1.
2.
3.
4.
Las Cosas de laVida
LaVida es Bella
Las Cosas del Querer
LaVida después de laVida
términos por orden de aparición, admite índices secundarios
 La resolución de consultas es menos costosa que en índices
Firma Consulta:
1001  unos en porciones 1 y 4
booleanos
Las posiciones de los unos en el
resultado de la conjunción de
porciones implican los idDoc que
potencialmente responden a la
consulta
ODD - Curso Servetto
40
Recuperación de Textos
ODD - Curso Servetto
7
Descargar