Domanda

Ecco un problema interessante.

Ho un database Oracle con informazioni su nome e indirizzo che devono essere mantenute aggiornate.

Riceviamo feed di dati da diverse fonti governative e dobbiamo capire le corrispondenze e se aggiornare o meno il database con i dati o se è necessario creare un nuovo record.

Non esiste alcun tipo di identificatore univoco che possa essere utilizzato per collegare insieme i record e la qualità dei dati non è sempre così buona: ci saranno sempre errori di battitura, persone che utilizzano nomi diversi (ad es.Joe controGiuseppe), ecc.

Sarei interessato a sentire da chiunque abbia già lavorato su questo tipo di problema su come lo hanno risolto, o almeno su parti automatizzate di esso.

È stato utile?

Soluzione

Ciascuna delle principali società di software attive in questo spazio offre suite di soluzioni che gestiscono l'analisi di nomi e indirizzi, la standardizzazione dei dati, la deduplicazione o la corrispondenza dei record, il collegamento/unione dei record, la sopravvivenza e così via.Sono tutti un po' costosi, però.

Ad esempio, la soluzione di Oracle per questo problema è il prodotto "Oracle Data Quality (ODQ) per Oracle Data Integrator (ODI)," che fa parte del loro stack Fusion Middleware.Come suggerisce il nome, ODQ richiede ODI (ovvero è un modulo aggiuntivo concesso in licenza separatamente e dipendente da ODI).

