← Tous les articles

Fuzzy Matching pour les adresses : détecter les doublons malgré les fautes

Également disponible en:DeutschEnglishEspañol
La correspondance approximative d'adresses trouve les doublons malgré des orthographes différentes

Deux enregistrements, la même personne, mais l'ordinateur ne les reconnaît pas. « Jean Dupont, 12 rue Principale » et « J. Dupont, 12 r. Principale » sont manifestement identiques pour un être humain. Pour une comparaison caractère par caractère, ce sont deux entrées totalement différentes.

C'est précisément le problème que résout le fuzzy matching. Au lieu d'exiger une correspondance exacte, il calcule un degré de similitude entre deux chaînes de caractères. Le résultat n'est pas un simple oui ou non, mais un pourcentage : 95 % de similitude, 72 %, 41 %. Au-delà d'un seuil défini, une paire est considérée comme doublon.

Pour les entreprises qui traitent régulièrement des données d'adresses, le fuzzy matching n'est pas un luxe. C'est la différence entre un taux de détection de doublons de 20 % (comparaison exacte) et de 85 % ou plus.

Ce qui distingue le fuzzy matching de la comparaison exacte

Une comparaison exacte fonctionne de manière binaire : deux chaînes sont identiques ou ne le sont pas. Cela fonctionne tant que les données sont parfaitement tenues, ce qui n'arrive jamais en pratique.

Comparaison exacte :
"Jean Dupont"     vs. "Jean Dupont"      → Correspondance ✓
"Jean Dupont"     vs. "Jean Dupon"       → Pas de correspondance ✗
"Jean Dupont"     vs. "jean dupont"      → Pas de correspondance ✗
"Jean Dupont"     vs. "Jean  Dupont"     → Pas de correspondance ✗ (double espace)

Le fuzzy matching calcule un score de similitude :

Fuzzy matching :
"Jean Dupont"     vs. "Jean Dupon"       → 93 % de similitude → Doublon
"Jean Dupont"     vs. "jean dupont"      → 100 % (après normalisation)
"Jean Dupont"     vs. "Jean  Dupont"     → 95 % → Doublon
"Jean Dupont"     vs. "Marie Martin"     → 32 % → Pas un doublon

L'avantage décisif : le fuzzy matching détecte les fautes de frappe, les variantes orthographiques, les abréviations et les différences de format – exactement les erreurs qui se produisent en masse dans les bases de données d'adresses réelles.

Les cinq algorithmes les plus importants

Derrière le terme fuzzy matching se cachent plusieurs algorithmes qui calculent la similitude de différentes manières.

Distance de Levenshtein

L'algorithme le plus connu compte le nombre minimum d'opérations élémentaires (insertion, suppression, remplacement) nécessaires pour transformer une chaîne en une autre.

"Dupont" → "Dupon"
Étape 1 : t → (Suppression)
Distance : 1

