Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoFelisa Biondi Modificato 10 anni fa
1
Ranking di pagine Web Ilaria Bordino, Yahoo! Research Barcelona Ida Mele, Sapienza Universita di Roma
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. Pagina 2Ranking Web pages
3
FastUtil DSI Utilities WebGraph LAW MG4J Librerie per Web IR Pagina 3Ranking Web pages
4
FastUtil URL: http://fastutil.dsi.unimi.ithttp://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. Pagina 4Ranking Web pages
5
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. Pagina 5 Ranking Web pages
6
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 Pagina 6Ranking Web pages
7
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. Pagina 7Ranking Web pages
8
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 Pagina 8Ranking Web pages
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 bloomit Pagina 9Ranking Web pages
10
WebGraph Framework che consente la manipolazione di grafi di grandi dimensione grazie allutilizzo 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 Pagina 10Ranking Web pages
11
WebGraph: Classi fondamentali ImmutableGraph: specifica metodi daccesso 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 lapplicazione di molte trasformazioni, come simmetrizzazione o calcolo del trasposto. Pagina 11Ranking Web pages
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 luso di efficienti tecniche di compressione..offsets Memorizza il bit offset per ogni nodo del grafo. Loffset del primo nodo è 0. Per comodità rappresentiamo anche loffset dellultimo nodo, che di fatto fornisce lindicazione 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. Pagina 12Ranking Web pages
13
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. Pagina 13Ranking Web pages
14
Utilizzo delle librerie Webgraph e LAW per il calcolo di PageRank – LAW: collezione software distribuita dal Laboratory of Web Algorithmics. – Contiene il più grande insieme di classi e documentazione relativi a PageRank reso disponibile pubblicamente. – http://law.dsi.unimi.it/software/ http://law.dsi.unimi.it/software/ Pagina 14Ranking Web pages
15
Impostazione del classpath – Scaricare e scompattare gli archivi seguenti: – http://law.dsi.unimi.it/software/download/law-2.1-bin.tar.gz 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-3.0.1-bin.tar.gz – http://webgraph.dsi.unimi.it/webgraph-deps.tar.gz http://webgraph.dsi.unimi.it/webgraph-deps.tar.gz – Creare una directory dove posizionare tutte le librerie e copiarvi dentro i file.jar – Aggiungere al classpath tutti i file.jar contenuti negli archivi suddetti, procedendo come descritto nella esercitazione precedente. NOTA: sul sito è disponibile larchivio lib.zip contenente tutte le librerie necessarie per lesercitazione e il file set-classpath.sh per settare il classpath. Pagina 15Ranking Web pages
16
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-logging- 1.1.jar:$DIR/jakarta-commons-io-1.4.jar:$DIR/jakarta-commons- lang-2.3.jar:$DIR/jakarta-commons-configuration- 1.4.jar:$DIR/jsap-2.1.jar:$DIR/junit4-4.5.jar:$DIR/law- 2.1.jar:$DIR/log4j-1.2.14.jar:$DIR/mg4j-4.0.jar:$DIR/sux4j- 3.0.jar:$DIR/webgraph-3.0.1.jar:$DIR/nutchGraph.jar Pagina 16 Ranking Web pages N.B. sostituire your_own_directory con la path assoluta della cartella contenente le librerie (es. /User/…/lib)
17
set-classpath.sh – Scaricare dal sito il file set-classpath.sh e posizionarlo nella directory dellesercitazione. – Sostituire your_own_directory con il path completo della cartella contenente le librerie. – Usare il comando:source set-classpath.sh – Scaricare dal sito il file esempio contenente gli archi del grafo e posizionarlo nella directory dellesercitazione. – Scaricare dal sito Text2ASCII.java e PrintRanks.java, posionarli nella directory dellesercitazione e copilare. Pagina 17 Ranking Web pages
18
Conversione del grafo in formato Webgraph – Passo 1: conversione nel formato testuale supportato dal framework. – Il grafo è memorizzato in un file chiamato graph-name.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 n1). I successori sono separati tra di loro da uno spazio. – Il comando java Text2ASCII graph-name crea un file graph- name.graph-txt contenente il grafo in formato ASCIIGraph – java Text2ASCII esempio – more esempio.graph-txt Pagina 18Ranking Web pages
19
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. – Il grafo risultante viene memorizzato in tre file: – graph-name.graph – graph-name.offsets – graph-name.properties – java it.unimi.dsi.webgraph.BVGraph -g ASCIIGraph esempio esempio – more esempio.properties Pagina 19Ranking Web pages
20
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. … Pagina 20Ranking Web pages
21
Calcolo di PageRank: esempio – Il comando java it.unimi.dsi.law.rank.PageRankPowerMethod graph-name rank-name calcola sul grafo di nome graph-name il PageRank score di tutti i nodi. – Output: rank-name.properties, rank-name.ranks (file binario contenente i punteggi calcolati per ogni nodo) – java it.unimi.dsi.law.rank.PageRankPowerMethod esempio esempioPR – Usare java PrintRanks rank-name.ranks per la lettura degli score. PrintRanks stampa lo score calcolato per tutti i nodi. La riga i-esima contiene lo score del nodo i-esimo. – java PrintRanks esempioPR.ranks > ranks – more ranks Pagina 21Ranking Web pages
22
Calcolo di PageRank: esercizio – Applicare gli altri metodi supportati per il calcolo di PageRank. – java it.unimi.dsi.law.rank.PageRankGaussSeidel graph-name rank-name – java PrintRanks rank-name.ranks – java it.unimi.dsi.law.rank.PageRankJacobi graph-name rank- name – java PrintRanks rank-name.ranks Pagina 22Ranking Web pages
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.