# Dutch Ade Corpus Eval

> This benchmark evaluates transformer and Bi-LSTM models for detecting adverse drug events (ADEs) in Dutch clinical free text. It probes named entity recognition for drugs and disorders, relation classification for ADE and prescribing indication pairs, and document-level ADE detection. The protocol emphasizes handling class imbalance and evaluating performance across strict/lenient entity matching and single vs. grouped ADE relations. Use when the user wants to benchmark on Dutch ADE corpus, ICU AKI corpus, WINGS corpus, or asks about evaluating this task. Reports macro-F1.

- Skill: `qhjqhj00/dutch-ade-corpus-eval` (Agent Skill)
- Install (CLI): `npx skillmds add qhjqhj00/dutch-ade-corpus-eval`
- Raw SKILL.md: https://api.skillmd.com/api/skills/qhjqhj00/dutch-ade-corpus-eval/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: qhjqhj00 (https://skillmd.com/u/qhjqhj00)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/qhjqhj00/dutch-ade-corpus-eval

---


# dutch-ade-corpus-eval

> Detection of Adverse Drug Events in Dutch clinical free text documents using Transformer Models: benchmark study — Murphy et al. (2025) (arXiv:2507.19396, 2025)

## What this evaluates

This benchmark evaluates transformer and Bi-LSTM models for detecting adverse drug events (ADEs) in Dutch clinical free text. It probes named entity recognition for drugs and disorders, relation classification for ADE and prescribing indication pairs, and document-level ADE detection. The protocol emphasizes handling class imbalance and evaluating performance across strict/lenient entity matching and single vs. grouped ADE relations.

## Datasets

- **Dutch ADE corpus** — total ?; splits: train (-1), val (-1), test (-1)
- **ICU AKI corpus** — total ?; splits: test (-1)
- **WINGS corpus** — total ?; splits: test (-1)

## Metrics

- `macro-F1` **(primary)** — range: [0, 1]
  - F1 = 2 * (precision * recall) / (precision + recall). Macro-averaging computes F1 for each class independently and averages them equally, treating each class as equally important regardless of support.
- `micro-F1` — range: [0, 1]
  - Computes global precision and recall across all instances before calculating F1, giving equal weight to every prediction rather than each class.
- `F2 score` — range: [0, 1]
  - F-beta score with beta=2, weighting recall twice as heavily as precision to prioritize catching all ADE mentions over precision.

## Input / output format

**Input**: Clinical sentences or full notes containing drug and disorder mentions. For relation classification, inputs include contextualized embeddings for the CLS token and two candidate entities (≤4 sentences apart), plus entity label probability vectors.

**Output**: Per-token BIO probability distributions (B/drug, I/drug, B/disorder, I/disorder, O). Binary classification probabilities for ADE vs non-ADE and prescribing indication vs no prescribing indication for each entity pair. Document-level binary ADE presence label.

## Scoring recipe

```python
def compute_f1(y_true, y_pred, average='macro', matching='strict'):
    if matching == 'strict':
        y_true, y_pred = exact_span_align(y_true, y_pred)
    elif matching == 'lenient':
        y_true, y_pred = token_overlap_align(y_true, y_pred)
    return f1_score(y_true, y_pred, average=average, zero_division=0)
# Threshold selection: search PR curve on validation set to find threshold maximizing F2
```

## Common pitfalls

- Micro-averaging F1 can mask poor performance on minority classes in highly imbalanced clinical datasets.
- Strict vs. lenient entity matching drastically changes NER scores; exact span matches are required for strict, while token overlap suffices for lenient.
- Evaluating at the single ADE relation level versus the unique ADE group level (easy vs. hard setting) yields fundamentally different clinical utility assessments.

## Evidence (verbatim from paper)

> For all tasks, we calculated micro- and macro-averaged F1 score using the python scikit-learn library [32]. Macro-averaging shows the performance across classes treating each class as equally important, whereas micro-averaging gives equal weight to every instance and shows average performance across all predictions. Micro-averaging can hide low performance on minority classes for classification problems with class imbalance.

## Citation

```bibtex
@misc{murphy2025detection,
  title={Detection of Adverse Drug Events in Dutch clinical free text documents using Transformer Models: benchmark study},
  author={Murphy et al. (2025)},
  year={2025},
  note={arXiv:2507.19396}
}
```

- arXiv: 2507.19396

