Raccolta, ranking e query delle pagine di un webgraph Ilaria Bordino
Pagina 2 Programma della lezione Nutch: un motore di ricerca configurabile dallutente Esecuzione di Pagerank sul grafoDIS; Esecuzione di HITS sul grafoDIS; Indicizzazione delle pagine html del grafo DIS in MG4J; Query da riga di comando usando MG4J;
Pagina 3 db Link structure IPS RankPR Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 4 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 5 Nutch: motore di ricerca configurabile dall'utente Permette la raccolta delle pagine, lindicizzazione e linterrogazione delle pagine web. INPUT: un set di pagine html OUTPUT: motore di ricerca sulle pagine raccolte USO: raccolta di pagine e ricerca sulla collezione indicizzata
Pagina 6 Nutch: download Disponibile gratuitamente in –Tutorial: –Presentazione generale del codice: – Ultimaversione: (il file nutch-0.7.tar.gz)
Pagina 7 Nutch: configurazione Java 1.4.x ( – Tomcat di Apache 4.x ( – Almeno un gigabyte su disco; – Connessione Internet veloce;
Pagina 8 Nutch: configurazione Inizializzare NUTCH_JAVA_HOME con la directory radice di Java. –edit.bashrc per inserire export NUTCH_JAVA_HOME =/usr/local/lib/j2sdk1.4.2_03 –MAC OS: export NUTCH_JAVA_HOME=/Library/Java/Home Aggiungere nutch/bin al PATH –edit.bashrc per inserire export PATH =$ PATH:nutch/bin
Pagina 9 Raccolta delle pagine del DIS Creare il file urls nella directory public/infoRetr/nutch con linsieme iniziale di pagine html. –Ex: Modificare il file nutch-0.6/conf/crawl-urlfilter.txt per personalizzare la raccolta Aggiungere +^ limitare la raccolta alle pagine al dominio dis.uniroma1.it
Pagina 10 Raccolta delle pagine del DIS Lista di parametri: nutch crawl –-dir : directory dove saranno memorizzati i resultati della raccolta –-depth : profondita dei path a partire dalla pagina radice –delay : intervallo di tempo, in secondi, fra due consecutive richieste su uno stesso host. –-threads : numero di threads eseguiti in parallelo Esecuzione del crawl: – nutch crawl urls –dir mycrawl –depth 3 >& mycrawl.log – NON ESEGUIRE A LEZIONE
Pagina 11 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 12 Nutch WedDB Permette di estrarre webgraph dalle pagine raccolte; DB puo essere aggiornato con nuovi dati; Usata per consultare i dati nel DB (html) Si usa WebDBReader (net.nutch.db.WebDBReader)
Pagina 13 Classe WebDBReader: metodi
Pagina 14 Interrogazione del DB –nutch readdb: comando usato per esaminare campi arbitrari del db ; –Eseguire: nutch readdb per vedere le opzioni –Dimensione del webgraph: nutch readdb mycrawl/db –stats (sembra dare un errore: il numero di archi e incorretto) –Lista dei links: nutch readdb mycrawl/db –dumplinks –Pagine con ranking piu' alto: nutch readdb mycrawl/db –toppages 2
Pagina 15 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 16 Output di readdb sul webgraph from to to to to to to from to to from to
Pagina 17 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 18 Parsing del webgraph –graphExtractor.pl: un parser scritto in perl per estrarre il webgraph –Uso: graphExtractor.pl input-fileName output-fileName –./graphExtractor.pl dis0905.crl dis0905.txt –Dis0905edges: lista dei archi del grafo –Dis0905nodes: lista dei nodi del grafo e sue rispettivi html page
Pagina 19 Lista degli archi –more dis0905.txtedges –1 2 –13 –4 5 –4 6 –5 22 –5 791 –5 792 –5 793 –5 794 –6 22 – – – – – –7 8 –7 9
Pagina 20 Lista dei nodi: id e url more dis0905.txtnodes 1 2http://
Pagina 21 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 22 Uso di PageRank - sudo apt-get install libstdc glibc2.2 –(per usare la libreria DIS con gcc 4) –INPUT: il grafo in formato IPS –OUTPUT: ranking delle pagine secondo lalgoritmo pagerank –Uso: pagerank columns > pr-printFile
Pagina 23 Uso di PageRank InputFile: base-name del file in formato IPS prob: probabilita di scegliere una pagina vicina (e non saltare a altra pagina) residual: pagerank si ferma se il residuo e piu piccolo di residual maxIter: numero massimo di iterazioni eseguite per pagerank;
Pagina 24 Uso di PageRank Pr-report: file con i risultati di pagerank columns: stampa vari tipi di informazione: –N: colonna con lid del nodo; –I: colonna con lindegree del nodo; –O: colonna con loutdegree del nodo; –P: colonna con il rank del nodo; Pr-printFile: stampa di varie statistiche su Pagerank (correlazione Indegree/Outdegree, correlazione Indegree/Pagerank, ecc.)
Pagina 25 Esecuzione di PageRank –../../bin/pagerank 100 graph-ips-name.%d pr-report.%d NIOP > pr-print.txt –File generati: ls pr* Pr-report*listNodes.txt: nodeID, indegree, outdegre, e page rank values per ogni node Pr-results*pr_distrib.txt.: valori de PR e numero di nodi con il rispettivo valori di PR Pr-results*.report.txt.: statistiche sul i risultati
Pagina 26 more pr-report-dis.0.listNodes.txt – NODE INDEG OUTDEG PR(0..1) PR(0..N)
Pagina 27 Analisi dei risultati –Larger indegree: sort –n –r –k2,3 pr-report-dis listNodes.txt > pr-sorted.txt | more pr-sorted.txt –Larger rank: sort –n –r –k4 pr-report-dis listNodes.txt > valoriPR.txt –sort: comando linux per ordinare valori -n: ordina secondo valori numerici -r: ordine inverso (decrescente) -k: numero d'ordine delle colonne in base a cui ordinare –more: comando linux che mostra i risultati una schermata alla volta
Pagina 28 Analisi dei risultati –Osservare: pagine in ordine crescente di indegree pagine in ordine crescente di outdegree pagine in ordine decrescente di outdegree
Pagina 29 Analisi dei risultati –awk BEGIN {while(getline>0) printf(%d %d %d %lf %lf\n,$1,$2,$3,$4,$5)} pr-report-dis listNodes.txt | sort –n –r –k4 > pr-valori.txt –more pr-valori.txt –awk: linguaggio di programmazione per text-processing. Utile per modificare testo.
Pagina 30 more pr-report-dis.0.pr_distrib.txt – ================================================== Values grouped by 25 (unit e-08) %unit e-08 %PageRank %num nodes e e e e e e e e e e e e e e e e e e
Pagina 31 Visualizzazione dei risultati –Stampa la distribuizione: awk 'BEGIN {getline;getline;getline;getline;while(getline>0 && $2>0) printf("%.25f %lf\n",$1,$2);}' pr-report-dis.0.pr_distrib.txt > pr-distr.txt –Gnuplot: programma a linea di comando per produrre grafici 2D e 3D. –Per entrare nellambiente: gnuplot –gnuplot> plot pr-distr.txt using 1:2 w p –gnuplot> set logscale –gnuplot> replot –gnuplot> quit
Pagina 32 Distribuzione di PageRank
Pagina 33 Uso di HITS –INPUT: grafo in formato IPS –OUTPUT: ranking delle pagine secondo lalgoritmo hits –Uso: hits –Nota: programma interattivo: parametri forniti da std input InputFile: GraphName.%d maxResidual: hits si ferma se il residuo e piu piccolo di maxResidual maxIter: numero massimo di iterazioni
Pagina 34 Esecuzione di HITS –../../bin/hits –Insert graph name: graphName.%d –Insert maxResidual: –Insert maxIteration: 50
Pagina 35 File generati –hits_distrib_AUTH.txt: valori di authority e numero di nodi con il suddetto valore. –hits_distrib_HUBS.txt: valori di hubs e numero di nodi con il suddetto valore. –hits_distrib_INDEG.txt: distribuzione dell indegree –hits_report_correlaz.txt: risultati della correlazione –hub.listNodes.txt: risultati di hits
Pagina 36 more auth0.listNodes.txt – e e e e e e e e e e e e e e e e e e e e e e e+01
Pagina 37 Analisi dei risultati –awk BEGIN {no=0;while(getline>0) printf(%ld %.25f\n,++no,$1)} auth0.listNodes.txt > valHits.txt –sort –n –r –k2 valHits.txt | more
Pagina 38 sort –n –r –k2 valHits.txt | more –
Pagina 39 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query
Pagina 40 Download delle pagine html –Procediamo all' indicizzazione delle pagine raccolte da Nutch mediante MG4J. –Le pagine devono essere precedentemente scaricate, visto che non e possible ottenerle dal db di Nutch –Generare un file di testo con le pagine che devono essere raccolte: cut -f2 dis0905.txtnodes > pagesList.txt –Scaricare le pagine: wget -N pagine -i pagesList.txt
Pagina 41 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J QueryMG4J Query
Pagina 42 Impostazione del Classpath per MG4J – export CLASSPATH=$CLASSPATH:/Public/infoRetr/mg4j/BeanShell/bsh- 2.0b2.jar:/Public/infoRetr/mg4j/mg4j jar:/Public/infoRetr/mg4j/colt.jar:/Public/infoRetr/mg4j/ jakarta-commons- collections.jar:/Public/infoRetr/mg4j/jal.jar:/Public/infoRetr/ mg4j/jsap.jar:/Public/infoRetr/mg4j/mysql-connector- java.jar:/Public/infoRetr/mg4j/fastutil.jar:/Public/infoRetr/mg 4j/jakarta-commons- io.jar:/Public/infoRetr/mg4j/javacc.jar:/Public/infoRetr/mg4j/l ibreadline- java.jar:/Public/infoRetr/mg4j/pdfbox.jar:/Public/infoRetr/mg4j /gnu.getopt.jar:/Public/infoRetr/mg4j/jakarta-commons- lang.jar:/Public/infoRetr/mg4j/javamail/mailapi.jar:/Public/inf oRetr/mg4j/servletapi5.jar:/Public/infoRetr/mg4j/jaf.jar:/Publi c/infoRetr/mg4j/jakarta-commons- logging.jar:/Public/infoRetr/mg4j/jetty5/jetty5.jar:/Public/inf oRetr/mg4j/mstor.jar:/Public/infoRetr/mg4j/tagsoup.jar:/Public/ infoRetr/mg4j/log4j.jar:/Public/infoRetr/mg4j/velocity.jar
Pagina 43 Indicizzazione delle pagine html – Costruzione della base documentale: find../htmlDIS -type f | java it.unimi.dsi.mg4j.document.FileSetDocumentCollectio n -f it.unimi.dsi.mg4j.document.HtmlDocumentFactory htmldis.collection –Creazione dellindice: java -Xmx512M it.unimi.dsi.mg4j.tool.Index -- downcase -S htmldis.collection collectionDIS
Pagina 44 MG4J: Scorer – Tra gli scorer di MG4J : – clarkeComarckScorer: documentazione in Class ClarkeCormarkScorer di MG4J – DocumentRankScorer: assegna un rank pre-calcolato alle pagine. Il default e il resultato di query booleana: le pagine sono ritornate in ordine crescente di suei ID.
Pagina 45 Interrogazione da riga di comando – java it.unimi.dsi.mg4j.query.Query –help –Uso: java Query -c collection collectionBaseName1 collectionBaseName2 –java -Xmx512M it.unimi.dsi.mg4j.query.Query -c htmldis.collection collectionDIS-text collectionDIS-title –[!help]>Dipartimento –Redirezionare la query su un file di output (outFile) –grep "Document #" outFile | more
Pagina 46 db Link structure IPS RankPG Nutch ParserDB WEB readdb graph.txt txt2IPS PageRank HITS RankHITS getfiles files MG4J RankMG4J Query