Un algorithme de déduplication pour les bases et entrepôts de données



Documents pareils
Vers une approche Adaptative pour la Découverte et la Composition Dynamique des Services

Thèse de doctorat de l Université Paris 13 dans le cadre d une Cifre avec l entreprise Talend. Spécialité Informatique.

TP Bases de données réparties

Entreposage de données complexes pour la médecine d anticipation personnalisée

Langage SQL : créer et interroger une base

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Differential Synchronization

Une méthode d apprentissage pour la composition de services web

OASIS Date de publication

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Entrepôt de données 1. Introduction

A QUOI SERVENT LES BASES DE DONNÉES?

Big Data et Graphes : Quelques pistes de recherche

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Techniques d analyse et de conception d outils pour la gestion du processus de segmentation des abonnés des entreprises de télécommunication

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Recherche dans un tableau

Le Langage SQL version Oracle

REMOTE DATA ACQUISITION OF EMBEDDED SYSTEMS USING INTERNET TECHNOLOGIES: A ROLE-BASED GENERIC SYSTEM SPECIFICATION

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Devoir Data WareHouse

Les bases de données

Bases de Données relationnelles et leurs systèmes de Gestion

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

OpenPaaS Le réseau social d'entreprise

Lamia Oukid, Ounas Asfari, Fadila Bentayeb, Nadjia Benblidia, Omar Boussaid. 14 Juin 2013

Le langage SQL Rappels

Les simulations dans l enseignement des sondages Avec le logiciel GENESIS sous SAS et la bibliothèque Sondages sous R

Définition et diffusion de signatures sémantiques dans les systèmes pair-à-pair

Créer un référentiel client grâce à Talend MDM

Préparer un état de l art

Big Data et Graphes : Quelques pistes de recherche

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Analyses croisées de sites Web pour détecter les sites de contrefaçon. Prof. Dr. Olivier Biberstein

Principe de symétrisation pour la construction d un test adaptatif

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Notes de cours : bases de données distribuées et repliquées

27 janvier Issam El Hachimi Ludovic Schmieder

UML et les Bases de Données

Algorithmique & programmation

Bases de données et sites WEB Licence d informatique LI345

Talend Technical Note

TRS: Sélection des sous-graphes représentants par l intermédiaire des attributs topologiques et K-medoïdes

Bases de Données Relationnelles. Le Modèle Relationnel

I4 : Bases de Données

A QUOI SERVENT LES BASES DE DONNÉES?

Chapitre 1 : Introduction aux bases de données

Une proposition d extension de GML pour un modèle générique d intégration de données spatio-temporelles hétérogènes

RAPID Prenez le contrôle sur vos données

Formula Negator, Outil de négation de formule.

Bases de Données. Plan

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Intégrité des données

Le stockage local de données en HTML5

Bases de données relationnelles

RI sociale : intégration de propriétés sociales dans un modèle de recherche

Classification Automatique de messages : une approche hybride

Exercices sur SQL server 2000

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Bases de Données Avancées

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Datawarehouse and OLAP

Forthcoming Database

Grégoire de Lassence. Copyright 2006, SAS Institute Inc. All rights reserved.

Spécificités, Applications et Outils

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Du 10 Fév. au 14 Mars 2014

The new consumables catalogue from Medisoft is now updated. Please discover this full overview of all our consumables available to you.

Compte-rendu de projet de Système de gestion de base de données

ACTIVITÉ DE PROGRAMMATION

Chapitre 10. Architectures des systèmes de gestion de bases de données

Les BRMS Business Rules Management System. Groupe GENITECH

Optimisation SQL. Quelques règles de bases

Application de K-means à la définition du nombre de VM optimal dans un cloud

THÈSE. présentée à TÉLÉCOM PARISTECH. pour obtenir le grade de. DOCTEUR de TÉLÉCOM PARISTECH. Mention Informatique et Réseaux. par.

Application web de gestion de comptes en banques

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Les bases de données Page 1 / 8

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Cours Base de données relationnelles. M. Boughanem, IUP STRI

4. Groupement d objets

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Généralités sur les confirmations de produits dérivés OTC

Bases de données cours 1

