Clinical entity recognition (MACCROBAT)
clinicalLeaderboard
Entity precision, 3 types (token probe)
Share of the probe's predicted problem, treatment and test spans that are exact annotated spans of the same type (same strict IOB2 span matching and the same per-sentence counts as `entity_f1`); 0 when nothing is predicted.
Best in the catalogue: 0.709 (the best visible result here, not a state of the art). Ranks are the server's: ties share a rank. A ≠ marks a row whose n differs from the board's usual n (100). Floors are trivial baselines scored on the same items, shown unranked.
| # | Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|---|
| 1 | bio-nlp/biomedical-ner-all | 0.709 best | [0.627, 0.782] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: bio-nlp/maccrobat-biomedical-ner |
| 2 | bio-nlp/biomedvlp-cxr-bert-specialized | 0.533 | [0.459, 0.608] | 100 | reproduced | unknown |
| 3 | bio-nlp/biomednlp-biomedbert-base-uncased-abstract-fulltext | 0.500 | [0.433, 0.567] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| 4 | bio-nlp/clinical-assertion-negation-bert | 0.493 | [0.426, 0.560] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| 5 | bio-nlp/roberta-base-biomedical-es | 0.474 | [0.405, 0.546] | 100 | reproduced | none declared |
| 6 | bio-nlp/biobert-base-cased-v1-2 | 0.474 | [0.403, 0.542] | 100 | reproduced | unknown |
| 7 | bio-nlp/biogpt-large | 0.469 | [0.385, 0.552] | 100 | reproduced | unknown |
| 8 | bio-nlp/pubmedbert-base-embeddings | 0.464 | [0.388, 0.537] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| 9 | bio-nlp/bert-base-uncased-clinical-ner | 0.462 | [0.390, 0.531] | 100 | reproduced | none declared |
| 10 | bio-nlp/sapbert-from-roberta-base-biomedical-clinical-es | 0.459 | [0.399, 0.520] | 100 | reproduced | none declared |
| 11 | bio-nlp/clinicalbert | 0.457 | [0.388, 0.528] | 100 | reproduced | unknown |
| 12 | bio-nlp/scibert-scivocab-uncased | 0.450 | [0.384, 0.522] | 100 | reproduced | unknown |
| 13 | bio-nlp/bio-clinicalbert | 0.444 | [0.378, 0.509] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| 14 | bio-nlp/biomedlm | 0.433 | [0.367, 0.502] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| 15 | bio-nlp/sapbert-from-pubmedbert-fulltext | 0.394 | [0.314, 0.485] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| 16 | bio-nlp/s-pubmedbert-medquad | 0.340 | [0.281, 0.410] | 100 | reproduced | unknown |
Secondary metrics (1) · probe · context, not ranked
Entity macro F1, 3 types (token probe)
Unweighted mean over the entity types of the probe's strict span F1 (seqeval average="macro", over the types present in the annotations or the predictions).
| Model | Value | 95% CI | n | Source | Overlap |
|---|---|---|---|---|---|
| bio-nlp/biomedical-ner-all | 0.728 best | [0.643, 0.796] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: bio-nlp/maccrobat-biomedical-ner |
| bio-nlp/biomedvlp-cxr-bert-specialized | 0.568 | [0.480, 0.636] | 100 | reproduced | unknown |
| bio-nlp/clinical-assertion-negation-bert | 0.524 | [0.443, 0.594] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| bio-nlp/biomednlp-biomedbert-base-uncased-abstract-fulltext | 0.522 | [0.443, 0.594] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| bio-nlp/bert-base-uncased-clinical-ner | 0.517 | [0.439, 0.588] | 100 | reproduced | none declared |
| bio-nlp/roberta-base-biomedical-es | 0.496 | [0.412, 0.573] | 100 | reproduced | none declared |
| bio-nlp/pubmedbert-base-embeddings | 0.491 | [0.408, 0.556] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| bio-nlp/biobert-base-cased-v1-2 | 0.489 | [0.404, 0.564] | 100 | reproduced | unknown |
| bio-nlp/clinicalbert | 0.484 | [0.408, 0.552] | 100 | reproduced | unknown |
| bio-nlp/sapbert-from-roberta-base-biomedical-clinical-es | 0.479 | [0.412, 0.537] | 100 | reproduced | none declared |
| bio-nlp/bio-clinicalbert | 0.472 | [0.397, 0.535] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| bio-nlp/biogpt-large | 0.458 | [0.378, 0.534] | 100 | reproduced | unknown |
| bio-nlp/biomedlm | 0.453 | [0.381, 0.520] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| bio-nlp/scibert-scivocab-uncased | 0.451 | [0.382, 0.520] | 100 | reproduced | unknown |
| bio-nlp/sapbert-from-pubmedbert-fulltext | 0.401 | [0.317, 0.477] | 100 | reproduced | overlapTrain/test overlap declared by the evaluator: PubMed Central full text |
| bio-nlp/s-pubmedbert-medquad | 0.382 | [0.316, 0.453] | 100 | reproduced | unknown |
Protocol
What is measured. Finding the clinical problems, treatments and tests mentioned in sentences of clinical case reports, with exact boundaries, on reports never seen in training.
Data. MACCROBAT 2020 (Caufield et al., BMC Med Inform Decis Mak
2019): 200 PubMed Central case reports edited down to their clinical
content, one sentence per line, with manual brat annotations of 41 entity
types, as converted to JSON in singh-aditya/MACCROBAT_biomedical_ner
(the converter drops discontinuous entities and, where entities overlap,
keeps the earliest-starting one). 4,541 non-empty sentences.
Types. The 41 types are mapped onto the three concept types of the i2b2/VA 2010 challenge, the label space of the hub's clinical NER heads:
| MACCROBAT type | type here |
|---|---|
| Sign_symptom, Disease_disorder | problem |
| Medication, Therapeutic_procedure | treatment |
| Diagnostic_procedure | test |
| the 36 others (Lab_value, Biological_structure, Dosage, Age, Date, ...) | O |
Lab_value is a result ("elevated", "12 mg/dl"), not the name of a test. The corpus then holds 4,656 problem, 2,098 treatment and 4,574 test mentions.
Words. Each sentence is cut into words (runs of letters/digits, single punctuation marks, also cut at mention boundaries); gold tags are IOB2 per word; every model is scored on these words.
Items. No split is published. 100 test sentences are drawn by
seed-hash rank over all sentences; every sentence of a case report that
has a test sentence is then removed from the train pool, and 500 train
sentences are drawn from the remaining reports (report-disjoint, column
document).
Zero-shot (entity_f1_zero_shot; capability predict.ner). A
model's own token-classification head tags the same words (each word
takes its first sub-word's tag); native types are mapped by a fixed table
(identity for i2b2-style heads, the table above for MACCROBAT-style
heads, everything else O).
Probe (entity_f1_probe; capability embed.text.tokens, pooling
word_mean). One vector per gold word (mean of last-layer sub-word
states); a logistic head over the 7 IOB2 tags is fit on the words of the
500 train sentences and tags each test word independently; an I-X after O
starts a mention (conlleval-style repair).
Metric. Strict micro F1 over (type, first word, last word) mentions, pooled over the 100 sentences. 95 % bootstrap interval, 1,000 resamples of whole case reports (sentences of one report are not independent).
Caveats — known overlap. bio-nlp/biomedical-ner-all
(d4data/biomedical-ner-all) was trained on MACCROBAT: its zero-shot
number is on its own training data and is flagged by the overlap marker
of its results (it declares trained_on this dataset). Its mapped
numbers are an upper bound, not a transfer measure. The i2b2-trained head
(samrawal) transfers across annotation guidelines, which differ (MACCROBAT
splits a finding into Sign_symptom and Biological_structure where i2b2
marks one problem span), so its F1 understates its recall of concepts.
Precision, recall and macro F1 (entity_precision_zero_shot,
entity_precision_probe, entity_recall_zero_shot,
entity_recall_probe, entity_macro_f1_zero_shot,
entity_macro_f1_probe; metrics review). Precision and recall are the two
halves of the micro F1, from the same strict span matching (0 precision
when nothing is predicted); the macro F1 is the unweighted mean of the
per-type F1 (seqeval average="macro", over the types present in the
annotations or the predictions of each resample). The per-type values are
stored with each result. Same cluster bootstrap over documents.
Data
maccrobat: hf_datasetsingh-aditya/MACCROBAT_biomedical_nerat revision1470ebf27c9fdf65850ceb841ccd757e4aa79aa5, licence mit, catalogued asbio-nlp/maccrobat-biomedical-ner
Subset
- seed 20261006
- test: 100 item(s)
- train: 500 item(s), disjoint by document
- results at
atlas-n100-v1use subsetc1e3a87a110e1e36
Metrics
entity_f1_zero_shot— Entity F1, 3 types (native NER head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_f1_probe— Entity F1, 3 types (token probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_precision_zero_shot— Entity precision, 3 types (native NER head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_recall_zero_shot— Entity recall, 3 types (native NER head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_macro_f1_zero_shot— Entity macro F1, 3 types (native NER head); protocol zero_shot; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_precision_probe— Entity precision, 3 types (token probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_recall_probe— Entity recall, 3 types (token probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by documententity_macro_f1_probe— Entity macro F1, 3 types (token probe); protocol probe; higher is better; range [0.0, 1.0]; 95% bootstrap CI, 1000 resamples, grouped by document
Sample
Three training sentences (input: the sentence and its words; expected output: one IOB2 tag per word, shown as the mentions they form):
| item_id | sentence | mentions |
|---|---|---|
maccrobat-d002-s005 | One month earlier he had undergone a laparotomy to excise a complex ileo-cutaneous fistula with blind tracts, and two weeks earlier a defunctioning ileostomy had been created in view of persistent abdominal pain. | treatment: laparotomy; problem: fistula; treatment: ileostomy; problem: pain |
maccrobat-d002-s016 | Urea and electrolytes, complement, urine analysis and microscopy were normal. | test: Urea; test: electrolytes; test: complement; test: urine analysis; test: microscopy |
maccrobat-d000-s005 | The anterior tricuspid valve leaflet was elongated (Fig.2C, arrow), whereas the septal leaflet was rudimentary (Fig.2C, arrowhead). | problem: elongated; problem: rudimentary |
In the second, urine analysis is two words tagged B-test I-test. In the
first and third, MACCROBAT annotates the anatomy ("abdominal",
"anterior tricuspid valve leaflet") and the qualifiers ("complex",
"ileo-cutaneous", "persistent") as separate types, which map to O: a model
tagging "abdominal pain" as one problem misses the gold "pain".