Algorithmen für das Aufspalten Personennamen in Teilen
-
06-07-2019 - |
Frage
Ich bin auf der Suche nach Referenzen auf einen Namen zu trennen: "John A. Doe" in Teilen, zuerst = John, Mitte = A, liest = Doe.. In Mexiko haben wir väterlichen, mütterlichen, ersten und zweiten Namen gegeben und können in verschiedenen Permutationen geschrieben werden, so dass das Problem sehr komplex ist.
Da es auf Daten abhängt, arbeiten wir mit Software-Anpassung, die eine Punktzahl für jedes Wort berechnet, so dass wir Entscheidungen treffen (es basiert auf einer großen Datenbank). Die Eingangsdaten werden nicht sauber, wird es von einigen Regierungs Webseiten importiert und ist menschlich gefiltert, so dass es Junk haben könnte, die auch anerkannt werden muss. Irgendwelche Vorschläge?
[Bearbeiten] Beispiele:
name: Javier Abdul Córdoba Gándara common permutations (or as it may appear in gvt data referring to same person): Córdoba Gándara Javier Abdul Javier A. Córdoba Gándara Javier Abdul Córdoba G. paternal=Córdoba maternal=Gándara first given:Javier second given:Abdul
name: María de la Luz Sánchez Martínez paternal:Sánchez maternal: Martínez first given: María de la Luz
name: Paloma Viridiana Alin Arias Medina paternal: Arias maternal: Medina first given: Paloma second given: Viridiana Alin
Wie gesagt, was die Bedeutung jedes Wortes auf der Partitur abhängt. Man hat keine Möglichkeit zu wissen, dass
Viridianaund
Alingegeben Namen, wenn nicht aus der Partitur.
Wir haben eine sehr starke Datenbank (80 Millionen Platten oder so), so können wir einige Verwendung des Scoring-Systems erhalten. Ich bin etwas Algorithmus entwerfen, die verwendet diese aber für andere Referenzen suchen.
Lösung
Leider - und hat einiges an dieser Arbeit selbst getan - Ihr idealer Algorithmus sehr spezifischer Daten sein, und Sie müssen dies für Ihre spezielle Situation erarbeiten.
Von der insgesamt Zeit und Mühe, diesen Algorithmus zu entwickeln, würde ich die Zeit sagen wird grob wie folgt aufgeteilt werden:
- 10% für die allgemeine String-Manipulation
- 30% für die spezifische Natur des Daten (mexikanische Namensformate, Dateneingabe Macken)
- 60% sorgt für Datenqualität / Mangel an Qualität
Und ich glaube, dass in Richtung der allgemeinen String-Manipulation recht großzügig ist. Natürlich hängt es, ob Sie hochwertige Ergebnisse für alle Datensätze benötigen, oder nur die ‚sauberen‘ Aufzeichnungen usw., und wenn Sie die ‚schwierig‘ sind in der Lage zu ignorieren zeichnet sie es einfacher, viel machen.
Einige allgemeine Tipps
- Wenn sie nicht benötigt werden, entfernen Sie nicht alphanumerische / Leerzeichen
- Split auf die Felder
- Verwenden Sie Bindestriche / Zeichensetzung zu identifizieren Nachnamen oder Familiennamen
- Initialen (die im Allgemeinen Single Buchstaben) nicht Namen; das heißt, sie sein erster / mittel muss
- bestimmen den Grad der Sicherheit, dass Sie die einzelnen Namen programmatisch identifiziert haben (und testen Sie diese gründlich). Sie können feststellen, es Teilmengen von Daten sind, die ähnliche Muster enthalten, die für individuell gesorgt werden müssen (sie aus unterschiedlichen Quellen stammen können usw.)
Andere Tipps
Sie müssen möglicherweise einige natürliche Sprache oder maschinelles Lernen hinzufügen zu überprüfen. Das Problem Autorenname zu identifizieren (zum Beispiel in wissenschaftlichen Arbeiten) ist schwierig, da sie mit unterschiedlichen Aufträgen gemeldet werden können, Grade Abkürzung, Elisionen usw. Wenn Ihre Datenbank verschmutzt ist, mit Mehrdeutigkeit zu beenden, was Sie tun.