Jeu de données
Dédoublonnage de contacts par trois modèles économiques
96 réponses brutes de modèles, 8 carnets générés par script avec leur vérité terrain, quatre niveaux de désordre. Test conduit le 2026-08-17.
Cette page décrit un jeu de données, publié en entier. C'est la matière première de notre mesure des fusions fausses en dédoublonnage de contacts : 8 carnets, quatre niveaux de désordre, trois modèles économiques, et les 96 réponses que ces modèles ont réellement rendues.
Tout ce qui est sur cette page vient de cette seule exécution. Rien n'est estimé.
Ce qu'il mesure, et ce qu'il ne prouve pas
Il mesure une chose précisément : combien de fois un modèle fusionne deux personnes différentes, et combien de fois il le fait sans rien qui enverrait un opérateur vérifier cette paire. Fusionner n'est pas lire une valeur : c'est trancher une identité. Un doublon oublié laisse deux lignes dans un fichier. Une fusion fausse détruit une ligne, et le fichier qui revient ne le dit pas.
Ce qu'il ne prouve pas, dit franchement, parce qu'un jeu de données cité sans ses limites fait plus de mal que pas de jeu de données du tout :
- Les carnets font 12 lignes chacun et tiennent entièrement dans la fenêtre du modèle. Un fichier de 5000 lignes impose un découpage, un blocage et une stratégie de comparaison, dont rien n'est mesuré ici.
- Le corpus est construit par script, pas collecté. Aucune personne réelle,
aucune société réelle, aucune adresse réelle. Les numéros sont pris dans la plage
555-01xx, réservée à la fiction, et les domaines de courriel sont sous le TLD réservé.example. - 96 lignes dans 8 carnets. Un test sur 8 carnets est un test sur 8 carnets.
- Une seule exécution par couple, à température 0. Des écarts de quelques points entre modèles ne sont pas significatifs ici. C'est la forme des erreurs qui tient.
- Une seule langue, l'anglais, et des noms latins uniquement. Les noms translittérés et les sociétés réellement homonymes sont un cas difficile connu, que ce corpus ne contient pas.
- Trois modèles d'entrée de gamme. Rien ici ne dit ce que feraient les plus chers.
Le corpus est construit, et voici ce que cela veut dire
Les 8 carnets ont été générés par script avec la graine fixe 20260817. C'est un
choix assumé, et il coupe dans les deux sens.
Ce qu'il achète : la vérité terrain d'un dédoublonnage est une partition, et elle n'est indiscutable que si c'est nous qui l'avons posée. N'importe qui peut régénérer exactement le même corpus et contester notre lecture. Ce qu'il coûte : ce ne sont pas de vrais contacts, et un vrai carnet porte des désordres que nous n'avons pas pensé à inventer.
Chaque carnet contient 3 paires de doublons à fusionner, 2 paires ressemblantes à laisser tranquilles, et 2 lignes seules. Toute paire de doublons partage au moins une clé forte, le courriel ou le téléphone, pour qu'il existe une seule bonne réponse défendable. Toute paire piège se distingue par au moins deux attributs dérivables du carnet lui-même. Un script de contrôle vérifie ces deux invariants, et l'absence de collision accidentelle, avant le moindre appel.
Test conduit le 2026-08-17. Cette page a été publiée le 2026-08-17. Les passes de dédoublonnage ont été conduites par la chaîne de test automatisée de ce site : le corpus, les appels aux modèles et l'analyse sont des scripts, et ils sont tous dans l'archive ci-dessous.
Chiffres bruts
Doublons retrouvés, et personnes fusionnées à tort
| Modèle | Doublons retrouvés | Pièges fusionnés à tort | Fusions fausses | dont silencieuses |
|---|---|---|---|---|
| openai/gpt-4o-mini | 87/96 | 43/64 | 46 | 33 |
| google/gemini-2.5-flash-lite | 92/96 | 31/64 | 32 | 25 |
| anthropic/claude-haiku-4.5 | 92/96 | 19/64 | 19 | 10 |
| Tous confondus | 271/288 | 93/192 | 97 | 68 |
Par niveau de désordre
| Niveau | Doublons retrouvés | Pièges fusionnés à tort |
|---|---|---|
| N1 propre | 64/72 | 16/48, soit 33,3 pour cent |
| N2 casse et espaces | 69/72 | 26/48, soit 54,2 pour cent |
| N3 formats de téléphone mélangés | 71/72 | 32/48, soit 66,7 pour cent |
| N4 colonnes fusionnées | 67/72 | 19/48, soit 39,6 pour cent |
Les quatre degrés du silence
| Degré | Ce que la note donne à un opérateur | Nombre |
|---|---|---|
| 1. aucune note | le champ notes est vide |
9 |
| 2. paire non nommée | une note existe mais ne cite pas les deux lignes fusionnées à tort | 17 |
| 3. nommée mais affirmée | la note cite les deux lignes sans la moindre réserve | 42 |
| 4. réellement signalée | la note cite les deux lignes et porte une marque de doute | 29 |
Les degrés 1, 2 et 3 sont comptés comme silencieux : 68 sur 97. Le lexique du doute
est publié en entier dans analyser.py et repris dans chiffres.json. Il est
volontairement généreux.
Quelle famille de pièges tombe
| Piège | Ce qui les rapproche | Fusionnés à tort |
|---|---|---|
| T1 | prénom et nom exactement identiques, deux sociétés | 43/72, soit 60 pour cent |
| T2 | même nom de famille, même société, même numéro de standard | 27/60, soit 45 pour cent |
| T3 | courriels presque identiques sur le même domaine | 23/60, soit 38 pour cent |
Deux homonymes exacts dans deux sociétés différentes pourraient être une seule personne ayant changé d'employeur, et le carnet ne tranche pas à cent pour cent. Sans cette famille : 50 fusions fausses sur 120, soit 41,7 pour cent.
La règle des clés fortes
Refuser toute fusion dont les deux lignes n'ont ni le même courriel, casse ignorée, ni le même numéro, chiffres seuls.
| Grandeur | Valeur |
|---|---|
| Fusions fausses bloquées | 70 sur 97 |
| Fusions fausses laissées passer | 27, toutes de la famille au standard partagé |
| Fusions justes bloquées | 0 sur 271, vrai par construction de ce corpus |
Totaux de l'exécution
| Grandeur | Valeur |
|---|---|
| Passes de dédoublonnage | 96 |
| Échecs techniques | 0 |
| Réponses JSON invalides | 0 |
| Coût total des appels | 0,06647 USD |
| Fusions fausses silencieuses | 68 |
Ce que contient l'archive
Sept fichiers, 309781 octets décompressés. L'inventaire est ici pour que vous sachiez ce que vous téléchargez avant de le télécharger.
| Fichier | Ce qu'il contient | Taille |
|---|---|---|
generer-corpus.py |
le générateur du corpus, graine fixe 20260817 | 13,4 Kio |
corpus.json |
les 8 carnets, leur vérité terrain, et la raison d'être de chaque paire | 40,6 Kio |
degrader.py |
les quatre niveaux de présentation | 3,6 Kio |
conduire-test.py |
les appels aux modèles et la comparaison de partitions | 8,1 Kio |
resultats-bruts.json |
les 96 réponses, brutes, avec la consigne employée | 213,3 Kio |
analyser.py |
le calcul de chacun des chiffres de cette page | 13,6 Kio |
chiffres.json |
les chiffres calculés | 10,0 Kio |
Les scripts et leurs commentaires sont en français, qui est la langue de travail derrière ce site. La clé d'API est lue dans une variable d'environnement et n'apparaît dans aucun de ces fichiers.
Rejouez-le
Le générateur emploie une graine fixe, donc le corpus que vous produisez est celui que nous avons employé.
unzip 2026-08-contact-deduplication.zip
cd 2026-08-contact-deduplication
python3 generer-corpus.py --graine 20260817 --sortie corpus.json
python3 conduire-test.py --corpus corpus.json --sortie resultats-bruts.json \
--niveaux 1 2 3 4 \
--modeles openai/gpt-4o-mini google/gemini-2.5-flash-lite anthropic/claude-haiku-4.5
python3 analyser.py --corpus corpus.json --resultats resultats-bruts.json \
--sortie chiffres.jsonChaque réponse brute est une entrée de resultats-bruts.json, avec les paires que le
modèle a rendues, lesquelles étaient justes, lesquelles étaient fausses, et ce que sa
note citait réellement :
{"modele": "openai/gpt-4o-mini", "carnet": "carnet-01", "niveau": 4,
"json_valide": true, "fusions_justes": [[3, 8], [6, 9], [7, 11]],
"fusions_manquees": [], "fusions_fausses": [[4, 5]],
"pieges_tombes": [[4, 5]], "note_vide": false,
"lignes_citees_par_la_note": [3, 4, 5, 6, 7, 8, 9, 11]}Vérifiez ce que vous avez téléchargé avant de lui faire confiance :
shasum -a 256 2026-08-contact-deduplication.zip
# 8c720688e23190aeeec361d6c25f6337c34c6d52f17e0891044d885bf055044eComment citer ce jeu de données
Copiez l'une des deux formes ci-dessous. La référence pointe vers cette page, qui est l'adresse stable de ce jeu de données ; l'archive est ce que cette adresse sert.
Think AI First (2026). Dédoublonnage de contacts par trois modèles économiques, 96 réponses brutes.
Think AI First. Test conduit le 2026-08-17, publié le 2026-08-17.
https://think-ai-first.com/fr/donnees/dedoublonnage-contacts-2026-08. Sous licence CC BY 4.0.@dataset{thinkaifirst2026dedoublonnage,
author = {{Think AI First}},
title = {Dédoublonnage de contacts par trois modèles économiques, 96 réponses brutes},
year = {2026},
publisher = {Think AI First},
url = {https://think-ai-first.com/fr/donnees/dedoublonnage-contacts-2026-08},
note = {Test conduit le 2026-08-17. Sous licence CC BY 4.0. SHA-256 de l'archive 8c720688e23190aeeec361d6c25f6337c34c6d52f17e0891044d885bf055044e}
}Licence et réutilisation
Publié sous CC BY 4.0. Servez-vous-en, citez-le, contredisez-le. Si vous le rejouez et obtenez autre chose, dites-le-nous par le formulaire de contact : les corrections sont publiées sur l'article lui-même, datées.
Télécharger le jeu de données (zip, 34,6 Kio, 7 fichiers)
Les autres jeux de données publiés ici
Chacun est un test distinct, avec son corpus, ses réponses brutes et son archive.
- Extraction de factures par trois modèles économiques, 288 réponses brutes, test conduit le 2026-08-10.
- Extraction des actions d'un compte rendu par trois modèles économiques, 96 réponses brutes, test conduit le 2026-08-18.