Question

J'ai plusieurs sources de tables avec des données personnelles, comme ceci:

SOURCE 1
ID, FIRST_NAME, LAST_NAME, FIELD1, ...
1, jhon, gates ...

SOURCE 2
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
1, jon, gate ...

SOURCE 3
ID, FIRST_NAME, LAST_NAME, ANOTHER_FIELD1, ...
2, jhon, ballmer ...

Donc, en supposant que les enregistrements portant l'ID 1, issus des sources 1 et 2, soient la même personne, mon problème consiste à déterminer si un enregistrement de chaque source représente la même personne . De plus, il est certain que tous les enregistrements n'existent pas dans toutes les sources. Tous les noms sont écrits en espagnol, principalement.

Dans ce cas, la correspondance exacte doit être assouplie, car nous supposons que les sources de données n'ont pas été vérifiées de manière rigoureuse par rapport au bureau officiel d'identification du pays. Nous devons également supposer que les fautes de frappe sont courantes , en raison de la nature des processus permettant de collecter les données. De plus, la quantité d’enregistrements est d’environ 2 ou 3 millions dans chaque source ...

Notre équipe avait pensé à quelque chose comme ceci: premièrement, forcer la correspondance exacte dans des champs sélectionnés tels que ID NUMBER et les NOMS pour savoir à quel point le problème peut être difficile. Deuxièmement, assouplissez les critères de correspondance et comptez le nombre d’enregistrements supplémentaires pouvant être comparés, mais c’est là que le problème se pose: comment faire pour assouplir les critères de correspondance sans générer trop de bruit ni restreindre trop?

Quel outil peut être plus efficace pour gérer cela?, par exemple, connaissez-vous une extension particulière dans un moteur de base de données pour prendre en charge cette correspondance? Connaissez-vous des algorithmes intelligents tels que soundex pour gérer cette correspondance approximative, mais pour les textes en espagnol?

Toute aide serait appréciée!

Merci.

Était-ce utile?

La solution

Le problème consiste à calculer une ou plusieurs mesures de distance entre chaque paire d'entrées, puis à les considérer comme identiques lorsque l'une des distances est inférieure à un certain seuil acceptable. L’essentiel est de configurer l’analyse, puis de faire varier la distance acceptable jusqu'à atteindre ce que vous considérez être le meilleur compromis entre faux positifs et faux négatifs.

Une mesure de distance pourrait être phonétique. Une autre solution envisageable est la Levenshtein ou la distance de modification entre les entrées pour tenter de mesurer les fautes de frappe. .

Si vous avez une idée raisonnable du nombre de personnes que vous devriez avoir, votre objectif est de trouver l'endroit idéal où trouver le nombre de personnes souhaité. Faites votre correspondance trop floue et vous aurez trop peu. Rendez-le trop restrictif et vous en aurez trop.

Si vous savez à peu près combien d'entrées une personne devrait avoir, vous pouvez l'utiliser comme métrique pour voir quand vous vous en approchez. Vous pouvez également diviser le nombre d’enregistrements en nombre moyen d’enregistrements pour chaque personne et obtenir un nombre approximatif de personnes pour lesquelles vous visez.

Si vous n'avez pas de chiffres à utiliser, il vous reste alors à sélectionner des groupes d'enregistrements dans votre analyse et à vérifier à la main s'ils ressemblent ou non à la même personne. Donc, devinez et vérifiez.

J'espère que cela aide.

Autres conseils

Cela ressemble à un problème de Intégration des données du client . Recherchez ce terme et vous trouverez peut-être plus d'informations. En outre, consultez The Data Warehousing Institude et vous y trouverez également des réponses.

Modifier: voici un article qui pourrait vous intéresser sur l'appariement phonétique espagnol.

J'ai déjà eu à faire quelque chose de similaire auparavant et j'ai utilisé un double métaphone recherche phonétique sur les noms.

Avant de comparer les noms, j’essayais de normaliser les différences de noms / pseudonymes en recherchant le nom dans une table de noms de pseudonymes que j’avais créée. (J'ai rempli le tableau avec les données du recensement que j'ai trouvées en ligne) Ainsi, les personnes appelées Bob sont devenues Robert, Alex est devenu Alexander, Bill est devenu William, etc.

Modifier : Double Metaphone a été spécialement conçu pour être meilleur que Soundex et pour fonctionner dans des langues autres que l'anglais.

SSIS, essayez d’utiliser la transformation de recherche floue

Juste pour ajouter quelques détails pour résoudre ce problème, j'avais trouvé ces modules pour Postgresql 8.3

Vous pouvez essayer de canoniser les noms en les comparant avec un dictionnaire. Cela vous permettrait de repérer des fautes de frappe courantes et de les corriger.

Il me semble que vous rencontrez un problème de enregistrement de liens . Vous pouvez utiliser les références dans le lien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top