基于σ2邻接矩阵的全文数据库表达和操作方法

文档序号:6416606阅读:282来源:国知局
专利名称:基于σ2邻接矩阵的全文数据库表达和操作方法
计算机技术的发展促使人类社会进入一个崭新的时代—信息时代。信息时代最主要的特征就是信息呈指数增长的态势。据统计,过去30年来信息增长总量已经超过了在此之前历史上积累的信息总和。有人预测,大约再经过5年,即到2003年,信息总量还会翻一翻。面对如此庞大且不断膨胀的信息海洋,如何全面、准确、高效地获取所需的信息成为信息科学领域一个非常紧迫且具有挑战性的研究课题。查询信息首先必须能够对信息进行描述和表达,并提供有效的信息查询操作方法,这就是信息模型问题。
现有信息主要表现为数据和文字两种形式。其中,数据总量只占到30%以下,而文字信息却在70%以上。对于数据信息而言,许多数据模型已经得到全面、深入的研究。其中若干模型,象网状模型、层次模型和关系模型,已经具备了比较深厚的理论基础,并得到广泛应用。其它的新型数据模型,如面向对象模型,也受到广泛的研究。文本信息,或称之全文(Full Text)信息,由于其海量性、无结构性和复杂性,至今尚未找到一种普遍接受的数据模型。而近年来Internet技术的迅猛发展和日益普及,加之Web信息的指数增长和电子文档的大量发行,给全文数据库模型的研究提出更为紧迫的现实需求。
数据模型是数据表示形式及其相关操作的总称。数据表示形式恰当与否直接影响到数据操作能力和操作性能。现有几种典型全文数据库模型实例也充分说明了这一点。
全文数据库模型中最常用的是倒排文件(Inverted File)(W.B.Frakes,R.B.Yates.Information Retrieval:Data Structures & Algorithms.Prentice Hall PTR.Upper SaddleRiver,New Jersey.1992.)。倒排文件本质上是一种基于关系模型的数据表。倒排文件中的数据记录具有如下形式{li;pi1,…,pin}。
这里,li为文字符或词组,Pi1…,Pin为lj在文本库中相应的位置。这种模型主要缺点是1)当li为文字符时,索引空间耗费大于文本本身;2)当li为词组时,难于表达复杂文本信息的查询。在进行诸如前缀检索、正则表达式(regular expressior)检索、最长重复串检索和高频字串检索等时,使用该模型都会遇到较大的困难,或者说检索效率很低。
另一种较为新颖的全文数据库模型是PAT树模型。1983年Gonnet首先提出这种模型(G.Gonnet.Un-structured Data Bases or Very Efficient Text Searching.In ACM PODS.Vol.2,pp117-24,Atlanta,Ga.,1983);后来,Gonnet(G.Gonnet.PAT3.1:An Efficient TextSearching System.User’s Manual.UW Center for the New OED.University ofWaterloo.1987)、Manber和Myers(U.Manber,and G.Myers.Suffix arrays:A New Methodfor Online String Searches.in 1stACM-SIAM Symposium on Discrete Algorithms,pp.319-27,San Francisco.1990)分别于1987年和1990独立发现了PAT数组模型。Gonnet等利用该模型,并结合“牛津英文词典”计算机化项目,实现了一个具有自主版权的快速文本查询系统PATTM(H.Fawcett.A Text Searching System:PAT3.3,User’s Guide.Centerfor the New Oxford English Dictionary.University of Waterloo.1989)。而Manber和Myers则将PAT数组模型用于搜索超大规模生物基因数据库。PAT树和PAT数组模型均使用半无限串序列来表示文本,每一个半无限串(Semi-string)以开始字符的位置来标识。PAT树是一种压缩的trie树,树的每一外部节点代表一个半无限串;PAT数组是PAT树的一种约简形式,它将PAT树的内部节点全部抛弃掉,用一数组存储排序后的半无限串。PAT树和PAT数组的共同缺点是需要较高的数据库空间。PAT树至少需要3N存储空间,而PAT数组所需的存储空间至少为N(N为文本的长度)。但在查询效率上,PAT树优于PAT数组。
为了对全文数据库模型进行比较全面的功能与性能评估,有必要提出一套评价指标。根据我们多年来从事信息检索系统研究与开发的经验积累和体会,我们认为在对全文数据库模型进行比较全面、客观的评估时,考察如下几个方面的要素是非常必要的;1)领域独立性。正如传统数据库是各行各业应用的基础,全文数据库也应是各不同相关行业的应用基础,因此全文数据库模型应与领域无关。不然的话,就必须引入过多的领域特性,从而影响全文数据库的一般性和通用性。
2)时间无关性。全文数据库作为文字信息的管理系统,应可用于管理在不同历史时期,而不受不同历史时期的语言表达风格和特色的影响。
3)查询完备性。即要求文本库中所有形式上的信息均能被查询。当然,这里不要求语义上的完备性。
4)空间复杂性。由于全文数据的海量性,模型中任何能够减少数据库空间消耗的机制均可导致不可估量的实用效果。
5)查询实时性。对用户的查询作出实时响应是数据库系统的一个共同要求,它直接关系到数据库的实用性。
6)可操作性。对于各种常用的查询方式,具有方便、高效的操作可行性。
7)可维护性。全文数据库文本发生变更后,能够方便进行数据库索引结构的更新。
8)可扩展性。全文数据库的各项功能/性能指标不会因数据量的剧增而明显下降。
根据上述8项针对全文数据库模型的性能考核要求,很明显,现有的几种全文数据库模型都存在各自的局限性。全文数据库模型按索引方式可以大致分为两大类,即按字索引、按词索引。按词索引的优点是空间复杂性小,查询时间快,但领域相关性强,时间相关性强,查询不完备,操作能力弱。其余模型原则上均属于按字索引模型,其优点是领域独立性强,时间无关性强,查询完备,操作能力强,但最大的缺陷是空间复杂度高,一般均大于文本库本身的大小,这对于海量信息的全文文本来说,显然是致命的弱点。
本发明的目的在于提出一种能避免现有全文数据库模型局限性的具有领域独立性、时间无关性、较强的查询完备性、较低的空间复杂性、快速的查询响应能力和良好的可操作性、可维护性以及可扩展性的新型全文数据库的表达与操作方法。
首先介绍本发明的有关概念和设定。
我们将构成文本的基本符号单元的集合记作∑。|∑|表示基本符号单元集合的大小。若|∑|是有界的,则称∑是有限的,否则∑是无限的。若∑中每一基本符号单元l,均有一个相应的整数标识i,i表示l在∑中的位置编码,这时,记l为li。对于∑中基本符号单元li,lj,若i<j,表示在∑中li处于lj之前。这时,称基本符号单元l在∑中是有序的。具体到纯粹的中文环境下,∑相当于汉字库,包含中文文字和标点符号以及各种特殊符号等。这时的∑是一个有限集合,文字的内码相当于文字符的位置编码。
由∑中的元素构成的有限长度的符号序列称为句串(String)。特别地,不包含任何符号的句串称为空串,记作ε。若X和Y是句串,则XY称为X和Y的连接。如X、Y、Z和W均为句串,且W=XYZ,则称X为W的前缀,而称Z为W的后缀。句串中的任何连续段称为该句串的子句串。前面,X、Y和Z均为W的子句串,记作XW,YW和ZW。句串X中所有基本符号单元出现的次数的总和称为句串X的长度,记作|X|。定义1文本库一个文本库TB是由多个独立的文本(Documents)构成的;而每一文本则是多个句串连接起来构成的句串序列。如果人为地忽略文本间的空间间隔,而将整文本库看作一个文本,则文本库TB就是一个句串的序列s1s2…sn。其中si为句串,且有si=li1…lik,lij为基本文字符号单元(1≤j≤k,k=|si|)。
一般地,可以认为文本中的标点符号自然地将文本分割为一个个的句串。在讲到句串的无环化时,还将引入一个人为的句串消环符。实例1文本库TB1我们的国家,我们的人民,你们的国家,你们的人民,他们的国家,他们的人民。
这是一个包含6个句串的文本库,各句串间由“,”自然隔开。定义2 句串有向图对于任意句串S=l1l2…lk(1≤i、j≤k。当i≠j,li和lj可以相同),存在一个对应的有向图SG=<Vs,Es>。其中,Vs是以S中的不同基本文字符号单元为节点的节点集合;Es是以S中任意两个邻接文字符号为起始点的有向边集合,且每条有向边的方向由前面的文字符号指向后面的文字符。我们称这样的有向图为句串有向图。
一般情况下,句串有向图为有环的多重有向图。这是因为当句串中包含相同的基本字符单元,因而有如下情况出现1)某一基本字符单元在句串中连续出现多次,或者某一基本字符单元在句串中不同位置多次出现,则产生环;2)两个不同的基本字符单元连续出现在句串中不同位置,则产生多重有向边。因此,一般情况下,句串有向图为有环的多重有向图。实例2 句串S1家事国事天下事事事关心。
图1为该句串S1对应的有向图。显然,这是一个有环有向图。定义3 无环句串句串有向图中不存在环的句串称为无环句串。换而言之,无环句串就是任何基本字符单元在句串中至多出现一次的句串。
在后面将要提出的新文本数据库模型中,为了处理的方便,我们要求文本库中的句串皆为无环句串。很显然,无环句串有向图为只包含一条单一路的有向图。定义4 句串的无环化将一有环的句串分解为具有最少数目的无环子句串的过程称为句串无环化。操作上,句串的无环化就是将一个有环句串截为数目尽可能少的子串,使得每一子串中,同一基本字符单元至多出现一次。实例3 文本库TB2家事国事天下事事事关心,风声雨声读书声声声入耳。
无环化后,转换为家事 国事 天下 事 事事关心,风声 雨声 读书声 声 声入耳。
这里我们使用空格符来分割有环句串,这并不表示非使用空格符来分割有环句串不可。但是,总可以假定有一个分隔符存在,用于有环句串的分割。我们且抽象地称之为消环符。我们将用于分隔句串的标点符号和消环符统称为句串分隔符。定义5 无环句串文本库若文本库中所有句串均为无环句串,则称此文本库为无环句串文本库。
实际上,任何文本数据库都可转换为无环句串文本库。因为,根据定义1,文本数据库是句串的序列;而由定义4,任何有环句串均可转换无环句串,所以任何文本数据库都可转换为无环句串文本库。
在不作特别声明时,下面一概认为文本库即为无环句串文本库。定义6 文本库有向图对于文本库TB,存在一有向图TBG=<V,E>。其中,V是以构成文本库的所有基本文字符号单元为节点的节点集合;E是以文本中所有两个邻接文字符号单元为边的集合,且每条边的方向由前面的文字符号指向后面的文字符。在每条边上,标上该边对应的文字符有序对所在的句串的标号。这里,多重有向边被压缩为单重有向边,而在有向边上标注对应文字符有序对所在的所有无环句串标号的集合。标点符号和消环符在处理时有所不同。它们也作为节点存在。原则上,标点符号和消环符属于前一句串。标点符号和消环符与它的前一个文字符构成的有向边标前一句串的标号;而标点符号和消环符与后一句串的第一个文字符构成的有向边标后一句串的标号。这样有向图我们称为文本库有向图。实例4 以实例1中的文本库TB1为例建立文本有向图。
文本库TB1中包含6个无环句串,各句串间由“,”自然隔开。我们将这6个句串按先后顺序编号为1~6。其中,包含的基本文字符号单元有{我,你,他,们,人,民,国,家,“,”,“。”}。以这些基本文字符号单元为节点集,构成的有向图如图2所示。特别地,在有向图中,有向边<家,“,”>、<民,“,”>、<“,”,我>、<“,”,你>、<“,”,他>和<民,“。”>分别标注为{1,3,5}、{2,4}、{2}、{3,4}、{5,6}和{6}。定义7 文本库的∑2邻接矩阵A由于文本库对应于一个有向图,而有向图又存在相应的邻接矩阵。所以,文本库也有一个相应的邻接矩阵存在。考虑到文本库有向图中的节点为∑中元素,因此将这里的邻接矩阵称为∑2邻接矩阵。与通常意义上的邻接矩阵不同。本发明提出的文本库∑2邻接矩阵A中每一矩阵元素不是简单的0/1值,而是一个集合,也就是文本库有向图中对应的有向边上的无环句串标号集合,即
A=[aij] ……………………………(1)aij=I<li,lj>={k|sk:liljsk,}。……………………………(2)其中,aij为邻接矩阵A的元素I<li,lj>表示有向边<li,lj>上的无环句串标号集合。实例5 以实例4为例说明∑2邻接矩阵A。
根据图2所示的文本库TB1的有向图和节点向量{我,你,他,们,的,人,民,国,家,“,”,“。”},得到一个11×11的∑2邻接矩阵
其中a14=I<1,4>={1,2},a24=I<2,4>={3,4},a34=I<3,4>={5,6},a45=I<4,5>={1,2,3,4,5,6},a56=I<5,6>={2,4,6},a58=I<5,8>={1,3,5},a67=I<6,7>={2,4,6},a710=I<7,10>={2,4},a711=I<7,11>={6},a89=I<8,9>={1,3,5},a910=I<9,10>={1,3, 5},a101=I<10,1>={2},a102=I<10,2>={3,4},a103=I<10,3>={5,6},φ为空集。定义8 后继文字符集。
若x,y和z为文本字符单元,且<x,y>和<y,z>为文本有向图中的边,则z为<x,y>的后继文字符,记作Suc(<x,y>)=z。有向边<x,y>所有的后继文字符集记为S<x,y>,且S<x,y>={z|Suc(<x,y>)=z}。…………………………(3)定义9前驱文字符集。
若x,y和z为文本字符单元,且<x,y>和<y,z>为文本有向图中的边,则x为<y,z>的前驱文字符,记作Pre(<y,z>)=x。<y,z>所有的前驱文字符集记为P<y,z>,且P<y,z>={x|Pre(<y,z>)=x}。…………………………(4)定义10 文本库的扩展∑2邻接矩阵Ax定义扩展的文本库∑2邻接矩阵Ax为Ax=[axij],………………………………………………(5)axij=P.I.S。……………………………………………(6)这里,P=P<li,lj>.I=I<li,lj>,S=S<li,lj>。P.I.S表示axij由P、I和S三个集合构成,并不表示任何意义上的运算关系。定义11 扇入边与扇出边。
在文本库有向图TBG=<V,E>中,x∈V,y∈V,z∈V,且<x,y>∈E,<y,z>∈E,则称<x,y>为节点y的扇入边,<y,z>为y的扇出边。某一节点扇入边和扇出边的多少分别称作该节点的扇入度和扇出度。
根据上述定义,显然有如下结论结论1 文本库有向图TBG=<V,E>中,除起始节点(文本库的第一个文字符)和终止节点(文本库的最后一个文字符)以及句串分隔符节点外,其余节点的所有扇入边上标号集合并等于它的所有扇出边上标识号集合并。结论2 文本库有向图TBG=<V,E>中,作为句串分隔符的节点,其所有扇入边上标号增1后的集合等于它的所有扇出边上标号集合。定义12 文本库有向图的约简对于文本有向图TBG=<V,E>,若删去所有扇出度为1的节点的扇出边上所有标识,所得的有向图TBG*=(V*,E*)称为TBG的约简。
根据结论1和2,扇出度为1的节点的扇出边的标号集合等于扇入边的标号(或增加1后)集合的并。因此,为了减少信息冗余,对文本库有向图(或者说文本库邻接矩阵)进行约减。当然,这是一个空间代价和处理时间的权衡问题。定义13 简约的扩展∑2邻接矩阵B简约的文本库有向图对应的扩展∑2邻接矩阵称为简约的扩展∑2邻接矩阵,记为B。以后不作特别声明时,文本库的∑2邻接矩阵即指简约的扩展∑2邻接矩阵B。结论3 在简约的扩展∑2邻接矩阵B中,P和I信息互为冗余。
这也说明,在简约的扩展∑2邻接矩阵B中,P和I可以且只能有一个为空。结论4若有一文本库TB,它的文本邻接矩阵和约减的扩展文本邻接矩阵分别为A={aij}和B={bij|bij=P.I.S},则有1)P={k|lk:aki≠φ};2)I=aijorφ(for all aik=φ while k≠j)3)S={k|lk:ajk≠φ}。
结论4 表明约减的扩展邻接矩阵信息完全可以直接从邻接矩阵信息得到,而没有必要真正对文本有向图进行约减处理。实例6 设有下列文本库TB3S1人民的国家,S2人民的地位,S3人民的权利,S4人民的财富。
S5平民的国家,S6平民的地位,S7平民的权利,S8平民的财富。
S9阶级的国家,S10阶级的地位,S11阶级的权利,S12阶级的财富。
建立TB3的有向图和邻接矩阵。
根据前面的定义,可以得到TB3的约减的有向图,如图3所示。由图3的约减的扩展文本库有向图可以得到它的对应的约减的扩展∑2邻接矩阵。
在图3中,共有22条边,对应的∑2相邻矩阵的元素列于下表1中表1TB3的邻接矩阵
需要说明的是,在扩展的邻接矩阵中,我们增加了前驱字符集和后继字符集,这是出于提高检索效率而采取的措施。也就是说,P和S是可以抛弃的。我们记抛弃P和S后的B矩阵为AI矩阵。AI矩阵其实是A矩阵的一种更严格的约减。
根据前面的定义和实例,本发明提出的全文数据库模型是一种基于∑2邻接矩阵的文本库模型,就是用∑2邻接矩阵表达全文数据信息,即把全文数据信息作为一个文本库(定义1),并分别建立文本库的∑2邻接矩阵A(定义7),或者扩展∑2邻接矩阵Ax(定义8、9、10),或者约减的扩展∑2邻接矩阵B(定义12、13、结论4)来表达文本数据库。我们称之为基于∑2邻接矩阵的全文数据摩模型,简称为∑2邻接矩阵模型。
接下来我们研究针对新模型的文本数据操作。为了便于查询,下面先定义一个文本索引表。定义14 文本索引表文本索引表是如下三元组的集合{Di,Si1,ai1i2},………………………………………………………(7)其中,Di为第i个文献标识;Si1为Di文献第一个句串在文献库中的编号;ai1i2为Si1第一个和第二个文字符构成的有向边对应于∑2邻接矩阵元素。1对文本库邻接矩阵A的简单操作1)插入操作add(aij,{k})=aij∪{k},………………………………………………(8)在∑2邻接矩阵上增加第k个序号,表示lilj在第k个符号串中出现。2)删除操作del(aij,{k})=aij-aij∩{k},…………………………………………(9)表示从第k个串中删去lilj的出现。3)修改操作ch(aij,{k1},{k2})=(aij-aij∩{k1})∪{k2},………………………(10)表示lilj原在k1出现,现改为在k2串中出现。2对文本库邻接矩阵A的布尔操作1)矩阵加A+B=(aij∪bij),…………………………………………………………(11)表示两个文本库可以归并为一个库。2)矩阵差B=(aij-aij∩bij),……………………………………………………(12)表示从一个大的文本库删去某一较小的文本库。3)矩阵乘A*A=(∪j=1n(aij∩ajk)),.......(13)]]>记作A2。每一个元素表示第i字符为头第k字符为尾所有可能三连字符出现在那些句串上。3基于约减的扩展邻接矩阵B的查询操作1)子串查询q(li1li2…lik)基本思想是当某bij=I(li,lj)为空时,表示其标识集应由li节点的扇入边上标识符集合之并来决定。为了描述方便,设I(bij)表示aij对应的标识号集合,P(bij)表示bij的前驱文字集,S(bij)表示bij的后续文字集。子串查询算法为输入约减的扩展∑2邻接矩阵B=[bij],查询子串q(li1li2…lik)。输出p:{i|Si:li1li2…lik∈Si}。方法a)判断li1li2…lik是否有环。如无环,则求解q(li1li2…lik)=I(bi1i2)∩I(bi2i3)…∩I(bik-lik)。
具体步骤为从左往右依次计算I(bij),即先计算I(bi1i2),I(bi2i3),…直到I(bik-lik)。
对于任意i和j,I(bij)的计算可依如下步骤递归进行ⅰ.若I(bij)={},但P(bij)={lj1lj2…ljn},则I(bij)=I(bj1i)∪…∪I(bjni);ⅱ.若I(bij)={},P(bij)={},则I(bij)={},检索结束,返回结果为空;ⅲ.若I(bij)≠{},则I(bij)=bij。
返回q(li1li2…lik)结果。b)若有环,则先对l1l2…lik无环化,并对每一无环子串按a)方法进行查询。c)假设li1li2…lik=qs1qs2…qsm,qsi(i=1~m)均为无环子串,Ri为按a)对qsi查询得到的结果。
若某一Ri(i=1~m)为空,则检索结束,返回结果为空;否则,按无环子串的顺序关系,从各子串查询结果集合中求解所有的子串标识号序列。每一序列的长度为查询句串无环化后的子串个数,代表一个解。具体步骤如下ri=φ(i=1~m),对于所有的i值,i=1~m,若i∈Rm且i-1∈Rm-1,…,i-m+1∈R1,则ri={i}∪{i-1}∪…{i-m+2}∪{i-m+1}。
输出ρ=r1∪r2∪…∪rm。算法完毕。实例6 在文本库TB3中查询串“人民”和“民的国”。解查询串“人民”和“民的国”均为无环串,它们均应出现在文本库的完整串中,即不是跨串存存。
a)q(人民)={1,2,3,4}。
表明串“人民”出现在S1、S2、S3和S4中。
b)q(民的国)=I(民的)∩I(的国)∥I(民的)为空=(I(人民)∪I(平民))∩{1,5,9}={1,2,3,4}∩{1,5,9}∪{5,6,7,8}∩{1,5,9}={1,5}。
表明串“民的国”出现在S1和S5中。2)前缀查询q(li*)q(li*)表示查询以li文字符为前缀的所有可能的字串出现在那些句串上。q(li*)=∪j=1naij]]>。………………………………………………………………………(14)更一般地,g(li1li2…lik*)表示查询以li1li2…lik为前缀的所有可能的字串出现在那些句串中,且q(li1li2…lik*)=q(li1li2…l1k-1)∩q(lik*)。………………(15)3)后缀查询q(*lj)=∪i=1naij]]>。q(*lj)表示查询以字符lj为后缀的所有可能的字符串出现在那些句串上。………………………………………………………………………(16)更一般地,q(*ljlj1…ljk)表示查询以文字符串ljlj1…ljk为后缀的所有可能地字串出现在那些句串上,且q(*ljlj1…ljk)=q(*lj)∩q(lj1…ljk)。………………………(17)4)范围查询q(li1li2…likli,li1li2…liklj)表示查询li1li2…likli和li1li2…liklj两字符串之间所有可能的字串出现在那些句串中,且q(li1li2...likli,li1li2...liklj)=q(li1li2...lik)∩∪h=1jaikh]]>。………………………………………………………………………(18)5)复合查询所有简单查询为复合查询;若q1和q2为复合查询,则q1∧q2=q1∩q2,q1q2=q1∪q2,~q1=U-q1,其中U为全集。6)原文生成原文生成算法的基本思想是由文献索引表确定一个文献由哪些句串组成(即文献的第一个句串标识和最后一个句串标识之间的所有句串),并由文献索引表找到扩充∑2邻接矩阵入口元素位置。使用矩阵元素中后续文字集依次寻找该文的第一个句串、第二个句串,直至该文的最后一个句串。
原文生成算法输入1)TB的约减的扩展∑2邻接矩阵B=[bij];2)文本标识号Di;3)文本索引表。输出标识为Di的文献全文Text(Di)。方法1)由文本标识号Di和文本索引表确定文献是第m句串至第n(n>m)句串组成以及文本Di在∑2矩阵中的入口元素bij。2)由于有r<=m∈bij,则Text(Di)<=lilj。取L1=lj。3)若L1为句串分隔符,则r<=m+1。
若r>n,查询完毕,输出Text(Di),退出。
若L2∈S(bij)且r∈I(l1,l2),则Text(Di)=Text(Di)∪l2,l1=l2,转3)。算法结束。实例7根据文本库TB3和如下文本索引表,检索D2全文D11人民;D25平民;D39阶级。
具体步骤1)从文本索引表中找到文本D2的句串是从标识5到标识8,且第一个矩阵元素为“平民”,此时r=5,Text(D2)=“平民”。由于“民”不是句串分隔符,r值不变。2)S(<平民>)={的},则有Text(D2)=“平民的”;3)S(民的)={国,地,权,财},且5∈I(的,国),故有Text(D2)=“平民的国”;4)Suc(的国)={家},且Pos(国家)={},故有Text(D2)=“平民的国家”;5)Sue(国家)={,},表示第五句串结束,于是Text(D2)=“民的国家,”;6)由于上一个字符为句串分隔符“,”,r=6(5+1),表示要进一步寻找第6句串。
考虑到S(家,)={人,平,阶},且6∈I(,平),故有Text(D2)=“平民的国家,平”;7)依上方法进行下去,直全找到r=9>8,则结束查询。最后有Text(D2)=“平民的国家,平民的地位,平民的权利,平民的财富。”。
下面将本发明提出的全文数据库模型与已有的其它全文数据库模型进行比较。比较结果列于表2中。
表2几种文本数据库模型的性能比较
这里我们对新模型的空间复杂性作进一步的分析。首先用实例5中的统计结果进行说明,然后从更一般的意义上进行分析。
由结论3,B矩阵中P和I是互为冗余的,两者可以合二为一,只需用1bit标志位来区分就可以了。因此所有的空集{}均无须特别处理。实例5中,统计表明B矩阵中有11个P类字符信息、24个I类字符信息和32个S类字符信息。这样TB3总共需要67个字符信息,而文本库中共有72个字符,因此B矩阵的空间复杂性为|B|/|TB3|=67/72=0.93。
进一步地由结论4可知,B矩阵中的P和S的信息可隐式地从矩阵AI得到。如果用AI替代B,则空间耗费更节省。空集符号{}可用1bit标志位来区分,如忽略不记的话,实际空间消耗为24个位置标号。这样,AI矩阵的空间复杂性为|AI|/|TB3|=24/72=0.33。
更一般地,对于任何一个文本数据库,可约减性是普遍存存的。就标识集合而言,它总是小于文本库中的文字符位置集合。增加的P集合和S集合的总量要比文本中的文字符位置信息总量小得多,因为|B|最大为8000×8000,约为64M。对于一个64G文本库来说,利用B来表示,每一元素上的平均重复数为1k(64G/64M)。任何一前驱或后继文字,均对应矩阵中一个元素。矩阵中用一个文字信息表示在文本库中1k左右的重复。因此所有前驱和后继文字符集合的总量只不过是文本库本身的很小的一部分(如1/500),因而可以忽略不记。从总体上考虑,|B|/|TB|<1。如果使用AI,则空间耗费比B矩阵还要省。
综二所述,本发明提出的∑2邻接矩阵模型比现有的所有模型性能都要好,其中特别要指出的是空间复杂性大大优于PAT数组、PAT树或按字倒排等模型。它继承了按字索引和按词索引模型的主要优点,而避免了它们的缺点,是一个完全新型的全文数据库模型,具有广泛的应用前景。


