13
UNIVERZITET U BANJOJ LUCI ELEKTROTEHNIČKI FAKULTET KATEDRA ZA OPŠTU ELEKTROTEHNIKU MULTIMEDIJALNI SISTEMI Projektni zadatak Pretraživanje baza punog teksta Studenti: Nastavnik: prof. dr Zdenka Babić Vanja Dardić 9/06 Asistent: mr Vladimir Risojević Nemanja Vujanić 10/06

Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

UNIVERZITET U BANJOJ LUCI

ELEKTROTEHNIČKI FAKULTET

KATEDRA ZA OPŠTU ELEKTROTEHNIKU

MULTIMEDIJALNI SISTEMI

Projektni zadatak Pretraživanje baza punog teksta

Studenti: Nastavnik: prof. dr Zdenka Babić Vanja Dardić 9/06 Asistent: mr Vladimir Risojević Nemanja Vujanić 10/06

Page 2: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

2

Sadržaj

Uvod ....................................................................................................................................................................................... 3

Algoritmi pretraživanja .................................................................................................................................................. 4

Algoritam bulovog pretraživanja .......................................................................................................................... 4

Algoritam slobodnog pretraživnja ........................................................................................................................ 4

Baza podataka .................................................................................................................................................................... 6

Strukture podataka .......................................................................................................................................................... 8

Analiza memorijskih i procesorskih zahtijeva ..................................................................................................... 9

Uputstvo za instalaciju i upotrebu .......................................................................................................................... 10

Literatura .......................................................................................................................................................................... 13

Page 3: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

3

Uvod

Istraživanja iz 1990-ih su pokazala da su ljudi za pronalaženje informacija radije kontaktirali

druge ljude nego koristili neke sisteme za pretraživanje informacija. Ali tokom posljednje dvije

decenije napredak tehnologije i optimizacija efikasnosti sistema za pretraživanje informacija

omogućila je razvoj i napredak internet pretraživača do tog nivoa, da je većina ljudi zadovoljna

većinom vremena, tako da su internet pretraživači postali standardan i prioritetan izvor

informacija.

U našoj aplikaciji su implementirana dva algoritma za pretraživanje baza punog teksta1, bulovo

pretraživanje i slobodno pretraživanje. Razlika u ovim algoritmima za krajnjeg korisnika je u

načinu pisanja upita. Kod bulovog pretraživanja upit se sastoji od ključnih riječi ili fraza koje su

razdvojene logičkim operatorima (AND, OR, AND NOT), dok se kod slobodnog pretraživanja upit

sastoji samo od ključnih riječi, pa su takvi sistemi jednostavniji za korištenje.

Dokumenti koji se pretražuju sastoje se od više dijelova, odnosno sastoje se od polja i zona. U

poljima se nalaze neki podaci o dokumentu, odnosno metapodaci, a to mogu biti npr. ime autora,

naslov dokumenta, ili datum izdavanja. Skup svih mogućih vrijednosti određenog polja treba da

bude konačan. Zona je slična kao i polje, stim što njen sadržaj može da bude bilo kakav tekst.

Tako npr. jedna zona u dokumentu može biti njegov sadržaj. U našoj aplikaciji implemetirane su

zone „naslov” i „sadržaj”.

Sama aplikacija je realizovana u programskom jeziku JAVA2, a za razvoj je korišteno razvojno

okruženje NetBeans IDE3. Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je

za povezivanje aplikacije i baze podataka korišten JPA (Java Persistance API), odnosno njegova

implementacija Hibernate5. Za pomoć pri timskom radu korišteni su programi LogMeIn

Hamachi6, TeamViewer7, VisualSVN Server8 i TortoiseSVN9.

1Baza punog teksta je kolekcija dokumenata i drugih informacija u vidu baze podataka, u kojoj je tekst svakog referenciranog dokumenta dostupan za čitanje, štampanje ili preuzimanje. 2 http://java.sun.com/ 3 http://www.netbeans.com/ 4 http://www.mysql.com/ 5 https://www.hibernate.org/ 6 https://secure.logmein.com/products/hamachi2/ 7 http://www.teamviewer.com/ 8 http://www.visualsvn.com/server/ 9 http://tortoisesvn.net/

