索引子系统的设计与实现

更新时间:2023-05-27 14:16:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

索引子系统的设计与实现

CnX索引子系统的设计与实现

学 院 计算机科学与技术

专 业 计算机科学与技术

年 级姓 名

指导教师

2008年6月15日

索引子系统的设计与实现

摘 要

CnX索引子系统是一个完整的中文XML文献倒排索引的构建系统,它主要由中英文语义处理模块、倒排索引构建模块和Okapi BM25概率模型评分模块组成,论文设计并实现了基于C/S架构的多线程CnX索引子系统。

与普通的无结构文本文档不同,XML文档是一种半结构化的文档,在构建XML文档倒排索引的时候要考虑在倒排索引中体现XML的结构信息。XML文档的结构就是一棵树,它由很多的结点构成,它的结点又可以分为结构(内部)结点和叶子结点,通常认为只有叶子结点才会包含文本信息。对于每个叶子结点所包含的文本信息,可以跟检索平面文件的方式一样——直接进行简单的全文检索。

由于CnX索引子系统需要支持中文检索,所以在进行创建索引的过程中,先要对中文语句进行分词处理。然后根据XML文档的结构信息构建tag-term的语词对,在内存中调整XML树的结构,并形成一个虚拟的文档树对象。接下来通过运用前后序遍历算法处理这棵树,将XML文档的倒排索引存储到数据库中。最终在完成基本索引的创建之后,再使用Okapi BM25算法对所有索引进行评分,以供上层的核心查询程序使用。

CnX索引子系统是一个完整XML信息检索系统的基础,对于XML信息检索系统的整体构建有着很重要的作用。

关键词:XML;中文;倒排索引;信息检索(IR)

索引子系统的设计与实现

ABSTRACT

CnX indexing subsystem is a complete indexing constructor of Chinese XML data. It is mainly composed by a Chinese-English semantic processing module, an inverted index building module and a scoring module which uses Okapi BM25 algorithm that is a kind of probabilistic model. This paper gives a design solution and an implement solution of the CnX,which is based on C/S structure of a multi-threaded subsystem. This paper starts from the modern information retrieval technology, and considers the ways of retrievaling XML data at first, and then begin to discuss the demand analysis,the ways of design and implementing of CnX. XML is a kind of semi-structured data, how to store the structure information of a XML document must be considered when building the inverted index. The structure of a XML document just likes a tree of data structure, which is builded up by many element nodes. And the nodes it has also can be divided into inner nodes and leaf nodes, usually, the leaf nodes are considered that contain text content, and the inner nodes usually not. For the text of the leaf nodes, it can be retrievaled by a ways of full-text content, just like retrievaling a plain text file.

As CnX focuses on the Chinese indexing, the Chinese sentences need lexically analyzing at first between the full-text content retrievaling, and then builds the pair of tag-term according to the structure information of the XML document. Before building a virtual document object of a XML document, the structure of the memory tree must be adjusted to a conscious state. Through repeated handling this tree,the inverted index is stored into a database system at last. After building the index completely,CnX will score the stored index by Okapi BM 25 algorithm for the top of the core procedures to use.

CnX index subsystem is a complete XML based information retrieval system, it plays an important role in building the whole information retrieval system.

Key words:XML;Chinese Words;Inverted Index;Information Retrieval (IR)

索引子系统的设计与实现

目 录

第一章 绪论.......................................................................1

1.1 XML信息检索技术.............................................................1

1.1.1 XML文档的重要性......................................................1

1.1.2 XML信息检索的概念..................................................2

1.1.3 XML信息检索技术的研究现状..................................3

1.2 XML信息检索系统.............................................................4

1.2.1 XML信息检索系统的概念..........................................4

1.2.2 XML信息检索的基本流程..........................................4

1.2.3 中文XML信息检索系统CnX.....................................5

1.3 CnX索引子系统...................................................................5

1.4 论文的研究内容和意义.......................................................6

1.5 论文的组织结构...................................................................7

第二章 CnX索引子系统的需求分析...............................8

2.1 总体需求...............................................................................8

2.2 倒排索引结构需求............................................................10

第三章 CnX索引子系统的设计.....................................13

3.1 开发和运行环境................................................................13

3.1.1 系统开发环境..............................................................13

3.1.2 系统运行环境..............................................................13

