| --- |
| license: mit |
| base_model: microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext |
| tags: |
| - token-classification |
| - ner |
| - clinical-trials |
| - biomedical |
| --- |
| |
| # PubMedBERT/BiomedBERT fine-tuned for CHIA clinical trial eligibility NER |
|
|
| Fine-tuned `microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext` for |
| named entity recognition on clinical trial eligibility criteria (CHIA corpus), |
| as part of a course NLP project comparing fine-tuned biomedical transformers |
| vs. GPT-4 prompting. |
|
|
| - **Code / full writeup**: https://github.com/jatinpsingh/NER_Clinical_Trial_Eligibility/tree/main/pmb |
| - **Base model**: PubMedBERT-base (renamed BiomedBERT), Gu et al. 2021 |
| - **Task**: token classification, 31 labels (`O` + 15 entity types x B/I) |
| - **Data**: CHIA eligibility criteria, team's shared fixed split (10,006 train / 1,240 val / 1,163 test sentences -- fold 0 of a 10-fold CV scheme, see below) |
| |
| ## Hyperparameters (matching Li et al. 2022, Table 3) |
| |
| | | | |
| |---|---| |
| | Learning rate | 5e-5 | |
| | Batch size | 8 | |
| | Epochs | 10 | |
| | Max sequence length | 256 | |
| | Adam epsilon | 1e-8 | |
| |
| ## Results |
| |
| **This checkpoint's own fold** (entity-level, test set): |
| |
| | | Precision | Recall | F1 | |
| |---|---|---|---| |
| | Strict (exact span match) | 0.639 | 0.674 | 0.656 | |
| | Relaxed (type + overlap match) | 0.750 | 0.791 | 0.770 | |
| |
| **Full 10-fold cross-validation** (mean +/- std across all 10 folds -- the |
| number directly comparable to Li et al. 2022's own 10-fold-averaged |
| reporting; the weights hosted in this repo are from one of these 10 folds, |
| not a checkpoint averaged across them): |
| |
| | | Precision | Recall | F1 | |
| |---|---|---|---| |
| | Strict | 0.657 +/- 0.013 | 0.682 +/- 0.021 | 0.669 +/- 0.013 | |
| | Relaxed | 0.758 +/- 0.014 | 0.787 +/- 0.024 | 0.772 +/- 0.015 | |
| |
| Both this checkpoint's own score and the 10-fold mean exceed Li et al. 2022's |
| published PubMedBERT numbers on Chia (0.622 strict / 0.744 relaxed). |
| |
| ## Usage |
| |
| ```python |
| from transformers import AutoModelForTokenClassification, AutoTokenizer |
| |
| tokenizer = AutoTokenizer.from_pretrained("ptanwar/pubmedbert-chia-ner") |
| model = AutoModelForTokenClassification.from_pretrained("ptanwar/pubmedbert-chia-ner") |
| ``` |
| |
| ## Known limitations |
| |
| - The hosted weights are one fold's model, not a checkpoint averaged/ensembled |
| across the 10-fold CV run -- treat the single-fold numbers above as this |
| specific checkpoint's performance, and the 10-fold mean +/- std as the more |
| rigorous estimate of the approach's true performance. |
| - Weakest on rare/ambiguous types (`Mood`, `Observation`, `Reference_point`) -- see the full writeup for error analysis. |
|
|