pubmedbert-chia-ner / README.md
ptanwar's picture
Upload README.md with huggingface_hub
0f6c18a verified
|
Raw
History Blame Contribute Delete
2.6 kB
---
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.