3.2 总体架构设计....................................................................14

索引子系统的设计与实现

3.2.1 自顶向下的设计..........................................................14

3.2.2 功能模块的设计..........................................................17

3.3 其它的设计........................................................................19

第四章 CnX索引子系统的实现.....................................21

4.1 人机交互接口的实现........................................................21

4.1.1 参数的设置(输入)......................................................21

4.1.2 获取程序运行状态(输出)..........................................22

4.2 关键技术............................................................................22

4.2.1 面向对象的处理方法..................................................23

4.2.2 数据存储......................................................................25

4.2.3 语词处理......................................................................26

4.3 功能模块的实现................................................................27

4.3.1 构建倒排文档模块的实现..........................................27

4.3.2 全局语词对评分模块的实现......................................29

4.3.3 数据存储模块的实现..................................................31

4.4 系统实现的特点................................................................31

第五章 结论.....................................................................32

参考文献.................................................................................33 外文资料

中文译文

致 谢

索引子系统的设计与实现

第一章 绪论

XML文档是一种半结构化数据格式文档,随着XML技术的发展,它已经成为了很多场合下数据交换和数据存储事实上的标准。同时,由于互联网的迅速发展和XML技术的广泛应用,使得互联网中XML文档格式的数据变得越来越多,这种数据量的日益剧增,加大了人们在互联网上查找有用信息的难度。近几年来,由于我国信息技术的高速发展以及互联网在我国的快速普及,中文XML文档信息也变得越来越丰富,所以就需要一个中文信息检索系统来帮助人们准确且高效地检索有用的中文信息,CnX就是这样的一个中文信息检索系统。索引的构建对于任何一个信息检索系统都是至关重要的,CnX同样也不例外。本论文主要的工作就是设计并实现CnX的索引子系统,为CnX信息检索系统的构建做必要的准备。

1.1 XML信息检索技术

XML文献集[1]就是一组或者若干组具有相同或相似结构的XML文档的集合,而XML信息检索的目的就是为了帮助用户在这些XML文献集中方便而快速地检索出对用户有用或相关的信息。XML信息检索技术作为现代信息检索技术中的一个分支,它的重点依然是信息检索,而不是数据检索,因此确定信息的相关性同样是XML信息检索的核心。

1.1.1 XML文档的重要性

XML是Extensible Markup Language(可扩展性标识语言)的简称,和通常所见的HTML一样,它也是一种“标记”语言。XML牢牢植根于SGML[2],由于SGML本身因为太复杂难以移植到web上,所以就产生了一个该语言的缩略版。推出它的目的是为了能够在网络上按照现在HTML所利用的方法利用、接受和处理通用SGML。XML的设计宗旨是让网络应用程序的执行更容易,并且增强SGML和HTML的互动操作性能。XML是一个严格符合SGML编写格式的被应用程序所利用的文档格式。XML提供了一种结构化的数据显示,这种结构化的数据功能强大且易于使用。XML不像HTML一样使用预定义的标签,而是允许设计者自行创建自己的元素及其标签,使得这些元素的标签既能够容易被人阅读,又能方便被机器阅读。

XML通过自身的结构来描述文档的信息,它是一种创建可相互交换的结构化文档的方法[3]。当一个数据集中(某个会议的论文集)的所有文档都使用XML来编制时,可以定义DTD或者模式来创建XML文档,这样使得这个数据集中的所有文档都成为带有结构信息的文档——XML文档。XML文档的优点在于它自身是一种带有自描述标签树形结构文档,这完全不同于关系数据模型。正是因为XML文档的这种树结构,使得人们能够用一种更加自然的方式去直接管理数

索引子系统的设计与实现

据,而不是完全依赖于某个关系数据库软件来管理一些简单的数据。

每一个XML文档都是一棵树,它由很多的结点构成,而每一个结点有包含一个标签和对应的内容以及相对应的属性。在具体的处理过程当中,对于当前结点的属性,可以把它当作当前结点的子结点来看待的,这样这棵树就有了统一的结构,同时也不会破坏原XML文档的信息。对于树中的节点的内容,它要么是空,要么就是一段文字。通常来说,非叶子结点只是包含子结点和自己的属性(此时每个属性也作为自己的子叶子结点),而只有叶子结点才拥有文本内容。但是对于既包含文本信息又包含子结点的结点和只包含纯文本的结点,在XML文档中也是存在。

