Gloria Bordogna CNR IDPA Via Pasubio 5, c/o POINT, Dalmine (BG) e-mail: gloria.bordogna@idpa.cnr.it



Documenti analoghi
Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Strutturazione logica dei dati: i file

Altri metodi di indicizzazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Introduzione all Information Retrieval

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Sistemi Operativi. 5 Gestione della memoria

Algoritmi e strutture dati. Codici di Huffman

B+Trees. Introduzione

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

12. Implementazione di un File System Struttura a livelli Allocazione contigua

Progettazione Fisica FILE

Database. Si ringrazia Marco Bertini per le slides

La memoria centrale (RAM)

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Esempi di algoritmi. Lezione III

ESERCIZI DI PROBLEM SOLVING E COMPOSIZIONE DEI DIAGRAMMI DI FLUSSO per le classi terza

4 3 4 = 4 x x x 10 0 aaa

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Programmazione dinamica

Organizzazione della memoria

Modulo 1: Motori di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca

Funzioni in C. Violetta Lonati

BARCODE. Gestione Codici a Barre. Release 4.90 Manuale Operativo

Tipi classici di memoria. Obiettivo. Principi di localita. Gerarchia di memoria. Fornire illimitata memoria veloce. Static RAM. Problemi: Dynamic RAM

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Sistemi Operativi. 12 LEZIONE REALIZZAZIONE DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Informazione analogica e digitale

Query Languages. R. Basili. a.a

Il File System. Il file system

Capitolo Silberschatz

Introduzione alla programmazione in C

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

Algoritmi di Ricerca. Esempi di programmi Java

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Guida all uso di Java Diagrammi ER

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Analisi sensitività. Strumenti per il supporto alle decisioni nel processo di Valutazione d azienda

Dispensa di database Access

Capitolo 13. Interrogare una base di dati

La memoria - generalità

Informatica Generale 02 - Rappresentazione numeri razionali

Librerie digitali. Video. Gestione di video. Caratteristiche dei video. Video. Metadati associati ai video. Metadati associati ai video

Capitolo 5. Cercare informazioni sul Web

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Sistemi Operativi Il Sistema Operativo Windows (parte 3)

PROGETTAZIONE FISICA

Approccio stratificato

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Gestione Filtri. InfoBusiness 2.8 Gestione Filtri Pag. 1/ 11

Testi di Esercizi e Quesiti 1

Esercitazione E6 Esercizi d esame

MANUALE PORTALE UTENTE IMPRENDITORE

I file di dati. Unità didattica D1 1

Corso di Archivistica

Sistema operativo: Gestione della memoria

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

10 - Programmare con gli Array

LINGUAGGI DI PROGRAMMAZIONE

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

2 - Modifica Annulla Selezione finestra. S.C.S. - survey CAD system FIGURA 2.1

Organizzazione degli archivi

Cosa è un foglio elettronico

Sistemi Operativi. Organizzazione logica ed implementazione di un File System

Informatica. Rappresentazione dei numeri Numerazione binaria

Calcolatori Elettronici A a.a. 2008/2009

2 - Modifica Annulla ANNULLA TOPOGRAFICO ANNULLA TOPOGRAFICO MULTIPLO FIGURA 2.1

I database relazionali (Access)

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

RECOGNITION ProductInfo

Indicizzazione terza parte e modello booleano

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

INTRODUZIONE A EXCEL ESERCITAZIONE I

Descrizione attività

Informatica grafica e Multimedialità. 4 Immagini grafiche

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

UTILIZZO DEL MODULO DATA ENTRY PER L IMPORTAZIONE DEI DOCUMENTI (CICLO PASSIVO)

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

METODI per effettuare previsioni con analisi di tipo WHAT-IF

2) Codici univocamente decifrabili e codici a prefisso.

Algoritmi e Strutture Dati

Esercizi per il corso di Algoritmi e Strutture Dati

9. Memoria Virtuale. 9. Memoria Virtuale. 9. Memoria Virtuale

STAMPA DI UNA PAGINA SEMPLICE

Il Software. Il software del PC. Il BIOS

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

MANUALE PARCELLA FACILE PLUS INDICE

Indici ad albero. Albero Binario di Ricerca

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Costruzione del layout in gino cms

Transcript:

