|||
字典猜想:用“数学”研究“语文”
―――计算机写千字的新进展
杨义先
北京邮电大学信息安全中心主任
灵创团队带头人
摘要
本文提出了一个猜想,称为“字典猜想”,即,以任何一本字典(比如,《新华字典》)中的全部字为“字库”,可以撰写出一篇有内容的文章(甚至是五言绝句诗或五言韵文),使得该字库中的每个字都会而且只会被使用一次(满足此条件的文章,史称“千字文”)。接着,我们以最新“百家姓”中的前一百个字为“字库”,通过数学概率分析,论证了这种千字文存在的可能性,并借助计算机完成了一些实例。比如,给出了如下“百家姓”五言绝句诗:“刘常杜史段,赵宋范李唐;魏傅顾吴侯,吕何韦秦王;洪武许万金,施钱谢龙康;孟孙贺邹曹,曾任尹彭江;夏雷潘谭田,沈董崔周汪;邵邱萧薛蔡,蒋罗陈于梁;熊廖毛徐卢,马冯邓牛黄;朱石戴苏林,白叶袁胡杨;严郑龚韩姜,陆丁余孔方;贾郭赖阎高,姚郝钟程张。”
(一)前言
最近偶然发现:中文实在太奇妙了!用“处处留意皆文章”来形容,一点也不为过!简单罗列一下,至今的各种“怪文”层出不穷,比如:
(A)“单音文”[1]:只用一个“音”(包括其不同的“调”)可以写出文章。例如,
[堵都]:嘟,…,嘟,嘟…!堵,毒堵,都堵,堵都,渎都,黩都。独堵,独都堵,都督堵,妒堵督,睹都堵,读堵都。都督笃堵,毒渎独都;都堵肚堵,肚妒都督;独犊杜堵,赌椟杜堵;堵堵都督,督督堵度。杜堵赌杜牍,都督黩堵都;笃犊督堵都,堵都堵堵堵!嘟,嘟,…。
我们已经对《新华字典》中汉字的400余个音进行了测试,至少在已经进行的150个测试音中,无一失败。因此,我们有理由相信:对汉字而言,按每个音,都能够写出一篇“单音文”。
(B)“同音文”[1]:两篇文章称为同音文,如果它们的发音完全相同,但是,内容和含义又完全不同!
例如:“穴媳擂蜂好膀恙,忪于革命,衷于挡,爱增芬茗,怖望苯,痢肠奸腚,痘痔疡。痢肠奸腚,痘痔疡!”(为了不引起误解,此处略去了家喻户晓的同音伴文,以表明此处仅是严肃的学术研究,并无它意)。
(C)“单字文”[1]:由单独一个字的不同读音写成的文章。
例如,网上有这样一幅对联。上联:长长长长长长长(读法:Chang Zhang Chang Zhang Chang Chang Zhang );下联:长长长长长长长(读法:Zhang Chang Zhang Chang Zhang Zhang Chang);横批:长长长长(读法:Chang Zhang Zhang Chang)。
(D)单字单音文[1]:由单独一个同音字的不同音调写成的文章。
例如,网上有这样的一幅对联。上联:好(hào)好(hǎo)好(hào)好(hǎo)好(hào)好(hào)好(hǎo);下联:好(hǎo)好(hào)好(hǎo)好(hào)好(hǎo)好(hǎo)好(hào);横批:好(hào)好(hǎo)好(hǎo)好(hào)。
(E)回序文[1,2]。以若干璇玑图为代表的各类可顺序阅读和逆序阅读的文章。
不过,本文将研究另外一种怪文,史称“千字文”[3],在这样的文章中,任何字都不会重复出现!
第一篇千字文是南朝梁武帝时期(502—549年),员外散骑侍郎周兴嗣奉皇命从王羲之书法中选取1000个字,编纂成文。此文的开篇部分是:“天地玄黄,宇宙洪荒,日月盈昃,辰宿列张;寒来暑往,秋收冬藏,闰馀成岁,律吕调阳;云腾致雨,露结为霜,金生丽水,玉出昆冈;….”
虽然,无法还原周兴嗣创作“千字文”的过程,但是,可以肯定,若无绝顶的语文水平,他不可能写出如此奇文!另外,我们也不知道,周兴嗣当初选择这1000个字时,是否有意进行了某种取舍。
本文将从数学上,以概率方式证明:对任何一个自然字库,即,没有人工有意干扰的字库(比如,《新华字典》中的所有汉字组成的字库等),都可以撰写出至少一篇满足“字不重叠”且“有内容”两个条件的“千字文”。然后,本文以最新“百家姓”中,前一百个姓氏汉字为“字库”实例,来验收概率推理的正确性和可信性。
(二)重写绝诗版“百家姓”童谣
提起“百家姓”,大家立即就会想起那篇家喻户晓的童谣:“赵钱孙李,周吴郑王;冯陈楮卫,蒋沈韩杨;朱秦尤许,何吕施张;……”,但是,这类文章不是本文要研究的“千字文”,虽然在此文中每个字也只出现一次(并未重复)。实际上,我们研究的“千字文”必须满足两个条件:其一,每个字都不重复出现;其二,文章是“活的”,即,每句话都是“有内容”的。
上述童谣只满足第一个条件,而它的每句话都完全没有内容,是“死的”。仅满足第一个条件的所谓“千字文”特别适合于计算机“创作”,因为计算机几乎在瞬间就能够把任何“字库”排列成绝句韵文,比如,文献[4]就给出了多首韵律比传统“百家姓”童谣的韵律更顺的韵文。
在文献[5]中,我们虽然给出了两篇同时满足上述两个条件的“百家姓千字文”故事(分别以最新百家姓的前100和200个姓氏字为“字库”),但是,这样的两篇故事都不是韵文,更不是“诗型”文,都无法用数学方法进行存在性的概率分析。因此,本文重新对“百家姓”进行改写,即,将它们改写成为“活的”且是“诗型”的韵文。
实例胜于雄辩!为了说明问题方便,本节的千字文“字库”为最新《百家姓》中的前100个汉字[6],即,“王、李、张、刘、陈、杨、黄、孙、周、吴、徐、赵、朱、马、胡、郭、林、何、高、梁、郑、罗、宋、谢、唐、韩、曹、许、邓、萧、冯、曾、程、蔡、彭、潘、袁、于、董、余、苏、叶、吕、魏、蒋、田、杜、丁、沈、姜、范、江、傅、钟、卢、汪、戴、崔、任、陆、廖、姚、方、金、邱、夏、谭、韦、贾、邹、石、熊、孟、秦、阎、薛、侯、雷、白、龙、段、郝、孔、邵、史、毛、常、万、顾、赖、武、康、贺、严、尹、钱、施、牛、洪、龚”。
为避免吓人的数学公式,此处,以例子的方式,仅介绍几个最终的计算结果,略去详细的数学推理过程:
例1)(和谐社会),四言版“连续韵”的“活百家姓”:“侯谢秦王,邱董洪汪,傅宋韦蒋,周顾吴姜,武郑戴方,罗陈于梁,牛高吕黄,马冯石常,钟魏郭唐,李萧杜康,崔龙徐江,白叶胡杨,熊毛孔张,施何林段,夏蔡陆田,任刘龚韩,许金余万,郝赖邵钱,贾史赵谭,雷邓贺袁,邹丁程严,沈姚薛范,朱苏卢潘,彭曹廖阎,孟尹曾孙。”
此例1)的逐句白话解释是:各地诸侯感谢秦王;邱先生管理洪涝事务;辅导宋先生,违背蒋先生;十分周全地照顾吴地的生姜;继承严谨,尊重规矩;把鱼网放在房梁上;牛很高大,其背脊是黄色的;马跑得很快,石头很坚硬,长久;城郭很宏大,钟楼很威严;李子树虽然很萧条,但是,杜仲树却很健康;猛龙在江中慢慢游动;胡杨林的叶子是白色的;熊毛的毛孔张开着;施种的是哪个路段的林木?夏天的野草长在陆地的田地中;委任刘先生来供养韩先生;承诺黄金万两;郝先生要赖掉邵先生的钱;赵先生在谈论贾家的历史;打击邓先生,祝贺袁先生;邹先生很壮实,而且规规矩矩;沈女士很好,是薛先生的榜样;红色的苏子林,黑色的淘米水;官府热热闹闹,但是,里巷却冷冷清清;尹府官员的第四代曾孙。
由此可见,例1)中的“百家姓”确实是“活的”,虽然,中途被迫两次“转韵”(由ang转为an,再转为un),但是,只要认真阅读,人类是能够读懂其意的。
例2)(刘先生乱点鸳鸯谱),四言版“间隙韵”的“活百家姓”:“刘杜史段,赵宋李唐;魏尹顾侯,吕韦秦王;洪武许金,施钱谢康;邹曹万钟,曾贺何方;郑戴吴傅,姚郝雷姜;朱石苏林,白叶胡杨;廖熊毛卢,马冯牛黄;孟夏潘谭,袁余彭汪;沈董薛田,崔龙徐江;贾郭阎高,丁孔周张;蔡萧邵邱,罗陈于梁;邓孙严程,龚韩赖蒋;陆任范常。”
此例2)的逐句白话解释是:刘先生杜撰历史片段,包括,赵家的宋朝,李家的唐朝;魏国官员如何照顾诸侯,吕不韦如何违逆秦王;洪武大帝如何许下重金,施舍钱财,感谢健康;邹地官府曾经如何敲响一万个钟,祝贺何方神圣;郝姓美女如何慎重地拥戴吴师傅,研磨生姜;红石头紫苏林中怎样长出白叶子的胡杨林;病愈后狗熊的毛是多么黑,马有多快,牛有多黄;初夏的淘米水太多,流水长长,形成很大的一个水溏;沈先生如何管理薛先生的田地,巨龙如何在江河中慢慢游荡;贾家的围城内门有多高,钉子的孔眼是如何向四周扩张;野草在邵地的山丘中枯萎,鱼网陈放在房梁上;邓家的子孙严格按规程行事,供养韩先生,依赖蒋先生;连续六届长久担任先进模范。
细细品味例1)和例2)之后,不难发现,在“活内容”的情况下,“间隙韵”更适合于人类的阅读习惯(也许是因为它们与熟知的“绝句诗”相近的原因吧),而且,还不需要中途“转韵”,即一个韵(ang)就贯穿全文。提醒:我们曾在[4]中指出,在“死内容”的情况下,结论刚好相反,即,死内容的“连续韵”比“间隔韵”更易让人接受。
由于例子“字库”的字数为100,因此,四言版天生就有残缺,即,最后一句被切掉了一半。因此,下面再给出一个五言版“间隙韵”例子。
例3),五言版“间隙韵”的“活百家姓”:“刘常杜史段,赵宋范李唐;魏傅顾吴侯,吕何韦秦王;洪武许万金,施钱谢龙康;孟孙贺邹曹,曾任尹彭江;夏雷潘谭田,沈董崔周汪;邵邱萧薛蔡,蒋罗陈于梁;熊廖毛徐卢,马冯邓牛黄;朱石戴苏林,白叶袁胡杨;严郑龚韩姜,陆丁余孔方;贾郭赖阎高,姚郝钟程张。”
此例的韵律始终未变,即一个韵(ang)贯穿全文,而且,它也是“活的”,其逐句白话解释是:刘先生经常杜撰历史片段,比如,宋朝的赵家如何垂范唐朝的李家;魏国的太傅怎么照顾吴国的诸侯,吕不韦如何韦逆秦王;洪武大帝如何许诺万两黄金,施舍钱财感谢龙体健康;长孙去邹家官府庆贺,祝贺曾经担任管理汹涌彭湃的江河的官员;夏天打雷,淘米水都淤积成浩瀚的水田了,沈先生负责管理周边很长的大水溏;邵家的丘陵地上“赖蒿”的草苗都萧条了,蒋家的鱼网存放在房梁上;刚刚病俞的熊的毛发正在慢慢变黑,马很快,邓家的牛很黄;红色的石头像项链一样戴在“紫苏”林上,白色的叶子像长衣袖一样罩在胡杨林上;郑重严肃地奉献韩国出产的生姜,六个家丁都获得了富余的金钱(孔方兄);贾家的城郭仰仗其高大的内城门,郝美女广泛收集各种规程和主张。
比较上面的三个例子后,我们认为,在“字库”容量为100字的情况下,采用五言绝句诗来写“百家姓”既是可行的,其结果也是比较满意的。
(三)五言绝诗版“千字文”的数学分析
如果上节的三个例子纯粹是用蛮力编排出来的,那么,其价值就大打折扣了。本节来认真分析其数学原理,并用概率结果来说明“千字文”存在的必然性。
由姓氏字组成的“字库”可能是最不适合于撰写“千字文”的“字库”,因为,其中“字”之间的关联度最小,各“字”最独立,彼此最松散,从而,最难形成紧密的大众化语句!当然,姓氏“字库”也有好处,即,库中每个字均为“名词”,有利于组成“人话”。
仔细分析,本文“百家姓字库”中的这100个汉字后,可以发现:
1)共有56个动词,即,从“库”中抽出任何一个字为动词的概率大于0.5;
2)共有46个形容词,即,从“库”中抽出任何一个字为形容词的概率约为0.5;
3)共有24个字同时是名词、动词和形容词,其概率也不小,大约为0.25。
在继续分析之前,我们先把“人话”的含义特别解释如下:“人话”即指人类能够读懂的话,那怕是需要认真研读才能读懂的话,也都算“人话”。虽然并非汉字随意排列都能成“人话”(否则,“千字文”的撰写就没有任何难度了!),但是,“人话”的密集程度可能会出乎大多数人,甚至包括语言学家,的意料!比如,许多人都不会相信“谭谭谭”这三个字排成一句“人话”!实际上,这三个字不但是“人话”,而且,还是具有多重含义的人话,因为,作为名词,“谭”可作为一个姓氏;作为动词,“谭”同“谈”;作为形容词,“谭”意指“伟大”,所以,“谭谭谭”至少可以解释为:1)谭先生在谈论谭先生;2)伟大的谭先生正在谈话;…等。其实像这种“名动名”、“形名动”、“动形名”等的“人话”还有很多,甚至随意从本文的“字库”中选三个字排成一行后,它形成“人话”的概率远远超过0.5!虽然一般人很难判断某句话是否是“人话”,但是,普通人却可以很轻松地判断某些字的排列是否形成“大众话”(对计算机来说,它不用,也没那个智力,区分“人话”和“大众话”)。
为便于分析,下面我们锁定用“百家姓字库”来撰写五言绝句型的韵文,其实,此处的分析思路完全适用于任何给定“字库”的“千字文”存在性分析。首先回答几个问题:
1)为什么选用“诗”来做载体?
文章好不好,取决于两个方面:其一,作者是否“写得好”;其二,读者是否“读得好”!如果给某篇文章冠上“诗”的头衔,那么,读者便会无意识地努力去读懂它,那怕这首“诗”完全是颠三倒四,逻辑混乱!比如,谁会嘲笑“举杯邀明月”的荒唐呢?谁又会说“白天不懂夜的黑”是在胡言乱语呢?如果某人非要拿一首诗来论证“社会主义就是好”,那么,他不挨骂才怪呢!因此,作为理工人员,既然俺没本事把文章写好,那么,俺就用暗示的办法,努力让读者把文章读好!当然,近两千年前,周兴嗣用四言诗来写“千字文”[3]的做法,也使俺理直气壮地用“绝句诗”来撰写基于“百家姓”的“千字文”。
2)为什么选五言绝句诗?
原因有两个:其一,100能被10整除,所以,不会出现像例2)中那样的“残句”;其二,这100个姓氏中,有13个字同为“ang”韵,所以,足以保证5言20句的“诗”不转韵,其实只需要10个同韵字就够了。当然,如果韵字不够,中途转韵也是可以接受的。
3)为什么一定能够成功?
如果五个字排成一行,那么,在许多情况下,仅仅根据它们的词性顺序就能够以很大的概率判定这一行字为“人话”,比如,形名形动名、形名形动名、名形动形名、…等。而这些词性顺序出现的概率不小于0.5×0.5×0.5=0.125>10%(这里,概率0.5的依据是:这100个汉字中有56个动词和46个形容词)。(注:对于密码破译者来说,10%已经是相当大的概率了,通常密码破译概率能够达到万分之一的数量级,就基本能够保证破译成功了!)所以,从密码破译角度,我们已经可以肯定:即使是锁定每段五言绝句诗中的最后一个字,也能够以很大的概率排列出由10个字(分两句)组成的“人话”。当然,从计算机排列出来的众多“人话”中,挑选出满意的“大众话”,就完成了五言绝句诗中“一段”(两句)的构造!然后,从“字库”中去掉这“一段”中的10个字,得到由90个字组成的新“字库”,再仿照上述过程,构造出另“一段”,以此类推,直到所有100个字都被用完为止。实际上,上节中的例1、例2和例3正是在这种数学理论的指导下,才有信心撰写出来的!
增加“千字文”存在性的另一个原因是中文的模糊性,即,歧义性。从精确描述角度来看,中文的这种歧义性是一大缺点,法文在精确性方面就有明显的优势,但是,从写“千字文”角度来看,这又刚好是中文的优点!因为,每个汉字的含义太多,千丝万缕,很可能就有一根“线”把松散的汉字们串成一句“人话”,甚至是“大众话”。
上面的思路不但适合于“百家姓”中前100个汉字的“库”,而且,也适合于其它库。至此,我们清理一下“字典猜想”的依据:
考虑一个事先选定的“字库”D,比如,D可能是《新华字典》中的全体汉字组成的“库”。
第1步,定“言”:如果D中汉字个数能够被10(相应地14、12、8或6)整除,那么,基于该“库”的“绝诗型千字文”就可以选择为五言(相应地七言、六言、四言或三言)。当然,根据人类的阅读习惯,也许五言和七言更好。如果实在字数不整齐,那么,宁愿保全大局,不惜遗留一个残句(可以适当补缺);
第2步,定“韵”:如果D中某个韵的字数超过总数的1/10(相应地1/14、1/12、1/8或1/6),那么,就把该韵定为“千字文”全文的“韵”,同时,把这些“韵字”放在一起,形成一个“字库”Y,并把Y中的字锁定在每段“诗”的最后一个字的位置上。如果同韵字不够,那么,可以转韵。但是,由于汉字一共只有23个韵,而且,这些韵字的分配极不均匀(明显集中于“ang”、“an”“eng”、“u”、“a”、“i”、“ao”、“en”、“ou”、“ai”等十个韵上),因此,根据数学中的“鸽子洞原理”,基于D的“千字文”能够“一韵到底”的可能性非常大。为避免描述过程太零乱,下面假定“一韵到底”已可行;
第3步,词性分类:从D中去掉第2步选定的那些“韵字”(这些“韵字”已被锁定在“绝句诗”中每段的最后位置上了),得到一个新“字库”E。按“名词”、“动词”、“形容词”、“副词”、“介词”、“数词”…等把E中的汉字进行分类。注意:1)如果某个字同时具有多个“词性”,那么,优先将它放入“名词”、“动词”或“形容词”的类中;2)如果某个字还可同时在“名词”、“动词”或“形容词”三类中有多个选择,那么,尽量使得“名词”和“形容词”类中汉字个数大约相同,而“动词”类中的汉字个数为前者的一半;3)与第1步和第2步不同的是,第3步的词性分类在整个拼接“千字文”的过程中是可以随时调整的;
第4步,计算机造“人话”:把第2步中的韵字锁定在“诗”的段尾处,根据第3步中的词性分类,按常见的“人话”词性顺序(比如,形名形动名、形名形动名、名形动形名、…等)让计算机自动排列出若干“人话”候选句子,然后,真人再从这些候选句中挑选出满意的“诗句”,至少应该是“大众话”吧。注意:真人在挑选“诗句”时,还要特别留心,要通过微调,尽可能多,尽可能早地用掉E中的那些非主流词性字(比如,副词、介词等),虽然这些字不会出现在计算机造出的“句子”中,以避免最终留下一些“边角废料”。
第5步,裁减“字库”:把第4步中,真人挑选出的“诗句”中的哪些字,分别从E和Y中去掉,形成规模更小的新“字库”F和Z。然后,对这两个新“库”重复第4步的“造诗”过程。如此反复,直到最初的“字库”D中的所有字都被用掉为止。
(四)结语
各位,看完上节的“5步算法”后,您也许会嘲笑俺是“光说不练,假把式”吧!甚至赌俺:有本事,先把《新华字典》写成一首五言绝句诗再来吹!坦率地说,我还真动过这个念头,如果哪位朋友能够给我提供一套可编辑的《新华字典》源代码电子字库,那么,我有信心在一周左右(甚至更短的时间内),让计算机撰写,并让人工挑选出《新华字典》的五言绝诗版“千字文”。现在网上的《在线新华字典》一次只能查一个字,如果以它为工具来写“千字文”,那么,本可以在瞬间完成的上述算法的前三步就会把我累得半死,俺才不会那样“愚公”呢,毕竟俺的主业是破密码,而不是写“千字文”!
惊悉郑州大学郭保华教授耗时三年多,把四千个汉字写成了四文绝诗版的“千字文”,《中华字经》[7]!佩服,佩服!不知郭教授当初选择这四千个汉字时,是否进行过人工干预,如果不曾干预(即,随意选择而得),那么,郭教授的壮举就从另一个侧面验证了本文“字典猜想”的正确性。如果郭教授当初的四千“字库”是精挑细选的,那么,郭教授的研究就与本文不是一回事了。虽然我不知道郭教授是如何完成《中华字经》的,但是,至少可以肯定,他主要不是用计算机完成的,因为,《中华字经》[7]在“顶层设计”方面明显不足,比如,一方面进行了“转韵”(首韵本是ang),另一方面,却又浪费了不少本来可用的“ang韵字”(从第二、三、四部分中能够找出许多“ang韵字”,也可从第一部分的“非尾”位置找出“ang韵字”等)。如果郭教授拥有这四千字的电子版完整“字库”(至少包括韵、词性等),那么,也许能够重写《中华字经》,使它“一韵到底”,或写成“五言、七言绝句诗”(这时,“一韵到底”就更有保障了)。
本文第二节只写了最新“百家姓”中的前100个字,如果读者有兴趣,借助本文的五步算法,可以试着用前200或前300个字,甚至更多的字,来写出5言绝诗版的,有内容的《百家姓》。当然,有特殊兴趣的网友,也可以干脆把传统“百家姓”[8]的全部400余个单字姓氏重新撰写成一首“一韵到底”的五言绝句诗呢!朋友,如果您真是这样的奇人,到时可记得让我也欣赏一下你的大作哦!
本网站(或页面)的文字允许在CC-BY-SA 3.0协议和GNU自由文档许可证下修改和再使用。
(五)参考文献
[1]杨义先,技术文学初探(1),
http://blog.sciencenet.cn/blog-453322-620434.html
[2]杨义先,网友新玩物:蝴蝶璇玑图研究,
http://blog.sciencenet.cn/blog-453322-671730.html
[3]百度百科,千字文简介,http://baike.baidu.com/view/23443.htm
[4]杨义先,“百家姓”童谣研究,
http://blog.sciencenet.cn/blog-453322-668765.html
[5]杨义先,把“百家姓”写活,
http://blog.sciencenet.cn/blog-453322-661161.html
[6]2011年中国最新姓氏排名,http://www.douban.com/group/topic/22595209/
[7]百度百科,中华字经,
http://baike.baidu.com/view/1400982.htm
[8]百度文库,百家姓全文
http://wenku.baidu.com/view/65a5f00a52ea551810a687c5.html
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-20 13:37
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社