XML文档的每个结点都包含一定的文本信息,所以对于每一个结点的内容来说都可以称是全文本模型,同时可以这样定义一个XML元素(结点)的全文本内容:一个元素(结点)的全文本内容包括它所有子孙结点的全文本内容。这种统计思想也是源于XML文档的树型结构。

1.1.2 XML信息检索的概念

XML信息检索就是为了帮助用户在特定的XML文献集中准确且高效的地找出对用户有用或相关的信息,确定信息的相关性是XML信息检索的核心。在讨论XML信息检索之前,先介绍一下现代信息检索技术。

在过去的几十年中,信息检索领域已经得到了很大的发展,并且已经超越了它标记文本和在某一集合中检索出有用文献的最初目标。现代信息检索技术的研究包括建模、文献的分类和归类、系统构建、用户界面、数据可视化、信息过滤和查询语言等。

信息检索的核心是确定数据相关性,这不同于数据检索。信息检索的行为受到用户任务和检索系统所采用的文献逻辑视图的直接影响。用户的检索任务基本分为两种类型:信息或数据的检索和浏览,而往往用户的这两种类型的任务又是联系在一起的,如图1-1所示。

图1-1 用户任务间的联系

[1]

索引子系统的设计与实现

现代计算机的出现使得采用完整的语词集合表示文献变为可能,在信息检索系统中可以使用全文本逻辑视图。然而对于规模很大的集合来说,采用全文本逻辑视图将会变得不是很合理,于是可以采用排除停用词、提取词干、归类同义词近义词和提取句子语义,同时可以采用压缩技术,实现逻辑视图从全文本到索引词集合的转移。

以计算机为中心和以人为中心是研究现代信息检索问题的两个基本观点,但是索引却是每个现代信息检索系统的核心。信息检索涉及到的其它实践问题有很多,比如说扫描、光学字符识别和跨语言检索等。

XML信息检索作为现代信息检索中很重要的一个分支,现代信息技术的发展在很大的程度上推动了XML信息检索技术的发展。XML信息检索大量运用现代信息检索技术所取得的成果,并结合XML自身的结构特性,在XML数据量日益剧增的背景下,XML信息检索得到了很大的发展。

1.1.3 XML信息检索技术的研究现状

Web的广泛使用已经使得它成为了人类知识和文明的全球存储库,这个存储库史无前例的允许用户在无限的空间中实现思想和信息的共享,因此这个巨型知识存储库将会以一个非常快的速度无限增长。由于信息量的巨大、信息的类别多种多样,再加上Web自身结构的问题,使得人们很难在Web中检索出自己想要的信息。对于XML信息检索来说,关键问题还在于如何建模、标引并检索,这些关键的问题目前都是研究的热点。关于XML信息检索,国外由IEEE Computer Society赞助的INEX从2002年起,每年都要举办一次。

XML信息检索的理论研究已经非常成熟,国外高水平论文非常之多,市场上存在的产品也非常丰富,如基于关键字查询的Google,Yahoo!和baidu等。XML技术也发展得非常健全,WEB上的很多数据都已经以XML的结构方式进行存储,如维基百科的海量数据,同时,维基百科也是使用关键字来检索XML文献集的。

XML文档不同于简单的平面文档,对于平面文档,可以直接对其进行全文检索,建立倒排索引文档,然后根据某种或某几种算法进行关键字检索。但是对于XML文档来说,应该怎样构建带有结构信息的倒排索引文档呢?又能不能扩展查询方式,而不限于关键字查询呢(比如使用定义严格的查询语句)?信息检索本身就具有模糊性,那么又应该怎样利用XML的结构信息来提高检索结果的准确率呢?目前有很多人都在关注这些问题,国内外也已经取得了一些XML信息检索技术的成果,基于XML的信息检索系统也已有原型,例如国外的Max-Planck信息研究所的TopX[4]和国内的中国人民大学WAMDM实验室的OrientX[5]等。在中文环境中研究XML信息检索是完全符合中文XML数据日益剧增的事实的,改善中文XML信息检索的需求也越来越受到更多的关注。

索引子系统的设计与实现

1.2 XML信息检索系统

