Writing a fake Voynich by rules: copies, habits and the link between words
#1
@nablator asked me to explain the generator I mentioned, so here it is. Sorry, it got a bit long...

What it is

I call it "the scribe". It's a small program that writes a complete fake Voynich: same pages, same sheets, same paragraphs, same number of lines and words per line, same gaps for the drawings, Currier A and B, the five Davis hands. There is no meaning anywhere in it. It only follows writing rules that I measured first on the real text (ZL3b).

Why I did it

For months I collected rules about how the text is written. At some point you have to check if they are right, and the best way I found is this: if the rules are good, someone who follows them blindly should write a text you can't tell apart from the real one, at least in everything we know how to measure. If the fake text fails somewhere, a rule is missing or wrong.

How it writes

First it picks the habits of the sheet. Every sheet (the folded piece of vellum, four pages) has its own taste for some free choices: k or t, ch or sh, putting q in front or not, ending in dy or in y, and using words with e or without. The pages of the same sheet look alike in this, and inside a page it drifts a little from line to line.

Then, word by word, it decides to copy or to write something new.

About a third of the time (35%) it copies a word that is already on the page. It prefers the words close by, the chance halves every three lines or so, and it likes the word just above. In almost half of the copies it changes one letter, so qokedy can come back as qokeedy or okedy. One thing I learned the hard way: that change has to be something the hand would write anyway. More on that below.

The rest of the time it writes a new word letter by letter, and to choose the next letter it only looks at the two before. That is enough to keep the words in shape. They follow a sort of template: maybe a start (q, o, d, s or y), then a gallows or a bench, sometimes some e, and an ending. Words with e end in y or dy (qokedy, chedy) and words without e end in aiin, ar, ol (qokaiin, dar). It never puts two gallows in one word and never mixes e and i.

How a word starts depends on how the previous one ended. After a word in y, a word whose core starts with o usually gets q (shedy qokedy). A core starting with a gets d (daiin).

Then the line. The first word of a line likes to start with d, s or y, and avoids the same first letter as the line above (with ch it always avoids it, with s almost never). The last word gets "closed": daiin becomes dam, chol becomes choly, chor becomes chory. It does this more or less strongly depending on the hand.

And the paragraph. It starts with a gallows, the first line uses p and f instead of k and t, and the first line almost never copies.

That's it. It's seven steps, but some of the tables behind them are big, and they are learned from the text, so it's not a ten line rulebook.

How it looks

Real f78r, first lines:

Code:
tshedor shedy qopchedy qokedy dyqokol oky qokeedy qokedy shedy tchedy otar olkedy dam qckhedy cheky dol chedy qokedy qokain olkedy yteedy qotal dolshedy qokedar chcthey otor dor or

The scribe, same layout:

Code:
qokod chol qokeey chedy qopar otom o ral ydain shedy qody chody chals qokedy qotedy qokedy qokeey qolal shedytedy ytam tchdy shor qokeey qokaiinsh qokedy shedy qokaiin qoted

You can still spot some bad words in it, like shedytedy or qokaiinsh (two word endings glued together). I'll come back to that.

The measures

To compare the fake text with the real one I use 64 measures. Each one is a number you can compute on both texts the same way. Some examples, real value first and the scribe second:

How often a word is repeated right after itself, compared with what chance would give: 3.1 times chance in the real text, 3.3 in the scribe.

How many words have a "twin" earlier on the same page, the same word or one letter different: 64% real, 68% scribe. The nearest twin is usually two lines up in both.

How often the last word of a line ends in m: 15.9% real, 16.7% scribe. Closed endings in general at the end of a line: 27.1% and 27.3%, against about 2% inside the line.

How often a paragraph starts with a gallows: 93% and 92%. How many gallows in the first line are p or f: 31% and 31%, against less than 3% in the other lines.

How much the pages differ from each other in their habits, for example in putting q after y. If every page was the same this number would be about 1. Real 6.3, scribe 5.7.

The link between the end of a word and the start of the next (more below).

And an "eye test": how many words have a piece of three letters that appears 3 times or less in the whole real text. Those are the words that look wrong when you read them. Real 4.6%, scribe 4.1%.

A measure counts as reproduced if the scribe is within 25% of the real value, average of 5 runs.

What comes out

The scribe reproduces 58 of the 64 measures.