Rappel sur les bases de données

Programmer en JAVA. par Tama

Initiation à la programmation en Python

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Évaluation d une architecture de stockage RDF distribuée

Scénarios économiques en assurance

Bases de données avancées

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Plan global Outils de développement et compilation. Ce que l on veut éviter. Plan. Git : gestion de code source et versionnement.

Transcription:

Un algorithme de déduplication pour les bases et entrepôts de données Faouzi Boufarès *, Aïcha Ben Salem *,**, Sebastiao Correia ** Laboratoire LIPN - UMR 7030 CNRS, Université Paris 13, Av. J. B. Clement 93430 Villetaneuse France * {boufares, bensalem}@lipn.univ-paris13.fr Société Talend, Av. Pagès 92150 Suresness France ** {abensalem, scorreia}@talend.com RÉSUMÉ. La déduplication des données est une étape très importante dans le processus d'intégration de données hétérogènes. Elle assure une meilleure qualité pour les données résultats. Ainsi, l'extraction de connaissances à partir de ces dernières sera plus précise. Nous présentons dans cet article, un algorithme séquentiel pour l élimination des données similaires. Celui-ci est basé sur les fonctions Match et Merge que nous avons définies. La fonction Match repose sur le calcul de distance de similarité en fonction du type de données. Tandis que la fonction Merge utilise des règles logiques pour fusionner les données. Nous évaluons expérimentalement différentes versions d implémentation de notre algorithme en utilisant un jeu de données généré aléatoirement. ABSTRACT. Data deduplication is a very important step in the process of integration of heterogeneous data. It ensures a better quality of data results. Thus, the extraction of knowledge from these data is more accurate. We present in this paper, a sequential algorithm to eliminate similar data. This algorithm is based on the Match and Merge functions that we have defined. The match function is based on calculations of similarity distances depending on the type of data. The Merge function uses logical rules. We experimentally evaluate different versions of the implementation of our algorithm using a random generated data. MOTS-CLÉS : Qualité des données, Distance de similarité, Elimination des similaires, Déduplication, Match, Merge. KEYWORDS: Data Quality, Similarity Distance, Similar Data Elimination, Deduplication, Match, Merge.

1. Introduction De nos jours les travaux sur l'extraction et la gestion de connaissance à partir de gros volumes de données (contenus dans un entrepôt issu de sources hétérogènes et distribuées), se basent principalement sur la recherche d'informations potentiellement utiles et jusque-là inconnue. La qualité de l'information recueillie dépend de ces données (Berti-Équille, 2006). Une bonne qualité des données stockées dans les bases et entrepôts de données (BDs et EDs), est devenue une nécessité absolue dans une organisation. Contrairement à ce que l on peut penser, les données rassemblées aujourd'hui dans les BDs et EDs, contiennent de nombreux problèmes tels que les données similaires, les doublons, les valeurs aberrantes, les valeurs nulles. Il s ensuit une mauvaise qualité des données pour des fins décisionnelles (Boufarès et al,, 2011). Les conséquences de la non-qualité des données peuvent être très coûteuses. Par conséquent, il est important de nettoyer les données (éliminer les doublons et les similaires) dans un délai raisonnable. Le problème de l'élimination des données similaires est très difficile (Bilenko et al,, 2003), (Cohen et al,, 2004). Il s'agit de vérifier la correspondance des données (Match) et ensuite de les fusionner (Merge). Nous proposons dans ce papier un algorithme, inspiré de (Benjalloun et al,, 2009), pour détecter, supprimer ces doublons et enrichir en information les enregistrements restants. L'objectif de notre algorithme est de dédoublonner les données provenant du processus d'intégration et de les enrichir afin de fournir aux utilisateurs des données de bonne qualité et plus complètes. Ce papier sera présenté comme suit. Dans la deuxième section, nous présentons le processus de comparaison et de fusion de données (les fonctions Match et Merge). L algorithme d'élimination des similaires ainsi que des mesures de performance entre différentes versions d implémentation seront présentés, dans les sections 3 et 4. Dans les sections suivantes, un bref aperçu sur les travaux connexes ainsi que nos travaux futurs sont abordés. 2. Le processus de comparaison et de fusion (Fonctions Match et Merge) L élimination de données similaires nécessite le développement de deux fonctions «Match» (Comparer) et «Merge» (fusionner) (Hernandez, 1998). La fonction Match permet de définir si deux tuples dans une table sont similaires et la fonction Merge génère un nouveau tuple en fusionnant les deux supposés similaires. Différents algorithmes de calcul de distance de similarité existent dans la littérature tels que ceux de Levenshtein, de Jaro-Winkler, de Jaccard (Berti-Équille, 2006). Ces algorithmes sont utilisés dans le processus de comparaison. Introduisons à présent quelques notations. Une table T(A 1...A n ) est interprétée par l'ensemble [[T]] de tous les {A 1...A n }-tuples sur [[D k ]] k=1,n avec A={A 1...A n } l ensemble des attributs de T. [[D k ]] est l'ensemble de valeurs concrètes d'un tuple de données tels que les chaînes de caractères alphanumériques (String), les numériques