XML信息检索系统就是应用XML信息检索技术,并结合其它的软件工程的方法和思想构建的信息检索系统软件,人们不必了解它的具体工作原理,而是直接通过合理使用它,就可以在特定的XML文献集中找到有用或相关的信息。本论文介绍的CnX就是这样的一个XML信息检索系统。

1.2.1 XML信息检索系统的概念

XML信息检索系统是一套完整的软件系统。它主要的功能包括XML文献集的倒排索引文档的构建和利用倒排索引文档,并使用适当的检索方法,根据用户的需求,帮助用户在特定的XML文献集中高效而准确的检索出有用或相关的信息。

1.2.2 XML信息检索的基本流程

XML信息检索系统使用Top-k[2]查询方法,并且有一定的查询扩展能力。XML信息检索的主体流程与一般的信息检索流程仍然大体相似,只是会在一些细节的地方侧重不同,比如说XML文档的倒排索引的数据模型应该是怎样的,数据结构应该如何构建以及如何解决查询处理的相关问题等。

XML结构上的优势使得它可以比较容易的支持自己的检索的语言,而不仅只是使用在检索框中输入几个关键字的方式进行检索。下面用XML信息检索系统的结构图1-2来说明XML信息检索的基本流程。

图1-2 XML信息检索一般流程

在图1-2中可以看到,XML信息检索需要先根据一定的数据模型构建合理的倒排索引,然后用户输入自己的查询描述,系统将会预先处理这些描述,然后根据一定的算法对检索结果进行排序,或者是根据排序得出结果,其中也可以加

索引子系统的设计与实现

入用户的反馈环节。

1.2.3 中文XML信息检索系统CnX

本论文侧重优化中文XML文献集的检索系统(索引部分)的设计与实现,CnX就是这样的一个侧重于中文的XML信息检索系统。

由于中文和英文(或其他西欧语言)的信息检索有着很大的不同,英文语句中的单词与单词之间都有空格,而中文却没有这个有利于构建倒排索引的便利条件,那么CnX如何对中文语句进行分词呢?这方面中科院的基于多层隐马尔可夫模型的汉语词法分析系统ICTCLAS[6]为CnX提供了很好的解决方法。同时为了提高索引的效率,CnX还对自然语句进行必要的语义处理,降低索引的冗余性。关于语义的处理,目前也有很多人正在研究这方面的课题,语义的处理将会提高索引的质量,并改善用户的信息检索体验等。

1.3 CnX索引子系统

XML信息检索系统CnX与TopX有着很深的渊源,CnX使用了很多TopX里XML信息检索的思想,保留了TopX构建XML文档倒排索引的数据模型,然后使用了面向对象技术加以重新实现,并且还实现了简单的语义处理和中文索引功能等。

CnX索引子系统是CnX信息检索系统的重要组成部分,其主要功能就是构建XML文档的倒排索引,并使用Okapi BM25算法[7]对倒排索引进行评分,以供上层核心查询程序使用。它的主要处理过程包括:解析中文XML文档,将XML文档映射成具有统一结构的树,构建XML文档的倒排索引和对倒排索引中语词对(tag-term)、文档结点元素以及文档进行全局评分等(评分结果也存储在数据库中,成为索引的一部分)。

系统分为以下几个模块,如图1-3所示。

图1-3 CnX索引子系统的逻辑结构

CnX索引子系统采用C/S架构,将倒排索引文档存储在数据库中,数据存

索引子系统的设计与实现

储采用持久化技术。其中倒排文档的构建是该系统的关键部分,这个倒排索引文档包含了XML的结构信息,除了去掉了那些没有语义的词和用户指定的停用词,整个倒排索引几乎是原文献的一个异构的备份。CnX索引子系统在分析处理并完成倒排索引的构建后,可根据用户的需求对索引中语词对进行评分,为以后的检索做必要的准备。其中评分采用的是Okapi BM25概率评分模型,通过顺序扫描索引列表快速计算各个项的分数。系统采用C/S架构,这样有利于系统的分层部署,又由于系统的数据存储完全使用了持久化技术,这样就更易于把系统部署到不同的数据库系统上。同时,数据库系统在该系统中仅仅承担着数据存储的任务,系统不依赖于数据库系统。数据存储部分可以由用户另外单独实现,也可以实现持久化数据存储接口,将最后的索引数据以一个合理的方式直接保存在文件系统之上,这样系统将会具有更强的独立性。

