Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

1 Leggere e scrivere dati da file Giorgio Valentini e –mail: DSI – Dipartimento di Scienze dell Informazione Università degli Studi.
Strutture dati per insiemi disgiunti
Algoritmi e Strutture Dati
Argomenti della lezione
Programmazione in Java
DBMS (DataBase Management System)
Java Stream e File.
Java Stream e File. La classe File Per operare con lintero file java mette a disposizione la classe File Per utilizzare la classe File è necessario importare.
Universita di Camerino
File System Cos’è un File System File e Directory
Massa Laura Mela Enrica
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
Realizzazione del file system
Interfaccia del file system
Realizzazione del file system
Programmazione Procedurale in Linguaggio C++
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
FUNZIONI DI BIBLIOTECA
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Process synchronization
File.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Flusso Massimo Applicazione Algoritmi Esercizio 1 Sia dato la seguente rete di flusso, in cui la sorgente è il nodo 1 e la destinazione è il nodo 6. I.
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Algoritmi e strutture dati
Corso di Informatica per Giurisprudenza
Esercitazione 2 Ranking di pagine Web Ilaria Bordino Ilaria Bordino e Debora Donato Corso di Ricerca dell'informazione nel Web - A.A. 2006/2007.
Ranking di pagine Web Debora Donato. Pagina 2 Ranking delle pagine Raccolta delle pagine html; Costruzione del webgraph; Transformazione dei dati in un.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona Ida Mele, Sapienza Universita di Roma.
Hadoop: introduzione (1)
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.
Calcolo di PageRank: esercizio
Struttura dei sistemi operativi (panoramica)
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
Tabelle hash.
Algoritmi e Strutture Dati
Ranking di pagine Web Ilaria Bordino Ranking di pagine web.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Organizzazione del corso
I File.
Java Collections.
Java Contardi Carlo A.S. 2008/09.
Elementi di Informatica di base
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
BIOINFO3 - Lezione 24 ARRAY
Strutture dati per insiemi disgiunti
Namespaces 1. Utilizzati per contenere tipi (classi, strutture, interfacce … ) ed altri namespaces La Class Library è organizzata gerarchicamente mediante.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
COMUNICAZIONE ONLINE, RETI E VIRTUALITA MATTEO CRISTANI.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
© M. Badella, G. Malnati, L. Tessitore Programmazione ad Oggetti A.A Package.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Programmazione ad oggetti
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Le basi di dati.
Ranking di pagine Web Ilaria Bordino Ida Mele Sapienza Università di Roma.
Transcript della presentazione:

Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona Ida Mele, Sapienza Universita’ di Roma Ranking di pagine web Ranking di pagine web 1

Raccolta delle pagine html; Costruzione del webgraph; 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. Ranking Web pages Ranking di pagine web Ranking di pagine web 2

Librerie per Web IR FastUtil DSI Utilities WebGraph LAW MG4J Ranking Web pages Ranking di pagine web

URL: http://fastutil.dsi.unimi.it Tre nuclei fondamentali: FastUtil URL: http://fastutil.dsi.unimi.it Tre nuclei fondamentali: - Classi che estendono Java Collections Framework esponendo strutture dati (mappe, insiemi, liste e code con priorità) con modesto ingombro di memoria e supporto per accesso/inserimento veloce di elementi. - Classi che espongono strutture dati (array, insieme, liste) a 64 bit per il supporto di collezioni di dati molto grandi; - Classi che forniscono supporto per I/O veloce ed efficiente su file binari e testuali. Ranking Web pages Ranking di pagine web

FastUtil: Supporto per collezioni tipizzate Fastutil specializza le classi più utili di Java Collections Framework (HashSet, HashMap, LinkedHashSet, LinkedHashMap, TreeSet, TreeMap, IdentityHashMap, ArrayList, Stack) fornendo delle versioni che accettano uno specifico tipo di chiave/valore (es., interi). Ogni struttura dati implementa, se possibile, la corrispondente interfaccia standard (ad es. Map per le mappe). Le strutture dati di Fastutil possono essere pluggate all'interno di codice già esistente ed utilizzate con metodi di accesso tradizionali. Le classi di Fastutil forniscono anche molte versioni polimorfiche dei metodi più ampiamente utilizzati, implementando interfacce più stringenti che estendono e rafforzano quelle standard. Ranking Web pages MG4J -- Managing GigaBytes for Java Ilaria Bordino Ranking di pagine web

FastUtil: Supporto per collezioni di grandi dimensioni Fastutil 6 mette a disposizione un insieme di classi per la gestione di collezioni di dati molto grandi (dimensione > 2^31). Big arrays: array di array utilizzabili come array monodimensionali con indici a 64 bit. Big lists: liste a 64 bit Big hash set: set la cui dimensione è limitata solo dalla quantità di memoria disponibile. Tutte le collezioni implementano l'interfaccia Size64, il cui metodo size64() ritorna la dimensione della collezione come long integer Ranking Web pages Ranking di pagine web

FastUtil: Supporto per I/O pratico ed efficiente Fastutil fornisce una vasta collezione di metodi che forniscono un supporto pratico ed efficiente per leggere/scrivere grandi vettori ottenere iteratori da file binari o testuali, etc. Obiettivo principale è l'incremento delle prestazioni (sia spazio che memoria). I metodi rilevanti per mappe e insieme tipizzati sono 2-10 volte più veloci di quelli delle classi standard. Fastutil riduce enormemente la creazione e collezione di oggetti, utilizzando metodi e iteratori polimorfici, che non richiedono la creazione di oggetti wrapper, e tecniche di hashing che permettono di evitare creazione di un grande numero di oggetti e la loro raccolta da parte del garbage collector. Ranking Web pages Ranking di pagine web

