Menturu

Propaganda Detector

Paste an article, or a link to one, to highlight the rhetorical techniques it uses.

ptc@menturu.dev:~

ptc, a two-stage DeBERTa-v3 tagger for the 14 propaganda techniques of SemEval-2020 Task 11. Highlights are suggestions, not verdicts: span detection tops out near 0.5 F1 even for the best systems.

$ ptc analyze --min-confidence <<EOF

EOFor Ctrl+Enter
Changelog

Loading the changelog...

View on GitHub

About this project

The Propaganda Detector reads a news article and highlights passages that use propaganda techniques, such as loaded language, name calling, appeals to fear and slogans, then labels which technique each one is.

It's built on SemEval-2020 Task 11, a shared research task where teams from around the world built systems for exactly this problem. The task defines 14 techniques, and this project follows that list and that way of measuring success, so that results can be compared with published work.

Highlights are suggestions, not verdicts. Even trained annotators often disagree about what counts as propaganda, and the best competition systems found only about half of the passages humans marked. Treat a highlight as a prompt to read that sentence more carefully, not as a judgement on the article or its author.

How it works

The detector works in two stages, the same way the task itself is split up.

  1. Finding passages. A DeBERTa-v3 model reads the article and marks each word as the start of, the inside of, or outside a propagandistic passage. A CRF layer on top keeps those marks consistent, so that each passage comes out as one clean, unbroken span.
  2. Naming the technique. Each passage goes to a second DeBERTa-v3 model, with marker tokens placed around it so the model sees both the passage and the text around it. It picks one of the 14 techniques, or "none" when the first stage raised a false alarm.

Every highlight carries two confidence scores: first, how sure the first stage is that the passage is propagandistic, and second, how sure the second stage is about the technique. The --min-confidencesetting above filters on the two multiplied together.

Results

Three numbers are measured, as each represents something different:

Scores are the mean and spread over 6 training runs with different random seeds, measured on 30 held-out development articles that the models never train on. The competition was ranked on a separate test set whose labels aren't public, so other teams' development scores are the closest comparison. Theirs cover the full 75-article development set rather than these 30, so treat the comparison as approximate. End to end is much lower than either stage alone because mistakes compound, and a passage the first stage misses can never be labelled correctly.

Full results, including scores for each technique, are inResults/121026.md(12 October 2026).

Limitations