Beheben von Dateninkonsistenzen

8

Ich versuche, einige meiner Daten zu analysieren, aber meine Daten weisen viele Inkonsistenzen auf.

Ich habe eine SQL-Tabelle, die ich analysieren möchte.

Die Tabelle ist eine Tabelle von Universitäten mit folgender Struktur: name:string, city:string, state:string, country:string Name ist immer vorhanden, jedoch können Stadt, Bundesland, Land fehlen. Mein Hauptproblem ist, dass es eine Menge Tippfehler und unterschiedliche Ablehnungen eines Universitätsnamens gibt. Zum Beispiel hier die Deklination der Standford Unversity, die ich finde, wenn ich das tue SELECT "universities".* FROM "perm_universities" WHERE (name like '%stanford%'):

stanford university - stanford - ca - united states of america
the leland stanford junior university - stanford - ca - united states of america
leland stanford jr. university - stanford - ca - united states of america
stanford university graduate school of business - stanford - ca - united states of america
the leland stanford junior university (stanford university) - stanford - ca - united states of america
leland stanford junior university - stanford - ca - united states of america
stanford university - stanford -  -
leland stanford jr. university, graduate school of business - stanford - ca - united states of america
stanford law school - stanford - ca - united states of america
stanford - stanford - ca - united states of america
stanford university, graduate school of business - stanford - ca - united states of america
stanford graduate school of business - stanford - ca - united states of america
stanford univerity - stanford - ca - united states of america
stanford university (the leland stanford junior university) - stanford - ca - united states of america
the leland stanford jr. university - palo alto - ca - united states of america
leland stanford junior university, school of law - stanford - ca / n/a - united states of america
stanford universit - stanford - ca - united states of america
the leland stanford university - stanford - ca - united states of america
leland standford stanford junior university - stanford - ca - united states of america
stanford university - cambridge - ma - united states of america
the leland stanford junior university 'stanford university' - stanford - ca - united states of america
stanford university school of law - stanford - ca - united states of america
stanford univresity - stanford - ca - united states of america
the leland stanford jr. university (stanford university) - stanford - ca - united states of america
leeland stanford junior university - stanford - ca - united states of america
leland stanford junion university -  - ca - united states of america
leland stanford junior university (stanford university) - stanford - ca - united states of america
the leland stanford junior university - stanford -  -
stanford university - graduate school of business - stanford - ca - united states of america
graduate school of business, stanford university - stanford - ca - united states of america
stanford universoty - stanford - ca - united states of america
leland stanford junior university - stanford -  -
stanford univeristy - palo alto - ca - united states of america
leland stanford university - palo alto - ca - united states of america
stanford university - stanford - ca / n/a - united states of america
the leland stanford junior university, stanford university - stanford - ca - united states of america
the leland stanford junior university graduate school of business - stanford - ca - united states of america
stanford universtiy - stanford - ca - united states of america
stanford univerisity - stanford - ca - united states of america
stanford university - stanford - ct - united states of america
stanford law scool - stanford - ca - united states of america
mba: stanford university - stanford - ca - united states of america

Sie sind alle die gleiche Universität, aber einige haben Tippfehler, einige haben unterschiedliche Namen, einige haben keine Städte, einige haben die falschen Städte, ... Die Daten sind nicht großartig.

Also versuche ich es zu beheben. Wie kann ich diese Daten konsolidieren?

bl0b
quelle
2
Suchen Sie nach Datensatzverknüpfungen , um zu erfahren, wie Sie mit teilweise überlappenden Datensätzen umgehen können. Sie können mit Rechtschreibfehlern umgehen, indem Sie die n-Gramm- Bitstrings nach Ähnlichkeit durchsuchen .
Emre
2
Ich habe dafür gestimmt, als "zu breit" zu schließen, da es buchstäblich Hunderte von möglichen Ansätzen gibt und Sie uns nicht einmal gesagt haben, dass Sie einen ausprobiert haben. Fuzzy Matching, Keyword Matching, Clustering, maschinelles Lernen ...
Spacedman
@Spacedman Ich habe noch nichts versucht, um das Problem zu beheben, da ich nicht weiß, was die besten Optionen sind.
Bl0b
Ich denke, das ist eine legitime Frage. Das Problem ist, welcher Ansatz (von vielen bestehenden) am besten geeignet ist, um dieses Problem zu lösen. Angesichts der Anzahl möglicher Übereinstimmungen ist es möglicherweise besser, Clustering zu versuchen, als jede Art von Fuzzy / Approximate-Übereinstimmung. Ich würde jedoch gerne die Meinungen anderer hören.
Antonio

