Ranking di pagine Web Ilaria Bordino Ida Mele Sapienza Università di Roma.

Slides:



Advertisements
Presentazioni simili
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona
Advertisements

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.
Calcolo di PageRank: esercizio
Ranking di pagine Web Ilaria Bordino Ranking di pagine web.
JUG – Ancona Italy AJAX Giovanni Baleani Developer IBS srl.
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
Generazione di codice dinamico per la realizzazione di catene di servizi componibili Progetto di Reti di Calcolatori LS A.A. 2007/08 Studente: Silvia Cereda.
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
La codifica di Huffman Un'implementazione in C++ (parte del materiale è opera di Mark Nelson, Dr. Dobb’s Journal, Gennaio 1996)‏
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Prova d’Esame: selezione di domande
I/O redirection AND PIPES
GeoGebra QuizFaber Formazione tra pari
La rappresentazione delle informazioni
Dal problema al processo risolutivo
Commissione Calcolo e Reti
Terza Lezione → Navigare nel file System → parte 2
Analysis framework of distributed thread and malware data-sources
Dal problema al processo risolutivo
MATRICI (ARRAY) IN MATLAB/OCTAVE
INDICO Parte 1 01/07/2018 Francesco Serafini.
Organizzazione fisica
LE BANCHE DATI PER LE RICERCHE BIBLIOGRAFICHE
LA GESTIONE DEI PACCHETTI
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Asynchronous JavaScript and XML
SAS® OnDemand for Academics SAS Studio
Che cos’e’ l’Informatica
Esercitazione di Statistica Economica
istalliamo l’ambiente di sviluppo - ide
Consultare un corpus con AntConc
Esercitazione di Statistica Economica
Gli schemi concettuali
INTRODUZIONE A EXCEL Il foglio elettronico o foglio di calcolo è una tabella che contiene parole e numeri che possono essere elaborati applicando formule.
Programmare.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Gestione Griglie nel Form Designer
Come personalizzare il sito Web online di Microsoft SharePoint
BootCaT: Bootstrapping Corpora and Terminology
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Programmazione e Laboratorio di Programmazione
Ricorsione 16/01/2019 package.
Introduzione agli Algoritmi e alle Strutture Dati
Programmazione e Laboratorio di Programmazione
Corsi di Laurea in Biotecnologie
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
WORD 28/02/2019 Informatica - WORD.
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Fogli elettronici e videoscrittura
Excel 3 - le funzioni.
Gli archivi e le basi di dati
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
Esercizio Dato un albero binario, definiamo altezza minimale di un nodo v la minima distanza di v da una delle foglie del suo sottoalbero, definiamo invece.
Fogli di Calcolo Elettronici
APPUNTI SUL LINGUAGGIO C
Grafi e problem solving
Usando strutture dati nella piattaforma Java Collections Framework
Algoritmi e Strutture Dati
A-to-Z Consente di Localizzare e Accedere a tutte le risorse della biblioteca: riviste online riviste cartacee riviste nelle banche dati in full text riviste.
Array e Stringhe Linguaggio C.
GUIDA ALL’UTILIZZO DELLE FUNZIONALITÀ DI PAGAMENTO
Docente: Sabato Bufano
Transcript della presentazione:

Ranking di pagine Web Ilaria Bordino Ida Mele Sapienza Università di Roma

Ranking di pagine web Pagina 2 Ranking delle pagine ● Raccolta delle pagine html; ● Costruzione del webgraph; ● Transformazione dei dati in un formato adeguato; ● Ranking delle pagine del webgraph: - Algoritmi link-based (es. PageRank o HITS).

Ranking di pagine web Pagina 3 ● Colt ● FastUtil ● WebGraph ● MG4J Librerie per Web IR

Ranking di pagine web Pagina 4 Colt: libreria per il calcolo scientifico ● URL: ● API: ● 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.

Ranking di pagine web Pagina 5 FastUtil ● URL: ● API: ● 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.

