Correzione di incoerenze nei dati


8

Sto cercando di analizzare alcuni dati che ho ma ci sono molte incongruenze nei miei dati.

Ho una tabella SQL che sto cercando di analizzare.

La tabella è una tabella di università con la seguente struttura: il name:string, city:string, state:string, country:string nome è sempre presente, tuttavia città, provincia e nazione possono mancare. Il mio problema principale è che ci sono un sacco di errori di battitura e diverse declinazioni di un nome universitario. Ad esempio, ecco la declinazione di Standford Unversity che trovo quando lo faccio 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

Sono tutti nella stessa università, ma alcuni hanno errori di battitura, alcuni hanno nomi diversi, alcuni non hanno città, alcuni hanno città sbagliate, ... I dati non sono eccezionali.

Quindi sto cercando di risolverlo. Come posso consolidare questi dati?


2
Cerca il collegamento dei record per scoprire come gestire i record parzialmente sovrapposti. Puoi gestire gli errori di ortografia per somiglianza cercando le stringhe di bit n-gram .
Emre,

2
Ho votato per chiudere come "troppo ampio" poiché ci sono letteralmente centinaia di possibili approcci e non ci hai nemmeno detto di averne provato uno. Corrispondenza fuzzy, corrispondenza delle parole chiave, clustering, apprendimento automatico ...
Spacedman

@Spacedman Non ho ancora provato a risolverlo dal momento che non so quali sono le migliori opzioni.
bl0b

Penso che questa sia una domanda legittima; il problema è quale approccio (su molti di quelli esistenti) sarebbe meglio per gestire questo problema? Dato il numero di potenziali corrispondenze, potrebbe essere meglio provare il clustering rispetto a qualsiasi tipo di corrispondenza fuzzy / approssimativa. Tuttavia, mi piacerebbe sentire le opinioni degli altri.
Antonio,

Risposte:


3

Poiché questo set di dati è già organizzato in una tabella, è possibile sfruttare le funzioni SQL standard per eseguire gran parte della pulizia. Un record sembra essere composto da 4 campi, ad esempio:

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

È possibile seguire questi passaggi per ottenere una rappresentazione più chiara di questo set di dati:

  1. Partendo dal livello più alto (paese), trova valori univoci utilizzalo per identificare tutte le parole che suonano simili elencando le corrispondenze soundex con se stesso (crea una query di join della tabella con se stessa).
  2. Utilizza queste corrispondenze simili suggerite per correggere tutti gli errori aggiornando i nomi.
  3. Continua in questo modo fino a quando non avrai risolto tutti e quattro i campi.
  4. Identificare gli stati mancanti usando il nome della città per interrogare lo stato corretto dal resto della tabella; se manca lo stato e il paese per "leland stanford junior university", usa il nome della città "stanford" per unirti a se stesso e ottenere il nome dello stato / paese dagli altri record nella tabella.
  5. Per il nome dell'università, identifica tutte le abbreviazioni usando grep per cercare le parole che terminano con un carattere punto. Sostituiscili con espansioni complete.
  6. Quindi, suddividere il nome dell'università in parole singole e scaricarle in una tabella temporanea in una singola colonna. Duplica i valori nella colonna in modo che contenga solo valori univoci.
  7. Esegui la stessa query di join di corrispondenza soundex del passaggio 1 per identificare nomi di suoni simili, aggiungi questi nomi simili suggeriti in una seconda colonna della tabella temporanea.
  8. Esegui manualmente un rapido controllo di integrità di ciò che hai ottenuto come suggerimenti ed elimina eventuali corrispondenze non valide.
  9. Scrivi una procedura per sostituire le parole in ciascun nome di università con sostituzioni suggerite e avrai un set di dati molto più pulito.

1

Questo è abbastanza difficile da fare senza prima strutturare il tuo set di dati. C'è una ragione per cui i set di dati puliti costano migliaia di dollari perché provano a ripulire questi problemi per te.

Quello che puoi provare è prima di creare un sistema di tassonomia. Per prima cosa dai alla "Stanford University" un ID di "1". Qualcosa come la "Stanford Graduate School of Business" otterrebbe ID "1.2.5", dove il nuovo "2" si riferisce alla divisione della scuola di specializzazione, "5" si riferisce alla categoria della business school. Dipende davvero da quale sia il tuo obiettivo finale. In breve, imposta un elenco di ID per possibili suddivisioni, "Laureato, Laurea, ecc." e quindi ulteriori suddivisioni.

Per le posizioni, in genere è possibile definire una posizione "primaria" e "secondaria", ovvero "Palo Alto" e "Stanford", che è possibile determinare mediante istogrammi dei conteggi per ciascuno e selezionando i primi due.

Per correggere gli errori di ortografia, puoi utilizzare l'API di ricerca di Google e sfruttare la "Visualizzazione dei risultati per ..." che ti darebbe l'ortografia corretta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.