cTAKES: NLP clinico open source di Mayo Clinic su Apache UIMA

Il rilascio di cTAKES da parte di Mayo Clinic (2010), architettura su Apache UIMA, pipeline di annotazione (tokenization, POS, chunking, dictionary lookup UMLS, NER, NegEx), confronto con MetaMap e ruolo nell'i2b2 Obesity Challenge.

Digital HealthR&DOpen Source cTAKESMayo ClinicApache UIMANLPClinical NLPUMLSInformation ExtractionOpen SourceDigital Health

Un’infrastruttura NLP clinica di qualità produttiva

Il panorama degli strumenti di Natural Language Processing biomedico al 2010 include MetaMap di NLM per la concept extraction, MedLEE della Columbia (non open source), numerosi progetti accademici non maintained. Manca uno strumento open source production-grade specificamente progettato per il testo clinico — non biomedico in generale — con la completezza di una pipeline NLP moderna: tokenization, analisi morfosintattica, NER biomedico, assertion (positivo/negato/ipotetico), integrazione con UMLS.

A questo bisogno ha risposto il Mayo Clinic, che ha sviluppato internamente dal 2006 un sistema NLP per analizzare milioni di note cliniche del proprio sistema informativo aziendale. Il sistema, chiamato cTAKESclinical Text Analysis and Knowledge Extraction System — è stato pubblicato in JAMIA nel 2010 dal gruppo di Guergana Savova e colleghi (Journal of the American Medical Informatics Association, Savova et al. 2010), e reso disponibile come open source contestualmente alla pubblicazione.

Apache UIMA come base

La scelta architetturale cardine di cTAKES è costruire il sistema sopra Apache UIMA (Unstructured Information Management Architecture). UIMA nasce come progetto IBM Research nel 2005 e diventa Apache Top-Level Project nel 2007. È un framework Java per la costruzione di pipeline modulari di NLP, con:

  • Modello di dati comune CAS (Common Analysis Structure), dove ogni annotator aggiunge le proprie annotazioni
  • Type System definibile con XML, per dichiarare le classi di annotazione (Token, Sentence, NamedEntity, UmlsConcept, DiseaseDisorderMention, MedicationMention, …)
  • Architettura a Annotator concatenati in Aggregate Analysis Engine
  • Gestione di collection di documenti con CollectionReader e CAS Consumer per i/o

UIMA è lo stesso framework che IBM Watson usa per le sue pipeline, ed è attualmente il riferimento industriale per sistemi di information extraction. cTAKES eredita la robustezza, la modularità e la scalabilità di UIMA — caratteristiche essenziali per processare volumi clinici reali.

La pipeline di cTAKES

cTAKES espone una sequenza di annotator UIMA, ciascuno responsabile di un’aggiunta di informazione al CAS:

Sentence Detector

Basato su OpenNLP, segmenta il documento in frasi. Clinico-specifico: gestisce abbreviazioni comuni (Dr., mg, q.d.) senza considerarle fine di frase.

Tokenizer

Segmenta le frasi in token con normalizzazione (numeri, punteggiatura, simboli). Adattato al testo clinico, che ha pattern diversi dal linguaggio generale (dosaggi “500 mg BID”, valori “120/80 mmHg”).

Part-of-Speech Tagger

Etichetta i token con il POS tag (nome, verbo, aggettivo, …). Modello addestrato su corpora clinici annotati.

Chunker (Shallow Parser)

Identifica frasi nominali, frasi verbali, frasi preposizionali come unità sintattiche di primo livello. Non full parsing — chunking è più veloce e robusto sul testo clinico che spesso è telegrafico.

Dictionary Lookup (UMLS Concept Mapping)

Il cuore del sistema: matching dei chunk con voci del UMLS Metathesaurus, con restrizione ai Semantic Types clinicamente rilevanti (Disorder, Sign or Symptom, Pharmacologic Substance, Procedure, Anatomical Site). Restituisce CUI, Semantic Type, posizione. L’output è funzionalmente analogo a quello di MetaMap ma con approccio implementativo diverso.

