|||
把“百家姓”写活
―――计算机写千字文的附属成果
杨义先
北京邮电大学信息安全中心主任
灵创团队带头人
摘要
一说起“百家姓”,大家马上就会想起那篇家喻户晓的韵文:“赵钱孙李,周吴郑王;冯陈楮卫,蒋沈韩杨;朱秦尤许,何吕施张;……”此文虽朗朗上口,但是,它却毫无内容情节可言!本文将以两个实际案例表明:可以重排“百家姓”中汉字,并将它们变成一篇完整的“故事”。当然,本文仅仅是我正研究且还未解决的“机器写千字文”附属成果。
(一)春秋战国侯王们的致富故事(“百家姓”故事案例)
(1.1)100字案例:
韩、赵、郑、蔡、陈、吴、谭、邓、沈、薛、刘、徐、赖、罗、许、曾、陆、廖侯[杜]夏、周、秦、魏、唐、宋史;[武]孔孟,[戴]萧何;常于江苏、吕梁、邱、邵郭(邹段),[施]姜田,[顾]彭洪汪,[傅]姚丁,[谢]蒋贾,[贺]郝孙,[任]崔尹,[龚]潘曹,严[程范]袁阎王,[董]高朱叶林、胡杨、黄李;方[余]白毛冯马、雷龙石钟、康牛、万张熊韦、金钱卢。
上段共100字,它们是由《2011年中国最新姓氏排名[1]》中的人数最多的前100个姓氏重新排列后形成的一个完整故事。其中为清晰起见,用方括号[X]表明该字(词)取其动词含义,现把上段的故事细细解释如下:“春秋战国时期部分国家(韩、赵、郑、蔡、陈、吴、谭、邓、沈、薛、刘、徐、赖、罗、许、曾、陆、廖)的诸侯们,杜撰历史(夏、周、秦、魏、唐、宋史),继承孔孟之道,拥戴萧何,经常在多地(江苏、吕梁、邱(邱县)、邵郭(邹段)(邵城的邹地段))施种生姜地,照顾洪水汹涌澎湃的大湖,辅导姚姓士兵,感谢蒋姓商人,庆贺郝家子孙,任命崔姓府尹,尊重潘姓总务长,严格按程序规范袁姓坏蛋(袁阎王),认真监管很高的红叶树木、胡杨树、黄李树;于是,便结余了诸如白毛快马、雷龙样的石头闹钟、健康的牛、上万张柔软的熊皮和金饭碗炊具等巨额财富”。
怎么样,这是一个具有历史穿越情节,且基本完整的故事吧!
(1.2)200字案例
若取《2011年中国最新姓氏排名[1]》中的人数最多的前200个姓氏(由于不能分割,复姓“欧阳”算做一个字),重新排列后,也可形成的一个完整故事如下(而且该故事的主题仍然是“春秋战国的诸侯强国致富故事,甚至好像更生动有趣”):
韩、赵、郑、蔡、陈、吴、谭、邓、沈、薛、徐、赖、罗、许、曾、陆、廖、陶、鲁、齐、黎、温、倪、邢、申、纪、甘、舒、单、卫、费侯[卜解]周易,俞[武]孔孟,[戴向]萧何,[尚]项庄,霍[安]刘季,[欧]简喻殷曲;[杜]夏、秦、魏、唐、宋史文;常于江苏、吕梁、邱、宁、祁、邬、阮岳、阳谷关、兰田、崔、潘、邵郭(邹路段),辛[施]姜苗,毕[查]焦芦柴柯,尤[管]彭洪汪汤,耿[傅]姚丁,[谢]蒋贾,[贺]郝孙,[任]覃尹,冉[龚]翟曹,[莫左]阎王,[程范]蒙党,颜[顾]裴童,聂[祝](欧阳)詹翁吉,[涂]蓝袁房、包车,[靳]游钱,[闵]凌樊,[屈]蒲滕,严[董]高叶林、胡杨、黄梅李、葛柳、朱乔;方[成]盛时华章,[司]庞伍骆连符,[余]白毛冯马、雷龙石钟、康牟牛、万张熊韦、金卢、饶鲍。
此例中仍然用方括号[X]表明该字(词)取其动词含义,用(欧阳)表明这个特别的不可分割的姓氏。现把此处的200字故事细细解释如下:“春秋战国时期部分国家(韩、赵、郑、蔡、陈、吴、谭、邓、沈、薛、徐、赖、罗、许、曾、陆、廖、陶、鲁、齐、黎、温、倪、邢、申、纪、甘、舒、单、卫、费)的诸侯国王们,用占卜解析周易,诚意继承孔孟之道,真心拥戴萧何,崇尚项庄,迅速安定刘邦,歌唱简单明捷的殷曲;杜撰历史文献(夏、秦、魏、唐、宋史文);经常在多地(江苏、吕梁、邱(邱县)、宁(南京)、祁(祁县)、邬(山西介休县)、阮岳(阮山)、阳谷关、兰田、崔(章丘县西北)、潘(荥阳县)、邵郭(邹路段))辛辛苦苦地施种生姜苗,彻底检查烧焦后的芦干和柴棍等,尤其认真管理洪水汹涌澎湃的泥塘,耿直地辅导姚姓士兵,感谢蒋姓商人,庆贺郝家子孙,任命覃姓府尹,徐徐地尊重翟姓总务长,从不冒犯阎王老爷,按程序规范相关党派(蒙党),笑容可掬地照顾裴姓小童,附耳向喜欢唠唠叨叨的欧阳大爷祝福吉祥,把袁家的房子和包车涂成蓝色,连闲钱也要珍惜,忧虑凌乱不堪的笼子,把蒲滕卷起来(放好),认真监管很高叶木林、胡杨树、黄梅李树、盘根错节的柳树、红色的乔木等;于是,便成就了盛时华章,司掌了庞大的骆驼连军队指挥兵符,结余了诸如白毛快马、雷龙样的石头闹钟、健康的小牛、上万张柔软的熊皮、金饭碗和众多的鲍鱼等巨额财富”
由于上面两例仅仅是我研究“机器写千字文”的附属成果,所以,我不打算在此花费时间把“百家姓”中前300姓氏(或更多的姓氏)编写成有故事的文章了。欢迎有兴趣的读者自己去重新排列吧,当然,我们不鼓励仅仅依靠人工去进行蛮力排列!
不过,今后一旦在“计算机写千字文”的算法研究方面有了突破,我将首先以“百家姓”为目标,把“百家姓”写活,毕竟百家姓中的姓氏是最普遍的千字文“字库”(当然,复姓被当做一个“字”来处理)。
(二)计算机写千字文初探
所谓“千字文”[2]是由常见汉字写成的文章,其最大特点是:每个汉字在文章中最多只能出现一次!
历史上,第一篇千字文是南朝梁武帝时期(502—549年),员外散骑侍郎周兴嗣奉皇命从王羲之书法中选取1000个字,编纂成文。此文的开篇部分是:“天地玄黄,宇宙洪荒,日月盈昃,辰宿列张;寒来暑往,秋收冬藏,闰馀成岁, 律吕调阳;云腾致雨,露结为霜,金生丽水,玉出昆冈;….”。
实在佩服古人,不知道他们当初到底是怎么撰写出来的如此奇文!
但是,如果借助计算机,那么,千字文的创作,从理论上来说,是完全可行的(当然,目前就实际情况来说还非常困难,远未解决)。实际上,基本思路是[3]:
第一步:从待用字库中遍历选出一些字(比如,上节中的“百家姓”中的姓氏),组成字串,然后,判断是否为“词”。若是“词”,那么,将此“词”放入一个“词库”,同时,将此“词”中的字,从原“字库”中删除;若不是“词”,那么,重新从“字库”中选取字串,重复上述过程,一直到“字库”中的字不再组成“词”为止。(这一步对计算机来说,很容易)
第二步:遍历排列“词库”中的“词”和“字库”中的“字”,并判断所形成的字串是否为“人话”[4]。若是“人话”,那么,将此句放入一个“句库”,同时,将此句中的字,从原“字库”中删除;若不是“人话”,那么,重新从“词库”和“字库”中选取元素串,重复上述过程,一直到“字库”中的字全部被用完为止。(如何判断某串字是否为“人话”是最关键和最困难的课题,目前还没有实质性的突破,不过,在一些特殊情况下,完成可能获得实用的结果)
第三步:在“字不重复出现”的条件下,将上述第二步中获得的“句子”进行遍历排列,并判断所获得的段落是否“人话”,如果是“人话”,那么,“千字文”便完成了,否则,再以乱序重复上述各步骤。(虽然,“判断一个段落是否为人话”比“判断一个句子是否为人话”更难,但是,如果字数不太多,那么,仅仅依靠人工,第三步的工作量也不会太大。而且,解决第三步的基础也是第二步的“人话判断”难题。)
当然,目前还不知道哪些“字库”能够被穷尽地写出相应的千字文,即,文章写完后,“字库”变空。不过,这不是关键问题,毕竟,实在不行,可把多余的“字”删除就是了。
实际上,本文第一节中的那两篇春秋战国王侯强国致富“百字文”就是按上述思路完成的,只不过是靠人工来判断是否是“人话”。相信,按照同样的思路和步骤,仅仅依靠人工,就可以把“百家姓[1]”中更多“姓氏库”重新排列成一篇有故事的文章(放弃音韵要求)。
(四)参考文献
[1] 2011年中国最新姓氏排名,http://www.douban.com/group/topic/22595209/
[2]百度百科,千字文简介,http://baike.baidu.com/view/23443.htm
[3]杨义先,技术文学初探(1),http://blog.sciencenet.cn/blog-453322-620434.html
[4]晋耀红著,HNC(概念层次网络)语言理解技术及其应用,科学出版社,2006年4月,第一版,北京,第1次印刷。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 21:42
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社