该子系统采用多线程并行设计,人机交互接口良好。多核时代的到来,大大提高了多线程并行程序设计的重要性,本系统也采用多线程设计,可在界面上设置同时运行的最大线程数,每个单独线程将会处理一个XML文档,但是多线程并行访问全局索引的时候,就必须要考虑到线程间的资源共享和线程间的同步问题。通过锁的机制来控制关键区,以保证关键区在每个时刻都只有一个线程在访问,用户不必关心具体是哪个XML文档正在被处理,当前被处理的所有文档的内容都会实时的保存的各自的线程空间里。所有线程处理完毕,程序可以显示完成状态等

1.4 论文的研究内容和意义

本论文主要探讨了如何在XML文献集上高效而准确地检索信息,根据这个总体的需求,合理应用了信息检索领域里的相关理论和方法,设计并实现了一个XML信息检索的索引子系统。该索引子系统是整个检索系统的基础,对于检索系统的整体构建有着很重要的意义。

研究内容

本论文从构建CnX信息检索系统的大局出发,侧重其索引子系统的设

计与实现。XML信息检索系统主要分为倒排索引的构建和信息的检索,而本论文侧重的则是构建XML文献的倒排索引,通过学习现代信息检索各方面的知识,并结合XML技术发展的现状,本论文研究的内容主要包括:如何高效构建XML文献的倒排文档,如何建模、标引并检索,如何高效利用XML的树型结构,采用何种评分模型最有利于XML文献的检索等;另外本论文同时注重系统本身的构建方法,在设计和实现过程中,使用了一些面向对象的技术,如Java、JNI、持久化技术、反射技术等。本论文针还对中文XML文献集的检索做了不少的研究工作,主要包括如何提高中文的分词的准确率和效率和如何区分中英文词干的提取等等。

索引子系统的设计与实现

研究意义

中文XML文献集的数据量越来越大,人们在这些文献集中查找信息变

得越来越困难,而CnX旨在帮助人们解决这个困难,所以本论文的研究具有一定的实际意义。同时,本论文在研究的过程中,结合了现代信息检索的理论和XML文档的结构特征以及中文的特点,开展了中文XML信息检索的研究工作,并取得了一些成果,为下一步的XML信息检索打下了很好的基础,因此又具有一定的理论意义。

1.5 论文的组织结构

第一章介绍了XML信息检索技术的相关概念和研究现状,简要地描述了XML信息检索系统CnX的索引子系统的体系结构,说明了论文的研究内容和研究意义。

第二章主要分析了CnX索引子系统的需求。

第三章在理解第二章需求的基础上,给出了CnX索引子系统具体的设计方案。

第四章根据第三章CnX索引子系统的设计,详细阐述CnX索引子系统的实现中使用到的技术和方法。

最后一章,即第五章,对本文的工作做出总结,并指出未来可做的工作。

索引子系统的设计与实现

第二章 CnX索引子系统的需求分析

2.1 总体需求

CnX索引子系统需要实现的基本功能就是能够根据一定的索引数据模型构建中文XML文献的倒排索引,并能够根据Okapi BM25算法对索引进行评分。其中在构建中文XML文献倒排索引的时候,需要简单处理中文语句的语义和提取英文单词的词根,并通过添加用户词典或停用词过滤技术提高XML文献倒排索引的质量。系统还应该能够并行处理多个XML文档,提高处理效率,并能实时向用户反馈处理进程信息。

总体需求应该分为以下几个部分:

①人机交互接口(程序的用户界面):此部分的设计应该符合界面程序的标准,满足用户的需求,符合用户使用其它应用程序的习惯。

程序主要使用Java实现,所以界面可以采用Java的Swing[8]来实现,另外要求调用本地画图接口,实现本地程序风格,例如在Windows XP环境下的程序应产生XP风格的界面等,如图2-1和图2-2所示。

图2-1 Swing原生态风格的界面

图2-2 XP风格的界面

索引子系统的设计与实现

另外在程序运行的过程中,程序应该能够实时地反馈必要的处理信息和处理状态给用户。

②功能需求:系统能够正确处理中文XML文献集中的文档、自行定义中文分词短语词典(图2-3)和自行定义停用词词典(图2-4)。