(Number), les dates, les booléens (Boolean) ou encore des listes et des intervalles de valeurs. [[T]] est l'ensemble des fonctions t : {A 1...A n } [[D k ]] k=1,n, tel que t(a k ) noté t.a k est un élément de [[D k ]]. Chaque élément t de [[T]] est un tuple de la table T et chaque t.a k est une valeur de l'attribut dans t, que l on notera aussi v k. Définition 1 : Similarité entre valeurs (notée ) Pour un attribut A k, on note t.a k t'.a k (ou v v'), ssi d k s k, avec d k la distance calculée de similarité et s k est le seuil fixé par l utilisateur (s k [0,1], s k S, k=1..n). Exemple 1: Adr 1 t 1.Adr et Adr 2 t 2.Adr ; Nom 1 t 1.Nom et Nom 2 t 2.Nom ; Mail 1 t 1.Mail et Mail 2 t 2.Mail ; Tél 1 t 1.Tél et Tél 2 t 2.Tél. Les deux adresses suivantes Adr 1 = "20 BOULEVARD CHAMPS ÉLYSÉES PARIS" et Adr 2 = "20 BOULEVARD CHAMPS-ELYSÉES 75008 PARIS" sont similaires, selon la méthode de Jaro-Winkler car la distance calculée d est de 0,051 inférieure à un seuil fixé s=0,2. Définition 2 : Règle de similarité Une règle r de similarité est une conjonction de similarités qui portent sur des attributs A k (k=1,n) de l ensemble A de la table T. r= p=1.n (t.a k t'.a k ) : r=(t.a 1 t'.a 1 ) (t.a 2 t'.a 2 ) (t.a n t'.a n ) Exemple 2 : Deux règles de similarités r 1 et r 2 : r 1 = (Mail 1 Mail 2 ) (Tél 1 Tél 2 ) r 2 = (Nom 1 Nom 2 ) (Mail 1 Mail 2 ) (Adr 1 Adr 2 ). Définition 3 : Similarité entre tuples Deux tuples t et t' sont similaires ssi la disjonction de toutes les règles de similarité définies sur T est vraie. On note t t' ssi j=1.q (r j ) = vrai avec r j une règle de similarité définie sur les attributs de A. t t' ssi r 1 r 2... r k r q (q étant le nombre de règles de similarité) Exemple 3 : Deux tuples t 1 et t 2 sont similaires ssi r 1 r 2 : t 1 t 2 ssi [(Nom 1 Nom 2 ) (Mail 1 Mail 2 ) (Adr 1 Adr 2 )] [(Mail 1 Mail 2 ) (Tél 1 Tél 2 )]. REMARQUE. Ces règles peuvent présenter toutefois des incohérences ou des contradictions. L étude de leur cohérence globale ou leur simplification ne fait pas l objet de cet article. La fonction Match compare deux tuples. L étude de similarité porte sur les attributs de l ensemble A selon les règles de similarité. La fonction Similar(v 1,v 2, s i ) prend en paramètre deux valeurs (v 1 t 1.A i et v 2 t 2.A i ) et s i un seuil fixé par l utilisateur pour A i. Une méthode de calcul de distance de similarité est appliquée telle que Jaro-Winkler. La distance trouvée d i est comparée au seuil s i. La fonction Merge traite deux tuples, supposés similaires. Elle retourne un nouveau tuple t' qui apporte «plus» d information à partir de chaque valeur (v) résultant de la fusion: v:=merge(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 les attributs de l ensemble A.

Une implémentation personnalisée de la fonction Merge permet d associer deux valeurs selon le type de données de l attribut en question: (i) si l attribut est du type chaîne de caractères, expr présente la plus longue chaîne des deux, si celle-ci vérifie un ensemble d expressions régulières proposé pour l utilisateur. La fusion d une chaîne quelconque avec une valeur nulle (NULL) donne la chaîne elle-même ; (ii) si l attribut est du type numérique, la fusion peut correspondre à des calculs demandés par l utilisateur tels que la somme, la moyenne, le minimum ou le maximum des valeurs. Des transformations peuvent être réalisées telles que des conversions dues à des changements d unité. Les valeurs nulles sont considérées égales à 0 ; (iii) si l attribut est du type date, la fusion peut permettre de garder la plus récente des deux, selon le choix de l utilisateur, après avoir unifié les formats et vérifié leurs validités. 3. Elimination des similaires Le croisement de tous les tuples d une table est le principe de base pour l élimination des données similaires. Il s agit d algorithme très coûteux pour de gros volumes de données. L idée est de réduire le nombre de comparaisons en fusionnant les données qui concordent et de ne conserver que le tuple dominant pour les prochaines comparaisons. L originalité de notre travail consiste à faire simultanément les comparaisons et les fusions. Nous avons développé précédemment deux algorithmes inspirés de (Benjalloun et al,, 2009). Afin d améliorer les performances de nos précédents algorithmes, nous présentons dans ce qui suit, un troisième algorithme dont le principe de fonctionnement est le suivant. Afin de réduire le nombre de comparaisons, l algorithme (voir annexe) se base sur la notion des attributs clés («features») pour éliminer des similaires. Cet algorithme utilise, outre les ensembles I (ensemble de tuples départ) et I' (les tuples résultats), deux ensembles de données P f (positifs) et N f (négatifs) pour garder trace des valeurs des attributs clés déjà rencontrées, et enregistrer les comparaisons redondantes positives et négatives. P f sauvegarde toutes les valeurs précédemment rencontrées de l attribut clé d élimination et lui associe l identifiant de tuple auquel il appartient. Le tuple t est soit le premier enregistrement pour lequel la valeur v est apparue pour l attribut clé fi, ou celui qui a été dérivé à partir d une séquence de fusions des tuples. Si ce tuple n existe pas (la valeur v, de l attribut clé, est vue pour la première fois), P fi (v) retourne Null. Cependant, il ne peut y avoir au plus qu un tuple associé à la valeur v d un attribut fi. Dans le cas où plusieurs tuples sont présents, ces derniers sont fusionnés dans le tuple renvoyé par P fi (v). N f est l ensemble qui conserve les valeurs des attributs clés f i qui ont été comparées avec toutes les valeurs des attributs pour les tuples de I' et ne correspond à aucun d'entre eux. On évite alors des comparaisons redondantes dont la fonction Match aurait renvoyé une valeur négative. Si le tuple en cours de traitement par l'algorithme, a une valeur v qui apparaît dans N fi, cette valeur n'a pas besoin d'être davantage comparée. Quand un nouveau tuple t est traité par l'algorithme, ce dernier

sauvegarde, tout d'abord dans P fi toutes les valeurs de chaque nouvel attribut, puis vérifie si l'une de ces valeurs est déjà parue dans un tuple différent (en vérifiant son identifiant). Les paires de valeurs des attributs clés P(f,v) qui correspondent, sont immédiatement dirigées vers le processus de la fusion des tuples, et ne sont jamais comparées de nouveau, tandis que les autres paires qui ne correspondent pas sont ajoutées à N fi, et de cette façon on garantit qu elles ne seront jamais comparées à nouveau. Exemple 4: Pour deux attributs Nom et Prénom, les structures P et N à gérer, présentées dans le tableau 2, sont (P Nom, P Prenom, N Nom et N Prenom ): P N Nom RowIdN OccN Prenom RowIdP OccP Nom Prenom RowIdT Le Bon t1 4 Adam t1 3 Le Bon Adam t1 Le B. t5 1 Adem t5 1 Dupond Jérémy t2 Dupond t2 3 Jérémy t2 2 Dupont t8 1 Jeremy t8 1 Tableau 1. Echantillon de l ensemble de données P fi et N fi Plusieurs versions de cet algorithme ont été développées selon les structures de P et N. Ainsi P et N peuvent être aussi bien des listes gérées en mémoire vive que des tables gérées par un SGBD. Il est aussi possible d utiliser soit une table par attribut clé, soit une table pour tous les attributs clés à la fois. Le partitionnement des tables est alors appliqué pour gérer de gros volumes de données. Nous avons apporté quelques modifications à la version donnée dans le papier (Benjalloun et al,, 2009) afin de traiter différents cas de figure. Parmi ces modifications, lors de la fusion des deux tuples (t, t ), les valeurs des attributs de t existent déjà dans les ensembles de données N f, il faut donc les mettre à jour de la même manière que ceux de P f. L implémentation des différentes versions de notre algorithme est faite en JAVA en utilisant des listes ou des tables sous SGBD Oracle 10g. Plusieurs versions existent pour gérer de gros volumes de données. La complexité de cet algorithme réside dans l utilisation des deux ensembles P f et N f. Nous vérifions et comparons les taux d élimination pour chacun des algorithmes. 4. Mesure de performances de l algorithme Les mesures de performance sont effectuées sur trois versions de notre algorithme présenté en annexe, sur des données générées aléatoirement en utilisant GenerateData 1. Nous avons ainsi généré et inséré des doublons dans notre jeu de test. Notre table de test CLIENT a la description SQL suivante : «CREATE TABLE CLIENT (PRENOM varchar2(100), NOM varchar2(100), RUE varchar2(100), CP varchar2(10), VILLE varchar2(50), DATNAIS Date, TEL varchar2(100) ) ;» 1 http://www.generatedata.com/#generator

Les attributs Prenom, Nom, DatNais et Tel ont été choisis pour l élimination des similaires. Les algorithmes Jaro-winkler, Levenshtein et Jaccard ont été utilisés pour le calcul de la distance de similarité. Un seuil a été fixé pour chacun des attributs respectivement (0,2 ; 0,2 ; 0 ; 0,1). L utilisateur peut demander l enrichissement de ses données afin d éliminer, d une part, d éventuelles valeurs nulles, et d autre part de regrouper ou corriger certaines informations. Par exemple, dans la mesure où l on veut avoir plusieurs numéros de téléphone pour un même client, la définition de l attribut concerné (résultat de la fusion) devrait être suffisamment élargie, selon une règle métier, pour mettre x valeurs (Tel varchar2(100) au lieu de Tel varchar2(10)). Deux règles de similarité entre tuples ont été utilisées pour réaliser la fusion (Merge) : R ules = r 1 r 2 où r 1 : d 1 s 1 d 2 s 2 d 7 s 7 ; r 2 : d 2 s 2 d 6 s 6 Différentes mesures ont été effectuées sur des tables allant de 10 3 à 10 6 lignes. Notre jeu de données contient 40% de similaires et de doublons. Les trois versions testées sont respectivement Version 1 (P et N des listes JAVA), Version 2 (P et N des tables Oracle) et Version 3 (P et N dans une même table). Les mesures de performance (figure 1) montrent que la version de l algorithme, qui utilise les listes pour P et N, est plus performante que les deux autres (des limitations de mémoire à prévoir pour un nombre plus grand de tuples). Tandis que la version que nous avons voulu optimiser en regroupant les deux tables P et N n améliore pas vraiment le temps de réponse, et que la version avec deux tables P et N reste plus performante. Figure 1. Performances de l algorithme selon ces trois versions 5. Travaux connexes Plusieurs travaux sur l'élimination des données similaires et des doublons existent dans la littérature (Benjalloun, 2009), (Cohen, 2004), (Bilenko, 2003), (Hernandez, 1998). La fonction Match utilise des règles de décision portant sur les n attributs. Il existe deux types de décision : (i) dichotomique (similaires ou non) c est notre cas;

ou (ii) trois réponses (similaires ou non et besoin de plus de révision) (Sarawagi, 2006). Aussi notre fonction Match est basée sur des valeurs d'attributs, tandis que d'autres utilisent le concept de contexte (Köpcke, 2006). Plusieurs approches existent pour fusionner différents tuples telles que celles basées sur les règles ou sur les workflows ou encore les approches numériques. Concernant les approches basées sur les règles, la fusion se fait selon une combinaison logique des conditions de correspondance, alors que celles basées sur les workflows permettent des combinaisons aléatoires (Köpcke, 2006). 6. Conclusion Actuellement, un grand nombre d applications utilisent des données hétérogènes et distribuées de qualité variable. Le besoin d'intégration de données et d'évaluation de la qualité des données se fait de plus en plus ressentir. Afin de redonner d avantage de sens dans les données rassemblées, nous abordons la problématique complexe de l élimination de similaires dans les ED. En effet, le développement de nouveaux outils pour traiter les données similaires nécessite l approfondissement, d une part, des deux concepts de base Match & Merge, et d autre part, le développement d autres algorithmes pour parcourir et comparer les données dans des environnements séquentiels et parallèles. Les types de données traités dans notre étude sont les types caractère, numérique, date et logique. La concordance des données se fait selon des règles proposées par l utilisateur. Notre algorithme, séquentiel, réalise le Match & Merge parallèlement. Les performances sont à améliorer pour les données volumineuses. Le choix des règles de similarité sera automatisé. De nouvelles méthodes de calculs de distance de similarité pour des types de données complexes sont à développer ainsi que l automatisation du choix entre elles. Tels sont les objectifs que nous nous fixons dans nos travaux futurs. 7. Bibliographie 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. 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. 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. Boufarès, F., A. Ben-Salem, «Heterogeneous data-integration and data quality: Overview of conflicts», Sciences of Electronic, Technologies of Information and Telecommunications (SETIT 11), Sousse, Tunisie, 2011.

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. Hamdoun, S., Boufarès, F., «Un formalisme pour l'intégration de données hétérogènes», 6ème journées Francophones sur les entrepôts de données et l'analyse en ligne (EDA'10), Djerba-Tunisie, 2010, pp. 107-119. 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. Köpcke, H., Rahm, E., «Frameworks for entity matching: A comparison», Data Knowledge Engineering (DKE 09), 2009, pp. 197 210. Sarawagi, S., Bhamidipaty, A., «Interactive Deduplication using Active Learning», Proceedings The 8th ACM International Conference on Knowledge Discovery and Data Mining (SIGKDD 02), Alberta, Canada, 2002, pp. 269-278. Annexe : Algorithme d élimination de similaires input : a set I of tuples, output : a set Iprim of tuples, Iprim P f empty hash table, for each feature f, N f empty set, for each feature f SaveTuples a set of tuples, Iprim Ø, currenttuple null while I Ø or currenttuple null if currenttuple = null then currenttuple a Tuple from I remove currenttuple from I buddy null for all(f, v) of currenttuple do if P f(v) = null then P f(v) currenttuple SaveTuples (currenttuple, rowid) endfor for all (f, v) of currenttuple do /*was any value previously encountered*/ if P f(v) currenttuple then /*we compare the value and the rowid*/ buddy SaveTuples(P f(v)); exitfor endfor if buddy = null then /*If not look for Matches*/ for all (f, v) of currenttuple do if v N f then/* if a value never made it to N f*/ for all t of Iprim do if Match (t,t ) then buddy t exitfor endfor if buddy null then exitfor add v to N f endfor if buddy = null then add currenttuple to Iprim currenttuple null else t Merge (currenttuple, buddy) remove buddy from Iprim /*update P*/ for all (f, v) where P f(v) {currenttuple, buddy} do P f(v) t endfor /*update N*/ for all (f, v) where N f(v) {currenttuple, buddy} do N f(v) t endfor currenttuple t endwhile return Iprim