Strutture dati per sistemi di INFORMATION RETRIEVAL Gloria Bordogna CNR IDPA Via Pasubio 5, c/o POINT, Dalmine (BG) e-mail: gloria.bordogna@idpa.cnr.it

Creazione di una struttura dati struttura dati per organizzare gli indici Scopo (efficienza): velocizzare la ricerca di indici Compattare la matrice sparsa di correlazione termini documenti l indice viene costruito off-line prima di permette la ricerca ottimizzare la ricerca per query costituite da un singolo termine

Creazione di un Indice a file inverso Calcolo significatività indici Regole di parsing Costruzione dell indice Parser dizionario Inverted index Posting file Stop list tokenizer documents Stemmer Regole di stemming

Struttura dati a file inverso Indipendente dal modello di retrieval che il sistema di IR adotta. Informazioni associate ad ogni termine indice (nel dizionario) : puntatore alla lista di documenti che lo contengono (nel posting file). Per ogni documento puntato: la frequenza del termine nel documento (tf) la posizione nel documento di ogni occorrenza del termine (opzionale, solo per abilitare query con contesto). le sue occorrenze nella collezione df per il calcolo della IDF e per ottimizzare la valutazione di query Booleane)

Struttura dati a file inverso Il dizionario contiene per ogni indice: termine, frequenza globale, puntatore alla lista di posting nel posting file La lista di posting contiene per ogni elemento 1. l identificatore univoco del documento (DOCID) che in File Text è associato a un nome file o locazione URL. 2. Frequenza del termine nel documento (tf). 3. Posizione nel documento di ogni occorrenza del termine espressa come numero di parola dall inizio del documento, num. Byte dall inizio del documento, num. di sezione, paragrafo, frase, numero di parola nella frase File Dizionario File di Posting D1: nome_file1.doc, ms_word D2: nome_file2.txt, wordpad D3: nome_file3, acrobat_reader File text contenente l elenco ordinato dei DOCID

Occupazione in memoria della Struttura dati a File Inverso Lo spazio richiesto per memorizzare il dizionario (indice) è piuttosto ridotto. Il vocabolario cresce come O(N β ) (legge di Heap) dove N è lo spazio occupato dal testo dei documenti e β è una costante tra 0.4 e 0.6. Es: N = 1Gb dizionario circa 5 Mb. D altra parte le occorrenze richiedono molto più spazio. Poiché ogni parola che compare nel testo di un documento è riferita una volta nella struttura dati, lo spazio cresce come O(N).

Ottimizzazione del posting file Si applicano tecniche di compressione a: nomi dei termini nel dizionario identificatori dei documenti e occorrenze dei termini Tecnica di compressione dei DOCID con indirizzo relativo term (d 1,tf 1 ), (d 2,tf 2 ),... (d n,tf n ) sfrutta l ordinamento crescente dei DOCID nel posting file ogni DOCID i è sostituito dall intervallo DOCID i -DOCID i-1 I numeri sono codificati usando meno bit L indice viene ridotto del 10-15% Es: Term1 (200,10), (350,3), (550,5), (600,1), uso 2 byte per DOCID assoluto (200,10), (150,3), (200,5), (50,1) uso 1 byte per DOCID relativo Lo stesso criterio si può usare per le occorrenze del termine in ogni documento nel posting file

Ottimizzazione del posting file INDIRIZZAMENTO A BLOCCHI: Le occorrenze di un termine nel posting file puntano a blocchi di documenti o ogni documento viene diviso in blocchi. dove compare la parola 17 Vantaggi: il numero di bit del puntatore è più piccolo rispetto a quello che memorizza le occorrenze nella posizione precisa nel testo. Tutte le occorrenze di una parola dentro un singolo blocco hanno lo stesso riferimento. Svantaggi: Le ricerche per contesto richiedono più operazioni.

RICERCA in un file Inverso : Accesso al file dizionario e ricerca dei termini nella query Reperimento della lista di posting associata a ogni termine trovato nel dizionario Filtraggio dei risultati: se la query contiene più termini connessi da operatori le liste parziali dei risultati vanno fuse (operazione di merge) in una lista globale. Se gli operatori sono di prossimità o adiacenza e il file inverso adotta un indirizzamento a blocchi è necessario scandire i blocchi per ottenere l offset delle occorrenze nel blocco dei termini.

