Skip to content

Back to the catalog

Character-Name Concentration in LLM Fiction: Measuring Displacement and Mitigating Repetition
arxiv.orgpaper

Character-Name Concentration in LLM Fiction: Measuring Displacement and Mitigating Repetition

Speculative naming is a fine-tuning-free method that cuts character-name repetition in LLM fiction. It adapts draft-verify-reject from speculative decoding to names, using verbalized sampling and a SlopTracker that combines a per-model fingerprint with a runtime counter. Across 20 LLMs and 44,782 stories in four languages, it cut Slop Ratio by 95% and mean collision probability from 7.3% to 0.4%. Static banlists only displaced the concentration to emergent names.

TL;DR Measures eight strategies for curbing repeated LLM character names such as Elara and introduces speculative naming, which cuts name collisions by about 95% without logit access or retraining.
Document

What it claims

Speculative naming is a prompt-level method from Universidad de Málaga (arXiv, October 2026) that controls how often LLM fiction reuses the same character names across a corpus. It needs no logit access and no fine-tuning, so it works with any model behind an API. The paper compares it against seven other configurations: a baseline, an anti-slop prompt, a banlist, two-pass generation, a multiagent reviewer, and three speculative-naming variants. These run on 20 LLMs, 44,782 stories and 88,919 named characters. Beyond the 95% Slop Ratio cut, the verbalized-sampling scaffold alone accounts for 89% on average. Within-story name collisions fall from 4.3% to 0.2%. The share of names attested in civil registries stays close to baseline (42 to 69% by language). Static banlists more than halve that share and push toward invented names.

How it works

Generation is two-pass with one extra call in between:

  1. The model writes the story with placeholders [CHAR_1] ... [CHAR_k].
  2. A drafting call requests K candidate name-sets, each with a self-reported probability p̂ᵢ summing to 1 (verbalized sampling).
  3. Each name gets a slop score s(n) = max(Bₘ(n), R(n)). Bₘ is a per-model frequency fingerprint built once from baseline output and then frozen. R is a runtime counter of name frequency in the current run. The set score sᵢ is the sum over its names.
  4. One set is selected, its names are substituted, and the counter is updated.

Selection has two modes. The soft rule samples set i with probability proportional to p̂ᵢ·exp(−λ·sᵢ). At λ = 0 this is plain verbalized sampling. As λ grows, sampling restricts to the lowest-scoring sets but keeps their relative stated probabilities. HARD mode takes the highest-p̂ set whose names all score below τ = 0.02, and falls back to the minimum-sᵢ set if none qualifies.

flowchart LR
  A[Story with placeholders] --> B[Draft K name-sets + p̂]
  F[Frozen baseline fingerprint] --> C[Score: max of fingerprint, counter]
  R[Runtime counter] --> C
  B --> C
  C --> D{Mode}
  D -->|soft| E[Sample by p̂·exp of −λs]
  D -->|HARD| G[Top p̂ set with all s below 0.02]
  E --> H[Substitute names]
  G --> H
  H --> R

Implementation details that matter for reproduction:

  • The runtime counter stays off until it holds more than 50 named characters (cold start).
  • Names are normalized to the first given name, lowercased, with diacritics stripped. Single-character tokens are dropped.
  • The counter counts character entities, not mentions.
  • One counter is shared per model-strategy cell across all four languages and both input modes. A name overused in English is penalized in Spanish too.

Evidence

The metric is the Slop Ratio, a list-free collision measure split into known and emergent components. This split separates real removal from displacement. Mean collision probability falls from 7.3% to 0.4% under speculative naming, and known-name collisions stay at zero. Banlists lower the known component but raise the emergent one, which the authors call a "balloon effect". Two-pass generation is tested specifically for whether concentration re-emerges on new names.

The authors report other findings:

  • Dynamic runtime scoring gives the lowest concentration at a fixed cost premium over cheaper strategies.
  • Vision input lowers slop in four of five dual-mode model families.
  • Slop profiles are model- and language-specific.
  • Reasoning mode leaves name diversity unchanged.
  • The strategy ranking holds across languages, families and name-counting conventions.

Statistics use bootstrap CIs, effect sizes and Holm-corrected tests.

How to use it

The fetched text gives no code, repository or licence. It does give the full algorithm, including the HARD threshold, the cold-start size and the normalization rules. The method requires a story prompt that can be rewritten to emit placeholders, plus a baseline run per model to build the fingerprint.

Limits

  • The tracker scores names independently, so two placeholders in one set can get the same normalized name. Such collisions are only penalized in later stories.
  • The method covers names only. The authors leave broader creative diversity open.
  • The method costs one model call more than plain two-pass generation. The fetched text does not quantify the premium.
  • The fetched text stops partway through Section 3, so per-model tables, the language list and cost figures were not available.

Organisations named here

  • arXiv

Technologies named here

  • LLM
  • SlopTracker

Techniques named here

  • Verbalized Sampling
  • Speculative decoding
  • HARD
  • speculative naming

Concepts named here

  • AI slop
  • Displacement of concentration
  • Name concentration
  • Name naturalness
  • Slop Ratio
  • SlopTracker