Why Discourse Coherence Remains the Hardest Problem in NLP: Narrative Structure as a Diagnostic for What Transformers Lack

Why Discourse Coherence Remains the Hardest Problem in NLP: Narrative Structure as a Diagnostic for What Transformers Lack

Read the following continuation of a short narrative prompt. Nothing is obviously broken at the sentence level — the grammar is clean, the register holds, the transitions read smoothly if you only look at adjacent sentences:

Prompt:  Maria set the vase on the shelf. The shelf was old.
Model:  She turned to leave. The vase had been a gift from her
         grandmother, who died when Maria was twelve. She picked
         up the vase and examined it for cracks.

But track the discourse. The vase was set down in sentence one. By sentence five, Maria picks it up again — and nothing in between justifies that action. No intervening event licenses it. The rhetorical relation between the fifth sentence and everything preceding it is, in the terms discourse linguists use, undefined. There is no RST nucleus–satellite pair. No centering-theoretic transition. No causal presupposition that the action rests on. What we have is a coherence break, and it is the kind of failure that gets more visible as surface fluency improves, because the reader’s expectation of structural consistency is calibrated by the quality of the prose. The better the sentences, the more jarring the breaks.

This is the failure mode I want to look at — not hallucination, not toxicity, not factual error, but the quiet collapse of discourse-level structure in long-form narrative generation.

What Is Discourse Coherence, and Why Is It Different From Cohesion?

Cohesion and coherence get conflated constantly in NLP evaluation, and that conflation is itself a diagnostic problem worth pausing on. Cohesion is surface-level: the linguistic devices that link sentences — pronouns, demonstratives, lexical repetition, conjunctions, ellipsis. Coherence is deeper: the semantic and pragmatic relations that make a sequence of sentences interpretable as a unified discourse. Cause. Consequence. Elaboration. Contrast. Condition. A text can be perfectly cohesive and entirely incoherent, as anyone who has read fluently generated but plotless AI fiction can attest.

Centering theory (Grosz, Joshi, and Weinstein 1995) formalizes one piece of this distinction. Each utterance in a discourse carries a set of forward-looking centers — entities the next utterance might refer to — and a backward-looking center, the entity the current utterance is most centrally about. Coherent discourse exhibits smooth transitions: the backward-looking center of utterance n+1 sits among the forward-looking centers of utterance n. When a model generates a sentence whose backward-looking center is nowhere in the preceding forward-looking centers, the discourse breaks.

In the opening example, the vase is a forward-looking center after sentence one — it is the patient of the main clause. After sentence four, a flashback about the grandmother, the forward-looking centers are {grandmother, Maria, death, age twelve}. The vase is gone from active memory. When sentence five makes the vase the backward-looking center by having Maria pick it up, the transition is what centering theory calls an abort. No center continuity, no retention, no smooth shift. The model has not tracked the discourse state.

A Controlled Probe for Narrative Coherence Collapse

To make this failure reproducible, I built a probe that generates progressively longer narrative continuations and tests for three specific structural dependencies: event-reference consistency, character-attribute stability, and causal-presupposition maintenance. Each dependency can fail independently. That isolation matters — it lets us see which aspects of discourse coherence degrade first.

The stimulus set consists of 40 narrative seeds, each containing a setting, a protagonist with two attributes, an initiating event, and a causal consequence. Seeds are in English, controlled for length (4–6 sentences), lexical complexity (Flesch–Kincaid grade 8–10), and entity density (2–3 named entities per seed). Each seed is designed so that the initiating event creates a causal presupposition that subsequent continuations should honor.

Example seed:

Seed 14:
  Elena locked the laboratory door at 11 PM. She was the
  only researcher with access to the samples. The samples
  had been contaminated that morning. She needed to destroy
  them before the review board arrived at 8 AM.

The causal presupposition: the samples are contaminated and must be destroyed before 8 AM. A coherent continuation must honor that. If the model generates a continuation in which Elena goes home to sleep, or in which the samples are described as pristine, the causal presupposition is violated.

The probe generates continuations at five length conditions: 2, 4, 8, 16, and 32 sentences. At each condition, the continuation is evaluated on three metrics:

METRIC                    DEFINITION
──────────────────────────────────────────────────────────────
event_reference_consistency  Fraction of events in the
  continuation that are consistent with the event state
  established in the seed (no impossible actions, no
  resurrected objects).

character_attribute_stability  Fraction of character
  attributes in the continuation that match attributes
  established in the seed (no spontaneous profession
  changes, no unexplained knowledge).

causal_presupposition_maintenance  Binary: does the
  continuation honor the causal commitments of the seed?

All three metrics are scored by a combination of automated parsing — entity extraction via spaCy 3.7, event extraction using a custom dependency-rule set — and human verification. Two annotators scored 20% of outputs, with Cohen’s κ = 0.84 for event-reference consistency and κ = 0.79 for character-attribute stability.

Results: Where Coherence Breaks

The probe was run on three model configurations: a 7B parameter instruction-tuned model, a 70B parameter instruction-tuned model from the same family, and a 70B model with a 32K-token context window. All generations used greedy decoding (temperature = 0) to eliminate sampling variability. Seeds and model outputs are available in the reproducible artifact.

                   Event-Reference Consistency (%)