Ranking di pagine web Pagina 6 FastUtil ● La versione 5 di Java (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.

Ranking di pagine web Pagina 7 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 standard esponendo molte versioni polimorfiche dei metodi più utilizzati. ● Maggiore vantaggio: miglioramento delle prestazioni sia in termini di efficienza che di occupazione di memoria.

Ranking di pagine web Pagina 8 DsiUtil URL: API: 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 esempio, usare una stringa modificabile, una volta “congelata”, viene gestita in modo ottimizzato come una stringa immutabile. Allo stesso tempo non abbiamo bisogno della sincronizzazione (che rallenta StringBuffer). Controllare se una parola esiste nel dizionario senza creare un nuovo oggetto.

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

Ranking di pagine web Pagina 10 WebGraph ● URL: ● API: ● 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.

Ranking di pagine web Pagina 11 WebGraph: Classi fondamentali ● ImmutableGraph: specifica metodi d’accesso per la manipolazione di un grafo immutabile. - per caricare il grafo sono disponibili diversi metodi: load, loadOffline, loadSequential. ● 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.

Ranking di pagine web Pagina 12 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 la decodifica, e anche informazioni statistiche come numero di bit per link.

Ranking di pagine web Pagina 13 Caricamento del grafo in memoria ● Il modo naturale per 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 caricare il grafo in memoria: in questo caso possiamo ottenere iteratori che leggono direttamente dal file.graph.

Ranking di pagine web Pagina 14 ● LAW: collezione software distribuita dal Laboratory of Web Algorithmics dell'Università di Milano. ● Contiene il più grande insieme di classi e documentazione relativi a PageRank reso disponibile pubblicamente. ● URL: ● API: Utilizzo delle librerie Webgraph e LAW per il calcolo di PageRank

Ranking di pagine web Pagina 15 ● 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. ● PageRankPowerMethod: calcola PageRank usando il metodo delle potenze. ● PageRankJacobi: calcola PageRank usando il metodo di Jacobi. ● Input: grafo in formato BVGraph. Utilizzo della libreria LAW per il calcolo di PageRank

Ranking di pagine web Pagina 16 ● Scaricare e scompattare l'archivio: law-1.4.tar.gz. ● Aggiungere la directory law-1.4 alla directory contenente tutti i file.jar (es. deps). ● Aggiornare il classpath: export DIR=deps export CLASSPATH=.:$DIR/classpathx-jaf-1.0.jar:$DIR/colt jar:$DIR/dsiutils jar $DIR/fastutil jar:$DIR/jakarta-commons-collections-3.2.jar:$DIR/jakarta-commons- configuration-1.4.jar:$DIR/jakarta-commons-digester-1.8.jar:$DIR/jakarta-commons-io- 1.4.jar:$DIR/jakarta-commons-lang-2.3.jar:$DIR/jakarta-commons-logging-1.1.jar:$DIR/jal jar:$DIR/javacc-4.0.jar:$DIR/jetty jar:$DIR/jetty6-html jar:$DIR/jetty6-util jar:$DIR/jsap-2.0.jar:$DIR/junit jar:$DIR/log4j jar:$DIR/mailapi jar:$DIR/mg4j-3.0.jar:$DIR/pdfbox jar:$DIR/sux4j jar:$DIR/sux4j-2.0.jar:$DIR/tomcat5-servlet-2.4-api jar:$DIR/velocity- 1.5.jar:$DIR/velocity-tools-1.3.jar:$DIR/webgraph jar:$DIR/xalan-j2-serializer jar:$DIR/law-1.4/law-1.4.jar Impostazione del classpath

Ranking di pagine web Pagina 17 Creazione di un grafo in formato Webgraph ● Passo 0: crawling di pagine Web. Al termine di questa operazione si ottiene un file.crl (N.B. Questa operazione verrà spiegata nella prossima esercitazione). ● Passo 1: estrazione del grafo. Al termine di questa operazione si hanno 2 file: nodes e edges e un file stats.txt. ● Passo 2: conversione del grafo in un formato testuale supportato dal framework. Il grafo è memorizzato nel file.graph-txt: - la prima linea contiene il numero di nodi: n. - le righe successive contengono i successori, in particolare: 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.

Ranking di pagine web Pagina 18 ● Passo 3: conversione dal formato testuale al formato BVGraph. ● Il comando: ● java it.unimi.dsi.webgraph.BVGraph -g ASCIIGraph file-edges base-name ● produce un grafo compresso in formato BVGraph. ● Il grafo risultante viene memorizzato in tre file: - base-name.graph - base-name.offsets - base-name.properties Creazione di un grafo in formato Webgraph (2)

Ranking di pagine web Pagina 19 ● Supponiamo di avere a disposizione il risultato di un crawling. ● Scaricare: urls.crl, graphExtractor.pl e Text2ASCII.java. ● Il comando: ●./graphExtractor.pl urls.crl dis.txt ● crea il file degli archi dis.txtedges e il file dei nodi dis.txtnodes. - more dis.txtedges - more dis.txtnodes ● Infine crea un file chiamato stats.txt. Passo 1: esempio

Ranking di pagine web Pagina 20 ● Convertire il grafo nel formato testuale supportato dal framework. ● Scaricare e compilare Text2ASCII.java. ● Il comando: ● java Text2ASCII dis.txtedges ● crea il file dis.txtedges.graph-txt contenente il grafo in formato ASCIIGraph: ● more dis.txtedges.graph-txt ● Attenzione: nei file.txtnodes e.txtedges, la numerazione dei nodi parte da 1, mentre nel file.graph-txt la numerazione parte da 0. Passo 2: esempio

Ranking di pagine web Pagina 21 ● Conversione nel formato BVGraph. ● Il comando: ● java it.unimi.dsi.webgraph.BVGraph -g ASCIIGraph dis.txtedges disBV ● produce un grafo compresso in formato BVGraph, con basename disBV. ● Il grafo risultante viene memorizzato nei file: disBV.graph, disBV.offsets e disBV.properties: more disBV.properties Passo 3: esempio

Ranking di pagine web Pagina 22 ● Il comando: ● java it.unimi.dsi.law.rank.PageRankPowerMethod graph- base- name rank-base-name ● calcola il PageRank score dei nodi del grafo. ● Output: rank-base-name.properties, rank-base-name.ranks (file binario contenente i punteggi calcolati per ogni nodo). ● Per la stampa degli score si può utilizzare PrintRanks.java: ● java PrintRanks rank-base-name.ranks ● che stampa il PageRank score calcolato per tutti i nodi. La riga i- esima contiene lo score del nodo i-esimo. Calcolo di PageRank

Ranking di pagine web Pagina 23 ● Il comando: ● java it.unimi.dsi.law.rank.PageRankPowerMethod disBV disPR ● calcola sul grafo disBV il PageRank score di tutti i nodi. ● more disPR.properties ● Per la lettura degli score calcolati per i nodi del grafo, scaricare e compilare PrintRanks.java poi eseguire: ● java PrintRanks disPR.ranks Calcolo di PageRank: esempio

Ranking di pagine web Pagina 24 ● Calcolare il PageRank per il grafo WikiIT. ● Ad esempio: - java it.unimi.dsi.law.rank.PageRankPowerMethod WikiIT WikiIT_PR - java PrintRanks WikiIT_PR ● Applicare gli altri metodi supportati per il calcolo di PageRank. ● Ad esempio utilizziamo GaussSeidel: - java it.unimi.dsi.law.rank.PageRankGaussSeidel WikiIT WikiIT_PRGauSei - java PrintRanks WikiIT_PRGauSei Calcolo di PageRank: esercizio

Ranking di pagine web Pagina 25 Esercizi per casa Esercizio: ripetere l'esercitazione utilizzando il grafo WikiPT. Esercizio opzionale: implementare HITS in Java. Si calcola per ogni pagina x l'hub score h(x) e l'authority score a(x). Implementazione iterativa: h(x) = ∑ x → y a(y) a(x) = ∑ y → x h(y)

Ranking di pagine web Pagina 26 Calcolo di HITS: esercizio opzionale Data la pagina è necessario estrarre gli in-link. Esermpio: ho delle pagine Web (chiamate X, Y, Z) con dei link ad altre pagine (che chiamiamo A, B, C). AXAYAZBXCXCYAXAYAZBXCXCY AXBXCXAYCYAZAXBXCXAYCYAZ ABCABC X ACAC Y A Z A: X, Y, Z B: X C: X, Y

Ranking di pagine web Pagina 27 Calcolo di HITS: esercizio opzionale (2) ● Per prima cosa si crea un parser per estrarre da ogni pagina Web i link. ● Quindi si fa una lista in cui per ogni riga viene riportata la coppia: Esempio: oppure ecc, ecc. A questo punto ordiniamo la lista in modo da avere per ogni pagina gli in-link.