轩辕春秋文化论坛 » 韦编三绝 » 论古籍整理自动化


2004-8-12 12:06 气流
信息科技在古代典籍的整理方面,经历着三个阶段。

    一是数据文献的录入。八十年代,台湾中央研究院率先录入整理重要的古代典籍。由于大陆较早使用的GB2312汉字系统仅支持6763个汉字,且不支持繁体,所以,大陆在文献的整理上仅限于现当代文学作品、大型报刊等。自96年WIN95支持CJK以来,大陆纔开始启动这方面的工作,但大多数仍处于计算器加手工作坊的阶段,即人工录入。九十年代末香港迪志公司与北京书同文公司联合开发《四库全书》,使用非特定人手写识别系统,极大的节约了人力物力。仅两年多的时间,我们就可以使用《四库全书》这部近八亿汉字的丛书了,后来书同文公司又开发了《四部丛刊》近一亿汉字的古籍数据库,目前该公司又着手《四部丛刊》的四编整理。

    二是文献的检索。一旦整理出古籍文献,它就进入了使用阶段,对于小量的文檔,就可以直接在自己的WORD中使用检索,查找需要字词,如果会使用VBA,还可以编辑引得、关联相关的数据库等等。如果是海量数据,可以使用特定的检索平台,甚至可以直接对数据库操作。还有多种的搜索引擎用来搜索互联网上的学术资源,这使古代文学、古代汉语的研究有了突破性的进展。

    三是古籍文献的自动化整理、多维数据库建设、智能分析阶段。它是在积累了一定的文本数据后的更高级的数据整理与多任务的应用开发,这一阶段的特征是,数据整理与学术研究相互促进,数据整理带有学术性,学术研究对数据库建设提出更精细的要求。也就是我们目前所处的阶段。我想以我们近期的工作及设想来说明之。

    《全宋诗》的自动化分析过程
    一、文字整理
    大陆的出版机构在九十年代初就比较广泛得使用了北大方正的排版系统,今天还有80%以上出版商仍在使用着,迄今出版了数万种图书。当初这一系统仅是为出版纸介而开发设计的,并未考虑到已输入到计算器的数据以后可以更进一步开发利用。如繁体字文献,该系统仍使用简体字内码,只是在输出照排时改变字型输出繁体字,而且此内码字库太少,亦无法适应古代文献的输出,所以北大方正又自行设计了一套扩充字库,用来补充那6763汉字,而这扩充字库未使用通用的标准系统,在内码上与后来的GBK中的繁体字完全不兼容,这在转换上造成了一定的困难,如文献中的“风B7E7”字,我们如果将之转换为繁体的“风”字(EF4C),就会发现,“风”字的数量增大了,因为在转换前,文献中已有“风(EF4C)”,相对GBK而言,它则应是字库中的“鹙”字,如果先将繁体的“风”(实际上是“鹙”字)转换为“鹙”,则与文献中另一位置的“鹙”(另外一个字)冲突,又多出了很多个“鹙”字。所以北大方正排版系统为排版而制作的数据需要经过复杂的转换过程,北京大学中文系语言学实验室开发了一套北大方正内码向GBK代码的转换系统,除人工实时造字外,基本上可以完整转换。《全宋诗》的整理便是基于这一转换系统,加人工补字来完成的。

    最初我们也曾考虑到使用录入、扫描识别等手段,但是由于当时扫描识别率较低,工作量过大,仅校对一项就要花费掉该项目的全部费用。

    二、格律诗的标注
    我们在录入整理《全唐诗》时还是使用手工作坊的方式:双机录入,单机校对。在《全唐诗》上网前,我想,我们不是一般的公司开发软件,我们应尽可能地利用我们的学术资源,在数据中融入一些商业公司无法操作的学术内容。所以,首先想到的是将《全唐诗》标注出格律来,这对我们这个项目组(我和一些研究生们)来说,是一项比较繁重的工作,由于有211项目的资助,我们还是决定人工加标识。可是,有很多作品我们无法判定其格律,所以请了袁行霈、蒋绍愚两位先生为我们的顾问,我们凡遇到无法判定的诗作就求教于这二位先生。仅此一项标注工作,就占去了《全唐诗》开发工作总量的四分之一。

    《全宋诗》有二十五万余首诗,是《全唐诗》的五倍,其格律诗的比例也远远大于《全唐诗》,如果一首一首标注,恐怕需要若干年的时间。如果使用计算器自动标注,会不会出现过大误差,我们实验性地开始此项工作。首先,我们依据《佩文韵府》建设了诗韵库,又根据诗的格律特征,依据王渔洋的《律诗定体》建设了二十八种格律诗模型库。然后,就由计算器对《全宋诗》扫描分析,使用加权重算法,使相当一部分的拗体诗(不符合二十八种格律的)也能被检索到,标识出十六万余首格律诗。经过分析对比,这种标识方法比我们原来整理唐诗时人工标注的更为准确。

    由于《佩文韵府》所定义的汉字,有太多的多音字,且分属不同韵部,尤其是同时分布在平声字和仄声字中。而在建宋诗平仄库时,由于没有宋诗的词语库(我们正在考虑建设),那么计算器在识别判断平仄时便遇到了困难,如“相”字,在“相思”词中,是平声,在“宰相”中则是仄声,如果有语词库,我们将语词权重加上,会比较容易地解决这个问题。现在的问题是:我们虽然可以根据诗的格律来判定当平当仄,可是这格律又是在建库时就要确定的,为解决这一问题,我们引入了层次分析算法,即第一步先将固定平仄的字标识出来,使用“向量空间模型”,允许有一定量的误差,做第一层的格律诗数据库,然后在第二个层面上,使用另一音韵库二次判别诗的平仄。结果定为:非格律诗,我们保留了原来多音字的信息,而格律诗,则以比较准确的形式显示诗的格律,这一做法是比较成功的,以后对语料库做深加工时,仍有必要使用这种算法。

    三、重出诗的自动提取
    台湾林枚仪教授率先使用计算器研究《全宋词》的重出问题。她对重出词的初步提取,主要是依据词的句长特征,而我们面对宋诗,则无法使用这种方法。所以我们认为使用格律诗的“向量空间模型”可以帮助解决这个问题。现在,我们提取出全部五千余首重出诗,而且这些重出诗并不是指文字完全相同,而且指达到了一定的相似度。

    四、信息检索模型的建设
    我们在1998年开发的《全唐诗检索系统》并不是单一模式的全文检索,我们使用了新西兰国家图书馆的布尔模型(Boolean Model),这一模型突破了原布尔模型检索结果的无序性,使我们在检索相关信息时,可以得到特定序列的数据,如在诗内容中输入“酒”字,同时选择“部分匹配”,返回的结果,第一首诗是李白的《月下独酌之二》“天若不爱酒,酒星不在天。地若不爱酒,地应无酒泉”这首含“酒”字最多的诗,如果使用“完全匹配”,则使用一般全文检索的规则,并返回原书顺序。这种检索方法目前在互联网上相当普遍。

    在《全宋诗》的开发中,我们需要检索出重出诗,需要标识词的格律,需要检索出内容相似的诗作,需要检索形式相近的诗作,Boolean Model已不能满足这方面需要。所以,我们参考Cornell大学Salton教授开发的“向量空间模型”(Vector Space Model),它与Boolean Model不同,它把查询项和数据库中的信息显示为检索构成的向量空间中的点。这样,我们可以通过计算向量之间的距离来判断原数据与检索项的相似度,这便是“格律诗标识”和“相似诗检索”的基础。如果达到一定的“相似度”,也就是根据向量夹角的余弦值,就可以确定这是一首重出诗或仅是一定程度上的相似诗。这一算法在宋诗的运用中比较成功,然而在未来海量的数据处理中,面对不同类型的数据,这种模型还要进一步完善。我们相信在未来唐宋诗的自动切分语词或语料库的整理中,这种模型会发挥更大的作用。

    查询扩展功能在全宋诗中的实现。依据作者检索宋诗,如果输入的是“王安石”,自然应当找到王安石的全部作品,可是如果输入“王荆公”或者“王介甫”呢?我们在作者项里加入了扩展项的查询。目前还仅限于作者,在全文检索中还没有实现这样的扩展功能,因为这需要我们扩充语词的相关内容,它的基础是建设语词库。如果扩展功能应用到全文检索,当您输入了“李白”,它同时能检索到“太白”“青莲居士”等等相关诗作。

    目前我们开发的《全宋诗检索系统》,今年九月将由北京大学出版社出版发行。我们希望以后出版的这类检索能融入更多的科研成果,有更高的学术价值。

    古籍自动化整理中的学术研究
    一、高深度的数据库建设
    现在世界各地所整理的文献从数量上看,已达到一定的规模,但是,许多文献库质量不高,而且深度不够。因此,我们下一步的工作,将把重点放到文献库的精加工上面。我们已经完成了《诗经》《楚辞》《先秦两汉魏晋南北朝诗》《乐府诗集》《全唐诗》《全宋诗》等,下一步的工作不是去开发《全明诗》《全清诗》,而是拟对宋及宋前的诗词进行深加工整理。它包括:(一)建设诗歌语词历史库,即将已有的文献做分词整理,在这方面,我们已经拟定了工作的流程及基本算法,如在分词的同时,记录保留原文献位置等信息。这样,我们对中国古代诗人诗作的研究并不是简单基于字频、用韵等,而且加上了语词特征分析及历史沿习特征分析,在建设宋诗的语词库时,关联到宋前作品,如同对用典的分析一样,这样可以推出诗歌语词的流变过程。(二)建设二十五史的人名地名关系库,这是一项极其庞大但又十分有意义的工作。(三)依据袁先生主编的中国文学史,建设“数字中国文学史”,将《中国文学史》相关的文献进行精加工整理,建成一个内容丰富的中国文学科研与教学的辅助系统。

    二、带着课题做数据
    很多文献库的整理,都有一定的商业性,所以,它所面对的是一般使用者,其功能往往是定义过的,数据本身也是封装的。我们在进一步的开发中,则是面向学术研究的,例如,我们通过对唐宋诗词的整理,我们将单独为释家、女诗人、流派、家族等建库,这样结合历史文献的研究,可以析出女性诗作的用韵、格律、字频、词频等相关曲线,可以对佛教文化对中国诗歌发展的影响进行研究,可以分析宋代家族文学兴起发展的过程,可以进一步江西诗派及其影响做更深入的分析。通过地名人名关系库,我们可以分析历代文学家在地理上的分布及发展过程,有利于研究中国文学的兴衰因素。

    在精加工数据的同时,自然会要求录入新的文献数据,我们也要将之学术化,将学术研究课题融入建库的过程中。

    三、自然语言的查询
    我们在开发《全宋诗》的查询模型时,曾考虑过使用“概率检索模型”(Probabilistic Model),而非“向量空间模型”,如果这样的话,可以让使用者使用自然语言来查询分析数据,如使用者可以输入“宋代和尚中用酒字最多的诗”。但是,后来我们认为由于诗歌的数据类型比较统一,检索要求也往往一致,数据建库者又往往是熟悉计算器的人员。所以,使用了“向量空间模型”并加了扩展功能,将底层分析过的数据二次建库,这样可以节省数据库使用者的大量时间。

    在我们目前准备开始开发的新系统《数字中国文学史》中,我们便决定使用概率检索模型,因为,该项目的数据量大,而且数据类型复杂,除文本数据外,还有大量的超文本(音频、视频文献)。如果给出一个复杂的接口,一方面很难做到适合多种需求的查询,另一方面,使用者会在学习使用该界面上耗费大量时间。我们设想,使用者在一检索对话框中输入“李白曾到过哪些地方”,就可以调出李白游踪表和地理图;输入“唐代河南有哪些著名诗人”,就可以显示出“杜甫、李贺、李商隐”等诗人;在读到《琵琶行》时,双击“琵琶”,就可以看到“琵琶”的图形,甚至听一首琵琶曲。

    目前我们所面临的难题,一是现有的数据库模型对西方语言支持度高,对中文支持度低。需要自己重新搭建适合汉语的平台,一是目前的数据库主要是面向商业管理的,在数据更新方面功能强大,而我们的数据多是静态的,需要的是查询功能的强大,这也需要自己动手开发。

    四、选择适合计算器的大型课题
    计算器进入文科研究领域后,会出现许许多多新的课题,如《全宋诗》的重出问题,可以说没有计算器,这种工作几乎是不可能的。我们利用《全宋诗》数据库查出了全部的重出诗,进一步需要将重出的诗作整理定位,依旧利用《全宋诗》的数据库可以定位约三分之一的诗作。另外考虑到使用其它数据,如《四库全书》、《四部丛刊》、二十五史等,当然也要进行大量的人工分析,手工检索大量数据,这样,我们将用一年的时间整理出一部《全宋诗重出误收诗》。

    中国古代诗歌流派分析,如江西诗派,我们将单独建设江西诗派的作家作品数据库,根据用韵、格律、字频、词频、用典等数据,画出曲线图,由此与整部全宋诗进行比较分析,确认是否存在这么一个“江西诗派”,如果是,则进一步将本诗派的每位诗人的诗作曲线与总的曲线作比较,有可能将“江西诗派”的个别诗人排除到“江西诗派”之外,进而对“江西诗派”之外的全部诗人诗作进行曲线比较,也有可能会扩大“江西诗派”的阵容。这种穷尽式的研究也是非计算器时代不可为的。

    我深信,二十一世纪,将会是一个学术硕果累累的世纪。

2004-8-12 12:11 气流
转一篇文章大家看看。

我一直觉得诸位对整理强调的方向有些问题:强调“考据”——可是事实上,以我们的学识、能力和资源,作考据现实么?为什么不抛开考据的问题,多想想从检索、注解的方向发展呢?

2004-8-12 12:20 小至
气流 兄转此帖很有启发性。
我觉得先要找“全”
在“全”的基础上再选“最佳”

这个意见和 月光光 老马 两位兄长的想法却是有一点出入,
但我的意思是,网上只要有某部古籍的电子版(仅限于txt和html),只要我们手中没有更好的版本,就收录,不管它有没有错字,因为先要找全,这样才能带动积极性。

页: [1]
查看完整版本: 论古籍整理自动化


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.