Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html;...

42
Ranking di pagine Web Debora Donato

Transcript of Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html;...

Page 1: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Ranking di pagine Web

Debora Donato

Page 2: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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.

Page 3: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 4: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 5: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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)

Page 6: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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;

Page 7: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 7

Struttura della Libreria

• Generators:

• Measures:

• Search algorithms:

• Bow-tie discovering:

• File converters:

• Miscellaneous:

Page 8: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 9: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 9

Grafo in formato testo

Grafo esempio

Grafo in formato testo

Page 10: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 10

Grafo in formato testo

– 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

Page 11: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 11

Grafo in formato IPS

Page 12: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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 all’utente (multiFileWriter, multiFileReader)

Page 13: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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;

Page 14: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 15: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 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.

Page 16: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 17: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 17

Partizionamento del grafo

For each structInfoi = readInfo() /* fInfo.read() */

For each successor node of is = 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.

Page 18: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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;

Page 19: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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;}

}

M '* Rank=cM∗Rank+ 1−c ∗[ 1N ]N∗1

M '* Rank=cM∗Rank+ 1−c ∗[ 1N ]N∗1

Page 20: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 20

Terminazione

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

Page 21: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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 all’interno del fileTemporaneo per sommaPR.

– Il risultato viene memorizzato in fileDestinatario

Page 22: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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)

Page 23: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 24: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 24

Text2IPSscript

– 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.

Page 25: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 25

Text2IPSscript

– Creare una directory graphs/ nella directory che contiene dis_library;

– Mettere al’interno della cartella appena creata l’archivio graph-testo-name (es. edgeit)

– Posizionarsi in dis_library

– Creare il grafo IPS:

– bin/text2ips.script 300 -savesource graphs/edgeit edgeit.%d

Page 26: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 26

Calcolo di PageRank

– 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

Page 27: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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;

Page 28: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 29: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 30: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 31: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 31

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

Page 32: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

Pagina 32

Esecuzione di HITS

– bin/hits

– Insert graph name : graphs/graphIPSName.%d

– Insert maxResidual : 0.001

– Insert maxIteration: 50

Page 33: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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/

Page 34: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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/

Page 35: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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-deps.tar.gz

– Aggiungere al classpath tutti i file jar contenuti negli archivi suddetti.

Page 36: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 37: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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 n−1). 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

Page 38: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 39: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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.

– ....

Page 40: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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

Page 41: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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.

Page 42: Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.

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