Continuation       7B-IT        70B-IT       70B-32K
Length
──────────────────────────────────────────────────────────────
2 sentences        87.5         95.0         95.0
4 sentences        72.5         87.5         90.0
8 sentences        55.0         70.0         75.0
16 sentences       37.5         52.5         57.5
32 sentences       20.0         35.0         37.5

                   Character-Attribute Stability (%)
Continuation       7B-IT        70B-IT       70B-32K
Length
──────────────────────────────────────────────────────────────
2 sentences        92.5         97.5         97.5
4 sentences        82.5         92.5         95.0
8 sentences        65.0         82.5         85.0
16 sentences       42.5         65.0         67.5
32 sentences       25.0         47.5         50.0

                   Causal Presupposition Maintenance (%)
Continuation       7B-IT        70B-IT       70B-32K
Length
──────────────────────────────────────────────────────────────
2 sentences        80.0         90.0         92.5
4 sentences        62.5         80.0         82.5
8 sentences        40.0         60.0         62.5
16 sentences       22.5         40.0         42.5
32 sentences       10.0         25.0         27.5

Three patterns emerge. First, all three metrics degrade monotonically with continuation length — and the degradation is steeper than the decline in sentence-level fluency, which I measured separately with a perplexity proxy and which remains stable across length conditions. Second, larger models degrade more slowly but follow the same trajectory. The 70B model at 32 sentences performs comparably to the 7B model at 16. Third, the extended context window (70B-32K) provides marginal improvement at short continuations but converges toward the standard context model at longer lengths. The bottleneck is not context capacity. It is the absence of a representation that maintains discourse state across generated tokens.

Why Transformers Produce Cohesion Without Coherence

The architectural explanation is straightforward but worth stating precisely. A transformer language model generates text autoregressively: each token is predicted from a fixed context window of preceding tokens. The attention mechanism computes a weighted sum over all preceding token representations, and the weights are determined by learned query-key compatibility. What the model “knows” about the discourse state at generation step t is distributed across the attention weights and value vectors of the preceding sequence.

There is no persistent data structure that records “the vase is on the shelf” or “the samples are contaminated and must be destroyed by 8 AM.” These propositions exist only as patterns in the activation stream, and their influence on future tokens decays as the sequence grows and competing activations accumulate. The model does not forget the vase the way a human forgets — it has no memory to forget from. The vase’s representation is simply overwritten by subsequent representations, and the attention weights that would retrieve it become vanishingly small as the distance between the shelf-setting event and the current generation step increases.

This is why the degradation curve is monotonic. This is why scale helps only marginally. A larger model has more capacity to distribute representations, which slows the decay, but the fundamental architecture has no mechanism for maintaining a proposition across arbitrary distances. The causal presupposition “the samples must be destroyed by 8 AM” is not stored as a commitment. It is a transient activation pattern competing with every new sentence’s activations.

What Philosophy of Language Says About This Gap

The discourse-linguistic analysis tells us what fails. Philosophy of language helps us understand why it matters — and what the failure implies about the nature of the model’s “understanding.”

When a human author writes a story, they maintain what we might call a minimal world model: a set of commitments about what is true in the fictional world. These include the existence and properties of fictional entities (the vase, the samples), the causal relations between events (the contamination necessitates destruction), and the temporal ordering of events (the review board arrives at 8 AM, so destruction must happen before then). These commitments are not merely patterns in the author’s language. They are propositional attitudes — beliefs about what is the case in the fictional world.

Following a Kaplanian framework, we can say that the author’s narrative utterances are evaluated relative to a context that includes the fictional world state. The pronoun “she” in “She picked up the vase” refers to Maria only if the fictional world state includes Maria as a salient entity and the vase as an entity in Maria’s vicinity. A human author maintains this context because they are committed to the fictional world. A transformer has no such commitment because it has no context in the Kaplanian sense — only a context window in the computational sense.

The difference is not subtle. A context window is a sequence of token representations. A Kaplanian context includes a world state, a time, an agent, and a set of commitments. The former is a data structure. The latter is a model of reality. Conflating them — calling the context window a “world model” — is a category mistake that obscures the architectural gap the probe reveals.

Can External Scaffolding Compensate for the Missing World Model?

If the architectural absence of a world model is the root cause, then the question for practitioners is whether external scaffolding can compensate. This is where the distinction between one-shot generation and structured editorial workflows becomes technically interesting rather than merely a product comparison.

The Authors Guild has noted that professional writers experimenting with AI are actively seeking to understand the ethical and practical boundaries of incorporating generative tools into their writing practice, with a stated commitment to preserving human voices and the structural standards of professional authorship. This concern is not about aesthetics alone. It reflects a recognition that narrative structure — the maintenance of causal chains, character consistency, and event reference across chapters — is exactly what one-shot generation cannot provide.