Page 4: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

4

Algoritmi pretraživanja

U ovoj sekciji je dat kratak teorijski uvod u kojem su opisana dva algoritma pretraživanja koja su

implementirana u našoj aplikaciji

Algoritam bulovog pretraživanja

Da bi uopšte imalo smisla pretraživati bulovim algoritmom, prije svega je potrebno izvršiti

indeksiranje dokumenata u bazi. Pojam indeksiranja u ovom zadatku predstavlja parsiranje

dokumenata iz baze, izdvajanje različitih riječi iz dokumenata i uparivanje tih riječi sa

dokumentima u kojima se nalaze. Lista uparenih dokumenata i termina naziva se posting lista.

Nakon izvršavanja ovog procesa spremni smo za pretraživanje. Algoritam bulovog pretraživanja

ćemo objasniti na nekoliko primjera.

Primjeri korištenja operatora AND, OR i AND NOT:

Upit pretraživanja: Brutus (AND, OR, AND NOT) Calpurnia. Ako je riječ o operatoru AND, Brutus

i Calpurnia su termini za koje treba naći dokumente u kojima se pojavljuju oba termina. Ti

dokumenti će se nalaziti u presjeku posting lista za termine Brutus i Calpurnia. Za operator OR

rezultat će se nalaziti u uniji pomenutih posting lista, a ukoliko je riječ o operatoru AND NOT,

rezultat će se nalaziti u razlici Brutusa i Clapurnije. Operator AND NOT nije komutativan.

Primjer kompleksnijeg upita:

Upit pretraživanja: Caesar AND Calpurnia AND NOT Brutus OR Cleopatra. Algoritam će se

izvršavati s lijeva u desno. Ne postoji prioritet operatora, tako da će se prvo pronaći presjek

posting lista u kojima se nalaze Caesar i Calpurnia. Zatim će se iz tog skupa izbaciti svi

dokumenti u kojima se pojavljuje termin Brutus i na kraju će se novo dobijenom skupu dodati

svi dokumenti u kojima se pojavljuje termin Cleopatra.

Algoritam slobodnog pretraživnja

Kod ovog algoritma svaki dokument, odnosno svaka zona dokumenta, se predstavlja u

vektorskom prostoru dokumenata, tako da svaki termin u dokumentu određuje pravac i smjer

vektora, a određena vrijednost, koja se zove težina, se pridružuje vektoru i određuje njegovu

dužinu. Prije bilo kakavog pretraživanja, potrebno je izvršiti indeksiranje svih dokumenata u

bazi podataka, a to je ustvari proces određivanja vektorske reprezentacije dokumenata.

Pretraživanje se sastoji od određivanja vektorske reprezentacije upita, i poređenja te

reprezentacije sa svim dokumentima korištenjem kosinusne metrike. Ovim poređenjem dobija

se rezultat od 0 do 1, koji označava sličnost upita sa određenim dokumentom, tako da je nakon

pretraživanja potrebno sortirati dokumente prema rezultatima u opadajućem poretku.

Postoji više različtih težina koje se mogu pridruživati terminima. U ovoj implementaciji

korištena je težina TF-IDF (Term Frequency – Inverse Document Frequency). Ona se definiše

kao:

Page 5: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

5

𝑡𝑓-𝑖𝑑𝑓𝑡,𝑑 = 𝑡𝑓𝑡,𝑑 × 𝑖𝑑𝑓𝑡.

(1)

𝑡𝑓𝑡,𝑑 se naziva frekvencija termina, odnosno to je broj pojavljivanja termina t u dokumentu d.

𝑖𝑑𝑓𝑡 se naziva inverzna frekvencija dokumenta, a definiše se kao:

𝑖𝑑𝑓𝑡 = 𝑙𝑜𝑔𝑁

𝑑𝑓𝑡

,

(2)

gdje je N ukupan broj dokumenata u bazi podataka, a 𝑑𝑓𝑡 frekvencija dokumenata, odnosno to je

