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.
Frankenstein
Mary Shelley
Its strongest shape is not the monster. It is nested testimony that turns inwardness into motion.
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.
Reflection, self-argument, memory, shame, and inward narration. Score: 80. Dominant texture:interior. Estimated local weight: 3,058 words.
Interior through the book
A chapter-level trace lets the reader see where the chosen signal gathers, breaks, and returns.
Where that signal lives
Group the chapter scores into narrative phases to compare larger sections of the book.
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.
Modeled as 24 chapter-level bins from the 1818 public-domain novel.
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.
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.
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" />