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
233 lines
18 KiB
Markdown
233 lines
18 KiB
Markdown
# Keefe reference set: the Jack Keefe stories (Ring Lardner, 1914-1919)
|
|
|
|
A hand-made comparison baseline for the story-to-pack pipeline, a sibling of the Jacobs set in
|
|
`../jacobs/` and the Bierce set in `../bierce/`. Claude wrote every summary, predicament, group and
|
|
option by reading the scenes. **No local or hosted inference was used.** Compare the local-model
|
|
runs against it. It is not ground truth, just one careful reading.
|
|
|
|
The reading was split across **three readers**, each taking a run of stories (0-7, 8-15, 16-22) and
|
|
writing every scene's record plus a notes file of the recurring situations they saw. The
|
|
**grouping was done in one pass** by a fourth reader over all 912 records and the three notes files,
|
|
going back to the scene text where a record left it unsure. So no reader's grouping was
|
|
reconciled with another's: the groups are one judgement, made across the whole corpus at once.
|
|
|
|
| File | What it is |
|
|
| --- | --- |
|
|
| `corpus/jack-keefe-stories.html` | Standard Ebooks single-page text (public domain) |
|
|
| `../se_build.py` | → `stories.json` (23 stories, split on the `se:short-story` markup) and `chunks.json` (912 scenes, same 320-word paragraph rule as `../chunk.py`) |
|
|
| `claude/batches/sNN.json` | per story: `{chunk, story, summary, predicament}`, the same schema as `../jacobs/claude/batches/` |
|
|
| `claude/batches/NOTES-*.md` | the three readers' notes on recurring situations and protagonist standing, the input to grouping |
|
|
| `claude/groups_src.py` | the groups, options and per-story protagonist standing |
|
|
| `claude/build.py` | checks everything, then writes `claude/records.json` and `claude/groups.json`. It is identical to Jacobs' copy, since its paths are relative to the file. |
|
|
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page (Jacobs' copy with the title and heading changed) |
|
|
|
|
Rebuild, from `../`: `python3 se_build.py keefe "Jack Keefe stories (Ring Lardner, 1914-1919)" && cd keefe/claude && python3 build.py && python3 page.py`.
|
|
|
|
## What is in it
|
|
|
|
- **912 predicaments**, one sentence each: median 21 words, range 15 to 25. They follow the
|
|
`redescribe.py` rules, so there are no names, clubs, cities or story-only objects. The
|
|
`topic_words` leak check flags 378 of 912, far more than any earlier set, and almost all of it is
|
|
role words: wife 125, boss 78, newcomer 69, rival 44, father 28, husband 26, admirer 20. These are
|
|
kept on purpose: the design's cast is roles, and this corpus is about exactly those roles. Place
|
|
words are rare (dinner 4, stage 4, house 3, street 2, shop 1).
|
|
- **47 groups**, each a situation that recurs in **three or more stories**. **All 47 pass the
|
|
catalogue's recurrence rule** (at least 5 scenes, at least 3 stories, no story over 50%). Three
|
|
span 3 stories, 8 span 4, 7 span 5, 13 span 6, 7 span 7, 2 span 8, 5 span 9, one spans 13 and
|
|
one 14. Each scene sits in at most one group: **650 are assigned and 262 are not**. Most of the
|
|
262 fit nothing that recurs, and some were held out by the 50% cap (see Known defects). All 23
|
|
stories feed at least one group.
|
|
- **Story 6 is capped like any other.** *The Busher Abroad* is 146 scenes, almost all pranks and tall
|
|
tales. It supplies 64 assigned scenes to 20 groups, and 82 stay out. Its largest shares are 50% of
|
|
the stinginess group (G33), 44% of the spotlight group (G31), 42% of *no word from home* (G40), and
|
|
35-36% of the tall-tale, new-skill and swindle groups (G21, G29, G32). Many of its unassigned
|
|
scenes are more of the same prank on the same man, such as the Bight bug, the "Thomas Hawks" and
|
|
the equator rope. Adding them would push story 6 toward half of G21, and they add nothing the
|
|
group does not already have. The rest are sightseeing, seasickness and banquets with no
|
|
predicament in them.
|
|
- **Options**: 3 to 5 per group, 205 in all (28 groups have 4, 18 have 5, 1 has 3). 157 come from
|
|
what someone in a scene did or refused to do (`scene:N`), 7 are archetypes and 41 fill gaps.
|
|
**20 scene options cite a scene outside their own group**, and `groups.json` marks each one
|
|
`in_group: false`. 13 of the 20 are within three scenes of a member, where the character acts.
|
|
- **An unreliable narrator.** Keefe tells his friend he won concessions, saw through every joke
|
|
and only held back out of restraint. The summaries record what really happened, and the options
|
|
do the same: a `scene:N` option is what he did, not what he claimed. Every group also carries at
|
|
least one move a wiser person would make: own the mistake, check the story, turn the drink down,
|
|
ask what the others are paid. Where nobody in the book makes that move it is marked `filled`,
|
|
which is why this set has more fills than Bierce's (41 against 17).
|
|
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`), and no magnitudes.
|
|
`standing` moves 83 times, the two skills 71 times and `money` 38 times. Relationship roles are
|
|
generic and **the same in both halves of the book**. `boss` is the manager or owner in baseball
|
|
and the captain or sergeant in the army, and `colleagues` are teammates or comrades. The others are
|
|
`spouse`, `friend` (the one back home), `family`, `inlaws`, `admirer`, `jokers`, `victim` and
|
|
`rival`. Flags record what the player did: `held_out`, `threatened_to_leave`, `walked_out`,
|
|
`fear_as_duty`, `saved_face`, `strung_along`, `looked_away`, `gamed_the_rules` and others.
|
|
- **Skills** proposed for this corpus: **`savvy`**, for seeing through a joke, a con or a flatterer
|
|
and knowing your own worth, and **`discipline`**, for doing what the work demands (training,
|
|
sobriety, turning up) whatever you feel like. These are the two things Keefe lacks in every
|
|
story. `nerve` from Jacobs and Bierce was considered and dropped. His danger is almost never
|
|
physical, and where it is (G15-G17) the question is honesty about fear, not the fear itself.
|
|
- **Stage** comes from protagonist standing, judged **per story, not per scene**, in `STANDING` in
|
|
`groups_src.py`, starting from the readers' notes. A rookie on trial, a pitcher sent to the
|
|
minors, a draftee private, a corporal of seven men and a wounded veteran out of work rank low.
|
|
A regular big-league pitcher ranks middle. **No story ranks high.** Keefe never rises above a
|
|
working pitcher, and the owners and generals above him are never the protagonist. The groups come
|
|
out 25 middle and 22 low. A pack built from this corpus alone would have no top stage. It would
|
|
need the ladder's upper rungs from another source, or would have to treat "regular starter" as the
|
|
top.
|
|
|
|
## Groups against the existing catalogue
|
|
|
|
The 82-entry catalogue is in `../catalogue/v2/catalogue_v2_src.py`. The mapping below follows its
|
|
rule: a group joins an entry when the player faces the same decision from the same side, and it is
|
|
new when the decision differs. It was judged by reading, not by `classify.py`. **28 groups land on 25
|
|
existing entries, and 19 are new situation types.** Keefe is not yet in `SOURCES`. Adding him is a
|
|
separate change to that file.
|
|
|
|
| Group | Scenes / stories | Halves | Catalogue |
|
|
| --- | --- | --- | --- |
|
|
| G01 Asking for more money | 25 / 7 | baseball | **new** (`pay_talks`) |
|
|
| G02 Threatening to leave for a rival employer | 36 / 8 | baseball | **new** (`threaten_to_leave`) |
|
|
| G03 Sent down, or left on the bench | 20 / 9 | both | **new** (`sent_down`) |
|
|
| G04 A boss who manages by mockery | 20 / 9 | baseball | `power_over_you`, sharpened |
|
|
| G05 Whose fault was it? | 26 / 14 | both | **new** (`blame_elsewhere`) |
|
|
| G06 A step up goes to your head | 14 / 6 | both | **new** (`raised_a_step`) |
|
|
| G07 Called to account for a lapse | 14 / 7 | both | `called_to_account`, sharpened |
|
|
| G08 Sure you know better than the boss | 14 / 9 | both | `orders_without_reasons`, widened |
|
|
| G09 The boss takes a hand in your private life | 16 / 7 | baseball | `bow_for_your_living` (its own example) |
|
|
| G10 Counting on who you used to be | 8 / 4 | both | **new** |
|
|
| G11 The big occasion, and you are not ready | 15 / 6 | both (thin) | **new** (`big_chance`) |
|
|
| G12 A personal score in the middle of the work | 10 / 5 | baseball | `revenge`, partly |
|
|
| G13 A drink against the rules | 12 / 6 | both | **new** (nearest `habit`) |
|
|
| G14 Looking for a way out of what everyone must do | 8 / 5 | both | **new** (`way_out`) |
|
|
| G15 Fear passed off as something nobler | 16 / 9 | both | `courage_doubted`, sharpened |
|
|
| G16 Talking brave, and being taken at your word | 9 / 8 | both | `courage_doubted`, sharpened |
|
|
| G17 Sure you are going to your death | 8 / 6 | both (thin) | `condemned`, partly |
|
|
| G18 Waiting, with nothing to do | 12 / 7 | both | `on_watch` |
|
|
| G19 Hardship you think is beneath you | 10 / 6 | both (thin) | **new** (nearest `far_from_home`) |
|
|
| G20 New, and sure you are already the best | 13 / 6 | both | `newcomer`, sharpened |
|
|
| G21 A tall tale of danger from the old hands | 23 / 7 | both | `warning`, widened; sharpens `newcomer` |
|
|
| G22 A flattering prospect that may be a joke | 15 / 5 | both | `sure_thing`, widened |
|
|
| G23 Saving face after being made a fool of | 23 / 13 | both | **new** (`saving_face`) |
|
|
| G24 Made a public laughing-stock | 12 / 7 | both | **new** |
|
|
| G25 A cruel joke on someone who cannot take it | 8 / 3 | army | `safe_while_others_suffer`, partly |
|
|
| G26 Needled by a colleague | 7 / 6 | both | **new** (the peer version of `power_over_you`) |
|
|
| G27 Sure a colleague is up to something | 10 / 4 | both | `not_who_they_seem`, from the mistaken side |
|
|
| G28 Boasting to people who know better | 12 / 6 | both | `pretence`, sharpened |
|
|
| G29 A new skill that looks easy | 14 / 5 | both | **new** (nearest `outmatched`) |
|
|
| G30 You swore you were above it | 10 / 4 | both | `own_words_back` |
|
|
| G31 In the spotlight, sure you are the hit | 9 / 4 | both (thin) | **new** |
|
|
| G32 A bargain that is a swindle | 17 / 4 | both (thin) | `sure_thing` |
|
|
| G33 Expected to pay, and you hate paying | 10 / 5 | baseball | `grease`, from the payer's side |
|
|
| G34 Leaning on the friend back home | 10 / 7 | both | **new** |
|
|
| G35 Whose money is it at home? | 16 / 6 | baseball | `peace_at_home` |
|
|
| G36 A spouse who earns more | 14 / 4 | baseball | **new** (`spouse_earns_more`) |
|
|
| G37 A quarrel at home: who gives way? | 11 / 6 | both (thin) | `peace_at_home` |
|
|
| G38 Coming home to find them gone | 10 / 4 | both (thin) | `home_unseen`, partly |
|
|
| G39 Suspecting your spouse | 7 / 3 | both (thin) | `what_they_hid`, partly |
|
|
| G40 Far away, and no word from home | 12 / 5 | both | `far_from_home` |
|
|
| G41 Work pulls against a promise to your family | 10 / 6 | both | `duty_against_love`, a lighter register |
|
|
| G42 Relatives under one roof | 11 / 4 | baseball | `unwelcome_in_home`, from both sides |
|
|
| G43 Your spouse snubs people you owe | 5 / 3 | both (thin) | `station`, partly |
|
|
| G44 A new parent sure they know best | 11 / 6 | both (thin) | **new** (`new_parent`) |
|
|
| G45 Sure they are smitten with you | 22 / 9 | both | **new** (nearest `mistook_them`) |
|
|
| G46 Stringing along an admirer while you are not free | 26 / 6 | both | `promised_elsewhere`, from the bound side |
|
|
| G47 Caught with an admirer | 9 / 5 | both | `caught_out` |
|
|
|
|
"Halves" counts stories 0-7 and 18-22 as baseball and 9-17 as the army. Story 8 is the
|
|
draft summer, spent at home while he is still a ballplayer, and it is counted with baseball here. "Both
|
|
(thin)" means one half supplies only one story.
|
|
|
|
**The readers' ten flagged workplace situations, and where they went:**
|
|
|
|
- **Pay talks where you ask big and settle small** (G01) and **threatening to leave for a rival
|
|
employer** (G02) are new. They are the corpus's spine: G02 is the largest group, with 36 scenes
|
|
over 8 stories. The catalogue has nothing on bargaining over your own pay or on leverage you
|
|
may not have.
|
|
- **Being sent down** (G03) is new. The nearest entry, `overlooked`, is about good work going
|
|
unnoticed. Here the decision is how to take a demotion: report and climb back, refuse, or
|
|
pretend it is a compliment.
|
|
- **A boss who manages you by mockery** (G04) sharpens `power_over_you`. The contempt is a
|
|
management style, and the player's choice is whether to read it as praise.
|
|
- **Blaming everyone but yourself** (G05) is new, and it spans the most stories of any group (14).
|
|
- **A small promotion going to your head** (G06) is new.
|
|
- **Fear passed off as duty** (G15) sharpens `courage_doubted`. It adds the move the entry lacked:
|
|
hiding fear behind a nobler motive rather than proving courage. G16, *talking brave and being
|
|
taken at your word*, sharpens the same entry from the boaster's side.
|
|
- **Being called to account for a lapse** (G07) sharpens `called_to_account`. Here the lapse is real,
|
|
and the judge is often fair. In the army half one captain lets him off because good corporals
|
|
are scarce (506), and another asks for time to investigate before judging (566).
|
|
- **The gullible newcomer pranked by old hands** splits four ways. G20, the arrogant newcomer,
|
|
sharpens `newcomer`. G21, the false warning, widens `warning`: the player faces the same decision,
|
|
whether to believe it, but here the danger is invented. G22, the flattering hoax, widens
|
|
`sure_thing`: the lure is recognition rather than money, and the price is ridicule. G23 and G24
|
|
are new, and they are about the aftermath: what story you tell, and how you take being the joke.
|
|
- **A spouse who earns more** (G36) is new.
|
|
|
|
The other new workplace types are G10 *counting on who you used to be*, G11 *the big occasion
|
|
and you are not ready*, G13 *a drink against the rules*, G14 *a way out of what everyone must do*,
|
|
G26 *needled by a colleague* and G29 *a new skill that looks easy*. G30 gives `own_words_back`,
|
|
marked `recurs=False` in v1, 10 scenes over 4 stories. It recurs here.
|
|
|
|
## Do situations transfer between baseball and the army?
|
|
|
|
This is a direct test of the project's premise, because one narrator moves between two unlike
|
|
institutions and the same kind of reader grouped both. **Mostly yes.**
|
|
|
|
- **27 of 47 groups draw at least two stories from each half**, and 10 more reach both halves
|
|
with a single story on one side. Only 9 are baseball-only and 1 army-only.
|
|
- **The situations that transfer are about standing inside a hierarchy.** Examples: being sent down
|
|
(a pitcher to the minors, a corporal back to private), a step up going to your head, being called
|
|
to account, sure you know better than the boss, blaming everyone else, the arrogant newcomer
|
|
(the rookie at spring training and the draftee at camp), saving face, a new skill that looks easy.
|
|
So do the social and home situations: admirers, no word from home, the friend back home.
|
|
- **The situations that do not transfer are about a labour market.** Pay talks (G01), threatening to
|
|
leave for a rival (G02), the boss who meddles in your private life to protect his investment (G09)
|
|
and a personal score settled on the field (G12) have no army instances. That is structural: a
|
|
draftee cannot name his price, and he cannot quit for a rival army. The nearest army moves are
|
|
G14 (looking for an exemption) and G15 (hiding fear behind duty). They are the soldier's version
|
|
of "I could always walk": he looks for a way out rather than a better offer.
|
|
- **One situation transfers with its role moved.** In baseball, mockery comes from above (G04:
|
|
Gleason, Callahan, Comiskey, McGraw). In the army the officers he faces are mostly fair-minded (506,
|
|
566, 671), and the mockery comes from peers: the jokers of G21, G22 and G24, 29 army scenes between them.
|
|
The situation "someone who knows more makes a fool of you" survives, but the counterpart changes
|
|
from `boss` to `jokers`. A pack generator that keyed relationships to institution-specific roles
|
|
would miss this. Generic roles, `boss` and `colleagues` in both halves, keep it visible.
|
|
|
|
The limit of the test: both halves share one narrator, one voice and one set of flaws. What transfers
|
|
may partly be Keefe rather than the situation. A cleaner test would need two authors writing the two
|
|
institutions.
|
|
|
|
## How this corpus differs
|
|
|
|
- **It is the largest set so far by scenes**: 912 from 23 stories, against O. Henry's 839 and
|
|
Bierce's 299. The
|
|
stories are long letter sequences, so a situation often runs over many consecutive scenes, like
|
|
the pay standoff of story 18, the admirer of story 11 and the spy hunt of story 15. The 50% cap
|
|
is what keeps those arcs from becoming one-story groups.
|
|
- **It is comic, and the comedy is dramatic irony.** Nearly every predicament is about the gap
|
|
between what happened and what Keefe believes. That makes it rich in decisions about
|
|
self-knowledge, such as whether to believe the praise, the warning or the admirer, and poor in
|
|
decisions about danger. `money` still moves (38 times, against Bierce's 9), because pay and
|
|
household money are real stakes here.
|
|
- **It is the richest corpus yet in workplace situations.** 13 of the 19 new types are about work and the people you
|
|
work with, where earlier corpora recurred on courtship, secrets, fear and grief.
|
|
- **Scenes straddle letters.** Many chunks join the end of one letter to the start of the next. The
|
|
reader's predicament follows the half that carries more weight, so a few scenes sit in a group
|
|
on the strength of half their text.
|
|
|
|
## Known defects
|
|
|
|
- **Three scenes are only a dateline or a sign-off**: 184 (4 words), 264 (9) and 274 (10). A short
|
|
closing paragraph starts a new scene and is then flushed alone when the next paragraph is long.
|
|
They are kept so that `chunks.json` stays the corpus as split, and none is in a group.
|
|
- **One-story arcs stay unassigned even when they are strong situations.** Examples: the
|
|
go-between who reads the reply as love for himself (story 21, scenes 841-858), courtship on the
|
|
rebound (story 1) and the night rescue of Simple Simon (story 17, 726-737). None recurs in three
|
|
stories.
|
|
- **The cap holds out scenes that fit.** Beyond story 6, the exemption board in story 8 (421, 430,
|
|
432-436) fits G14 but would push story 8 over half of it. The rest of the spy hunt in story 15
|
|
(656-661, 664-666, 674) fits G27 for the same reason.
|
|
- No batch record was found to be wrong. The readers' notes cite example chunk ids that sometimes
|
|
differ from the final groups, because the notes were input, not a grouping.
|