broj dokumenata u kojima se pojavljuje termin t.

Sličnost između dva dokumenta d1 i d2, se definiše pomoću kosinusne metrike nad njihovim

vektorskim reprezentacijama 𝑉 (𝑑1) i 𝑉 (𝑑2):

𝑠𝑖𝑚 𝑑1 ,𝑑2 =𝑉 (𝑑1)∙𝑉 (𝑑2)

𝑉 (𝑑1) 𝑉 (𝑑2) ,

(3)

gdje brojilac predstavlja skalarni proizvod vektora, a imenilac proizvod njihovih Euklidskih

dužina, odnosno njihovih modua. Uloga imenioca u ovoj jednačini je da normalizuje vektore

𝑉(𝑑1) i 𝑉(𝑑2) na jedinične vektore 𝑣 𝑑1 = 𝑉 (𝑑1)/ 𝑉 (𝑑1) i 𝑣 (𝑑2) = 𝑉 (𝑑2)/ 𝑉 (𝑑2) , tako da

sada jednačinu (3) možemo napisati u obliku:

𝑠𝑖𝑚 𝑑1 ,𝑑2 = 𝑣 (𝑑1) ∙ 𝑣 (𝑑2).

(4)

Slično tako, pošto je i upit ustvari dokument, možemo i rezultat upoređivanja upita q sa

dokumentom d predstaviti kao:

𝑠𝑐𝑜𝑟𝑒 𝑞, 𝑑 = 𝑣 (𝑞) ∙ 𝑣 (𝑑).

(5)

Page 6: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

6

Baza podataka

Za modelovanje baze podataka korišten je program MySQL Workbench10. Model baze podataka

prikazan je na slici (6).

(6)

Baza podataka sastoji se od 3 cjeline. U dijelu naznačenom sa DOCUMENT nalaze se 3 tabele,

gdje se nalaze svi podaci o dokumentima u bazi. U tabeli document nalaze se, pored primarnog

ključa, još četiri kolone. Kolone status i old_status označavaju stanje dokumenta, tj. da li je

dokument validan (V), ili obrisan (D), što se koristi prilikom indeksiranja da se odredi da li je

dokument koji se indeksira novi dokument, da li je izmjenjen dokument ili da li je obrisan

dokument. Kolone bool_indexed i free_indexed označavaju da li je dokument indeksiran od strane

bulovog odnosno algoritma slobodnog pretraživanja respektivno. U tabeli zone nalazi se spisak

zona koje neki dokument može da ima. U toj tabeli, pored primarnog ključa, postoji još jedan

identifikator id, koji ima iste vrijednosti kao i odgovarajuće konstante u aplikaciji koje služe za

uniformniji pristup zonama dokumenta. Trenutno je implementirana podrška za dve zone,

naslov i sadržaj dokumenta. U tabeli document_zone nalazi se tekstualni sadržaj zone nekog

dokumenta, odnosno tu se nalazi tekst koji se indeksira.

10 http://wb.mysql.com/

Page 7: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

7

U dijelu naznačenom sa BOOL SEARCH nalaze se dve tabele, bool_term i bool_zone_term. U tabeli

bool_term, nalaze se svi termini koji su rezultat parsiranja dokumenata iz baze. Tabela

bool_zone_term je vezna tabela koja povezuje termine i dokumente u kojima se ti termini

pojavljuju.

U dijelu naznačenom sa FREE SEARCH nalaze se dve tabele koje služe za vektorsku

reprezentaciju dokumenata. U njima se praktično nalaze vrijednosti koje su opisane izrazima

(1) do (5). Tako se u tabeli free_term nalazi kolona document_freq koja predstavlja vrijednost

𝑑𝑓𝑡 iz izraza (2), a kolona inverse_df predstavlja vrijednost izraza (2). U tabeli free_zone_term

nalazi se kolona term_freq koja predstavlja vrijednost 𝑡𝑓𝑡,𝑑 iz izraza (1), i kolona normal_tf_idf

koja predstavlja vrijednost izraza (1), ali u normalizovanom obliku.

