Skip to content

Beginner Lecturer Research Grant 2026 · TRL 3 · proof of concept

The evidence on palliative drug side effects is already in the literature.It is the form it takes that cannot be used.

Scattered across thousands of articles, written as free-running prose, never arranged so a nurse can read it while drawing up a care plan. This model reads them one at a time and assembles a map that is measurable and traceable back to the sentence it came from.

The Simulation page runs that model for real — not a recording, not an animation. Upload one article and every stage opens with its own numbers.

0

articles in

palliative oncology PDFs

0

passed the relevance filter

142 dropped: not about palliative care or drug side effects

0

operational

precision 0.94

0

candidate

precision 0.43

01 What gets thrown away first

This model rejected 1,223 sentences and accepted 919

Nearly every demonstration of machine learning opens with its results. This one opens with its discard pile, because that is where the largest number is. Each red dot is one sentence the meaning filters refused — a sentence naming a drug and a side effect side by side, examined, and then not used.

1,223 · 919

1,223 dots · one dot, one rejected sentence

02 Why they went

Four reasons, recorded by the pipeline itself

Rejection is not one decision but four separate checks. The largest is sentences that name both without stating any cause at all; next are sentences naming the effect as the reason the drug was given.

NO_CAUSAL_SIGNAL 334 · NON_ADVERSE_CONTEXT 321 · DEPENDENCY_NOT_FOUND_FALLBACK_USED 290 · DISTANCE_EXCEEDED 278

  • NO_CAUSAL_SIGNAL334
  • NON_ADVERSE_CONTEXT321
  • DEPENDENCY_NOT_FOUND_FALLBACK_USED290
  • DISTANCE_EXCEEDED278
  • All four counts are recorded against sentences, not against drug–effect pairs. So no relation on the map can be pointed to as the casualty of any one code.

03 What survived

The remainder, beside what was discarded

Two fields at the same scale. Left, rejected; right, accepted by the advanced path. The baseline path — no meaning filters — accepts 1,782 pairs, and that gap is the study's subject: precision 0.94 against 0.43.

1,782 ‖ 919

Rejected

1,223

Accepted by the advanced path

919

04 Back a step — where the sentences came from

137,906 sentences, 92,713 of them carrying a causal signal

The 1,223 and the 919 came from here. The whole corpus was cut into sentences, then filtered for those carrying a marker of cause. The field beside this does not draw all of them — it cannot, and pretending otherwise would be an unnecessary lie.

137,906 → 92,713

1 dot = 100 sentences · blue = carries a causal signal

05 Back again — where the sentences began

405 articles, 263 through the domain filter

It began simply: a pile of PDFs. The domain filter looks for terms of cancer, opioids, adverse effects and palliative care, then drops the 142 articles that do not qualify. What is measured is topical relevance, not the quality of the research.

405 → 263 · 142

263 kept · 142 dropped · grey means dropped

06 Forward — two branches, not one funnel

The 76 operational and the 160 candidates come from different paths

This is where the pipeline forks, and its two outputs must not be read as the same thing. The advanced branch filters sentence meaning and then requires a pair to appear at least twice — that is what produces the 76. The baseline branch filters no meaning at all; what it leaves is kept as candidates for expert review. The two sets share not a single pair.

151 → 76 ‖ 236 → 160

Advanced branch — meaning filtered

Distinct pairs151
Operational76

The frequency gate of ≥2 cuts 151 down to 76.

Baseline branch — no meaning filter

Scored pairs236
Candidates160

160 is what remains once the 76 operational are taken out — still holding clinically inverted relations, such as naloxone with respiratory depression when naloxone is the antidote.

The 160 stays on screen because the contrast between two levels of evidence is the argument. What is withheld is which candidate pairs they are, not how many.

07 The map — and its error

76 relations, and how often this model is wrong

Nineteen drugs, eighteen side effects, seventy-six lines. Then, unasked, its confidence interval. Almost every demonstration hides this part; putting it at the end of the story is why this site is a research instrument and not a brochure.

76 · 19 · 18

Measured against human annotation

F1 0.821

0.66795% confidence interval0.939

Precision 0.941 · recall 0.727

The four cells that produced that figure

Found, correctly
16
Found, wrongly
1
Missed
6
Correctly left alone
37

F1 is computed from 23 observations — the first three cells. The fourth, 37 correct rejections, contributes nothing to F1 at all.

The unit is a sentence-level annotation decision, not a drug–effect pair: the gold set samples sentences, and the notebook scores this row per sentence. The scope is adverse drug effects, which is what this pipeline claims — not everything in the corpus.

Open the full map

The core argument

Why two numbers, not one

Operational — 76 pairs

Already through the sentence-meaning filters and evaluated against a pharmacist's annotations. Precision 0.94 within the drug side-effect scope.

Candidate — 160 pairs

Raw co-occurrence, unfiltered. Precision 0.43. It still contains relations that are clinically inverted — naloxone with respiratory depression, when naloxone is the antidote. Kept precisely so that an expert can review them.

That gap, 0.94 against 0.43, is why the two are reported separately, and why the identities of the candidate pairs are not published on this site before an expert has judged them.