图2-3 用户自定义分词词典

图2-4 用户自定义停用词词典

系统应该把索引的构建过程和索引的评分过程分开,使得系统既能够在构建索引之后立即评分,也能够随时对索引进行评分。对于中文分词和词干提取,系统也应该是可选的,同时,对于任意一个XML文献集,系统都能够提取其XML文档的自描述信息,以供上层查询程序使用,系统还应该能在运行的过程中随时被停止。另外,对于倒排索引的存储可以使用关系数据库,并且不能依赖于某一个关系数据库等等。

③结构需求:系统需采用C/S架构,将数据存储和数据处理分开部署到不同的设备上,系统应采用并行化设计,能够同时处理多个XML文档等。

④运行环境需求:系统应具备跨平台运行能力,应该能够非常容易的就能部署到主流的平台上,如Windows和类Unix平台上等。

索引子系统的设计与实现

2.2 倒排索引结构需求

倒排索引可以直接存储在文件系统上或者存储在数据库系统里,考虑到实现上的复杂度,可以选择将索引存储在关系数据库里,然后再利用关系数据库的功能对索引进行评分处理。所以就需要先在数据库中构建存储索引的表结构,考虑到XML文档倒排索引的特点——需要存储XML的结构信息,倒排索引结构表的需求如下(以下结构依赖于构建的XML映射树)。

表2-1 oneindex表 字段名 字段含义

path XML结点的XPath路径

bucketId 全局XPath的唯一编号

表2-2 xPath表

字段名 eid

Xpath 字段含义 全局元素唯一编号 当前元素的XPath

表2-3 documents表 字段名

did

fileId

author

title

preview

uri 字段含义 文档全局编号 文档自描述编号 文档作者 文档题目 预览内容 文件定位符

表2-4 elements表

字段名 did

tag

pre

post

lev

bucketId

cpts 字段含义 元素所属文档编号 元素名 前序遍历编号 后续遍历编号 元素(结点)所属层 结点的oneindex标识 结点语词总数

表2-5 features表

字段名

did

tag

term

字段含义 元素所属文档编号 元素(结点)名 元素包含的单个语词

索引子系统的设计与实现

pre

post

lev

bucketed

tf 前序遍历编号 后续遍历编号 元素(结点)所属层 元素oneindex标识 语词在元素中的出现频率

表2-6 terms表

字段名 did term

off

pre

post 字段含义 语词所属文档编号 语词 语词在当前元素中的位置 前序遍历编号 后序遍历编号

在构建完XML映射树后,接着就将各项信息存储到上述的各个结构当中去,下面对上述存储XML倒排索引的结构做一些简要的说明:

oneindex:这个结构存储了XML文献集的全局信息,每一个路径唯一

的结点都会有一个唯一的编号,以供全局评分使用。

xpath:整个XML文献集中所有的元素的XPath路径都存储在这个结构

里,它配合oneindex以供全局评分使用。

documents,elements,features,terms:在XML映射树中表现为documents

包含elements,elements包含terms,features描述elements的特征,于是将这种关系直接保存在了这些结构中。

通过构建以上结构,XML文献的倒排索引就可以完整的构建了,接下来就是对这些以构建的倒排索引进行评分。首先介绍定义带有标签A的结点N下的所有语词的分数表示方法:

全文语词出现频率,ftf(t,n),即语词t在结点n下的所有文本中出现的

总次数。

标签出现频率,NA,即A为结点N的标签,标签为A的结点在整个文

集中出现的次数。

元素出现频率,efA(t),即标签为A,并且包含语词t的结点在整个文集中

出现的次数。

下面考虑如何计算A//“t1,t2,……,tm”的分数,其中A为标签名,“t1,t2,……,tm”表示可能在标签为A的子树中出现的语词。为了避免短元素里的少数语词的高频率问题,这里使用比较高级的Okapi BM25评分模型(源于文本文档的概率检索模型),以下是该模型的评分计算公式:

