Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGiovanna Marini Modificato 10 anni fa
1
Esercitazione 2 Ranking di pagine Web Ilaria Bordino Ilaria Bordino e Debora Donato Corso di Ricerca dell'informazione nel Web - A.A. 2006/2007
2
Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un formato adeguato; Ranking delle pagine del webgraph: –Con Pagerank; –Con Hits. Passi per il ranking delle pagine
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/CO SIN-Tools.htm Documentazione in: http://www.dis.uniroma1.it/~cosin/publications/de liverableD13.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 esempioFormato testo
10
Il Formato IPS Per ogni grafo sono presenti 3 tipi di multifile: –.info: contiene lindegree, loutdegree 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 allutente ( 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 allinizio 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){ for each 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; for each succ j from 1 to numsucc pr(j) += pr(i)/numsucc; for each succ j from 1 to numsucc pr(j)= c*pr(j)+ (1-c)*(1/N); } scrive su fileDestPR; }
20
Terminazione stop: lalgoritmo 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 allinterno 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 –savesource –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 alinterno della cartella appena creata larchivio 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 lalgoritmo pagerank Uso: pagerank 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 lid del nodo; I: colonna con lindegree del nodo; O: colonna con loutdegree 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.001 50 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 lalgorithmo 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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.