Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Introducere:
Construirea eficient a unui index inversat este esenial pentru a putea face posibila
cutarea pe colecii mari de date de tip text. n cele ce urmeaza sunt prezentate abordrile
principale in construirea unui index inversat si sunt prezentate rezultate experimentale. De
asemenea se vor identifica neajunsurile abordrilor existente asupra constuirii unui index
inversat i se va propune o metod noua (engl. single-pass) care, spre deosebire de abordrile
anterioare, nu necesit stocarea in memorie a intregului vocabular si poate funciona n cadrul
unui sistem cu resurse limitate. Se va arata c performana acestei noi abordari unice poate fi
mbuntit prin construirea indexului inversat n segmente, ceea ce reducere numarul de
accesari ale discului atunci cand se construieste un index pentru volume mari de date.
Mrimea coleciilor de text i rata cu care aceastea continua sa creasca aduce noi
provocri pentru construcia indexului. Construirea unui index pentru o colecie mare de text
poate implica gestionarea a milioane de cuvinte distincte si a miliarde de aparitii distinct ale
cuvintelor in textul indexat. Cele mai multe abordri de construire ale unui astfel de index sunt
bine adaptate pentru a indexa o colecie de text de ordinul catorva megaocteti.
Pentru colecii mici, vocabularul i toate aparitiile cuvintelor in textul indexat pot fi acumulate
n memoria principala, ceea ce permite constructia rapida a indexului atata vreme cat statia de
lucru are suficienta capacitate. Cu toate acestea, pentru volume mari de text, doar cateva tehnici
sunt practice.
De cele mai multe ori se evita necesitatea unei memorii de mari dimensiuni prin stocarea
aparitiilor cuvintelor pe disc temporar, prin urmare, se stocheaza pe disc ceea ce nu incape in
memorie insa accesarea discului indusa de aceasta abordare atrage dupa sine o performanta
scazuta.
Abordri mai avansate presupun un compromis intre procentul din index care se
pastreaza in memorie si cel pastrat pe disc, insa si acestea necesit o abundenta de memorie
principal. Pe de alt parte, performana standard a staiilor de lucru a crescut n mod dramatic n
ultimele decenii. S-ar putea deduce din aceste mbuntiri ca indexarea ar putea fi eventual
efectuata n ntregime n memoria principal. Cu toate acestea, volumul de date care urmeaz s
fie indexate poate crete foarte mult odata cu capacitatea de a stoca. De exemplu, o colecie de
text bazata pe documente aduse de pe web ar putea conine 100 GB de date. O reprezentare
eficient a indexului ar putea fi de 20 GB, in timp ce doar termenii distincti ai indexului pot
solicita pana la 200-400 MB de memorie. Deoarece dimensiunea colectiilor de date se dezvolt
rapid, este rezonabil s presupunem c indexarea facuta n memorie nu este o solutie practica
pentru colecii mari in viitor, chiar dac performana staiilor de lucru standard continua sa
creasca. In continuare se propune construcia eficienta a indexului pentru colecii de text.
Cea mai rapida abordare de pana acum este cunoscuta sub numele de sort-based
inversion. Acesta parcurge datele de intrare o singura data, iar frecventele necomprimate de
aparitie ale cuvintelor sunt acumulate n memoria principal, sortate, comprimate, precum i
scrise pe disc n runde care sunt mai apoi imbinate pentru a obine forma finala a indexului. O
alternativ este o metod care parcurge de doua ori datele de intrare unde neajunsul spatiului
redus de memorie este inlaturat de algoritmi eficienti de compresie, insa datele de intrare trebuie
procesate de doua ori, ceea ce atrage dupa sine un cost ridicat. Ambele abordri sunt scalabile,
adica pot opera n limite de memorie fixe, dar ambele necesita stocarea intregului vocabular n
permanen n memoria principal, ceea ce poate s nu fie posibil n cazul n care resursele sunt
limitate, deoarece vocabularul unei colecii crete aproximativ liniar cu dimensiunea de
colectare.
In cele ce urmeaza este prezentata o abordare diferita care intruneste avatajele de mai sus
si anume: realizeaza doar o singur trecere peste datele de intrare, nu impune stocarea completa
a vocabularului n memoria principal; poate funciona n volume limitate de memorie i nu are
nevoie de cantiti mari de spaiu pe disc. Astfel se obtin timpi scazuti de raspuns dupa cum se
prezinta in cele ce urmeaza. Abordarea este n esen o combinaie de metode standard descrise
anterior: construcia n memorie de segmente ale indexului care mai apoi sunt salvate pe disc iar
in cele din urma combinate, iar acest design are inovatii majore si surclaseaza semnificativ
abordarile anterioare. Se va construi un index inversat pentru o colecie de 20 Gb de documente
Web pe un Pentium III cu 700 MHz care nu foloseste mai mult de 256 Mb de memorie principal
n aproximativ 155 minute, ceea ce inseamna aproximativ 8 minute per gigabyte de text.
( d f , f , d )>
t
ft
cu di < dj for 1 _ i < j _ ft, unde ft este numrul de documente care il conin pe t. Figura 1 ofer
o imagine de ansamblu a structurii unui index inversat la nivel de document.
Un index inversat include suplimentar, pe langa fiecare aparitie a cuvntului si poziia sa
ntr-un document, n ordine cresctoare pentru a facilita interogarile ulterioare. Prin urmare,
forma unei liste de adiacenta pentru un cuvant T este:
f t ; ( d 1 , f d 1,t ,l t ,d , 1 , l t , d ,t , f
1
d1 ,t
( d f , f , d , lt , d ,1 , lt ,d , t , f )>
t
ft
ft
d f ,t
t
unde lt;d;I sunt poziiile ordinale sugerate de t n documentul d i lt;d;i < lt;d;j pentru 1 i j
fd,t. Listele inversate sunt de obicei stocate pe hard in mod continuu ntr-un format comprimat, cu
fiecare list accesibila individual. Compresia reduce spatiul de stocare necesar pentru un fiier
inversat i poate, de asemenea, sa reduca si timpul necesar pentru a evalua o interogare. Pentru a
obtine o compresie eficient a listelor inversate trebuie ca numerele documentelor i
poziionarea cuvintelor in listele inversate sa fie in ordine crescatoare.
Tabelul 1: Lista simbolurilor utilizate in analiza performantei unui index inversat.
Parametru
Simbol
Valoare
256
ts
tt
tp
tc
9x10-3
5x10-8
8x10-7
5x10-7
tl
6x10-7
tw
1x10-7
Pentru a scade dimensiunea indexului, este necesara stocarea numai a diferenelor ntre numerele
documentelor, dect numerele n sine, lucru care se poate reprezentana eficient folosind
coduri Elias sau coduri Golomb. n practic,o rata buna de compresie a indexului inversat se
realizeaz prin reprezentarea numerelor de documente (ID-uri) folosind coduri Golomb, i a
frecvenele cuvintelor din documente (f d, t ) impreuna cu pozitia cuvintelor in documente
folosind coduri Elias. n lucrrile recente s-a demonstrat c schemele de codare la nivel de bit
conduc la pierderi in eficiena compresiei, dar, in acelasi timp, reduc foarte mult timpul de
decodare.
Exist mai multe abordri propuse pentru construirea indexului inversat. Un studiu recent
privind aceste abordari arat c doar dou dintre ele sunt scalabile: una, cu constructia indexului
in doua faze si stocarea acestuia in memorie,care a fost ulterior mbuntit i cealalt, cu o
singur etapa de construire bazat pe abordarea propus de Moffat & Bell (1995). Aceste
abordri sunt aplicabile coleciilor de text de orice dimensiune i functioneaza n cadrul limitat
al volumelor de memorie principal i spaiu pe disc temporar. n seciunea urmtoare, sunt
prezentate cele dou sisteme n detaliu i s sunt revizuite abordrile simple pe scurt, care sunt
aplicabile numai pentru colecttile mici i mijlocii datorita cerinelor mari de resurse. Cu toate
acestea, nainte este prezentat modelul computational de baza pentru constructia unui index
inversat.
Modelul computational:
Pentru a estima timpul de constuctie a unui index, se va folosi modelul de calcul
prezentat n tabelul 1. Modelul descrie costurile de calcul ale operaiunilor efectuate n timpul
construciei indexului pe o singur staie de lucru cu un singur disc local.
Valorile parametrilor se bazeaz pe performana unui Pentium III 700 MHz cu 512 Mb de
memorie ce ruleaz pe sistemul de operare Linux. Se masoara pe aceast main, de exemplu,
timpul de rulare efectiv pentru a parsa o colecie si a obtine termenii componenti asociind o
estimare a costului tp. Se determina de asemenea tl - costul mediu pentru a cuta un termen ntrun dictionar care este implementat ca un tabel hash standard, cu 220 sloturi . Costurile de timp
pentru tc si tw sunt estimate ntr-un mod similar. Parametrii specifici discului sunt preluati din
specificatiile producatorului referitoare la un hard-disk standard de 40 de GB cu un buffer de
2MB si 7200 rotatii pe minut.
Size (Mb)
Simbo
l
S
Distinct terms
Documents
0.6
140.6
Cavg
26
348
Wavg
21
151
33
45
0.64
180
697
1.27
672
2,605
Iw
Biblia
Web V
Web XX
4,4
13,56
9
0.8
31,10
1
5,120
20,480
6,837,589
2,964,428
323.9
928,113
1,261.5
3,560,951
543.2
354
153
44
Scopul modelului computational este acela de a obine formule de cost pentru abordri de
constuire a indexului inversat i de a calcula timpul lor de funcionare pe colecii de referin.
Cu toate acestea, modelul nu este suficient de precis pentru a calcula timpii exacti de
funcionare, datorita efectelor de caching, costurilor pentru alocarea si eliberarea de memorie
i a altor sarcini efectuate de ctre sistemul de operare. Cu toate acestea, aceste estimri de
performan permit compararea abordrilor de inversiune.
Se folosesc trei colecii de referin cu statisticile prezentate n tabelul 2 pentru a
determina necesarul de resurse pentru o abordare sau alta. Prima colectie, de 4,4 Mb, este
versiunea King James a Bibliei, unde fiecare verset este luat ca un document in timp ce numere
de capitole i numerele de verset nu sunt luate in calcul.Aceast colecie a fost aleasa deoarece
este uor disponibila i poate fi mprita ntr-un numr clar de documente. Celelalte dou
colecii de referin sunt extrase din proiectul TREC (Harman 1995), i sunt tipice motoarelor
de cutare actuale. Colectia cea mica, Web V este de 5 Gb i cea mare Web XX este de 20 Gb,
ambele sunt colecii de documente web n mai multe limbi. Coleciile web au vocabulare mari,
formate din aproape trei milioane i respectiv apte milioane de cuvinte distincte. Aceste
colecii sunt dotate cu distribuia neuniform a termenilor, care este tipica pentru limba vorbita.
De exemplu, Web V are in jur de 324 milioane de aparitii ale termenilor , din care doar n jur de
3 milioane sunt termeni distincti. Termenii cei mai frecventi n colecie sunt and, the si of.
Cuvantul the apare la fiecare 27 de cuvinte , aproape de doua ori mai des decat urmatorul cel
mai frecvent cuvant. Pe de alta parte, aproximativ 45% din termenii distincti apar o singura data.
Aceste statistici au fost obtinute prin parsarea coleciilor n termeni fr a aplica tehnici
de similiratitate a cuvintelor (engl. stemming) sau conversie lower-upper case.Ca termen a fost
considerata fiecare secven de caractere, pn la un maxim de 64, care continea nu mai mult de
dou cifre i nu ncepea cu o cifr. Aceste restricii au fost impuse pentru a preveni includerea n
index a numerelor de pagin sau a altor tipuri de enumerari. Cu toate acestea astfel de numere
pot fi indexate cu succes in sistemele reale. De asemenea au fost excluse n timpul parsarii orice
tag-uri HTML, XML sau caractere speciale, i semne de punctuaie.
urmator din lista este, de asemenea, necesar. Cu reprezentarea unui rnd din matrice ca o lista,
mai putin de 8 Mb sunt necesari pentru indexul colectiei Biblia. Cu toate acestea, n jurul valorii
de 1.6 Gb sunt necesari pentru colectia Web V, i n jurul valorii de 6 GB pentru colectia Web
XX. n realitate, pozitiile cuvintelor in colectie sunt eseniale, i, astfel, i mai mult spaiu ar fi
necesar. Avand in vedere ca meninerea listelor necesit mai mult memorie dect este
disponibil, o varianta o reprezinta bazarea pe memorie virtual urmand ca sistemul de operare
sa mapeze listele pe disc. Accesul la liste, respectiv rnduri, este cu toate acestea, n ordine
aleatorie. Astfel, n cazul fericit n care numai oricare al zecelea acces al listelor necesit
accesul la disc care dureaza n jurul valorii de 9 milisecunde, mai mult de 35 de ore ar fi necesare
pentru construirea indexului colectiei Web V, de exemplu. Se presupune c datele de intrare ale
t , d , f d ,t :l 1 ..l f )
diferitelor abordri de inversiune sunt de forma (t,d,fd,t) sau (
in cazul in
d ,t
care pozitia cuvintelor este luata in calcul. Aceste nregistrri sunt livrate de ctre un proces care
parseaza colectia document cu document n termeni ai indexului. Pentru fiecare document,
termenii constituenti ai sai, pozitia si frecventa sunt colectate.
Inversarea bazata pe acces la disc
Ideea principal a abordrii bazata pe o singur trecere peste colectia de text este de a
acumula toate listele inversate pe disc, i nu n memoria principal. Listele care aparin aceluiai
termen sunt legate ntre ele ntr-un fisier, care const din mai multe astfel de liste, cate una
pentru fiecare termen. Dup ce toate listele au fost acumulate, un fiier nou este alocat pe disc
pentru a stoca indexul final i listele sunt procesate n ordine lexicografic. Fiecare list este
parsata, apoi toate inregistrarile ei sunt comprimate i scrise pe disc ca o list inversata
comprimata. Din motive de eficien, este necesar s se menin, pentru fiecare termen din index
adresa de pe hard disk a aparitiei anterioare iar acest lucru se realizeaza in memoria principala.
Pentru fiecare aparitie (t, d, fd, t ) din datele de intrare dictionarul este interogat pentru a se
verifica daca termenul t exista. Adresa p de pe hard disk a aparitiei precedente a lui t este
obtinuta si un nou nod este adaugat in lista de adiacenta a lui t: (t, d, fd, t ,p). Cu toate acestea,
nregistrrile pentru un termen nu sunt stocate adiacent n fiierul corespunzator i listele nu
sunt
stocate n ordine lexicografic, dup cum este necesar n fiierul inversat final. Prin urmare, dup
ce toate documentele au fost procesate, un pas de post-procesare este necesar, n care toate listele
din index sunt traversate. Pasul de post-procesare ncepe prin alocarea unui al doilea fiier de pe
disc, apoi o travere a dictionarului va ordona index n ordine lexicografic. Deoarece pentru
fiecare termen adresa ultimei aparitii din lista sa este meninut n dictionar i fiecare aparitie
din lista este legat de predecesorul su, listele pentru un termen sunt preluate n ordine invers
i acumulate. Apoi, lista pentru termenul curent este determinata.Abordare poate fi usor
generalizata pentru a include si pozitiile cuvintelor.
Comparativ cu abordarea simpla de inversiune bazata pe memorie, abordarea bazat pe
disc folosete o singura trecere peste colecia de text, dar nc necesit ca un dictionar sa fie
pstrat n memoria principal. n cazul n care dictionarul este implementat ca un arbore gras,
fiecare nod al arborelui folosete 4 octei pentru stocarea adresei fiierului (i chiar mai multi
octei dac fiierul depete 2 GB), cel puin 2 octei pentru ft , 8 octei pentru cele dou
referine la alte noduri ale arborelui, i 4 octei pentru un pointer la termenul urmator.
Presupunnd c stocarea unui termen are nevoie de n medie, alti 8 bytes, dictionarul ocup n
jurul valorii de 74 MB pentru colectia Web V i 170 MB pentru colectia Web XX.
Pe de alt parte, economiile din memoria principal vin n detrimentul unor volume mari de
spatiu temporar pe disc. Un nod dintr-o lista inversata ocupa 4 octei pentru ID-ul documentului,
2 octei pentru f d, t i 4 octei pentru referinta la nodul anterior. Astfel, un nod cuprinde 10
octei i fiierele aferente listelor pentru colectia Web V i colectarea Web XX depasesc 1.3 Gb
i 5 Gb. Acest spaiu nu poate fi eliberat pn la sfritul pasului de post-procesare, deoarece
nu este posibil s se scrie listele inversate din nou in fisierul corespunzator. Spaiu suplimentar
temporar este necesar n cazul n care poziiile cuvintelor sunt indexate la randul lor, adugnd
in medie 6 octei per nod al listei. Mai mult, acceseaz la fisierul ce stocheaza listele este in
ordine aleatorie n timpul etapei de post-procesare. Datorit numrului mare de accese aleatorii la
disc, timpii de funcionare raportati nu sunt practici.
De exemplu, construcia unui index pentru o colecie de 276 Mb de articole din Wall Street
Journal dureaza mai mult de 2 zile. Aceste rezultate depind de performanta sistemului de calcul
care se poate imbunatati in timp, dar principala limitare timpul de acces la disc nu a crescut
considerabil in ultima perioada. Pentru a mbunti performana, o solutie este reducerea
numrului de accese aleatoarii la disc prin folosirea mai multor fiiere pentru listele de postari,
fiecare dintre acestea fiind suficient de mica pentru a fi pe deplin reprezentata n memoria
principal n timpul etapei de post-procesare. Fiecare fiier de postari corespunde la o gam
disjuncta de termeni si acumuleaz numai termeni care se ncadreaz n acea gama.Gamele sunt
alese astfel incat sa produce fiiere de dimensiuni uniforme. Cu toate acestea, mprirea n
fiiere separate crete activitatea discului n timpul parsarii colectiei i pstrarea datelor pe disc
reduce sansele pentru optimizarea acceselor de disc. Reducerea dimensiunii fiierului cu postari,
prin aplicarea de tehnici de compresie este, de asemenea, dificila deoarece fiecare nod trebuie s
fie n mod individual accesibil n timpul etapei de post-procesare. n ceea ce privete cifrele de
performan i parametrii indicai n tabelele 1 i 2, timpii de constructie ai indexului inversat
pentru aceasta abordare sunt:
T =ST t +C ( t p +t l ) +10 P t t +
Pt s /v+ 10 Pt t +
I ( t c +t t )
postarilor pe disc i a listelor finale inversate dureaza aproximativ 4 minute. Marea majoritate
din timpul total de rulare este timpul pentru traversarea fiierul de mapare atunci cand o mapare
completa este imposibila. De exemplu, n cazul n care doar jumtate din fisierul de postari poate
fi mapat n memorie i, prin urmare, v = 2, n jur de 7 zile sunt necesare pentru a cauta postarile
pe hard,ceea ce inseamna un timp total estimat de funcionare de aproximativ 7.3 zile pentru a
construi un fiier de index inversat pentru colectia Web V i 28.3 zile
pentru colectia Web XX. Pentru coleciile mici care pot fi mapate pe deplin n memorie, cu toate
acestea, abordarea bazat pe disc este potrivita, deoarece accese aleatoare disc nu sunt necesare
n timpul traversarii listelor. Listele pentru Biblie, de exemplu, reprezint mai puin de 6 Mb i
timpul prezis de rulare pentru inversiune este de aproximativ 3 secunde. Includerea poziiile
cuvintelor in index duce la fiiere mai mari, dar creterea general a timpului de funcionare nu
este considerabila.
St t +C ( +t l )+ I t c +
t
I t c + I ( c+t t )
Ipoteza care st la baza acestei abordri este c memoria principal este suficient de mare pentru
I
. Pentru M = 256 Mb, se presupune c dictionarul i vectorul pentru cele dou
colecii de referin mai mici incap n memoria principal. Prima trecere peste colecia Web V
dureaz 12 minute. n timpul celei de-a doua trecere, colecia este citita din nou ceea ce dureaza
inca 12 de minute. Compresie de postri i decompresia vectorului pentru a obine listele
inversate
necesit putin peste 3 minute. Scrierea listelor inversate pe disc cere nca 2 minute. Timpul total
de funcionare pentru a construi indexul colectiei Web V este de 29 de minute, din care cea mai
mare parte a timpului este petrecut parsand colectia. Pentru inversarea colectiei Bibliei, vom
timpul de funcionare prezis este de mai puin de 4 secunde. Cu toate acestea, din cauza
dimensiunii vectorului din memorie, de aproximativ 730 Mb, care ar fi necesar, colectia Web XX
nu poate fi indexatata folosind doar 256 Mb de memorie principal. O modalitate de a
mbunti scalabilitatea abordarii two-pass este de a pre-aloca vectorul partiionat nu n
memoria principal, ci pe disc i de a mpri textul n mai multe transe.Dimensiunea fiecarei
transe este aleasa astfel incat s fie suficient de mica pentru a o putea inversa in memoria
principala. Cnd memoria principal este epuizata, transa curenta este imbinata in vector de pe
disc. Vector de pe disc este citit secvenial, adica bloc cu bloc, n memoria principal
iar blocurile sunt scrise la loc dup ce noi intrri din transa curenta au fost adugate.
Dup ce toate transele au fost procesate, spatiul nefolosit dintre listele inversate este compactat
la o trecere final secvenial peste fisier. n ultima etap, fiecare lista inversat este, de
asemenea, decomprimata si recomprimare folosind schema de compresie final a fiierului
inversat.
Pentru aceast schem de partiionare a textului, mai multe informaii trebuie s fie
colectate n timpul primei treceri peste colectia de text fata de ce este necesar pentru trecerea
folosita de metoda two-pass. Pentru fiecare transa, numrul de de documente si frecventa
termenilor in transa sunt determinate. Pe baza acestor statistici, vectorii din memorie
corespondenti fiecarei transe sunt mpriti n partiii i limitele partitiilor sunt calculate.
Statisticile fiecarei transe sunt stocate comprimat ntr-un fiier de pe disc care necesit
doar cativa megabiti pentru fiecare transa. Timpul anticipat de funcionare pentru a construi un
fiier inversat cu doua treceri avand in vedere aceasta abordare imbunatatita din punct de vedere
al parametrilor din tabelele 1 i 2 este :
T =S t t + C(t p +t l) +
t
S t t + C( p+t l )+3 I t c +2 l I (t s /b+t t ) +
statisticilor)
(a doua trecere)
(comprimarea indexului)
t s /b +t
( I + I ) ( t +t c )
unde l denota numarul de transe in care textul este impartit iar b denota marimea blocurilor de
date care sunt transferate intr-un singur acces la disc. Numarul de transe se determina prin