La suite di soluzioni Websphere di IBM (ottenuta tramite l'acquisizione di Ascential) include QualitàStage.

Business Objects, ora una società SAP, ha a Qualità dei dati prodotto nella sua suite Enterprise Information Management (EIM).

Altri importanti marchi di qualità dei dati includono Flusso di dati (una società SAS) e Software Trillium (una società Harte-Hanks)

Il Gruppo Gartner pubblica annualmente il Magic Quadrant per le suite di soluzioni per la qualità dei dati.I fornitori che ottengono un buon punteggio in questi Magic Quadrant di solito rendono l'intero rapporto disponibile online per gli utenti registrati sul loro sito web (Esempio 1, esempio 2).

Altri suggerimenti

Sul fronte open source, ora esiste una libreria Python per eseguire questo tipo di deduplicazione dei record/risoluzione delle entità: Deduplica.

Richiede competenze di programmazione, ma è gratuito e può essere eseguito su un laptop, anziché su un server enorme.

Ecco una panoramica di come funziona.

Lezioni apprese dall'utilizzo di FirstLogic.(Altri prodotti dovrebbero essere simili.) Per contestualizzare, ricevevamo file da dozzine di fonti e ognuna era in un formato diverso.Avevamo bisogno di sapere chi doveva essere aggiunto al nostro database, chi aveva bisogno di essere aggiornato e chi aveva solo bisogno di essere contrassegnato come "nell'elenco".

  1. Mi aspettavo che il software esaminasse un intero file e determinasse che, ad esempio, se la colonna A avesse cognomi in 98 righe su 100, la colonna A deve essere la colonna del cognome.Non è vero;ogni record viene elaborato individualmente.

  2. Se sai esattamente quali dati si trovano in quale campo, puoi dirlo al software e lui li gestirà.Ma se non sei sempre sicuro, è meglio dare semplicemente l'intera stringa e lasciare che sia il software a capirlo.Un esempio di ciò è un campo del cognome che contiene qualcosa come "Smith Jr MD".Se dichiari che è la colonna del cognome, si presuppone che il cognome sia "Smith Jr MD".Ma se passi "John Smith Jr MD" e lasci che il software lo capisca, identificherà correttamente tutti i bit.

  3. Alcune cose che sembravano ovvie non lo erano.Ad esempio, FirstLogic non presuppone che una virgola significhi "cognome, nome".In realtà ha un lungo elenco di cognomi e un lungo elenco di nomi, quindi sembra che possa semplicemente ignorare la virgola.Abbiamo avuto costantemente problemi con persone come "John, Thomas".E a volte si confondeva perché quello che a noi sembrava un cognome ovvio era in realtà un nome in spagnolo o qualcosa del genere.

  4. È difficile utilizzare il sistema per aggiungere dati fittizi.Se hai persone che chiamano cose come "Account di prova" o "TBD", non verranno elaborate affatto: FirstLogic eliminerà il record perché non ha trovato alcun bit di dati riconosciuto.

  5. Personalizzare il sistema è possibile, ma non così facile come gli addetti alle vendite lo fanno sembrare.Ci sono un milione di opzioni, file e dizionari personalizzati.Dovrai investire tempo per capire come funziona se prevedi di poterlo personalizzare.È come un RDBMS o uno strumento ETL.Non è una scatola nera magica.

  6. Ha anche tantissime funzionalità di qualità dei dati che aiutano a giustificare l'acquisto del software ma che richiedono uno sforzo dedicato per apprendere e applicare.

  7. Gli strumenti non sono realmente progettati per elaborare un elenco rispetto a un file master;sono stati creati per operazioni di unione-eliminazione.È possibile (lo stiamo facendo), ma richiede che tu tratti il ​​tuo database come un elenco (che richiede di estrarre tutti i record attivi in ​​un file flat).Inoltre, maggiore è il controllo che desideri su quali record vanno e dove (ad es.se il nome corrisponde all'80% e le prime due cifre del codice postale sono identiche, probabilmente si tratta della stessa persona, ecc.), quanto sarà complicato il processo batch.

  8. Alla fine, ci siamo resi conto che l'elaborazione di "John Smith" e l'elaborazione di "Annabelle DiGiovanni" sono cose molto diverse quando si tenta di determinare se due persone a indirizzi diversi sono effettivamente le stesse.Puoi ottimizzare il software in modo che ai nomi non comuni venga assegnato più peso su una corrispondenza rispetto ai nomi comuni, ma chi ha tempo?Il nostro processo di abbinamento è accurato all'80% circa e siamo rimasti soddisfatti dell'elaborazione manuale del restante 20%.

Non pensarlo come uno strumento per eseguire automaticamente la corrispondenza.Consideratelo come uno strumento per consentire ai vostri elaboratori di dati umani di essere più produttivi.In questo modo lo hai impostato in modo che se raggiungi l'80% di precisione è un successo clamoroso piuttosto che inferiore al traguardo.

Nel mio attuale lavoro abbiamo molti problemi di integrità dei dati.Cerchiamo di "pulire" i dati prima che vengano caricati per garantirne la qualità.Attualmente utilizziamo Melissa Data per cancellare nomi, indirizzi ed e-mail.Fa un ottimo lavoro standardizzando le cose prima di caricarlo.In questo modo possiamo evitare dati duplicati.

Inoltre, SQL Server Integration Services (so che stai utilizzando Oracle) ha un componente che esegue la corrispondenza "fuzzy" sulle stringhe, consentendoti di trovare una corrispondenza quasi anziché una corrispondenza uno a uno.Si chiama Ricerca Fuzzy.Fondamentalmente ti dà un punteggio, dicendoti quanto vicini a una corrispondenza sono i due input...Puoi quindi impostare delle soglie per indicargli quanto deve essere vicino per considerarlo una corrispondenza (ad es.entro l'80% o altro).

In passato ho utilizzato anche SOUNDEX per determinare se i nomi erano simili nel determinare i duplicati.Esistono molte implementazioni di SOUNDEX.

Buona fortuna.

Il termine per il problema che stai cercando di risolvere è "Collegamento dei record".

Non posso raccomandare uno strumento specifico.Esegui una ricerca per "software di collegamento dei record" o "software di eliminazione dell'unione" e con una piccola ricerca dovresti riuscire a trovare qualcosa che soddisfi le tue esigenze.

Sono riuscito a trovare una soluzione open source, denominata Febbraio.Questo strumento è stato originariamente sviluppato per il regno della ricerca biomedica, che spiega il nome "collegamento liberamente estensibile biomedico". Puoi leggere di più al riguardo qui: "Tecniche parallele su larga scala per il collegamento di record ad alte prestazioni"

Per una buona panoramica dei problemi/soluzioni coinvolti nel record linking leggi qui "Unisci/Elimina e rilevamento duplicati".

Ogni principale fornitore ha la propria soluzione.Oracle, IBM, SAS Dataflux, ecc. e ciascuno afferma di essere il migliore.

Valutazione verificata indipendente:

È stato condotto uno studio presso il Centro per il collegamento dei dati della Curtin University in Australia che ha simulato la corrispondenza di 4,4 milioni di record.Identificato ciò che i fornitori avevano in termini di precisione (numero di corrispondenze trovate rispetto a quelle disponibili.Numero di false corrispondenze)

  1. DataMatch Enterprise, Massima precisione (>95%), Molto veloce, Basso costo
  2. Fase di qualità IBM , elevata precisione (>90%), molto veloce, costo elevato (>$100.000)
  3. Flusso dati SAS, precisione media (>85%), veloce, costo elevato (>100K)

Questa è stata la migliore valutazione indipendente che siamo riusciti a trovare ed è stata molto approfondita.

Ho fatto qualcosa del genere sugli elenchi di iscrizione per una compagnia di assicurazioni.Fortunatamente avevamo il SSN per determinare il membro principale, ma dovevo decidere se le persone a carico erano nuove o esistenti (solo per nome).Ho provato un algoritmo soundex come parte di una soluzione, ma non sembrava adatto alle esigenze, perché sembrava associare troppi nomi diversi alla stessa cosa (e molte famiglie tendono a nominare i propri figli con nomi dal suono simile).Ho finito per usare solo le prime quattro lettere del nome a carico come identificatore univoco e chiamandolo "abbastanza buono". Non so come gestirei la famiglia di George Foreman :-)

Ho visto Dataflux in azione e, secondo il nostro analista di dati "stella", è lo strumento più accurato per il "clustering" (come lo chiama Dataflux) che ha trovato per collegare nomi di persone e aziende.È piuttosto costoso, però.

È un classico problema di record linkage.Errori di battitura, lettere mancanti, ecc.può essere gestito con un approccio probabilistico definendo un insieme di regole per il blocco.

Un software che potrebbe farlo bene per te è VEN.In Java, gratuito e molto amichevole.Sul sito sono presenti collegamenti a tutorial e video.Supporta la connettività DB, anche se non sono sicuro dell'oracolo.

RecLink potrebbe essere un'altra strada da percorrere, anche se probabilmente dovresti lavorare di più per renderlo operativo poiché non ci sono manuali/tutorial (per quanto ne so).

Dalle opzioni gratuite, c'è anche RELAIS.

ero solito dataladder.com per un grande set di dati di nomi.Hanno fatto un lavoro fantastico abbinando diversi database con ortografie molto diverse e eliminando molti duplicati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top