score(n,//A[t1,t2,……,tm]) = ∑ N efA(ti)+0.5 (k1+1)ftf(t1,n) log A (2-1) K+ftf(t,n)ef(t)+0.5i=11Ai m

索引子系统的设计与实现

其中: ∑t∈nftf(t,n)K=k1 (1 b)+b avg∑t'ftf(t',n')n' (2-2) n为节点n下所有语词的集合,n'表示标签为A的结点。

在该子系统中,取k1为1.25,b为0.75。然后根据上述的Okapi BM25评分公式对所有文献进行全局的评分统计,最后得出每个元素(结点)的最大分数和全局语词对(tag-term)出现频率:

表2-7 elements_maxscores表

字段名

tag

maxelementscore 字段含义 名为tag的元素 最大分数

表2-8 dfvalues表

字段名

tag

term

df 字段含义 元素名 语词 语词对全局出现次数

评分是构建XML倒排索引过程中的很重要的一部分,它的构建是建立在前者(基本倒排索引)之上的,可以完全在关系数据库中完成评分的工作。到这里,XML的倒排索引就构建需求就分析完了。

索引子系统的设计与实现

第三章 CnX索引子系统的设计

3.1 开发和运行环境

这里先讨论系统的开发和运行环境。

3.1.1 系统开发环境

CnX索引子系统主体部分采用Java 2 standard标准开发,中文分词和中文语词提取模块是在中科院中文分词程序FreeICTCLAS基础上使用标准C++语言开发完成的,英文单词词根提取模块是基于snowball西欧多语言词根提取程序开发而来的,数据库部分使用了标准的SQL语言,对于XML的解析则采用了十分流行的DOM4j和对XPath完全支持的jaxen。在课题的研究以及程序开发过程中主要使用到的工具和标准如表3-1所示。

表3-1 开发环境

名称描述 具体内容

Java Release 2

ISO C++ 开发语言 ISO SQL

架构模型 C/S架构,Model 2

Microsoft Windows XP professional

开发平台 版本 2002 Service Pack 2

JDK1.6.0_03

Myeclipse6.0

Visual Studio 2005 IDE工具 Netbeans 6.0

数据库管理系统 Mysql 5.0.45

3.1.2 系统运行环境

系统使用了Client/Server(客户端/服务端)的设计架构,系统在逻辑上可以采用分层的部署方式。客户端可以部署在性能要求一般的个人PC上,但是由于客户端承担了很大一部分的运算工作,所以客户端的计算机应该尽可能的性能高点;对于服务器端,其主要的工作就索引数据的存储和评分。

索引子系统的设计与实现

图3-1 系统逻辑部署图

系统的运行应该不依赖于具体的环境,系统主体部分需要采用Java开发,并且其它部分也应该使用ANSI或ISO标准开发,保证了系统至少在代码级别上实现跨平台。

3.2 总体架构设计

3.2.1 自顶向下的设计

系统宏观主体执行流程

图3-2 CnX主体执行流程

索引子系统的设计与实现

系统的人机交互接口(参数的输入和结果的输出)

程序的图形界面采用Swing编写,并且具有宿主操作系统的风格。通过界面对象的传递,CnX索引系统可以获取所有的待处理XML文档和相应的处理参数,同时并能够实时显示处理状态,最终可供用户查看处理结果。界面的显示和XML文档的处理部分都为单独的线程,界面的实现线程主要负责参数的输入和处理状态的输出,后台的处理线程从前台接受参数,处理XML文档,然后将结果存储到数据库中去。

一个实例

下面用一个具体的例子来说明CnX索引子系统设计的基本工作原理。

CnX索引子系统作为CnX索引子系统的重要组成部分,它主要的功能就是高效的构建中文XML文献的倒排索引,并根据上层核心查询的算法要求对倒排索引进行评分,这里用一个具体的例子来说明CnX索引子系统的功能需求,假设待处理的XML文档如图所示:

图3-3 XML文档

索引子系统的设计与实现

它的数据模型如图3-4所示(其中的具体内容略)。

图3-4 XML文档树结构

其中方框表示带有属性的结点。这种原生态XML的树结构不容易进行操作,为了更好更方便的构建XML文档的倒排索引,就需要调整该树的结构,具体做法是将结点的属性映射为该结点的直接子结点,并位于所有已存在的直接子结点之后。在完成映射树的构建之后,直接进行前后序遍历更新树的信息[9],为构建倒排索引做必要的准备,完成此步后,映射树的样子如图3-5所示。

图3-5 带有冗余信息的XML结点树

本文来源:https://www.bwwdw.com/article/zob4.html

Top