Can You Know a Book Better Without Reading It?

A remake of the distant-reading essay

This interface compares four novels through chapter signals, narrative phases, and character flows. Use those views to locate structural changes, then return to the text with a more specific question.

1818

Frankenstein

Mary Shelley

Its strongest shape is not the monster. It is nested testimony that turns inwardness into motion.

24chapter bins
74,500modeled words
Ch. 23peak pressure
10volatility
01

Where the pattern changes

Pick a signal, then scan the chapter map. A tall mark identifies a chapter where that signal is concentrated and gives you a place to ask what changed.

Interior close-upChapter 11

Reflection, self-argument, memory, shame, and inward narration. Score: 80. Dominant texture:interior. Estimated local weight: 3,058 words.

02

Interior through the book

A chapter-level trace lets the reader see where the chosen signal gathers, breaks, and returns.

03

Where that signal lives

Group the chapter scores into narrative phases to compare larger sections of the book.

04

A distant reading still has characters

The network maps the modeled relationships among characters, forces and places. Follow a connection to consider how one part of the novel shapes another.

QuestionWhen does confession become pursuit?
Source note

Modeled as 24 chapter-level bins from the 1818 public-domain novel.

05

Corpus fingerprints

Each dot represents a chapter, colored by novel. Nearby dots have similar scores on the selected signals, giving you passages from different books to compare.

06

Visualization changes the first question

These four books use a small set of modeled chapter scores and relationships. A peak or unexpected similarity gives you somewhere to begin: return to the passage and see whether the pattern helps explain what you read.

JSX
import { LineChart, BarChart, SankeyDiagram } from "semiotic" import { BOOKS, signalRows, phaseRows } from "./data/distantReading" const book = BOOKS.find((d) => d.id === "frankenstein") const activeSignal = "interiority" <LineChart data={signalRows(book, activeSignal)} xAccessor="chapter" yAccessor="value" yExtent={[0, 100]} /> <BarChart data={phaseRows(book, activeSignal)} categoryAccessor="phase" valueAccessor="score" orientation="horizontal" /> <SankeyDiagram nodes={book.network.nodes} edges={book.network.edges} nodeIdAccessor="id" sourceAccessor="source" targetAccessor="target" valueAccessor="value" />