Ilaria bordino e debora donato
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

Esercitazione 2 Ranking di pagine Web PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on
  • Presentation posted in: General

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;

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Ilaria bordino e debora donato

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


Esercitazione 2 ranking di pagine web

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.


Libreria software per l analisi di grafi di grandi dimensioni

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


Libreria

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


Installazione della libreria

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)


Struttura della libreria

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;


Struttura della libreria1

Struttura della Libreria

  • Generators:

  • Measures:

  • Search algorithms:

  • Bow-tie discovering:

  • File converters:

  • Miscellaneous:


Programmi che saranno usati per l esercitazione di oggi

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


Grafo in formato testo

Grafo in Formato Testo

Grafo esempio

Formato testo


Il formato ips

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


Grafo in formato ips

Grafo in Formato IPS


Multifile

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)


Implementazione di pagerank

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;


Inizializzazione

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


Multifile utilizzati

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.


Partizionamento del grafo

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


Partizionamento del grafo1

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.


Inizializzazione del pagerank

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;


Ciclo principale

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;

}

}


Terminazione

Terminazione

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


Passo di normalizzazione

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


Calcolo del residuo

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)


Text2ips script

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


Text2ips script1

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.


Text2ips script2

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


Uso di page rank

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


Uso page rank

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;


Uso page rank1

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


Eseguire page rank

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


Visualizzazione dei risultati

Visualizzazione dei risultati

  • Per entrare nell' ambiente: gnuplot

  • gnuplot> set logscale

  • gnuplot> plot “outputFile.pr_distrib.txt” using 1:2 w p


Uso di hits

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


Eseguire hits

Eseguire Hits

  • bin/hits

  • Insert graph name: graphs/graph-name/graphIPSName.%d

  • Insert maxResidual: 0.001

  • Insert maxIteration: 50


  • Login