Named Entity Recognition

Riconoscimento di DiseaseDisorderMention, SignSymptomMention, ProcedureMention, MedicationMention, AnatomicalSiteMention come entità strutturate. Ogni entità ha attributi: semantic type, CUI, severity, subject (paziente, familiare), negation.

Assertion Module

Determina se una menzione è:

  • Positiva (presente)
  • Negata (non presente) — basato su NegEx di Chapman
  • Ipotetica (considerata, possibile)
  • Storica (in passato, risolta)
  • Familiare (attribuita a un familiare, non al paziente)
  • Esperienziale (soggetto è il paziente, un membro della famiglia, qualcun altro)

Dependency Parser

Analisi delle dipendenze sintattiche a grana fine, disponibile come modulo opzionale (in evoluzione alla data).

Ground truth e valutazione

La pubblicazione JAMIA documenta le performance di cTAKES su dataset clinici aziendali Mayo Clinic, con:

  • F-measure per il concept mapping sul livello Named Entity: 0.715 (esact match) su un gold standard di circa 160 documenti Mayo
  • Metriche componente per componente: POS tagger, chunker, assertion module

I risultati si collocano a un livello competitivo con MetaMap e MedLEE per i domini coperti. cTAKES non è migliore in modo uniforme — è migliore per il testo clinico nel senso letterale (note di cartella, lettere di dimissione), dove è stato addestrato e tarato; MetaMap resta superiore per letteratura biomedica (articoli PubMed/MEDLINE), dove è stato originariamente sviluppato.

i2b2 e le comunità di sviluppo

Uno degli ecosistemi che adotta cTAKES è i2b2 (Informatics for Integrating Biology and the Bedside), consorzio NIH basato a Partners HealthCare / Harvard. i2b2 organizza Natural Language Processing Challenges annuali con dataset clinici de-identificati — l’i2b2 Obesity Challenge 2008 e la i2b2/VA 2010 Concepts, Assertions and Relations Challenge hanno visto molti partecipanti utilizzare o basarsi su cTAKES (e la challenge 2010 ha impatto sulla direzione di sviluppo di cTAKES).

La ricerca sulla de-identificazione di note cliniche — rimozione di informazioni personali per rendere i dati condivisibili — è parallela e converge con cTAKES: strumenti come MITRE’s de-ID lavorano sugli stessi testi con obiettivi complementari.

Uso e distribuzione

cTAKES al 2010 è distribuito da Mayo Clinic come open source, con l’intenzione dichiarata di portarlo presso la Apache Software Foundation nei prossimi anni — il passaggio formale all’Apache Incubator è previsto dopo la stabilizzazione della codebase pubblica. La licenza corrente è già orientata a quella Apache 2.0.

Gli utenti tipici sono:

  • Centri accademici medici statunitensi — Mayo stesso, Partners HealthCare, Vanderbilt, Cincinnati Children’s, University of Pittsburgh, Columbia — che adottano cTAKES per analisi retrospettive su grandi volumi di note
  • Aziende biotech e farma per l’identificazione di coorti in studi osservazionali e la farmacovigilanza attiva
  • Gruppi di ricerca in informatica medica e bioinformatica traslazionale
  • Vendor EHR che integrano cTAKES come componente di analisi di testo (Epic, Cerner esplorano integrazioni)

L’uso produttivo in sistemi clinici realtime — cartella che chiama cTAKES al salvataggio di una nota per suggerire codici ICD — è ancora limitato; la maggior parte degli utilizzi è batch analytics su documenti già scritti.

Confronto con MetaMap

AspettoMetaMapcTAKES
SviluppatoreNLMMayo Clinic
Dominio primarioLetteratura biomedicaTesto clinico
ArchitetturaProlog + Java APIApache UIMA, Java
PipelineMonoliticaModulare (Annotator UIMA)
EstensibilitàLimitataAlta (via UIMA)
PerformanceSottoottimale su grandi volumiOttimizzato per batch
NER clinico specificoVia Semantic Type filterTipi esplicitamente modellati
AssertionBasilareCompleto (positivo, negato, ipotetico, storico, familiare)
LicenzaUMLS LicenseOpen source Apache-like
ComunitàNLM-centricIn espansione