Dsiutil MutableString: le classi standard messe a disposizione da Java, String e StringBuffer, giacciono agli estremi opposti dello spettro immutabile/modificabile. Indicizzare testi su larga scala richiede alcune caratteristiche intemerdie: ad es, usare una stringa modificabile, una volta “congelata”, nello stesso modo ottimizzato di una immutabile Allo stessp tempo non abbiamo bisogno della sincronizzazione (che rallenta StringBuffer) Controllare se una parola esiste nel dizionario senza creare un nuovo oggetto Ranking Web pages Ranking di pagine web

BitVector – implementazioni flessibili e performanti Dsiutil Altre utilità: BitVector – implementazioni flessibili e performanti It.unimi.dsi.compression gestisce diversi tipi di codifiche ProgessLogger I/O Package util: fornisce implementazioni di strutture come prefix map e filtri di bloomit Ranking Web pages Ranking di pagine web

Implementazione java completa e documentata. WebGraph Framework che consente la manipolazione di grafi di grandi dimensione grazie all’utilizzo di moderne tecniche di compressione. Il framework si compone di: Codici (zeta- codes) particolarmente adatti per la memorizzazione di grafi del web. Algoritmi in grado di accedere ai grafi compressi senza effettuarne la decompressione, grazie a tecniche di tipo lazy che rimandano la decompressione al momento in cui diventa necessaria. Implementazione java completa e documentata. http:/webgraph.dsi.unimi.it Ranking Web pages Ranking di pagine web

WebGraph: Classi fondamentali ImmutableGraph: specifica metodi d’accesso per la manipolazione di un grafo immutabile. BVGraph: fornisce metodi flessibili e configurabili per memorizzare e utilizzare grafi del web in formato compresso. ASCIIGraph può essere usata per leggere grafi rappresentati attraverso un semplice formato testuale. ArcLabelledImmutableGraph: grafi etichettati sugli archi. Transform: consente l’applicazione di molte trasformazioni, come simmetrizzazione o calcolo del trasposto. Ranking Web pages Ranking di pagine web

WebGraph: Rappresentazione compressa La rappresentazione compressa di un grafo in formato BV è costituita da 3 file: .graph contiene le liste di successori di tutti I nodi nel grafo. Ogni lista di successori è una lista di interi mappata in una sequenza di bit attraverso l’uso di efficienti tecniche di compressione. .offsets Memorizza il bit offset per ogni nodo del grafo. L’offset del primo nodo è 0. Per comodità rappresentiamo anche l’offset dell’ultimo nodo, che di fatto fornisce l’indicazione della lunghezza in bit del file .graph .properties Contiene una serie di informazioni che sono necessarie per decodificare correttamente I file.offsets e .properties, e anche informazioni statistiche come numero di bit per link. Ranking Web pages Ranking di pagine web

Caricamento del grafo in memoria Il modo naturale di usare un grafo compresso è quello di caricarlo in un array di byte e poi indicizzare I suoi bit usando opportunamente gli offsets. Tenere in memoria gli offsets è molto costoso. Altra opzione è quella del caricamento parziale: specifichiamo un offset step J e carichiamo in memoria soltanto un offset ogni J. In questo modo è ancora possibile caricare un grafo in una speciale forma riarrangiata: per ogni J liste di successori memorizziamo prima gli outdegree, poi le restanti liste di successori. Per alcune applicazioni (es, calcolo del trasposto) non è necessario calcolare il grafo in memoria: in questo caso possiamo ottenere iteratori che leggono direttamente dal file .graph. Ranking Web pages Ranking di pagine web

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/ Ranking Web pages Ranking di pagine web Ranking di pagine web 14

Impostazione del classpath Scaricare e scompattare gli archivi seguenti: http://law.dsi.unimi.it/software/download/law-2.1-bin.tar.gz http://webgraph.dsi.unimi.it/webgraph-3.0.1-bin.tar.gz - http://webgraph.dsi.unimi.it/webgraph-deps.tar.gz Aggiungere al classpath tutti i file jar contenuti negli archivi suddetti, procedendo come descritto nella esercitazione precedente. Ranking Web pages Ranking di pagine web Ranking di pagine web 15

export DIR=your_own_directory set-classpath.sh export DIR=your_own_directory export CLASSPATH=.:$DIR/colt-1.2.0.jar:$DIR/dsiutils- 2.0.1.jar:$DIR/fastutil-6.4.1.jar:$DIR/jakarta-commons- collections-3.2.1.jar:$DIR/jakarta-commons-configuration- 1.4.jar:$DIR/jakarta-commons-io-1.4.jar:$DIR/jakarta- commons-lang-2.3.jar:$DIR/jsap-2.1.jar:$DIR/junit4- 4.5.jar:$DIR/law-2.1.jar:$DIR/log4j-1.2.14.jar:$DIR/sux4j- 3.0.jar:$DIR/webgraph-3.0.1.jar Ranking Web pages Ranking di pagine web Ranking di pagine web 16

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 Ranking Web pages Ranking di pagine web Ranking di pagine web 17

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 Ranking Web pages Ranking di pagine web Ranking di pagine web 18

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. .... Ranking Web pages Ranking di pagine web Ranking di pagine web 19

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 Ranking Web pages Ranking di pagine web Ranking di pagine web 20

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. Ranking Web pages Ranking di pagine web Ranking di pagine web 21

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 Ranking Web pages Ranking di pagine web Ranking di pagine web 22

Esercizi Ranking Web pages 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 Ranking Web pages Ranking di pagine web Ranking di pagine web 23