270 likes | 426 Views
Algoritamski Aspekti razvoja i implementacije Web pretraziva č a. Diplomski rad iz predmeta Pretra ž ivanje i istra ž ivanje podataka na Internetu RI5PIP s tudent: Aleksandar Bradi ć, alek.br @ gmail.com m entor: prof. dr. Veljko Milutinovi ć, vm @ etf.bg.ac.yu. Elektrotehnički Fakultet,
E N D
Algoritamski Aspekti razvoja i implementacije Web pretrazivača Diplomski rad iz predmeta Pretraživanje i istraživanje podataka na Internetu RI5PIP student: Aleksandar Bradić, alek.br@gmail.com mentor: prof. dr. Veljko Milutinović, vm@etf.bg.ac.yu Elektrotehnički Fakultet, Univerzitet u Beogradu, Mart 2007.
Uvod • Cilj : razvoj kompletnog Web pretrazivača, baziranog na open source platformi • Motiv: • Postojeća tehnologija omogućava kreiranje “ih-house” pretraživača, koji bi efikasno pretraživao značajan deo Web-a • Dobijeni dataset možemo procesirati neograničeno i na načine na koje nije moguće korišćenjem komercijalnih pretraživaca • Obezbeđena je privatnost načina na koji se informacije procesiraju • Kreirana platforma se može koristiti za dalji razvoj i implementaciju inovativnih algoritama za obradu i istraživanje podataka na Web-u
Postavka problema • Potrebno je: • Realizovati proof-of-concept pretraživač, sa indeksom značajne veličine, koji bi implementirao sve osnovne funkcionalnosti standardnog Web pretraživača • Realizovati primer algoritma koji bi omogućio procesiranje podataka na način koji ne omogućavaju mainstream pretraživači • Kreirati platformu za dalji razvoj i analizu Web algoritama Zadatak : Kreiramo pretraživač koji omogućava pretraživanje značajnog dela .yu domena, uz mogućnost grupisanja (clustering) rezultata pretraživanja !
Postojeća rešenja • Danas postoji veliki broj Web pretraživača koji omogućuju efikasan full text search (Google, Yahoo, Ask …..) • Postoji i određen broj pretraživača koji omogućavaju clustering rezultata pretraživanja (Clusty, Alexa, WebClust) Nedostaci : • Iako pružaju rezultate vrhunskog kvaliteta, sa minimalnim vremenom odziva, komercijalni full text pretraživači : • Limitiraju način na koji se može obrađivati njihov korpus dokumenata (ograničeno na standardne information-retrieval upite) • Ne obezbeđuju privatnost pri pretraživanju
Predloženo rešenje • Koristimo : Open source Web search biblioteke : • Lucene – full-text search & indexing library • Nutch – web crawl & store library • Razvijamo : • Algoritam koji omogućuje grupisanje rezultata pretraživanja, na osnovu informacija o njihovoj međusobnoj povezanosti • RPC Servis, koji vrši pretraživanje Lucene indeksa i grupisanje rezultata na osnovu navedenog algoritma • Web frontend aplikaciju koja opslužuje upite korisnika i komunicira sa search servisom
Predloženo rešenje : randomNode clustering search engine • Arhitektura :
Pretpostavke i ograničenja • Obavljamo single-shot crawl, počevši od stranice : http://www.etf.bg.ac.yu • Crawl je limitiran na na url-ove iz .yu domena • Crawl do dubine 50, max. 50000 stranica po nivou • Resursi : • 256/64 Home ADSL konekcija • 1 x AMD Opteron 2.4 Ghz, 768 MB RAM 250Gb HDD • 14 radnih dana • Oekivani rezultati : • ~1 milion stranica
Analiza i detalji rešenja • Rezultati crawl procedure : • Run time ~ 12 dana • Veličina indeksa : 883868URL-ova (629974fetched, 152142 unfetched) • Veličina na disku : 16.6 Gb • Rezultati su nešto niži od ocekivanih • Objašnjenje : Efikasnost crawl procedure opada za nivoe dubine > 20 ! • Rešenje : Veći broj crawl-ova (počevši od različitih url-ova), dubine < 20 !
Analiza i detalji rešenja • Search aplikacija • Ideja : prikazivanje što većeg broja rezultata (~100) na jednoj stranici, uključujući i informacije o hiperlinkovima između rezutata • Razvijena je search aplikacija, na jeziku Java: • AJAX front-end (koristeći GWT kompajler) • Interaktivno okruženje, asinhrono osvežavanje sadržaja na ekranu • RPC Servis (servlet na Tomcat 5.5 container-u) • Pretraživanje Lucene indeksa i komunikacija sa front-end aplikacijom
Analiza i detalji rešenja • Realizacija :
Analiza i detalji rešenja randomNode.search: Web frontend
Analiza i detalji rešenja randomNode.clustering • Ideja: obezbediti grupisanje rezultata pretraživanja, koristeći informacije o vezama među stranicama (link analysis) • Standardni clustering pretraživači koriste machine learning/information retrieval tehnike za određivanje sličnosti izmedju stranica i njihovo klasifikovanje • Clustering hipoteza: stranice vezane za istu temu formiraju strukturalni cluster (koji se može predstaviti kao jako povezana komponenta u grafu) • Problem grupisanja rezultata pretrazivanja predstavljamo kao problem određivanja jako povezanih komponenti u link grafu.
Analiza i detalji rešenja • Posmatramo Web grafG(V,E) • |V| = n – broj stranica u indeksu • |E| = k - broj linkova izmedju stranica • Indukovani PodgrafS(P,L) : • P = poskup čvorova koji odgovaraju zadatom upitu q • L = skup grana između čvorova u P • Ideja : Indukovani Podgraf sadrži dovoljno informacija da je moguće obaviti grupisanje rezultata, posmatrajući samo njegovu link strukturu. Značajan deo linkova “ostaje” unutar indukovanog podgrafa
Analiza i detalji rešenja • Formulacija problema : • Problem grupisanja rezultata predstavljamo kao problem efikasnog određivanja svih prirodnih grupačvorova u S(P,L) (graph clustering problem) • Postojeći pristupi : • Max-flow min-cut • Graph partitioning • Markov Clustering • Iterative Conductance Cutting • Predlažemo randomizovani algoritam za particionisanje indukovanog podgrafa, sa performansama poredivim sa poznatim algoritmima, uz znatno nižu kompleksnost
Analiza i detalji rešenja • Algoritam : • Ideja : Random walk na grafu, ima tendenciju da ostaje unutar jako povezanih komponenti • Posmatramo slučajni proces na usmerenom grafu, koji podrazumeva random walk i jump operacije • Kada se random walk, nadje u čvoru koji nema izlazne linkove, vrsi se jump na slučajno odabrani čvor na grafu • Ulaz : matrica povezanosti usmerenog grafa A, dimenzija n x n (n – broj čvorova u grafu) • Izlaz : clustering map : niz parova (čvor, cluster) • Sastoji se od dve faze : WALK i MERGE
Analiza i detalji rešenja • WALK faza : • Obavljamo K random walk-ova na grafu, od koji svaki počinje u slučajno odabranom čvoru grafa, pri čemu beležimo čvorove koji su poseceni u okviru svakog walk-a, kao i odgovarajuću frekvenciju posećivanja • Vrednost K predstavlja minimalnu vrednost potrebnu za pokrivanje svih čvorova grafa i kreće seu opsegu (N/logN, N). Zavisi od strukture grafa i diktira kompleksnost WALK faze algoritma (O(N),O(N^2)) • Dobijamo vektor W koji predstavlja skup potencijalnih cluster-a
Analiza i detalji rešenja • MERGE faza : • Svaki čvor se moze nalaziti samo u jednom cluster-u => vršimo operacije izbacivanja (cut) i spajanja (join) čvorova u potencijalnim cluster-ima • Ukoliko se čvor nalazi u vise walk-ova : • Ukoliko postoji walk u kome se dati čvor javlja sa većom frekvecijom => zadržava se u tom walk-u, dok se iz ostalih izbacuje (CUT) • Ukoliko se dati čvor javlja u vise walk-ova sa jednakom frekvencijom => vršimo spajanje walk-ova po datom čvoru (JOIN) • Konačan skup svih preostalih walk-ova, predstavlja skup cluster-a u posmatranom grafu
Analiza i detalji rešenja Primer rada algoritma : (2) Slučajno odabiranje početnih čvorova svakog walk-a (1) Ulazni graf
Analiza i detalji rešenja (3) WALK faza (4) Skup potencijalnih cluster-a
Analiza i detalji rešenja RETAIN 4 4 3 2 1 2 2 1 JOIN 2 2 CUT (4) MERGE faza
Analiza i detalji rešenja 1 1 JOIN (5) konačan skup cluster-a (4) MERGE faza
Analiza i detalji rešenja Analiza join operacije : 1 1 1 1 1 1 1 1 1 join 1 1 1 ovaj čvor učestvuje sa frekvencijom 1 u svakom od dobijenih walk-ova => vršimo join operaciju Join operacija omogućava clustering nekih od karakterističnih grafova, na kojima random walk ne konvergira !
Implementacija • Implementacija : • Algoritam je implementiran u randomNode pretraživaču (u okviru RPC servisa) : • Na osnovu zadatog upita, kreira indukovani graf, koristeći informacije o inlink-ovima iz LinkDb • Korišćenjem opisanog algoritma, vrši clustering rezultata • Frontend aplikaciji, zajedno sa rezultatima, vraća i informormaciju o cluster-u kome svaki od rezultata pripada • Web frontend aplikacija : • Na osnovu dobijenih informacija, vrši grupisanje rezultata, određivanje optimalnog rasporeda i njihovo prikazivanje
Zaključak • Opisani algoritam, predstavlja pogodno rešenje za implementaciju clustering funkcionalnosti, u pretraživacima sa ograničenim resursima • Proces slucajnog lutanja sa skokovima, predstavlja dobar model za dalju analizu i razvoj clustering algoritama. • Razvijena softverska platforma (zasnovana na Nutch/Lucene paketima), predstavlja dobru osnovu na kojoj se mogu razvijati, kako algoritmi za obradu podataka, tako i konkretne aplikacije, koje uključuju Web search kao jednu od komponenti.