Page 8: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

8

Strukture podataka

Budući da je aplikacija razvijana u OOP, to znači da sigurno ima mnogo klasa i interfejsa koji su

korišteni da bi se kasnije lakše vršila nadogradnja aplikacije i implementacija novih funkcija. Sve

klase i interfejsi se mogu naći u dokumentaciji koja je generisana alatom javadoc, a koja se

nalazi u projektnom direktorijumu. U ovoj sekciji će biti opisane samo one klase ili promjenljive

koje su bitne za implementaciju odgovarajućih algoritama.

U aplikaciji se posebno ističe jedna promjenljiva koja služi za lagan i brz pristup relevantnim

podacima vezanim za termin, na osnovu samog termina. Ti podaci su dokumenti u kojima se taj

termin pojavljuje, i neki numerički podaci potrebni za određivanje i rangiranje rezultata

pretraživanja. Ta promjenljiva je ustvari jedna lista u kojoj svaki element predstavlja jednu

mapu koja je vezana za određenu zonu, odnosno indeks te mape u listi odgovara koloni id iz

tabele zone. Te mape služe za pristup tabelema bool_term i free_term, odnosno one mapiraju

termine predstavljene kao string u objekte klase net.etfbl.search.entities.BoolTerm ili

net.etfbl.search.entities.FreeTerm koji ustvari predstavljaju objektno mapiranje navedenih

tabela.

Od ostalih klasa ističu se JavaBean11 klase koje mapiraju odgovarajuće tabele u bazi podataka.

Takođe, pošto su dva studenta učestvovala u izradi aplikacije, bilo je potrebno naći način da se

posao razdvoji na dva dijela. Zbog toga su prvo napravljeni odgovarajući interfejsi i apstraktne

klase, koji su kasnije implementirane na dva načina, tj. korištenjem dva zahtjevana algoritma. To

je takođe olakšalo integraciju ova dva različita algoritma u GUI dio ove aplikacije.

11 JavaBean je softverska komponenta koja se može višestruko koristiti i kojom se može vizuelno manipulisati razvojim alatima

Page 9: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

9

Analiza memorijskih i procesorskih zahtijeva

Pošto je ovo aplikacija u kojoj se praktično u svakom trenutku mijenjaju operativni podaci,

dodaju, brišu i izmjenjuju, teško je tačno izvršiti analizu potrebnih zahtjeva. Jedino je moguće

dati neke okvirne zahtjeve koji su potrebni da bi se ova aplikacija izvršavala u koliko-toliko

realnom vremenu.

Prilikom razvoja i testiranja aplikacije sa manjom bazom podataka (do 50 dokumenata) nije bilo

nikakvih problema. Međutim, sa porastom broja dokumenata u bazi podataka (oko 1000

dokumenata) povećali su se i zahtjevi za memorijom. Tada je dolazilo do problema sa

nedostatkom memorije, odnosno aplikacija je „pucala“. Ti problemi su riješeni boljim

upravljanjem listama i mapama koje sadrže mnogo podataka, odnosno njihovim periodičnim

čišćenjem, kao i povremenim pozivima Garbage Collector12-a. Ali to može da dovede do pada

performansi indeksiranja, odnosno do pada performansi dolazi kada zahtjevi za memorijom

puno porastu i kada se aktiviraju mehanizmi za alokaciju dodatne memorije.

Tako su na računaru sa dvojezgrenim procesorom na 2,53GHz i 2GB operativne memorije

izvršena određena testiranja. Rezultati su predstavljeni u siljedeće dve tabele. U tabeli (7) se

nalaze rezultati testova kada je java virutelnoj mašini dodjeljeno maksimalno 64MB memorije, a

u tabeli (8) kada je dodjeljeno 256MB memorije.

broj dokumenata vrijeme indeksiranja maksimalno korišteno memorije

50 0:03 19,86MB

500 1:39 59,17MB

1000 3:47 64MB

2000 greška greška

(7)

broj dokumenata vrijeme indeksiranja maksimalno korišteno memorije

50 0:03 20,24MB

