MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti...
-
Upload
efisio-parodi -
Category
Documents
-
view
216 -
download
3
Transcript of MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti...
![Page 1: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/1.jpg)
MG4J – Managing GigaBytes for Java
Indicizzazione ed interrogazione di una collezione di documenti
Esercitazione
Ilaria Bordino
Yahoo! Research, Barcelona
![Page 2: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/2.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 2
Overview dei pacchetti principali
• Document– Document– DocumentCollection– FileSetDocumentCollection– DocumentFactory
• Index• Query
– HttpQueryServer– QueryEngine
• Documentation: http://mg4j.dsi.unimi.it/docs/• Manual: http://mg4j.dsi.unimi.it/man/manual.pdf
![Page 3: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/3.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 3
Document
• Interfaccia definita in it.unimi.dsi.mg4j.document• Ogni classe che implementa Document rappresenta un
singolo documento indicizzabile.
• Un documento è composto da un numero di campi che dipende dal tipo di documento;
• esempio:
– E-mail: from, to, data, subject, body
– Pagina html: title, url, body
![Page 4: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/4.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 4
Document
![Page 5: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/5.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 5
Document Collection
• Interfaccia definita in it.unimi.dsi.mg4j.document• Una collection è una lista di documenti accessibili in
modo casuale.
![Page 6: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/6.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 6
FileSetDocumentCollection
• Classe definita in it.unimi.dsi.mg4j.document• Una DocumentCollection corrisponde a un insieme
di file specificati in forma di array.
![Page 7: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/7.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 7
Document Factory
• Interfaccia definita in it.unimi.dsi.mg4j.document• Una factory esegue il parsing di documenti omogenei.• Ogni documento prodotto da una stessa factory contiene un
certo numero di campi che vanno indicizzati separatemente.
![Page 8: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/8.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 8
Implementazioni di DocumentFactory
• CompositeDocumentFactory• HtmlDocumentFactory• IdentityDocumentFactory• MailDocumentFactory• PdfDocumentFactory• ReplicatedDocumentFactory• PropertyBasedDocumentFactory• TRECHeaderDocumentFactory• ZipDocumentCollection.ZipFactory
![Page 9: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/9.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 9
Query
• Interprete a riga di comando per l’interrogazione di indici• Può anche avviare un web server che mostra i risultati in modo
simile ai motori di ricerca a cui siamo abituati
![Page 10: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/10.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 10
QueryEngine
• Un motore di ricerca che prende una query e restituisce i risultati, utilizzando un insieme programmabile di politiche di scoring.
![Page 11: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/11.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 11
HttpQueryServer
• Un semplice web server che processa le query.• Se una collezione di documenti è disponibile, il server
mostrerà alcuni intervalli che soddisfano la query sottomessa.
![Page 12: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/12.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 12
Costruzione della prima collezione di documenti
• L’indicizzazione in MG4J e’ centrata sul concetto di documento;
• Collezione di partenza: Attori e attrici
• Si usa la class FileSetDocumentCollection: che permette di costruire e serializzare un insieme di documenti specificati mediate il nome del file
![Page 13: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/13.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 13
CLASSPATH• Scaricare e scompattare MG4J http://mg4j.dsi.unimi.it/mg4j-4.0-bin.tar.gz
e le dipendenze necessarie: http://mg4j.dsi.unimi.it/mg4j-deps.tar.gz
Copiare tutti i file .jar in una directory a vostra scelta
Scrivere in un file set-classpath.sh le righe seguenti:
• export DIR= your_directory
• export CLASSPATH=.:$DIR/dsiutils-2.0.jar:$DIR/fastutil-6.4.jar:$DIR/fontbox-1.4.0.jar:$DIR/jakarta-commons-collections-3.2.1.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/javacc-5.0.jar:$DIR/jetty6-6.1.14.jar:$DIR/jetty6-html-6.1.14.jar:$DIR/jetty6-util-6.1.14.jar:$DIR/jsap-2.1.jar:$DIR/junit4-4.5.jar:$DIR/log4j-1.2.14.jar:$DIR/mailapi-1.3.1.jar:$DIR/mg4j-4.0.jar:$DIR/pdfbox-1.4.0.jar:$DIR/sux4j-3.0.jar:$DIR/tagsoup-1.0.1.jar:$DIR/tika-core-0.7.jar:$DIR/tika-parsers-0.7.jar:$DIR/tomcat5-servlet-2.4-api-5.5.27.jar:$DIR/velocity-1.5.jar:$DIR/velocity-tools-1.4.jar
• source set-classpath.sh per settare il classpath nella shell corrente (per settaggio permanente aggiungere le righe sopra al .bashrc)
![Page 14: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/14.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 14
Costruzione della prima collezione di documenti
• java it.unimi.dsi.mg4j.document.FileSetDocumentCollection --help
• FileDocumentFactory –e <encoding> –f <factory> <collection-name>
• find Attori_e_attrici -name *.html | java it.unimi.dsi.mg4j.document.FileSetDocumentCollection -f it.unimi.dsi.mg4j.document.HtmlDocumentFactory -p encoding=UTF-8 actors.collection
• find: e’ un comando linux che fornisce la lista dei file contenuti nella directory specificata. Restituisce un file per ogni linea.
![Page 15: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/15.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 15
La collezione di documenti
• La collezione actors.collection non contiene i file, ma soltanto i loro nomi (riferimenti).
• L’inserimento o la cancellazione di file nell’insieme di documenti che vogliamo indicizzare, rende inconsistente la collezione.
![Page 16: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/16.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 16
Informazioni sulla collezione
• BeanShell: java source interpreter
• java bsh.Interpreter• bsh % t = load(“actors.collection");• bsh % print (t.size());• bsh % d = t.document(0);• bsh % print (d.title());• bsh % print (d.uri());• bsh % exit();
![Page 17: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/17.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 17
La BeanShell
• E’ una shell java che permette di eseguire frammenti di codice java in maniera interattiva.
• Utile per scrivere prototipi o per il test di applicazioni.
• Download e tutorial: http://www.beanshell.org/intro.html
![Page 18: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/18.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 18
Creazione dell’indice
• Index:– java it.unimi.dsi.mg4j.tool.IndexBuilder --help
• java it.unimi.dsi.mg4j.tool.IndexBuilder --downcase -S actors.collection mycollection
• --downcase: tutti i termini vengono considerati minuscoli (case folding)
• -S: specifica la collection generata al punto precedente. Se non specificata, IndexBuilder legge lo standard input
• mycollection: basename che vogliamo assegnare all’indice.
![Page 19: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/19.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 19
Fasi dell’indicizzazione
• Passo 0 (opzionale): costruisce il dizionario dei termini. Genera i file basename.index e basename.properties
• Passo 1: costruisce l’indice invertito:doc1: pos1,.., posM
• Passo intermedio (opzionale): produce un ordinamento lessicografico dei termini nell’indice.
• Passo 2: sceglie il metodo di compressione e crea il basename.index ed inserisce altre voci in basename.properties
-e specifica il metodo di compressione (attualmente implementati -code, -code, golub)
![Page 20: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/20.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 20
Struttura dell’indice• mycollection-{text,title}.terms: un file di testo contenente l’itero dizionario,
un termine per riga, ordinato secondo l’indice– more mycollection-text.terms
• mycollection-{text,title}.frequencies: per ciascun termine, il numero di documenti in cui tale termine appare (codificato in -code)
• mycollection-{title,text}.sizes: contiene, per ciascun documento indicizzato, la corrispondente dimensione (=numero di parole) in - code.
![Page 21: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/21.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 21
Struttura dell’indice (2)
• mycollection{text,title}.globcounts: per ciascun termine, viene memorizzato il numero di occorrenze in -code.
• mycollection{text,title}.offset: per ciascun termine, viene memorizzato l’offset in -code
• mycollection-{text,title}.batch<i>: quando la memoria e’ piena di termini, viene effettuata una copia codificata in -code in un file batch e viene iniziata una nuova lista. Alla fine del processo, i file di batch vengono uniti.
![Page 22: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/22.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 22
Struttura dell’indice (3)
• mycollection{text,title}.stats: raccoglie alcune statistiche sull' indicizzazione
• mycollection{text,title}.index: l’indice invertito in -code.
![Page 23: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/23.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 23
Struttura dell’indice (4)
• mycollection{text,title}.properties: contiene alcuni dati relativi al processo di indicizzazione:
• Documents: numero di documenti nella collection; • Terms: numero di termini indicizzati; • Occurrences: numero di parole nell’intera collection; • Batches: numero di batch file generati; • Maxdocsize: massima dimensione di un documento (parole);• termprocessor: il term processor (se presente) usato durante la
costruzione: ad esempio DowncaseTermProcessor; • Occsperbatch: massimo numero di occorrenze in ciascun batch; • Permutation: nome del file di premutazione usato.
– More mycollection-text.properties– ls –lh mycollection
![Page 24: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/24.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 24
Il Web Server
• Query: it.unimi.dsi.mg4j.query.Query [--help] [(-c|--collection) <collection>] [(-t|--titleList) <titleList>] [-n|--no-sizes] [-h|--http] [(-i|--itemclass) <itemClass>] [(-m|--item-mime-type) <itemMimeType>][(-p|--port) <port>]basenameWeight1 basenameWeight2 ... basenameWeightN
• java it.unimi.dsi.mg4j.query.Query --help• java it.unimi.dsi.mg4j.query.Query -h -i
it.unimi.dsi.mg4j.query.FileSystemItem -c actors.collection mycollection-text mycollection-title
![Page 25: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/25.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 25
Interrogazione dell’indice
• Interprete a linea di comando• Web page : http://localhost:4242/Query
![Page 26: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/26.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 26
Interrogazioni semplici
• Ricerca delle occorrenze di una parola– EX: attorettore– EX: attrice
• AND: scrivendo piu’ termini separati da AND (o &) si ottengono i documenti che contengono tutte le parole specificate;– EX: claudia & pandolfi & pandolfi
• OR: restituisce i documenti che contengono almeno una delle parole separate da OR (o |);– EX: pandolfi | gerini | gerini
![Page 27: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/27.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 27
Interrogazioni semplici (2)
• NOT: restituisce i documenti che non contengono la parola preceduta da NOT (o !);– EX: claudia & !pandolfi & !pandolfi
• Parentesi: le parentesi sono usate per definire le priorita’ nella query
• EX: claudia & (pandolfi | gerini) & (pandolfi | gerini)
• FraseFrase: le parole messe fra “ “ appaiono consecutivamente nelle documenti ritornati– EX: “invia questa” | “ricerca avanzata”
![Page 28: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/28.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 28
Interrogazioni con asterisco (wildcard)
• Prossimita’:Prossimita’: si puo` limitare la distanza massima fra si puo` limitare la distanza massima fra un insieme di paroleun insieme di parole– EX: (claudia attrice)~3
• AsteristicoAsteristico: * serve per specificare una qualunque sequenza di caratteri– EX: att*
![Page 29: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/29.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 29
Interrogazioni complesse
• MG4J fornisce sofisticati meccanismi di tuning delle query.
• Gli scorer permettono di riordinare i documenti ottenuti in risposta ad una interrogazione in base a un dato criterio.
• Per sfruttare queste possibilità occorre usare l’interfaccia a linea di comando.
• $ --- Mostra le opzioni disponibili• $mode -- Seleziona la modalità di presentazione del
risultato
![Page 30: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/30.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 30
Interrogazioni complesse
• $score -- Seleziona uno scorer per i documenti
es. $score BM25Scorer VignaScorer
• $mplex on -- Determina l’indirizzamento della query a tutti gli indici disponibili
• $weigth – Cambia il peso degli indici
es. $weigth text:1 title:3
• $selector -- Seleziona max numero di intervalli e massima lunghezza di ogni intervallo.
es. $selector 3 40
![Page 31: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/31.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 31
Scorer: esempi
• Opzione di default: BM25Scorer + VignaScorer
• $score BM25Scorer VignaScorer
• ConstantScorer
• $score ConstantScorer
• Uno scorer che assegna uno score costante (0 di default) a
tutti i documenti
![Page 32: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/32.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 32
Scorer: esempi (2)
• CountScorer: uno scorer molto semplice che conta il
numero di occorrenze di ogni termine all'interno del
documento corrente moltiplicato per il peso del
relativo indice
• $score CountScorer
![Page 33: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/33.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 33
Scorer: esempi (3)
• TfIdfScorer: uno scorer che implementa la formula di
ranking TF/IDF. Il peso assegnato ad un documento
che, in una collezione di N documenti, appare in f
documenti, e`, per un documento di lunghezza l in cui
il termine appare c volte:
• log(N/f) c /l
• $score TfIdfScorer
![Page 34: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/34.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 34
Score: esempi (4)
• DocumentRankScorer: Assegna un punteggio fisso
ad ogni documento. Gli score sono letti da un file il
cui nome deve essere passato al costruttore.
• $score DocumentRankScorer
![Page 35: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/35.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 35
Indicizzazione dei campi virtuali
• Come primo passo occorre costruire un document resolver che sia in grado di tradurre le document spec prodotte per il campo anchor di ogni documento HTML in riferimenti a documenti della collezione.
• URLMPHVirtualDocumentResolver trasforma le URL in riferimenti a documenti.
• Il comando
java it.unimi.dsi.mg4j.tool.ScanMetadata -S actors.collection -u actors.urls
permette di costruire l’elenco delle URL dei documenti che appartengono alla collezione.
![Page 36: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/36.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 36
Indicizzazione dei campi virtuali
• java it.unimi.dsi.mg4j.tool.URLMPHVirtualDocumentResolver -o actors.urls actors-anchor.resolver
costruisce il resolver di cui abbiamo bisogno per indicizzare il campo anchor.
• Ora possiamo ricostruire l’indice chiedendo esplicitamente l’indicizzazione dei campi virtuali:
java it.unimi.dsi.mg4j.tool.IndexBuilder -a -v anchor:actors-anchor.resolver --downcase -S actors.collection mycollection
![Page 37: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/37.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 37
Interrogazioni sul campo anchor
• A questo punto possiamo riavviare il query engine e
sottomettere query che richiedono i documenti che
soddisfano determinate condizioni anche nel campo
anchor
• java it.unimi.dsi.mg4j.query.Query -h -i
FileSystemItem -c actors.collection mycollection-text
mycollection-title mycollection-anchor
![Page 38: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/38.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 38
Utilizzo dei gap virtuali
• Per evitare la restituzione di documenti che
contengono i termini della query in ancore differenti,
si puo` imporre una prossimita` dei termini tenendo
conto dello spazio virtuale (numero di parole vuote)
lasciato tra due frammenti consecutivi.
• es. (claudia AND attrice)~64
![Page 39: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/39.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 39
Specificare gap virtuali differenti
• Si possono ottenere falsi negativi se la lunghezza di
qualche ancora e` maggiore di quella scelta per lo spazio
virtuale. In fase di indicizzazione e` possibile specificare
una differente lunghezza per il gap virtuale.
• java it.unimi.dsi.mg4j.tool.IndexBuilder -a -g anchor:100 -v
anchor:mycollection-anchor.resolver –downcase -S
actors.collection mycollection
![Page 40: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/40.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 40
Realizzazione della mappa dei termini
• Il più semplice tipo di rappresentazione di un
dizionario è la lista dei termini: un file di testo
contentente un termine su ogni riga.
Esempio: file .terms
![Page 41: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/41.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 41
Rappresentazione del dizionario
• Una rappresentazione più efficiente può essere ottenuta
attraverso l’uso di una monotone minimal perfect hash
function, una struttura dati molto compatta che può essere
utilizzata per rispondere alla domanda: “Qual è l’indice del
termine XXX ?”
• Tale mappa può essere costruita a partire da una lista ordinata
di termini
• java it.unimi.dsi.sux4j.mph.MinimalPerfectHashFunction
titles.mph mycollection-title.terms
![Page 42: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/42.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 42
Rappresentazione del dizionario• La correttezza della risposta restituita da una MinimalPerfectHash è garantita solo per I
termini efffettivamente presenti nel dizionario. Se non si è sicuri che la struttura venga
interrogata utilizzando solo termini del dizionario, occorre utilizzare una funzione “firmata”,
che utlizza uno speciale valore di ritorno (-1) per segnalare il fatto che un termine non esiste
all’interno della mappa.
java it.unimi.dsi.util.ShiftAddXorSignedStringMap titles.mph titles.map
mycollection-title.terms
![Page 43: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/43.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 43
Esempio di utilizzo
• import it.unimi.dsi.fastutil.io.BinIO;
• import it.unimi.dsi.fastutil.objects.Object2LongFunction;;
• Object2LongFunction<? extends CharSequence> url2node =
• (Object2LongFunction<? extends CharSequence>)
BinIO.loadObject( "titles.mph" );
• long node = url2node.getLong(“audrey”);
![Page 44: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/44.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 44
Mappa dei termini
• Per rispondere ad una wildcard query occorre utilizzare una term map, una struttura dati che è in grado di rispondere efficientemente alla domanda “Qual è l’indice dei termini che iniziano con XXX”. Se i termini sono ordinati lessicograficamente la risposta è costituita da due interi, gli indici del primo e dell’ultimo termine che soddisfano la proprietà.
java it.unimi.dsi.mg4j.util.ImmutableExternalPrefixDictionary -b4Ki –o mycollection-title.terms mycollection-title.dict
![Page 45: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/45.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 45
Term Map: esempio di utilizzo
• La mappa costruita consente di effettuare il mapping tra termini e indici in
entrambe le direzioni.
• import it.unimi.dsi.fastutil.io.BinIO;
• import it.unimi.dsi.mg4j.util.ImmutableExternalPrefixDictionary;
• ImmutableExternalPrefixDictionary ext =
(ImmutableExternalPrefixDictionary)BinIO.loadObject("termini.dict");
![Page 46: MG4J – Managing GigaBytes for Java Indicizzazione ed interrogazione di una collezione di documenti Esercitazione Ilaria Bordino Yahoo! Research, Barcelona.](https://reader036.fdocuments.net/reader036/viewer/2022070312/5542eb57497959361e8c18c5/html5/thumbnails/46.jpg)
Ilaria BordinoMG4J -- Managing GigaBytes for Java Pagina 46
Esercizio
• Ripetere l'esercitazione utilizzando la collezione
HTMLDIS.