1 / 46

Raccolta, ranking e query delle pagine di un webgraph

Ilaria Bordino. Raccolta, ranking e query delle pagine di un webgraph. Programma della lezione. Nutch: un motore di ricerca configurabile dall’utente Esecuzione di Pagerank sul grafoDIS; Esecuzione di HITS sul grafoDIS; Indicizzazione delle pagine html del grafo DIS in MG4J;

oona
Download Presentation

Raccolta, ranking e query delle pagine di un webgraph

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ilaria Bordino Raccolta, ranking e query delle pagine di un webgraph

  2. Programma della lezione • Nutch: un motore di ricerca configurabile dall’utente • Esecuzione di Pagerank sul grafoDIS; • Esecuzione di HITSsul grafoDIS; • Indicizzazione delle pagine html del grafo DIS in MG4J; • Query da riga di comando usando MG4J;

  3. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPR RankMG4J IPS MG4J Query HITS RankHITS

  4. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

  5. Nutch: motore di ricerca configurabile dall'utente • Permette la raccolta delle pagine, l’indicizzazione e l’interrogazione 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

  6. Nutch: download • Disponibile gratuitamente in http://www.nutch.org • Tutorial: http://www.nutch.org/tutorial.html • Presentazione generale del codice: • http://www.nutch.org/apidocs/overview-summary.html • Ultimaversione: • http://www.nutch.org/release(il file nutch-0.7.tar.gz)‏

  7. Nutch: configurazione • Java 1.4.x (http://java.sun.com/j2se/downloads.html)‏ • Tomcat di Apache 4.x (http://jakarta.apache.org/tomcat)‏ • Almeno un gigabyte su disco; • Connessione Internet veloce;

  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 ”

  9. Raccolta delle pagine del DIS • Creare il file urlsnella directory public/infoRetr/nutch con l’insieme iniziale di pagine html. • Ex: http://www.dis.uniroma1.it • Modificare il filenutch-0.6/conf/crawl-urlfilter.txtper personalizzare la raccolta • Aggiungere +^http://([a-z0-9]*\.)*dis.uniroma1.it/ per limitare la raccolta alle pagine al dominio dis.uniroma1.it

  10. Raccolta delle pagine del DIS • Lista di parametri: nutch crawl • -dir <dir-name>: directory dove saranno memorizzati i resultati della raccolta • -depth <depth>: profondita’ dei path a partire dalla pagina radice • delay <delay>: intervallo di tempo, in secondi, fra due consecutive richieste su uno stesso host. • -threads <thread>: numero di threads eseguiti in parallelo • Esecuzione del crawl: • nutch crawl urls –dir mycrawl –depth 3 >& mycrawl.log • NON ESEGUIRE A LEZIONE

  11. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

  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)‏

  13. Classe WebDBReader: metodi

  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

  15. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

  16. Output di readdb sul webgraph from http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/sld006.htm to http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/index.htm to http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/sld001.htm to http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/sld005.htm to http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/sld007.htm to http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/sld036.htm to http://www.dis.uniroma1.it/%7Ecatarci/DBslides/Mod2L1-2/tsld006.htm from http://www.dis.uniroma1.it/~finzi/didattica/programmaFondI0203.html to http://tibur.dis.uniroma1.it/Fond_Inf_1_INF_DIPL/index.html to http://www.dis.uniroma1.it/~cioffi/homeciof.html from http://www.dis.uniroma1.it/~buriol/infoRetr.html to http://www.dis.uniroma1.it/~cosin/html_pages/COSIN-Tools.htm

  17. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

  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

  19. Lista degli archi • more dis0905.txtedges • 1 2 • 1 3 • 4 5 • 4 6 • 5 22 • 5 791 • 5 792 • 5 793 • 5 794 • 6 22 • 6 1001 • 6 3406 • 6 3407 • 6 3408 • 6 3409 • 7 8 • 7 9

  20. Lista dei nodi: id e url more dis0905.txtnodes 1 http://www.dis.uniroma1.it/~quaglia/pads2002/preliminary.html 2 http://www.dis.uniroma1.it/~quaglia/pads2002/bio-mag.html 3 http://www.dis.uniroma1.it/~quaglia/pads2002/panel.html 4 http://www.dis.uniroma1.it/~ai/citations/cado-giov-scha-98.html 5 http://www.dis.uniroma1.it/~cadoli/ 6 http://www.dis.uniroma1.it/~schaerf/ 7 http://www.dis.uniroma1.it/%7Eausiello/InfoTeoIIRM/libro.html 8 http://www.dis.uniroma1.it/%7Eausiello/InfoTeoIIRM/book/bibliography.pdf 9 http://www.dis.uniroma1.it/%7Eausiello/InfoTeoIIRM/book/chapter02.pdf 10 http://www.dis.uniroma1.it/%7Eausiello/InfoTeoIIRM/book/chapter03.pdf 11 http://www.dis.uniroma1.it/%7Eausiello/InfoTeoIIRM/book/chapter04.pdf 12 http://www.dis.uniroma1.it/%7Eausiello/InfoTeoIIRM/book/chapter05.pdf

  21. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

  22. Uso di PageRank • - sudo apt-get install libstdc++2.10-glibc2.2 • (per usare la libreria DIS con gcc 4) • INPUT: il grafo in formato IPS • OUTPUT: ranking delle pagine secondo l’algoritmo pagerank • Uso: pagerank <ram> <InputFile.%d> <prob> <residual> <maxIter> <pr-report.%d> columns > pr-printFile

  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;

  24. Uso di PageRank • Pr-report: file con i risultati di pagerank • columns: stampa vari tipi di informazione: • N: colonna con l’id del nodo; • I: colonna con l’indegree del nodo; • O: colonna con l’outdegree del nodo; • P: colonna con il rank del nodo; • Pr-printFile: stampa di varie statistiche su Pagerank • (correlazione Indegree/Outdegree, • correlazione Indegree/Pagerank, ecc.)‏

  25. Esecuzione di PageRank • ../../bin/pagerank 100 graph-ips-name.%d 0.85 0.001 50 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

  26. more pr-report-dis.0.listNodes.txt • NODE INDEG OUTDEG PR(0..1) PR(0..N)0 0 0 0.0000093597 01 1 2 0.0000158141 02 1 0 0.0000173092 03 1 0 0.0000173092 04 1 2 0.0000097316 05 54 5 0.0002253834 46 67 6 0.0002500968 47 3 5 0.0000126779 08 1 0 0.0000119087 09 1 0 0.0000119087 010 1 0 0.0000119087 011 1 0 0.0000119087 012 1 0 0.0000119087 013 1 7 0.0000125320 014 1 0 0.0000111593 015 1 0 0.0000111593 016 1 0 0.0000111593 017 1 0 0.0000111593 018 1 0 0.0000111593 0

  27. Analisi dei risultati • Larger indegree: • sort –n –r –k2,3 pr-report-dis0905.0.listNodes.txt > pr-sorted.txt | more pr-sorted.txt • Larger rank: • sort –n –r –k4 pr-report-dis0905.0.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

  28. Analisi dei risultati • Osservare: • pagine in ordine crescente di indegree • pagine in ordine crescentedi outdegree • pagine in ordine decrescentedi outdegree

  29. Analisi dei risultati • awk ‘BEGIN {while(getline>0) printf(“%d %d %d %lf %lf\n”,$1,$2,$3,$4,$5)}’ pr-report-dis0905.0.listNodes.txt | sort –n –r –k4 > pr-valori.txt • more pr-valori.txt • awk: linguaggio di programmazione per text-processing. Utile per modificare testo.

  30. more pr-report-dis.0.pr_distrib.txt • ==================================================Values grouped by 25 (unit 1.66444e-08)%unit 1.66444e-08%PageRank %num nodes9.37637e-06 19.50952e-06 3139.52616e-06 969.54281e-06 2859.55945e-06 2519.5761e-06 719.59274e-06 29.60939e-06 899.62603e-06 799.64268e-06 1589.67596e-06 259.69261e-06 609.70925e-06 1099.7259e-06 2039.74254e-06 3509.75919e-06 1249.77583e-06 679.79248e-06 254

  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 nell’ambiente: gnuplot • gnuplot> plot “pr-distr.txt” using 1:2 w p • gnuplot> set logscale • gnuplot> replot • gnuplot> quit

  32. Distribuzione di PageRank

  33. Uso di HITS • INPUT: grafo in formato IPS • OUTPUT: ranking delle pagine secondo l’algoritmo 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

  34. Esecuzione di HITS • ../../bin/hits • Insert graph name : graphName.%d • Insert maxResidual : 0.001 • Insert maxIteration : 50

  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

  36. more auth0.listNodes.txt • 0.0000e+004.6251e-224.5167e-254.5167e-251.9430e-082.7154e-022.8796e-021.6830e-124.3075e-214.3075e-214.3075e-214.3075e-214.3075e-211.3156e-051.2460e-191.2460e-191.2460e-191.2460e-191.2460e-191.2460e-191.2460e-194.6855e+011.3740e+01

  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

  38. sort –n –r –k2 valHits.txt | more • 213 392.9900000000000090949470177211 387.6299999999999954525264911214 374.3000000000000113686837722253 371.2400000000000090949470177212 366.4800000000000181898940355252 365.18999999999999772626324561623 363.2599999999999909050529823248 362.8700000000000045474735089251 362.0099999999999909050529823249 362.00999999999999090505298231621 359.8299999999999840838427190258 358.9200000000000159161572810257 358.9200000000000159161572810256 358.9200000000000159161572810255 358.9200000000000159161572810254 358.9200000000000159161572810250 358.92000000000001591615728101622 356.74000000000000909494701771620 356.64999999999997726263245571615 356.64999999999997726263245571628 353.56000000000000227373675441627 353.56000000000000227373675441626 353.56000000000000227373675441625 353.5600000000000022737367544

  39. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

  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

  41. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG QueryMG4J IPS MG4J Query HITS RankHITS

  42. Impostazione del Classpath per MG4J • export CLASSPATH=$CLASSPATH:/Public/infoRetr/mg4j/BeanShell/bsh-2.0b2.jar:/Public/infoRetr/mg4j/mg4j-0.9.2.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/mg4j/jakarta-commons-io.jar:/Public/infoRetr/mg4j/javacc.jar:/Public/infoRetr/mg4j/libreadline-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/infoRetr/mg4j/servletapi5.jar:/Public/infoRetr/mg4j/jaf.jar:/Public/infoRetr/mg4j/jakarta-commons-logging.jar:/Public/infoRetr/mg4j/jetty5/jetty5.jar:/Public/infoRetr/mg4j/mstor.jar:/Public/infoRetr/mg4j/tagsoup.jar:/Public/infoRetr/mg4j/log4j.jar:/Public/infoRetr/mg4j/velocity.jar

  43. Indicizzazione delle pagine html • Costruzione della base documentale: • find ../htmlDIS -type f | java it.unimi.dsi.mg4j.document.FileSetDocumentCollection -f it.unimi.dsi.mg4j.document.HtmlDocumentFactory htmldis.collection • Creazione dell’indice: • java -Xmx512M it.unimi.dsi.mg4j.tool.Index --downcase -S htmldis.collection collectionDIS

  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.

  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

  46. WEB Nutch readdb Link structure ParserDB db graph.txt getfiles txt2IPS files PageRank RankPG RankMG4J IPS MG4J Query HITS RankHITS

More Related