500 1:35 58,93MB

1000 3:41 106,96MB 2000 11:55 180,56MB

(8)

12 Garbage Collector je dio sistema koji vrši reciklažu memorije koju zauzimaju objekti koji više nisu u upotrebi od strane programa

Page 10: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

10

Uputstvo za instalaciju i upotrebu

Da bi se pokrenula aplikacija prvo je potrebno instalirati odgovarajući softver. To je JRE (JAVA

Runtime Environment), i MySQL Server. Linkove za preuzimanje i uputstvo za instalaciju ovih

programa moguće je naći na njihovim službenim stranicama. Zatim je potrebno izvršiti sql

skriptu koja će kreirati odgovarajuće unose u bazi podataka koji su potrebni za ispravno

funkcionisanje programa. Aplikacija se može pokrenuti direktim izvršavanjem arhive

SearchEngine.jar, kada je po podrazumjevanim postavkama java virtuelnoj mašini dodjeljeno

64MB memorije. Ako je potrebno više memorije, tada je aplikaciju potrebno pokrenuti iz

komandne linije, korištenjem određenih parametara, npr.:

java –Xmx256m –jar SearchEngine.jar

gdje 256 označava memoriju koja će biti dodjeljena java virtuelnoj mašini.

Kada se pokrene aplikacija prvo se izvršava inicijalizacija, odnosno indeksiranje od strane

odgovarajućih algoritama. To je prikazano na slici (9).

(9)

Upotreba programa sastoji se od dve funkcionalnosti. To su modifikacija dokumenata u bazi

podataka, i pretraživanje dokumenata. Modifikacija dokumenata se izvršava preko registra

Document, što je prikazano na slici (10).Tu se nalaze sljedeće funkcije:

Add – dodavanje dokumenta u bazu;

Add X – dodavanje dokumenta u bazu određen broj puta;

Save – snimanje modifikacija na postojećem dokumentu;

Delete – brisanje dokumenta (dokument se samo označava kao obrisan);

Undelete all – povratak svih obrisanih dokumenata;

Copy All X – kopiranje svih dokumenata u bazi određen broj puta;

Clear indexes – brisanje svih indeksa iz baze;

Reinitialize – ponovno indeksiranje dokumenata u bazi.

Page 11: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

11

(10)

Pretraživanje dokumenata može se izvršavati na dva načina. Prvi način je korištenjem algoritma

bulovog pretraživanja. Upit se sastoji od termina i operatora. Da bismo kreirali upit potrebno je

napraviti kombinaciju termina i operatora tako da se operator nalazi između termina.

Dozvoljeni skup operatora je: AND, OR i AND NOT, koji se reprezentuju sa '&', '|' i '!',

respektivno. Upit se mora sastojati bar od jednog termina. Ako se sastoji od više termina,

između svaka dva susjedna termina se mora nalaziti tačno jedan operator. U slučaju da nema

operatora između susjednih termina, program izmađu njih ubacuje operator OR. Primjer

validnog upita:

Brutus & Cleopatra ! Calpurnia

Page 12: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

12

(11)

Drugi način pretraživanja je korištenjem algoritma slobodnog pretraživanja, kojem se može

pristupiti preko registra Free engine. Za pretraživanje je potrebno napisati željeni upit u

tekstualno polje i kliknuti na dugme Search. Kada se pretraživanje završi u tabeli ispod će se

prikazati rezultati pretraživanja koji se sastoje od ocjene dokumenta i njegovog naslova.

Dvoklikom na neki dokument otvara se novi prozor gdje je moguće pročitati sadržaj dokumenta.

(12)

Page 13: Projektni zadatak - dsp.etfbl.netdsp.etfbl.net/multimedia/studenti/2009/dardic_vujanic/dardic_vujanic.pdf · Kao sistem za upravljanje bazom podataka korišten je MySQL4, dok je za

13

Literatura

[1] Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to

Information Retrieval, Cambridge University Press. 2008.

http://nlp.stanford.edu/IR-book/information-retrieval-book.html

[2] http://www.google.com/

[3] http://www.wikipedia.org/