语言类说法
“密钥已经找到,那是俗语意大利语。”对Caspari与Faccini密钥的数值检验说明了什么
一位隶属马克斯·普朗克研究所的考古学家和一位独立语文学者,把星星旁的标签读作POLAR和TOARE,并宣布手稿的语言是意大利语。我们从他们自己的例子里复原了这把密钥,让它在诚实的对照下跑遍整部手稿。

2025年二月出现了一份标题十分自信的预印本:《伏尼契手稿之钥》。作者是Gino Caspari,一位隶属于 马克斯·普朗克研究所和伯尔尼大学的考古学家,以及独立研究者Agnese Faccini。他们的结论是:这部 手稿是用俗语意大利语,也就是lingua volgare写成的,记录方式是在简单替换密码之上再加一层中世纪 速记,而且“破译之钥现已可用”。
这个说法至少在包装上比通常的“破译”更严肃:预印本存放在马克斯·普朗克学会的资料库里,而且附有 一张密钥表和一份400多词的词汇表。于是我们照例处理每一个可检验的假说:精确复原作者的方法,再 让它通过保留该方法全部自由度的对照。
作者主张的是什么
起点是天文部分星星旁边的标签。在其中一颗星旁边,作者读出了POLAR这个词,也就是北极星。以这个锚 点为基础,他们展开了一套字母表:一部分伏尼契符号被判定为拉丁字母,一部分被判定为连写体,然后用 这套字母表读出其他标签:TOARE(金牛座,在昴星团旁边)、O'CETE(鲸鱼座)、EXPE(金星)。星名则 拿1528年印行的《天文学大成》(Almagest)来核对。
接下来是核心假定。按作者的说法,文本是用速记写成的:抄写员省去了元音,并且截去了词尾。因此一个 词的释读就是它的“辅音骨架”,读者可以自由地往里面插入元音、补全词尾。一串符号正是这样变成比如 p(er)d(e)n或者t(a)n(to):括号里的字母在手稿中并不存在。
作者诚实地把这把密钥称为初步的。但他们同时声称,凭它“手稿的大部分词都可以读出来”,并且语言可 以确切地判定为俗语意大利语。
他们的密钥可以严格检验,而我们把它复原了出来
作者刻意不使用机器可读的转写(EVA),所以他们的表是一组符号图片。为了做数值检验,我们复原的EVA 记法密钥不是取自这些图片,而是取自他们自己给出的带地址的例子:论文给出了具体folio上具体行的 释读,而这些行在转写中可以毫不含糊地定位。
| 他们的释读 | 手稿中的词(EVA) | 它给密钥带来什么 |
|---|---|---|
| torpore | dorchory | d=T, o=O, r=R, ch=P, y=E |
| p(er)d(e)n | chkar | k=D, ar=N |
| i(n) | s | s=I |
| fior | shor | sh=FI |
| o'c(e)fal | otchal | t=C |
| d(e)folie | ckholsy | 连写ckh=DF |
| exf(a)mo | ypchaiin | p=X, aiin=(a)MO |
密钥完整复原,并且内部自洽:同一个字母从不同的例子里得出的结果彼此一致。接下来是三项检验。规则 在运行之前就已固定。
检验一:这把密钥对上两百把随机密钥
我们取整部手稿,也就是连续文本中的大约33千个词。用作者的密钥把每个词解出来,然后追问:这样 的词在他们那个时代的意大利语里存在吗?词库我们取自Dante和Boccaccio,作者自己就把托斯卡纳的经典 作家称作与其词汇最相符的对象。方法的各项自由度完整保留:允许插入元音,允许截去词尾,允许可分离 的冠词o'和小词qo,凡是作者自己用到的一律照用。
然后让200把随机密钥做完全相同的事:同样的符号,同样的自由度,只是字母被随机打乱。
结果是:作者的密钥确实比随机的好,在严格匹配下它读出17.5%的词,而典型的随机密钥只有1.2%。听起 来像是赢了?并不是。作者的密钥是手工调出来的,让高频符号对应高频字母,让输出看上去像意大利语。 任何为某种语言优化过的密钥都会赢过随机密钥,这是优化的性质,不是释读成立的证明。真正要紧的是另 外两项。
检验二:无意义的东西是不是读得一样好
如果“读出大部分词”是这把密钥的成绩,那么语言消失时它也应该随之消失。我们取同一份意大利语词库, 把每个词内部的字母打乱:词长和字母频率保留了下来,语言本身则被摧毁。
在作者自己那套规则的层面上(插入元音加截去词尾),这把密钥对着真实的意大利语词库“读出”手稿中 69.7%的词。对着打乱后的伪词库则是67.9%。差距不到两个百分点。“读出大部分词”是由速记的自由度 保证的,与我们面对的究竟是意大利语还是变位词噪声无关。
检验三:为什么偏偏是意大利语
作者的主要结论是对语言的判定。这一点可以直接检验:我们把同一把密钥连同同样的自由度,交给同一时 代另一种语言的词库,也就是拉丁语(Cato的农业论著和医学著作Antidotarium Nicolai),并让词汇量 对齐。
在作者自己的规则之下,拉丁语读得比意大利语更好:90.3%对65.8%。这个“判定了手稿语言”的方法分不 出意大利语和拉丁语,实际上还更偏爱拉丁语。
这个假说还剩下什么
我们把检验说明的东西,和与它无关而已知的关于手稿的事实加在一起。
- 即使允许插入元音,手稿中仍有62%的词读不出来;“大部分词”只有在那种把无意义文本也读得一样好的规则层面上才达得到。
- 这把密钥最频繁的“释读”里有pue和dvte这类形式:它们不是意大利语的词,而是词库中旧正字法留下的残渣。有意义的释读是稀疏的孤岛,和此前每一次替换式“破译”一样。
- 伏尼契文本的条件熵低于所有受检的语言,而简单替换不改变熵:意大利语文本在这样的密码之下,统计上仍旧是意大利语。我们的测量指向另一类机制,即冗长式同音替代密码。
- 伏尼契的词是按一套刚性的位置槽语法构造的,真实的语言配上自由的速记绝不会有这样的结构。
- 星名的参照物,即1528年的《天文学大成》,比羊皮纸的放射性碳定年1404-1438晚了一个世纪。
结论是:释读未获证实。Caspari与Faccini的密钥是一张经过频率对齐、为了让输出看上去像意大利语而优 化的表。它表面上的成功在一种伪语言上同样重现,而且在作者自己的规则之下被拉丁语超过。
这个案例教给我们什么
任何未来的“破译”都要满足的要求,可以从这次检验里用一句话导出:请证明你的释读规则读不出无意义 的东西。只要一种方法的自由度(插入字母、截去词尾、变位、在若干变体中选择)还没有在一个保留该自 由度却杀死语言的对照上量过,“读出了多少词”这个计数就毫无意义。这已经是我们项目中第三个恰好倒 在这一对照上的假说,也是第一次需要从锚点例子复原别人的密钥才能完成的检验。这次检查的全部脚本和 数据,都公开在项目的复现包里。
常见问题
Caspari与Faccini破译伏尼契手稿了吗?
没有。他们自己的措辞是谨慎的,称之为“可能需要大幅修正的初步密钥”。我们的检验表明,所谓“读出了大部分词”,在一份毫无意义的伪词库上同样重现;而且在他们自己的规则之下,拉丁语读得比意大利语还好。释读未获证实。
可是他们的密钥确实产出了有意义的意大利语词,这总不会是巧合吧?
不是巧合,而是方法的性质。他们的速记允许在任何位置插入元音,也允许丢掉词尾。有了这么大的自由度,几乎任何替换表都能产出“读得通”的词。我们直接量过这一点:把词库里每个词内部的字母打乱之后,他们的密钥读出它的频率,几乎和读真实意大利语时一样高。
为什么引用1528年的《天文学大成》是个问题?
手稿羊皮纸的放射性碳定年为1404-1438年。作者却拿1528年在威尼斯印行的《天文学大成》来核对星名,那比手稿晚了一百年。要核实十五世纪的名称,需要十五世纪的来源,否则这种吻合什么年代也定不了。
伏尼契手稿究竟有没有可能是简单替换密码?
有一个可测的事实与此相悖:伏尼契文本的条件熵明显低于所有受检的欧洲语言。简单的字母替换不改变一种语言的熵,所以它无法把意大利语文本变成具有伏尼契统计特征的文本。这需要更复杂的机制,而数据指向的是一种冗长式同音替代密码。