Ich habe einen großen Datensatz (2 Millionen Einträge) von Personen, aber viele Personen haben mehrere Einträge in der Datenbank mit leicht (oder signifikant) unterschiedlichen identifizierenden Informationen. Zum Beispiel kann ich J. Doe und John Doe haben, oder ich kann John Doe mit einer zugehörigen E-Mail-Adresse und John Doe ohne eine zugehörige E-Mail-Adresse haben.
Ich habe mir verschiedene Clustering-Algorithmen angesehen, aber nichts scheint für meine Arbeit gut geeignet zu sein, nämlich die Einträge basierend auf Regeln wie den folgenden zu aggregieren:
- Erraten Sie Vor- und Nachnamen basierend darauf, ob einer der Namen in Großbuchstaben geschrieben ist
- Aggregieren Sie "J. Doe" und "J. Doe", wenn die E-Mail-Adressen übereinstimmen
- aggregieren Sie "J. Doe" zu "John Doe", wenn keine anderen Personen einen Vornamen haben, der mit "J" und einem Nachnamen "Doe" beginnt.
Mit einem kleineren Datensatz wäre dies eine relativ einfache Aufgabe, nur mit einigen einfachen Regeln, aber mit der Anzahl der Einträge, die ich habe, können die Aggregationsaufgaben sehr langsam werden und die Logik wird ziemlich kompliziert. Meine aktuelle Lösung (basierend auf der Verwendung der Volltextsuchfunktion in meiner Datenbank, um ähnliche Einträge zu finden, Hashes basierend auf diesen Ergebnissen hinzuzufügen und dann basierend auf einer Mischung aus Hashes und Arten von Mehrdeutigkeiten zu aggregieren) funktioniert, aber jedes Mal, wenn ich versuche, sie auszuführen oder aktualisieren Sie es, es schreit nur, dass es die Art von Problem ist, die jemand anderes bereits gelöst hat. Aber ich konnte keine Lösung finden.
Gibt es Algorithmen, die basierend auf solchen Regeln das tun, was ich will? Oder bestimmte Pakete oder Software, die hilfreich sein könnten? Oder gehe ich dieses Problem völlig falsch an?
Vielen Dank!
(Bitte beachten Sie jedoch, dass ich mir bewusst bin, dass es viele verschiedene Möglichkeiten gibt, Identitäten falsch zu aggregieren (z. B. dass J. Doe John Doe oder James Doe bedeuten könnte), sodass ich keine Warnungen vor dem Versuch benötige, Dinge zu aggregieren.)
quelle
dictionary
wird Ihr bester Freund sein, um einen Schlüssel zu haben, dessen Wert in Ihrem Fall übereinstimmt.Antworten:
Ich habe mein Problem mit der Verknüpfung von Datensätzen noch nicht erfolgreich gelöst, aber ich wollte einige der Dinge, die ich dabei gefunden habe, für den Fall freigeben, dass sie für andere von Nutzen sind. Dies ist eine laufende Arbeit, die hier auf GitHub basiert .
Verknüpfungsressourcen aufzeichnen
(auch bekannt als Deduplizierung, Datenabgleich, Entitätsauflösung)
Hintergrund
Unterlagen
Gespräche
Bücher
Gratis Software
(Letzte Aktualisierung, Github-Stars ab November 2017)
Python
Java
R.
Andere
Kommerzielle Software und Lösungen
Für SAS
Datenreinigung
Nennen Sie Parser
PythonPapiere
Organisationen
Sonstiges
quelle