File di Posting con Skip Pointers : Per ottimizzare le ricerche si introducono nelle liste di posting dei termini dei puntatori di skip (che saltano un certo numero di occorrenze) DIZIONARIO POSTING FILE 11 71 90 t1 d1, d2, d9, d11, d25, d26, d71, d80, d90 111 226 290 t2 d4, d6, d79, d111, d125, d226, d271, d290

File Inverso: ottimizzazione Inversione completa (full inversion) memorizzazione della posizione precisa delle occorrenze delle parole ( O(n) overhead circa 40%) Indirizzamento a blocchi nei documenti ogni termine nel dizionario punta a blocchi nei documenti (la dim. del puntatore varia da 1 a 3 byte a seconda della dim. dei documenti della collezione) (overhead del 5%) (limite 256 blocchi in documenti di 200Mb) Indirizzamento a blocchi di documenti si punta a 256 o 64K blocchi di documenti (ciò richiede 1 o 2 byte per puntatore) indipendentemente dalle dimensioni della collezione 17

Indice Inverso: aggiornamento AGGIUNTA DI NUOVI DOCUMENTI: Aggiornamento del dizionario e del posting file CANCELLAZIONE: gestione mediante FLAG associato ad ogni documento nel file TEXT. File Dizionario 17 File di Posting DOCID File text contenente l elenco ordinato dei DOCID D1: nome_file1.doc, 1 D2: nome_file2.txt, 0 D3: nome_file3, 1 FLAG

Indice Lineare Termine Puntatore alla lista inversa di postings ant bee cat dog elk fox gnu hog Algoritmo ricorsivo di ricerca binaria: trova l'elemento a metà fra l'inizio e la Lista fine del dizionario; se è uguale a quello da Inverted cercare, restituisci true; se è maggiore, cerca solo nella prima metà; altrimenti, cerca solo nella seconda metà; 16 Il dizionario può essere tenuto in memoria (a pezzi) durante il retrieval

Indice Lineare Vantaggi Può essere acceduto velocemente, es., con una ricerca binaria, O(log n) E adatto per la valuazione sequenziale, es., comp* Occupazione economica dello spazio di memoria 17 Svantaggi Difficile l aggiornamento incrementale: Gli indici devono essere ricostruiti se si inseriscono nuovi termini

Indice a B-tree Catalog, hardware network Review, synonym Apparatus, biomedicine morpheme Number, paper Enciclopedia, grammar publication B-tree di ordine d: Ogni nodo memorizza più termini La radice contiene tra 1 e d termini. Ogni nodo intermedio contiene tra d/2 e d termini Se k i èl iesimo termine in un nodo intermedio tutti i termini nell (i-1) esimo figlio sono lessicograficamente più piccoli di k i tutti i termini nell (i+1) esimo figlio sono lessicograficamente più 18 grandi di k i Tutte le foglie hanno la stessa profondità (bilanciamento)

Indice a B-tree Vantaggi Può essere acceduto velocemente (visita ricorsiva i nodi) numero massimo di accessi a un B tree di ordine d: O(log d n) dove n è il numero di livelli (altezza del B tree) e d il numero di elementi per nodo Conveniente per l aggiornamento Semplice aggiunta di nuovi termini Utilizzo economico dello spazio di memoria Svantaggi Inefficiente per la ricerca sequenziale, comp* Tende a diventare sbilanciato dopo diversi aggiornamenti (n cresce) Se l indice è tenuto su disco ogni nodo può richiedere un accesso al disco separato.

INDICE a (Suffix- Tree/Arrays) Generalizza i file inverted Utilità database genetici (i testi sono stringhe senza parole) ricerche complesse ad esempio per frasi e ricerca sequenziale (prefissi) O(m) indipendente dalla lunghezza N dell indice Nozioni di Base Tratta il testo di un documento come un unica stringa ogni posizione nel testo fino alla fine del testo è un suffisso ogni suffisso è univocamente identificato dalla posizione iniziale ove appare nel documento dal testo vengono selezionati dei punti indice che possono essere reperiti I puntatori ai suffissi sono memorizzati nelle foglie dell albero (suffix-tree) Le parti comuni ai suffissi sono memorizzate solo una volta