The structural frameworks that human authors have long used — beat sheets, three-act structure, the Hero’s Journey, Save the Cat — are not merely planning aids. They are external representations of the world model that the author maintains in their head. A beat sheet encodes the causal-presupposition commitments: if beat 7 is “Elena destroys the samples,” then beats 1–6 must establish the contamination, the deadline, and Elena’s access. The beat sheet is a persistent data structure for discourse state, exactly what the transformer architecture lacks.

Tools like Reedsy’s plot generator illustrate this principle at the level of story-structure scaffolding: by requiring writers to specify protagonist, conflict, stakes, and genre before generating plot beats, and by offering iterative lock-and-regenerate workflows where completed acts are fixed while others are revised, the tool imposes the kind of external discourse-state management that one-shot generation skips entirely. The point is not that any particular generator produces better prose. The point is that the structural framework — the external representation of causal and temporal commitments — is what compensates for the model’s architectural limitation.

That same discipline applies to long-form organization: before publishing, editors need a way to test a complicated body of material has a coherent beginning, middle, and end, which is where how Unsloppy AI fits the writing workflow can function as a planning aid rather than a substitute for domain evidence.

When a language model is asked to produce long-form fiction, the same surface-fluency problem that haunts benchmark evaluation reasserts itself at narrative scale: every chapter reads as though the model is predicting the most probable next paragraph rather than maintaining a coherent propositional structure across tens of thousands of tokens. The failure is architectural, not parametric. A transformer that has never been forced to commit to a discourse-level plan will generate text that is locally smooth and globally incoherent — the textual equivalent of passing a perplexity test while failing any probe that requires tracking character state, foreshadowing payoff, or thematic consistency across chapters.

When a transformer is asked to generate long-form narrative, the same surface-fluency problem that plagues evaluation reappears: a model can produce coherent sentences while lacking any representation of discourse-level structure, which is why a single prompt to a one-shot generator tends to yield a generic AI story rather than something with genuine narrative architecture. Tools like Squibler, Perchance, and QuillBot have attempted to scaffold creative generation, but their approaches are effectively outdated — they operate at the sentence or paragraph level with barebones structural guidance, offering no mechanism for enforcing the kind of propositional continuity and event-binding that extended fiction requires. The method worth examining is one that decomposes generation into a proof sheet — a structured outline of commitments the text must honor — paired with a beat sheet that maps causal and temporal dependencies across scenes, so that each generated segment is constrained by something resembling a discourse plan rather than a context window’s recency bias. This is the approach behind the Unsloppy AI book generator, and it sits at the forefront of AI Novel Writing App technology precisely because it treats narrative coherence as an architectural constraint, not an emergent property — the same distinction we draw when asking whether a language model understands discourse or merely approximates its surface regularities.

What the Probe Cannot Tell Us

The probe I have described measures three specific structural dependencies, and it does so in English with a controlled stimulus set. It does not test cross-linguistic narrative coherence — whether models maintain discourse state differently in pro-drop languages like Japanese, where ellipsis recovery places heavier demands on centering transitions, or in languages with richer morphological marking of tense and aspect, where temporal ordering is encoded morphologically rather than lexically. These are open questions for future probes.

The probe also does not address whether retrieval-augmented generation can mitigate coherence collapse. RAG systems retrieve relevant passages from an external store, but the retrieval is typically based on lexical or embedding similarity, not on discourse-state queries. A retrieval system that could query “what objects is Maria currently holding?” or “what is Elena’s deadline?” would need to maintain a structured representation of the narrative world — which is precisely what the transformer does not have. RAG as currently practiced does not solve this problem. It may even exacerbate it by introducing retrieved fragments whose discourse state is inconsistent with the generated narrative.

Reproducible Artifact

The full probe — 40 narrative seeds, generation code for three model configurations, automated evaluation scripts, and human annotation guidelines — is available at the repository linked from retai.net. Model versions: 7B-IT (v0.3, build 2025-11-04), 70B-IT (v0.3, build 2025-11-04), 70B-32K (v0.3-extended, build 2025-11-04). All generations used greedy decoding, seed = 42. spaCy version 3.7.2 with the en_core_web_trf model for entity extraction.

To run the probe on your own model:

from retai.probes import NarrativeCoherenceProbe

probe = NarrativeCoherenceProbe(
    seeds_path="seeds/narrative_seeds_40.jsonl",
    length_conditions=[2, 4, 8, 16, 32],
    decoding="greedy",
    seed=42
)

results = probe.run(model="your-model-endpoint")
probe.report(results, output="coherence_report.html")

The report includes per-seed continuations, annotated metric scores, and the specific coherence breaks identified by the automated evaluation. Run it on any instruction-tuned model and compare the degradation curves. If your model’s event-reference consistency at 32 sentences exceeds 50%, I would like to see the output — because the architectural analysis predicts it should not.

Open Question

If discourse coherence requires a world model, and if the transformer architecture cannot maintain one, then what is the minimal architectural modification that would? A persistent key-value store indexed by discourse entity, updated at each generation step, and queried by the attention mechanism — is this a retrieval system, a memory module, or something that has not yet been named? And would such a modification produce genuine coherence, or would it produce a simulation of coherence that passes the probe but fails on longer dependencies the probe does not test?