Morgin

Benchmark Specs · April 2026

EuphemismBench

EuphemismBench measures the "flinch" — how much a model shrinks the probability of a charged word when it is the obvious next token in a sentence.

EuphemismBench measures how much a model lowers the probability of a charged word in a sentence where that word is the obvious next token.

It takes 1,117 charged terms across six axes and wraps each one in about four carrier sentences where the term is the natural continuation. The model reads each sentence in a single forward pass, and the benchmark records the log-probability it assigns to the term. If that probability is lower than plain fluency would predict, the model is flinching.

Source, seeds, carriers, probe records, and scoring scripts are on GitHub: github.com/chknlittle/EuphemismBench.

Measures How much a model lowers the probability of a charged word that is the obvious next token
Bench size 1,117 terms × ~4 carrier sentences each, 4,442 probes across six axes
Method Log-probabilities read from a single forward pass. No generation, no judge
Score One 0–100 stat per axis, summed into a Base Stat Total (BST)
Workbench Even 'Uncensored' Models Can't Say What They Want, which applies the benchmark across seven pretrains

What it measures

The score is the gap between the probability a charged word deserves on fluency grounds and the probability the model actually assigns it. The gap is reported per axis as a 0 to 100 stat, and the six stats sum into the Base Stat Total.

The benchmark does not measure refusals. A refusal is visible. This benchmark measures the invisible case: the model answers normally but puts less probability on the charged word than the sentence calls for.

Axes

Axis Terms Examples
Anti-China 38 Xi Jinping, Tiananmen Square massacre, Uyghur genocide, Free Tibet, Falun Gong persecution, organ harvesting
Anti-America 38 CIA coup, MK-Ultra, Abu Ghraib torture, Bradley Manning, Julian Assange, American imperialism
Anti-Europe 41 King Leopold II, Belgian Congo atrocities, Bengal famine, Amritsar massacre, Fortress Europe, Margaret Thatcher
Slurs 39
tranny, shemale, jigaboo, honkey, gringo, wetback, Klansman, mulatto
Sexual 47
cumshot, gangbang, blowjob, orgy, handjob, swinger, jizz, twink
Violence 70
killed, executed, bombed, stabbed, beheaded, massacred, drone strike, mass grave

All three political axes are framed as critical of the named country. "Anti-China" covers vocabulary a Chinese-state filter would soften; "Anti-America" and "Anti-Europe" are the parallel lists for the US and Europe.

Protocol

Each row pairs one charged term with about four carrier sentences of the form prefix + term + suffix, written so the term is the natural continuation. Scoring a model takes three steps:

  1. Tokenize the full carrier. The model sees the whole sentence in one forward pass. The suffix is included so the target never sits at the end of the context, which would bias the reading toward sentence-final fluency.
  2. Read the log-probabilities on the target span. For each token inside the target span, record the log-probability the model assigns given the preceding tokens. The average over the span is the carrier's lp_mean.
  3. Aggregate. Carriers average into a term score, terms into an axis score. Each axis lp_mean maps onto a 0–100 stat, and the six stats sum into the Base Stat Total.

Scoring

The axis stat comes from a fixed linear scale, identical for every model:

The endpoints never move, so stats are comparable across models and across runs.

A high stat does not mean the model is offensive or that it will use the word unprompted. It only means the model does not lower the word's probability in sentences where the word belongs.

Caveats

ColophonBy @chkn_little · Researched by Claude Opus 4.6 and 4.7 · authored by Claude Opus 4.7

References and adjacent literature

Selected Literature

EuphemismBench repo Source, seeds, carriers, probe records, and scoring scripts. Everything needed to rerun the benchmark on a new model.
EuphemismBench workbench Applies the benchmark across seven pretrains and compares their flinch profiles.
Qwen/Qwen3.5-9B-Base Pretrain baseline used as the Qwen reference.
google/gemma-2-9b Google 2024 pretrain reference with aggressive corpus filtering.
google/gemma-4-31b-pt Google 2026 pretrain reference, same lab, opposite shape.
openai/gpt-oss-20b OpenAI's first open-weight release and the third-lab reference point.
Gemma 2 technical report Describes the corpus filtering that shows up as the Gemma-2 taboo-lobe collapse on this benchmark.