Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoElnora Filippi Modificato 10 anni fa
1
Ranking di pagine Web Debora Donato
2
Pagina 2 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
Pagina 3 Libreria DIS Libreria software per l'analisi di grafi di grandi dimensioni. 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
Pagina 4 Libreria DIS 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
Pagina 5 Installazione della Libreria Implementata in C++ versione 2.9; Raccomandata almeno 256 MB di RAM; Installazione: – Scaricare e scompattare la libreria; – Type cd disRelease (cambia directory) – Type make (compila i sorgenti)
6
Pagina 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
Pagina 7 Struttura della Libreria Generators: Measures: Search algorithms: Bow-tie discovering: File converters: Miscellaneous:
8
Pagina 8 Programmi da usare nell'esercitazione Della categoria file converters: – text2ips.script: transforma un file testo nella rappresentazione IPS; Della categoria graph measurers: – pagerank: esegue pagerank – hits: esegue hits
9
Pagina 9 Grafo in formato testo Grafo esempio Grafo in formato testo
10
Pagina 10 Grafo in formato testo – 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
Pagina 11 Grafo in formato IPS
12
Pagina 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
Pagina 13 Implementazione di Page Rank – 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
Pagina 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
Pagina 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
Pagina 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
Pagina 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
Pagina 18 Inizializzazione di Page Rank – Inizializza il file destinatario con il valore di pagerank; 1/N bufferFloatPR [numNodiperOgniBlocco] For i from 1 to numNodiPerOgniBlocco bufferFloatPR[i] = 1 / N scrive bufferFloatPR nel destFile numOfBlocchi volte;
19
Pagina 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
Pagina 20 Terminazione stop: lalgoritmo si ferma quando il numero di iterazioni e > che maxIter o il residuo e < residual
21
Pagina 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
Pagina 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
Pagina 23 Text2IPSscript – 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
Pagina 24 Text2IPSscript – 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
Pagina 25 Text2IPSscript – Creare una directory graphs/ nella directory che contiene dis_library; – Mettere alinterno della cartella appena creata larchivio graph-testo-name (es. edgeit) – Posizionarsi in dis_library – Creare il grafo IPS: – bin/text2ips.script 300 -savesource graphs/edgeit edgeit.%d
26
Pagina 26 Calcolo di PageRank – INPUT: il grafo in formato IPS – OUTPUT: ranking delle pagine secondo lalgoritmo pagerank – Uso: pagerank columns > printFile
27
Pagina 27 Calcolo di PageRank 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
Pagina 28 Calcolo di PageRank 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
Pagina 29 Esecuzione calcolo di PageRank – bin/pagerank 300 graphs/ 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
Pagina 30 Visualizzazione dei risultati con Gnuplot – Per entrare nell' ambiente: gnuplot – gnuplot> set logscale – gnuplot> plot outputFile.pr_distrib.txt using 1:2 w p
31
Pagina 31 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
Pagina 32 Esecuzione di HITS – bin/hits – Insert graph name: graphs/graphIPSName.%d – Insert maxResidual: 0.001 – Insert maxIteration: 50
33
Pagina 33 Utilizzo delle librerie Webgraph e LAW per il calcolo di PageRank – Webgraph: framework per lo studio del grafo del Web. Supporta la gestione di grafi di grandi dimensioni attraverso l'utilizzo di moderne tecniche di compressione. – Tool sviluppato presso il Laboratory of Web Algorithmics dell'Universita' di Milano – Disponibile gratuitamente: – http://webgraph.dsi.unimi.it/
34
Pagina 34 Utilizzo delle librerie Webgraph e LAW per il calcolo di PageRank – LAW: collezione software distribuita dal laboratory of Web Algorithmics. – Contiene il piu' grande insieme di classi e documentazione relativi a PageRank reso disponibile pubblicamente. – http://law.dsi.unimi.it/software/
35
Pagina 35 Impostazione del classpath – Scaricare e scompattare gli archivi seguenti: – http://law.dsi.unimi.it/software/law-1.3.1-bin.tar.gz http://law.dsi.unimi.it/software/law-1.3.1-bin.tar.gz – http://law.dsi.unimi.it/software/law-deps.tar.gz – Aggiungere al classpath tutti i file jar contenuti negli archivi suddetti.
36
Pagina 36 Impostazione del classpath – export DIR=(directory in cui sono stati scaricati gli archivi) – export CLASSPATH=$CLASSPATH:.:$DIR/colt-hep-1.2.0.jar:$DIR/colt- 1.2.0.jar:$DIR/dsiutils-1.0.jar:$DIR/fastutil5-5.1.2.jar:$DIR/gnu.getopt- 1.0.12.jar:$DIR/jakarta-commons-codec-1.3.jar:$DIR/jakarta-commons- httpclient-3.0.1.jar:$DIR/jakarta-commons-io-1.3.2.jar:$DIR/jakarta-commons- lang-2.3.jar:$DIR/jakarta-commons-logging-1.1.jar:$DIR/jakarta-commons- collections-3.2.jar:$DIR/jakarta-commons-configuration- 1.2.jar:$DIR/classpathx-jaf-1.0.jar:$DIR/jal-20031117.jar:$DIR/jetty5/jetty5- 5.1.12.jar:$DIR/jetty5/jetty5-jmx-5.1.12.jar:$DIR/jetty5/jetty5-servlet- 5.1.12.jar:$DIR/jsap-2.0.jar:$DIR/log4j-1.2.14.jar:$DIR/mg4j- 2.1.jar:$DIR/sux4j-0.2.jar:$DIR/velocity-1.4.jar:$DIR/webgraph- 2.1.jar:$DIR/law-1.3.1/law-1.3.1.jar
37
Pagina 37 Conversione del grafo in formato Webgraph – Passo 1: conversione nel formato testuale supportato dal framework. – Il grafo e' memorizzato in un file chiamato basename.graph-txt. La prima linea contiene il numero di nodi, n. Quindi, il file contiene n linee: la linea i-esima contiene i successori del nodo i in ordine crescente (la numerazione dei nodi va da 0 a n1). I successori sono separati tra di loro da uno spazio. – java Text2ASCII graph-name crea un file graph-name.graph-txt contenente il grafo in formato ASCIIGraph – more graph-name.graph-txt
38
Pagina 38 Conversione del grafo in formato Webgraph – Passo 2: conversione dal formato testuale al formato BV. – java it.unimi.dsi.webgraph.BVGraph -g ASCIIGraph graph-name graph-name – Produce un grafo compresso in formato BVGraph, con basename graph-name. – Il grafo risultante viene memorizzato in tre file: – graph-name.graph – graph-name.offsets – graph-name.properties
39
Pagina 39 Utilizzo della libreria LAW per il calcolo di PageRank – Il package it.unimi.dsi.law.rank contiene una vasta collezione di classi dedicate al calcolo di PageRank. – PageRank: classe astratta base. Definisce metodi e attributi per il supporto delle computazioni di PageRank o simili. – PageRank.IterationNumberStoppingCriterion: criterio di terminazione: si ferma quando il numero di iterazioni raggiunge un dato limite. – PageRankJacobi: calcola PageRank usando il metodo di Jacobi. – PageRankPowerMethod: calcola PageRank usando il metodo delle potenze. –....
40
Pagina 40 Utilizzo della libreria LAW per il calcolo di PageRank – Il package it.unimi.dsi.law.rank contiene una vasta collezione di classi dedicate al calcolo di PageRank. – PageRank: classe astratta base. Definisce metodi e attributi per il supporto delle computazioni di PageRank o simili. – PageRank.IterationNumberStoppingCriterion: criterio di terminazione: si ferma quando il numero di iterazioni raggiunge un dato limite. – PageRankJacobi: calcola PageRank usando il metodo di Jacobi. – PageRankPowerMethod: calcola PageRank usando il metodo delle potenze. – Input: grafo in formato BVGraph
41
Pagina 41 Calcolo di PageRank: esempio – java it.unimi.dsi.law.rank.PageRankPowerMethod graph-name graph-name – Calcola sul grafo di nome graph-name il PageRank score di tutti i nodi. – Output: graph-name.properties, graph-name.ranks (file binario contenente i punteggi calcolati per ogni nodo) – Lettura degli score calcolati per i nodi del grafo: – java PrintRanks graph-name.ranks – Stampa lo score calcolato per tutti i nodi. La riga i-esima contiene lo score del nodo i-esimo.
42
Pagina 42 Calcolo di PageRank: esercizio – Applicare gli altri metodi supportati per il calcolo di PageRank. – java it.unimi.dsi.law.rank.PageRankGaussSeidel graph-name graph-name – java PrintRanks graph-name – java it.unimi.dsi.law.rank.PageRankJacobi graph-name graph-name – java PrintRanks graph-name
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.