"rue Principale" → "r. Principale"
Étape 1 : u → . (Remplacement)
Étape 2 : e → (Suppression)
Étape 3 : _ → (Suppression de l'espace)
Distance : 3

La distance est convertie en score de similitude : 1 - (distance / longueur de la chaîne la plus longue). Pour « Dupont » (6 caractères) et « Dupon » (5 caractères), cela donne 1 - 1/6 = 83 %.

Force : Intuitif, détecte les fautes de frappe de manière fiable. Faiblesse : Traite toutes les positions de la chaîne de la même façon.

Similitude de Jaro-Winkler

Cet algorithme a été conçu spécifiquement pour la comparaison de noms de personnes. Il prend en compte le nombre de caractères correspondants et leur ordre. L'extension Winkler ajoute un bonus lorsque les premiers caractères correspondent.

Exemples Jaro-Winkler :
"Dupont"  vs. "Dupond"   → 94 % de similitude
"Meier"   vs. "Meyer"    → 93 % de similitude
"Stéfan"  vs. "Stéphan"  → 91 % de similitude
"Pierre"  vs. "Paul"     → 52 % de similitude

Force : Particulièrement précis pour les chaînes courtes comme les prénoms et noms de famille. Faiblesse : Moins adapté que Levenshtein pour les chaînes longues comme les adresses complètes.

Comparaison par N-Grammes

Cette approche découpe les deux chaînes en fragments de longueur fixe (N-grammes) et compare le recouvrement.

Bi-grammes (N=2) de "Dupont" :
{Du, up, po, on, nt}

Bi-grammes de "Dupond" :
{Du, up, po, on, nd}

Bi-grammes communs : {Du, up, po, on} = 4
Union : {Du, up, po, on, nt, nd} = 6
Similitude de Jaccard : 4/6 = 67 %

Force : Robuste face aux transpositions et réarrangements. S'adapte bien aux grands volumes de données. Faiblesse : Peu significative pour les chaînes très courtes.

Algorithmes phonétiques (Soundex et phonétique de Cologne)

Les algorithmes phonétiques convertissent les chaînes en codes sonores. Les noms qui se prononcent de façon similaire reçoivent le même code, quelle que soit l'orthographe.

Soundex :
"Dupont"  → D153
"Dupond"  → D153
→ Même code malgré l'orthographe différente

Phonétique de Cologne (optimisée pour l'allemand) :
"Mueller" → 657
"Müller"  → 657
→ Traités comme identiques

Force : Détecte des variantes que les algorithmes textuels manquent. Faiblesse : Ne fournit qu'un résultat oui/non, pas de score de similitude.

Comparaison pondérée TF-IDF

Cette approche accorde plus de poids aux composants rares d'une adresse. Une correspondance sur un nom de famille rare est un signal plus fort qu'une correspondance sur « Dupont » ou « Martin ».

ComposantFréquencePoids
« Martin » (nom)Très fréquentFaible
« Zbigniew » (prénom)RareÉlevé
« rue des Châtaigniers »MoyenMoyen
« 12a » (numéro)Standard

Force : Réduit considérablement les faux positifs pour les noms courants. Faiblesse : Nécessite une base de référence pour le calcul des fréquences.

Comment le fuzzy matching fonctionne concrètement sur les adresses

En pratique, le fuzzy matching n'est pas appliqué à l'adresse entière comme une seule chaîne. Chaque champ est comparé séparément, et les résultats individuels sont combinés en un score global.

Enregistrement A : Jean Dupont | 12 rue Principale | 75001 Paris
Enregistrement B : J. Dupond | 12 r. Principale | 75001 Paris

Comparaison par champ :
Prénom :       "Jean" vs. "J."              → Jaro-Winkler : 70 %
Nom :          "Dupont" vs. "Dupond"        → Levenshtein : 83 %, Phonétique : Match
Rue :          "rue Principale" vs. "r. Principale" → Normalisé : 100 %
Numéro :       "12" vs. "12"               → Exact : 100 %
Code postal :  "75001" vs. "75001"          → Exact : 100 %
Ville :        "Paris" vs. "Paris"          → Exact : 100 %

Score global pondéré :
(70 % × 0,15) + (83 % × 0,30) + (100 % × 0,20) + (100 % × 0,15) + (100 % × 0,15) + (100 % × 0,05)
= 10,50 + 24,90 + 20,00 + 15,00 + 15,00 + 5,00
= 90,40 % → Au-dessus du seuil (80 %) → Doublon détecté

Types d'erreurs fréquents et comment le fuzzy matching les gère

Type d'erreurExempleAlgorithme adapté
Abréviationsr. vs. rue, av. vs. avenueNormalisation (dictionnaire)
Fautes de frappe« Schmdit » au lieu de « Schmidt »Levenshtein
Variantes de prénoms« Jean » vs. « Jean-Pierre »Jaro-Winkler + liste de surnoms
Ordre des champs« Dupont, Jean » vs. « Jean Dupont »N-Gramme + parsing
Champs manquantsCode postal présent, ville absenteComparaison pondérée
Variantes phonétiques« Dupont » vs. « Dupond »Algorithmes phonétiques
Encodage« Müller » vs. « Mueller »Normalisation + phonétique

Les systèmes professionnels combinent plusieurs de ces algorithmes : normalisation d'abord, puis fuzzy matching champ par champ avec un score global pondéré.

Choisir le bon seuil

Le seuil détermine à partir de quel degré de similitude deux enregistrements sont considérés comme doublons.

Trop bas (ex. 60 %) : Beaucoup de doublons détectés, mais aussi beaucoup de faux positifs.

Trop élevé (ex. 95 %) : Seuls les doublons évidents sont trouvés, les variantes subtiles passent à travers.

Recommandation pratique : Commencez à 80 % et vérifiez manuellement 50 à 100 résultats. Ajustez selon le rapport entre taux de détection et faux positifs.

Impact du seuil sur 10 000 enregistrements :

Seuil    | Doublons trouvés | Faux positifs | Doublons manqués
95 %     | 120              | ~2 %          | ~40 %
85 %     | 280              | ~5 %          | ~15 %
80 %     | 350              | ~8 %          | ~8 %
70 %     | 520              | ~20 %         | ~3 %

Un seuil autour de 80 % offre le meilleur compromis pour la plupart des cas d'usage.

Pourquoi les tableurs ne suffisent pas pour le fuzzy matching

Excel propose les fonctions EQUIV et NB.SI pour la recherche exacte de doublons. Le fuzzy matching n'est possible qu'avec des solutions de contournement comme des macros VBA.

Les limites des tableurs :

Pour les listes de moins de 500 entrées, une approche manuelle dans Excel peut fonctionner. Au-delà de 1 000 enregistrements, cela devient impraticable. Pour en savoir plus, consultez notre article Supprimer les adresses en double dans Excel.

Des outils spécialisés comme ListenFix implémentent tous les algorithmes de fuzzy matching courants et les combinent automatiquement. Le traitement s'effectue localement sur votre ordinateur, sans transmettre de données d'adresses à des serveurs externes. Conforme au RGPD, avec validation des codes postaux pour 29 pays et détection des ménages en complément de la déduplication classique.

Le fuzzy matching en pratique : trois scénarios

Scénario 1 : Nettoyage annuel du CRM

Une entreprise de taille moyenne avec 25 000 adresses clients effectue un nettoyage annuel. Taux de doublons typique : 8 à 12 %.

Exemple de calcul : Avec 10 % de doublons et un publipostage à 0,28 EUR par envoi, la déduplication économise 2 500 × 0,28 EUR = 700 EUR par campagne. Avec quatre campagnes par an, cela représente 2 800 EUR, sans compter les retours et l'irritation des clients.

Scénario 2 : Fusion de deux bases de données

Après une fusion d'entreprises, deux systèmes CRM doivent être consolidés. Sans fuzzy matching, des milliers de doublons fantômes apparaissent et perturbent les ventes et le marketing pendant des années.

Scénario 3 : Vérification en temps réel à la saisie

Chaque nouvelle adresse est comparée à la base existante en temps réel. Cela empêche la création de doublons dès le départ – l'approche la plus efficace, mais techniquement la plus exigeante.

Pour en savoir plus sur les méthodes adaptées à chaque cas, consultez notre aperçu Détecter les doublons : 7 méthodes pour des données propres.

Comment démarrer avec le fuzzy matching

Le fuzzy matching ne nécessite pas d'expertise spécialisée, mais il exige les bons outils. Les étapes clés pour commencer :

  1. Normaliser vos données : Avant d'appliquer le fuzzy matching, uniformisez le format de vos données. Développez les abréviations, standardisez les caractères spéciaux, nettoyez les espaces.

  2. Choisir le bon algorithme : Pour les noms de personnes, Jaro-Winkler est le plus adapté. Pour les noms de rues et les chaînes longues, Levenshtein est préférable. L'idéal est de combiner plusieurs algorithmes.

  3. Calibrer le seuil : Commencez à 80 % et vérifiez manuellement 50 à 100 résultats. Ajustez jusqu'à trouver l'équilibre entre taux de détection et faux positifs.

  4. Vérifier les résultats : Aucun algorithme n'est parfait. Prévoyez du temps pour un contrôle par échantillonnage, surtout lors du premier passage.

  5. Répéter régulièrement : La qualité des données n'est pas un projet ponctuel. Planifiez au minimum un nettoyage annuel, idéalement complété par une vérification en temps réel à la saisie.

L'effort en vaut la peine. Des données d'adresses propres signifient moins de retours, des analyses plus précises et une communication client plus professionnelle – à chaque envoi.

Nettoyez vos adresses — essayez maintenant

ListenFix détecte nettement plus de doublons qu'Excel grâce au fuzzy matching. 100% hors ligne, conforme au RGPD.

Essayer gratuitement