INDICE a Suffix-Tree This is a text. A text has many words. Words are made from letters Punti indice suffissi 11 19 28 33 40 50 60 11 19 28 33 40 50 60 text. A text has many words. Words are made from letters text has many words. Words are made from letters many words. Words are made from letters words. Words are made from letters Words are made from letters made from letters letters Suffix-tree Ordine lessicografico : 1 visita in ordine dall alto al basso O(m) m lunghezza chiave di ricerca 60 letters ma text words de from.. 3 5 6 ny words Ha tanti nodi figlio quanti sono i suffissi Ogni nodo ha almeno 2 figli Ogni arco è una sottostringa del suffisso 50 28 has many.. 19 11. A text has. Words are made.. 40 are made from 33

Suffix-Array This is a text. A text has many words. Words are made from letters. Punti indice 11 19 28 33 40 50 60 text. A text has many words. Words are made from letters suffissi 11 19 28 33 40 50 60 Suffix-array text has many words. Words are made from letters many words. Words are made from letters words. Words are made from letters Words are made from letters made from letters letters 60 50 28 19 11 40 33 Let tex wor Ordine lessicografico delle posizioni dei suffissi ricerca binaria Ottimizzazione numero accessi sopra indice: campionamento del suffix-array con passo 4 e suffix=3

INDICE a (Suffix- Tree/Array) Vantaggi Adatti a ricerche complesse ad esempio per frasi e ricerca sequenziale (prefissi) comp* Svantaggi processo di costruzione costoso alto overhead (dal 120% al 240% della dimensione della collezione)

INDICE a Signature (maschera di bit) Diversamente da un file inverso la struttura dati a signature usa hash tables. si suddivide il documento (testo o immagine) in blocchi di lunghezza fissa (es. misurata in numero di indici contenuti o num di pixels) si assegna ogni blocco a una signature (di dimensione fissa), che viene usata per ricercare il documento effettuando un matching con la signature che viene associata alla query. La signature associata al blocco si ottiene attraverso OR delle stringhe di bit associate a ciascun termine nel blocco da una funzione di hashing

INDICE a Signature This is a text. A text has many words. Words are made from letters. 000101 110101 100100 101101 OR b=2 indici per blocco signature h(text) = 000101 h(many) = 110000 h(words) = 100100 h(made) = 001100 h(letters) = 100001 h = funzione di hash m=2 bit settati a 1 in modo casuale nella maschera di lunghezza B=6 (lunghezza della signature)

INDICE a Signature Consideriamo il testo d= text retrieval and information retrieval : H(information) = 010001 H(text) = 010010 H(data) = 110000 H(retrieval) = 100010 B=6, b=2, m=2 La signature dei due blocchi del documento d (dopo aver rimosso le stopwords) è: Rappresentazione a signature del documento d B1(d) = 110010 ottenuta H(text) = 010010 OR H(retrieval) = 100010 B2(d) = 110011 ottenuta H(information) = 010001 OR H(retrieval) = 100010

INDICE a Signature - Ricerca B1(d) = 110010 ottenuta H(text) = 010010 OR H(retrieval) = 100010 B2(d) = 110011 ottenuta H(text) = 010001 OR H(retrieval) = 100010 Per cercare un dato termine si confronta la stringa di bit associata dalla funzione di hash al termine di ricerca verificando se è inclusa nelle signatures del documento. Es: ricercando text in d H(text) = 010010 che è contenuta in B1(d) e B2(d) text text reperisce d Consideriamo ora di ricercare data H(data)=110000 è contenuta nelle stringhe B1(d) e B2(d) Data reperisce d ma in questo caso abbiamo un errore Le strutture dati a signature possono dare origine a risultati falsi

Probabilità di avere dei False Drop Un False Drop è la probabilità che una signature di un blocco soddisfi una query semplice anche se il blocco non contiene il termine cercato Tale probabilità aumenta se ci sono troppi bit a 1 nella signature dei blocchi Questa è la ragione della scelta di indicizzare a blocchi i documenti I false drop si minimizzano scegliendo B grande (signature lunga), b piccolo (blocchi piccoli) e m piccolo (pochi bit = 1) costo grande overhead 2% prob. False drop 10% overhead 0.046% prob. False drop 20% overhead

