Data integration · Progetto universitario · 2026
Schema matching tassonomico su OMOP-CDM
Un progetto universitario di data integration. Quando i codici clinici sono "quasi giusti", il confronto esatto perde colonne che stanno chiaramente insieme. Una similarità costruita sulla gerarchia SNOMED le ritrova.
Il problema
Gli schema matcher instance-based decidono che due colonne corrispondono guardando i valori che hanno in comune. Nei dati clinici codificati con OMOP-CDM quei valori sono concept_id di vocabolari come SNOMED, e i veri errori di codifica raramente sono refusi casuali. Sono errori di prossimità nella gerarchia: un fratello, un padre o un figlio del concetto giusto (insufficienza renale cronica stadio 4 registrata come stadio 5). Il confronto esatto tratta un errore di prossimità come un valore del tutto diverso, e così colonne che stanno chiaramente insieme smettono di corrispondere.
Cosa ho costruito
Sopra il framework Valentine (il suo fabricator e la metrica Recall@ground truth):
- Un operatore di rumore tassonomico (
taxonomy_noise.py) che perturba le colonne-concetto spostandosi su padre, figlio o fratello nella gerarchiaCONCEPT_ANCESTOR. Un filtromin_depthsalta i concetti troppo generici, così il rumore cade dove avvengono davvero gli errori di codifica. - Un fabricator OMOP che riusa lo split verticale di Valentine e applica due tipi di rumore: tassonomico sulle colonne-concetto, lessicale sul testo libero. Ogni output è una coppia sorgente/destinazione con la sua ground truth, in cui il join per uguaglianza fallisce per costruzione.
- Una similarità semantica ricavata dalla distanza nella gerarchia (1 / (1 + distanza)), costruita sulla stessa gerarchia del rumore.
- Tre matcher a confronto: esatto (Jaccard classico sui valori), semantico (due valori “si sovrappongono” se la loro similarità supera una soglia) e ibrido (semantico sulle colonne-concetto, esatto sulle altre).
- Dati estratti dal dataset pubblico CMS synthetic OMOP su BigQuery. Gli antenati vengono scaricati solo per i valori che compaiono davvero nelle coppie generate, quindi non serve un dump completo della gerarchia.
Risultati
L’esperimento misura la Recall@ground truth media dei matcher esatto, semantico e ibrido a quattro livelli di rumore (0,2, 0,5, 0,8, 1,0), con cinque seed per livello.
Risultati da inserire. Il repository non pubblica ancora i numeri finali. Li aggiungo qui appena confermati.
Contesto
Un progetto universitario all’Università di Modena e Reggio Emilia. La sezione Ricerca spiega l’idea senza gergo tecnico.