Antworten:

3

Da dieses Dataset bereits in einer Tabelle organisiert ist, können Sie Standard-SQL-Funktionen nutzen, um einen großen Teil der Bereinigung durchzuführen. Ein Datensatz scheint aus 4 Feldern zu bestehen, zum Beispiel:

university name, city, state, country
stanford law school - stanford - ca - united states of america

Sie können die folgenden Schritte ausführen, um eine übersichtlichere Darstellung dieses Datensatzes zu erhalten:

  1. Beginnen Sie mit der höchsten Ebene (Land) und suchen Sie nach eindeutigen Werten. Verwenden Sie diese Werte, um alle ähnlich klingenden Wörter zu identifizieren, indem Sie Soundex-Übereinstimmungen mit sich selbst auflisten (erstellen Sie eine Verknüpfungsabfrage der Tabelle mit sich selbst).
  2. Verwenden Sie diese vorgeschlagenen ähnlichen Übereinstimmungen, um alle Fehler durch Aktualisieren der Namen zu beheben.
  3. Fahren Sie auf diese Weise fort, bis Sie alle vier Felder repariert haben.
  4. Identifizieren Sie fehlende Bundesstaaten, indem Sie den Städtenamen verwenden, um den korrekten Status aus dem Rest der Tabelle abzufragen. Wenn Bundesstaat und Land für die "Leland Stanford Junior University" fehlen, verwenden Sie den Städtenamen "Stanford", um sich mit sich selbst zu verbinden und den Namen des Bundesstaates / Landes aus den anderen Datensätzen in der Tabelle abzurufen.
  5. Identifizieren Sie für den Universitätsnamen alle Abkürzungen mit grep, um nach Wörtern zu suchen, die mit einem Punkt enden. Ersetzen Sie sie durch vollständige Erweiterungen.
  6. Teilen Sie als Nächstes den Namen der Universität in einzelne Wörter auf und speichern Sie diese in einer temporären Tabelle in einer einzelnen Spalte. Deduplizieren Sie die Werte in der Spalte, sodass sie nur eindeutige Werte enthält.
  7. Führen Sie dieselbe Soundex-Matching-Join-Abfrage wie in Schritt 1 aus, um ähnlich klingende Namen zu identifizieren. Fügen Sie diese vorgeschlagenen ähnlichen Namen in eine zweite Spalte der temporären Tabelle ein.
  8. Führen Sie manuell eine schnelle Überprüfung der von Ihnen als Vorschläge erhaltenen Informationen durch und löschen Sie ungültige Übereinstimmungen.
  9. Schreiben Sie ein Verfahren, um die Wörter in jedem Universitätsnamen durch vorgeschlagene Ersetzungen zu ersetzen, und Sie erhalten einen viel saubereren Datensatz.
Sandeep S. Sandhu
quelle
1

Dies ist ziemlich schwierig, ohne zuerst Ihren Datensatz zu strukturieren. Es gibt einen Grund, warum bereinigte Datensätze Tausende von Dollar kosten, weil sie versuchen, diese Probleme für Sie zu bereinigen.

Sie können zunächst ein Taxonomiesystem erstellen. Zuerst geben Sie der allgemeinen "Stanford University" den Ausweis "1". So etwas wie die "Stanford Graduate School of Business" würde die ID "1.2.5" erhalten, wobei sich die neue "2" auf die Abteilung für Graduiertenschulen bezieht, "5" auf die Kategorie der Business Schools. Es hängt wirklich davon ab, was Ihr Endziel ist. Kurz gesagt, erstellen Sie eine Liste mit IDs für mögliche Unterteilungen, "Absolventen, Studenten usw.". und dann weitere Unterteilungen.

Für Standorte können Sie normalerweise einen "primären" und einen "sekundären" Standort definieren, dh "Palo Alto" und "Stanford", die Sie durch Histogrammierung der Anzahl für jeden Standort und Auswahl der beiden oberen Standorte bestimmen können.

Zum Korrigieren von Rechtschreibfehlern können Sie die Google-Such-API verwenden und die Option "Ergebnisse anzeigen für ..." ausnutzen, um die richtige Schreibweise zu erhalten.

Alex R.
quelle