I've been working on a computational approach to the Voynich manuscript for about eight months. I'm posting the paper, the code, and all results data because I think the methodology may be useful to the community, and because the negative results are as important as the positive ones.
What I did: I built a 12,365-entry dictionary using logographic character-level assignments and morphological expansion. Then I tested whether the specific character-to-meaning assignments actually matter — whether shuffling which meaning goes on which character produces worse results. It doesn't. 500 permuted dictionaries produce equal or higher coherence scores. The dictionary is dead. That's the first result.
What I did next: I developed a four-gate protocol — pre-registered GO/NO-GO criteria at each step — to see what, if anything, survives falsification. Using morphological decomposition, distributional clustering (PPMI-SVD on the EVA corpus), and Levenshtein reverse-matching against medieval medical vocabulary, I identified five morphological roots whose families pass all four gates: distributional section-tracking, family cohesion above null, cluster enrichment for phonetically-anchored families, and pharmaceutical-section pull under 10,000-permutation testing with Bonferroni correction. Three roots survive even the most conservative correction.
What the five roots suggest: The manuscript contains pharmaceutical preparation vocabulary — roots phonetically matching medieval terms for water, heat, and plant roots — concentrated in the botanical and recipe sections, co-occurring with plant illustration markers (p = 0.018). The text is domain-segregated (z = −55.95 against shuffled null), not multi-layered. The encoding remains unbroken. I cannot read a single line.
What the paper also contains that may be of interest:
- The four-gate protocol run on Rugg-style Cardan grille text — all gates fail (Appendix D). The pipeline does not pass on procedurally generated text.
- Entropy decomposition: root-sequence H₂ = 5.17 bits vs full-token H₂ = 4.80 bits. Affix stripping recovers +0.37 bits. The entropy anomaly persists at the root level. I have not resolved this and I don't claim to.
- Anchor specificity controls: place-name vocabulary produces zero passing families, common Latin produces one, medical vocabulary produces five (Appendix B).
- An abandoned statistical gate (Gate 4 v1) documented as a methodological error and corrected before examining the redesigned result (§5.4).
- A multi-layer hypothesis test that came back negative — I tested my own theory and it failed.
- Illustration-text analysis showing pharmaceutical vocabulary near plant markers, a separate radial-diagram register in the astrological section, and structurally isolated nymph-figure labels with non-pharmaceutical vocabulary.
Code and data: You are not allowed to view links.
Register or
Login to view.
Pre-registered protocol: PROJECT_8_PROTOCOL.md in the repository
Draft paper Attached and in Github Repo.
The protocol is designed to be reproducible. Everything runs on the Takahashi IVTFF transcription. If anyone wants to run the pipeline on a different transcription or test it on their own hypothesis dictionary, the code is structured for that.
I'm particularly interested in feedback on two points: whether the grille control adequately addresses the generation-mechanism question, and whether anyone has ideas for further decomposing the root-level entropy anomaly by section. Both seem like productive next steps that I haven't pursued.
Happy to answer questions about any part of the methodology.