INDICE a Signature Vantaggi Bassa occupazione di memoria (dal 10% al 20% della dimensione della collezione) adatta per testi non troppo grossi Adatti per indicizzare dati multimediali (associando a sottoparti di immagine una maschera di bit) Svantaggi ricerca sequenziale (per prefissi) sulle signature eventualità di False drop l indice a file inverso è migliore nella maggior parte delle applicazioni rispetto all indice a signature

p strutturati Estensione del file posting inclusione dell ID delle sezioni o campi (Zone, o field) information: doc1.{sez1, sez2, sez3, } retrieval: doc1.{sez1, sez3, } Permette di valutare Vincoli strutturali Esistenza della sezione S Vincolidiinclusione A in sezione S A nella stessa sezione di B I termini A e B devono co-occorrere in una sezione comune

Indice per documenti strutturati Estensione dei termini nel dizionario Estensione dizionario degli indici con campi DIZIONARIO Fusion.abstract Fusion.title d1, d2 POSTING d1, d3, d4

Conclusioni -Velocità di accesso e di Retrieval Signature file << Suffix array << file inverso (a destra il più veloce) - Capacità di Memoria File inverso >> suffix array>> Signature file (a destra il più compatto)

Ricerca sequenziale di stringhe Se non c è un indice o se c è un indice a blocchi è necessario effettuare una ricerca sequenziale nel testo del documento o nel blocco per trovare una stringa (pattern) Problema: Dato un pattern P di lunghezza n e un testo T di lunghezza m (m >> n) trova tutte le posizioni di P in T Ci sono diversi algoritmi Alcuni per la ricerca esatta di P in T Altri per la ricerca di una stringa in T simile a P (ciò permette di tener conto di possibili errori di stampa nella formulazione di query

Ricerca Knuth Morris-Pratt Si utilizzano le informazioni sul confronto nella finestra precedente per riposizionare la finestra ottimizzando la ricerca O(m) Esempio TEXTURE OFA TEXT IS NOT TEXTUAL E la query TEXT La finestra è di 5 caratteri TEXTURE OFA TEXT IS NOT TEXTUAL 1 1 1 1 0 A questo punto non c è un matching e quindi la finestra viene riposizionata TEXTURE OFA TEXT IS NOT TEXTUAL TEXTURE OFA TEXT IS NOT TEXTUAL 00111 TEXTURE OFA TEXT IS NOT TEXTUAL (trovato!) 11111

Tolleranza di Errori fuzzy pattern matching di stringhe Obbiettivo: rimediare a errori possibili di stampa nel testo dei documenti o nelle query; Metodo: Pattern matching di stringhe isolate: Per ogni parola nella query si esegue un confronto parziale tra stringhe e termini indice nel dizionario; tale confronto è basato sulla misura della similarità tra stringhe. Pattern matching contestuale di stringhe; come sopra poi si selezionano le coppie di stringhe con più alta co-occorrenza nei documenti della collezione Flight flew Milano London

Misure di Similarità tra stringhe Determinare la similarità tra due oggetti Longest Common Subsequence (LCS) (similarità) Caratteristiche: t i Τ, sim(t i, t i )= 1 t i, t j Τ, sim(t i, t j )= 0 se t i e t j sono completamente diverse t i, t j, t k Τ, sim(t i, t j )<sim(t i, t k ) se t i è più simile a t k che a t j Fornisce la lunghezza della sequenza più lunga di caratteri comuni alle due stringhe. Una sequenza di una stringa si ottiene cancellando zero o più caratteri. Esempio: misspell <---> mispell LCS= 7 misspelled <----> misinterpretted LCS= 7

Distanza tra stringhe Alternativamente si può usare una distanza per misurare la differenza tra stringhe. Distanza di Hamming Applicabile a stringhe di uguale lunghezza Calcola il numero minimo di caratteri che devono venire cambiati per trasformare una stringa nell altra: Siano v = (v 1,... v n ) e w = (w 1,... w n ) due parole (rappresentate come vettori di V). h(v,w) = { j: v j w j } ESEMPIO v=distribuire w=contribuito { D, I, S, R, E} = h(w,v)=h(v,w)=5 Si può normalizzare rispetto alla lunghezza della stringa N h(v,w)/ N 5/11 similarità(v,w) = 1- h(v,w)/ N = 6/11

Distanza Edit o di Levenshtein Generalizzazione della distanza di Hamming Stima il costo in termini di numero minimo di trasformazioni necessarie per convertire una stringa nell altra. Le stringhe possono avere lunghezze diverse Transformazioni (costo differente): Substitute: Sostituisce il carattere corrente nella stringa di input con quello corrente nella stringa target Delete : cancella il carattere corrente nella stringa di input Insert : Inserisce il carattere corrente della stringa target nella stringa di input ESEMPIO w = GATTACA y = TATATA GATTACA ATTACA TTACA TATACA TATATA (1 ins, 2 del, 1 sub) GATTACA TATTACA TATACA TATATA (0 ins, 1 del, 2 sub) Edit distance = 3

1 capron 2 crapron 3 craron 4 craon 5 crayon input Distanza Edit target Edit distance = 5

Ricerca nell INDICE di una stringa con tolleranza di errori Ottimizzare la Valutazione esaustiva e costosa della distanza di Edit con tutti I termni nel dizionario Approccio euristico 1. Restringe il calcolo a stringhe che iniziano con lo stesso carattere 2. Utilizza l indice permuterm considerando tutte le rotazioni r della stringa query q Es: q=maro rotazioni r=maro$ aro$m ro$ma o$mar Trovo nell INDICE permuterm le parole che iniziano con ogni rotazione r (omettendo un suffisso esempio di lunghezza es. L=1 ) ->cerco nell Indice permuterm mar* aro* ro$* o$m* Mar* -> mare, marchio Aro* - > aroma, ro$* -> moro, foro o$m* -> moro

Ricerca di una stringa nel dizionario 2 Approccio euristico con min distanza Edit Utilizzo di un indice K-grammi e seleziono i termini t nel dizionario che hanno un minimo numero # di kgrammi in comune con q Coeff. Di Jaccard:= t q / t q Regola: Coeff Jaccard> 0.5 ca caserma canestro mecca casse->casseruola as asso masso casse tasse casseruola se casse tasse caserma sentiero casseruola Es: q=case seleziono casse # di 2grams in q=case=3 # di 2grams di casseruola=9 # di 2grams di casseruola case=3 Coeff. Di Jaccard:= t q / t q =3/(3+9-3)=3/9=1/3 2grams di q=case=3 2grams di q=casse=4 2grams di casse case=3 Coeff. Di Jaccard:= t q / t q =3/(3+4-3)=3/4

Ricerca di una stringa con errori di battitura fonetici L utente ha digitato una parola che ha un suono simile a quello di un altra (tipico errore nello spelling dei nomi propri) Si generara un Soundex tabella FONETICA Phonetic hash Parole con suono simile hanno lo stesso codice in Soundex Algoritmo: Trasforma ogni indice in una stringa di 4 caratteri (Ci sono diverse conversioni): 1) mantieni la prima consonante 2) trasforma le vocali e H W Y 0 3) trasforma consonanti con stesso suono nello stesso digit: Es B F P V 1 C G J K Q S X Z 2 D T 3 M N 5 R 6 Elimina digit consecutivi, elimina 0, e mette 0 in testa, e conserva le prime 4 posizioni Trasforma il termine nella query q in sound Cerca q in Soundex

Ricerca di Pattern semplici Prefissi: Pattern che identificano l inizio di parole. anti --> antiquity, antibody, ecc. Suffissi: Pattern che identificano la fine di parole: ix --> fix, matrix, ecc. Sottostringhe: Pattern che identificano sottosequenze arbitrarie di caratteri. rapt --> enrapture, velociraptor ecc. Intervalli: coppie di stringhe che identificano una qualunque parola lessicograficamente intermedia tin to tix --> tip, tire, title, ecc.

Valutazione di query con wildcard * Costose: necessitano di strutture dati apposite INDICE PERMUTERM: è un sopraindice che contiene ordinate lessicograficamente tutte le rotazioni dei termini indice nel dizionario Indice permuterm Dizionario asa$c a$cas casa$ sa$ca Casa a$cos cosa$ osa$c sa$co Cosa Si inserisce il carattere $ di fine stringa Data la query q= c*sa q= c*sa$ la ruoto fino a portare * alla fine q=sa$c* e cerco nell indice permuterm INDICE Kgrammi: ^ =inizio di un termine Dizionario 3grams Sa$ ^ca q= c*sa ^c and sa$ Dizionario casa, cosa, causa, pausa, casa,castello, causa,