story-to-pack: add the corpora and the catalogue v2/v3
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
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
e5617b86ba
commit
3a4758172d
@@ -0,0 +1,111 @@
|
||||
# Holmes reference set: *The Adventures of Sherlock Holmes* (1892)
|
||||
|
||||
A hand-made comparison baseline for the story-to-pack pipeline, the fourth beside O. Henry
|
||||
(`../v2/claude/`), Wharton (`../wharton/`) and Jacobs (`../jacobs/`). Every summary, predicament,
|
||||
group and option here was written by Claude reading the scenes. **No local or hosted inference
|
||||
was used.** It is one careful reading, not ground truth: another reader would draw some group
|
||||
boundaries differently.
|
||||
|
||||
| File | What it is |
|
||||
| --- | --- |
|
||||
| `corpus/adventures-of-sherlock-holmes.txt` | Project Gutenberg #1661, plain text (public domain) |
|
||||
| `split_gutenberg.py` | → `stories.json` (12 stories, split on the roman-numeral story headers in the body) and `chunks.json` (391 scenes, same 320-word paragraph rule as `../chunk.py`, median 286 words) |
|
||||
| `claude/batches/sNN.json` | per story: `{chunk, story, summary, predicament}`, the same schema as `../jacobs/claude/batches/` |
|
||||
| `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` (Jacobs' script, unchanged) |
|
||||
| `claude/page.py` | → `claude/REFERENCE.html`, the readable page |
|
||||
|
||||
Rebuild: `python3 split_gutenberg.py && cd claude && python3 build.py && python3 page.py`.
|
||||
|
||||
## What is in it
|
||||
|
||||
- **391 predicaments**: one sentence each (median 19 words, min 13, max 24), written to the
|
||||
`redescribe.py` rules: no names, jobs, places or story-only objects. The `topic_words` leak
|
||||
check flags 96 of 391. Almost all are role or relationship words kept on purpose (bride,
|
||||
groom, thief, partner, employer, newcomer, suitor, sister) or generic settings (house, room,
|
||||
street). Three real leaks were found and rewritten ("shopkeeper" twice, "cell" once). "Officer",
|
||||
"servant", "church" and "dog" were also replaced before the check was run.
|
||||
- **32 groups**, each a situation that recurs in **two or more stories** (26 in three or more).
|
||||
Each scene sits in at most one group: 232 are assigned and 159 fit nothing that recurs.
|
||||
Under the catalogue's single recurrence rule (at least 5 scenes, at least 3 stories, no story
|
||||
over 50%), 20 of the 32 pass.
|
||||
- **Why so many unassigned.** About two-fifths of this corpus is the investigator explaining his
|
||||
reasoning, the narrator setting a scene, or a client reciting background. Those scenes were
|
||||
summarised like any other, but they are narration, not predicaments, and none is forced into
|
||||
a group.
|
||||
- **Options**: 3 to 5 per group, 138 in all. 119 come from what someone in a scene did
|
||||
(`scene:N`), 9 are archetypes and 10 fill gaps. **21 scene options cite a scene outside their
|
||||
own group**, often a neighbouring scene in the same story, as Wharton found. `groups.json` marks
|
||||
each one `in_group: false`.
|
||||
- **Moves**: spine paths with a direction only (`+`, `-`, `risk`, `set`). There are no magnitudes,
|
||||
as the design requires. Directions used: 131 `+`, 74 `-`, 25 `set`, 18 `risk`.
|
||||
- **Skills**: `nerve` (27 moves) and `cunning` (15) are reused from Jacobs. One new label is
|
||||
proposed for this corpus: **`observation`** (19), for noticing what others miss and reading a
|
||||
person or a scene. The spine holds two skills, so a pack from this corpus would keep two of the
|
||||
three. `nerve` and `observation` fit its register best. `cunning` covers the deceptions:
|
||||
disguise, bluff, deflecting blame. Dropping it would push those moves onto `nerve` or leave them
|
||||
without a skill. That choice is left open.
|
||||
- **Stage** comes from protagonist standing, judged **per story, not per scene**, and recorded in
|
||||
`STANDING` in `groups_src.py`. The investigator is the same in all twelve stories, so standing
|
||||
is judged from the client whose trouble drives each one: 5 low, 4 middle, 3 high. Groups come
|
||||
out 13 low, 11 middle, 8 high.
|
||||
|
||||
## Situation types new to the catalogue
|
||||
|
||||
The existing 36-entry catalogue (O. Henry, Wharton, Jacobs) is mostly courtship, secrets and
|
||||
schemes. Holmes adds investigation and danger. Groups that match no catalogue entry, or only
|
||||
partly:
|
||||
|
||||
- **G02 The truth would clear you, and cost someone else**: accused, and silent to protect a
|
||||
secret. It is close to `their_secret`, but here the silence is what keeps suspicion on you.
|
||||
- **G04 A warning nobody else takes seriously**: a death-token or night sign that the
|
||||
authorities or family dismiss. It is only partly `dread`.
|
||||
- **G07 You have seen too much**: you found what your host meant to hide, and they may know it.
|
||||
- **G08 Waiting in the dark for them to come**: an ambush vigil.
|
||||
- **G09 Someone dangerous is after the person you are helping**: protecting a client from a
|
||||
pursuer.
|
||||
- **G10 Asked to act without being told why**: loyal help on a plan you are not told. It differs
|
||||
from `pressed_to_wrong`: nobody is pressing you, you are trusting a friend.
|
||||
- **G11 Someone close is not who they seem**: a helper, suitor or friend who is an impostor.
|
||||
- **G12 A stranger who will not give a true name.**
|
||||
- **G14 Holding something too valuable to lose**: a custodian's worry.
|
||||
- **G16 Mercy or the law**: letting a culprit go, keeping a confession back, or trading silence
|
||||
for restitution.
|
||||
- **G17 Someone close has vanished.**
|
||||
- **G18 Keeping faith when everyone says give up.**
|
||||
- **G19 A guardian who lives on your money**: a guardian loses the income if the ward marries.
|
||||
It recurs in three stories and is the most distinctive of Holmes's situations.
|
||||
- **G20 Everyone has decided, and you think they are wrong**: standing against an official
|
||||
consensus.
|
||||
- **G21 A frightened stranger at your door**: the opening of seven of the twelve stories.
|
||||
- **G29 Arriving too late**, **G30 Getting them to give it away**, **G31 You were only a pawn**,
|
||||
**G32 Someone on the inside helps you get away.**
|
||||
- **G22 Read at a glance** and **G23 Tested by someone sharper** recur strongly but are low-stakes
|
||||
social moments. They could be flavour events rather than full situations.
|
||||
|
||||
Groups that **overlap existing entries**: G01 → `wrongly_judged` (a formal-accusation variant,
|
||||
with evidence and arrest); G03 → `past_comes_back`; G05 → `sure_thing` and `strings`; G06 →
|
||||
`newcomer`; G13 → `patron`; G15 → `caught_out` and `your_scheme`; G24 → `pretence` (pretending to
|
||||
be humbler, to get information); G25 → `hiding_from_close`; G26 → `let_another_take_blame`;
|
||||
G27 → `power_over_you`; G28 → `cant_prove_it`.
|
||||
|
||||
## How this corpus differs
|
||||
|
||||
- **One protagonist, many clients.** Every story has the same investigator and narrator, so each
|
||||
scene has two candidate protagonists: the client in trouble and the investigator deciding what
|
||||
to do. Predicaments follow whoever has the most at stake in that scene. Some groups hold both
|
||||
views of one situation: G20 holds both the doubter and the officials he doubts. A tool that
|
||||
keys groups to a single actor would split them.
|
||||
- **Recurrence is by plot structure, not by relationships.** Wharton's groups turn on a spouse or
|
||||
a mother. Holmes's turn on stages of an inquiry: the stranger arrives (G21), the offer that pays
|
||||
too well (G05), the sinister house (G06), what you have seen (G07), the unmasking (G15), and
|
||||
what to do with the culprit (G16). Three stories, *The Red-Headed League*, *The Engineer's
|
||||
Thumb* and *The Copper Beeches*, share one arc: the offer that pays too well (G05), then the
|
||||
discovery that you were only a pawn (G31). The last two also share the sinister house (G06)
|
||||
between those steps. That gives a small
|
||||
corpus unusually clean recurrence, but the groups are also more tied to one genre's plot beats.
|
||||
- **The predicaments transplant well.** Almost nothing depends on the period. The dangers are
|
||||
generic (a threat nobody believes, a job that pays too well, a guardian who needs you single),
|
||||
and the frontier or corporate reading is usually obvious.
|
||||
- **Twelve stories is still below the design's 20-30.** Six groups rest on only two stories
|
||||
(G06, G08, G12, G27, G28, G32).
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,188 @@
|
||||
[
|
||||
{
|
||||
"chunk": 0,
|
||||
"story": 0,
|
||||
"summary": "The narrator introduces the one woman the cold reasoner ever respected, a woman of doubtful memory who once got the better of him.",
|
||||
"predicament": "A proud, cool-headed person has met one opponent who outwitted them, and cannot stop measuring everyone else against her."
|
||||
},
|
||||
{
|
||||
"chunk": 1,
|
||||
"story": 0,
|
||||
"summary": "Marriage has drawn the narrator away from his old friend, who has been living alone between drugs and bursts of work on cases the police gave up.",
|
||||
"predicament": "Someone whose own life has moved on has drifted away from an old companion and only hears of him secondhand."
|
||||
},
|
||||
{
|
||||
"chunk": 2,
|
||||
"story": 0,
|
||||
"summary": "Passing his friend's old rooms, the narrator calls in on impulse; the investigator greets him quietly and reads from his looks that he has married and gone back to work.",
|
||||
"predicament": "Someone drops in on an old friend after a long gap and finds himself read at a glance, unsure of his welcome."
|
||||
},
|
||||
{
|
||||
"chunk": 3,
|
||||
"story": 0,
|
||||
"summary": "The investigator explains how he knew the narrator had been out in bad weather and has a careless servant, and that he is back in practice.",
|
||||
"predicament": "A person is unsettled to find that a companion can read the private details of his life from small signs."
|
||||
},
|
||||
{
|
||||
"chunk": 4,
|
||||
"story": 0,
|
||||
"summary": "The narrator admits he sees but does not observe; the investigator hands him an anonymous note that arrived by the last post.",
|
||||
"predicament": "A person is shown up as seeing without noticing, just as an unsigned message raises a question worth answering."
|
||||
},
|
||||
{
|
||||
"chunk": 5,
|
||||
"story": 0,
|
||||
"summary": "The unsigned note announces a masked visitor with a matter of the deepest importance; the investigator refuses to theorise and reads the paper's watermark instead.",
|
||||
"predicament": "An unsigned message promises a visitor with a grave secret, and an investigator must decide what to trust before meeting him."
|
||||
},
|
||||
{
|
||||
"chunk": 6,
|
||||
"story": 0,
|
||||
"summary": "The investigator works out that the writer is a wealthy foreigner; a rich carriage arrives, and he makes the narrator stay to help.",
|
||||
"predicament": "An investigator has worked out who is coming before the door opens, and wants a trusted witness in the room."
|
||||
},
|
||||
{
|
||||
"chunk": 7,
|
||||
"story": 0,
|
||||
"summary": "A huge, richly dressed man in a mask enters and asks to be heard, unsure which of the two men to address.",
|
||||
"predicament": "A powerful stranger arrives disguised, needing help but unwilling to show who he is to people he cannot yet trust."
|
||||
},
|
||||
{
|
||||
"chunk": 8,
|
||||
"story": 0,
|
||||
"summary": "The visitor gives a false title, binds both men to secrecy and admits he acts for someone great; the investigator coolly says he already knew.",
|
||||
"predicament": "A client hides behind a false name while asking for secrecy, and the investigator lets him know the pretence is already seen through."
|
||||
},
|
||||
{
|
||||
"chunk": 9,
|
||||
"story": 0,
|
||||
"summary": "The visitor tears off his mask and admits he is himself the royal client; years ago he became entangled with a famous adventuress.",
|
||||
"predicament": "A powerful man drops a disguise that fooled no one and must admit a past entanglement to a stranger he needs."
|
||||
},
|
||||
{
|
||||
"chunk": 10,
|
||||
"story": 0,
|
||||
"summary": "The client wrote compromising letters and had himself photographed with the woman; five attempts to steal the picture back have failed.",
|
||||
"predicament": "A powerful man's old indiscretion is preserved in proof he cannot buy or steal back, however hard he tries."
|
||||
},
|
||||
{
|
||||
"chunk": 11,
|
||||
"story": 0,
|
||||
"summary": "The woman threatens to send the photograph to his bride's family when the betrothal is announced; he gives the investigator a free hand and money.",
|
||||
"predicament": "A powerful man's planned marriage will collapse if a former lover makes good her threat to reveal their past."
|
||||
},
|
||||
{
|
||||
"chunk": 12,
|
||||
"story": 0,
|
||||
"summary": "The client pays heavily in advance and leaves; next day the narrator waits for the investigator, confident he will not fail.",
|
||||
"predicament": "An investigator is paid lavishly in advance by a client desperate for quick results, and the watcher assumes success is certain."
|
||||
},
|
||||
{
|
||||
"chunk": 13,
|
||||
"story": 0,
|
||||
"summary": "The investigator returns disguised as a drunken stable-hand and collapses laughing at how his morning ended.",
|
||||
"predicament": "An investigator comes back from watching a house in disguise, with a surprise he can hardly tell for laughing."
|
||||
},
|
||||
{
|
||||
"chunk": 14,
|
||||
"story": 0,
|
||||
"summary": "Disguised as an out-of-work groom, he studied the woman's house and gathered gossip from the stablemen.",
|
||||
"predicament": "An investigator poses as a humble out-of-work stranger to learn a target's habits from the people who serve her."
|
||||
},
|
||||
{
|
||||
"chunk": 15,
|
||||
"story": 0,
|
||||
"summary": "He learns she lives quietly with one frequent male visitor, a lawyer, and must decide whether that man holds the proof.",
|
||||
"predicament": "An investigator watching someone must decide whether a frequent visitor is an ally holding what he wants, or a lover."
|
||||
},
|
||||
{
|
||||
"chunk": 16,
|
||||
"story": 0,
|
||||
"summary": "The lawyer rushes out of the house and orders his cab to a church; the woman follows moments later in a hurry.",
|
||||
"predicament": "Someone watching a house sees the two people he is following suddenly race off, and must decide whether to follow."
|
||||
},
|
||||
{
|
||||
"chunk": 17,
|
||||
"story": 0,
|
||||
"summary": "The investigator follows them to the church and is suddenly dragged forward by the bridegroom, who needs a witness at once.",
|
||||
"predicament": "A person secretly following two others is suddenly pulled into their business and cannot refuse without giving himself away."
|
||||
},
|
||||
{
|
||||
"chunk": 18,
|
||||
"story": 0,
|
||||
"summary": "He finds himself the witness at the woman's hasty wedding, then plans to act before the pair can leave, and asks the narrator's help.",
|
||||
"predicament": "An investigator has unwittingly helped his quarry's plans along and must now act fast before she slips out of reach."
|
||||
},
|
||||
{
|
||||
"chunk": 19,
|
||||
"story": 0,
|
||||
"summary": "The investigator asks whether the narrator will break the law and risk arrest; he agrees, and is told to stand at a window and throw something in at a signal.",
|
||||
"predicament": "A friend is asked to break the law for a cause he is told is good, without being told the whole plan."
|
||||
},
|
||||
{
|
||||
"chunk": 20,
|
||||
"story": 0,
|
||||
"summary": "He is given a smoke device and instructions, and the investigator disguises himself as a mild, simple-minded clergyman.",
|
||||
"predicament": "A helper agrees to a staged false alarm while his friend prepares a disguise meant to win a stranger's sympathy."
|
||||
},
|
||||
{
|
||||
"chunk": 21,
|
||||
"story": 0,
|
||||
"summary": "Waiting outside the house, the investigator reasons that the woman's marriage makes the proof a danger to her as well, and wonders where she keeps it.",
|
||||
"predicament": "Watchers outside a house reason that their quarry's new marriage makes her secret dangerous to her too."
|
||||
},
|
||||
{
|
||||
"chunk": 22,
|
||||
"story": 0,
|
||||
"summary": "He reasons the proof must be in her own house and says he will not search but make her show him.",
|
||||
"predicament": "An investigator decides to trick his quarry into revealing where she has hidden what he has come to take."
|
||||
},
|
||||
{
|
||||
"chunk": 23,
|
||||
"story": 0,
|
||||
"summary": "A staged street brawl breaks out as she arrives; the disguised investigator falls, apparently bleeding, while defending her.",
|
||||
"predicament": "A stranger fakes an injury defending a woman, trading on her decency to be carried into her home."
|
||||
},
|
||||
{
|
||||
"chunk": 24,
|
||||
"story": 0,
|
||||
"summary": "The kind woman has the injured man brought in; the narrator feels ashamed as she tends him, but hardens his heart to play his part.",
|
||||
"predicament": "A helper is ashamed to watch a kind woman tend a man who is deceiving her, and must choose loyalty or conscience."
|
||||
},
|
||||
{
|
||||
"chunk": 25,
|
||||
"story": 0,
|
||||
"summary": "At the signal the narrator throws in the smoke device and cries fire; the investigator later explains the whole street crowd was hired.",
|
||||
"predicament": "A helper carries out his part in a deception and learns afterwards how much of the scene was staged."
|
||||
},
|
||||
{
|
||||
"chunk": 26,
|
||||
"story": 0,
|
||||
"summary": "The false alarm made the woman rush to the hiding place; the investigator saw it but did not take the proof, since her servant was watching him.",
|
||||
"predicament": "An investigator has tricked his quarry into showing her hiding place but holds back because someone is watching him closely."
|
||||
},
|
||||
{
|
||||
"chunk": 27,
|
||||
"story": 0,
|
||||
"summary": "A passing youth wishes him good night by name; next morning the client arrives eager, and the investigator tells him the woman has married.",
|
||||
"predicament": "An investigator is greeted by name by a stranger in the street, a sign that his quarry may know more than he thought."
|
||||
},
|
||||
{
|
||||
"chunk": 28,
|
||||
"story": 0,
|
||||
"summary": "At the house they learn she has fled abroad with her husband; the hiding place holds only a portrait of her and a letter.",
|
||||
"predicament": "An investigator arrives to collect his prize and finds his quarry has seen through him and fled first."
|
||||
},
|
||||
{
|
||||
"chunk": 29,
|
||||
"story": 0,
|
||||
"summary": "Her letter says she saw through the disguise, followed him home, and will keep the photograph only to protect herself from the client.",
|
||||
"predicament": "Someone pursued by a powerful former lover outwits the investigator he hired, keeping her proof only as protection."
|
||||
},
|
||||
{
|
||||
"chunk": 30,
|
||||
"story": 0,
|
||||
"summary": "The client is relieved and offers a ring; the investigator asks only for her portrait and pointedly ignores the client's hand.",
|
||||
"predicament": "An investigator bested by his quarry thinks less of his client than of her, and lets the client see it."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,200 @@
|
||||
[
|
||||
{
|
||||
"chunk": 31,
|
||||
"story": 1,
|
||||
"summary": "The narrator finds the investigator with a stout red-haired client and is pulled in to hear the case, with a reminder that real life outdoes invention.",
|
||||
"predicament": "An investigator welcomes a trusted companion into a client's case just as a strange story is about to be told."
|
||||
},
|
||||
{
|
||||
"chunk": 32,
|
||||
"story": 1,
|
||||
"summary": "The investigator asks the client to repeat his unusual story, saying odd small affairs are often more telling than great crimes.",
|
||||
"predicament": "An investigator cannot yet tell whether a client's odd story is a crime at all, and wants every detail again."
|
||||
},
|
||||
{
|
||||
"chunk": 33,
|
||||
"story": 1,
|
||||
"summary": "The narrator can read nothing from the commonplace client; the investigator lists his past labour, his lodge, his travels and his recent writing.",
|
||||
"predicament": "A plain, slow client is startled when a stranger reads his whole history off his clothes and hands."
|
||||
},
|
||||
{
|
||||
"chunk": 34,
|
||||
"story": 1,
|
||||
"summary": "The investigator explains his reasoning, and the client decides it was nothing clever after all; he produces the newspaper notice that began it all.",
|
||||
"predicament": "Someone who explains how he knows things finds his cleverness dismissed as obvious once the trick is shown."
|
||||
},
|
||||
{
|
||||
"chunk": 35,
|
||||
"story": 1,
|
||||
"summary": "The notice offers a well-paid post for nominal work to red-haired men; the client explains his small, struggling business and cheap assistant.",
|
||||
"predicament": "A person whose small business barely keeps him is drawn by a public offer of easy money for almost no work."
|
||||
},
|
||||
{
|
||||
"chunk": 36,
|
||||
"story": 1,
|
||||
"summary": "The client praises his assistant, who works for half wages and spends hours in the cellar, and recalls how the assistant first showed him the notice.",
|
||||
"predicament": "A small employer is grateful for a clever helper who works cheap, and never asks why the helper accepts so little."
|
||||
},
|
||||
{
|
||||
"chunk": 37,
|
||||
"story": 1,
|
||||
"summary": "The assistant tells the stay-at-home client about a fund paying easy money to men with his colouring, and says he is eligible.",
|
||||
"predicament": "A stay-at-home person short of money is told by a trusted helper that easy money is his for the asking."
|
||||
},
|
||||
{
|
||||
"chunk": 38,
|
||||
"story": 1,
|
||||
"summary": "The assistant explains the eccentric benefactor's fund and hints it is hardly worth the effort, drawing the client further in.",
|
||||
"predicament": "A trusted helper talks up an easy windfall while pretending indifference, so that his employer will push to claim it."
|
||||
},
|
||||
{
|
||||
"chunk": 39,
|
||||
"story": 1,
|
||||
"summary": "The client and assistant go to the office through a vast crowd of applicants; the assistant forces a way through for him.",
|
||||
"predicament": "A hopeful applicant facing a crowd of rivals would give up, but a helper insists on pushing him through to the front."
|
||||
},
|
||||
{
|
||||
"chunk": 40,
|
||||
"story": 1,
|
||||
"summary": "The man at the office rejects everyone else but greets the client warmly and declares him perfectly suited.",
|
||||
"predicament": "A hopeful applicant is singled out and flattered by the person in charge, above all the other candidates."
|
||||
},
|
||||
{
|
||||
"chunk": 41,
|
||||
"story": 1,
|
||||
"summary": "The manager tests the hair by pulling it, fills the post, then feigns doubt because the client is unmarried before letting it pass.",
|
||||
"predicament": "A person offered a windfall is made to feel it nearly slipped away, so he grasps it more eagerly."
|
||||
},
|
||||
{
|
||||
"chunk": 42,
|
||||
"story": 1,
|
||||
"summary": "The client agrees to strict hours copying an encyclopedia, forbidden to leave the room, while the assistant offers to mind the shop.",
|
||||
"predicament": "A person accepts easy pay on the strange condition that he stay away from his own business for hours every day."
|
||||
},
|
||||
{
|
||||
"chunk": 43,
|
||||
"story": 1,
|
||||
"summary": "That night he suspects a hoax, but next day finds everything as promised, and is set to copying and locked out at two.",
|
||||
"predicament": "Someone who suspects an offer is too good to be true is reassured when it is paid exactly as promised."
|
||||
},
|
||||
{
|
||||
"chunk": 44,
|
||||
"story": 1,
|
||||
"summary": "Weeks pass with pay every Saturday until one morning the door is locked with a notice saying the fund is dissolved.",
|
||||
"predicament": "A person who has grown comfortable on easy money finds it cut off without warning or explanation."
|
||||
},
|
||||
{
|
||||
"chunk": 45,
|
||||
"story": 1,
|
||||
"summary": "The client is stung by their laughter; he describes chasing the vanished manager through false names and addresses.",
|
||||
"predicament": "A person left stranded by a vanished employer finds every name and address he was given was false."
|
||||
},
|
||||
{
|
||||
"chunk": 46,
|
||||
"story": 1,
|
||||
"summary": "The client wants to know who played this trick on him; the investigator questions him closely about how his assistant came to him.",
|
||||
"predicament": "A person who has lost easy money wants to know who fooled him, and does not yet suspect the helper he trusts."
|
||||
},
|
||||
{
|
||||
"chunk": 47,
|
||||
"story": 1,
|
||||
"summary": "The assistant's description excites the investigator; after the client leaves he says the case needs prompt action.",
|
||||
"predicament": "An investigator realises a client's trusted helper is not who he seems, while the client suspects nothing."
|
||||
},
|
||||
{
|
||||
"chunk": 48,
|
||||
"story": 1,
|
||||
"summary": "The investigator smokes on the problem in silence, then abruptly proposes an afternoon concert.",
|
||||
"predicament": "An investigator has a puzzle half solved and needs quiet thought before he can decide what to do."
|
||||
},
|
||||
{
|
||||
"chunk": 49,
|
||||
"story": 1,
|
||||
"summary": "He inspects the shop, raps the pavement and asks the assistant for directions, only to look at the knees of his trousers.",
|
||||
"predicament": "An investigator calls at a suspect's door on a pretext, to look for one telltale sign without alerting him."
|
||||
},
|
||||
{
|
||||
"chunk": 50,
|
||||
"story": 1,
|
||||
"summary": "He surveys the busy street behind the shop, noting the buildings that back onto it, then turns to play.",
|
||||
"predicament": "An investigator quietly maps the ground around a suspect's hideout before revealing his suspicions to anyone."
|
||||
},
|
||||
{
|
||||
"chunk": 51,
|
||||
"story": 1,
|
||||
"summary": "After the concert he tells the narrator a serious crime is planned for that night and asks for his help.",
|
||||
"predicament": "An investigator knows a serious crime will happen tonight and has only hours to stop it."
|
||||
},
|
||||
{
|
||||
"chunk": 52,
|
||||
"story": 1,
|
||||
"summary": "He asks the narrator to come armed; the narrator goes home puzzled, sensing the assistant is a dangerous man.",
|
||||
"predicament": "A companion is asked to come armed on a night venture he does not understand, trusting a friend who will not explain."
|
||||
},
|
||||
{
|
||||
"chunk": 53,
|
||||
"story": 1,
|
||||
"summary": "The narrator meets a police officer and a gloomy banker who doubts the expedition, while the officer patronises the investigator.",
|
||||
"predicament": "An outsider asked to trust an investigator's plan doubts it, while the official backing it patronises him."
|
||||
},
|
||||
{
|
||||
"chunk": 54,
|
||||
"story": 1,
|
||||
"summary": "The investigator promises the banker a large stake and the officer a notorious, well-born criminal he has never managed to catch.",
|
||||
"predicament": "An official who has chased a clever, well-born criminal for years is offered a chance to finally take him."
|
||||
},
|
||||
{
|
||||
"chunk": 55,
|
||||
"story": 1,
|
||||
"summary": "They reach the bank's vault; the banker thumps the hollow floor and is sharply told to sit down and not interfere.",
|
||||
"predicament": "A person whose property is at stake nearly spoils a trap by carelessness and is ordered to keep still."
|
||||
},
|
||||
{
|
||||
"chunk": 56,
|
||||
"story": 1,
|
||||
"summary": "The investigator checks the floor and explains they are in a bank vault holding a large reserve of borrowed gold.",
|
||||
"predicament": "A guardian of valuables learns that thieves are about to strike and that his own careless talk drew them."
|
||||
},
|
||||
{
|
||||
"chunk": 57,
|
||||
"story": 1,
|
||||
"summary": "They put out the light and hide behind crates, armed, waiting for thieves who may shoot.",
|
||||
"predicament": "Watchers hide in the dark to ambush dangerous thieves, knowing the thieves may fight their way out."
|
||||
},
|
||||
{
|
||||
"chunk": 58,
|
||||
"story": 1,
|
||||
"summary": "After a long, tense wait a light appears and a hand gropes up through a crack in the floor.",
|
||||
"predicament": "Someone lying in ambush must keep still through a long dark wait until the first sign of an intruder appears."
|
||||
},
|
||||
{
|
||||
"chunk": 59,
|
||||
"story": 1,
|
||||
"summary": "The thieves climb up; the investigator seizes the leader and knocks his pistol away, while the accomplice flees into waiting arms.",
|
||||
"predicament": "A clever thief walks straight into an ambush and must decide whether to fight, flee or give in gracefully."
|
||||
},
|
||||
{
|
||||
"chunk": 60,
|
||||
"story": 1,
|
||||
"summary": "The captured criminal insists on being addressed with respect; the banker thanks the investigator, who asks only for his expenses.",
|
||||
"predicament": "A captured criminal clings to his dignity and birth even as he is led away in handcuffs."
|
||||
},
|
||||
{
|
||||
"chunk": 61,
|
||||
"story": 1,
|
||||
"summary": "The investigator explains that the fund was a lure to get the shopkeeper out of the way every day.",
|
||||
"predicament": "An investigator explains how a helper who worked for too little was the tell that exposed a whole scheme."
|
||||
},
|
||||
{
|
||||
"chunk": 62,
|
||||
"story": 1,
|
||||
"summary": "He explains how the assistant's cellar habits, worn knees and the bank next door revealed the tunnel.",
|
||||
"predicament": "An investigator traces a scheme back through a helper's odd habits and the neighbour who had something worth taking."
|
||||
},
|
||||
{
|
||||
"chunk": 63,
|
||||
"story": 1,
|
||||
"summary": "He explains how he knew the attempt would come that night, then complains that ordinary life bores him.",
|
||||
"predicament": "An investigator who has just solved a case feels ordinary life closing in again and dreads the idleness."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,158 @@
|
||||
[
|
||||
{
|
||||
"chunk": 64,
|
||||
"story": 2,
|
||||
"summary": "By the fire the investigator argues that real life is stranger than fiction; the narrator doubts it, finding reported crimes dull.",
|
||||
"predicament": "Two companions argue whether ordinary life hides anything stranger than invention, each sure the other is wrong."
|
||||
},
|
||||
{
|
||||
"chunk": 65,
|
||||
"story": 2,
|
||||
"summary": "The narrator picks a newspaper case to prove his point; the investigator, who worked on it, shows its details were stranger than any invention.",
|
||||
"predicament": "A person picks an example to prove a friend wrong, and the friend turns it against him with facts he lacked."
|
||||
},
|
||||
{
|
||||
"chunk": 66,
|
||||
"story": 2,
|
||||
"summary": "The investigator shows gifts from grateful royal clients and says his current cases are important but dull, then spots a client in the street.",
|
||||
"predicament": "An investigator has many weighty cases and none worth his interest, and hopes the stranger outside will bring one."
|
||||
},
|
||||
{
|
||||
"chunk": 67,
|
||||
"story": 2,
|
||||
"summary": "A large, nervous woman hesitates on the pavement before hurrying to the door; the investigator reads it as a perplexed love affair.",
|
||||
"predicament": "A hesitant stranger works up her nerve to bring a private trouble to people she does not know."
|
||||
},
|
||||
{
|
||||
"chunk": 68,
|
||||
"story": 2,
|
||||
"summary": "The investigator startles the woman by reading her work from her hands; she says she would give her income to know what became of her missing fiancé, and that her stepfather would do nothing.",
|
||||
"predicament": "A young woman whose fiancé has vanished defies a relative who wants her to drop it, and seeks help alone."
|
||||
},
|
||||
{
|
||||
"chunk": 69,
|
||||
"story": 2,
|
||||
"summary": "She explains her young stepfather, her mother's remarriage and the sale of her father's business; she has a separate income of her own.",
|
||||
"predicament": "A young woman with a small fortune of her own explains a household where a new relative controls the money."
|
||||
},
|
||||
{
|
||||
"chunk": 70,
|
||||
"story": 2,
|
||||
"summary": "She lets her family draw her income while she lives at home, and supports herself by her own work.",
|
||||
"predicament": "A young woman hands her own income to the family she lives with, never asking who really benefits."
|
||||
},
|
||||
{
|
||||
"chunk": 71,
|
||||
"story": 2,
|
||||
"summary": "Against her stepfather's wishes she went to a ball while he was abroad and met a shy suitor, who then could not call once her stepfather returned.",
|
||||
"predicament": "A young woman defies a controlling relative to go out, meets a suitor, and must see him in secret."
|
||||
},
|
||||
{
|
||||
"chunk": 72,
|
||||
"story": 2,
|
||||
"summary": "She was engaged at once and wrote daily, but never learned where he worked or lived; he insisted her letters be handwritten and his were typed.",
|
||||
"predicament": "A person is engaged to someone whose address and work she never learned, and sees nothing strange in it."
|
||||
},
|
||||
{
|
||||
"chunk": 73,
|
||||
"story": 2,
|
||||
"summary": "The suitor was shy, whispered, wore tinted glasses and preferred to walk after dark.",
|
||||
"predicament": "A trusting woman describes a suitor who avoided daylight and hid his face and voice, and sees only shyness."
|
||||
},
|
||||
{
|
||||
"chunk": 74,
|
||||
"story": 2,
|
||||
"summary": "The suitor pressed a quick wedding while her stepfather was away, made her swear fidelity, and her mother backed him; her letter to her stepfather missed him.",
|
||||
"predicament": "A young woman is rushed into a secret wedding, sworn to faithfulness, and urged by her own mother to tell no one."
|
||||
},
|
||||
{
|
||||
"chunk": 75,
|
||||
"story": 2,
|
||||
"summary": "On the wedding morning the groom vanished from a closed cab; she believes some danger took him and that he will claim her.",
|
||||
"predicament": "A bride is left waiting at the altar when her groom vanishes, and chooses to believe he was taken rather than fled."
|
||||
},
|
||||
{
|
||||
"chunk": 76,
|
||||
"story": 2,
|
||||
"summary": "Her mother forbade her to speak of it; her stepfather agreed something happened; she sobs, and the investigator advises her to forget the man.",
|
||||
"predicament": "A jilted woman is told by everyone, even her helper, to forget a man she has sworn to wait for."
|
||||
},
|
||||
{
|
||||
"chunk": 77,
|
||||
"story": 2,
|
||||
"summary": "She refuses to forget and swears to stay true; the investigator says the case is trite but the woman herself was interesting.",
|
||||
"predicament": "A deceived woman refuses advice to forget and vows to keep faith with someone who will never return."
|
||||
},
|
||||
{
|
||||
"chunk": 78,
|
||||
"story": 2,
|
||||
"summary": "The investigator asks the narrator what he noticed about her dress; the narrator lists colours and details.",
|
||||
"predicament": "A companion is tested on what he noticed and must describe a stranger without knowing what matters."
|
||||
},
|
||||
{
|
||||
"chunk": 79,
|
||||
"story": 2,
|
||||
"summary": "The investigator praises the method but notes what was missed: her work marks, short sight, and odd, half-buttoned boots that show haste.",
|
||||
"predicament": "A person learns he looked at everything and noticed nothing, and is shown how to read haste in a stranger."
|
||||
},
|
||||
{
|
||||
"chunk": 80,
|
||||
"story": 2,
|
||||
"summary": "He notes her inky glove, then reads the missing man's description and points out that even the signatures on his letters were typed.",
|
||||
"predicament": "An investigator notices that a missing man never once let his own handwriting be seen."
|
||||
},
|
||||
{
|
||||
"chunk": 81,
|
||||
"story": 2,
|
||||
"summary": "He writes to the stepfather's employer and to the stepfather himself, asking the latter to call.",
|
||||
"predicament": "An investigator quietly sends for a relative he suspects, without saying why, and waits for the reply."
|
||||
},
|
||||
{
|
||||
"chunk": 82,
|
||||
"story": 2,
|
||||
"summary": "The investigator says the matter is solved but no law can touch the culprit; the stepfather arrives.",
|
||||
"predicament": "An investigator has found the culprit and knows the law cannot punish him for what he did."
|
||||
},
|
||||
{
|
||||
"chunk": 83,
|
||||
"story": 2,
|
||||
"summary": "The smooth stepfather says the girl should not have come and doubts the missing man can be found; he starts when told he will be.",
|
||||
"predicament": "A smooth relative who hoped a matter would be dropped is startled to hear the missing man will be found."
|
||||
},
|
||||
{
|
||||
"chunk": 84,
|
||||
"story": 2,
|
||||
"summary": "The investigator shows the stepfather's typed letters match the suitor's machine; the man tries to leave and the door is locked on him.",
|
||||
"predicament": "A deceiver shown proof that his own letters match the ones he forged tries to leave and finds the door locked."
|
||||
},
|
||||
{
|
||||
"chunk": 85,
|
||||
"story": 2,
|
||||
"summary": "The stepfather collapses, stammers that it is not a crime, and the investigator agrees but calls it heartless.",
|
||||
"predicament": "A deceiver caught out pleads that nothing he did was against the law, and is told it was cruel all the same."
|
||||
},
|
||||
{
|
||||
"chunk": 86,
|
||||
"story": 2,
|
||||
"summary": "The investigator explains the stepfather courted the girl in disguise to keep her unmarried and keep her income; he pleads it began as a joke.",
|
||||
"predicament": "A person who posed as a suitor to keep a relative's money in the family is exposed and pleads it was a joke."
|
||||
},
|
||||
{
|
||||
"chunk": 87,
|
||||
"story": 2,
|
||||
"summary": "He staged a vanishing to bind her to a phantom for years; recovering, the stepfather sneers.",
|
||||
"predicament": "A deceiver hears his whole scheme laid out, then gathers his nerve and sneers because nothing can be proved against him."
|
||||
},
|
||||
{
|
||||
"chunk": 88,
|
||||
"story": 2,
|
||||
"summary": "He warns the investigator he is the one breaking the law by locking the door; the investigator reaches for a whip and the man flees.",
|
||||
"predicament": "An investigator faces a cruel deceiver the law cannot touch and is tempted to punish him with his own hands."
|
||||
},
|
||||
{
|
||||
"chunk": 89,
|
||||
"story": 2,
|
||||
"summary": "The investigator explains how the suitor and stepfather never appeared together, and how he checked the description and the typewriter.",
|
||||
"predicament": "An investigator explains how he proved two men were one, by noticing they were never seen together."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,218 @@
|
||||
[
|
||||
{
|
||||
"chunk": 90,
|
||||
"story": 3,
|
||||
"summary": "The narrator's wife urges him to accept the investigator's telegram asking him to come on a country murder case; he joins him at the train.",
|
||||
"predicament": "A married man is invited on a dangerous errand by an old friend, and his spouse urges him to go."
|
||||
},
|
||||
{
|
||||
"chunk": 91,
|
||||
"story": 3,
|
||||
"summary": "On the train the investigator explains that a son is accused of his father's murder, a simple case that is hard for that reason.",
|
||||
"predicament": "An investigator takes up a case where the evidence already points firmly at one person, and resolves to assume nothing."
|
||||
},
|
||||
{
|
||||
"chunk": 92,
|
||||
"story": 3,
|
||||
"summary": "He describes two former colonists who settled near each other, one rich, one his tenant, and the tenant's walk to an appointment he never returned from.",
|
||||
"predicament": "Two old associates from far away live side by side, one oddly dependent on the other, until one is found dead."
|
||||
},
|
||||
{
|
||||
"chunk": 93,
|
||||
"story": 3,
|
||||
"summary": "Witnesses saw the father walk alone to the pool, followed shortly by his son carrying a gun.",
|
||||
"predicament": "A young man is seen following his father with a weapon shortly before the father is found dead."
|
||||
},
|
||||
{
|
||||
"chunk": 94,
|
||||
"story": 3,
|
||||
"summary": "A girl saw father and son quarrelling violently; the son then ran for help with blood on his hands, and the dead father's wounds fit his gun; he was arrested.",
|
||||
"predicament": "A son who quarrelled with his father just before the father's death is found with blood on his hands and arrested."
|
||||
},
|
||||
{
|
||||
"chunk": 95,
|
||||
"story": 3,
|
||||
"summary": "The narrator thinks the case damning; the investigator warns circumstantial evidence can point two ways, and that a young woman believes the son innocent.",
|
||||
"predicament": "An accused man's case looks hopeless to everyone except one loyal friend who has brought in outside help."
|
||||
},
|
||||
{
|
||||
"chunk": 96,
|
||||
"story": 3,
|
||||
"summary": "The investigator notes the son said at his arrest that it was no more than he deserved, which the jury took as guilt.",
|
||||
"predicament": "An accused man's unguarded remark at his arrest is taken by everyone as proof he did it."
|
||||
},
|
||||
{
|
||||
"chunk": 97,
|
||||
"story": 3,
|
||||
"summary": "The investigator reads the remark as the natural self-reproach of an innocent son who had quarrelled with his father.",
|
||||
"predicament": "An investigator must decide whether a suspect's calm acceptance of arrest shows guilt or a clear conscience."
|
||||
},
|
||||
{
|
||||
"chunk": 98,
|
||||
"story": 3,
|
||||
"summary": "The investigator hands over the local paper carrying the son's own statement at the inquest.",
|
||||
"predicament": "Someone studying a case turns to the accused's own words for the first time, hoping for a crack in the story."
|
||||
},
|
||||
{
|
||||
"chunk": 99,
|
||||
"story": 3,
|
||||
"summary": "The son's statement: he heard his father's call, found him by the pool, quarrelled, walked off, heard a cry and found him dying.",
|
||||
"predicament": "An accused man tells a true story of a quarrel and a death that sounds exactly like the story of a guilty man."
|
||||
},
|
||||
{
|
||||
"chunk": 100,
|
||||
"story": 3,
|
||||
"summary": "At the inquest the son refused to say what the quarrel was about, reported odd dying words, and thought he saw a grey garment that later vanished.",
|
||||
"predicament": "A suspect refuses to explain the one thing that could clear him, to protect a secret of his own."
|
||||
},
|
||||
{
|
||||
"chunk": 101,
|
||||
"story": 3,
|
||||
"summary": "The garment vanished while his back was turned; the coroner calls every point in his account suspicious.",
|
||||
"predicament": "An accused man's strangest details, which could clear him, are exactly what make the official doubt his story."
|
||||
},
|
||||
{
|
||||
"chunk": 102,
|
||||
"story": 3,
|
||||
"summary": "The investigator says the odd details favour the son and resolves to assume his story is true; at the country town a sly police officer meets them.",
|
||||
"predicament": "An investigator chooses to believe an accused man's unlikely story and test where it leads, against official opinion."
|
||||
},
|
||||
{
|
||||
"chunk": 103,
|
||||
"story": 3,
|
||||
"summary": "The officer thinks the case plain; the accused's childhood friend bursts in insisting he is innocent.",
|
||||
"predicament": "A loyal friend of an accused man insists on his innocence to investigators who think the case already closed."
|
||||
},
|
||||
{
|
||||
"chunk": 104,
|
||||
"story": 3,
|
||||
"summary": "The young woman reveals the quarrel was about the father's wish that the two marry, which neither the son nor her own father wanted.",
|
||||
"predicament": "Someone defending an accused friend reveals a private family quarrel she was part of, hoping it will help him."
|
||||
},
|
||||
{
|
||||
"chunk": 105,
|
||||
"story": 3,
|
||||
"summary": "Her father, who knew the dead man in the colonies, has collapsed with illness; the officer rebukes the investigator for raising false hopes.",
|
||||
"predicament": "An investigator gives a frightened friend hope that the accused is innocent, and is accused of cruelty for it."
|
||||
},
|
||||
{
|
||||
"chunk": 106,
|
||||
"story": 3,
|
||||
"summary": "Alone, the narrator studies the inquest report and notes the fatal blow came from behind, and ponders the dying word and grey cloth.",
|
||||
"predicament": "A companion left alone turns over the evidence himself, trying to see what the officials missed."
|
||||
},
|
||||
{
|
||||
"chunk": 107,
|
||||
"story": 3,
|
||||
"summary": "The investigator returns: the son knows nothing more, and is honest but slow.",
|
||||
"predicament": "An investigator visits an accused man and finds him honest, bewildered, and no help at all in clearing himself."
|
||||
},
|
||||
{
|
||||
"chunk": 108,
|
||||
"story": 3,
|
||||
"summary": "The son had secretly married unwisely, so could not propose to the woman he loved; that secret wife has now abandoned him.",
|
||||
"predicament": "A young man hid a disastrous secret marriage from a harsh father who pressed him to marry someone else."
|
||||
},
|
||||
{
|
||||
"chunk": 109,
|
||||
"story": 3,
|
||||
"summary": "The investigator stresses the father had an appointment and called out before he knew his son was near; the rich neighbour is said to be dying.",
|
||||
"predicament": "An investigator notices a dead man was meeting someone else entirely, someone the whole district has overlooked."
|
||||
},
|
||||
{
|
||||
"chunk": 110,
|
||||
"story": 3,
|
||||
"summary": "The investigator finds it odd the poor tenant expected to marry his son to his rich patron's heiress; the officer mocks theories.",
|
||||
"predicament": "An investigator suspects a poor man had some hold over the rich neighbour who helped him, while an official mocks theories."
|
||||
},
|
||||
{
|
||||
"chunk": 111,
|
||||
"story": 3,
|
||||
"summary": "At the farm the investigator measures the boots of the dead man and his son, then follows the path to the pool.",
|
||||
"predicament": "An investigator gathers small physical evidence at a grieving household before walking the ground where the death happened."
|
||||
},
|
||||
{
|
||||
"chunk": 112,
|
||||
"story": 3,
|
||||
"summary": "The investigator follows the trail like a hound, ignoring questions, while the officer watches with contempt.",
|
||||
"predicament": "An investigator absorbed in the hunt ignores his companions while a sceptical official looks on with contempt."
|
||||
},
|
||||
{
|
||||
"chunk": 113,
|
||||
"story": 3,
|
||||
"summary": "At the pool he reads the trampled ground and knows the officer has been raking in the water.",
|
||||
"predicament": "An investigator finds the scene of a crime already trampled by careless officials who got there first."
|
||||
},
|
||||
{
|
||||
"chunk": 114,
|
||||
"story": 3,
|
||||
"summary": "He finds the son's tracks, the father's, and a third person's odd tiptoe tracks behind a tree, and gathers ash and a stone.",
|
||||
"predicament": "An investigator finds signs that a third person watched a quarrel from hiding and slipped back for something left behind."
|
||||
},
|
||||
{
|
||||
"chunk": 115,
|
||||
"story": 3,
|
||||
"summary": "He tells the officer the stone was the weapon and describes the killer in detail; the officer scoffs at theories.",
|
||||
"predicament": "An investigator describes a culprit in detail, and the official in charge refuses to go looking for him."
|
||||
},
|
||||
{
|
||||
"chunk": 116,
|
||||
"story": 3,
|
||||
"summary": "The officer refuses to hunt for such a man; the investigator is troubled and asks the narrator's advice.",
|
||||
"predicament": "An investigator knows who is guilty and is troubled about what to do with the knowledge."
|
||||
},
|
||||
{
|
||||
"chunk": 117,
|
||||
"story": 3,
|
||||
"summary": "The investigator explains that the call was one used by colonists and that the dying word named a place in the colony.",
|
||||
"predicament": "An investigator realises a dying man's half-heard words were naming his killer, not raving."
|
||||
},
|
||||
{
|
||||
"chunk": 118,
|
||||
"story": 3,
|
||||
"summary": "He explains how he read the killer's height, lameness, left hand and habits from tracks and ash; the narrator sees who it must be.",
|
||||
"predicament": "An investigator has built a case against someone from small signs, and the only question left is what to do."
|
||||
},
|
||||
{
|
||||
"chunk": 119,
|
||||
"story": 3,
|
||||
"summary": "The dying rich neighbour arrives and admits he knows why; he would have spoken if the son were convicted, but fears for his daughter.",
|
||||
"predicament": "A dying man guilty of a killing would confess to save the innocent accused, but dreads what it will do to his child."
|
||||
},
|
||||
{
|
||||
"chunk": 120,
|
||||
"story": 3,
|
||||
"summary": "The investigator, not bound to the police, takes a signed confession to use only if needed; the old man begins his story of being in the dead man's power.",
|
||||
"predicament": "An investigator bound only to his client offers a dying culprit a signed confession to use only if an innocent is condemned."
|
||||
},
|
||||
{
|
||||
"chunk": 121,
|
||||
"story": 3,
|
||||
"summary": "The old man confesses that as a young man in the colony he became a highway robber.",
|
||||
"predicament": "A respected man confesses that his fortune began in a violent crime committed long ago under another name."
|
||||
},
|
||||
{
|
||||
"chunk": 122,
|
||||
"story": 3,
|
||||
"summary": "He robbed a gold convoy but spared a driver who memorised his face, then went home rich, reformed and raised a daughter.",
|
||||
"predicament": "A reformed man who built a respectable life on stolen money meets the one witness who can expose him."
|
||||
},
|
||||
{
|
||||
"chunk": 123,
|
||||
"story": 3,
|
||||
"summary": "The witness blackmailed him for twenty years, living off him, and at last demanded the man's daughter marry his son.",
|
||||
"predicament": "A man long blackmailed over his past pays everything he is asked until the blackmailer demands his child."
|
||||
},
|
||||
{
|
||||
"chunk": 124,
|
||||
"story": 3,
|
||||
"summary": "He overheard the blackmailer urging his son to marry the daughter, and struck him down in desperation; the investigator refuses to judge him.",
|
||||
"predicament": "A desperate man bled for years by a blackmailer kills him to protect his child, and would do it again."
|
||||
},
|
||||
{
|
||||
"chunk": 125,
|
||||
"story": 3,
|
||||
"summary": "The investigator decides to keep the confession secret unless the son is condemned; the son is acquitted and the old man dies months later.",
|
||||
"predicament": "An investigator chooses mercy over the law, keeping a dying culprit's secret as long as the innocent goes free."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,170 @@
|
||||
[
|
||||
{
|
||||
"chunk": 126,
|
||||
"story": 4,
|
||||
"summary": "The narrator explains he is choosing, from many cases, one that was startling but never fully cleared up.",
|
||||
"predicament": "A chronicler must decide whether to tell a story whose ending was never fully explained or proven."
|
||||
},
|
||||
{
|
||||
"chunk": 127,
|
||||
"story": 4,
|
||||
"summary": "He lists other cases from that year before turning to the strangest of them.",
|
||||
"predicament": "A chronicler passes over many lesser matters to reach the one case that still troubles him."
|
||||
},
|
||||
{
|
||||
"chunk": 128,
|
||||
"story": 4,
|
||||
"summary": "On a stormy night a bell rings; the investigator, who has no friends but the narrator, guesses only a serious case would bring anyone out.",
|
||||
"predicament": "Two companions sheltering from a storm hear an unexpected visitor, and know only real trouble would bring someone out tonight."
|
||||
},
|
||||
{
|
||||
"chunk": 129,
|
||||
"story": 4,
|
||||
"summary": "A pale, anxious young man arrives from the country, asking for help and noting the investigator's reputation; he is told the investigator has been beaten four times.",
|
||||
"predicament": "A frightened young man seeks help from a stranger he has been told never fails, and hears that he sometimes does."
|
||||
},
|
||||
{
|
||||
"chunk": 130,
|
||||
"story": 4,
|
||||
"summary": "The visitor explains the trouble is inherited, beginning with his father's successful business and his uncle.",
|
||||
"predicament": "A young man explains that the danger hanging over him was handed down to him with his family's fortune."
|
||||
},
|
||||
{
|
||||
"chunk": 131,
|
||||
"story": 4,
|
||||
"summary": "His uncle made a fortune abroad, fought in a war, then came home and lived as a fierce, drinking recluse.",
|
||||
"predicament": "A relative who came home rich from abroad lived shut away from everyone, as if hiding from something."
|
||||
},
|
||||
{
|
||||
"chunk": 132,
|
||||
"story": 4,
|
||||
"summary": "The uncle took to the boy and made him master of the house, except for one attic room he always kept locked.",
|
||||
"predicament": "A young person is trusted with everything in a household except one locked room no one may enter."
|
||||
},
|
||||
{
|
||||
"chunk": 133,
|
||||
"story": 4,
|
||||
"summary": "A letter arrived holding five dried seeds and three initials; the uncle turned grey with terror, said his sins had caught him up, and fetched a box from the attic.",
|
||||
"predicament": "A man receives a silent token he recognises as a death threat from people he wronged long ago."
|
||||
},
|
||||
{
|
||||
"chunk": 134,
|
||||
"story": 4,
|
||||
"summary": "The uncle burned the box's papers and made the nephew witness a will leaving the estate to his father, warning it was a double-edged gift.",
|
||||
"predicament": "A frightened man destroys what his pursuers want and leaves his estate to a relative with an ominous warning."
|
||||
},
|
||||
{
|
||||
"chunk": 135,
|
||||
"story": 4,
|
||||
"summary": "After that the uncle drank more, locked himself in, and sometimes rushed out armed, screaming he feared no one.",
|
||||
"predicament": "A man living under a death threat swings between locking himself in and raging defiantly at an enemy he cannot see."
|
||||
},
|
||||
{
|
||||
"chunk": 136,
|
||||
"story": 4,
|
||||
"summary": "The uncle was found drowned in a shallow garden pool; the verdict was suicide, though the nephew doubted it; his father inherited.",
|
||||
"predicament": "A threatened man is found dead in what is called suicide, and only his relative doubts the verdict."
|
||||
},
|
||||
{
|
||||
"chunk": 137,
|
||||
"story": 4,
|
||||
"summary": "The father found the box's label; two years later he received the same token with an order to leave the papers on the sundial.",
|
||||
"predicament": "A person who laughed off a relative's fear receives the same threat himself and is suddenly afraid."
|
||||
},
|
||||
{
|
||||
"chunk": 138,
|
||||
"story": 4,
|
||||
"summary": "The father dismissed it as a joke and forbade the son to go to the police for fear of ridicule.",
|
||||
"predicament": "A threatened man refuses to take a warning seriously or let anyone go to the authorities, for fear of looking foolish."
|
||||
},
|
||||
{
|
||||
"chunk": 139,
|
||||
"story": 4,
|
||||
"summary": "The father died days later in a fall into an unfenced pit, ruled an accident; the son inherited, convinced it was murder but unable to prove it.",
|
||||
"predicament": "A young heir is sure his relative was murdered, but every sign says it was an accident."
|
||||
},
|
||||
{
|
||||
"chunk": 140,
|
||||
"story": 4,
|
||||
"summary": "After nearly three quiet years the son received the same token; the police laughed at him and he felt helplessly doomed.",
|
||||
"predicament": "A person who has received a death threat his relatives did not survive is dismissed by the authorities as a crank."
|
||||
},
|
||||
{
|
||||
"chunk": 141,
|
||||
"story": 4,
|
||||
"summary": "The investigator is angry he waited; the son produces a surviving diary page recording warnings sent and victims cleared.",
|
||||
"predicament": "A threatened young man brings his helper a single torn scrap of proof, too late to do more than guess."
|
||||
},
|
||||
{
|
||||
"chunk": 142,
|
||||
"story": 4,
|
||||
"summary": "The investigator tells him to leave the surviving page in the box on the sundial with a note saying the rest were burned, and to take great care.",
|
||||
"predicament": "A threatened person is told to give his pursuers what they want at once and to put revenge aside until he is safe."
|
||||
},
|
||||
{
|
||||
"chunk": 143,
|
||||
"story": 4,
|
||||
"summary": "The young man leaves armed into the storm; the investigator says the danger is greater than any they have faced.",
|
||||
"predicament": "An investigator sends a frightened client back out into danger alone, and begins to realise how grave it is."
|
||||
},
|
||||
{
|
||||
"chunk": 144,
|
||||
"story": 4,
|
||||
"summary": "The investigator speaks of reasoning from one fact to a whole chain of events, and of needing all useful knowledge.",
|
||||
"predicament": "An investigator who believes a single fact can reveal a whole chain of events sets out to prove it."
|
||||
},
|
||||
{
|
||||
"chunk": 145,
|
||||
"story": 4,
|
||||
"summary": "He reasons the uncle fled abroad in fear, and asks the narrator to note the letters' postmarks.",
|
||||
"predicament": "An investigator reasons that a man who fled abroad and hid for years was running from someone."
|
||||
},
|
||||
{
|
||||
"chunk": 146,
|
||||
"story": 4,
|
||||
"summary": "He deduces the senders are on a sailing ship, that the blow falls when they arrive, and that this time there will be no delay.",
|
||||
"predicament": "An investigator realises too late that his client has no time left, because the enemy is already close."
|
||||
},
|
||||
{
|
||||
"chunk": 147,
|
||||
"story": 4,
|
||||
"summary": "He concludes the killers are a group determined to recover the papers, and names a secret society.",
|
||||
"predicament": "An investigator realises his client is hunted not by one enemy but by an organised group that wants its papers back."
|
||||
},
|
||||
{
|
||||
"chunk": 148,
|
||||
"story": 4,
|
||||
"summary": "The encyclopedia describes a secret society that sent warning tokens before killing those who defied it.",
|
||||
"predicament": "Someone learns that the threat against a family comes from a society that warns once and then kills."
|
||||
},
|
||||
{
|
||||
"chunk": 149,
|
||||
"story": 4,
|
||||
"summary": "He reasons the uncle's papers could implicate powerful men, so the society will stop at nothing; next morning he starts inquiries.",
|
||||
"predicament": "An investigator concludes that stolen records could ruin powerful people, who will kill anyone holding them."
|
||||
},
|
||||
{
|
||||
"chunk": 150,
|
||||
"story": 4,
|
||||
"summary": "The newspaper reports the young man drowned near the river that night, ruled an accident.",
|
||||
"predicament": "An investigator learns that the client he sent home with advice was killed that same night."
|
||||
},
|
||||
{
|
||||
"chunk": 151,
|
||||
"story": 4,
|
||||
"summary": "The investigator's pride is hurt; he vows to catch the gang himself without the police, and returns late, starved but successful.",
|
||||
"predicament": "An investigator who sent a client to his death takes it personally and vows to catch the killers himself."
|
||||
},
|
||||
{
|
||||
"chunk": 152,
|
||||
"story": 4,
|
||||
"summary": "He sends the killers' own token to the ship's master, and explains how he traced the ship through shipping registers.",
|
||||
"predicament": "An investigator turns his enemies' own threat back on them, having traced them through dull public records."
|
||||
},
|
||||
{
|
||||
"chunk": 153,
|
||||
"story": 4,
|
||||
"summary": "The ship had sailed; he has cabled for the men's arrest at their home port, but the ship is lost at sea with all hands.",
|
||||
"predicament": "An investigator has the killers in his grasp, and justice is taken out of his hands by chance."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,212 @@
|
||||
[
|
||||
{
|
||||
"chunk": 154,
|
||||
"story": 5,
|
||||
"summary": "The narrator recalls an addicted friend; late one night the addict's wife bursts in, veiled and sobbing, to the narrator's wife.",
|
||||
"predicament": "A frightened spouse turns up late at a friend's door in tears, needing help she cannot get anywhere else."
|
||||
},
|
||||
{
|
||||
"chunk": 155,
|
||||
"story": 5,
|
||||
"summary": "The wife explains her husband has been missing in a drug den for two days, and she cannot go in after him herself.",
|
||||
"predicament": "A spouse knows where her addicted partner is hiding but cannot bring herself to go into that place to fetch him."
|
||||
},
|
||||
{
|
||||
"chunk": 156,
|
||||
"story": 5,
|
||||
"summary": "The narrator offers to go alone and bring the man home; he descends into the den by the docks.",
|
||||
"predicament": "Someone agrees to walk into a dangerous den alone to bring home a friend's lost spouse."
|
||||
},
|
||||
{
|
||||
"chunk": 157,
|
||||
"story": 5,
|
||||
"summary": "Among the stupefied smokers he finds his friend, who has lost track of the days and weeps.",
|
||||
"predicament": "A person sent to rescue an addict finds him confused, ashamed, and unaware how long he has been gone."
|
||||
},
|
||||
{
|
||||
"chunk": 158,
|
||||
"story": 5,
|
||||
"summary": "The addict agrees to go home and asks the narrator to settle his debt.",
|
||||
"predicament": "An ashamed addict agrees to go home but cannot even settle his own debts without help."
|
||||
},
|
||||
{
|
||||
"chunk": 159,
|
||||
"story": 5,
|
||||
"summary": "An old man by the brazier whispers to him; it is the investigator in disguise, who asks him to get rid of his friend.",
|
||||
"predicament": "Someone on a rescue errand is secretly signalled by a disguised friend who must not be recognised."
|
||||
},
|
||||
{
|
||||
"chunk": 160,
|
||||
"story": 5,
|
||||
"summary": "The narrator sends the addict home and joins the investigator, who was there hunting an enemy.",
|
||||
"predicament": "A person finishes one errand of mercy and is drawn at once into a friend's far more dangerous hunt."
|
||||
},
|
||||
{
|
||||
"chunk": 161,
|
||||
"story": 5,
|
||||
"summary": "The investigator explains the den's owner has sworn revenge on him, and that a missing man may have been murdered there.",
|
||||
"predicament": "An investigator risks his life in disguise among enemies who would kill him if they knew him."
|
||||
},
|
||||
{
|
||||
"chunk": 162,
|
||||
"story": 5,
|
||||
"summary": "They drive into the country; the investigator dreads facing the missing man's wife without news.",
|
||||
"predicament": "An investigator dreads facing a waiting spouse when he still has no news of the person she has lost."
|
||||
},
|
||||
{
|
||||
"chunk": 163,
|
||||
"story": 5,
|
||||
"summary": "He explains the missing man was a respectable, prosperous husband and father with no debts.",
|
||||
"predicament": "An investigator is baffled by the disappearance of a respectable family man with no apparent troubles or enemies."
|
||||
},
|
||||
{
|
||||
"chunk": 164,
|
||||
"story": 5,
|
||||
"summary": "The man went to town promising his son a toy; by chance his wife was called to an office near the den the same day.",
|
||||
"predicament": "A spouse happens to be in a rough part of town on an errand at the very hour her partner is there."
|
||||
},
|
||||
{
|
||||
"chunk": 165,
|
||||
"story": 5,
|
||||
"summary": "The wife saw her husband at the den's upper window, agitated and half-dressed, before he was pulled or leapt back.",
|
||||
"predicament": "A spouse glimpses her partner in a place he should never be, in distress, before he vanishes from sight."
|
||||
},
|
||||
{
|
||||
"chunk": 166,
|
||||
"story": 5,
|
||||
"summary": "She was thrown out of the den, fetched the police, and found only a crippled beggar there, until she found the toy her husband had promised.",
|
||||
"predicament": "A spouse is told she imagined seeing her partner, until she finds the proof he was really there."
|
||||
},
|
||||
{
|
||||
"chunk": 167,
|
||||
"story": 5,
|
||||
"summary": "Blood on the window, the man's clothes hidden, and the high tide suggest he was killed and thrown into the river.",
|
||||
"predicament": "Searchers find every sign that a missing man was killed and his body disposed of, but no body."
|
||||
},
|
||||
{
|
||||
"chunk": 168,
|
||||
"story": 5,
|
||||
"summary": "The den keeper, a known villain, claims to know nothing of his lodger's doings or the missing man's clothes.",
|
||||
"predicament": "A known villain denies all knowledge of a crime in his own house, and the evidence cannot yet contradict him."
|
||||
},
|
||||
{
|
||||
"chunk": 169,
|
||||
"story": 5,
|
||||
"summary": "The investigator describes the lodger, a well-known scarred beggar with a quick wit, the last man to see the missing man.",
|
||||
"predicament": "A notorious, pitiable figure everyone knows by sight becomes the chief suspect in a disappearance."
|
||||
},
|
||||
{
|
||||
"chunk": 170,
|
||||
"story": 5,
|
||||
"summary": "The narrator doubts a cripple could overpower a strong man; the investigator says he is powerful apart from his limp.",
|
||||
"predicament": "Someone doubts a suspect could have done it, and is told the suspect is stronger than he looks."
|
||||
},
|
||||
{
|
||||
"chunk": 171,
|
||||
"story": 5,
|
||||
"summary": "The beggar was arrested with blood on his sleeve which he blamed on a cut, denied all, and called the wife mad; the missing man's coat turned up in the mud.",
|
||||
"predicament": "A suspect with blood on his sleeve denies everything, insists the only witness is mad, and waits."
|
||||
},
|
||||
{
|
||||
"chunk": 172,
|
||||
"story": 5,
|
||||
"summary": "The coat's pockets were stuffed with coins; the police theorise the beggar weighted it to sink with the body.",
|
||||
"predicament": "Investigators build a plausible theory of a murder that fits every fact and is entirely wrong."
|
||||
},
|
||||
{
|
||||
"chunk": 173,
|
||||
"story": 5,
|
||||
"summary": "No questions are answered; they arrive at the missing man's country home, where his wife is waiting.",
|
||||
"predicament": "An investigator who has found nothing arrives to face a waiting spouse who hopes for news."
|
||||
},
|
||||
{
|
||||
"chunk": 174,
|
||||
"story": 5,
|
||||
"summary": "The wife runs out hoping for news and is told there is none, good or bad; she greets them warmly.",
|
||||
"predicament": "A person waiting for word of a missing partner meets her helpers at the door and learns there is no news."
|
||||
},
|
||||
{
|
||||
"chunk": 175,
|
||||
"story": 5,
|
||||
"summary": "She asks for his honest opinion, and he says her husband is dead; she then produces a letter from him received that day.",
|
||||
"predicament": "An investigator gives a waiting spouse his honest belief that her partner is dead, and she shows him proof he is wrong."
|
||||
},
|
||||
{
|
||||
"chunk": 176,
|
||||
"story": 5,
|
||||
"summary": "The investigator examines the envelope and the note, written in her husband's hurried hand and enclosing his ring.",
|
||||
"predicament": "An investigator must decide whether a letter from a supposedly dead man is genuine or a clever forgery."
|
||||
},
|
||||
{
|
||||
"chunk": 177,
|
||||
"story": 5,
|
||||
"summary": "The note asks her to wait in patience; he warns it may be forged or old; she insists she would sense if he were dead.",
|
||||
"predicament": "A spouse trusts her own certainty that her partner is alive, while her helper warns the proof may be forged."
|
||||
},
|
||||
{
|
||||
"chunk": 178,
|
||||
"story": 5,
|
||||
"summary": "He questions her closely about what she saw at the window and whether her husband ever took drugs.",
|
||||
"predicament": "An investigator presses a witness on exactly what she saw, trying to separate what happened from what she feared."
|
||||
},
|
||||
{
|
||||
"chunk": 179,
|
||||
"story": 5,
|
||||
"summary": "The investigator sits up all night smoking and thinking on a heap of cushions.",
|
||||
"predicament": "An investigator stays up all night turning a puzzle over until he either solves it or knows he cannot."
|
||||
},
|
||||
{
|
||||
"chunk": 180,
|
||||
"story": 5,
|
||||
"summary": "At dawn he calls himself a fool, says he has the key in his bag, and drives to town.",
|
||||
"predicament": "An investigator realises at dawn that the answer was in front of him all along, and hurries to test it."
|
||||
},
|
||||
{
|
||||
"chunk": 181,
|
||||
"story": 5,
|
||||
"summary": "At the police station he asks after the beggar, whom the officer calls filthy and refusing to wash.",
|
||||
"predicament": "An investigator calls on the authorities to see a suspect who has refused to let anyone see his face clean."
|
||||
},
|
||||
{
|
||||
"chunk": 182,
|
||||
"story": 5,
|
||||
"summary": "They look into the cell at the sleeping, scarred beggar; the investigator produces a sponge.",
|
||||
"predicament": "An investigator comes to unmask a sleeping prisoner, bringing the humble tool that will do it."
|
||||
},
|
||||
{
|
||||
"chunk": 183,
|
||||
"story": 5,
|
||||
"summary": "He washes the prisoner's face and reveals the missing man; the man claims that since no crime occurred he is illegally held.",
|
||||
"predicament": "A respectable man living a secret double life is unmasked in custody and tries to bluster his way out."
|
||||
},
|
||||
{
|
||||
"chunk": 184,
|
||||
"story": 5,
|
||||
"summary": "The man groans that he hid for his children's sake; the investigator offers to keep it out of court and the papers.",
|
||||
"predicament": "A man exposed in a shameful secret life is offered discretion if he makes a full confession to the authorities."
|
||||
},
|
||||
{
|
||||
"chunk": 185,
|
||||
"story": 5,
|
||||
"summary": "He confesses that as a journalist he posed as a beggar for a story, then used it to pay a debt.",
|
||||
"predicament": "A person confesses that a disguise first used for honest reasons became the easy answer to money trouble."
|
||||
},
|
||||
{
|
||||
"chunk": 186,
|
||||
"story": 5,
|
||||
"summary": "Begging paid far better than honest work, so he gave up his trade, married and lived well, his wife never knowing.",
|
||||
"predicament": "A person earning well by a shameful secret trade builds a respectable life on it, keeping the truth even from his spouse."
|
||||
},
|
||||
{
|
||||
"chunk": 187,
|
||||
"story": 5,
|
||||
"summary": "Seen at the window by his wife, he disguised himself, threw out his weighted coat, and was arrested for his own murder.",
|
||||
"predicament": "A person seen in his secret life by his spouse would rather be accused of his own murder than be recognised."
|
||||
},
|
||||
{
|
||||
"chunk": 188,
|
||||
"story": 5,
|
||||
"summary": "He sent a note to his wife that was delayed; the police agree to hush it up if he gives up begging for good.",
|
||||
"predicament": "A person caught in a shameful double life is allowed to keep his secret only by swearing to give it up forever."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,176 @@
|
||||
[
|
||||
{
|
||||
"chunk": 189,
|
||||
"story": 6,
|
||||
"summary": "After the holiday the narrator finds the investigator studying a battered old hat, which he says is trivial but instructive.",
|
||||
"predicament": "A person finds a friend absorbed in some trifle and suspects it hides a serious story."
|
||||
},
|
||||
{
|
||||
"chunk": 190,
|
||||
"story": 6,
|
||||
"summary": "The investigator says no crime is involved, only one of the odd incidents a crowded city throws up; the hat belongs to a finder.",
|
||||
"predicament": "An investigator is content to study a puzzle that involves no crime at all, purely for its own interest."
|
||||
},
|
||||
{
|
||||
"chunk": 191,
|
||||
"story": 6,
|
||||
"summary": "A man carrying a goose was set upon by roughs, broke a window with his stick, and fled when a uniformed passer-by ran up, leaving hat and bird.",
|
||||
"predicament": "A man attacked in the street panics at the sight of someone in uniform and runs, leaving his belongings behind."
|
||||
},
|
||||
{
|
||||
"chunk": 192,
|
||||
"story": 6,
|
||||
"summary": "The goose's tag and hat bear a common name, so the owner cannot be traced; the investigator challenges the narrator to read the hat.",
|
||||
"predicament": "Someone holding a stranger's lost property has only a common name to go on, and wants to return it."
|
||||
},
|
||||
{
|
||||
"chunk": 193,
|
||||
"story": 6,
|
||||
"summary": "The narrator sees nothing; the investigator infers the owner is clever, fallen on hard times, perhaps drinking, and no longer loved by his wife.",
|
||||
"predicament": "A person is shown how much a stranger's decline can be read from one shabby thing he left behind."
|
||||
},
|
||||
{
|
||||
"chunk": 194,
|
||||
"story": 6,
|
||||
"summary": "He adds the owner is sedentary, middle-aged, recently barbered, and explains the hat's size and age.",
|
||||
"predicament": "Someone is told a stranger's whole history from a single object, and doubts it until each step is explained."
|
||||
},
|
||||
{
|
||||
"chunk": 195,
|
||||
"story": 6,
|
||||
"summary": "He explains the foresight, the neglect and the attempt to hide stains as signs of a weakening but proud man.",
|
||||
"predicament": "An investigator reads a proud man's slide into neglect from the small repairs he has stopped bothering to make."
|
||||
},
|
||||
{
|
||||
"chunk": 196,
|
||||
"story": 6,
|
||||
"summary": "He explains the wife and candle inferences; the narrator calls it wasted effort, when the finder bursts in about the goose.",
|
||||
"predicament": "A person scoffs that a puzzle without a crime is wasted effort, just as it turns into something serious."
|
||||
},
|
||||
{
|
||||
"chunk": 197,
|
||||
"story": 6,
|
||||
"summary": "The finder's wife found a famous stolen gem in the goose's crop, worth a huge reward; a workman has been charged with stealing it.",
|
||||
"predicament": "A person of modest means suddenly finds a stolen treasure in his hands, with a large reward on offer."
|
||||
},
|
||||
{
|
||||
"chunk": 198,
|
||||
"story": 6,
|
||||
"summary": "The report: a hotel attendant testified he left a workman with a previous conviction alone in the room; the workman protested his innocence and fainted.",
|
||||
"predicament": "A workman with a past conviction is accused of a theft on one witness's word, and faints protesting his innocence."
|
||||
},
|
||||
{
|
||||
"chunk": 199,
|
||||
"story": 6,
|
||||
"summary": "The investigator resolves to trace the path from the jewel case to the goose, and advertises for the hat's owner.",
|
||||
"predicament": "An investigator must trace how a stolen treasure travelled from the crime to an innocent stranger's hands."
|
||||
},
|
||||
{
|
||||
"chunk": 200,
|
||||
"story": 6,
|
||||
"summary": "He keeps the stone, calling it a lure for crime, and doubts both the accused man's guilt and the goose owner's involvement.",
|
||||
"predicament": "An investigator holding a stolen treasure must decide whether the man already accused of taking it is guilty."
|
||||
},
|
||||
{
|
||||
"chunk": 201,
|
||||
"story": 6,
|
||||
"summary": "He thinks the goose's owner innocent; that evening the man arrives and claims his hat.",
|
||||
"predicament": "An investigator sets a small test to learn whether a stranger knows more than he seems to about a stolen treasure."
|
||||
},
|
||||
{
|
||||
"chunk": 202,
|
||||
"story": 6,
|
||||
"summary": "The shabby, learned man explains he could not afford to advertise, and happily accepts a substitute goose.",
|
||||
"predicament": "A proud, impoverished man admits he could not afford to seek his loss, and gladly takes a substitute."
|
||||
},
|
||||
{
|
||||
"chunk": 203,
|
||||
"story": 6,
|
||||
"summary": "He shows no interest in the original bird's remains, proving his innocence, and names the inn where he got it.",
|
||||
"predicament": "A stranger passes an unspoken test of innocence without knowing he was being tested."
|
||||
},
|
||||
{
|
||||
"chunk": 204,
|
||||
"story": 6,
|
||||
"summary": "They go to the inn; the landlord says he bought the geese from a market dealer.",
|
||||
"predicament": "An investigator follows a trail link by link, each person pointing to the one before."
|
||||
},
|
||||
{
|
||||
"chunk": 205,
|
||||
"story": 6,
|
||||
"summary": "The investigator reminds the narrator an innocent man faces prison; the dealer angrily refuses to say where he bought the geese.",
|
||||
"predicament": "An investigator knows an innocent man will be convicted unless he can trace one small thing, and meets a stubborn refusal."
|
||||
},
|
||||
{
|
||||
"chunk": 206,
|
||||
"story": 6,
|
||||
"summary": "The dealer is sick of questions about the geese; the investigator draws him with a bet that the birds were country bred.",
|
||||
"predicament": "Someone who refuses to answer questions is drawn into giving everything away by the chance to win a bet."
|
||||
},
|
||||
{
|
||||
"chunk": 207,
|
||||
"story": 6,
|
||||
"summary": "The dealer's books show the geese came from a woman in town; the investigator pays up and laughs.",
|
||||
"predicament": "An investigator loses a small wager on purpose and gets exactly the information he needed."
|
||||
},
|
||||
{
|
||||
"chunk": 208,
|
||||
"story": 6,
|
||||
"summary": "He notes others are asking about the geese; a frightened little man is driven off by the dealer, demanding a goose that was his.",
|
||||
"predicament": "An investigator sees someone else anxiously chasing the same trail and guesses who has most to lose."
|
||||
},
|
||||
{
|
||||
"chunk": 209,
|
||||
"story": 6,
|
||||
"summary": "The investigator overtakes the little man, who is terrified, then eager for help; he gives a false name.",
|
||||
"predicament": "A frightened person desperate to recover something is offered help by a stranger, and hides his name."
|
||||
},
|
||||
{
|
||||
"chunk": 210,
|
||||
"story": 6,
|
||||
"summary": "The investigator names the man as the hotel attendant; in his rooms he says the goose laid a blue egg.",
|
||||
"predicament": "A thief hoping to recover his loot is led to believe help is at hand and walks into a trap."
|
||||
},
|
||||
{
|
||||
"chunk": 211,
|
||||
"story": 6,
|
||||
"summary": "Shown the gem, the attendant nearly collapses; the investigator says the game is up.",
|
||||
"predicament": "A thief is shown the stolen treasure and told his guilt is known, with no way left to deny it."
|
||||
},
|
||||
{
|
||||
"chunk": 212,
|
||||
"story": 6,
|
||||
"summary": "The investigator reveals the attendant framed the workman; the thief begs for mercy for his parents' sake and offers to flee.",
|
||||
"predicament": "A thief who framed an innocent man for his crime begs for mercy and offers to run away."
|
||||
},
|
||||
{
|
||||
"chunk": 213,
|
||||
"story": 6,
|
||||
"summary": "He confesses he took the stone to his sister's house, terrified of being searched on the way.",
|
||||
"predicament": "A thief who has framed someone else is too frightened to keep the loot on him, and must hide it quickly."
|
||||
},
|
||||
{
|
||||
"chunk": 214,
|
||||
"story": 6,
|
||||
"summary": "He planned to take it to a criminal friend, and hit on the idea of hiding it in a goose.",
|
||||
"predicament": "A thief with stolen goods and no way to sell them turns to a disreputable old friend for help."
|
||||
},
|
||||
{
|
||||
"chunk": 215,
|
||||
"story": 6,
|
||||
"summary": "He fed the stone to a goose, which escaped among the flock; he insisted on taking the bird he thought it was.",
|
||||
"predicament": "A thief hides his loot in a clever way, and a small accident means he loses track of it."
|
||||
},
|
||||
{
|
||||
"chunk": 216,
|
||||
"story": 6,
|
||||
"summary": "The goose held no stone; the flock was sold on and he could not trace it; he sobs that he is a thief with nothing; the investigator tells him to get out.",
|
||||
"predicament": "A thief who sacrificed his honour for loot he never held breaks down, and is let go."
|
||||
},
|
||||
{
|
||||
"chunk": 217,
|
||||
"story": 6,
|
||||
"summary": "The investigator reasons the case against the workman will collapse, and that jail would make the thief a criminal for life.",
|
||||
"predicament": "An investigator lets a frightened first offender go free, choosing mercy over the law he is not paid to enforce."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,212 @@
|
||||
[
|
||||
{
|
||||
"chunk": 218,
|
||||
"story": 7,
|
||||
"summary": "The narrator explains he was sworn to secrecy until the client's death; early one morning the investigator wakes him.",
|
||||
"predicament": "A chronicler has kept a promise of silence for years and now must decide whether to tell the story."
|
||||
},
|
||||
{
|
||||
"chunk": 219,
|
||||
"story": 7,
|
||||
"summary": "A terrified young woman in black has arrived early; she says she shivers not from cold but fear.",
|
||||
"predicament": "A frightened visitor arrives before dawn, too afraid to wait, to beg strangers for help."
|
||||
},
|
||||
{
|
||||
"chunk": 220,
|
||||
"story": 7,
|
||||
"summary": "Her face is haggard and grey; the investigator reads her early journey from her ticket and mud splashes.",
|
||||
"predicament": "A frightened young woman is startled when a stranger reads her whole journey from small signs."
|
||||
},
|
||||
{
|
||||
"chunk": 221,
|
||||
"story": 7,
|
||||
"summary": "She has no one to help her but a fiancé who can do little; she offers to pay once she marries and controls her own money.",
|
||||
"predicament": "A frightened young woman with no money of her own asks for help she can only repay once she is free."
|
||||
},
|
||||
{
|
||||
"chunk": 222,
|
||||
"story": 7,
|
||||
"summary": "Her fears are so vague that even her fiancé thinks them nerves; she lives with her stepfather in an old ruined family house.",
|
||||
"predicament": "A person whose fears rest on small signs is gently dismissed as nervous by the very person she should trust."
|
||||
},
|
||||
{
|
||||
"chunk": 223,
|
||||
"story": 7,
|
||||
"summary": "The family fortune is gone; the stepfather made a career abroad but killed a servant in rage and was imprisoned.",
|
||||
"predicament": "A young woman lives under the roof of a relative with a violent past and a ruined fortune."
|
||||
},
|
||||
{
|
||||
"chunk": 224,
|
||||
"story": 7,
|
||||
"summary": "The mother's money passes to the stepfather unless the daughters marry; he has become a violent recluse, feared by the village.",
|
||||
"predicament": "A young woman depends on a violent relative who controls her money and loses it if she marries."
|
||||
},
|
||||
{
|
||||
"chunk": 225,
|
||||
"story": 7,
|
||||
"summary": "He threw a smith into a stream; the daughter paid to hush it up; he keeps wild animals and wanderers on his land, and the sisters lived in fear.",
|
||||
"predicament": "A young woman pays to cover up a violent relative's attacks, and lives in fear under his roof."
|
||||
},
|
||||
{
|
||||
"chunk": 226,
|
||||
"story": 7,
|
||||
"summary": "Her twin sister died two years ago, a fortnight before her wedding; she describes the three bedrooms along one corridor.",
|
||||
"predicament": "A young woman whose sister died just before her wedding tells a stranger exactly how the house is laid out."
|
||||
},
|
||||
{
|
||||
"chunk": 227,
|
||||
"story": 7,
|
||||
"summary": "The night of her death her sister asked if she had heard a whistle at night; they locked their doors for fear of the animals.",
|
||||
"predicament": "Two sisters, too afraid to sleep unlocked, share a small uneasy sign of danger and dismiss it."
|
||||
},
|
||||
{
|
||||
"chunk": 228,
|
||||
"story": 7,
|
||||
"summary": "She heard her sister scream, a whistle and a clang; the sister staggered out, cried about a speckled band, pointed toward the stepfather's room, and died.",
|
||||
"predicament": "A young woman watches her sister die in terror, pointing toward the relative neither dared to accuse."
|
||||
},
|
||||
{
|
||||
"chunk": 229,
|
||||
"story": 7,
|
||||
"summary": "The inquiry found the room sealed and no cause of death; she believes her sister died of fright.",
|
||||
"predicament": "A death no one can explain is put down to fright, and the only witness cannot swear to what she heard."
|
||||
},
|
||||
{
|
||||
"chunk": 230,
|
||||
"story": 7,
|
||||
"summary": "She is now engaged; forced by repairs to sleep in her dead sister's bed, she heard the same whistle and fled at dawn.",
|
||||
"predicament": "A young woman, newly engaged, finds herself in the very place and danger that killed her sister before her wedding."
|
||||
},
|
||||
{
|
||||
"chunk": 231,
|
||||
"story": 7,
|
||||
"summary": "The investigator reveals bruises on her wrist; she excuses her stepfather; they plan to inspect the rooms while he is away.",
|
||||
"predicament": "A frightened young woman shields the violent relative who hurt her, even while asking for help against him."
|
||||
},
|
||||
{
|
||||
"chunk": 232,
|
||||
"story": 7,
|
||||
"summary": "After she leaves, the investigator lays out a tentative theory involving the wanderers and a falling bar; both see objections.",
|
||||
"predicament": "An investigator has a theory that fits most of the facts and knows it does not fit them all."
|
||||
},
|
||||
{
|
||||
"chunk": 233,
|
||||
"story": 7,
|
||||
"summary": "The stepfather bursts in, demanding what his stepdaughter said; the investigator answers with small talk.",
|
||||
"predicament": "A violent man traces his stepdaughter to her helpers and demands to know what she told them."
|
||||
},
|
||||
{
|
||||
"chunk": 234,
|
||||
"story": 7,
|
||||
"summary": "He bends a poker and threatens the investigator, who straightens it after he leaves and worries for the young woman.",
|
||||
"predicament": "A violent man threatens the people helping his victim, and they fear he will take it out on her."
|
||||
},
|
||||
{
|
||||
"chunk": 235,
|
||||
"story": 7,
|
||||
"summary": "The will shows each daughter's marriage would cut the stepfather's income badly, giving him a strong motive.",
|
||||
"predicament": "An investigator finds that a guardian stands to lose most of his income if his ward marries."
|
||||
},
|
||||
{
|
||||
"chunk": 236,
|
||||
"story": 7,
|
||||
"summary": "They travel into the country and see the old house; a driver points them to the young woman on the path.",
|
||||
"predicament": "Helpers arrive quietly near a dangerous house, trying not to be noticed by anyone who might talk."
|
||||
},
|
||||
{
|
||||
"chunk": 237,
|
||||
"story": 7,
|
||||
"summary": "The young woman is terrified to learn her stepfather followed her; the investigator promises to protect her.",
|
||||
"predicament": "A young woman learns her violent guardian followed her in secret, and fears what he will do tonight."
|
||||
},
|
||||
{
|
||||
"chunk": 238,
|
||||
"story": 7,
|
||||
"summary": "He examines the outside; she believes the repairs were an excuse to move her into her sister's room.",
|
||||
"predicament": "A young woman suspects her guardian invented an excuse to move her into the room where her sister died."
|
||||
},
|
||||
{
|
||||
"chunk": 239,
|
||||
"story": 7,
|
||||
"summary": "The shutters cannot be forced from outside; inside, he studies the room and a new bell-rope by the bed.",
|
||||
"predicament": "An investigator finds his theory will not work and must look again at the room with fresh eyes."
|
||||
},
|
||||
{
|
||||
"chunk": 240,
|
||||
"story": 7,
|
||||
"summary": "The bell-rope is a dummy fixed near a ventilator that opens into the stepfather's room; both were added recently.",
|
||||
"predicament": "An investigator finds small recent changes in a victim's room that make no sense unless someone intended harm."
|
||||
},
|
||||
{
|
||||
"chunk": 241,
|
||||
"story": 7,
|
||||
"summary": "In the stepfather's room he finds a safe, a saucer of milk, a chair stood on, and a lash tied in a loop.",
|
||||
"predicament": "An investigator searches a suspect's private room and finds innocent-looking things that together point to murder."
|
||||
},
|
||||
{
|
||||
"chunk": 242,
|
||||
"story": 7,
|
||||
"summary": "The investigator, grim, tells her to signal them from her window, then hide in her old room.",
|
||||
"predicament": "An investigator tells a threatened person her life depends on following his instructions exactly tonight."
|
||||
},
|
||||
{
|
||||
"chunk": 243,
|
||||
"story": 7,
|
||||
"summary": "He will not name the cause yet; from the inn they watch the stepfather return in a rage.",
|
||||
"predicament": "A frightened person begs for the truth about her sister's death, and her helper will not speak without proof."
|
||||
},
|
||||
{
|
||||
"chunk": 244,
|
||||
"story": 7,
|
||||
"summary": "The investigator explains he deduced the ventilator and notes the bed is clamped to the floor.",
|
||||
"predicament": "An investigator explains that a victim's bed was fixed in place so that she could never move out of harm's way."
|
||||
},
|
||||
{
|
||||
"chunk": 245,
|
||||
"story": 7,
|
||||
"summary": "The narrator begins to see a horrible plan; at the signal they set out in the dark.",
|
||||
"predicament": "Helpers realise a cold, clever relative has been trying to kill his ward by a method no one could trace."
|
||||
},
|
||||
{
|
||||
"chunk": 246,
|
||||
"story": 7,
|
||||
"summary": "They enter the grounds; a wild animal startles them; inside they sit in the dark, armed, in silence.",
|
||||
"predicament": "Two people keep a silent armed watch in a victim's room, knowing any sound could warn a killer."
|
||||
},
|
||||
{
|
||||
"chunk": 247,
|
||||
"story": 7,
|
||||
"summary": "After hours of waiting a lantern gleams through the ventilator and a hiss is heard; the investigator strikes at the rope.",
|
||||
"predicament": "Watchers waiting in the dark for a hidden killer finally hear it coming and must strike without seeing."
|
||||
},
|
||||
{
|
||||
"chunk": 248,
|
||||
"story": 7,
|
||||
"summary": "A terrible scream rings out from the next room; the investigator says it is all over.",
|
||||
"predicament": "A person who struck at a hidden danger hears it find its master instead."
|
||||
},
|
||||
{
|
||||
"chunk": 249,
|
||||
"story": 7,
|
||||
"summary": "The stepfather sits dead, bitten by the snake he trained; the investigator returns it to the safe.",
|
||||
"predicament": "A schemer who planned a hidden death for another is killed by his own weapon."
|
||||
},
|
||||
{
|
||||
"chunk": 250,
|
||||
"story": 7,
|
||||
"summary": "They take the young woman to her aunt; the inquiry blames a dangerous pet.",
|
||||
"predicament": "The truth about a guardian's death is quietly left out of the official finding, sparing everyone."
|
||||
},
|
||||
{
|
||||
"chunk": 251,
|
||||
"story": 7,
|
||||
"summary": "The investigator admits he first reasoned wrongly, then explains how the snake was trained to crawl down the rope.",
|
||||
"predicament": "An investigator admits his first theory was wrong and explains how he corrected it in time."
|
||||
},
|
||||
{
|
||||
"chunk": 252,
|
||||
"story": 7,
|
||||
"summary": "He explains the rest, and admits he is indirectly responsible for the stepfather's death, without regret.",
|
||||
"predicament": "An investigator admits he caused a killer's death, and says it will not trouble his conscience."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,194 @@
|
||||
[
|
||||
{
|
||||
"chunk": 253,
|
||||
"story": 8,
|
||||
"summary": "The narrator introduces one of only two cases he brought to the investigator, a dramatic one already told badly in the papers.",
|
||||
"predicament": "A chronicler wants to tell properly a story the newspapers already told carelessly and without its real effect."
|
||||
},
|
||||
{
|
||||
"chunk": 254,
|
||||
"story": 8,
|
||||
"summary": "Early one morning a grateful railway guard brings a new patient to the narrator's door so that he cannot slip away.",
|
||||
"predicament": "A grateful acquaintance delivers a stranger in trouble straight to a helper's door, making sure he stays."
|
||||
},
|
||||
{
|
||||
"chunk": 255,
|
||||
"story": 8,
|
||||
"summary": "A pale young engineer with a bloodied hand explains he had an accident, then breaks into hysterical laughter.",
|
||||
"predicament": "A young man who has just survived something terrible holds himself together until relief makes him break down."
|
||||
},
|
||||
{
|
||||
"chunk": 256,
|
||||
"story": 8,
|
||||
"summary": "He shows that his thumb was hacked off, calls it a murderous attack, and the narrator dresses the wound.",
|
||||
"predicament": "A person arrives with a terrible wound and calmly says it was no accident but an attempt on his life."
|
||||
},
|
||||
{
|
||||
"chunk": 257,
|
||||
"story": 8,
|
||||
"summary": "He fears the police will not believe his strange story or be able to act; the narrator takes him to the investigator.",
|
||||
"predicament": "A victim fears no one will believe his story or be able to act on the vague clues he can give."
|
||||
},
|
||||
{
|
||||
"chunk": 258,
|
||||
"story": 8,
|
||||
"summary": "The investigator feeds him breakfast and settles him on the sofa to hear his story.",
|
||||
"predicament": "A shaken stranger is taken in kindly and made comfortable before he is asked to tell his story."
|
||||
},
|
||||
{
|
||||
"chunk": 259,
|
||||
"story": 8,
|
||||
"summary": "The engineer explains he is an orphan who set up alone and had almost no work in two years.",
|
||||
"predicament": "A young person starting out alone has waited two years for work, and has begun to lose hope."
|
||||
},
|
||||
{
|
||||
"chunk": 260,
|
||||
"story": 8,
|
||||
"summary": "A strange, gaunt foreign client calls, having heard he is discreet, an orphan, a bachelor, and lives alone.",
|
||||
"predicament": "A struggling beginner is flattered by a stranger who has oddly checked that no one would miss him."
|
||||
},
|
||||
{
|
||||
"chunk": 261,
|
||||
"story": 8,
|
||||
"summary": "The client demands absolute secrecy, checks the passage for listeners, and offers a large fee for a night's work.",
|
||||
"predicament": "A desperate beginner is offered far too much money by a stranger who insists no one must ever know."
|
||||
},
|
||||
{
|
||||
"chunk": 262,
|
||||
"story": 8,
|
||||
"summary": "The job is to inspect a machine at a remote country house late at night; the engineer hesitates but accepts for the money.",
|
||||
"predicament": "A person short of work swallows his doubts about a strange late-night job because the pay is too good to refuse."
|
||||
},
|
||||
{
|
||||
"chunk": 263,
|
||||
"story": 8,
|
||||
"summary": "The client begins to explain why the secrecy is necessary, checking again they cannot be overheard.",
|
||||
"predicament": "A stranger prepares to explain why an ordinary job must be kept secret, and checks again for listeners."
|
||||
},
|
||||
{
|
||||
"chunk": 264,
|
||||
"story": 8,
|
||||
"summary": "He claims he is secretly digging a valuable mineral to buy his neighbours' land cheaply before they know its worth.",
|
||||
"predicament": "A newcomer is given a plausible reason for secrecy that makes him a partner in a small deception."
|
||||
},
|
||||
{
|
||||
"chunk": 265,
|
||||
"story": 8,
|
||||
"summary": "The engineer finds the story odd and the client repellent, but decides the fee is worth it and goes, telling no one.",
|
||||
"predicament": "A person uneasy about a job and the stranger offering it decides the money outweighs his doubts, and tells no one."
|
||||
},
|
||||
{
|
||||
"chunk": 266,
|
||||
"story": 8,
|
||||
"summary": "At a lonely country station the client hurries him into a closed carriage; the investigator asks about the horse.",
|
||||
"predicament": "A person who agreed to a secret job is met at night and hurried into a closed carriage to an unknown place."
|
||||
},
|
||||
{
|
||||
"chunk": 267,
|
||||
"story": 8,
|
||||
"summary": "A long drive with frosted windows and a silent, staring companion ends at a house he cannot see.",
|
||||
"predicament": "A person is driven for an hour through the dark with no view out, watched closely by the man who hired him."
|
||||
},
|
||||
{
|
||||
"chunk": 268,
|
||||
"story": 8,
|
||||
"summary": "A frightened woman appears with a lamp, is pushed back, and he is left alone in a small room.",
|
||||
"predicament": "A stranger alone in an unknown house glimpses a frightened woman who is quickly hustled out of sight."
|
||||
},
|
||||
{
|
||||
"chunk": 269,
|
||||
"story": 8,
|
||||
"summary": "He waits uneasily in the silent barred room; the woman returns, sick with fear, and signals silence.",
|
||||
"predicament": "A person waiting alone in a strange house is secretly approached by someone who is plainly terrified."
|
||||
},
|
||||
{
|
||||
"chunk": 270,
|
||||
"story": 8,
|
||||
"summary": "She begs him to leave before it is too late; he refuses because of the fee; footsteps come and she vanishes.",
|
||||
"predicament": "A stranger urgently warns a newcomer to flee, and he refuses because leaving would cost him the money."
|
||||
},
|
||||
{
|
||||
"chunk": 271,
|
||||
"story": 8,
|
||||
"summary": "The client, suspicious, brings a morose associate and leads him through a decaying house to the machine.",
|
||||
"predicament": "A person ignores a warning and follows his employers deeper into a strange, decaying house."
|
||||
},
|
||||
{
|
||||
"chunk": 272,
|
||||
"story": 8,
|
||||
"summary": "The client shows him into the machine itself, remarking how unpleasant it would be if someone turned it on.",
|
||||
"predicament": "A person is led into a confined place by a man who jokes about how dangerous it would be."
|
||||
},
|
||||
{
|
||||
"chunk": 273,
|
||||
"story": 8,
|
||||
"summary": "He finds the fault, but sees the story was false and scrapes at a metal crust on the floor; the client catches him.",
|
||||
"predicament": "A person hired for a job discovers his employers lied to him, and is caught looking where he should not."
|
||||
},
|
||||
{
|
||||
"chunk": 274,
|
||||
"story": 8,
|
||||
"summary": "He rashly lets on he knows the story is false; the client locks him in the machine.",
|
||||
"predicament": "A person angry at being deceived says so rashly and is at once trapped by the people he exposed."
|
||||
},
|
||||
{
|
||||
"chunk": 275,
|
||||
"story": 8,
|
||||
"summary": "The machine starts and the ceiling descends; he begs, then sees a gleam of hope.",
|
||||
"predicament": "A person trapped by killers faces a slow death and must keep his head long enough to see a way out."
|
||||
},
|
||||
{
|
||||
"chunk": 276,
|
||||
"story": 8,
|
||||
"summary": "The woman opens a panel and pulls him out; they run as the pursuers shout.",
|
||||
"predicament": "A trapped person is rescued at the last moment by the stranger whose warning he ignored."
|
||||
},
|
||||
{
|
||||
"chunk": 277,
|
||||
"story": 8,
|
||||
"summary": "At a window she holds back the client, begging him to spare the engineer; the client cuts at him as he drops, severing his thumb.",
|
||||
"predicament": "A person helping a stranger escape pleads with her dangerous companion to spare him, and is thrust aside."
|
||||
},
|
||||
{
|
||||
"chunk": 278,
|
||||
"story": 8,
|
||||
"summary": "He runs, faints, and wakes at dawn by the road near the station, the house gone from sight.",
|
||||
"predicament": "A person who escaped killers wakes injured in a strange place, unsure whether he is safe yet."
|
||||
},
|
||||
{
|
||||
"chunk": 279,
|
||||
"story": 8,
|
||||
"summary": "The porter knows nothing of the client; the investigator reads out a notice for an engineer who vanished a year earlier.",
|
||||
"predicament": "A survivor learns that someone in his position before him was never seen again."
|
||||
},
|
||||
{
|
||||
"chunk": 280,
|
||||
"story": 8,
|
||||
"summary": "The investigator calls the client a ruthless man; they travel with the police, puzzled why the victim was spared.",
|
||||
"predicament": "Investigators set out after a ruthless gang, wondering why their one survivor was spared."
|
||||
},
|
||||
{
|
||||
"chunk": 281,
|
||||
"story": 8,
|
||||
"summary": "Each guesses a direction; the investigator says the house is in the middle, and names them counterfeiters the police have hunted.",
|
||||
"predicament": "Everyone guesses where a hidden gang is based, and the investigator sees they were misled by a trick."
|
||||
},
|
||||
{
|
||||
"chunk": 282,
|
||||
"story": 8,
|
||||
"summary": "On arrival they find the house ablaze; the engineer recognises it.",
|
||||
"predicament": "Pursuers arrive to find the criminals' hideout burning and their quarry likely gone."
|
||||
},
|
||||
{
|
||||
"chunk": 283,
|
||||
"story": 8,
|
||||
"summary": "The lamp crushed in the machine started the fire; the gang has fled without a trace.",
|
||||
"predicament": "Criminals escape with their goods while the hideout burns, and the one witness is left with nothing."
|
||||
},
|
||||
{
|
||||
"chunk": 284,
|
||||
"story": 8,
|
||||
"summary": "Footprints suggest the woman and the quieter associate carried the engineer to safety; he laments his losses.",
|
||||
"predicament": "A victim who lost much and gained nothing learns that the gang's gentler members quietly saved his life."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,188 @@
|
||||
[
|
||||
{
|
||||
"chunk": 285,
|
||||
"story": 9,
|
||||
"summary": "The narrator recalls an old society scandal whose full facts were never told; a letter with a grand crest awaits the investigator.",
|
||||
"predicament": "A chronicler decides to reveal what really lay behind an old scandal the gossips have since forgotten."
|
||||
},
|
||||
{
|
||||
"chunk": 286,
|
||||
"story": 9,
|
||||
"summary": "The investigator says the letter is professional, from a very highly placed client, and asks the narrator to summarise the newspapers.",
|
||||
"predicament": "An investigator cares more for a case's interest than for how grand his new client is."
|
||||
},
|
||||
{
|
||||
"chunk": 287,
|
||||
"story": 9,
|
||||
"summary": "The noble client writes asking for an urgent meeting about a painful event at his wedding; the police are already involved.",
|
||||
"predicament": "A proud, highly placed man must ask a stranger for help with a humiliating private matter."
|
||||
},
|
||||
{
|
||||
"chunk": 288,
|
||||
"story": 9,
|
||||
"summary": "The investigator looks the client up and finds him middle-aged, from a great but impoverished family.",
|
||||
"predicament": "An investigator checks the standing of a grand client and finds an old name with little money behind it."
|
||||
},
|
||||
{
|
||||
"chunk": 289,
|
||||
"story": 9,
|
||||
"summary": "A notice announced the client's engagement to the only daughter of a rich foreign mine owner.",
|
||||
"predicament": "A grand but poor family announces a match with the daughter of a newly rich outsider."
|
||||
},
|
||||
{
|
||||
"chunk": 290,
|
||||
"story": 9,
|
||||
"summary": "A society paper sneers that the heiress's huge dowry will rescue the impoverished noble family.",
|
||||
"predicament": "A marriage between old rank and new money is openly mocked as a bargain that suits both sides."
|
||||
},
|
||||
{
|
||||
"chunk": 291,
|
||||
"story": 9,
|
||||
"summary": "The quiet wedding took place, but the bride vanished during the wedding breakfast.",
|
||||
"predicament": "A bride vanishes from her own wedding breakfast, leaving her groom and family in public humiliation."
|
||||
},
|
||||
{
|
||||
"chunk": 292,
|
||||
"story": 9,
|
||||
"summary": "A newspaper confirms the family's consternation as rumours spread despite attempts to hush them up.",
|
||||
"predicament": "A grand family's efforts to hush up a humiliation fail as the story spreads everywhere."
|
||||
},
|
||||
{
|
||||
"chunk": 293,
|
||||
"story": 9,
|
||||
"summary": "A woman claiming a hold on the groom tried to force her way in; the bride left in a hurry; the intruding woman has been arrested.",
|
||||
"predicament": "A former companion of a groom tries to force her way into his wedding, and is suspected when the bride vanishes."
|
||||
},
|
||||
{
|
||||
"chunk": 294,
|
||||
"story": 9,
|
||||
"summary": "The arrested woman is an old acquaintance of the groom; the proud, foppish client arrives.",
|
||||
"predicament": "A woman with a past claim on a groom is arrested because she made a scene at his wedding."
|
||||
},
|
||||
{
|
||||
"chunk": 295,
|
||||
"story": 9,
|
||||
"summary": "The client feels cut to the quick; the investigator refuses to discuss other clients and begins questioning him.",
|
||||
"predicament": "A proud man who has been humiliated wants to be sure his helper will keep his secrets."
|
||||
},
|
||||
{
|
||||
"chunk": 296,
|
||||
"story": 9,
|
||||
"summary": "The client describes his wife as a wild, fearless woman raised in a mining camp before her father's sudden fortune.",
|
||||
"predicament": "A proud man describes a wife from a rougher world, fearless and impulsive, whom he never really understood."
|
||||
},
|
||||
{
|
||||
"chunk": 297,
|
||||
"story": 9,
|
||||
"summary": "The bride was cheerful until after the ceremony, when she dropped her bouquet into a pew and grew agitated.",
|
||||
"predicament": "A groom dismisses as trivial the one small moment when his bride's manner suddenly changed."
|
||||
},
|
||||
{
|
||||
"chunk": 298,
|
||||
"story": 9,
|
||||
"summary": "She talked privately to her maid about a prior claim, left the breakfast, and was seen walking in the park with the arrested woman.",
|
||||
"predicament": "A bride slips away from her own wedding breakfast after a whispered talk with a confidant from her old life."
|
||||
},
|
||||
{
|
||||
"chunk": 299,
|
||||
"story": 9,
|
||||
"summary": "The client admits a long, close attachment to the arrested woman, who wrote threatening letters; he doubts she would hurt anyone.",
|
||||
"predicament": "A man admits a former companion threatened to make a scene at his wedding, and that he took steps to stop her."
|
||||
},
|
||||
{
|
||||
"chunk": 300,
|
||||
"story": 9,
|
||||
"summary": "He suggests the social strain unbalanced his wife; the investigator says he has solved the case, and the client is sceptical.",
|
||||
"predicament": "A proud man can only explain his bride's flight by supposing she lost her mind rather than rejected him."
|
||||
},
|
||||
{
|
||||
"chunk": 301,
|
||||
"story": 9,
|
||||
"summary": "A police officer arrives having dragged a lake for the bride's body; the investigator laughs at him.",
|
||||
"predicament": "An official sure of a tragedy searches for a body, while the investigator is sure there is none to find."
|
||||
},
|
||||
{
|
||||
"chunk": 302,
|
||||
"story": 9,
|
||||
"summary": "The officer produces the wedding dress and ring found in the water, and says they implicate the arrested woman.",
|
||||
"predicament": "An official holds evidence he is sure proves a suspect guilty, and scorns a rival's theory as impractical."
|
||||
},
|
||||
{
|
||||
"chunk": 303,
|
||||
"story": 9,
|
||||
"summary": "A note in the dress, signed with initials, seems to prove a lure; the investigator is interested in the hotel bill on the back.",
|
||||
"predicament": "An official triumphantly shows proof against his suspect, and misses the clue written on its back."
|
||||
},
|
||||
{
|
||||
"chunk": 304,
|
||||
"story": 9,
|
||||
"summary": "The officer storms off; the investigator tells him the bride never existed as the client's wife, and goes out; a lavish supper for five is delivered.",
|
||||
"predicament": "An investigator tells a sceptical rival the truth in a riddle, and is taken for a madman."
|
||||
},
|
||||
{
|
||||
"chunk": 305,
|
||||
"story": 9,
|
||||
"summary": "The client arrives, humiliated and angry; the investigator asks him to make allowance for a motherless girl.",
|
||||
"predicament": "A proud man publicly deserted refuses to make any allowance for the person who deserted him."
|
||||
},
|
||||
{
|
||||
"chunk": 306,
|
||||
"story": 9,
|
||||
"summary": "The investigator brings in the bride and her companion; she apologises for her treatment of the client.",
|
||||
"predicament": "A deserted groom is brought face to face with the bride who left him, and she asks his pardon."
|
||||
},
|
||||
{
|
||||
"chunk": 307,
|
||||
"story": 9,
|
||||
"summary": "She explains she was secretly married years ago to a poor prospector her rich father rejected, and pledged to wait for him.",
|
||||
"predicament": "A person who secretly married someone her family forbade must explain it to the one she has since wed."
|
||||
},
|
||||
{
|
||||
"chunk": 308,
|
||||
"story": 9,
|
||||
"summary": "She heard her first husband had been killed, grieved for a year, then accepted the arranged match.",
|
||||
"predicament": "A person who believed her first love dead has moved on, and never imagined he might return."
|
||||
},
|
||||
{
|
||||
"chunk": 309,
|
||||
"story": 9,
|
||||
"summary": "At the altar she saw her first husband alive in a pew; he slipped her a note, and she knew her duty was to him.",
|
||||
"predicament": "A bride sees her first spouse, long thought dead, alive in the crowd at her second wedding."
|
||||
},
|
||||
{
|
||||
"chunk": 310,
|
||||
"story": 9,
|
||||
"summary": "She slipped away to join him, too ashamed to face the grand guests; he had escaped captivity and followed her.",
|
||||
"predicament": "A person whose first spouse returns from the dead runs off with him rather than face the one she has just married."
|
||||
},
|
||||
{
|
||||
"chunk": 311,
|
||||
"story": 9,
|
||||
"summary": "Ashamed, she wanted to vanish; the investigator persuaded them to be open; the client coldly shakes her hand.",
|
||||
"predicament": "A deserted spouse is given a full apology, and accepts it only with cold, wounded formality."
|
||||
},
|
||||
{
|
||||
"chunk": 312,
|
||||
"story": 9,
|
||||
"summary": "The client refuses to stay for supper; the investigator says the case shows how simple the strangest-seeming affairs can be.",
|
||||
"predicament": "A proud man publicly humiliated refuses to join in any celebration of the outcome, and leaves."
|
||||
},
|
||||
{
|
||||
"chunk": 313,
|
||||
"story": 9,
|
||||
"summary": "The investigator explains he reasoned the bride saw someone from her past who had a prior claim.",
|
||||
"predicament": "An investigator reasons that a bride who changed her mind in minutes must have seen someone from her past."
|
||||
},
|
||||
{
|
||||
"chunk": 314,
|
||||
"story": 9,
|
||||
"summary": "He traced the man through the expensive hotel bill and persuaded the couple to face the client.",
|
||||
"predicament": "An investigator finds a runaway couple and persuades them to face the person they wronged."
|
||||
},
|
||||
{
|
||||
"chunk": 315,
|
||||
"story": 9,
|
||||
"summary": "The investigator asks the narrator to judge the deserted client mercifully, having lost wife and fortune at once.",
|
||||
"predicament": "An investigator asks a friend to judge a humiliated man kindly, since he lost everything in an instant."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,224 @@
|
||||
[
|
||||
{
|
||||
"chunk": 316,
|
||||
"story": 10,
|
||||
"summary": "From the window the narrator sees a dignified man running and grimacing in the snow, checking house numbers; the investigator guesses he is coming to them.",
|
||||
"predicament": "A respectable person is driven so far by a crisis that he runs through the street like a madman."
|
||||
},
|
||||
{
|
||||
"chunk": 317,
|
||||
"story": 10,
|
||||
"summary": "The man bursts in, beats his head against the wall in despair, and is calmed by the investigator.",
|
||||
"predicament": "A person overwhelmed by sudden disaster can barely speak, and fears he will be taken for mad."
|
||||
},
|
||||
{
|
||||
"chunk": 318,
|
||||
"story": 10,
|
||||
"summary": "He is a leading banker; public disgrace and private grief have struck together, and people of the highest rank may suffer.",
|
||||
"predicament": "A respected person facing public disgrace and private grief at once must explain himself to a stranger."
|
||||
},
|
||||
{
|
||||
"chunk": 319,
|
||||
"story": 10,
|
||||
"summary": "A client of the very highest rank asked for a large, urgent loan, preferring business to asking favours of friends.",
|
||||
"predicament": "A person of great standing asks a lender for a large secret loan rather than owe favours to friends."
|
||||
},
|
||||
{
|
||||
"chunk": 320,
|
||||
"story": 10,
|
||||
"summary": "As security he left a priceless national treasure, promising to reclaim it in four days.",
|
||||
"predicament": "A lender is asked to hold a priceless, irreplaceable treasure as security, and cannot politely refuse."
|
||||
},
|
||||
{
|
||||
"chunk": 321,
|
||||
"story": 10,
|
||||
"summary": "The client stressed discretion and that any damage would cause a great public scandal; the banker regretted taking it.",
|
||||
"predicament": "A person entrusted with something irreplaceable realises too late how much he will lose if anything happens to it."
|
||||
},
|
||||
{
|
||||
"chunk": 322,
|
||||
"story": 10,
|
||||
"summary": "Fearing burglary, he carried it home and locked it in his bureau; he describes his trusted servants and a newer maid with admirers.",
|
||||
"predicament": "A worried custodian takes a treasure home for safety, into a household he trusts completely."
|
||||
},
|
||||
{
|
||||
"chunk": 323,
|
||||
"story": 10,
|
||||
"summary": "His only son, spoiled after his mother's death, has fallen into gambling debts through a charming older friend.",
|
||||
"predicament": "A parent who indulged a child now watches him sink into debt under the influence of a worldly friend."
|
||||
},
|
||||
{
|
||||
"chunk": 324,
|
||||
"story": 10,
|
||||
"summary": "The friend is fascinating but untrustworthy; his adopted niece is his loving right hand, though she twice refused the son.",
|
||||
"predicament": "A parent is charmed by a son's dangerous friend, and trusts completely a young woman he raised as his own."
|
||||
},
|
||||
{
|
||||
"chunk": 325,
|
||||
"story": 10,
|
||||
"summary": "He told his son and niece about the treasure; the son warned the lock was weak, then begged for money to pay a gambling debt and was refused.",
|
||||
"predicament": "A young man desperate to pay a debt of honour is refused by his parent on the night a treasure is in the house."
|
||||
},
|
||||
{
|
||||
"chunk": 326,
|
||||
"story": 10,
|
||||
"summary": "He checked the treasure; his niece, closing a window, reported that a maid had slipped out to meet someone.",
|
||||
"predicament": "A trusted young woman, caught at an open window at night, points out someone else's secret meeting instead."
|
||||
},
|
||||
{
|
||||
"chunk": 327,
|
||||
"story": 10,
|
||||
"summary": "At night he found his son holding the damaged treasure, and accused him of theft; the son denied anything was missing.",
|
||||
"predicament": "A parent catches his son with a damaged treasure in his hands and calls him a thief before hearing a word."
|
||||
},
|
||||
{
|
||||
"chunk": 328,
|
||||
"story": 10,
|
||||
"summary": "The son refuses to say more; the niece faints; the police come and the son asks to leave the house for five minutes.",
|
||||
"predicament": "A young man wrongly accused by his own parent refuses to explain himself, out of pride and to protect someone."
|
||||
},
|
||||
{
|
||||
"chunk": 329,
|
||||
"story": 10,
|
||||
"summary": "The banker begs his son to reveal where the missing stones are, promising forgiveness.",
|
||||
"predicament": "A parent begs a son he thinks guilty to confess and make amends, promising all will be forgiven."
|
||||
},
|
||||
{
|
||||
"chunk": 330,
|
||||
"story": 10,
|
||||
"summary": "The son sneers at forgiveness and is arrested; nothing is found; the banker has lost honour, gems and son in one night.",
|
||||
"predicament": "A young man spurns forgiveness for a crime he did not commit and is taken away, saying nothing."
|
||||
},
|
||||
{
|
||||
"chunk": 331,
|
||||
"story": 10,
|
||||
"summary": "The investigator doubts the son's guilt, noting his silence cuts both ways and the police theory makes no sense.",
|
||||
"predicament": "An investigator notices an accused man's silence could mean innocence as easily as guilt."
|
||||
},
|
||||
{
|
||||
"chunk": 332,
|
||||
"story": 10,
|
||||
"summary": "He lays out how implausible the father's theory is and proposes going to the house.",
|
||||
"predicament": "An investigator points out that the theory everyone believes asks the accused to have done something absurd."
|
||||
},
|
||||
{
|
||||
"chunk": 333,
|
||||
"story": 10,
|
||||
"summary": "They travel to the banker's house; the narrator still thinks the son guilty but trusts the investigator.",
|
||||
"predicament": "A companion is sure the accused is guilty but trusts his friend's doubts enough to keep an open mind."
|
||||
},
|
||||
{
|
||||
"chunk": 334,
|
||||
"story": 10,
|
||||
"summary": "The investigator walks round the house; the pale, grieving niece asks the banker to free the son.",
|
||||
"predicament": "A young woman grief-stricken over an accused cousin begs her guardian to release him."
|
||||
},
|
||||
{
|
||||
"chunk": 335,
|
||||
"story": 10,
|
||||
"summary": "She insists the son is innocent and asks that the matter be dropped; the investigator agrees he is innocent.",
|
||||
"predicament": "A person pleads for a matter to be dropped entirely, which would also bury her own part in it."
|
||||
},
|
||||
{
|
||||
"chunk": 336,
|
||||
"story": 10,
|
||||
"summary": "She confirms the maid's meeting with a man; the investigator surprises her by knowing he has a wooden leg.",
|
||||
"predicament": "A person offering a convenient alternative suspect is startled when the investigator knows more than she said."
|
||||
},
|
||||
{
|
||||
"chunk": 337,
|
||||
"story": 10,
|
||||
"summary": "The investigator examines a window sill and the bureau, and asks the banker to break off a corner of the treasure.",
|
||||
"predicament": "An investigator tests the official theory by showing how the crime could not have happened quietly."
|
||||
},
|
||||
{
|
||||
"chunk": 338,
|
||||
"story": 10,
|
||||
"summary": "He shows breaking it would make a loud noise; he searches outside alone and says only that his opinion is unchanged.",
|
||||
"predicament": "An investigator has seen enough to be sure of a young man's innocence but will not yet say who is guilty."
|
||||
},
|
||||
{
|
||||
"chunk": 339,
|
||||
"story": 10,
|
||||
"summary": "He gets a free hand to recover the gems at any cost, and goes out disguised as a loafer.",
|
||||
"predicament": "An investigator is given a free hand and unlimited money to recover a treasure quietly."
|
||||
},
|
||||
{
|
||||
"chunk": 340,
|
||||
"story": 10,
|
||||
"summary": "He returns in good spirits with an old boot, then goes out again.",
|
||||
"predicament": "An investigator in disguise has found the thread he was looking for and hurries to follow it."
|
||||
},
|
||||
{
|
||||
"chunk": 341,
|
||||
"story": 10,
|
||||
"summary": "Next morning the banker, aged by grief, reports his niece has deserted him.",
|
||||
"predicament": "A person who has lost his reputation and his son now learns he has lost the one he trusted most as well."
|
||||
},
|
||||
{
|
||||
"chunk": 342,
|
||||
"story": 10,
|
||||
"summary": "Her note says she brought trouble on him and has gone; the investigator produces the missing stones for a fee.",
|
||||
"predicament": "A guardian is left a note by a ward who has fled, and fears the worst."
|
||||
},
|
||||
{
|
||||
"chunk": 343,
|
||||
"story": 10,
|
||||
"summary": "The banker is saved, but is told he owes his son an apology; the niece has fled with the son's dangerous friend.",
|
||||
"predicament": "A parent who wrongly accused his own child learns the real culprit was the person he trusted most."
|
||||
},
|
||||
{
|
||||
"chunk": 344,
|
||||
"story": 10,
|
||||
"summary": "The investigator reveals the friend was a ruined, heartless gambler who seduced the niece into handing out the treasure.",
|
||||
"predicament": "A trusting guardian learns his beloved ward was seduced into betraying him by a charming, heartless man."
|
||||
},
|
||||
{
|
||||
"chunk": 345,
|
||||
"story": 10,
|
||||
"summary": "The son saw his cousin carry the treasure out and hand it through a window to someone.",
|
||||
"predicament": "A young man secretly watches the person he loves commit a theft against his own family."
|
||||
},
|
||||
{
|
||||
"chunk": 346,
|
||||
"story": 10,
|
||||
"summary": "He chased the thief, struggled and recovered most of it; he kept silent to protect the woman he loved, even under arrest.",
|
||||
"predicament": "A young man accused of a theft he tried to stop keeps silent rather than expose the person he loves."
|
||||
},
|
||||
{
|
||||
"chunk": 347,
|
||||
"story": 10,
|
||||
"summary": "The investigator explains he read the maid's meeting and the lane's story in the snow.",
|
||||
"predicament": "An investigator reads a whole night's secret comings and goings from the tracks left behind."
|
||||
},
|
||||
{
|
||||
"chunk": 348,
|
||||
"story": 10,
|
||||
"summary": "The tracks showed a booted man waiting and a barefoot man chasing him, a struggle, and blood.",
|
||||
"predicament": "An investigator reconstructs from footprints how an accused man chased the real thief and fought him."
|
||||
},
|
||||
{
|
||||
"chunk": 349,
|
||||
"story": 10,
|
||||
"summary": "He reasoned only the niece could have brought the treasure, since the son would only shield her.",
|
||||
"predicament": "An investigator reasons that an accused man would only keep silent to protect someone he loves."
|
||||
},
|
||||
{
|
||||
"chunk": 350,
|
||||
"story": 10,
|
||||
"summary": "He identified her lover as the dangerous friend, confirmed it through the friend's servant and cast-off shoes.",
|
||||
"predicament": "An investigator confirms a suspect's guilt through the suspect's own household and a pair of old shoes, without alerting him."
|
||||
},
|
||||
{
|
||||
"chunk": 351,
|
||||
"story": 10,
|
||||
"summary": "He confronted the thief at gunpoint, promised no prosecution, and bought the stones back from a receiver.",
|
||||
"predicament": "An investigator bargains with a thief, trading the promise of no prosecution for the return of what was stolen."
|
||||
},
|
||||
{
|
||||
"chunk": 352,
|
||||
"story": 10,
|
||||
"summary": "The banker thanks him and goes to apologise to his son; the investigator predicts the niece will be punished enough by her lover.",
|
||||
"predicament": "A deceived guardian rushes to apologise to the child he wronged, while the betrayer is left to her fate."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,230 @@
|
||||
[
|
||||
{
|
||||
"chunk": 353,
|
||||
"story": 11,
|
||||
"summary": "The investigator complains that the narrator's accounts dwell on colour rather than reasoning; the narrator bristles at his egotism.",
|
||||
"predicament": "A person is told by a proud companion that his account of their shared work misses the only thing that matters."
|
||||
},
|
||||
{
|
||||
"chunk": 354,
|
||||
"story": 11,
|
||||
"summary": "The investigator insists his art is impersonal and that the narrator has turned lectures into tales; he is in a bad temper after a fruitless search.",
|
||||
"predicament": "A proud, bored companion lectures a friend on his failings because nothing worthwhile has come his way."
|
||||
},
|
||||
{
|
||||
"chunk": 355,
|
||||
"story": 11,
|
||||
"summary": "He laments that great cases are over and his work has sunk to trifles, and shows a letter from a young woman as proof.",
|
||||
"predicament": "A person who has lost interest in his work complains it has sunk to trifles, just as a new request arrives."
|
||||
},
|
||||
{
|
||||
"chunk": 356,
|
||||
"story": 11,
|
||||
"summary": "The young woman asks whether she should accept a post; she has no family to advise her.",
|
||||
"predicament": "A young person alone in the world, with no one to advise her, asks strangers whether to accept a strange offer."
|
||||
},
|
||||
{
|
||||
"chunk": 357,
|
||||
"story": 11,
|
||||
"summary": "Out of work and running out of money, she was spotted at an agency by a stout, genial man who declared her perfect.",
|
||||
"predicament": "A young person running out of money is singled out with delight by a stranger with a job to offer."
|
||||
},
|
||||
{
|
||||
"chunk": 358,
|
||||
"story": 11,
|
||||
"summary": "He offered far more than her usual pay, and an advance, insisting a lady of her bearing deserved it.",
|
||||
"predicament": "A person in need is offered far more than her work is worth, and an advance, by a flattering stranger."
|
||||
},
|
||||
{
|
||||
"chunk": 359,
|
||||
"story": 11,
|
||||
"summary": "He said the duties were light, caring for a cruel little child, and she must humour his wife by wearing chosen dresses and sitting where told.",
|
||||
"predicament": "An employee is told that generous pay comes with odd conditions she must accept without asking why."
|
||||
},
|
||||
{
|
||||
"chunk": 360,
|
||||
"story": 11,
|
||||
"summary": "He demanded she cut her hair short; she refused and lost the post, to the agent's annoyance.",
|
||||
"predicament": "A person refuses one strange demand attached to a generous offer, and loses it along with her agent's goodwill."
|
||||
},
|
||||
{
|
||||
"chunk": 361,
|
||||
"story": 11,
|
||||
"summary": "Short of money and in debt, she regretted refusing; then a letter came from the man renewing the offer.",
|
||||
"predicament": "A person who turned down easy money on principle begins to regret it as the bills mount."
|
||||
},
|
||||
{
|
||||
"chunk": 362,
|
||||
"story": 11,
|
||||
"summary": "He raised the pay further, explaining the dress and the hair as his wife's fancies; she has decided to accept but asks for advice.",
|
||||
"predicament": "A person is offered even more money to accept conditions that make no sense, and decides to take it."
|
||||
},
|
||||
{
|
||||
"chunk": 363,
|
||||
"story": 11,
|
||||
"summary": "The investigator says no sister of his should take it; the pay is suspiciously high; he promises to come if she is in danger.",
|
||||
"predicament": "An adviser warns that pay too good to be true hides something, but promises help if the job turns dangerous."
|
||||
},
|
||||
{
|
||||
"chunk": 364,
|
||||
"story": 11,
|
||||
"summary": "She leaves cheerfully; the narrator and investigator wonder for a fortnight whether the man is a crank or a villain.",
|
||||
"predicament": "Helpers wait uneasily for news of someone who has gone into a situation they could not explain."
|
||||
},
|
||||
{
|
||||
"chunk": 365,
|
||||
"story": 11,
|
||||
"summary": "An urgent telegram asks them to come; they travel by train through spring countryside.",
|
||||
"predicament": "Someone who went into danger alone sends an urgent call for help, and her helpers set off at once."
|
||||
},
|
||||
{
|
||||
"chunk": 366,
|
||||
"story": 11,
|
||||
"summary": "The narrator admires the scenery; the investigator says isolated houses fill him with horror.",
|
||||
"predicament": "Someone admires a peaceful, isolated place, and is told isolation lets cruelty go unseen and unpunished."
|
||||
},
|
||||
{
|
||||
"chunk": 367,
|
||||
"story": 11,
|
||||
"summary": "He explains that in lonely places cruelty goes unnoticed; they meet the young woman at an inn.",
|
||||
"predicament": "An adviser fears for someone living far from neighbours, where no one would hear if something went wrong."
|
||||
},
|
||||
{
|
||||
"chunk": 368,
|
||||
"story": 11,
|
||||
"summary": "She says she has not been mistreated but cannot understand her employers; she describes the damp, isolated house.",
|
||||
"predicament": "An employee in a lonely house has suffered no harm but cannot understand what her employers really want."
|
||||
},
|
||||
{
|
||||
"chunk": 369,
|
||||
"story": 11,
|
||||
"summary": "The wife is not mad but silent and young; the man's grown daughter supposedly left because she disliked her stepmother.",
|
||||
"predicament": "An employee learns that the grown child of the household left under circumstances that do not quite add up."
|
||||
},
|
||||
{
|
||||
"chunk": 370,
|
||||
"story": 11,
|
||||
"summary": "The wife is devoted but secretly sad; the child is spoiled and delights in cruelty to small creatures.",
|
||||
"predicament": "A newcomer in a household notices a sad, silent spouse and a cruel child, and senses a hidden sorrow."
|
||||
},
|
||||
{
|
||||
"chunk": 371,
|
||||
"story": 11,
|
||||
"summary": "The two servants are unpleasant, the man often drunk; she is asked to put on a blue dress.",
|
||||
"predicament": "A newcomer in an isolated house is surrounded by sullen, watchful helpers and asked to do something strange."
|
||||
},
|
||||
{
|
||||
"chunk": 372,
|
||||
"story": 11,
|
||||
"summary": "Wearing a dress that has been worn before, she is seated with her back to the window while the man tells funny stories.",
|
||||
"predicament": "An employee is made to perform a strange routine for her employers, and does not know who is watching."
|
||||
},
|
||||
{
|
||||
"chunk": 373,
|
||||
"story": 11,
|
||||
"summary": "The performance is repeated; she reads aloud, carefully positioned, then is told to stop and change.",
|
||||
"predicament": "An employee repeats a strange performance for her employers and grows curious what it is for."
|
||||
},
|
||||
{
|
||||
"chunk": 374,
|
||||
"story": 11,
|
||||
"summary": "With a hidden mirror she sees a man on the road watching; the wife sees her and has her wave him away.",
|
||||
"predicament": "A person who secretly finds out she is being used to deceive someone is made to send the watcher away."
|
||||
},
|
||||
{
|
||||
"chunk": 375,
|
||||
"story": 11,
|
||||
"summary": "She was shown a starved guard dog set loose each night and warned never to go out after dark.",
|
||||
"predicament": "A newcomer is warned that a savage beast is loosed every night and that going outside after dark would be fatal."
|
||||
},
|
||||
{
|
||||
"chunk": 376,
|
||||
"story": 11,
|
||||
"summary": "At night she saw the huge dog pacing the lawn.",
|
||||
"predicament": "A person in a lonely house sees for herself the guard that keeps everyone in and everyone out."
|
||||
},
|
||||
{
|
||||
"chunk": 377,
|
||||
"story": 11,
|
||||
"summary": "In a locked drawer she found a coil of hair exactly like her own cut hair.",
|
||||
"predicament": "A newcomer finds a trace of someone who was here before her, someone who looked exactly like her."
|
||||
},
|
||||
{
|
||||
"chunk": 378,
|
||||
"story": 11,
|
||||
"summary": "She saw the man emerge angrily from a locked wing and asked about its shuttered window.",
|
||||
"predicament": "A person asks an innocent question about a locked part of the house, and sees her employer's mask slip."
|
||||
},
|
||||
{
|
||||
"chunk": 379,
|
||||
"story": 11,
|
||||
"summary": "He claimed it was his darkroom with no jest in his eyes; later, finding the key left by the drunk servant, she slipped in.",
|
||||
"predicament": "A person who senses she is not meant to know something takes her chance to find out when a door is left open."
|
||||
},
|
||||
{
|
||||
"chunk": 380,
|
||||
"story": 11,
|
||||
"summary": "She found a barred, padlocked door and a shadow moving behind it; she ran in terror straight into her employer.",
|
||||
"predicament": "A person exploring a forbidden place sees signs that someone is imprisoned there, and runs straight into her employer."
|
||||
},
|
||||
{
|
||||
"chunk": 381,
|
||||
"story": 11,
|
||||
"summary": "He soothed her too sweetly, then threatened to throw her to the dog if she ever went in again.",
|
||||
"predicament": "A person caught snooping is soothed by her employer, then threatened with a terrible death if she ever does it again."
|
||||
},
|
||||
{
|
||||
"chunk": 382,
|
||||
"story": 11,
|
||||
"summary": "Terrified, she telegraphed the investigator, and came to town while her employers go out that evening.",
|
||||
"predicament": "A person frightened of everyone in the house she lives in secretly sends for help and returns to wait."
|
||||
},
|
||||
{
|
||||
"chunk": 383,
|
||||
"story": 11,
|
||||
"summary": "The investigator asks if she can lock the female servant in the cellar that evening; she agrees.",
|
||||
"predicament": "A frightened young woman is asked to take one more bold risk so that her helpers can get inside."
|
||||
},
|
||||
{
|
||||
"chunk": 384,
|
||||
"story": 11,
|
||||
"summary": "He reasons she was hired to impersonate the daughter, who is imprisoned, so her faithful suitor will think she no longer wants him.",
|
||||
"predicament": "A person realises she was hired to impersonate a captive, so that the captive's friends would give up on her."
|
||||
},
|
||||
{
|
||||
"chunk": 385,
|
||||
"story": 11,
|
||||
"summary": "They arrive; she has locked the servant in the cellar; they break the barred door.",
|
||||
"predicament": "Rescuers force their way to a prisoner's door, fearing they have come too late."
|
||||
},
|
||||
{
|
||||
"chunk": 386,
|
||||
"story": 11,
|
||||
"summary": "The room is empty, the prisoner taken through the skylight; the employer returns, calls them thieves and runs for the dog.",
|
||||
"predicament": "Rescuers find the prisoner gone and are caught by her jailer, who goes to set a savage beast on them."
|
||||
},
|
||||
{
|
||||
"chunk": 387,
|
||||
"story": 11,
|
||||
"summary": "The starving dog attacks its master; the narrator shoots it; the female servant arrives, ready to tell what she knows.",
|
||||
"predicament": "A cruel master is attacked by the very beast he kept to terrorise others."
|
||||
},
|
||||
{
|
||||
"chunk": 388,
|
||||
"story": 11,
|
||||
"summary": "The servant explains the daughter's father wanted control of her money and imprisoned her when a suitor appeared.",
|
||||
"predicament": "A household insider reveals that a parent imprisoned his own child to keep control of her money when she wished to marry."
|
||||
},
|
||||
{
|
||||
"chunk": 389,
|
||||
"story": 11,
|
||||
"summary": "The suitor bribed the servants to help the daughter escape; the investigator leaves, their standing there doubtful.",
|
||||
"predicament": "A faithful suitor quietly buys the household's help to free the person he loves from her own father."
|
||||
},
|
||||
{
|
||||
"chunk": 390,
|
||||
"story": 11,
|
||||
"summary": "The master survives broken; the daughter married her suitor; the young woman went on to success.",
|
||||
"predicament": "A cruel parent is left broken, the imprisoned child goes free and marries, and the hired stand-in moves on."
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Assemble records.json and groups.json from batches/ and groups_src.py, and check them."""
|
||||
import collections, glob, json, pathlib
|
||||
from groups_src import G, STANDING
|
||||
here = pathlib.Path(__file__).parent
|
||||
chunks = json.loads((here.parent / 'chunks.json').read_text())
|
||||
stories = json.loads((here.parent / 'stories.json').read_text())
|
||||
recs = [r for f in sorted(glob.glob(str(here / 'batches/s*.json'))) for r in json.loads(open(f).read())]
|
||||
assert [r['chunk'] for r in recs] == list(range(len(chunks))), 'every scene, once, in order'
|
||||
assert all(chunks[r['chunk']]['story'] == r['story'] for r in recs)
|
||||
|
||||
seen = collections.Counter(m for g in G for m in g['members'])
|
||||
dup = [m for m, n in seen.items() if n > 1]
|
||||
assert not dup, f'scenes in two groups: {dup}'
|
||||
by = {r['chunk']: r for r in recs}
|
||||
out = []
|
||||
for g in G:
|
||||
assert 3 <= len(g['options']) <= 5, g['id']
|
||||
st = sorted({by[m]['story'] for m in g['members']})
|
||||
stand = collections.Counter(STANDING[by[m]['story']] for m in g['members'])
|
||||
out.append({
|
||||
'id': g['id'], 'name': g['name'], 'predicament': g['predicament'],
|
||||
'sentence': f"A {g['actor']} wants {g['wants']} from {g['counterpart']}.",
|
||||
'actor': g['actor'], 'wants': g['wants'], 'counterpart': g['counterpart'],
|
||||
'stories': st, 'story_titles': [stories[s]['title'] for s in st],
|
||||
'standing': dict(stand), 'stage': stand.most_common(1)[0][0],
|
||||
'members': [{'chunk': m, 'story': by[m]['story'], 'predicament': by[m]['predicament']} for m in g['members']],
|
||||
'options': [{'text': t, 'source': s, 'moves': mv,
|
||||
'in_group': (int(s.split(':')[1]) in g['members']) if s.startswith('scene:') else None}
|
||||
for t, s, mv in g['options']],
|
||||
})
|
||||
unassigned = [r['chunk'] for r in recs if r['chunk'] not in seen]
|
||||
(here / 'records.json').write_text(json.dumps(recs, indent=1, ensure_ascii=False))
|
||||
(here / 'groups.json').write_text(json.dumps({'groups': out, 'unassigned': unassigned}, indent=1, ensure_ascii=False))
|
||||
multi = sum(len(g['stories']) >= 2 for g in out)
|
||||
print(f'{len(recs)} scenes, {len(out)} groups ({multi} span 2+ stories), '
|
||||
f'{sum(seen.values())} assigned, {len(unassigned)} unassigned: {unassigned}')
|
||||
for g in out:
|
||||
print(f"{g['id']} {len(g['members']):2} scenes {len(g['stories'])} stories stage {g['stage']:6} {g['name']}")
|
||||
src = collections.Counter(o['source'].split(':')[0] for g in out for o in g['options'])
|
||||
print('option sources:', dict(src), '| scene options citing a scene outside their group:',
|
||||
sum(o['in_group'] is False for g in out for o in g['options']))
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,319 @@
|
||||
"""Hand-built reference grouping of the Holmes predicaments (Claude-written, no local inference).
|
||||
|
||||
Each scene is in at most one group; scenes that fit no recurring situation stay unassigned.
|
||||
Options follow DESIGN.md: 3-5 per group, each marked by where it came from --
|
||||
'archetype' a fixed, setting-free option
|
||||
'scene:N' what someone in scene N actually did (or refused to do)
|
||||
'filled' written to fill a gap the scenes leave
|
||||
`moves` names spine paths and a direction only (+ / - / risk / set). No magnitudes: the model never
|
||||
chooses a number. Skill labels: nerve and cunning, reused from the Jacobs reference, and one new
|
||||
label proposed for this corpus, observation (noticing what others miss; reading a person or a scene).
|
||||
"""
|
||||
G = [
|
||||
dict(id='G01', name='The evidence all points at you',
|
||||
predicament='Something terrible has happened, every sign points at you, and the people deciding will not look past the obvious.',
|
||||
actor='accused person', wants='to be cleared', counterpart='those who have already judged them',
|
||||
members=[93, 94, 96, 99, 101, 171, 198, 294, 327],
|
||||
options=[
|
||||
('Tell your story plainly and trust it to hold.', 'scene:99', {'standing':'risk', 'relationships.authority':'+'}),
|
||||
('Deny everything and call the witness mistaken.', 'scene:171', {'nerve':'+', 'relationships.accuser':'-', 'standing':'risk'}),
|
||||
('Accept arrest calmly, as no more than you deserve.', 'scene:96', {'standing':'-', 'relationships.authority':'+'}),
|
||||
('Find someone outside the official inquiry to look again.', 'scene:95', {'money':'-', 'relationships.investigator':'+'}),
|
||||
('Struggle and protest as they take you.', 'scene:198', {'standing':'-', 'relationships.authority':'-', 'flags.resisted':'set'})]),
|
||||
dict(id='G02', name='The truth would clear you, and cost someone else',
|
||||
predicament='You are suspected of something you did not do, and the one explanation that would clear you would expose someone else.',
|
||||
actor='suspect with a secret', wants='to be cleared without betraying anyone', counterpart='their accusers',
|
||||
members=[100, 187, 328, 330, 346],
|
||||
options=[
|
||||
('Refuse to say, whatever it costs you.', 'scene:100', {'standing':'-', 'flags.secret_kept':'set', 'relationships.protected':'+'}),
|
||||
('Tell the whole truth and let it fall where it will.', 'filled', {'standing':'+', 'relationships.protected':'-'}),
|
||||
('Ask for a few minutes alone to put things right yourself.', 'scene:328', {'nerve':'+', 'relationships.authority':'risk'}),
|
||||
('Keep up a disguise rather than be recognised.', 'scene:187', {'cunning':'+', 'standing':'risk'})]),
|
||||
dict(id='G03', name='Someone holds proof of your past',
|
||||
predicament='Someone from your past holds proof that could wreck the life or marriage you are building now.',
|
||||
actor='person with a past', wants='the proof, or silence', counterpart='someone who knows',
|
||||
members=[10, 11, 123, 124, 293, 299],
|
||||
options=[
|
||||
('Pay whatever they ask.', 'scene:123', {'money':'-', 'relationships.blackmailer':'+'}),
|
||||
('Try to buy or steal the proof back.', 'scene:10', {'money':'-', 'flags.broke_law':'set'}),
|
||||
('Hire someone discreet to deal with it.', 'scene:11', {'money':'-', 'relationships.investigator':'+'}),
|
||||
('Keep the occasion quiet and have help at the door.', 'scene:299', {'cunning':'+', 'relationships.former':'-'}),
|
||||
('Silence them for good.', 'scene:124', {'flags.violent':'set', 'standing':'risk'})]),
|
||||
dict(id='G04', name='A warning nobody else takes seriously',
|
||||
predicament='You have had a warning you believe means real danger, and the people who should protect you think you imagine it.',
|
||||
actor='threatened person', wants='to be believed and kept safe', counterpart='those who dismiss the warning',
|
||||
members=[133, 135, 137, 138, 140, 141, 222, 227, 230, 257],
|
||||
options=[
|
||||
('Laugh it off as someone\'s joke.', 'scene:138', {'nerve':'+', 'flags.marked':'set'}),
|
||||
('Go to the authorities anyway.', 'scene:140', {'relationships.authority':'-', 'standing':'-'}),
|
||||
('Seek help from someone outside the official channels.', 'scene:230', {'money':'-', 'relationships.investigator':'+'}),
|
||||
('Lock yourself in and wait.', 'scene:135', {'nerve':'-'}),
|
||||
('Give the threatener what they are asking for.', 'scene:142', {'relationships.pursuer':'+', 'flags.gave_in':'set'})]),
|
||||
dict(id='G05', name='The offer that pays too well',
|
||||
predicament='You badly need money, and a stranger offers far too much for easy work on conditions you are told not to question.',
|
||||
actor='person short of money', wants='the pay', counterpart='a generous stranger',
|
||||
members=[37, 38, 40, 41, 42, 43, 260, 261, 262, 264, 265, 357, 358, 359, 360, 361, 362],
|
||||
options=[
|
||||
('Take it and ask no questions.', 'scene:265', {'money':'+', 'flags.took_the_fee':'set'}),
|
||||
('Refuse the one condition you cannot stomach.', 'scene:360', {'standing':'+', 'money':'-'}),
|
||||
('Take it, but tell someone where you are going.', 'scene:362', {'money':'+', 'relationships.adviser':'+'}),
|
||||
('Ask what the work is really for.', 'scene:262', {'observation':'+', 'relationships.employer':'risk'}),
|
||||
('Turn it down.', 'archetype', {'money':'-'})]),
|
||||
dict(id='G06', name='Alone in a house you cannot read',
|
||||
predicament='You have come alone to a remote house where nothing is explained, and the people in it watch you closely.',
|
||||
actor='newcomer', wants='to do the job and get out', counterpart='the household',
|
||||
members=[266, 267, 268, 269, 271, 272, 368, 371, 372, 373, 375, 376],
|
||||
options=[
|
||||
('Do as you are told and keep your eyes open.', 'scene:373', {'observation':'+', 'relationships.employer':'+'}),
|
||||
('Find a way to see what is going on behind your back.', 'scene:374', {'observation':'+', 'cunning':'+', 'relationships.employer':'risk'}),
|
||||
('Keep your spirits up and see it through.', 'scene:269', {'nerve':'+'}),
|
||||
('Leave at the first chance, pay or no pay.', 'filled', {'money':'-', 'nerve':'-'})]),
|
||||
dict(id='G07', name='You have seen too much',
|
||||
predicament='You have stumbled on something the people around you meant to keep hidden, and they may know you have seen it.',
|
||||
actor='person who knows too much', wants='to get away safely', counterpart='those with the secret',
|
||||
members=[132, 274, 279, 378, 379, 380, 381],
|
||||
options=[
|
||||
('Say plainly that you know.', 'scene:274', {'nerve':'+', 'flags.in_danger':'set'}),
|
||||
('Play innocent and say only that it frightened you.', 'scene:381', {'cunning':'+'}),
|
||||
('Slip back in when the door is left open.', 'scene:379', {'observation':'+', 'relationships.host':'-', 'flags.trespassed':'set'}),
|
||||
('Quietly send word to someone outside.', 'scene:382', {'relationships.adviser':'+'})]),
|
||||
dict(id='G08', name='Waiting in the dark for them to come',
|
||||
predicament='You are lying in wait in the dark for someone dangerous, and must keep still until the moment comes.',
|
||||
actor='watcher', wants='to catch them in the act', counterpart='a dangerous intruder',
|
||||
members=[57, 58, 246, 247, 248],
|
||||
options=[
|
||||
('Keep still and wait for the signal.', 'scene:58', {'nerve':'+'}),
|
||||
('Strike the moment you hear them.', 'scene:247', {'nerve':'+', 'flags.violent':'set'}),
|
||||
('Keep your weapon ready and use it if they fight.', 'scene:57', {'nerve':'+', 'flags.armed':'set'}),
|
||||
('Show a light and scare them off.', 'filled', {'nerve':'-', 'standing':'-'})]),
|
||||
dict(id='G09', name='Someone dangerous is after the person you are helping',
|
||||
predicament='Someone who came to you for help is being hunted by a dangerous person, and their safety depends on what you advise.',
|
||||
actor='protector', wants='to keep them safe', counterpart='a dangerous pursuer',
|
||||
members=[142, 143, 146, 233, 234, 237, 242, 363, 364],
|
||||
options=[
|
||||
('Tell them to give the pursuer what he wants.', 'scene:142', {'relationships.client':'+', 'flags.gave_in':'set'}),
|
||||
('Stay the night beside them.', 'scene:242', {'nerve':'+', 'relationships.client':'+'}),
|
||||
('Send them home and promise to come if called.', 'scene:143', {'relationships.client':'risk'}),
|
||||
('Get them away to family.', 'scene:237', {'relationships.family':'+', 'money':'-'}),
|
||||
('Face the pursuer down when he comes to your door.', 'scene:234', {'nerve':'+', 'relationships.pursuer':'-'})]),
|
||||
dict(id='G10', name='Asked to act without being told why',
|
||||
predicament='Someone you trust asks you to take a risk, perhaps break the law, without telling you what the plan is.',
|
||||
actor='loyal friend', wants='to help without being made a fool', counterpart='the friend asking',
|
||||
members=[19, 20, 24, 52, 244, 383],
|
||||
options=[
|
||||
('Agree at once; you trust them.', 'scene:19', {'relationships.friend':'+', 'flags.broke_law':'set'}),
|
||||
('Go, and bring a weapon.', 'scene:52', {'nerve':'+'}),
|
||||
('Do your part, though your conscience pricks.', 'scene:24', {'relationships.friend':'+', 'standing':'-'}),
|
||||
('Ask to be told the whole plan first.', 'filled', {'relationships.friend':'-'})]),
|
||||
dict(id='G11', name='Someone close is not who they seem',
|
||||
predicament='Someone you have welcomed close is not who they claim, and you have not yet let yourself notice the signs.',
|
||||
actor='trusting person', wants='to keep someone they value', counterpart='a person hiding who they are',
|
||||
members=[36, 47, 72, 73, 74, 324, 343, 344],
|
||||
options=[
|
||||
('Count yourself lucky and ask nothing.', 'scene:36', {'money':'+', 'relationships.intimate':'+'}),
|
||||
('Keep them secret from the rest of your family.', 'scene:72', {'relationships.intimate':'+', 'relationships.family':'-'}),
|
||||
('Trust your own doubts about them.', 'scene:324', {'observation':'+', 'relationships.intimate':'-'}),
|
||||
('Ask someone outside to look into them.', 'filled', {'observation':'+', 'money':'-'})]),
|
||||
dict(id='G12', name='A stranger who will not give a true name',
|
||||
predicament='A stranger wants your help but hides who they are, and you must decide whether to deal with them.',
|
||||
actor='person approached', wants='to know who they are dealing with', counterpart='a stranger under a false name',
|
||||
members=[7, 8, 209, 210],
|
||||
options=[
|
||||
('Let them know you have already seen through it.', 'scene:8', {'observation':'+', 'relationships.stranger':'-'}),
|
||||
('Insist on the real name before going on.', 'scene:210', {'relationships.stranger':'risk'}),
|
||||
('Play along and help anyway.', 'filled', {'money':'+'}),
|
||||
('Refuse to deal with anyone who hides their face.', 'archetype', {'money':'-', 'standing':'+'})]),
|
||||
dict(id='G13', name='A powerful client needs your discretion',
|
||||
predicament='Someone far above you needs a delicate favour kept quiet, and it is not the kind of request you can easily refuse.',
|
||||
actor='person of modest standing', wants='the reward without being used', counterpart='a powerful client',
|
||||
members=[9, 12, 287, 295, 319],
|
||||
options=[
|
||||
('Take their money and their secret.', 'scene:12', {'money':'+', 'relationships.patron':'+'}),
|
||||
('Keep their confidences even from other grand names.', 'scene:295', {'standing':'+', 'relationships.patron':'+'}),
|
||||
('Name conditions of your own.', 'scene:320', {'standing':'+', 'relationships.patron':'risk'}),
|
||||
('Let them see you are not impressed.', 'scene:30', {'standing':'risk', 'relationships.patron':'-'})]),
|
||||
dict(id='G14', name='Holding something too valuable to lose',
|
||||
predicament='Something far too valuable to replace has been left in your keeping, and you know someone may come for it.',
|
||||
actor='custodian', wants='to keep it safe', counterpart='whoever wants it',
|
||||
members=[55, 56, 197, 200, 320, 321, 322],
|
||||
options=[
|
||||
('Keep it on you at all times.', 'scene:322', {'nerve':'+', 'flags.carrying_valuables':'set'}),
|
||||
('Lock it away and tell no one.', 'archetype', {'cunning':'+'}),
|
||||
('Tell your household about it.', 'scene:325', {'relationships.family':'+', 'flags.talked':'set'}),
|
||||
('Return it at once and claim the reward.', 'scene:197', {'money':'+'}),
|
||||
('Set a trap for whoever comes for it.', 'scene:57', {'cunning':'+', 'nerve':'+'})]),
|
||||
dict(id='G15', name='The game is up',
|
||||
predicament='You have been caught out in a deception, faced with proof, and must decide how to carry yourself now.',
|
||||
actor='deceiver', wants='to get off lightly', counterpart='the person who caught them',
|
||||
members=[59, 60, 83, 84, 85, 87, 183, 211, 212],
|
||||
options=[
|
||||
('Keep your dignity and go quietly.', 'scene:60', {'standing':'+', 'relationships.captor':'+'}),
|
||||
('Insist nothing you did was against the law.', 'scene:85', {'cunning':'+', 'standing':'-'}),
|
||||
('Throw yourself on their mercy.', 'scene:212', {'standing':'-', 'relationships.captor':'+'}),
|
||||
('Make a run for it.', 'scene:88', {'nerve':'+', 'flags.fugitive':'set'})]),
|
||||
dict(id='G16', name='Mercy or the law',
|
||||
predicament='You have caught someone who did wrong, and handing them over would be lawful but not what you think is just.',
|
||||
actor='person holding the truth', wants='justice as they see it', counterpart='the culprit',
|
||||
members=[82, 88, 120, 125, 184, 188, 216, 217, 351],
|
||||
options=[
|
||||
('Let them go if they swear never to do it again.', 'scene:216', {'relationships.culprit':'+', 'flags.spared_culprit':'set'}),
|
||||
('Keep their confession back unless an innocent needs it.', 'scene:120', {'relationships.culprit':'+', 'flags.secret_kept':'set'}),
|
||||
('Hand them to the authorities.', 'archetype', {'standing':'+', 'relationships.authority':'+', 'relationships.culprit':'-'}),
|
||||
('Punish them yourself.', 'scene:88', {'nerve':'+', 'flags.violent':'set'}),
|
||||
('Trade your silence for what they took.', 'scene:351', {'money':'+', 'relationships.authority':'risk'})]),
|
||||
dict(id='G17', name='Someone close has vanished',
|
||||
predicament='Someone close to you has vanished without a word, and everyone around you has a different idea of why.',
|
||||
actor='person left behind', wants='to know what happened', counterpart='the missing person',
|
||||
members=[68, 75, 165, 166, 174, 175, 291, 300, 341, 342],
|
||||
options=[
|
||||
('Go to the authorities at once.', 'scene:166', {'relationships.authority':'+'}),
|
||||
('Pay someone to find them.', 'scene:68', {'money':'-', 'relationships.investigator':'+'}),
|
||||
('Hush it up.', 'scene:292', {'standing':'risk'}),
|
||||
('Decide they must have lost their mind.', 'scene:300', {'standing':'+', 'relationships.missing':'-'}),
|
||||
('Wait for word.', 'archetype', {'relationships.missing':'+'})]),
|
||||
dict(id='G18', name='Keeping faith when everyone says give up',
|
||||
predicament='Everyone tells you to give up on someone you love, and you are sure they are wrong about them.',
|
||||
actor='loyal person', wants='to be proved right', counterpart='everyone who has given up',
|
||||
members=[76, 77, 103, 104, 177],
|
||||
options=[
|
||||
('Refuse to give up on them.', 'scene:77', {'relationships.faithful':'+', 'standing':'-'}),
|
||||
('Tell what you know, even if it embarrasses you.', 'scene:104', {'standing':'-', 'relationships.faithful':'+'}),
|
||||
('Bring in outside help.', 'scene:95', {'money':'-', 'relationships.investigator':'+'}),
|
||||
('Accept what everyone says and move on.', 'archetype', {'relationships.faithful':'-'})]),
|
||||
dict(id='G19', name='A guardian who lives on your money',
|
||||
predicament='The relative who controls your money would lose it if you married, and is doing everything to keep you single.',
|
||||
actor='dependent', wants='their own life and money', counterpart='a guardian',
|
||||
members=[69, 70, 71, 86, 224, 235, 388],
|
||||
options=[
|
||||
('Leave your money in their hands to keep the peace.', 'scene:70', {'relationships.guardian':'+', 'money':'-'}),
|
||||
('Go out anyway, against their wishes.', 'scene:71', {'nerve':'+', 'relationships.guardian':'-'}),
|
||||
('Refuse to sign it over.', 'scene:388', {'money':'+', 'relationships.guardian':'-', 'flags.in_danger':'set'}),
|
||||
('Marry, and claim what is yours.', 'scene:230', {'money':'+', 'relationships.guardian':'-'}),
|
||||
('Have someone outside the family read the terms.', 'scene:235', {'observation':'+', 'money':'-'})]),
|
||||
dict(id='G20', name='Everyone has decided, and you think they are wrong',
|
||||
predicament='The people in charge have settled on an answer, and you are almost alone in thinking it cannot be true.',
|
||||
actor='doubter', wants='the real answer', counterpart='the officials in charge',
|
||||
members=[95, 97, 102, 110, 115, 116, 172, 301, 302, 303, 304, 331, 332],
|
||||
options=[
|
||||
('Assume the accused is telling the truth and see where it leads.', 'scene:102', {'observation':'+', 'relationships.authority':'-'}),
|
||||
('Give the officials your answer and let them ignore it.', 'scene:115', {'standing':'risk', 'relationships.authority':'-'}),
|
||||
('Mock their theory to their face.', 'scene:301', {'standing':'+', 'relationships.authority':'-'}),
|
||||
('Point out that their theory asks the impossible.', 'scene:332', {'observation':'+', 'relationships.client':'+'}),
|
||||
('Go along with the official view.', 'archetype', {'relationships.authority':'+'})]),
|
||||
dict(id='G21', name='A frightened stranger at your door',
|
||||
predicament='A frightened stranger with nobody else to turn to arrives asking for help, and may not be able to pay.',
|
||||
actor='helper', wants='to do right without being dragged under', counterpart='a stranger in trouble',
|
||||
members=[67, 129, 154, 155, 219, 221, 255, 317, 318, 356],
|
||||
options=[
|
||||
('Take it on, pay or no pay.', 'scene:221', {'relationships.client':'+', 'money':'-'}),
|
||||
('Calm them before you ask anything.', 'scene:317', {'relationships.client':'+'}),
|
||||
('Go yourself, rather than let them go.', 'scene:156', {'nerve':'+', 'relationships.client':'+'}),
|
||||
('Name your fee first.', 'filled', {'money':'+', 'relationships.client':'-'}),
|
||||
('Tell them it is none of your business.', 'filled', {'relationships.client':'-', 'standing':'-'})]),
|
||||
dict(id='G22', name='Read at a glance',
|
||||
predicament='Someone you barely know tells you private things about your life, read from signs you never knew you gave.',
|
||||
actor='person read', wants='to keep some privacy', counterpart='a sharp-eyed stranger',
|
||||
members=[2, 3, 33, 34, 220],
|
||||
options=[
|
||||
('Ask how it was done.', 'scene:3', {'relationships.observer':'+'}),
|
||||
('Decide it was nothing clever after all.', 'scene:34', {'relationships.observer':'-', 'standing':'+'}),
|
||||
('Grow wary of what else they can see.', 'scene:220', {'observation':'+'}),
|
||||
('Laugh and take it in good part.', 'archetype', {'relationships.observer':'+'})]),
|
||||
dict(id='G23', name='Tested by someone sharper',
|
||||
predicament='Someone sharper than you asks what you noticed, in front of others, and you know you have missed the point.',
|
||||
actor='companion', wants='not to look a fool', counterpart='a sharper mentor',
|
||||
members=[4, 78, 79, 193, 194, 196],
|
||||
options=[
|
||||
('Describe everything you saw and hope it is enough.', 'scene:78', {'observation':'+'}),
|
||||
('Admit you can see nothing.', 'scene:193', {'relationships.mentor':'+', 'standing':'-'}),
|
||||
('Call the whole thing a waste of effort.', 'scene:196', {'relationships.mentor':'-'}),
|
||||
('Work it out yourself while they are away.', 'scene:106', {'observation':'+'})]),
|
||||
dict(id='G24', name='Going among them in disguise',
|
||||
predicament='To learn what you need, you must pass among strangers as someone humbler than you are, and not be recognised.',
|
||||
actor='person in disguise', wants='information', counterpart='the people being watched',
|
||||
members=[13, 14, 23, 159, 161, 339, 350],
|
||||
options=[
|
||||
('Pass yourself off as someone out of work.', 'scene:14', {'observation':'+', 'cunning':'+'}),
|
||||
('Fake an injury to be let in.', 'scene:23', {'cunning':'+', 'relationships.target':'-'}),
|
||||
('Sit among them in plain sight.', 'scene:159', {'nerve':'+', 'standing':'risk'}),
|
||||
('Buy what you need from someone in their household.', 'scene:350', {'money':'-', 'observation':'+'})]),
|
||||
dict(id='G25', name='A secret life behind the respectable one',
|
||||
predicament='Behind the life everyone sees, you keep another one secret from the people closest to you.',
|
||||
actor='person with a double life', wants='to keep both lives', counterpart='the family who do not know',
|
||||
members=[108, 122, 185, 186, 307],
|
||||
options=[
|
||||
('Keep the two lives apart and say nothing.', 'scene:186', {'money':'+', 'flags.double_life':'set'}),
|
||||
('Confess it to the one person it would hurt most.', 'filled', {'relationships.spouse':'risk', 'standing':'-'}),
|
||||
('Give it up and swear never to go back.', 'scene:188', {'money':'-', 'standing':'+'}),
|
||||
('Wait for the secret to solve itself.', 'scene:108', {'relationships.spouse':'-'})]),
|
||||
dict(id='G26', name='Letting someone else take the blame',
|
||||
predicament='Someone else is suspected of what you did, and you could keep suspicion where it is.',
|
||||
actor='person at fault', wants='to escape blame', counterpart='the one suspected',
|
||||
members=[119, 213, 326, 335, 336],
|
||||
options=[
|
||||
('Speak up to save them.', 'scene:119', {'standing':'-', 'relationships.accused':'+'}),
|
||||
('Point at someone else.', 'scene:326', {'cunning':'+', 'relationships.accused':'-', 'flags.guilty_secret':'set'}),
|
||||
('Plead for the whole matter to be dropped.', 'scene:335', {'cunning':'+', 'relationships.family':'risk'}),
|
||||
('Run, and let the case against them collapse.', 'scene:212', {'flags.fugitive':'set', 'relationships.accused':'+'})]),
|
||||
dict(id='G27', name='Living with someone dangerous',
|
||||
predicament='You live under the roof of someone violent who controls your life, and must decide how far to shield or defy them.',
|
||||
actor='dependent', wants='to be safe', counterpart='a violent head of household',
|
||||
members=[223, 225, 231, 382],
|
||||
options=[
|
||||
('Pay to cover up their violence.', 'scene:225', {'money':'-', 'relationships.household':'+'}),
|
||||
('Make excuses for them.', 'scene:231', {'relationships.household':'+', 'standing':'-'}),
|
||||
('Slip out and send for help.', 'scene:382', {'nerve':'+', 'relationships.household':'risk'}),
|
||||
('Lock your door at night.', 'scene:227', {'nerve':'-'})]),
|
||||
dict(id='G28', name='They called it an accident',
|
||||
predicament='Someone close to you died, it was ruled an accident, and you cannot shake the belief that it was nothing of the kind.',
|
||||
actor='survivor', wants='the truth', counterpart='the official verdict',
|
||||
members=[136, 139, 229],
|
||||
options=[
|
||||
('Accept the verdict.', 'archetype', {'relationships.authority':'+'}),
|
||||
('Keep looking for proof yourself.', 'scene:139', {'observation':'+'}),
|
||||
('Take it to someone outside the official inquiry.', 'scene:230', {'money':'-', 'relationships.investigator':'+'})]),
|
||||
dict(id='G29', name='Arriving too late',
|
||||
predicament='You arrive to act at last, and find the person you were after has already slipped away or struck.',
|
||||
actor='pursuer', wants='to catch them', counterpart='the quarry',
|
||||
members=[28, 150, 151, 282, 283, 386],
|
||||
options=[
|
||||
('Make it personal and go after them yourself.', 'scene:151', {'nerve':'+', 'relationships.quarry':'-'}),
|
||||
('Search what they left behind.', 'scene:28', {'observation':'+'}),
|
||||
('Admit you were beaten.', 'scene:30', {'standing':'-'}),
|
||||
('Send word ahead to have them stopped.', 'scene:153', {'cunning':'+'})]),
|
||||
dict(id='G30', name='Getting them to give it away',
|
||||
predicament='Someone is hiding what you need to know, and you must get them to reveal it without realising they have.',
|
||||
actor='questioner', wants='the hidden fact', counterpart='someone keeping it back',
|
||||
members=[22, 26, 49, 201, 206, 207],
|
||||
options=[
|
||||
('Stage an alarm and watch where they run.', 'scene:26', {'cunning':'+', 'relationships.target':'-'}),
|
||||
('Call on a pretext and look for one sign.', 'scene:49', {'observation':'+'}),
|
||||
('Draw them into a bet.', 'scene:206', {'cunning':'+', 'money':'-'}),
|
||||
('Set a small test and watch how they react.', 'scene:201', {'observation':'+'})]),
|
||||
dict(id='G31', name='You were only a pawn',
|
||||
predicament='You begin to see that you were hired or befriended only to serve someone else\'s hidden scheme.',
|
||||
actor='person used', wants='to understand, and get even or get clear', counterpart='whoever used them',
|
||||
members=[44, 45, 46, 273, 374, 377, 384],
|
||||
options=[
|
||||
('Go after the people who used you.', 'scene:46', {'nerve':'+', 'money':'-'}),
|
||||
('Count what you were paid and let it go.', 'filled', {'money':'+'}),
|
||||
('Keep quiet about what you know until you are safe.', 'scene:377', {'cunning':'+'}),
|
||||
('Confront them with it.', 'scene:274', {'nerve':'+', 'flags.in_danger':'set'})]),
|
||||
dict(id='G32', name='Someone on the inside helps you get away',
|
||||
predicament='Someone inside a dangerous household warns you or helps you escape, at a risk to themselves.',
|
||||
actor='person in danger', wants='to get out alive', counterpart='an insider who helps',
|
||||
members=[270, 276, 277, 284, 389],
|
||||
options=[
|
||||
('Heed the warning and go.', 'scene:276', {'relationships.insider':'+', 'money':'-'}),
|
||||
('Ignore it and stay for the fee.', 'scene:270', {'money':'+', 'flags.in_danger':'set'}),
|
||||
('Wait to see they are not hurt for helping you.', 'scene:277', {'relationships.insider':'+', 'nerve':'+'}),
|
||||
('Pay the household to look the other way.', 'scene:389', {'money':'-', 'relationships.household':'+'})]),
|
||||
]
|
||||
|
||||
# Protagonist standing by story, for stage assignment (DESIGN.md "Stages"). Per story, not per
|
||||
# scene: a coarse first cut, and the one place this grouping uses a judgement not in the text.
|
||||
# Judged by the client whose trouble drives the story, since the investigator is the same in all twelve.
|
||||
STANDING = {0:'high', 1:'low', 2:'low', 3:'middle', 4:'middle', 5:'middle', 6:'low',
|
||||
7:'middle', 8:'low', 9:'high', 10:'high', 11:'low'}
|
||||
# Story 6's trouble is carried by a poor scholar, a hotel attendant and a workman, all low.
|
||||
# Story 5's protagonist is a respectable suburban gentleman whose income is secretly from begging.
|
||||
@@ -0,0 +1,49 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Render groups.json + records.json as one self-contained page: REFERENCE.html."""
|
||||
import html, json, pathlib
|
||||
here = pathlib.Path(__file__).parent
|
||||
d = json.loads((here / 'groups.json').read_text())
|
||||
recs = {r['chunk']: r for r in json.loads((here / 'records.json').read_text())}
|
||||
stories = json.loads((here.parent / 'stories.json').read_text())
|
||||
e = html.escape
|
||||
SRC = {'archetype': 'archetype', 'filled': 'filled gap'}
|
||||
def src(o):
|
||||
if o['source'].startswith('scene:'):
|
||||
n = o['source'].split(':')[1]
|
||||
return f'from scene {n}' + ('' if o['in_group'] else ' <span class="warn">(outside this group)</span>')
|
||||
return SRC[o['source']]
|
||||
def moves(m): return ' '.join(f'<code>{e(k)} {e(v)}</code>' for k, v in m.items())
|
||||
def scene(c):
|
||||
r = recs[c]
|
||||
return (f'<details><summary><b>{c}</b> · <i>{e(stories[r["story"]]["title"])}</i> — {e(r["predicament"])}</summary>'
|
||||
f'<p class="sum">{e(r["summary"])}</p></details>')
|
||||
out = []
|
||||
for g in d['groups']:
|
||||
out.append(f'''<section><h2>{g["id"]} · {e(g["name"])}</h2>
|
||||
<p class="pred">{e(g["predicament"])}</p>
|
||||
<p class="meta">{e(g["sentence"])} · {len(g["members"])} scenes from {len(g["stories"])} stories
|
||||
({e(", ".join(g["story_titles"]))}) · stage <b>{g["stage"]}</b></p>
|
||||
<h3>Options</h3><ol>{"".join(f"<li>{e(o['text'])} <span class='src'>{src(o)}</span><br>{moves(o['moves'])}</li>" for o in g["options"])}</ol>
|
||||
<h3>Scenes</h3>{"".join(scene(m["chunk"]) for m in g["members"])}</section>''')
|
||||
un = ''.join(scene(c) for c in d['unassigned'])
|
||||
page = f'''<!doctype html><html lang="en"><head><meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1"><title>Holmes Reference Groups</title>
|
||||
<style>
|
||||
:root{{--bg:#fbfaf7;--fg:#1d1d1b;--mute:#6b6760;--line:#e2ded6;--acc:#2f5d8a;--warn:#a4481c}}
|
||||
@media (prefers-color-scheme:dark){{:root{{--bg:#191917;--fg:#e8e6e1;--mute:#a09c94;--line:#34332f;--acc:#8ab4dc;--warn:#e6915f}}}}
|
||||
body{{background:var(--bg);color:var(--fg);font:16px/1.5 Georgia,serif;max-width:52rem;margin:0 auto;padding:1rem 16px 4rem}}
|
||||
h1{{font-size:1.5rem}} h2{{font-size:1.15rem;margin:0 0 .3rem}} h3{{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);margin:.9rem 0 .3rem}}
|
||||
section{{border-top:1px solid var(--line);padding:1.2rem 0}} .pred{{font-size:1.05rem;margin:.2rem 0}}
|
||||
.meta,.src,.sum{{color:var(--mute);font-size:.88rem}} .warn{{color:var(--warn)}}
|
||||
code{{font:12px ui-monospace,monospace;border:1px solid var(--line);border-radius:3px;padding:0 .3em;margin-right:.2em}}
|
||||
li{{margin:.35rem 0}} details{{margin:.2rem 0}} summary{{cursor:pointer}} .sum{{margin:.2rem 0 .5rem 1.2rem}}
|
||||
</style></head><body>
|
||||
<h1>The Adventures of Sherlock Holmes: reference groups</h1>
|
||||
<p class="meta">Arthur Conan Doyle, 1892 (Project Gutenberg #1661 text). 12 stories, 391 scenes cut by the same rule as <code>chunk.py</code>.
|
||||
Summaries, predicaments, groups and options written by Claude by reading every scene: no local inference.
|
||||
A comparison baseline, not a pack. Option moves give a direction only, never a number.</p>
|
||||
{"".join(out)}
|
||||
<section><h2>Unassigned ({len(d["unassigned"])})</h2><p class="meta">Scenes that fit no situation recurring in two or more stories.</p>{un}</section>
|
||||
</body></html>'''
|
||||
(here / 'REFERENCE.html').write_text(page, encoding='utf-8')
|
||||
print('wrote', here / 'REFERENCE.html', len(page), 'bytes')
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,59 @@
|
||||
"""Split the Project Gutenberg plain text of Arthur Conan Doyle, *The Adventures of Sherlock
|
||||
Holmes* (eBook #1661), into stories, then cut scenes with the same rule as
|
||||
../jacobs/split_se.py and ../wharton/split_gutenberg.py (paragraph boundaries, ~320 words,
|
||||
tail >= 80). Deterministic: titles are matched as the roman-numeral story headers in the body
|
||||
(not the contents list), and the Gutenberg licence after END is dropped."""
|
||||
import json, pathlib, re
|
||||
|
||||
TITLES = ['A Scandal in Bohemia', 'The Red-Headed League', 'A Case of Identity',
|
||||
'The Boscombe Valley Mystery', 'The Five Orange Pips', 'The Man with the Twisted Lip',
|
||||
'The Adventure of the Blue Carbuncle', 'The Adventure of the Speckled Band',
|
||||
"The Adventure of the Engineer's Thumb", 'The Adventure of the Noble Bachelor',
|
||||
'The Adventure of the Beryl Coronet', 'The Adventure of the Copper Beeches']
|
||||
TARGET = 320
|
||||
VOLUME = 'The Adventures of Sherlock Holmes (Arthur Conan Doyle, 1892)'
|
||||
|
||||
raw = pathlib.Path('corpus/adventures-of-sherlock-holmes.txt').read_text(encoding='utf-8').replace('\r', '')
|
||||
raw = raw[:raw.index('*** END OF THE PROJECT GUTENBERG')]
|
||||
lines = raw.split('\n')
|
||||
|
||||
ROMAN = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX', 'X', 'XI', 'XII']
|
||||
heads = []
|
||||
for n, t in enumerate(TITLES):
|
||||
norm_t = t.upper().replace("'", "’")
|
||||
pat = re.compile(r'^' + re.escape(ROMAN[n]) + r'\. ' + re.escape(norm_t) + r'$')
|
||||
hits = [i for i, l in enumerate(lines) if pat.match(l.strip())]
|
||||
assert len(hits) == 1, (t, hits)
|
||||
heads.append(hits[0])
|
||||
assert heads == sorted(heads)
|
||||
|
||||
stories = []
|
||||
for n, (t, a) in enumerate(zip(TITLES, heads)):
|
||||
b = heads[n + 1] if n + 1 < len(heads) else len(lines)
|
||||
body = '\n'.join(lines[a + 1:b])
|
||||
paras = []
|
||||
for p in re.split(r'\n\s*\n', body):
|
||||
p = re.sub(r'\s+', ' ', p).strip()
|
||||
if not p: continue
|
||||
paras.append(p)
|
||||
stories.append({'volume': VOLUME, 'title': t, 'words': sum(len(p.split()) for p in paras),
|
||||
'text': '\n\n'.join(paras)})
|
||||
|
||||
chunks = []
|
||||
for si, s in enumerate(stories):
|
||||
buf, n = [], 0
|
||||
for p in s['text'].split('\n\n'):
|
||||
w = len(p.split())
|
||||
if n + w > TARGET and buf:
|
||||
chunks.append({'story': si, 'title': s['title'], 'volume': s['volume'], 'text': ' '.join(buf), 'words': n})
|
||||
buf, n = [], 0
|
||||
buf.append(p); n += w
|
||||
if buf and n >= 80:
|
||||
chunks.append({'story': si, 'title': s['title'], 'volume': s['volume'], 'text': ' '.join(buf), 'words': n})
|
||||
|
||||
pathlib.Path('stories.json').write_text(json.dumps(stories, indent=1, ensure_ascii=False), encoding='utf-8')
|
||||
pathlib.Path('chunks.json').write_text(json.dumps(chunks, ensure_ascii=False), encoding='utf-8')
|
||||
for si, s in enumerate(stories):
|
||||
print(f"{si:2} {s['title']:40} {s['words']:6} words {sum(c['story']==si for c in chunks):3} scenes")
|
||||
ws = sorted(c['words'] for c in chunks)
|
||||
print(f'stories {len(stories)} scenes {len(chunks)} words/scene min {ws[0]} median {ws[len(ws)//2]} max {ws[-1]} total {sum(ws):,}')
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user