1 / 32

Esercitazione 2 Ranking di pagine Web

Ilaria Bordino e Debora Donato. Esercitazione 2 Ranking di pagine Web. Ilaria Bordino e Debora Donato. Ilaria Bordino e Debora Donato. Corso di Ricerca dell'informazione nel Web - A.A. 2006/2007. Passi per il ranking delle pagine. Raccolta delle pagine html; Costruzione del webgraph;

zamir
Download Presentation

Esercitazione 2 Ranking di pagine Web

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 e Debora Donato Esercitazione 2 Ranking di pagine Web Ilaria Bordino e Debora Donato Ilaria Bordino e Debora Donato Corso di Ricerca dell'informazione nel Web - A.A. 2006/2007

  2. Passi per il ranking delle pagine • Raccolta delle pagine html; • Costruzione del webgraph; • Transformazione dei dati in un formato adeguato; • Ranking delle pagine del webgraph: • Con Pagerank; • Con Hits.

  3. Libreria Software per l'analisi di grafi di grandi dimensioni • È un tool sviluppato presso il Dipartimento di Informatica e Sistemistica dell' Universita’ La Sapienza. • Disponibile gratuitamente in http://www.dis.uniroma1.it/~cosin/html_pages/COSIN-Tools.htm • Documentazione in: http://www.dis.uniroma1.it/~cosin/publications/deliverableD13.pdf

  4. Libreria • Obiettivo: offre una serie di routines in grado di: • Generare grafi in base alla maggior parte dei modelli presenti in letteratura • Calcolare alcune delle misure statistiche proprie del grafo del Web • Distribuzione indegree outdegree • Pagerank, hits • SCCs, Clique • Bowtie

  5. Installazione della Libreria • Implementata in C++ versione 2.9; • Raccomandata almeno 256 MB di RAM; • Installazione: • Download e unzip la libreria; • Type “cd dis_library” (cambia directory) • Type “make” (compila i source)

  6. Struttura della Libreria • Per ogni programma viene creata una cartella. Ogni cartella contiene il codice (*.h, *.cpp, *.cc). • Makefile: compila e crea gli eseguibili dei programma; • Common: contiene le routine comuni ai diversi algoritmi (memoria secondaria, rappresentazione binaria, etc); • bin: contiene gli eseguibili creati durante la esecuzione di Makefile;

  7. Struttura della Libreria • Generators: • Measures: • Search algorithms: • Bow-tie discovering: • File converters: • Miscellaneous:

  8. Programmi che saranno usati per l’ esercitazione di oggi • Della categoria “file converters”: • text2ips.script: transforma un file testo nella rappresentazione IPS; • Della categoria “graph measurers”: • pagerank: esegue pagerank • hits: esegue hits

  9. Grafo in Formato Testo Grafo esempio Formato testo

  10. Il Formato IPS • Per ogni grafo sono presenti 3 tipi di multifile: • .info: contiene l’indegree, l’outdegree il puntatore alla lista dei successori (memorizzata in .succ), il puntatore alla lista dei predecessori (memorizzata in .pred) • .succ: lista dei successori • .pred: lista dei predecessori

  11. Grafo in Formato IPS

  12. Multifile • I file .ips devono essere in grado di contenere le informazioni relative a milioni di nodi e miliardi di archi. • Limite: filesystem • Soluzione: ogni file viene spezzato in piu’ file la cui gestione e’ completamente trasparente all’utente (multiFileWriter, multiFileReader)

  13. Implementazione di PageRank • Il calcolo di pagerank e’ fatto in blocchi: • I blocchi hanno misura fissa che dipende dal numero di float allocabili in memoria principale; • numMB = memoria / (1024*1024); • numFloat = numMB/sizeof(float); • Nblocchi = numNodi/numFloat • NnodiPerBlocco = numNodi/Nblocchi • Ogni blocco e’ caricato in memoria. Il page rank del blocco viene calcolato ed il risultato viene scritto su file;

  14. Inizializzazione • Verifica la correttezza dei parametri • Partiziona il file dei successori in blocchi. • Inizializza tutti nodi a 1/N • Esegue il ciclo principale • Normalizza e calcola residual • Stampa i file dei risultati

  15. Multifile utilizzati • fileSorgente: contiene i valori di PR calcolati alla fine del passo precedente. Viene inizializzato all’inizio di ogni ciclo con i valori di fileDestinatario • fileTemporaneo: contiene i valori di PR alla fine del ciclo principale, prima del passo di normalizzazione. • fileDestinatario: contiene i valori di PR dopo il passo di normalizzazione.

  16. Partizionamento del grafo • I file Grafo.succ e’ partizionato in Nblocchi file di misura prefissata; • Funzione partizionaFileSuccessori() • Calcola: numSucc, numInfo, numNodi e numNodiPerOgniBlocco; • esegue partizione (pseudocode nella prossima slide);

  17. Partizionamento del Grafo For each structInfo i = readInfo() /* fInfo.read() */ For each successor node of i s = readSuccess() /* fSucc.read() */ insert(s,buffer) /* buffer = fTempo*/ if block_is_full writeToDisk(); } writeToDisk() } • writeToDisk(): scrive sul file relativo al blocco corrente l’ ID del nodo, il numero totale di successori del nodo e la lista dei successori.

  18. Inizializzazione del PageRank • Inizializza il file destinatario con il valore di pagerank; • bufferFloatPR [numNodiperOgniBlocco] • For i from 1 to numNodiPerOgniBlocco bufferFloatPR[i] = • scrive bufferFloatPR nel destFile numOfBlocchi volte;

  19. Ciclo Principale while (stop==false){ foreach blocco b from 1 to Nblocchi{ pr = 0; //azzera il buffer for each node i del blocco b prende pr(i); identifica tutti i successori di I; foreach succ jfrom 1 to numsucc pr(j) += pr(i)/numsucc; foreach succ jfrom 1 to numsucc pr(j)= c*pr(j)+ (1-c)*(1/N); } scrive su fileDestPR; } }

  20. Terminazione stop: l’algoritmo si ferma quando il numero di iterazioni e’ > che maxIter o il residuo e’ < residual

  21. Passo di Normalizzazione • Si prende la somma di tutti i valori di PR alla fine del ciclo principale: sommaPR • Si dividono tutti I valori di PR memorizzati all’interno del fileTemporaneo per sommaPR. • Il risultato viene memorizzato in fileDestinatario

  22. Calcolo del residuo • Il residuo e’ la radice quadrata della sommatoria dei quadrati delle differenze dei valori di PR calcolati in due iterazioni successive. • residual = 0; • residual += (fileSorgente-fileDestinatario)2 • residual= sqrt(residual)

  23. Text2IPS.script • INPUT: il nome del file contenente il grafo (ASCII) • OUTPUT: i file testo in multifile format • NameMultifile.%d.info • NameMultifile.%d.pred • NameMultifile.%d.succ

  24. Text2IPS.script • Uso: text2ips.script <ram> –savesource <InputFile> <NameMultifile.%d> • ram: memoria disponibile in MB • -savesource: non cancella il file originale • %d: DA SPECIFICARE ogni volta che vogliamo un multifile.

  25. Text2IPS.script • Creare una directory graphs/graph-name/ nella directory che contiene dis_library; • Mettere al’interno della cartella appena creata l’archivio graph-testo-name • Posizionarsi in dis_library • Creare il grafo IPS: bin/text2ips.script 300 –savesource graphs/graph-name/graph-testo-name graph-ips-name.%d

  26. Uso di Page Rank • INPUT: il grafo in formato IPS • OUTPUT: ranking delle pagine secondo l’algoritmo pagerank • Uso: pagerank <ram> <InputFile.%d> <prob> <residual> <maxIter> <outputFile.%d> columns > printFile

  27. Uso Page Rank • InputFile: base-name del file in formato IPS • prob: probabilita’ di scegliere una pagina vicina (e non saltare a un' altra pagina) • residual: pagerank si ferma se il residuo e’ piu piccolo di residual • maxIter: numero massimo di iterazioni eseguite per pagerank;

  28. Uso Page Rank • outputFile%d: nome del multifile di output in cui vengono memorizzati i risultati del calcolo 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; • printFile: contiene l'output generato durante l'esecuzione della routine, ad es. Risultati parziali delle singole iterazioni

  29. Eseguire Page Rank • bin/pagerank 300 graphs/graph-name/graph-ips-name.%d 0.85 0.00150 outputFile.%d NIOP > print-file.txt • File generati: • outputFile.pr_distrib.txt: distribuizione dei risultati di pagerank • outputFile.report.txt: risultati di pagerank

  30. Visualizzazione dei risultati • Per entrare nell' ambiente: gnuplot • gnuplot> set logscale • gnuplot> plot “outputFile.pr_distrib.txt” using 1:2 w p

  31. Uso di HITS • INPUT: grafo in formato IPS • OUTPUT: ranking delle pagine secondo l’algorithmo hits • Uso: bin/hits • Nota: questa routine e` fornita solo in versione interattiva. I parametri devono essere forniti da std input. • InputFile: GraphName.%d • maxResidual: hits si ferma se il residuo e’ piu piccolo di maxResidual • maxIter: numero massimo di iterazioni

  32. Eseguire Hits • bin/hits • Insert graph name : graphs/graph-name/graphIPSName.%d • Insert maxResidual : 0.001 • Insert maxIteration : 50

More Related