UNIVERSITÀ DEGLI STUDI DI MILANO - BICOCCA Dipartimento di Informatica Sistemistica e Comunicazione Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Analisi di Metriche e Algoritmi per la Qualità dei Dati. Progettazione e Realizzazione di un Framework per l’Assessment della Qualità. Docenti: Prof. Carlo BATINI Ing. Andrea MAURINO Dott. Daniele BARONE Corso di Sistemi Informativi Esercitazione di Laboratorio Anno Accademico 2006-2007 Indice 1 Realizzazione di un Framework per la valutazione della qualità dei dati 2 1.1 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Strumenti da Utilizzare . . . . . . . . . . . . . . . . . . . . . 2 1.3 Funzionalità offerte e Struttura del Framework . . . . . . . . 3 1.3.1 Funzionalità . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3.2 Struttura . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Specifiche per le Metriche da Implementare nel Framework . 4 1.4.1 Completezza . . . . . . . . . . . . . . . . . . . . . . . 4 1.4.2 Accuratezza Sintattica . . . . . . . . . . . . . . . . . . 7 1.5 Localizzazione e Correzione di Errori . . . . . . . . . . . . . . 14 1.5.1 Il Framework: Attività di Localizzazione e Correzione 14 A Appendice: Close Word Assumption 18 B Accuratezza 20 C Funzioni di Similarità C.1 Principali Funzioni di Similarità Bibliografia 21 . . . . . . . . . . . . . . . . 21 24 1 Capitolo 1 Realizzazione di un Framework per la valutazione della qualità dei dati 1.1 Obiettivi Lo scopo dell’esercizio è la realizzazione di un framework che permetta l’assessment della qualità dei dati di uno specifico database. In letteratura [1], il numero di dimensioni di qualità presenti è molto elevato, il framework che si vuole sviluppare deve implementare le seguendi dimensioni di qualità: la completeness e la syntactic accuracy. 1.2 Strumenti da Utilizzare Il framework deve esser realizzato utilizzando tecnologie e strumenti di sviluppo open source; in particolare, il linguaggio di programmazione Java [23] con l’ausilio di un’ambiente di sviluppo integrato (IDE) quale Eclipse [20]; e come Database management system (DBMS) il DMBS relazionale MySQL [19]. Con il linguaggio Java sarà possibile utilizzare librerie esterne open source che svolgono un ruolo importante, elenchiamole: • Java Database Connectivity (JDBC) [24]: le API per la connessione indipendente ai database tra un programma in linguaggio Java e una vasta gamma di database, tra cui MySQL. Forniscono API per l’accesso tramite il linguaggio SQL. Nel framework è utilizzata per la connessione al database MySQL e per tutti gli accessi e gestione dei dati ricavati dal database. • SimMetrics [25]: è una libreria Java open source per funzioni di similarità o distanza, ad esempio Levenshtein distance; tutte le funzioni 2 CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL forniscono un risultato compreso tra 0 e 1. Nel framework è utilizzata in alcune metriche per fornire le funzioni di similarità utili all’assessment della dimensione. • JFreeChart [26]: è una libreria Java open source che fornisce classi per lo sviluppo di diagrammi professionali; supporta molti tipi di diagrammi e di output tra cui componenti Swing, file immagine (PNG e JPEG), file di grafica vettoriale (EPS, PDF e SVG). Nel framework è utilizzata per la creazione di grafici a torta, per la visualizzazione grafica dei risultati. OPZIONALE: Questa libreria si utilizza solo nel caso si volesse approfondire l’esercizio e si volesse visualizzare i risultati attraverso opportuni grafici (es. istogrammi, torte, etc.). 1.3 Funzionalità offerte e Struttura del Framework In questo paragrafo forniamo una breve descrizione delle funzioni che il framework deve offrire e della sua struttura (ovvero le principali classi Java che devono esser definite). 1.3.1 Funzionalità Connessione: La prima funzione che deve essere offerta è la connessione/disconnesione al/dal database sul quale deve essere effettuato l’assessment della qualità. E’ possibile scegliere un qualsiasi database relazionale ma è consigliato l’utilizzo del DBMS MySQL. OPZIONALE: Se si vogliono memorizzare i risultati dell’attività di assessment sara necessario creare una conessione ad uno specifico database che contenga questi risultati. Informazioni Generali Database: Questa funzione permette di visualizzare informazioni generali sul database. Le informazioni relative al database sono ad esempio (i) il numero e il nome delle tabelle che contiene, e (ii) per ogni tabella il numero, il nome e il tipo degli attributi che essa contiene. Valutazione e Visualizzazione dei Risultati: Sono presenti le funzioni per la valutazione delle dimensioni di qualità a diversi livelli di granularità (singoli valori, tuple, attributi, tabelle e intero database) e loro visualizzazione. La visualizzazione può esser effettuata attraverso interfaccia testuale cosi come la scelta delle funzionalità. Le specifiiche per la valutazione delle dimensioni della qualità sono trattate nei paragrafi successivi. CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL 1.3.2 Struttura Il framework è organizzato in due livelli, un livello di front-end che rappresenta ciò che vede l’utente, ovvero l’interfaccia grafica testuale con la scelta delle funzionalità. Un livello di back-end che costituisce il framework vero e proprio, costituita dagli algoritmi e dalla connesione al database. Nel seguito viena fornita una breve descrizione delle principali classi Java che devono comporre il framework: • MainWindow.java: è una classe fondamentale e realizza l’interfaccia principale del framework. • Completeness.java: classe per l’implementazione delle metriche della dimensione completezza. • FrequencySynAcc.java: classe per l’implementazione della metrica della dimensione accuratezza sintattica dell’attributo, basata sulla frequenza dei valori. • SyntacticAccuracy.java: classe per l’implementazione della metrica della dimensione accuratezza sintattica dell’attributo, basata sulla lookup table. • RecordLinkage.java: classe per l’implementazione della metrica dell’accuratezza sintattica di tuple e relazione. 1.4 Specifiche per le Metriche da Implementare nel Framework In questo paragrafo vengono illustrate le dimensioni che devono esser considerate nel framework; per ognuna di esse vengono analizzate le relative metriche da implementare. 1.4.1 Completezza La dimensione completezza è calcolata nei seguenti livelli di granularità: • Relazione • Attributo • Tupla La metrica è basata sull’assunzione del modello a valori nulli e rispetta la closed world assumption CWA, spiegata in dettaglio nell’ Appendice A. La valutazione della completezza avviene utilizzando una delle tre forme CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL funzionali [4] (Simple Ratio, Min or Max Operation, Weighted Average); si propone l’utilizzo della Simple Ratio illustrata di seguito. L’algoritmo utilizzato nel framework deve basarsi sulla combinazione del modello a valori nulli, dell’assunzione CWA e della forma simple ratio. Simple Ratio La simple ratio, ovvero il rapporto semplice misura il rapporto tra i risultati desiderati e il numero totale di risultati (prima forma); tuttavia una forma migliore è il numero di risultati non desiderati diviso il numero totale, sottratto a uno (seconda forma). Il simple ratio aderisce alla convenzione che 1 rappresenta il risultato migliore e 0 quello peggiore. Le due forme di simple ratio, risultati non desiderati e risulati desiderati, danno le stesse informazioni ma nella pratica si preferisce un rapporto che mostra i risultati positivi, quindi la seconda forma, poichè questa forma è utile per confronti longitudinali che mostrano tendenze di miglioramento. Per quanto riguarda la completezza, questa dimensione può essere vista da diverse prospettive che implicano metriche diverse. Ad un livello di massima astrazione, si può definire il concetto di completezza dello schema che esprime il grado con cui entità e attributi risultano presenti nello schema. Al livello dei dati si può definire la completezza della colonna come funzione dei valori mancanti in una colonna della tabella. Un terzo tipo di metrica è chiamata completezza della popolazione. Se una colonna deve contenere almeno un’occorrenza di tutti i 50 possibili stati (valori), ma, per esempio, ne contiene solo 43 stati, abbiamo che la popolazione è incompleta. Ciascuna di queste tre metriche può essere misurata tramite il rapporto tra il numero di oggetti incompleti e il numero totale e successivamente sottraendolo a uno. Completezza Attributo Dopo aver selezionato l’attributo della relazione sul quale effettuare la misurazione, l’algoritmo inizia la ricerca dei valori nulli: inizializza a zero un contatore, per ogni tupla della relazione controlla il corrispondente valore dell’attributo, se risulta nullo, incrementa il contatore. Al termine della ricerca il contatore conterrà il numero di valori nulli relativi all’attributo. Successivamente viene applicato il simple ratio, riportandoci alla terminologia, i valori nulli rappresentano i risultati non desiderati, il numero di tuple della relazione il totale dei risultati; viene effettuato il rapporto tra i valori nulli e il numero di tuple e dopo sottratto a uno. Il risultato è un valore compreso tra 0 e 1 che viene espresso in percentuale moltiplicandolo per 100. Questo tipo di completezza è chiamata anche completezza verticale. In formula: Nvn CA = 1 − Nt CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL dove CA è la completezza dell’attributo, Nvn è il numero di valori nulli e Nt è il numero di tuple. Completezza Relazione Effettuata la scelta della relazione, l’algoritmo anche in questo caso ricerca i valori nulli, però riferendosi all’intera relazione, infatti per ogni attributo viene conteggiato il numero di valori nulli e poi effettuata una somma totale che rappresenta il numero di valori nulli dell’intera relazione. A questo punto viene utilizzata la prima forma del simple ratio, il rapporto è tra i risultati desiderati, numero valori non nulli (ricavato dalla differenza tra il totale dei valori e il numero di nulli), e il totale dei risultati ovvero il numero massimo di valori che una relazione potenzialmente può contenere che corrisponde alla grandezza della relazione data dal prodotto tra il numero di attributi per il numero di tuple. Questo tipo di completezza è chiamata anche completezza orizzontale. In formula: Nvnn CR = N dove CR è la completezza della relazione, Nvnn è il numero di valori non nulli e N è il numero massimo di valori possibili per la relazione. Completezza Tupla L’algoritmo, scelta la relazione, restituisce per ogni tupla il valore di completezza con una singola misurazione. Vediamo come lavora in dettaglio. Prendiamo in considerazione il caso di una singola tupla, visto che il calcolo si ripete in modo uguale sulle altre; la completezza è misurata tramite la seconda forma del simple ratio. Prima di tutto vengono analizzati i valori di tutti i campi della tupla e calcolato il numero di valori nulli, dopo viene effettuato il rapporto tra questo numero e il totale di attributi della relazione, il rapporto viene poi sottratto a uno. Facciamo alcune considerazioni. La misurazione effettuata dall’algoritmo può essere vista come una misura dell’informazione contenuta attualmente, rispetto alla massima informazione che una tupla potenzialmente può contenere, questo implica che tutti i valori della tupla contribuiscono allo stesso modo nel determinare il valore di completezza ovvero tutti gli attributi hanno lo stesso peso, questo è il nostro caso ma è possibile che gli attributi abbiamo pesi differenti e contribuiscano in modo diverso al risultato finale, questo perchè un valore nullo in un attributo è più importante che in un altro. OPZIONALE: Modificare l’algoritmo in modo che permetta la valutazione pesata. In formula: Nvn CT = 1 − Na CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL dove CT è la completezza della tupla, Nvn è il numero di valori nulli e Na è il numero di attributi. 1.4.2 Accuratezza Sintattica La dimensione accuratezza, come è possibile notare dalla letterarura presente, si divide in accuratezza semantica e accuratezza sintattica. L’accuratezza semantica spesso non è direttamente valutabile in quanto necessità di un confronto diretto con il mondo reale. L’accuratezza sintattica al contrario è più facilmente valutabile, anche se la sua valutazione non è proprio diretta, nel senso che, riferendoci al modello relazione, il risultato non è ottenibile analizzando i soli valori della relazione ma necessità di informazioni aggiuntive che assumono un ruolo importante nella valutazione, come vedremo in seguito nel dettaglio degli algoritmi. Si è cercato di trovare algoritmi in grado di svincolare la valutazione da queste informazioni aggiuntive ma sono state trovate poche soluzioni alternative, la consultazione di queste informazioni durante il calcolo per alcune metriche è indispensabile. Definiamo meglio il concetto, dalla definizione di accuratezza sintattica (si veda Appendice B)si capisce come si rende necessaria la presenza di un dominio di definizione D in modo da poter calcolare la vicinanza tra un valore v e gli elementi del corrispondente dominio D. Dal punto di vista implementativo, il dominio può essere visto come una sorgente dati di riferimento che viene consultata durante la valutazione, chiameremo questo dominio, LookUp Table, in modo da mettere in evidenza la sua implementazione tramite tabelle relazionali e la sua funzione di consultazione (dall’inglese lookup, consultare). Funzioni di Similarità E’ noto che le metriche per l’accuratezza sintattica si basano sull’utilizzo di funzioni di similarità che valutano la distanza tra un valore v e gli elementi del dominio. Esistono molte funzioni [13], ad esempio distanza di edit, distanza pesata, soundex, distanza con peso basato sulla frequenza e molte altre, approfondiremo le funzioni esistenti nell’Appendice C. In questo paragrafo ci si concentrerà su due in particolare che possono essere utilizzate negli algoritmi: la Jaro e la Soundex. • Jaro: Introduce una funzione di confronto tra stringhe che tiene conto di inserimenti, cancellazioni e trasposizioni. L’algoritmo di Jaro cerca il numero di caratteri comuni e il numero di caratteri trasposti nelle due stringhe. Un carattere comune è un carattere che appare in entrambe le stringhe con una distanza pari alla metà della lunghezza della stringa più corta. Un carattere trasposto è un carattere comune che appare in posizioni differenti. Come esempio consideriamo le stringhe Smith CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL e Simth, ci sono cinque caratteri comuni, due dei quali sono trasposti. La scala di confronto tra le stringhe per Jaro è data da: f (s1 , s2 ) = Nc lengthS1 + Nc lengthS2 Nt + 0.5 N c 3 dove s1 e s2 sono stringhe di lunghezza lengthS1 e lengthS2 rispettivamente, Nc è il numero di caratteri comuni tra le due stringhe (dove la distanza per caratteri comuni è la metà della lunghezza minima di s1 e s2 e Nt è il numero di trasposizioni). • Soundex: Lo scopo della funzione soundex è quello di raggruppare nomi che hanno suoni simili. Produce un codice, detto codice soundex. Per esempio il codice soundex di Hilbert e Heilbpr è simile. Un codice soundex contiene di regola quattro caratteri. La prima lettera del nome diventa il primo carattere del codice, i restanti tre caratteri sono dati dall’ordine sequenziale del nome, consultando una tabella predefinita. Per esempio il codice soundex di Hilbert e Heilbpr è H416. Una volta che il limite di quattro caratteri è raggiunto, le restanti lettere vengono ignorate. La Dimensione Accuratezza Sintattica è calcolata nei seguenti livelli di granularità: • Attributo • Tupla • Relazione Accuratezza Sintattica Attributo Per l’accuratezza sintattica dell’attributo vengono proposte due metriche, la prima si basa sul concetto di lookup table e la seconda sul concetto di frequenza dei valori. Per quanto riguarda la prima metrica, si assume che esista la lookup table relativa all’attributo che si vuole dare in input all’algoritmo. La lookup table è definita una relazione composta da due campi: un campo chiave contenente i valori che rappresentano gli elementi del dominio, un campo opzionale frequenza che indica la frequenza assoluta con cui quel valore è di solito presente in scenari reali(ad esempio il nome Mario è molto più frequente del nome Gilberto). Un esempio di lookup table relativa al dominio dei nomi può essere: CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL Nome Persona Luca Marco Paolo Giacomo John Frequenza 60 50 35 25 5 Dopo queste informazioni preliminari, vediamo in dettaglio l’algoritmo. La prima operazione che viene effettuata è quella di dividere i valori dell’ attributo accurati da quelli non accurati (prima analisi), che saranno poi sottoposti ad un ulteriore analisi; ogni valore v dell’attributo viene confrontato con tutti i valori v’ della lookup table, se risulta v = v’ allora v può considerarsi accurato in quanto presente nel dominio, se v non corrisponde a nessun v’ allora entra a far parte dell’insieme dei valori non accurati, da analizzare nuovamente. Su questo insieme facciamo una considerazione, esso contiene quei valori v che evidentemente dopo la prima analisi non risultano nel dominio, tutto quello che si può fare e una seconda analisi di vicinanza di questi v a quelli del dominio, con la speranza che il più vicino sia il valore che v vuole rappresentare con l’eccezione che v ha al suo interno degli errori sintattici. Riprendendo la descrizione, viene inizializzato e incrementato un contatore per i valori non accurati. A questo punto entra in gioco la funzione di similarità Jaro, ogni valore non accurato viene confrontato con tutti i valori della lookup table tramite la funzione, per ogni confronto viene restituito un valore di similarità compreso tra 0 e 1, tra tutti viene preso il massimo valore di similarità e contemporaneamente viene memorizzato il valore della lookup table più vicino. Questo procedimento viene ripetuto per ogni valore non accurato, come detto in precedenza. Ogni valore non accurato avrà quindi associato un valore di similarità e il relativo valore del dominio più vicino. Questo è un primo risultato che l’algoritmo restituisce, ovvero un accuratezza sintattica relativa ad ogni valore dell’attributo. Un secondo risultato è relativo all’accuratezza dell’attributo nel suo complesso che viene calcolato con la seconda forma del simple ratio, il rapporto tra il totale di valori non accurati e il numero di tuple della relazione, sottratto a uno. La seconda metrica è basata sulla frequenza dei valori e svincola completamente la valutazione dalla presenza di una lookup table per l’attributo. Tutto quello che viene fatto è un’analisi dei valori con l’utilizzo questa volta di due funzioni di similarità. Il dominio di definizione Df viene costruito dall’algoritmo; non è un dominio di possibili valori per l’attributo, come ad esempio, il dominio dei nomi di persona, ma è un dominio di confronto, ovvero un insieme costruito dall’algoritmo e utilizzato per confrontare i valori. Procediamo con la descrizione. Si analizzano i valori dell’attributo e per ognuno si contano le occorren- CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL ze; si passa alla creazione del dominio Df: i valori con numero di occorrenze maggiore o uguale a 2 (l’algoritmo deve permettere la parametrizzazione del valore) entrano a far parte di Df, i valori con numero di occorrenze pari a 1, vengono considerati valori a bassa frequenza che indichiamo con vlf (low frequency value) e vengono analizzati. Ogni vlf viene confrontato con ogni elemento di Df tramite la funzione di similarità Jaro; ogni operazione di confronto restituisce un risultato e tra tutti questi viene preso il massimo che indichiamo con maxsv (max similatity value) e contemporaneamente il valore di Df più vicino che chiamiamo vcl (close value). Si analizza maxsv e se risulta maggiore di una soglia posta a 0.8, vlf risulta accurato sintatticamente e può esser considerato un valore di Df ammissibile. Se invece maxsv è minore o uguale a 0.80, vlf viene analizzato tramite la funzione di similarità Soundex che prende come secondo argomento vcl. Facciamo una considerazione sui valori di soglia 2 e 0.8. Il valore 2 che permette di creare il dominio Df, è stato scelto in quanto si è pensato al fatto che un valore, presente come minimo due volte, può esser considerato “corretto”, invece se presente una volta può darsi che sia un valore uguale a quelli presenti ma con errori al suo interno oppure un valore “corretto”. Il valore 0.8 è frutto di prove sperimentali sulla funzione di distanza Jaro. Abbiamo notato che con similarità uguali o superiori a 0.8, due valori possono esser considerati simili con buona probabilità, invece con valori minori di 0.8 si ha una scarsa probabilità. La scelta della funzione soundex non è casuale, proprio per le sue caratteristiche di raggruppare nomi con suoni simili, a questo stadio della misurazione in cui abbiamo dopo una prima analisi dei valori considerati non accurati ma con una piccola probabilità che essi siano dei valori del dominio con almeno uno o più errori sintattici, permette di scoprire con un margine di errore accettabile se due valori rappresentano o meno lo stesso oggetto del mondo reale, nel caso dei nomi, ad esempio, permette di arrivare alla conclusione che palo e paolo sono lo stesso nome di una persona con nome proprio paolo e che palo è un nome con un evidente errore sintattico. Quindi, la funzione soundex permette di verificare se vlf è vcl a meno di qualche errore di accuratezza, oppure se vlf non è vcl e quindi vlf è accurato ed un valore ammissibile di Df. Al termine dell’applicazione di questa seconda funzione si avrà un insieme di valori non sintatticamente corretti. Infine si procede col determinare il valore dell’accuratezza sintattica dell’attributo tramite la seconda forma del simple ratio che effettua il rapporto tra il numero di valori non accurati e il numero totale di valori, sottratto a uno. Accuratezza Sintattica Tuple La misurazione dell’accuratezza sintattica a questo livello di dettaglio si differenzia molto dal livello dell’attributo, la metrica che deve essere imple- CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL mentata prevede due fasi, una prima fase di configurazione della misurazione e una seconda che coincide con la misurazione vera e propria. L’algoritmo si ispira alla tecnica del Record Linkage. Il problema del Record Linkage, conosciuto anche come record matching o meglio object identification problem, consiste nell’identificare se due record o tuple che non corrispondono tra loro accuratamente, possono tuttavia riferirsi allo stesso oggetto del mondo reale. Per fare questo e per capire se due record in due database sono tra loro equivalenti, si deve definire una funzione che misura la distanza tra i due record; un caso, che è quello adattato nel framework, è che il record con cui fare il confronto si trovi in una sorgente dati (relazione) diversa, che si suppone contenga le stesse tuple, ma corrette. La indicheremo sempre con il nome lookup table. Un tipico algoritmo di record linkage si sviluppa nei seguenti passi: 1. Normalizzazione dei formati: riorganizza i record e i valori secondo un formato standard e comune; 2. Blocking con riduzione dello spazio di ricerca; 3. Scelta della formula di distanza; 4. Per un campione di record già accoppiati, calcola per ogni valore di distanza la frequenza di matching e non matching; 5. Scelta, a partire dalla distribuzione di cui al punto 4 di due distanze di soglia min e max. Prima Fase: Configurazione della misurazione Ispirandoci alla tecnica del record linkage, come detto in precedenza si rende necessaria una lookup table, di fondamentale importanza per effettuare il confronto. Con riferimento all’algoritmo sopra riportato, questa fase potrebbe definirsi anche di normalizzazione dei formati. In ana prima possibile versione dell’algoritmo la lookup table assume la forma di una relazione identica a quella da valutare e contenente i valori corretti. Una considerazione può essere fatta a questo punto. La parola identica implica che la lookuptable oltre a contenere gli stessi valori, però corretti, deve avere anche la stessa struttura ovvero lo stesso numero di attributi e perfino nello stesso ordine. Per svincolare la valutazione dalle strutture delle relazioni è necessario una fase di configurazione, in cui definire sia per la relazione che per la lookup table, gli attributi che comporanno la struttura, tutti o un sottoinsieme e anche l’ordine; in questo modo l’utente non deve avere una lookup table identica ma simile e può adattare la struttura di una all’altra. CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL Facciamo un esempio, prendiamo in considerazione il caso degli indirizzi, data la seguente relazione ID 1 Tipo Corso Nome Vittorio Emanuele Città Milano Provincia Mi nel caso di lookup table identica, l’algoritmo per funzionare dovrebbe consultare una relazione come la seguente Key 1 Dug Corso Name Vittorio Emanuele Comune Milano Provincia Mi notiamo che i vincoli per il corretto funzionamento sono: ugual numero e stesso ordine di attributi. Il nome degli attributi è irrilevante. Altro vicolo importante è che anche la chiave primaria delle relazioni deve essere la stessa ovvero dello stesso tipo, ad esempio numerica (Integer), questo molto spesso non è possibile. Con la procedura di configurazione, la misurazione diventa più flessibile e possono essere prese in considerazione diverse strutture di lookup table. Facciamo alcuni esempi TipoNome Corso Vittorio Emanuele Città Milano Provincia Mi oppure ID 3 Indirizzo Corso Vittorio Emanuele Milano Mi Inoltre, con la prima versione non è possibile scegliere un sottoinsieme di attributi ma, bisogna considerare tutti gli attributi della relazione, inclusa la chiave primaria. Al contrario, con la seconda versione è possibile far si che i campi che compongono la tupla non siano tutti, ma un sottoinsieme scelto. Seconda Fase: Misurazione L’algoritmo, da sviluppare per verificare il grado di vicinanza di una tupla con la tupla corrispondente nella lookup table, si articola nei seguenti passi: 1. si concatenano in un unico campo, dopo aver rimosso gli spazi vuoti, tutti i valori degli attributi della tupla da valutare e si effettua la medesima operazione per la tupla della lookup table. La rimozione degli spazi vuoti serve ad evitare eventuali problemi connessi ai differenti formati di acquisizione delle informazioni in fase di inserimento, che possono anche non prevedere la possibilità d’includere spazi; 2. si definisce una lunghezza prefissata, ad esempio 3(l’algoritmo deve CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL permettere la parametrizzazione di questo valore), e si individuano nella stringa (ottenuta al passo 1) della tupla della lookup table tutte le sottostringhe di tale lunghezza costituite da sequenze consecutive di caratteri. Tale operazione viene effettuata anche per la tupla da valutare. 3. si pone pari a 0 uno specifico contatore. Si adotta un algoritmo di tipo sequenziale. Si considera la prima delle sottostringhe (identificate al passo 2) della tupla della lookup table e la si confronta in modo sequenziale con ciascuna delle sottostringhe della tupla da valutare. Ogni volta che si verifica l’uguaglianza delle sottostringhe si incrementa di uno un contatore. La sequenza viene iterata per la seconda sottostringa della tupla della lookup table, fino a considerare l’ultima sottostringa. Ad ogni iterazione viene aggiornato il valore del contatore; 4. l’indicatore complessivo di accuratezza sintattica per la generica tupla i è ottenuto come rapporto tra il valore del contatore, calcolato al passo precedente, e il numero di sottostringhe della tupla della lookup table identificate al passo (2). Facciamo una considerazione sulla lunghezza delle sottostringhe, che nel framework è uguale a 3. Ispirandosi alla metodologia ISTAT, questo valore è uguale a quello utilizzato nella metodologia. Ma la lunghezza in questione è quella ottimale nel caso di dati toponomastici, ricavata da una serie di analisi empiriche. Nel nostro caso non è propriamente ottimale ma al contempo non sottostima l’accuratezza effettiva (la definizione della lunghezza ottima richiede uno studio lungo e approfondito), infatti in alcuni casi, vengono assegnati punteggi elevati di accuratezza per alcune tuple, che superano il 100%; ma questo inconveniente può esser superato in fase di visualizzazione e report dei risultati, considerando inaccurate le tuple con valori minori di 100%. I passi precedentemente descritti vengono effettuati per ogni tupla della relazione, che viene confrontata con ogni tupla della lookup table. Come valore di accuratezza sintattica viene preso il massimo valore prodotto dalla serie dei confronti e allo stesso tempo deve esser tenuta traccia (per esser visualizzata successivamente) della tupla della lookup table che è più vicina. Al termine dell’esecuzione dell’algoritmo si avrà un insieme di tuple sintatticamente accurate, con valore pari al 100% e un insieme di tuple non accurate, dove ognuna avrà il proprio valore di accuratezza e la relativa tupla della lookup table più vicina. Accuratezza Sintattica Relazione La valutazione dell’accuratezza sintattica a questo livello di granularità, è identica alla misurazione per le tuple, con un calcolo aggiuntivo. La pro- CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL cedura per le tuple, abbiamo detto che restituisce un insieme di tuple non accurate, si considera la cardinalità di tale insieme ovvero il numero di tuple non accurate della relazione e lo si divide per il numero totale di tuple, sottraendo il tutto a uno. Quello appena descritto non è altro che la seconda forma del simple ratio. 1.5 Localizzazione e Correzione di Errori Nell’ambito delle attività e delle tecniche per la DQ, è presente un attività in particolare, relativa alla localizzazione e correzione degli errori. Questa attività si rende utile ogni volta che si ha un insieme di dati proveniente da una fonte di cui non si è certi dell’affidabilità. Gli errori nei dati possono essere espressi attraverso un gran numero di dimensioni; per alcune sono state fornite delle metriche di valutazione nei paragrafi precedenti. I metodi di localizzazione e correzione dipendono dal tipo di dimensione che si vuole analizzare e valutare. 1.5.1 Il Framework: Attività di Localizzazione e Correzione Il framework svolge principalmente un’attività di assessment della qualità, la fase successiva alla valutazione corrisponde a quella di miglioramento (improvement) attraverso la localizzazione e correzione degli errori che degradano la qualità dei dati. Il framework svolge un attività di localizzazione e correzione degli errori per alcune dimensioni implementate, ovvero contemporaneamente alla misurazione vengono localizzati gli errori e le relative correzioni; ad esempio nel misurare l’accuratezza sintattica dell’attributo, viene restituito il valore di accuratezza in percentuale e allo stesso tempo l’insieme di valori non accurati e i relativi valori del domino più vicini, con i quali i valori inaccurati potrebbero essere corretti. In particolare, vedremo in dettaglio il caso, (i) per l’accuratezza sintattica dell’attributo con la metrica basata sulla frequenza dei valori, (ii) per l’accuratezza sintattica dell’attributo con la metrica che utilizza la lookup table e (iii) per l’accuratezza sintattica delle tuple con la metrica che utilizza la lookup table. La correzione implementata è una proposta di possibile miglioramento che viene visualizzata e (OPZIONALE) memorizzata in un database contenente tutti i risultati dell’attività di assessmente. Nel seguito verranno descritte per ogni dimensione le localizzazioni e le proposte di possibili correzioni da implementare nel framework. Accuratezza Sintattica Nella misurazione dell’ accuratezza sintattica dell’attributo con la metrica basata sulla frequenza dei valori, per ogni valore dell’attributo con frequenza bassa (frequenza relativa minore di 2) che risulta non accurato, secondo CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL la prima metrica di similarità Jaro, viene proposto un valore del “dominio ricavato” (insieme di valori dell’attributo con frequenza relativa maggiore o uguale a 2) che è il più vicino, per la seconda funzione di similarità Soundex, al valore inaccurato. Chiariamo con un esempio. Supponiamo di avere una relazione Impiegati illustrata in tabella 1.1, NumeroImpiegato 0100 0200 0300 0400 0500 0600 0700 Nome Jack Jack Paolo Paolo Palo Steve Paolo Cognome Murphy Bauer Rossi Bianchi Bow Barrow Baggio email [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] [email protected] Tabella 1.1: Relazione Impiegati eseguiamo l’algoritmo sull’attributo Nome, il “dominio ricavato” è illustrato in tabella 1.2, ed è l’insieme dei valori di Nome il cui numero di occorrenze è maggiore o uguale a 2 (frequenza relativa maggiore o uguale a 2), ed è utilizzato per il confronto tramite le funzioni di similarità; è differente dal dominio dell’attributo Nome, insieme dei nomi, valori possibili che l’attributo può assumere. Dominio Ricavato Jack Paolo Frequenza Relativa 2 3 Frequenza Assoluta 2/7 3/7 Tabella 1.2: Dominio Ricavato dell’Attributo Nome I valori dell’attributo con frequenza bassa sono Palo e Steve, ma solo Palo risulta avere problemi di accuratezza, invece Steve è un valore possibile del dominio. Appurato il problema di qualità l’algoritmo suggerisce che il valore del dominio più vicino a Palo è Paolo e quindi una possibile correzione può essere apportata. Una snapshot generica del framework è mostrata in figura 1.1. Figura 1.1: Accuratezza sintattica attributo, metrica frequenza valori. Nella misurazione dell’ accuratezza sintattica dell’attributo con la metrica basata sull’utilizzo della lookup table, per ogni valore dell’attributo che non appartiene al dominio dei possibili valori, rappresentato dalla lookup table, quindi con probabili errori di accuratezza viene effettuato un confronto con CAPITOLO 1. REALIZZAZIONE DI UN FRAMEWORK PER LA VALUTAZIONE DELLA QUAL gli elementi del domino, tramite la funzione di similarità Jaro, per ricavare il valore di accuratezza e il valore del dominio più vicino. Una snapshot del framework è mostrata in figura 1.2. Figura 1.2: Accuratezza sintattica attributo, metrica lookup table. Nella misurazione dell’ accuratezza sintattica delle tuple con la metrica basata sull’utilizzo della lookup table, ogni tupla viene confrontata con le tuple della lookup table e per tutte quelle non accurate viene fornito il valore di accuratezza e la relativa tupla corretta. Una snapshot del framework è mostrata in figura 1.3. Figura 1.3: Accuratezza sintattica tuple. Appendice A Appendice: Close Word Assumption La completezza di una relazione può esser definita come il grado con il quale la relazione rappresenta la corrispondente parte del mondo reale. Nel modello relazionale, la completezza è definita in base a: 1. la presenza/assenza e significato dei valori nulli. 2. la validità di una delle due assunzioni chiamate rispettivamente open world assumption e closed world assumption In un modello con valori nulli, la presenza di un valore nullo ha il significato generale di valore mancante, ma è importante capire perchè tale valore non è presente. I significati che si possono dare sono: • il valore non è presente perchè esiste nel mondo reale ma non è conosciuto. • il valore non è presente perchè non esiste in generale. • il valore non è presente perchè potrebbe esistere ma attualmente non si è a conoscenza del fatto che esista oppure no. Nei modelli logici come quello relazionale, ci sono due assunzioni per la completezza dei dati di una istanza r di relazione. La closed world assumption (CWA) indica che solo i valori attualmente presenti in una tabella relazionale r e nessun altro valore rappresentano i fatti veri del mondo reale. Nella open world assumption (OWA) non possimo indicare ne la verità ne la falsità dei fatti non rappresentati nelle tuple di r. Dalle quattro possibili combinazioni, considerare/non considerare i valori nulli e OWA/CWA vengono fuori due casi: 1. modello senza valori nulli che rispetta OWA. 17 APPENDICE A. APPENDICE: CLOSE WORD ASSUMPTION 18 2. modello con valori nulli che rispetta CWA. Nel modello con valori nulli che rispetta CWA, la completezza può esser definita considerando la granularità degli elementi del modello: valore, tupla, attributo e relazione come mostrato in figura A.1. E’ possibile definire: Figura A.1: Completezza di differenti elementi del modello relazionale • Completezza del Valore: rileva la presenza di valori nulli per alcuni campi di una tupla. • Completezza della Tupla: definita per una tupla, in base ai valori di tutti i suoi campi. • Completezza dell’Attributo: misura il numero di valori nulli di un particolare attributo in una relazione. • Completezza della Relazione: rileva la presenza di valori nulli in una relazione. Appendice B Accuratezza L’accuratezza è definita come la vicinanza tra un valore v e un valore v’, considerato la corretta rappresentazione dell’evento del mondo reale che v vuole rappresentare. Per esempio se il nome di una persona è John, il valore v’ =John è corretto, invece il valore v =Jhn non è corretto. Esistono due tipi di accuratezza chiamati rispettivamente, accuratezza sintattica e accuratezza semantica. L’accuratezza sintattica è la vicinanza di un valore v agli elementi del corrispondente dominio di definizione D. Nell’accuratezza sintattica non si è interessati a confrontare v con il vero valore v’ ; piuttosto, si è interessati a controllare se v è uno dei valori in D. Ad esempio, se v =Jack, anche se v’ =John, v è considerato sintatticamente corretto e Jack è un valore ammissibile nel dominio dei nomi di persona. Nel capitolo 3 vengono approfonditi i metodi per misurare l’accuratezza sintattica, ma diamo uno sguardo generale alle possibili misurazioni; si possono utilizzare delle funzioni di distanza che valutano la distanza tra v e i valori in D, i vari tipi di funzioni sono descritte in dettaglio nell’Appendice C. Consideriamo la tabella ?? introdotta precedentemente che descrive una relazione Movies, il valore Rman Holiday del Title del movie 3 è sintatticamente inaccurato, in quanto non corrisponde a nessun titolo di movie. Roman Holiday è il titolo di movie più vicino a Rman Holiday. L’accuratezza semantica è la vicinanza del valore v al vero valore v’. Consideriamo nuovamente la relazione Movies mostrata in tabella ??. Lo scambio di director per le tuple 1 e 2 è un esempio di errore di accuratezza semantica. Per quanto riguarda la misurazione, mentre per l’accuratezza sintattica è ragionevole utilizzare funzioni di confronto, per l’accuratezza semantica è più accettabile un dominio come <corretto, non corretto> per la sua misurazione. A differenza dell’accuratezza sintattica, la misurazione di quella semantica di un valore v necessita che il vero valore di v sia noto. L’accuratezza semantica è di solito più complessa da misurare. 19 Appendice C Funzioni di Similarità C.1 Principali Funzioni di Similarità Le funzioni di similarità, specialmente quelle relative al confronto tra stringhe, vengono elencate nel seguito. Vediamo le principali. Alcune, precisamante la Jaro e la Soundex sono state approfondite precedentemente, in quanto proposte per la realizzazione di alcuni algoritmi del framework. • Distanza di Edit: La distanza di edit tra due stringhe A e B è il numero minimo di modifiche per trasformare una stringa A in B o viceversa. Per una modifica si intende l’inserimento, la cancellazione o la sostituzione di un carattere. A ciascuna di queste modifiche è assegnato un costo. Per esempio, assumiamo che i costi di inserimento e cancellazione siano pari ad 1, la distanza di edit tra due stringhe Smith e Sitch è 2, in quanto Smith è ottenuta inserendo m e cancellando c da Sitch. • Distanza di Hamming: La distanza di Hamming conta il numero di discrepanze tra due numeri. Per esempio, il codice di Hamming tra 00185 e 00155 è 1. • Smith-Waterman: L’algoritmo di Smith-Waterman, date due sequenze, utilizza la programmazione dimamica per trovare il più basso costo per convertire una stringa in un’altra. I costi per i singoli inserimenti e cancellazioni sono i parametri dell’algoritmo. • n-grams, bi-grams, q-grams: La funzione di distanza n-grams forma l’insieme di tutte le sottostringhe di lunghezza n p per stringa. Pciascuna 0 − f 00 | dove La distanza tra le due stringhe è definita come: |f s ∀x s fs0 e fs00 sono il numero di occorrenze delle sottostringhe x nelle due stringhe s0 e s00 , rispettivamente. La funzione Bi-grams (n=2) è largamente utilizzato e è efficacie, con minori errori tipografici. 20 APPENDICE C. FUNZIONI DI SIMILARITÀ 21 I q-grams posizionali sono ottenuti slittando di una finestra di lunghezza q i caratteri di una stringa s. • TF-IDF: Il Token Frequency-Inverse Document Frequency (TF-IDF) o cosine similarity per il confronto di stringhe simili nei documenti. L’idea di base è assegnare un peso alto ai token che appaiono frequentemente in un documento (TF weight), e assegnare un peso basso ai token che appaiono frequentemente in un intero insieme di documenti (IDF weight). Per un termine i in un documento j il peso wi,j è: N wi,j = (tf i, j) × log( ) dfi dove tf i, j è il numero di occorrenze di i in j, dfi è il numero di documenti contenenti i e N è il numero totale di documenti. La similarità tra due documenti è dopo calcolata con il coseno tra i loro rispettivi vettori con i termini di peso. Più precisamente, essendo V = {w1 , ..., wn } e U = {w1 , ..., wn } i vettori con i pesi, la similarità è: V ·U |V | · |U | Per completezza d’informazione, riportiamo nuovamente anche la Jaro e la Soundex: • Jaro: Introduce una funzione di confronto tra stringhe che tiene conto di inserimenti, cancellazioni e trasposizioni. L’algoritmo di Jaro cerca il numero di caratteri comuni e il numero di caratteri trasposti nelle due stringhe. Un carattere comune è un carattere che appare in entrambe le stringhe con una distanza pari alla metà della lunghezza della stringa più corta. Un carattere trasposto è un carattere comune che appare in posizioni differenti. Come esempio consideriamo le stringhe Smith e Simth, ci sono cinque caratteri comuni, due dei quali sono trasposti. La scala di confronto tra le stringhe per Jaro è data da: f (s1 , s2 ) = Nc lengthS1 + Nc lengthS2 Nt + 0.5 N c 3 dove s1 e s2 sono stringhe di lunghezza lengthS1 e lengthS2 rispettivamente, Nc è il numero di caratteri comuni tra le due stringhe (dove la distanza per caratteri comuni è la metà della lunghezza minima di s1 e s2 e Nt è il numero di trasposizioni). • Soundex: Lo scopo della funzione soundex è quello di raggruppare nomi che hanno suoni simili. Produce un codice, detto codice soundex. Per esempio il codice soundex di Hilbert e Heilbpr è simile. Un codice soundex contiene di regola quattro caratteri. La prima lettera del nome APPENDICE C. FUNZIONI DI SIMILARITÀ 22 diventa il primo carattere del codice, i restanti tre caratteri sono dati dall’ordine sequenziale del nome, consultando una tabella predefinita. Per esempio il codice soundex di Hilbert e Heilbpr è H416. Una volta che il limite di quattro caratteri è raggiunto, le restanti lettere vengono ignorate. Bibliografia [1] Carlo Batini, Monica Scannapieco. Data Quality: Concepts, Methodologies and Techniques. Springer, 2006. [2] Thomas C. Redman. Data Quality For The Information Age. Artech House, 1996. [3] Fellegi I.P., Sunter A.B. A Theory for Record Linkage. Journal of the American Statistical Association, vol. 64, 1969. [4] Pipino L.L., Lee Y.W., Wang R.Y. Data Quality Assessment. Communications of the ACM, vol.45, no.4, 2002. [5] Wang R.Y., Strong D.M. Beyond Accuracy: What Data Quality Means to Data Consumers. Journal of Management Information System, vol.12, no.4, 1996. [6] Nielsen J. Usability Engineering. Academic Press, 1993. [7] Dix A., Finley J., Abowd G., Beale R. Human-Computer Interaction. Second Edition. Prentice Hall, 1998. [8] William R. Durrell. Data Administration: A Practical Guide to Data Administration. McGraw-Hill, 1985 [9] Storey V., Wang R. Extending the ER Model to Represent Data Quality Requirements. Data quality (R. Wang, M. Ziad, and W. Lee, eds.), Kluver Academic Publishers, 2001. [10] F. De Amicis, D. Barone, C. Batini. An Analytical Framework To Analyze Dependencies Among Data Quality Dimension. ICIQ - 11th International Conference on Information Quality, November 2006. [11] Shankaranarayan G.R., Wang R.Y., Ziad M. Modeling the Manufacture of an Information Product with IP-MAP. Conference on Information Quality. Massachussets Institute of Technology, 2000. [12] Ballou D.P., Wang R.Y, Pazer H., Tayi G.K. Modeling Information Manufacturing Systems to determine Information Product Quality. Management Science, vol.44, no.4, 1998. 23 BIBLIOGRAFIA 24 [13] G. Navarro. A Guided Tour of Approximate String Matching. ACM Computing Surveys 31 (2001), 31-88. [14] Atzeni P., Ceri S., Paraboschi S., Torlone R. Basi di dati: Modelli e linguaggi di interrogazione. McGraw-Hill, 2002. [15] Wand Y., Wang, R.Y. Anchoring data quality dimensions in ontological foundations. Communication of ACM, vol. 39, no. 11, 1996. [16] Wang R.Y. A Product Perspective on Total Data Quality Management. Communication of the ACM, vol. 41, no. 2, 1998. [17] Diane M. String, Yang W. Lee, Richard Y. Wang. Data Quality in Contex. Communication of the ACM, vol. 40, no. 5, 1997. [18] Eclipse Birt, http://www.eclipse.org/birt/phoenix/. [19] MySQL, http://www.mysql.com/. [20] Eclipse, http://www.eclipse.org/. [21] XML, http://www.w3.org/XML/. [22] SWT: The Standard Widget Toolkit, http://www.eclipse.org/swt/. [23] Java, http://java.sun.com/. [24] JDBC, http://java.sun.com/javase/technologies/database/index.jsp. [25] SimMetrics, http://www.dcs.shef.ac.uk/ sam/stringmetrics.html. [26] JFreeChart, http://www.jfree.org/jfreechart/. [27] BrowserLauncher2, http://sourceforge.net/projects/browserlaunch2/. [28] Data Warehousing Institute, http://www.dw-institute.com/.