For comparison, a simple generator with three rules that I made before gets 33 of 64. So the rules definately make the difference, it's not that any generator gets there.

The test I like most: I let the scribe learn its tables only from the odd folios, and then write the even folios, wich it has never seen, and compare with the real even folios. It gets 51 of 64. That number alone doesn't say much untill you see this: the real odd folios against the real even folios match on only 55 of 64, because some measures change a lot from one part of the book to another. So 51 should be read against 55, not against 64. It means the rules describe how the text is made, they don't just memorize it.

And if I take out any single rule, measures go wrong. Without the copying, all the repetition measures fail. Without the habit of the first line, p and f dissapear from the first lines. Every piece is needed.

The 6 tests it fails

Exact repeats. A word written twice in a row is 0.9% of the word pairs in the real text and 1.2% in the scribe. Compared with chance it's fine (3.1 against 3.3 times chance), but in raw numbers it repeats a little too much.

Repeats at distance 5, the same word coming back five words later: 2.9 times chance in the real text, 3.8 in the scribe.

Words that avoid repeating. In the real text 16% of the common words almost never come right after themselves (dal, shey, saiin), while okaiin does it five times more than chance. The scribe has 21%. It only knows families of words, not single words.

The m at the end of long lines. Real lines of 10 words or more end in m 3.4 times more often than lines of 1 to 4 words. The scribe only gets 1.9 times.

q at the start of a paragraph: 4.2% real, 6.2% scribe. The numbers are small here, it's just over the limit.

Long words, 8 letters or more: 5.3% real, 7.4% scribe. Some of them are the two endings glued together you saw in the example (shedytedy, qokaiinsh).

Why I think it's interesting

The recent Harvard paper (Schwartz) says that no generator so far, theirs included, reproduces one thing: the link between the end of one word and the start of the next. They leave it as one of the few things unexplained.

In the scribe that link is just the habit I described above: the start of a word depends on how the previous one ended, and on nothing else from it. Not the whole word, not the word before, not the position in the line. Even the last pen stroke alone carries most of it, so it looks like a thing of the hand and not of grammar. Measured roughly the way the paper does, the real text gives 0.115 bits for hand 1 and 0.224 for hand 2 (the paper says 0.12 and 0.21). With the habit, the scribe gives about the same strength (after removing what a shuffled text would give: 0.097 against 0.089 for hand 1, and 0.171 against 0.205 for hand 2). Without the habit it falls to almost zero.

Two things I didn't expect

No dictionary needed. An earlier version made too many wrong looking words. Almost all came from the copies with a changed letter, because the change was random (daiin became daain, chedy became chddy). Giving it a list of real words fixed the look but killed the variety. What worked was making the change follow the same two letter rule as new words. Wrong looking words went from 8.7% to 4.1%, real is 4.6%.

The kind of word follows the sheet, not the plant. Words with e (qokedy, shedy) against words without (qokaiin, dar, ol): their share is shared by the pages of the same sheet, even with the other half of the sheet that sits far away in the book, and not with the next page if it belongs to another sheet. In the herbal, where every page has a different plant, the other half of the sheet matches at z = -7.0 and the next page at -0.7. So it behaves like the habit of the day it was written, not like the subject.

What it doesn't show

It doesn't prove the Voynich has no meaning. It shows that a procedure with no meaning is enough for most of what we can measure.

And the tables are learned from the text, so it says how the pieces combine, not where the letter rules come from.

Any questions, I'll be happy to reply.
[+] 2 users say Thank You to quimqu for this post
Reply
#2
Quote:What worked was making the change follow the same two letter rule as new words.

Does it mean that you collected statistics of letter trigrams by "picking the habits of the sheet" ? I did exactly that in my first generator. The probability of trigrams including across word breaks were preserved. The first and last bigram of the line were special, creating a simple LAAFU effect because I used a special character for start of line and end of line in the trigram statistics. Now I think I should add a few guardrails to ensure that not too many malformed words get generated: too long or with several gallows...
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Evidence for 2 rules linking words in Herbal A->B npcompl33t 30 3,705 08-10-2026, 05:37 AM
Last Post: npcompl33t
  Could synthetic “fake Voynich” tests tell us what we’re dealing with? Phoenixjn 4 4,243 10-09-2025, 09:19 AM
Last Post: dexdex

Forum Jump:


Users browsing this thread: 1 Invisible User(s), 3 Guest(s)