Fourteen corpora split and classified: aesop, bierce, chekhov, holmes, keefe, lawson, lorimer, maupassant, nobody, plaintales, poe, torchy, wallingford and winesburg, each with its splitter and the hand-written groups and pages; catalogue v2 and v3; and the shared splitters gutenberg_chunks.py, se_split.py and se_build.py. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019rwKTmug58sEsJ72AuWsEi
221 lines
15 KiB
Markdown
221 lines
15 KiB
Markdown
# Aesop reference set: *Three Hundred Aesop's Fables* (tr. George Fyler Townsend, 1867)
|
|
|
|
A hand-made comparison baseline for the story-to-pack pipeline, a sibling of the Jacobs set in
|
|
`../jacobs/` and the Lawson set in `../lawson/`. Claude read all 313 fables and wrote every summary,
|
|
predicament, group, option and measurement row. **No inference of any kind was used.** Do not treat
|
|
it as ground truth: it is one careful reading.
|
|
|
|
Aesop has two jobs here. It is a normal reference set. It is also a test of a different claim: a story
|
|
supplies predicaments well but rarely says what a move leads to, while a fable puts situation, move
|
|
and outcome in one paragraph. The second job is measured in
|
|
[Fables as an option source](#fables-as-an-option-source).
|
|
|
|
| File | What it is |
|
|
| --- | --- |
|
|
| `corpus/three-hundred-aesops-fables.txt` | Project Gutenberg eBook #21 (public domain) |
|
|
| `split_gutenberg.py` | → `stories.json` and `chunks.json`: **313 fables, one story and one scene per fable** (see below) |
|
|
| `claude/batches/sNNN.json` | `{chunk, story, summary, predicament, moral}`, one file per run of fables, named by the first fable in it so that the `s*.json` glob sorts in fable order |
|
|
| `claude/groups_src.py` | the groups, their options, and the protagonist's standing in every fable |
|
|
| `claude/options_src.py` | the options measurement, with the definitions of its `new:` entries and the rules for `stated` |
|
|
| `claude/build.py` | checks everything, then writes `claude/records.json`, `claude/groups.json` and `claude/options_by_entry.json` |
|
|
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page, with the measurement at the end |
|
|
|
|
Rebuild: `python3 split_gutenberg.py` from this directory, then
|
|
`cd claude && python3 build.py && python3 page.py`.
|
|
|
|
**One scene per fable** departs from the usual 80-word scene rule on purpose. The median fable is 97
|
|
words, and many are under 80, so the rule would discard them, and a fable split in two would lose its
|
|
turn. A group's fable count is therefore also its story count.
|
|
|
|
## What is in it
|
|
|
|
- **313 predicaments**: one sentence each (median 21 words, min 15, max 24), transplanted to a
|
|
workplace. They contain no animal, plant or god names and no story-only objects. Human role words
|
|
stay (someone powerful, a partner, a newcomer, the boss). `build.py` enforces this with a list of
|
|
every creature, plant, god and prop in the book, not with `topic_words`. The list caught nine
|
|
predicaments that used an animal word as a verb or an idiom ("crow about it", "swallow it whole",
|
|
"the lion's share"), and all nine were reworded.
|
|
- **115 stated morals**, recorded verbatim. A moral here is the fable's unquoted, generalising
|
|
sentence ("Look before you leap."). Where the lesson is only spoken by a character inside quotation
|
|
marks, as in *The Lion and the Mouse*, `moral` is `null`. `build.py` checks every moral is in the
|
|
text.
|
|
- **16 groups of 13 or more fables**, the recurrence rule scaled to this corpus (at least
|
|
max(3, 4% of 313) = 13). They range from 13 to 18 fables. **4 small groups of 5 to 12** are marked
|
|
`small` and reported separately: G17 letting a known predator inside (6), G18 the lion's share (6),
|
|
G19 a bad record when you need trust (5), G20 a warning before the trouble (6). Each fable sits in at
|
|
most one group: **253 are assigned and 60 fit nothing that recurs**.
|
|
- **Options**: 3 to 5 per group, 94 in all. 87 come from what someone in a member fable did or
|
|
refused to do (`scene:N`), 7 fill gaps, and none are archetypes. No option cites a fable outside
|
|
its own group, unlike Jacobs (8) and Lawson (14). A fable is a whole turn, so the move and the fable
|
|
are always the same scene.
|
|
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`). There are no magnitudes.
|
|
**Skills** proposed for this corpus: `wit`, for seeing through a trick and turning it, and
|
|
`prudence`, for looking before you leap, knowing your limits and keeping what you have. Between them
|
|
they are most of Aesop's morals.
|
|
- **Stage** comes from protagonist standing, judged **per fable** in `STANDING` in `groups_src.py`:
|
|
157 fables rank low, 119 middle and 37 high. **No group comes out stage `high`** (11 low, 9 middle).
|
|
Aesop's "you" is usually the lamb, not the wolf, and the high-standing fables (a father, a master, a
|
|
captor) scatter across groups rather than recurring together.
|
|
|
|
The groups:
|
|
|
|
| | Group | Fables | Nearest catalogue entry |
|
|
| --- | --- | --- | --- |
|
|
| G01 | A friendly approach from someone who would gain by your fall | 16 | new (near `sure_thing`) |
|
|
| G02 | At the mercy of someone who has already decided | 14 | `at_their_mercy` |
|
|
| G03 | Trading one hardship for another | 14 | new |
|
|
| G04 | Envying another's gift | 17 | new (near `overlooked`) |
|
|
| G05 | Passing for more than you are | 14 | `pretence` |
|
|
| G06 | Riding high | 13 | new |
|
|
| G07 | Sneered at by someone showier | 13 | new (near `power_over_you`) |
|
|
| G08 | Help asked in need | 14 | `plea_for_help` |
|
|
| G09 | Wanting more than you hold | 13 | new |
|
|
| G10 | Your side divided | 15 | new |
|
|
| G11 | A partner you may not be able to count on | 18 | new (near `used`) |
|
|
| G12 | Rushing in without looking | 13 | new |
|
|
| G13 | Pointing at others' faults | 14 | new (near `own_words_back`) |
|
|
| G14 | Liberties between the weak and the strong | 15 | new (near `revenge`) |
|
|
| G15 | A hard lot | 14 | new (near `dead_end`) |
|
|
| G16 | Worked hard, badly repaid | 13 | new (near `overlooked`) |
|
|
|
|
Only three large groups match an existing entry. The rest are situations about **self-regard and
|
|
prudence** (envy, pride, greed, heedlessness, pointing at faults), which no story corpus isolated.
|
|
The story corpora found them only as the texture of longer plots.
|
|
|
|
## How this corpus differs
|
|
|
|
**Recurrence is the corpus's nature, not something to be found.** Every earlier corpus needed a
|
|
search for the handful of situations its stories kept returning to. Aesop is built from a small
|
|
stock of situations told over and over with different animals: the predator's invitation alone
|
|
appears sixteen times. The problem flips. Nearly every fable recurs, and the work is deciding which
|
|
of several overlapping situations a fable belongs to. *The Fox and the Goat* is a trap, a heedless
|
|
leap, and a partner who uses you. It sits in G01.
|
|
|
|
**The predicaments are the cleanest yet.** There are no names to strip, and the whole cast is
|
|
already a set of roles: the strong, the weak, the flatterer, the partner, the master. Transplanting
|
|
to a workplace needs only the animal removed. The cost is abstraction: a pack built on these
|
|
predicaments alone would have no setting at all.
|
|
|
|
**Two groups hold both sides of one situation.** G13 holds the critic who shares the fault and the
|
|
one criticised. G14 holds the weak who strike at the fallen and the strong being needled. In Jacobs
|
|
and Lawson the actor was always on one side. Here the fable often follows both parties to their fate,
|
|
and splitting them would leave neither side at 13. The measurement does the same for `sneered_at`:
|
|
G07's predicaments are all from the side of the one sneered at, but four of its fables (the heifer, the
|
|
horse, the olive, the hare) also supply the sneerer's move as an option.
|
|
|
|
**Power runs through nearly everything.** Five of the sixteen groups turn on an imbalance of power
|
|
(G01, G02, G03, G14, G16), and two of the small ones as well. Of the options measured below, 110 of
|
|
242 are about the actor's standing going down. It is the most power-heavy corpus so far, and the
|
|
least domestic: there is almost no home, love, grief or dread.
|
|
|
|
## Fables as an option source
|
|
|
|
`claude/options_by_entry.json` maps a catalogue entry (a v2 id, or `new:<id>` defined under
|
|
`_new_entries`) to the options the fables supply for it. Each option is
|
|
`{text, moves, source: "chunk:N", evidence, stated}`. `evidence` is the verbatim moral, or an
|
|
excerpt of at most 30 words, and `build.py` checks both. **`stated` is `true` only if the fable's own
|
|
outcome or moral shows the direction of every path in `moves`.** The rules, applied the same way to
|
|
every row, are in the docstring of `options_src.py`. The main points:
|
|
|
|
- An outcome is read as a direction by a fixed table. Killed, caught, beaten, driven out or publicly
|
|
rebuked counts as `standing -`. Goods, food or pay lost counts as `money -`. A counterpart who
|
|
repays, deserts or stops trusting you counts as `relationships`. Reading "eaten" as `standing -` is
|
|
a convention. The fable does not say it.
|
|
- A moral that only calls a move wise or foolish ("Look before you leap.") states no direction. One
|
|
that names the effect ("Slow but steady wins the race.") does.
|
|
- An outcome the move did not cause is not counted, however pointed. The sparrow is taken by a hawk
|
|
while mocking the hare, but mocking did not bring the hawk.
|
|
- `risk` is stated only when one fable shows the same move ending both ways. That happens once, in
|
|
*The Birdcatcher, the Partridge, and the Cock*: one bird's plea spares it, and the other's does not.
|
|
- **Measurement moves use only `money`, `standing` and `relationships.<role>`.** A skill label or a
|
|
flag is a decision about the option, not an outcome any text can show. Leaving them out means every
|
|
row could in principle be stated. The group options in `groups_src.py` keep them.
|
|
|
|
**Results:**
|
|
|
|
| | |
|
|
| --- | --- |
|
|
| Catalogue v2 entries with at least one sourced option | **32 of 82** (26 with at least one stated option) |
|
|
| `new:` entries | **19**, all with at least one stated option |
|
|
| Options | **242**, from 229 fables (84 for v2 entries, 158 for new ones) |
|
|
| `stated: true` | **165 (68%)**: 62 of 84 for v2 entries (74%), 103 of 158 for new ones (65%) |
|
|
| Entries with three or more stated options | 21 |
|
|
| Entries with a stated `+` option and a stated `-` option | 15 |
|
|
|
|
The v2 entries the fables speak to are mostly about power, deception and help. `at_their_mercy`
|
|
gets 14 options (12 stated), `plea_for_help` 11 (9), `pretence` 8 (6) and `warning` 5 (2). Another 28
|
|
entries get one to four options each. The 50 entries with nothing are almost all of the catalogue's
|
|
home, love, loss, fear and duty. Examples are `home_unseen`, `grief`, `losing_them`, `dread`,
|
|
`duty_against_love`, `past_comes_back` and `promised_elsewhere`. Aesop has no inner life and almost
|
|
no family.
|
|
|
|
The 19 new entries are `friendly_predator`, `better_the_devil`, `ape_your_betters`, `riding_high`,
|
|
`sneered_at`, `grasping`, `divided`, `doubtful_ally`, `heedless`, `pot_and_kettle`,
|
|
`needling_the_strong`, `hard_lot`, `used_up`, `predator_inside`, `lions_share`, `bad_record`,
|
|
`asking_above`, `please_everyone` and `make_them_move`. Each definition says which v2 entry it sits
|
|
nearest to and how the decision differs.
|
|
|
|
**Against the story packs.** Every option in a story pack has an inferred direction: the author
|
|
judged where the move leads, because the story does not say.
|
|
|
|
| Pack | Options | `scene:N` | `archetype` | `filled` | Directions stated by the text |
|
|
| --- | --- | --- | --- | --- | --- |
|
|
| Lawson (`../lawson/claude/groups.json`) | 142 | 118 | 12 | 12 | 0 (all inferred) |
|
|
| Bierce (`../bierce/claude/groups.json`) | 128 | 96 | 15 | 17 | 0 (all inferred) |
|
|
| Aesop groups (`claude/groups.json`) | 94 | 87 | 0 | 7 | not separately judged |
|
|
| Aesop measurement (`claude/options_by_entry.json`) | 242 | 242 (all from a fable) | 0 | 0 | 165 (68%) |
|
|
|
|
Even a `scene:N` option in a story pack is sourced only for its *move*: the scene shows someone doing
|
|
it, and its effect is the author's call. In the measurement, two thirds of the options are sourced for
|
|
the effect as well.
|
|
|
|
The 68% needs three qualifications before anyone relies on it.
|
|
|
|
1. **The stated options are thin.** 226 of the 242 options carry a single path, and 15 of the 16
|
|
two-path options are stated. A fable follows one actor to one fate, and that fate is nearly always
|
|
their standing. Story-pack options carry more: Lawson's average 1.67 spine paths each, Bierce's
|
|
1.18 and Aesop's own group options 1.40, before skills and flags. What a fable usually leaves
|
|
unsaid is the second path, how the move changes a relationship.
|
|
2. **They are almost all downside.** Of the 165 stated options, **136 move only in the `-`
|
|
direction**. By path, 90 stated `standing -` against 12 stated `standing +`. A fable states the
|
|
price of the tempting mistake: the goat in the well, the crow who sang, the dog who dropped his
|
|
meat. The wise move's reward is usually just that the harm does not happen, and that gives no
|
|
direction. The fox who stays outside the sick lion's cave is right, and nothing moves for him. That
|
|
is why the options marked `false` are so often the prudent ones. Only 15 entries get a stated
|
|
option in each direction.
|
|
3. **The coverage is narrow.** 32 of 82 entries, with most of the weight on a handful. The fables
|
|
tell you a great deal about predators, pretenders and the greedy, and nothing about a spouse, a
|
|
dead friend or a night watch.
|
|
|
|
**Verdict.** Fables are a real source of effect directions, and a far better one than stories, but
|
|
only for one kind of option. For a tempting mistake in a situation of power, greed, pride or trust,
|
|
the fable states where it leads, with evidence, seven times in ten (136 of the 190 options that only
|
|
move down). For any other option it is about half (29 of 52). That is enough to anchor
|
|
the `-` direction of an event's tempting option, and to check an author's inferred direction against
|
|
a text. Fables do not supply the prudent option's payoff, the relationship side of a move, or skills,
|
|
and they say almost nothing about the catalogue's domestic and inward half. The same applies to them as
|
|
a source of predicaments. Use them to calibrate the downside of options in power and trust events,
|
|
not to build whole events.
|
|
|
|
## Known defects
|
|
|
|
- **Drop capitals.** The transcription lost each fable's printed drop capital, so many fables open
|
|
with the first word's initial missing: "WOLF, meeting with a Lamb" (fable 1), "TEE KITES" (180).
|
|
`chunks.json` is left as split. Morals and evidence are quoted from later in the text, so none is
|
|
affected.
|
|
- **Other transcription slips**, left as split: "an a woman" (194), "use I gave credence" (280),
|
|
"all bag in front" (260).
|
|
- **Fable 89, *The Æthiop***, rests on a racist premise, that a black servant's colour is dirt to be
|
|
scrubbed off. Its predicament keeps only the transplantable turn: trying to scrub away someone's
|
|
nature, and hurting them. It is unassigned.
|
|
- **Etiologies are not situations.** *The Goods and the Ills* (250), *The Lark Burying Her Father*
|
|
(263), *The Man, the Horse, the Ox, and the Dog* (203) and *The Two Bags* (260) explain how
|
|
something came to be. Their predicaments are strained, and three of the four are unassigned.
|
|
- **G11 is the loosest large group** (18 fables). It holds every doubtful partner, from the companion
|
|
who flees a bear to the boastful suitor, joined only by the question "can I count on them?".
|
|
- **Standing is judged per fable** from the predicament's "you", not from the animal. So the lion in
|
|
*The Lion and the Mouse* ranks high because the predicament puts the player in the lion's place.
|
|
|
|
The Lorimer advice-book pilot running alongside this one was not read. The two results are
|
|
independent.
|