Qualité des données & Grosses bases de données Aïcha Ben Salem, Faouzi Boufarès, Sebastiao Correia Université Paris 13, Sorbonne Paris Cité LIPN, CNRS, UMR 7030 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 1
Motivation Les données contribuent au succès de l'activité d'une organisation. Leur qualité représente un très grand enjeu et le coût de la non-qualité peut être très élevé. L'exploitation des données de qualité est donc une nécessité absolue. La qualité de l information dépend de la qualité de données. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 2
Plan Problématique Algorithmes d élimination des similaires / doublons Enrichissement sémantique/ rapprochement de schéma Conclusion et travaux futurs 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 3
Plusieurs types d anomalies 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 4
Donner un SENS aux données rassemblées Données correctes Peu ou Sans doublon(s), ni similaire(s), ni redondance(s), ni valeur(s) nulle(s)!!! Etc Quel schéma résultat? Quelles transformations? Elimination des similaires, des doubles et des redondances! Enrichissement des données! 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 5
Donner un SENS aux données rassemblées Quelques traitements à faire pour créer des données destinations correctes : Transformations Catégorie (F,M) Sexe (F,M) Sexe (Non défini ou défini 0,1) Sexe (F,M)??? 0/F, 1/M ou 1/F, 0/M -- bijection Type (1, 2, 3) CatégSoc (1, 2, 3) CatégSoc (A, B, C, D, E) CatégSoc (1, 2, 3)??? 1/A, 2/B, 3/C,!/D,!/E -- pas de bijection Note [0..10] Score [0..20] Extraction/Déduction Adresse C(150) Pays C(50) 55, r de Belleville 75019 Pari Franc France 27, r de la Paix 75008 Paris NULL France Déduplication Est-ce que Le Bon Adamo est la même personne que Le Bon Adam? 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 6
Élimination des doublons et similaires 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 7
La fonction Match 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 8
La fonction Merge Merge(t 1, t 2 ) t' qui est un nouveau tuple apportant «plus» d information à partir de chaque valeur (v) résultant de la fusion: v:=fusion(expr, v 1, v 2 ) avec expr une règle métier permettant de choisir la méthode de fusion de v 1 et v 2. Un enrichissement des données peut ainsi être réalisé à la demande de l utilisateur sur l ensemble des attributs. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 9
Les algorithmes G, R, F et MFB L idée est de réduire le nombre de comparaisons (tous les tuples) en fusionnant les données qui concordent. Comparer tous les enregistrements entre eux. (-) pour G, R et F le temps d exécution est très élevé pour des gros volumes de données. Proposer un nouvel algorithme MFB qui optimise l accès à la mémoire vive. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 10
Expérimentation Table Customer avec 11 attributs. Génération aléatoire de données en utilisant GenLD sur des tables de 10 7 tuples. Prenom, Nom, DateNais et Tel attributs clés pour l élimination des similaires. Les algorithmes Jaro-winkler, Levenshtein et Jaccard utilisés pour le calcul de la distance de similarité. R ules = r 1 r 2 avec r 1 : d 1 s 1 d 2 s 2 d 7 s 7 ; r 2 : d 2 s 2 d 6 s 6 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 11
Time (sec) Mesures de performance avec 10% de doublons 90000 80000 Caractéristiques de la machine: - CPU: CORE i7 - RAM: 6 Go 70000 60000 Les algorithmes G, R et F : temps d exécution est supérieur à plusieurs jours à partir de 100mille lignes. 50000 40000 30000 20000 10000 0 1000 10000 50000 100000 200000 300000 500000 Number of tuples G R F MFB 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 12
Enrichissement sémantique/ rapprochement de schéma Référentiel Instance du référentiel 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 13
Méta-modèle sémantique du référentiel : MetaSem 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 14
Les choix sémantiques Pourquoi les ontologies? Partager de connaissances hétérogènes Inférer de nouvelles connaissances (créer nouveaux liens, nouvelles règles ) réutilisation du savoir dans un autre domaine. Les outils existants: Protégé SADL Jena 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 15
SADL (Semantic Application Design Language) Pourquoi SADL? SADL est un langage textuel: John is a Person. C est une grammaire de langage Xtext pour la construction de modèles sémantiques. SADL-IDE (environnement de développement intégré) est un ensemble de plug-ins Eclipse pour l édition et le test des modèles sémantiques. Les modèles sont créés sous le format OWL 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 16
SADL (Semantic Application Design Language) 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 17
Construction d une instance de MetaSem Comment construire une instance du référentiel? Construction d une première instance à partir d un dictionnaire de données Possibilité d'enrichir ou d'initialiser un référentiel avec des sources externes (web,...) 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 18
Construction d une instance de MetaSem 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 19
Transformation d une source de données en une ontologie 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 20
Alignement de la source de données avec le référentiel Un premier alignement basé sur la similarité entre les noms des entités. Outils et méthodes de calcul de distance utilisés: AlignApi pour alignement des attributs d une source avec SmoaDistance Jaro-Winkler pour le rapprochement des noms de sources. Un deuxième alignement basé sur les types des entités. Définition de nouveaux matchers. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 21
Conclusion Les algorithmes séquentiels G, R, F et MFB réalisent le Match et le Merge parallèlement. La concordance des données se fait selon des règles proposées par l utilisateur. Ajouter de la sémantique aux structures de données. Utiliser les connaissances acquises par les analyses déjà effectuées afin de proposer de nouvelles analyses. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 22
Travaux futurs Paralléliser les algorithmes. Automatiser le choix des règles de similarité. Développer de nouvelles méthodes de calculs de distance de similarité pour des types de données complexes ainsi que l automatisation du choix entre elles. L extension de notre Framework en ajoutant d'autres matchers, et des raisonneurs. Partage du référentiel afin qu il soit utilisé par d autre personnes, entreprises Réutilisation de l'information pour la découverte automatique de problèmes de qualité. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 23
The End Thanks for your attention Fin Merci de votre attention 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 24
1. F. Boufarès, A. Ben Salem, S. Correia, CODIT Bibliographie 2. F. Boufarès, A. Ben Salem, S. Correia, «Qualité de données dans les entrepôts de données : élimination des similaires», 8èmes Journées francophones sur les Entrepôts de Données et l'analyse en ligne, (EDA 12), Revue RNTI-B (Revue des Nouvelles Technologies de l'information), Bordeaux, France, 2012, pp. 32-41. 3. F. Boufarès, A. Ben Salem, S. Correia, «Deduplication Algorithms for DataBases and Data Warehouses», 21th International Conference on Software Engineering and Data Engineering (SEDE 12), Los Angeles, California, USA, 2012, pp. 73-78. 4. Benjalloun, O., Garcia-Molina, H., Menestria, D., Su, Q., Whang, S.E., Widom, J., «Swoosh: A Generic Approach to Entity Resolution», The International Journal on Very Large Data Bases (VLDB '09), New York, USA, 2009, pp. 255-276. 5. Berti-Équille, L., «Qualité des données», Techniques de l Ingénieur H3700, collection Technologies logicielles Architecture des systèmes, France, 2006, pp. 1-19. 6. Bilenko, M., Mooney, R.J., «Adaptive Duplicate Detection Using Learnable String Similarity Measures», Proceedings of the Ninth ACM SIGKDD International Conference on Knowledge Discovery, and Data Mining, Washington DC, USA, 2003, pp. 39-48. 7. Cohen, W.W., Richman, J., «Iterative Record Linkage for Cleaning and Integration», Proceedings of the 9th ACM SIGMOD workshop on Research issues in data mining and knowledge discovery (DMKD 04), Paris, France, 2004, pp. 11-18. 8. Hernandez, M.A., Stolfo, S.J., «Real-world Data is Dirty: Data Cleansing and The Merge/Purge Problem» Data Mining and Knowledge Discovery (DMKD 98), New York, USA, 1998, pp. 9-37. 9. Köpcke, H., Rahm, E., «Frameworks for entity matching: A comparison», Data Knowledge Engineering (DKE 09), 2009, pp. 197 210. 10. Sarawagi, S., Bhamidipaty, A., «Interactive Deduplication using Active Learning», Proceedings The 8th ACM International Conference SIGKDD 02, Alberta, Canada, 2002, pp. 269-278. 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 25
Appendix 1: Match Function Algorithm Match // Compares two tuples according to the rules of similarities. Input : Two tuples, t1 and t2 Î T Algo (Similarity Measure) S (thresholds) Output: Result := True if (t 1 t 2 ) Begin Result := True For all Rule j j from 1 to q Do Rule j := True; i:=1 While Rule j and i n Do v 1 :=t 1.A i ; v 2 :=t 2.A i If v 1 or v 2 = NULL Then Result = False Else Switch (Algo) case Levenshtein: if d = Levenshtein(v 1, v 2 ) s 1 then Result=True else Result=False case Metaphone : if d = Metaphone(v 1, v 2 ) s 2 then Result=True else Result=False case DateCompare : if DateFormat.parse(v 1 ) = DateFormat.parse(v 2 ) then Result=True else Result=False case Difference : i 1 = Integer.parseInt(v 1 ) i 2 = Integer.parseInt(v 2 ) d = (i 1 - i 2 ) / max(i 1, i 2 ) if d s 3 then Result=True else Result=False End Switch End if Rule j = Rule j and Result i:=i+1 End While Result := Result or Rule j End for End Algorithm Match 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 26
Appendix 2: Merge Function Algorithm Merge // Merges two tuples according to rules such as regular expressions or functions defined by the user. Input : Two tuples, t 1 and t 2 Î T; merge (Type of Merge) Output : A tuple t Begin t 1 t 2 For all Attribute A i in A i from 1 to n Do v 1 :=t 1.A i ; v 2 :=t 2.A i if v 1 = NULL then v := v 2 // we enrich the nulls values else if v 2 = NULL then v := v 1 else if v 1 = v 2 then v := v 1 else Switch (merge) // Some fields allow more than one value (for example telephone number or email address). case CONCAT : v :=concat(v 1, v 2 ) // Check if the longest string respects a certain regular expression (for example, a name cannot contain three successive similar letters). case UNIF : if v 1.length() v 2.length() and v1.verifyregularexpression()= True then v :=v 1 else if v 2.verifyRegularExpression()= True then v := v 2 // The longest string may contain more information so we have a more coherent and complete string. case MAX : if Integer.parseInt(v 1 ) Integer.parseInt(v 2 ) then v := v 2 else v := v 1 // Compare the date and for example we choose the most recent date. case DateMoreRecente : if (v 1.compareTo(v 2 ) 0) then v := v 2 else v := v 1 End Switch t.a i :=v End for End Algorithm Merge 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 27
Appendix 3: Algorithm MFB Algorithm MFB Input : T a set of tuples from a table (may contain duplicates) h number of iteration given by the user Output : Tprim a set of tuples from a table (without duplicates) vmerged False // A variable that indicates whether there was a merger of two tuples at least. // Tnew(i) corresponds to a block of T. Each block of T may contain duplicates or not (i=1; n blocks). a, b: tuples x=0 numberofiteration = h a retrieve a tuple from T L.add (a) // add a to the temporary list of tuples L lengthl=1 For each tuple t from T do b t m Match(a, b) While (m= True) do a Merge(a, b) b retrieve tuple from T m Match(a, b) end While vmerged addtothelistl(a, L, Tnew(i)) a b end For L.add (a) if (vmerged=true) T Union (Tnew(i)) // i=1; b else if (vmerged= False) and (x<numberofiteration) //each block is disjoint from the other T createtables(tnew(i), i, T) // Treatment is the same on the new table T Result of mixture blocks x++ end if Tprim= Union (Tnew(i)) // i=1; n return Tprim End Algorithm MFB 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 28
Appendix 4: Used methods in MFB algorithm addtothelistl (tuple t, List L, Table Tnew(i)) //Allows to add merged tupled to a list L or to tables Tnew 1 until Tnew n. For all int j, j from 0 to lengthl Do if (Match(t, L[j]) then L[j]=Merge(t, L[j]) vmerged=true end if if (lengthl lmax) then L.add (t) lengthl++ else Tnew(i) L // if size of L exceeds a fixed length so add L to Tnew(i) and reset L. i++ L = Ø L.add (t) end if end For return vmerged End addtothelistl createtables (Table Tnew(i), int i, Table S) //Creates a new table S which contains the tuples of all tables Tnew(i) in some order. a: tuple of S p: number of tuples of Tnew(i) For all int j, j from 0 to p Do For all int k, k from 0 to i Do a Tnew(k)[j] add(a, S) end For end For End createtables 24/06/2013 FVDM2013, 24-25 Juin 2013, Paris- France 29