从检索到分析 ——计算机知识服务的时代 李铎 (北京大学中文系) 检索是使用数字化资源最基本的功能。检索的原理是,用户输入一字符串,计算机在数字化资源(如网页、WORD文文件、数据库等等)中以匹配的方式来搜索,如果匹配上,就可以显示出来,为我们的工作提供了极大的便利。但是,问题也随之而来,比如,我输入的是简体,计算机能否找到繁体甚至异体、通假字。从理论上讲是不可以的,但是很多程序都能做到这一点,这就要求程序员先做个对照表放到程序的内部,计算机读到一个字,就先到这个表中查,将该字可能有的繁简、异体、异写、通假的形式也都作为它搜索的对象,每个都查一遍对计算机来说不算什么难事,计算机搜一个字,是以毫秒为单位的,一个六百万字的文件,如二十册的《资治通鉴》,并列查十几个字,也就是搜上十几遍,一般不会超过一秒钟。如果这表的质量高,匹配度就高,像《四库全书》、《四部丛刊》这些定位在为学者服务的系统,都做了比较精的表。像百度、谷歌等网络搜索引擎,为了照顾速度,表就很简单,往往会在匹配方面失真。 进一步,我们除了要搜索明确单一的字符串,还有可能要搜索带有搭配关系的,如:我想找“李白”,同页中同时还有“杜甫”的,复杂一点的,我搜索“李白”和“杜甫”或“王维”而不要含有“白居易”字样的数据,这也是比较容易实现的,需要加上逻辑运算符,即“AND、OR、NOT”等。从并列的检索来看,我们仍以“李白AND杜甫”为例,计算机等于是先查一遍“李白”,在含有“李白”的语料中再找“杜甫”,筛选出来就是用户所需要的东西;如果是“李白OR杜甫”,则是先从全部文献中检一遍“李白”,再从全部文献中检一遍“杜甫”,两者都交给你;如果是“李白NOT杜甫”,则是先检一遍“李白”,从检到“李白”的语料中检“杜甫”,检到的语料扔掉,只保留没有“杜甫”的。而这个过程是计算机自己的事,用户看不到,会认为该检索非常复杂。所以不论加不加逻辑运算符,不论加多少个逻辑运算符,不论要不要繁简异体通假匹配,这都是“一一对应”的检索,是最基本的检索。过去计算机界将加有逻辑运算符的检索称为“高级检索”,其实并没有高级到哪去,无非是多检几遍而已。 再进一步,我并没有具体的字符串,而是想让计算机找到或者标记出相应的语料。如:我们读《左传》时,觉得里面引用《诗经》的句子不少,我想整体看一看。看看引了多少处,风、雅、颂分别占多大比例。这就复杂得多了,可是,复杂的仅是检索者的准备工作,而对计算机而言,仍然是最基本的检索。检索者需要先按照一定的格式整理好一批语料,即《诗经》的文本,还要包括异文,然后交给计算机,计算机逐句读取,每句就是一个字符串,并在《左传》中扫描,匹配的标记出来。穷尽后,再读下一句。我们还可以再配上“繁简异体字表”等等。很快,计算机会告诉你结果,《左传》中共引用了多少句诗经,不过像“日有食之”算不算引诗,你当然可以自己定。 接下来,我们又向计算机提出更高的要求,如《全宋诗》有二十五万余首,我想知道,其中有多少是格律诗,格律诗中,有多少七言律诗,七言律诗中又有多少首句平起入平韵的诗。当然,计算机程序员告诉你,这实现起来并不难,你只要将这些诗全都标记出来就行了,这话听起来真有点像“给我个支点,我会撬起地球”。问题是,我不知道支点,也不知道哪些诗是格律诗。《全宋诗》在整理的时候并没有标记哪些是格律诗,哪些是古体诗。都计算机时代了,能不能让计算机标记?可是计算机不知道什么样的诗是格律诗,这我可以告诉它,如首句平起入平韵的七言诗首句是“平平仄仄仄平平”,可是计算机还要知道哪些是平声字,哪些是仄声字,这问题也简单,做个表,将《广韵》、《佩文韵府》等相关韵书列进去。第一句定了,第二句就应当是“仄仄平平仄仄平”,接下来根据粘对的规律,一句句排下来。那么,我现在给计算机的已经不是“字符串”了,它也不是按照“一一对应”的规则来搜索。我给它的是一个模型,计算机根据这模型来找“模式匹配”的项。与该模式一致的,就是格律诗。需要多少个模型,穷尽全部格律形式,也不过二十八种。那就制作二十八种模型,当然要考虑到拗救,考虑到一三五不论,考虑到虽然二四六分明,但是诗人偶尔会有那么一两个字实在是照顾不到的情况等。最难解决的是多音字问题,如“相”, “相思”中是平声,而“宰相”中是仄声。等等,各种复杂因素都考虑到,而且也都做出了相应的解决方案。计算机便可以自动标记出《全宋诗》中十七万二千二百三十四首格律诗。 这种检索已经不是一一对应的检索,一一对应,就是“点对点”,你输入的一个“字”(字符串),就是一个点,计算机根据这个点来搜索,找到与之相对应的点来。复杂的加了逻辑运算的检索,只不过需要多检索几次不同的点。而我们现在标记格律诗,计算机不是按照我输入的“字”来检索的,而且按照我的指令,不用字符串的匹配形式,用类似“膜”的模型来过滤。每一种格律诗模型,就像是一层膜,用这个模型去和语料匹配,能通过的,是格律诗,否则是古体诗。所以,它是“面对面”的检索。 这二十八种静态的“膜”是我们事先制作好的,交给计算机,它依次用之过滤。可是有些诗,诗的作者在诗题上明确注明是什么什么“歌”什么什么“行”什么什么“引”,计算机可以不管它,只要通过“膜”的,就是格律诗,不管你诗人自己怎么说。当然,这个规则也可以改,无非再加一个条件:凡诗题尾为“歌、行、引”的或全题与古乐府诗题相同的,均不做格律诗对待。因为我更相信计算机而不相信诗人,所以就没有加这个限制。 《全宋诗》的编纂工程浩大,历时多年。同一首诗,在不同的册卷、不同的诗人名下再出现(学术界称之为“重出”)的现象难免,有的是古人遗留下来的错误,在诗人甲的集子里有,在诗人乙的集子又出现,甚至在诗人丙的集子里还有。当然也有编辑失误的地方,如欧阳修的《送谢学士归阙》(《全宋诗》第六册,3670页),一百多页后,以《送学士三丈》为题再次出现。再者就是,有署名诗人的诗作与“无名氏”的重出,如第五十五册高翥的《看弄潮回》,在第七一册以《看弄潮》为题挂在无名氏的名下。 (责任编辑:admin) |