Ranking di pagine Web Ilaria Bordino Ranking di pagine web.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Introduzione al linguaggio C++
Strutture dati per insiemi disgiunti
1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
Tecnologia delle basi di dati: Strutture fisiche di accesso
Programmazione in Java
IlTrovatore S.p.a. IlTrovatore RemoteSearch IlTrovatore mette a disposizione di portali Internet, piccole e medie imprese, tutto il suo know-how nel settore.
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.
Informatica Recupero debito quarto anno Terzo incontro.
PHP.
Universita di Camerino
Linguaggi di programmazione
File System Cos’è un File System File e Directory
Algoritmi e Programmazione
Massa Laura Mela Enrica
Realizzazione del file system
Anno accademico Array e puntatori in C.
Realizzazione del file system
Alberi binari di ricerca
Programmazione Procedurale in Linguaggio C++
FUNZIONI DI BIBLIOTECA
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Process synchronization
File.
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
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona
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.
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona Ida Mele, Sapienza Universita di Roma.
MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di basi documentali Ilaria Bordino Yahoo! Research, Barcelona.
Calcolo di PageRank: esercizio
File System NTFS 5.0 Disco: unità fisica di memorizzazione
1 Implementazione di Linguaggi 2 Implementazione di Linguaggi 2 Federico Bernardi Type checking 2° parte Type checking 2° parte - Equivalenza di type expressions.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Organizzazione del corso
I File.
Espressioni condizionali
Daniel Stoilov Tesi di Laurea
Elaborazione di Franco Grivet Chin
Studio di euristiche per il miglioramento di algoritmi di ranking per il World-Wide Web Università degli Studi di Milano Corso di Laurea in Informatica.
Progettazione multimediale
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
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
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.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
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.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Concetti Fondamentali sulla Programmazione
Servizi Internet Claudia Raibulet
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Le basi di dati.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
Lezione 14 Tecniche di I/O Avanzate Obiettivi di apprendimento: A.Come lavorare con stream binari B.Lavorare con I datalog files C.Vantaggi e svantaggi.
Ranking di pagine Web Ilaria Bordino Ida Mele Sapienza Università di Roma.
Transcript della presentazione:

Ranking di pagine Web Ilaria Bordino Ranking di pagine web

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 di pagine web

Librerie per Web IR Colt FastUtil WebGraph MG4J MG4J -- Managing GigaBytes for Java Ilaria Bordino

Colt: libreria per il calcolo scientifico Url: http://hoschek.home.cern.ch/hoschek/colt/ Libreria matematica sviluppata presso il CERN per estendere le funzionalità supportate da java.math Fornisce strutture dati efficienti ed implementazioni scalabili di algoritmi per Off-line and On-line Data Analysis, LinearAlgebra, Multi-dimensional arrays, Statistics, Histogramming,Monte Carlo Simulation, Parallel and Concurrent Programming. MG4J -- Managing GigaBytes for Java Ilaria Bordino

URL: http://fastutil.dsi.unimi.it/ FastUtil URL: http://fastutil.dsi.unimi.it/ FastUtil estende il framework Java Collections supportando strutture type-specific (mappe, insiemi, liste) con un piccolo ingombro di memoria e metodi molto più veloci per l’accesso e l’inserimento. Introduce ulteriori caratteristiche e funzionalità non disponibili nelle classi standard (es. Iteratori bidirezionali). Oltre ad oggetti e tipi primitivi, fornisce anche supporto per I riferimenti, oggetti che sono confrontati utilizzando l’operatore di uguaglianza piuttosto che equals(). Include API per una gestione veloce ed efficiente di I/O su file binari o file di testo. MG4J -- Managing GigaBytes for Java Ilaria Bordino

Rafforzamento delle interfacce: casting di tipo non più necessario; FastUtil La versione 5 (Java >=5) introduce pieno supporto per I generics ed è anche fortemente basata su covariant return type overriding: un metodo x() che ritorna un oggetto di classe T può essere sovrascritto da un metodo x() che restituisce un oggetto di classe U (sottoclasse di T) Vantaggi: Rafforzamento delle interfacce: casting di tipo non più necessario; Le implementazioni possono dichiarare il ritorno di tipi più specifici (solitamente più potenti) di quelli dichiarati nelle interfacce corrispondenti. MG4J -- Managing GigaBytes for Java Ilaria Bordino

FastUtil Tutte le strutture dati implementano la corrispodente interfaccia standard (ad es. Map per le mappe): possibilità di fare plug in all’interno di codice esistente e di utilizzo con I metodi di accesso tradizionali. Quando possibile, implementano interfacce più stringenti che estendono e rafforzano quelle std esponendo molte versioni polimorfiche dei metodi più utilizzati. Maggiore vantaggio: miglioramento delle prestazioni sia in termini di efficienza che di occupazione di memoria MG4J -- Managing GigaBytes for Java Ilaria Bordino

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 MG4J -- Managing GigaBytes for Java Ilaria Bordino

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 MG4J -- Managing GigaBytes for Java Ilaria Bordino

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: UN insieme predefinito 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 MG4J -- Managing GigaBytes for Java Ilaria Bordino

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. ArrayListMutableGraph: per grafi dinamici. Consente di costruire incrementalmente un grafo e di estrarne successivamente una versione immutabile. Transform: consente l’applicazione di molte trasformazioni, come simmetrizzazione o calcolo del trasposto. MG4J -- Managing GigaBytes for Java Ilaria Bordino

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. MG4J -- Managing GigaBytes for Java Ilaria Bordino

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. MG4J -- Managing GigaBytes for Java Ilaria Bordino

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 di pagine web

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

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 di pagine web

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 di pagine web

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 di pagine web

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 di pagine web

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 di pagine web

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 di pagine web

Esercizio: implementazione di HITS 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 di pagine web