图1为实例2中句串S1的有向图。图2为实例4中文本库TB1的有向图。图3为实例6中TB3的约减有向图。
权利要求
1.一种基于∑2邻接矩阵的全文数据库模型,其特征在于每一文本库对应于一个基于基本文字符号单元集合∑的∑2邻接矩阵A,因此用∑2邻接矩阵A表达全文数据库A=[aij],aij=I<li,lj>={k|sk:liljsk,},其中,aij为文本库有向图中对应的有向边<li,lj>上的无环句串标号集合。
2.根据权利要求1所述的全文数据库模型,其特征在于进一步地采用扩展的∑2邻接矩阵Ax表达全文数据库Ax=[axij],其中,Ax的元素axij为axij=P.I.S,这里,P=P<li,lj>为有向边<li,lj>的前驱文字符集合,I=I<li,lj>为有向边<li,lj>上的无环句串标号集合,S=S<li,lj>有向边<li,lj>的后继文字符集合。
3.根据权利要求2所述的全文数据库模型,其特征在于还采用约减的扩展∑2邻接矩阵B表达全文数据库B={bij|bij=P.I.S},其中,P={k|lk:aki≠φ},I=aijorφ(对于所有的aik,当k≠j时,有aik=φ),S={k|lk:ajk≠φ}。
4.根据权利要求1所述的全文数据库模型,其特征在于对文本库的∑2邻接矩阵A的简单操作如下1)插入操作add(aij,{k})=aij∪{k},在∑2邻接矩阵上增加第k个序号,表示lilj在第k个符号串中出现;2)删除操作del(aij,{k})=aij-aij∩{k},表示从第k个串中删去lilj的出现;3)修改操作ch(aij,{k1},{k2})=(aij-aij∩{k1})∪{k2},表示lilj原在k1出现,现改为在k2串中出现。
5.根据权利要求1所述的全文数据库模型,其特征在于对文本库的∑2邻接矩阵A的布尔操作如下1)矩阵加A+B=(aij∪bij),表示两个文本库可以归并为一个库;2)矩阵差B=(aij-aij∩bij),表示从一个大的文本库删去某一较小的文本库;3)矩阵乘A*A=(∪j=1n(aij∩ajk)),]]>记作A2,每一个元素表示第i字符为头第k字符为尾所有可能三连字符出现在那些句串上。
6.根据权利要求3所述的全文数据库模型,其特征在于对文本库的约减的扩展∑2邻接矩阵B的查询操作如下1)子串查询q(li1li2…lik)a)判断li1li2…lik是否有环,如无环,则q(li1li2…lik)=I(bi1i2)∩I(bi2i3)∩I(bik-lik);b)若有环,则先进行查询串的无环化,并对每一无环子查询串按a)方法进行查询,然后按无环子串的顺序关系,从各子串查询结果集合中求解所有的子句串标识号序列,一个序列代表一个解。2)前缀查询q(li*)q(li*)=∪j=1naij]]>。3)后缀查询q(*lj)q(*lj)=∪i=1naij]]>。4)范围查询q(li1li2…likli,li1li2…liklj)q(li1li2...likli,li1li2...liklj)=q(li1li2...lik)∩∪h=ijaikh]]>。5)原文生成由文献索引表确定一个文献由那些句串组成,并由文献索引表找约减的扩展∑2邻接矩阵B中查询文献的入口元素;然后使用矩阵元素的后继文字符集合,依次找到该文献的第一句串、第二句串等等,直到最后一个句串为止。
全文摘要
本发明属信息技术领域,是一种基于∑
文档编号G06F17/00GK1237736SQ9910912
公开日1999年12月8日 申请日期1999年6月16日 优先权日1999年6月16日
发明者胡运发, 周水庚 申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1