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.)
dictionary
wird Ihr bester Freund sein, um einen Schlüssel zu haben, dessen Wert in Ihrem Fall übereinstimmt.