A reference corridor from Effi Briest: measuring a draft against its own model
Posted · 7 minutes · Blog
The problem with external style rules
Style guides can tell you that a mean sentence length of 12 words is “brisk” and 24 words is “dense”. What they cannot tell you is whether your novel already lives at 19, whether chapter 4 broke that pattern on purpose, or whether the break holds for three chapters straight. Fixed norms make every manuscript an exception; a reference built from the manuscript itself is what actually describes change.
The idea: a corridor from the manuscript's own chapters
Lixity computes, for each style feature (sentence length, staccato share, dialogue share, perception filters, modals, passive voice, nominalisations, adjectives, long words, sentence-start entropy, first-person starts, lexical diversity measures and more), a robust description of the chapters you already wrote: a median and a spread derived from the median absolute deviation. From that it derives a band — a reference corridor — and reports for every chapter how far it sits outside it.
Two details keep this useful instead of noisy:
- Noise adjustment. Each deviation is divided by the combined uncertainty of the chapter estimate and the baseline (
z*). A short chapter with a shaky estimate cannot fake a strong signal as easily. - Multiplicity control. Every chapter–feature cell is tested, so the plain number of deviations grows with the table size. The report selects cells with a Benjamini–Hochberg (or Benjamini–Yekutieli) procedure and separately tells you how many hits a random baseline would suggest (methods).
Walkthrough: the public example
Open the Effi Briest example in the browser. It is a complete analysis — setting, measurements, PDF report — of a public-domain novel plus a short continuation draft, and it shows the three views this article is about:
- The chapter map (heatmap). Rows are chapters, columns are features; colour encodes the noise-adjusted deviation from the manuscript's own reference. Scanning a row tells you which feature moved in that chapter; scanning a column tells you where a feature drifts over the book. A selected set of cells is the FDR set — the rest are visible but unselected.
- The style reference (bands). Each feature shows its corridor, the median tick and the strongest outliers as dots. This is the “what is normal here” view — the part a fixed style rule cannot provide.
- The chapter matrix (drift column). The reference summary of every chapter: words, sentence length, dialogue share, function words, tense, flags and the number of selected deviations.
The productive question is never “is this chapter good?” but “what happened in chapter 6 — and was it on purpose?”. Deviations are questions to the text: a chapter that sheds dialogue may be a solitary interior section; a jump in nominalisation may be a documentary letter; a drop in sentence length may be the action scene you intended.
Try it on your own draft
For a quick reference from the command line:
uv tool install --python 3.12 --managed-python lixity
lixity style manuscript.md --json
Or open the interactive view: lixity service start --open, then choose Open Project. The style panels are in the Manuscript & Analysis view; the section navigation above the chapters jumps to Style directly.
What it does not say
All features are language-specific and comparable only within one language; density counts use curated marker lists per language. Short chapters have noisy estimates — the report exposes the approximate standard error, and missing uncertainty is treated as zero, not as certainty. The FDR selection controls the expected share of false discoveries under a normal null, which same-sample baselines need not follow; it is a filter, not a guarantee. Most importantly: no deviation is an error, and no result is a quality score. The measurements describe the text; the author decides what the text should do.