Le due librerie coesistono spesso nello stesso progetto: cTAKES per l’elaborazione del testo clinico aziendale, MetaMap per la letteratura biomedica di riferimento, UMLS come backbone terminologico comune.

Limiti

cTAKES 2010 ha limiti riconosciuti:

  • Lingua — addestrato e ottimizzato per l’inglese. Adattamento ad altre lingue (italiano, tedesco, spagnolo, francese) richiede sostituzione dei modelli componente per componente e idealmente l’addestramento su corpus annotati localmente
  • Corpora di training — gli annotator sono tarati su note cliniche Mayo (telegrafiche, stile americano); performance degrada su testi molto diversi (pediatrici, specialistici specifici, internazionali)
  • De-identificazione — cTAKES non de-identifica il testo; va affiancato con strumenti dedicati (MITRE de-ID, Physionet deid, strumenti custom)
  • Gestione di contesto complesso — ragionamento multi-frase (cosa è stato detto in una frase, riassunto in un’altra) rimane un challenge aperto
  • Ragionamento temporale — distinguere eventi passati da attuali, futuri da pianificati, è supportato parzialmente; versioni future daranno maggiore attenzione al tema

cTAKES in Italia

Al 2010 l’applicazione di cTAKES al testo clinico italiano è sperimentale, principalmente accademica. Le barriere sono simili a quelle di MetaMap: assenza di un tokenizer/POS tagger italiano specifico clinico, assenza di corpora annotati italiani ampi, componenti che attendono traduzione/adattamento.

Alcune strategie emergenti:

  • Pipeline multilingua che traduce automaticamente l’italiano in inglese e applica cTAKES al testo inglese, con mapping indietro dei CUI al testo originale
  • Adattamento UIMA-native — costruzione di pipeline UIMA parallele con componenti italiani (Tokenizer italiano, POS tagger addestrato su corpora italiani, dictionary lookup su MeSH italiano, SNOMED CT italiano dove disponibile)
  • Approcci ibridi — NER italiana specifica per famiglie di entità (farmaci ATC, diagnosi ICD-9-CM italiano) affiancata a cTAKES per il nucleo concettuale internazionale

Il tema — NLP clinico multilingua di qualità produttiva — è argomento di ricerca attiva nei prossimi anni, con il coinvolgimento di gruppi italiani, tedeschi, francesi, scandinavi nell’ambito di progetti EU FP7 e successivi programmi Horizon.

Prospettive

La roadmap di cTAKES nei prossimi anni prevede:

  • Ingresso nell’Apache Software Foundation come progetto Top-Level — consolidando governance e sostenibilità
  • Integrazione con UIMA-AS — versione asincrona/distribuita di UIMA per elaborare volumi più grandi
  • Nuovi annotator — coreferenza, relation extraction, event extraction temporale
  • Deep learning — l’onda dei modelli neurali comincerà a cambiare il campo dell’NLP; cTAKES dovrà affiancare i suoi componenti rule-based e ML-tradizionale (CRF, SVM) con approcci deep
  • Integrazione con EHR — sistemi di cartella che integrano cTAKES come componente, con output consumabile in tempo reale da CDS e ricerca operativa

Il modello di cTAKES — open source, production-grade, documentato in letteratura peer-reviewed, costruito su uno standard (UIMA) industriale — rappresenta un salto qualitativo rispetto alla generazione precedente di strumenti NLP biomedici, e segna l’ingresso dell’NLP clinico in una fase di maturità applicativa.


Riferimenti: Guergana K. Savova et al., “Mayo clinical Text Analysis and Knowledge Extraction System (cTAKES): architecture, component evaluation and applications”, JAMIA 17(5):507-513 (2010). Apache UIMA (uima.apache.org). OpenNLP. UMLS Metathesaurus (NLM). i2b2 — Informatics for Integrating Biology and the Bedside.

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi