Frequency lists teach the words a book uses most. But you can read a sentence only when you know every word in it. Readfirst orders a book's vocabulary so that whole sentences become readable as early as possible, proves how close that order is to the best one possible, and turns the book into a course: study a few words, read a few pages, repeat.
Eleven public-domain books, four languages
This planMost frequent words firstBest any order can do
Words needed to read
"Fewest possible" is a proof: no order of this book's words reaches that share with fewer words.
The plan, word by word
Each word comes with a sentence from the book that it makes fully readable. The last column is the share of the book's sentences readable after that word.
From plan to course
A learner wants to read the story, in order. So the course cuts the book into sessions that grow from one page to about four. Before each session you study only the words worth learning for it, in the order that opens up its sentences soonest, and you read with glosses for the rest. Every learned word is taught just before the first page that uses it, so the rest of the book reviews it.
Which words are worth learning is a rent-or-buy choice. A word can be glossed every time it appears (rent) or learned once with a flashcard (buy, which the course counts as six look-ups). On its own each word is easy to decide; what ties them together is comfort, because no sentence may need more than one, two or three glosses. Readfirst solves the whole book at once as an integer program and proves the result optimal, in under a second even for Don Quijote.
What the numbers showed
Comfort decides most of the cost. Reading a novel at one gloss per sentence means learning 69 to 82 percent of its distinct words, because of the long tail of rare words. Allowing three glosses cuts that by roughly a third. The study pack shows this table and lets you choose.
The order of study matters while you study. Studied in Readfirst's order, 66 to 80 percent of the coming pages are already readable on average while you work through a session's list, against 44 to 65 percent when the same list is studied most frequent first.
The exact choice is honest but small. The simple rule (learn every word met six times, then fix sentences that need too many glosses) costs only 0 to 1.2 percent more. The proof says the rule is already close.
Learning sentences from all over the book first does not pay. A 1,000-word head start from the plan above pushes Marianela's first page from day 12 to day 71, and adds about 140 words to the course in total. The plan is still the right tool for practising sentences, but the course starts with the story.
Open the Marianela study pack: the reader with every session, its word list and glossed pages. The same files come with an Anki deck in study order.
How it works
A scheduling problem
Learn one word per step. Each sentence becomes readable at the step its last unknown word is learned. Making sentences readable as early as possible means keeping the sum of those steps small:
minimise Σsentences step at which the sentence's last word is learned
That is a classic problem from operations research: scheduling jobs on one machine with prerequisites. Words are the jobs; a sentence is a job that can only finish after all of its words.
Densest clusters first
J. B. Sidney showed in 1975 that good schedules come in blocks. First learn the set of words that completes the most sentences per word learned. Then do the same on what is left, and so on.
Finding that set is the densest-subgraph problem, which a max-flow computation solves exactly. Any order that keeps to the blocks is within a factor of two of the best. Inside a block, Readfirst picks words greedily, one completed sentence at a time.
A proof comes with it
The block boundaries trace the upper envelope of what any set of words can make readable. So the dashed line on the chart is a hard limit, and the plan touches it at every block boundary.
On these eleven books the plan is within two words of the proven minimum at 50 percent and within 1 percent of it at 75 and 90 percent. The decomposition and its proof take under half a second, even for Don Quijote.
How the claims are checked
On 300 random small books, the dashed limit is compared with the true best coverage found by trying every set of words. It is never exceeded, and it is exact at every block boundary.
On 150 more, the plan is compared with the best order found by trying every order. It is always within a factor of two, as the theory says.
Three proven minimums were confirmed on the real books by a separate exact solver (OR-Tools CP-SAT): with one word fewer, no choice of words reaches the target. Alice, 50 percent: 648 words. Die Verwandlung, 50 percent: 1,017. Marianela, 75 percent: 2,204.
The course: on 120 random small books, the integer program's choice matches the best found by trying every set of words, and always keeps each sentence within its comfort limit. On the real books, tests check that every word is taught once, before the first page that uses it, and that no sentence needs more glosses than allowed.
What it assumes
A word means a dictionary form: learning decir counts as knowing dijo. The lemmatizer (simplemma) is good but not perfect, and personal pronouns are kept as separate words.
Names are free. A capitalised word the book never writes in lower case counts as a name. German capitalises every noun, so in German nothing is treated as a name, and Gregor costs one word.
Only sentences of three or more words count, and every sentence counts the same. Readability here means knowing every word, not understanding grammar or idioms.
"The 1,000 most common words" come from the wordfreq lists for each language.
Use it on your own book
Give it any plain-text book. course writes a study pack: the reader page, an Anki deck in study order and a word list. The plain command prints the table above for your text and writes the sentence plan.
pip install simplemma ortools wordfreq numpy genanki
python -m readfirst.dictionary fetch # meanings: es, fr, de, en
python -m readfirst course my-book.txt --lang es --comfort balanced --out pack/
python -m readfirst my-book.txt --lang es --know-top 1000 --plan plan.tsv