基于语义距离模型的xml文档关键字搜索聚类方法

文档序号:6459182阅读:227来源:国知局

专利名称::基于语义距离模型的xml文档关键字搜索聚类方法
技术领域
:本发明属于Web数据管理
技术领域
,具体涉及一种基于聚类思想,对可扩充标记语言(XML)数据库或文档进行关键字搜索的方法。技术背景由于界面友好、使用简单,关键字搜索在信息检索领域取得了巨大成功,例如谷歌搜索引擎、百度搜索引擎等。它们的搜索对象通常是一个HTML文档或普通文本文档的集合,搜索的目的是査出哪些关键字在哪些文档中出现,并且返回全部或部分包含关键字的文档。由于XML格式数据的大量出现和广泛应用,在XML文档上进行关键字搜索的需求变得越来越迫切。近年来,XML关键字搜索受到工业界和学术界的广泛关注[1][2][',][5][6][7]。XML的关键字搜索不同于结构化的XML査询(如XPath、XQuery等),不仅易于使用,用户不需要学习和掌握复杂的查询语言,用户也不需要了解XML的模式,适用于Internet上大量存在的自由XML文档。但是,关键字搜索带来的一个关键问题是用户难以或无法准确表达搜索语义。因此,在XML关键字搜索中,如何确定关键字搜索的语义(即用户的搜索意图)以及返回什么样的结果给用户则成为关键的技术难点。在已有的关于XML关键字搜索的工作中,通常都是基于最低公共祖先(LCA)模型,中一个典型的方法是最小最低公共祖先方法SLCA(MeaningfulLowestCommonAncestor)[2]。Li等人[3]将关键字搜索的语义定义为有意义的最低公共祖先,其本质含义与SLCA相同。SLCA方法返回的是一组最小应答子树(smallestanswersubtree),—棵最小应答子树被定义为包含有所有关键字的子树,并且任意一棵其子树都不包含所有关键字,这种子树的根被称作一个SLCA。SLCA方法实际上是将对一组关键字的搜索转换为对这一组关键字的最小最低公共祖先的査找。该方法虽然能够获得一些关键结果,但同时又会丢失很多有意义的信息。例如,图1所示是一个XML文档树,其中每个结点以自己的标签作为标识,下面的数字串是该结点的Dewey编码。假如用户搜索的关键字是{J服,必'c力aeJ,few4,标签中包含关键字的结点用下划线标出。在图1中,SLCA方法的返回结果只是一棵以结点JrWWe(O.2.2.0)为根的子树。然而,用户的搜索语义极有可能是"Michael和David曾经合作写过哪些关于XML的文章",很明显,SLCA方法找到了文章"XML3",但将文章"XML2"漏掉了;用户还可能有其它合理的查询意图,比如"Michael和David—起合作写过哪些文章","Michael和David其中任一个人写过哪些关于XML的文章",对于这两个询问,文章"HTML1"和文章"XML1"也是满足的,都应该被返回。这些搜索意图都是很合理的,也是现实生活中非常常见的,而SLCA方法将几个满足这些搜索意图的结果都丢失了。实际上,SLCA方法所做的即是根据某种规则从各种包含不同关键字的结点的组合中挑选出部分"最优"的包含全部关键字的组合,而SLCA方法认为的"最优"就是LCA相对最低,而LCA相对较高的结果则都被丢弃了,这是SLCA方法会丢失有意义的结果的根本原因。除了丢失一些有意义的结果外,SLCA方法还存在一些其它问题(l)在其计算过程中,并不是所有的结点组合都是可比较的,所有LCA之间不存在祖先后代的两个组合,例如图1中的组合{0.2.2.0.1.0,0.2.2.0.1.1}与组合{0.0.1.0,0.0.1.1},都不可比较,所以选出的"最优"只能是相对最优;(2)由于SLCA方法选出来的一组结果的LCA之间都不存在祖先后代关系,所以它们是不可比较的,因此也无法将它们排序,这显然不适合结果集比较大的情况;(3)SLCA方法要求每个结果都要包含所有关键字,这实际是要求在作为査询语句的所有关键字之间存在"与"逻辑关系,而我们现实生活中所使用的关键字搜索引擎(例如谷歌)都包含了"或"关系,也就是说关键字可以全部或部分的存在于结果中,这使得搜索的结果能更多地满足用户的可能意图,显然更加合理,也应该被应用到XML关键字搜索中来。针对上述问题,本发明提出一种新的XML关键字搜索的处理方法。其中,提出一种新的XML关键字搜索的语义距离模型,综合考虑关键字结点之间的距离和它们的LCA的高度;首次使用聚类算法进行XML关键字搜索;并提出一种排序模型对所有的搜索结果排序。
发明内容本发明的目的在于提出一种新的XML文档关键字搜索方法,以便能够搜索到更多的对用户有意义的XML片断。本发明提出的XML文档关键字搜索方法,是基于XML文档距离模型的XML聚类关键字搜索,包括用关键字的语义距离模型来建模用户的搜索意图、用聚类算法进行关键字搜索、支持关键字之间的"或"运算、并对结果进行排序,记为XKLuster。方法的具体步骤如下(1)定义用户提交的关键字,并将XML文档的关键字搜索语义定义为关键字之间的语义距离模型,并以此来表示用户的搜索意图;(2)将关键字搜索的返回结果定义为关键字簇的最小组成树;(3)XML文档树进行预处理;(4)根据本发明提出的语义距离模型,选择使用如下三种聚类算法之一种进行XML关键字搜索基于图的聚类算法(GKSC)、核心集驱动的聚类算法(CKSC)和松弛的核心集驱动聚类算法(LCC)。(5)根据本发明提出的排序模型,对搜索结果进行排序。1.定义关键字之间的语义距离模型本发明将用户提交的关键字定义为一个包含t个关键字的集合Z:仏Ii=l,,t},XML文档定义为一棵XML文档树,具体如下定义l.XML文档树。将一颗XML文档树(XMLDoc咖entTree)表示为一个8元组d=(F,£,义,/a6e/(''fi0,p/(械,W2),cfep,/j("),^cotfe(!W),/ca(7')),其中(1)K是树上所有结点的集合,并且每个结点都有唯一的标识符和Dewey编码;(2)££Kxr,是树上边的集合;(3)/We/(W)为标签函数,用来获得标识为J'c/的结点的标签,其中WeK;(4)Xe^是树上所有关键字结点的集合,所谓关键字结点即标签中包含关键字的结点;(5)p/(W,,/《)函数,用来取得id和^/2两个结点之间的路径长度,其中W和W必须具有祖先后代关系,而此函数返回的结果为它们之间的路径上所包含的边的个数;(6)血/^(W)函数,用来获得标识为JW的结点的深度(树的根的深度为1),其中WeF;(7)/vmKfe(W)函数,用来获得标识为W的结点的Dewey编码,其中wer;(8)/ca(r)函数,其中^£「是K的任意子集,函数返回r中所有结点的最低公共祖先。定义2.两个关键字结点之间的最短路径。两个关键字结点&和x,的最短路径为结点a到7caUx,,义」))的路径加上结点^到"s(U,.,W)的路径。同时,用函数sa/(x,》来表示结点A和^的最短路径的长度,显然印J0^,》=/^(乃a(Uhx,}),x.)+/^(7ca(U,.,^0)),々)。在一篇普通的文本文档中,两个单词之间到底有多"近",可以直接通过它们中间相隔的单词数量来表示。但是在一篇XML文档中,情况更为复杂。实际上,在现有的XML关键字搜索方法中,都显示或隐式地定义了任意两个关键字结点在结构上的距离。比如Hristidis等人在[l]中将两个结点之间的距离直接定义成它们的最短路径的长度,但没有考虑到树型结构层次化的特性。而在所有基于LCA的方法的主要缺陷有三一是虽然考虑到了层次的高低,但是没有考虑结点之间的路径长短;二是当两个LCA之间具有祖先后代关系时,只取SLCA会导致部分有意义的结果的丢失;三是当两个LCA之间不具有祖先后代关系时,两个距离是不可比较的,因而无法对大量返回结果进行排序。本发明综合考虑两方面因素来定义两个关键字之间的语义距离,即两个关键字结点之间的路径长度和它们的LCA的层次。若两个关键字结点之间的最短路径越短,则它们的语义距离越近;若两个结点的LCA的层次越低,则它们的语义距离越近;两个关键字之间的语义距离越短,则意味着它们的关系更紧密,更可能构成用户要搜索的结果。这样的语义距离模型避免了当两个LCA之间不具有祖先后代关系时会丢失可能的结果;同时在存在大量返回结果时,又能够对返回结果进行排序。定义3.两个关键字结点之间的语义距离。XML文档树上任意两个关键字结点之间的语义距离力's(A,》被定义如下后面内容将语义距离简称为距离。在公式(i)中,分子和分母部分分别是两关键字结点间最短路径的长度和它们LCA的高度。设树的高度(最大深度)是力,那么s;^(AA)的取值范围是[O,2力],而W))的取值范围是[l,力],所以力's(A,A)的值域是[O,2力]。对图1中的所有关键字之间的语义距离进行计算,可以得到一个语义距离矩阵,如表1所示。由表l中可以看出,最近的几个距离(0.40和0.67)表示的关系都是同一篇文章的两个作者,而最远的距离(8.00)则是相互之间没有引用关系的两篇文章的标题或作者,距离的远近与实际意义相符。2.定义关键字搜索的返回结果定义4.关键字结点的簇。根据关键字语义距离模型,可以使用特定的方法将关键字结点集分成一组簇。簇的集合表示为C={GIi=1,…,历},其中,一个簇G是一组关键字结点的集合,GG义,且Gc,x。,=1设定一个距离阈值"来约束簇的大小,簇中任意两个关键字结点之间的距离小于等于定义5.最优簇。给定一个距离阈值",任一个关键字集合C,eX被称为最优簇,当且仅当(1)V义,.,q满足(//S(X、々)《0;(2)V、,x。eX且a:。gq,3x6eC,.满足As(jc。,x6)>w。假设取距离阈值为2.0,则可知表1中的距离矩阵中只有部分距离被保留(如表1中阴影部分所示),此时的四个最优簇分别是^,&},",W,ks,&力,W和U,為,将四篇文章都找出了。由于一个簇只是若干关键字结点的集合,若要向用户返回有价值的信息,一种简单的方法是对于每个簇G,返回整棵以乃a(G)为根的子树。但存在两个缺点其一是多个乃3(G)为根的子树之间可能存在的包含情况,尤其当某个"s(G)的层次比较高的时候,会产生大量冗余信息;其二是返回结果过大。因此,本发明将返回结果定义为簇的"最小组成树",定义如下定义6.簇的最小组成树。C中每个簇G的最小组成树定义为以Jca(G)为根,以A"e/^朋ts(G)中的所有结点为叶子的树。其中c/esce/^a/7"(G)函数返回G中所有在G内不含有任何后代的关键字结点的集合。即就是G的最小组成树是从乃a(G)到Gfesce"血y"(G)中所有结点的。在将每个簇的最小组成树返回给用户后,再为用户提供两个额外功能来扩大返回结果-一是对任意结点的"展开",将原XML文档树中该结点的所有后代结点加入到结果中,例如在图1中,对于簇{0.1.0.0,0.1.1.0}的最小组成树,用户可以展开^"t力,s(0.1.1)结点来获得该篇文章的另一个作者/o力"(0.1.1.1);二是根结点的提高,即将当前最小组成树根结点的父结点加入到结果中,例如对于簇{0.0.1.0,0.0.1.1}的最小组成树,用户可以将根结点力"t力ors(O.O.l)提高,从而得知其父结点力m'cJe(O.O)。通过这两个功能的组合,用户可以根据自己的需求来随意扩展每个结果的大小,直至找到满意的内容为止。3.XML关键字搜索的聚类算法的预处理在数据挖掘中,聚类是一个常用的处理方法。它将一个对象集合分成一些组,使得同一个组内对象之间的相似度达到最大,而不同组间对象的相似度达到最小。在XML关键字搜索的背景下,本发明的目标是将一个关键字结点集合按照结点间语义距离的远近进行分组。本发明针对XML关键字搜索,设计了相应的的聚类算法。对于一个距离阈值",XML关键字聚类搜索的目标就是找到所有的最优簇。在说明XML关键字聚类算法之前,先对XML文档树进行预处理,步骤如下(1)使用Dewey编码为整棵XML文档树进行编码;(2)为所有的关键字建立倒排索引表;(3)对于深度(最大高度)为力的XML文档树,建立一个包含有力个有序关键字结点列表的层次型数据结构H。其中每一个层次是将XML文档树上一组处于同一高度的多个结点按照文档访问(先序遍历)顺序组成一个序列/,A是其中的任一个结点;(4)先序遍历XML文档树,每遇到一个标签含有关键字的结点,将它加入相应层次的列表的尾部。当文档遍历结束时,可以得到一个如图2所示的层次型数据结构//。在该结构的任一层次的列表上,结点是按照文档访问(先序遍历)顺序加入的,因而有如下定理定理l.在序列/中,当从结点A向左(向右)进行遍历时,A与每次遇到的结点之间的距离非递减增加。证明.从结点A开始,无论是向左还是向右遍历,每次遇到的结点与A的关系总会依次是"兄弟"、"堂兄弟",越来越疏远,从而彼此间的最短路径越来越长,LCA也越来越高,根据公式1可知距离越来越远。对于文档树上的任意一个低(高)于/所在位置的层次,同样按顺序取任意多个结点组成序列/',并且设/'中一个结点A是A的后代(祖先)结点(如果有多个后代结点,则任选一个;如果不存在后代结点,则在相应位置插入一个),定理2如下定理2.在序列/'中,当从A开始向左(向右)遍历,则A与每次遇到的结点之间的距离非递减增加。证明.x,与序列/'中任意一个结点的最短路径等于A和该点的最短路径减去(加上)《和A的最短路径,而在/'确定的情况下,x和A的最短路径是不变的,所以A与该结点的最短路径长度越来越短,而显然它们的LCA的深度是减小的,所以可得证距离增加。4.基于图的的关键字搜索聚类算法GKSC(Graph-basedClusteringalgorithmforXMLKeywordSearch)GKSC算法首先遍历#,根据彼此距离是否小于等于距离阈值建立结点和结点之间的连接,从而得到一个以各个关键字结点为顶点的加权无向图&再使用一个图的分解算法来获得一组最大完全子图,各个完全子图的顶点集合就是一个最优簇。GKSC算法的步骤如下(1)从上到下按层次访问/Z中的结点,在每一层的列表中,从左到右遍历,对于当前访问结点,计算它和同层右边以及下面的某些邻居的距离。假设当前正在访问结点A,则它和同一层次处于它左边的邻居结点的距离,以及和它上面的层次的邻居结点的距离都己经被计算过了,因此只需要考虑右边以及更低层次的结点。假设被考虑的结点是A,并且处在A的同一层次,根据定理l,随着A的位置向右移动,Ws(A,A)—直变大。所以,当力's(x,,^)大于"时,A右边的结点都不需要再被考虑。(2)对于更低层次的结点,首先确定有多少层次的结点需要被考虑。给定一个",距离公式必须满足<formula>formulaseeoriginaldocumentpage12</formula>,又由于<formula>formulaseeoriginaldocumentpage12</formula>,所以<formula>formulaseeoriginaldocumentpage12</formula>成立,也就是说<formula>formulaseeoriginaldocumentpage12</formula>,所以<formula>formulaseeoriginaldocumentpage12</formula>是<formula>formulaseeoriginaldocumentpage12</formula>A下面必须考虑的层次的数目,其中Z7oor函数表示向下取整。可以发现,即使x在第Woor(鄉晰、).的+l)个更低的层次有一个后代结点,它和该后代之间的距离也肯定超过了距离阈值。(3)计算出所需要考虑的层次数目后,对于x,下方/oor((fe/^0O.^)层中的每一层,首先找到A的后代在该层中的位置(A的后代结点不需要一定在W中存在),再从该位置向左(向右)遍历直至距离超出阈值,并且根据定理2,在这一层中,其它结点都不需要参与考虑。当A是所属层中的第一个结点时,使用二分法去寻找它在/ooK鄉决(x,)w)个低层次列表中后代结点的位置,并且用指针记录下这些位置(如图2所示)。而当A不是第一个结点时,只从那些记录的位置开始向右寻找后代结点的位置,之后再修改指针到当前位置。这样做的原因是假设A和A在同一层中两个相邻的位置,A在A的左边,则在更低的一个层次中,A的后代结点的位置肯定在X的后代结点位置的右边,这样处理的话指针只朝一个方向移动,它的变化是累加式的,比每次都用二分法寻找后代结点的位置要高效得多。(4)每次计算两个结点的距离时,如果小于或等于距离阈值,贝ij(通过加上互相指向的指针)将该两个结点用边连接起来,并且记录下距离作为该边的权。(5)上一步结束后,可以得到一个加权的无向图。然后再将图分解得到所有的最大完全字图,从而得到结果簇。算法GKSC能够找到所有的最优簇,完全达到了聚类的目标,其不足在于效率较难控制,尤其是在距离阈值比较大的时候效率可能会比较低。因此,本发明提出另外两个聚类算法CKSC和LCC.5.核心集驱动的聚类算法CKSC(Core-drivenClusteringalgorithmforXMLKeywordSearch)CKSC的思路则是利用分而治之的思想,首先找到一些被称为核心集(core)的结点集。若是核心集,则在它之内的结点肯定能被聚到一起;再找到一些肯定包含最优簇的核心集的集合;最后从这些核心集集合中找到最优簇。定义7.核心集。对于距离阈值"来说,任一个关键字集合c。e义,如果它所包含的关键字结点中任意两者之间的距离都小于或等于",则G被称为一个核心集(core).根据定义7,任意一个最优簇都是一个核心集。但是,一个核心集不一定是一个最优簇。引理1.设在层次型数据结构^的任一层中取^和A两个任意结点,其中,A在A右边。对于一个距离阈值",若必Oc,a)s",则从a到&这0-/+1)个结点的集合是一个核心集。证明.设从a到&这0-/+1)个结点中任取两个结点&&并且^在工的右边,则根据定理1可知cfo(;c。,;OS血(x。,;0《必",A)Sw,即任意两个结点之间的距离小于等于",得证。定义8.原始核心集。〃中的一个结点集合G'被称为一个原始核心集(coreorigin),当且仅当(1)G'是一个核心集;(2)C/中的结点都处于V的同一层次;(3)在该层次中不存在一个核心集C。使得6TcC。。GKSC算法步骤的说明如下(1)首先遍历//,将/Z中的结点分成一些核心集。对于//的每一层,具体的做法是创建一个空集,将该层第一个结点加入,从第二个结点开始往后遍历,计算第一个结点与遍历当前结点之间的距离;如果小于等于"则将之加入集合。当遇到距离超出"的第一个结点时,再创建一个空集,以该结点为集合中第一个结点继续遍历,直至该层中所有结点都已遍历完。一个原始核心集所包含的是^上同一层次中相邻的一组结点。如图3(a)所示,假设flfe(x,';0《w,并且tfo(x,—";>:,)>0,cfe(w,)〉ffl,根据引理1可知,{x;,…,〖}是个核心集,并且对于其中的任一个结点工,必(x,—";:。)>必(;c,—,,jc,)xy,cfo(x。>&(;cr,xr+1)>,艮卩A与同一层内其它结点的距离都大于"。所以,{力,…,&}是一个原始核心集。实际上它是该层所有结点集合的一个最优簇。(2)再寻找原始核心集周围的核心集,求出包含这些原始核心集的最优簇。如前所述,对于一个原始核心集来说,同一层次中所有其它结点都不需要再考虑,只需考虑其它所有层次的相邻结点。如图3(b)所示,假设当前考虑的原始核心集是/中的{力,…,W,观察该层下面某个序列,中的结点,按照GKSC算法中寻找连接的做法可以得到一组连续的与结点^距离小于等于"的结点。将这些结点设为z/,…,力〃,将与结点A距离小于等于"的一组连续结点设为义/,…,xZ。假设k/,…,义/]与U/,…,7/]没有交集,则,中不存在可以被加入核心集{力,…,,J以形成最优簇的结点。但如果两者的交集如图中所示是U/,…,z/〕,且在一个核心集内,贝1」{力,…,Wuk/,…,7/是一个核心集。另外当,{义/,…,义/]不是一个核心集的时候(义/到义/跨越多个核心集),将它划分成几个核心集再予以考虑,对于每个核心集可以得到相同的结论。当找出{&,W在所有层次上需要考虑的核心集后,在每一层取一个核心集组成一个核心集的集合,显然可以在该集合内找到包含{&,…,d的最优簇。引理2.结点集合{力,…,WuU/,…,义/是一个核心集,且除b/,…,力,之外的/'中的点都不能被加入{&…,W而成为一个核心集.证明.{力,…,&}与{义/,…,义/1本身都是核心集,所以只需证明两个集合中各任取一个结点,距离小于等于距离阈值。设在{力,…,W中任取一个结点A,Ur',…,义/]中任取一个结点义/,假设力'S(&,,Z)>ffl,则根据定理2,若力'S(力,则x/在该层中的祖先应该在A的左边;若力'S(A,7/)《w,则%/在该层中的祖先应该在A的右边;而很显然Ws(A,义/)与力'sU。x/)都小于等于",则义/的祖先的位置矛盾,所以力's(&,至于/'中的其它结点,则很明显至少与力和^中一者的距离超过",得证。显然,同理可以证明对于/上方的任一个层次,引理2同样成立。这实际上是相当于先从每一层中挑选部分结点,再从这些结点构成的子图中寻找一个最大完全子图。6.松弛的核心集驱动聚类算法LCC(LoosenCore-drivenClusteringalgorithmforXMLKeywordSearch)上面两个算法虽然有时候效率会很高,但仍然存在不可准确预期的低效情况,尤其是算法GKSC强烈依赖于距离阈值对两结点间连接数的影响。由于在大多数情况下,用户对结果并没有太精确的要求,因而,可以放松对结果集的要求,允许一些距离稍远的结点在同一个结果中出现,以提高算法的效率。算法LCC正是基于这样一个思想,它放松对每个结果集必须是最优簇的要求,取而代之的是必定包含最优簇的一个结点集合。算法LCC的步骤如下(1)算法LCC开始时处理仍然和CKSC—样。首先遍历层次型数据结构#,得到一组原始核心集;(2)对于/Z中的每一层建立两个列表头结点列表Z/AZ和尾结点列表77^。其中,/WZ和77^分别按顺序存放该行中所有原始核心集的第一个和最后一个结点;(3)对于每个原始核心集G',寻找其它所有层次中的一些原始核心集,这些原始核心集中存在结点到所有C/中结点的距离都小于等于(4)找到这些原始核心集后,不是试图在其中寻找最优簇,而是简单地将它们合并到C。'中形成一个结果集。7.搜索结果的排序由于考虑尽量不丢失有意义的结果,本发明设计的聚类算法有时会产生大量结果,因此,需要对搜索结果进行排序。在关键字搜索的现有工作中,已经提出一些排序模型。例如,有些是基于图上的路径[1][8][9],有些则是借用信息检索中的方法[5][6]。本发明针对上面设计的聚类搜索算法,设计了特定的排序方法。它考虑俩方面的因素(1)首先,结果中出现的关键字种类越多,排序的优先级越高;这是显然的,如果用户想査的一些内容都没有在某个结果中出现,则该结果肯定不是最优的。(2)对于关键字出现种类相同的结果,比较它们在结构上的差别,由此引入一个结果簇的"平均距离"的概念定义8(结果簇的平均距离)。对于结果簇集合C中任一个簇G,它的平均距离^、自为它所包含的所有结点之间两两距离的平均值,假设历是G所包含的结点的个数,则G的平均距离如公式(2)所示(c)二,m>12d(2)oo,m=1显然,一个簇的平均距离越小,则说明它含有的结点在结构上越紧凑,从而说明它能构成更好的返回结果。所以排序函数实际上就是取平均距离的倒数,平均距离越小,则排的越高。整个排序的过程如下(1)首先根据每个簇含有关键字的情况进行分组。所有含有相同关键字种类个数的簇被分入一组,对组进行排序,含有越多关键字种类的组排得越靠前;(2)对于同一组内的簇,计算它们的平均距离。平均距离越小的簇在组内排得越靠前。对所有的簇排好序后,为每个簇生成一个最小组成树,并按照顺序将它们返回给用户。(3)单结点簇(簇中只包含一个关键字结点)包含的信息量自然要少于任一个非单结点簇的最小组成树,因此它们的平均距离定义为无穷大,所以它们会被排到整个结果序列的最后。在图1中,当距离阈值被设定为2.0时会产生四个最优簇G=0rbG=U3,W,G=U,&&&}和6;=U,為,^}。其中,G和G包含三个关键字,G和G包含三个关键字。它们的平均距离分别为力、,(G)=0.67,力's,(G)=2.00,=1.33,力's一(G)=0.80。首先四个簇根据包含的关键字情况被分成两组(G,C4},{G,G},同一组内的簇再根据平均距离排序,最终四个簇的排列顺序是:G,G,G,G。本发明针对XML关键字搜索,定义了XML关键字搜索的语义距离模型,设计了三个关键字搜索的算法和搜索结果的排序模型。本方法的具体操作过程包括(1)定义用户提交的关键字,并将XML文档的关键字搜索语义定义为关键字之间的语义距离模型,并以此表示用户的搜索意图。该语义距离模型综合考虑了两方面的因素来定义两个关键字之间的语义距离,即两个关键字结点之间的路径长度和它们的LCA的层次。(2)将关键字搜索的返回结果定义为关键字簇的最小组成树,其中,定义的相关概念包括关键字结点的簇、最优簇、簇的最小组成树。(3)对XML文档树进行预处理。(4)在本发明提出的语义距离模型的基础上,可以选择使用如下三种聚类算法进行XML关键字搜索GKSC、CKSC、LCC。三个算法在执行之前都要进行预处理,包括如下步骤a)使用Dewey编码为整棵XML文档树进行编码。b)为所有的关键字建立倒排索引表。c)对于深度(最大高度)为力的XML文档树,建立一个包含有力个有序关键字结点列表的层次型数据结构H。d)先序遍历XML文档树,每遇到一个标签含有关键字的结点,将它加入相应层次的列表的尾部。用户可以根据不同的需要,在GKSC、CKSC、LCC三个算法中间做出选择。从结果集来看,算法GKSC它可以找到所有的最优簇;算法CKSC是由核心集驱动的,它基于一个假设,即所有最优簇必定包含最少一个原始核心集,所以它可能会丢失部分最优簇;算法LCC则不考虑最优簇的约束。从时间效率上来看,算法CKSC实际上是在算法GKSC的基础上采用分而治之的思想,总体性能优于算法GKSC;算法LCC是在CKSC的基础上进行了优化,时间效率要高于CKSC。从空间复杂度来看,算法GKSC需要储存两结点之间的连接以及距离值,所以当距离阈值比较大时需要额外0(//)的储存空间。算法CKSC和LCC中需要记录所有的原始核心集(也可以只记录每个核心集的首尾两个结点,因为原始核心集的结点都是连续的),需要0(77)的储存空间。另外,算法CKSC在寻找相关核心集时还需要建立"结点-原始核心集"索引表;算法LCC也需要另外两个列表^VZ和7)VZ,所以算法CKSC和LCC又需要额外的"")的储存空间。再加上层次型数据结构^所占用的空间,算法CKSC和LCC所使用的空间几乎等同,都不大于3"。算法GKSC所占用的空间为("+),其中后一项的具体值取决于所生成的图中边的个数。图4显示了三个算法时间复杂度的比较。(5)根据本发明提出的排序模型,对搜索结果进行排序。其中,定义了结果簇的平均距离。排序的步骤如下a)首先根据每个簇含有关键字的情况进行分组。b)对于同一组内的簇,计算它们的平均距离。C)对所有的簇进行排序,平均距离越小的簇在组内排得越靠前。之后,为每个簇生成一个最小组成树,并按照顺序将它们返回给用户。图1为XML文档示例的树型结构。图2层次型数据结构H示意图。图3为査找核心集示意图。图4为三个聚类算法的时间效率比较。图5为针对DBLP和Treebank的不同平均关键字结点个数的比较。图6为针对关键字个数的不同,对算法时间效率的比较。其中,(a)为关键字个数是2时(数据集为DBLP)算法时间效率的比较。(b)为关键字个数是2时(数据集为Treebank)算法时间效率的比较。(c)为关键字个数是3时(数据集为DBLP)算法时间效率的比较。(d)为关键字个数是3时(数据集为Treebank)算法时间效率的比较。(e)为关键字个数是4时(数据集为DBLP)算法时间效率的比较。(f)为关键字个数是4时(数据集为Treebank)算法时间效率的比较。(g)为关键字个数是5时(数据集为DBLP)算法时间效率的比较。(h)为关键字个数是5时(数据集为Treebank)算法时间效率的比较。图7为不同关键字个数的算法聚集效果的比较,其中,(a)为关键字个数是2时(数据集为DBLP)算法的聚集结果数量的比较。(b)为关键字个数是2时(数据集为Treebank)算法的聚集结果数量的比较。(c)为关键字个数是3时(数据集为DBLP)算法的聚集结果数量的比较。(d)为关键字个数是3时(数据集为Treebank)算法的聚集结果数量的比较。(e)为关键字个数是4时(数据集为DBLP)算法的聚集结果数量的比较。(f)为关键字个数是4时(数据集为Treebank)算法的聚集结果数量的比较。(g)为关键字个数是5时(数据集为DBLP)算法的聚集结果数量的比较。(h)为关键字个数是5时(数据集为Treebank)算法的聚集结果数量的比较。图8为聚类算法与IL的时间效率比较。图9为试验数据的片断样例,其中,(a)为XMark数据(版本0.92)的DTD的片段。(b)为XMark数据(版本0.92)的文档片段。表l为图l的语义距离矩阵。具体实施方式本发明的核心是在基于语义距离模型的基础上设计了三种聚类算法,具体实现的伪码如下(1)GKSC算法Algorithm1(Graph-basedClustering)Input:ahierarchicalstructureOutput:asetofoptimalclustersC1.for(everylist/in//)〃top-down2.for(everynodein/)〃left-right3.findarightwardneighbor4.whileWs(x,,x》<=co)5.//wA:(X/,x》;〃linktwonodes6.findnextrightwardneighborx力7.for(everylist/'inyZoor(y一/7(x,).a;)layersbelow/)8.P《ywt/Z)esc尸as7tow(X/'9.traverseleftwardandrightwardfrom77untildistanceoverflowsandlinkwithneighborscloseenough;10.usegraphpartitionalgorithmtogetoptimalclusterset力W(iDesaPas7YZ0w(X/,〃findthepositionofadescendantofx,in/'1.get:c/sdescendantx乂in/';2.if(x,isthefirstelementof/)3.usebinarysearchtofindasthe/as7Y/0nofXyin/';《else5.searchrightwardsfrom/'.po/她rtofindpasthepositionofx乂;6./'./7o/w/^《7.return算法的第1至第9行是一个遍历层次型数据结构并建立图的过程。第10行是使用一个图分解算法来获得所有的最大完全子图。一个最大完全子图可以保证所有两两结点之间都有连接,并且再加入图中任一个其它结点都不能构成一个完全子图。所以,它的顶点集合与最优簇的定义相符。图分解算法详细的具体做法是从图中任取一点,考虑与它相连的所有点是否构成一个完全子图,如此递归地计算出所有包含有该点的最大完全子图。对于找出的每个子图上任意一点,如果它没有连向子图外的边,则将它从图中删除。之后再任取图中一点继续算法,直至图空为止。这时可以获得一组彼此不包含的完全子图,即最大完全子图。算法GKSC的时间复杂度不只和关键字结点的个数有关,而且受距离阈值的影响很大。在一种最坏情况,即阈值"大于2力时,则在遍历〃的过程中,每个结点都要与(/^l)个结点比较,所以时间复杂度是遍历结束后得到的是一个全连接图,每个结点的度都是(/^1)。虽然最终的结果是一个包含所有关键字结点的大簇,但由于寻找最大完全子图本身是个NP难的问题[13],当所有两两结点间都存在连接时,分解的时间复杂度会非常高歐))。(2)CKSC算法Algorithm:2(Core-drivenClustering)Input:ahierarchicalstructureOutput:asetofoptimalclustersC1.for(everylist/in7/)2.Co4"0;3.;c/《firstnodeof/;4.for(everynodein/)5.if(dis(;v,,x,)<=o>)6.addintoCb;了.else8.saveCo;9.《0;11.save12.for(everycoreCo)13.OS—yw^e/她dC0—O9);14.c《OS;15.for(eachcoreCc'inCaS)16.c《c门y;7t/7e/"/^^/Cores(C力;17.addcinto1.CS《0;2.for(eachlayer/excepttheoneCbbelongsto)3.Co'《0;4.x/themostleftnodeinCo;5.:\vethemostrightnodeinCo;8.usebinarysearchtofinda:,";9.usebinarysearchtofindx/;10.if(>:/isx,〃orleftofx/")11.addnodesfrom:\:/to;c/'intoCb';12.addCo'intoCS;算法第1至第11行是寻找所有的原始核心集的过程,时间花费为0")。第12行到第17行是为每个核心集寻找最优簇。方法/y/7^fe^tec/Cor"中所使用的方法/Y/7G^ce6Wfe^Asi"OT是从GKSC算法的方法打/^fe5c尸o^'"^7变化而来。它除了可以寻找祖先结点的位置外,还有一个区别就是抛弃某些结点采取的遍历方式而只采用二分法查找。其原因是,由于只需要找每个原始核心集的首尾结点,而它们的祖先/后代结点的位置跳动比较大。方法力'/o7fe7s"^br^的第8和第9行为寻找任一层中应该被考虑的核心集的过程。在方法/Y/7t^e^"c/Cores中,査找祖先(后代)结点位置(第6和第7行)的时间为O(bg"),第8行第9行的时间都为O(log"),第11行是0")。所以,三者总共的时间复杂度为对于每个原始核心集,寻找相关的核心集需要调用方法/i/w^7a"otbres—次;而对于找出的其它层次的核心集,为了寻找最优簇,每个最多需要调用方法打/7oye"teotbres(A-l)次,也就是总共(/!-1)2次。所以,算法CKSC的第12至17行所需的时间总共是(A-l)3.(41og"+")。由于力总是一个常数,所以复杂度仍然是W")。设原始核心集的数目是肌可知算法CC的总时间复杂度是0("+附."),也就是O(m.")。由此可见,这与原始核心集的数量相关。与算法GKSC的情况刚刚相反当距离阈值"被设置的很小时,历接近于",时间复杂度趋向O(".log");而当"很大时,瓜是一个常数,则复杂度为最坏的情况为"趋向于仏复杂度为0"2).(3)LCC算法Algorithm3(LoosenCore-drivenClustering)Input:ahierarchicalstructureOutput:asetofclustersC1.findallcoresorigin;2.for(everycoreCo)3.CS<~yw袭/ate(iC騰s(Co);4.c《C&5.for(eachcoreCo'inC5)6.c《cUCo';7.addcintoC;1.CS《0;2.for(eachlayer/excepttheoneCobelongsto)3.x/—themostleftnodeinCo;4.a<~themostrightnodeinCo;5.《,WZXPcw7'ft'o"/wfflVL(x/,/);6.a<■力"ti4Z)尸o础o"/M77VZ(Xr,/);7.findthemostleftx,"satisfytodis(x,,x,'〕>&)inthenodesofrightof/,;8.findthemostrightx/satisfytodis(xr,x力>o>inthenodesoffflVLleftof/r;9.if(x/isx,"orleftofx/,10.addallcoresoriginbetweenandx/'intoCS1;其中,寻找初始核心集的过程与CKSC—样(第1行)。方法/Y/7GWe""Gtbre5与CKSC算法中的同名算法有所改变打/7o^7ate沈bres的第5、6行分别是从J的^VZ和7)见而不是从2中寻找祖先(或后代)的位置,第7行和第8行则说明了如果在A(A)位置右边(左边)的某核心集的第一个(最后一个)结点与&(&)的距离超出",则该核心集往右(往左)所有的核心集都没有必要再考虑。可以看出方法/i/w^eJa"chores的第5到第8行,每一步的时间复杂度都是O(log"),而第10行只需记录下相关的原始核心集,所以是常数。假设初始核心集的数量是历,那么显然算法LCC的时间复杂度为0("+附.log");当辺趋向于/7时达到最坏情况O(".l0g");当历为常数时达到最好情况O")。另外,由于不需要从一组原始核心集中找到最优簇,所以LCC调用方法/Y/w7e^^eoCbres的次数要明显少于CC,从而它的时间复杂度拥有一个比CKSC小的常数。为了证明本发明的效果,实现了相应的原型系统,从四个方面进行了一系列实验(1)比较在同一距离阈值下三个聚类算法的效率和结果;(2)观察三个算法的效率和结果随着距离阈值变化而产生的变化;(3)对比不同文档上三个算法的效率和结果;(4)比较本发明的XKLuster方法和SLCA方法[2]的效率和结果。系统运行在CPU频率2.8GHZ、内存2G的微机上,软件运行环境是WindowsXP,JDK1.6和Tomcat6.0,XML解析器是Xerces。用作比较三个聚类算法的数据集是DBLP(文档大小127M,结点总数6332225个)和Treebank(文档大小82M,结点总数3829511)[12]。选用这两个文档的原因有二(1)大量的结点数可以提供更加准确的实验结果;(2)两个文档的结构有很强的可比性DBLP的DTD比较简单,因此文档结构很规整,树的高度也不大(最大深度为6,平均深度为2.9),是属于典型的"宽且平"的XML文档,而Treebank则没有DTD,结构很复杂,树高也相对较大(最大深度为36,平均深度为7.9)。首先为每个数据集建立一个单词表,其中包含有在XML文档中出现的一些单词,每个单词的出现频率在5,000到15,000之间。然后,每次随机从单词表中选出几个单词作为关键字,对XML文档进行搜索,反复运行四十次,再取结果的平均值作为实验结果。图5为在不同的关键字个数情况下文档中平均含有的关键字结点总数的情况;图6和图7分别是三个聚类算法在两个文档上使用的时间效率和结果数量的比较。当距离阈值比较大时,(DBLP从6.0开始,Treebank从8.0开始),在实验用的硬件上运行算法GKSC无论从时间还是空间上来看己经很大,所以此时只比较算法CKSC和LCC。另外,在文档比较大时,所以很多情况下会搜索出大量只包含有单个关键字结点的簇,这些簇中的结点在距离阈值内无法找到任何一个相邻结点,为了使图的表达更加清晰,在结果个数比较时忽略这些簇,而只考虑包含有两个以上关键字结点的簇。在图6中容易发现(1)给定关键字个数和距离阈值,三个算法的时间花费从大到小依次是GKSC,CC,LCC。但当距离阈值非常小时(0.0),GKSC算法是花费最小的,(2)随着距离阈值的增大,GKSC所花费的时间一直增大,而CKSC和LCC所花费的时间则是先增大再减小。这说明图7中所展示的三个算法的时间复杂度的特性。在图7(a)中,当距离阈值被设为0.0时,三个算法的返回结果都是那些标签中含有多个关键字的结点。这是因为每一个这种结点都被看成是不同的几个结点;当距离阈值为6.0时,几乎所有的结点都被聚入了少数几个大的簇中;而随着距离阈值的增大,除了单结点簇外的结果数量先增大,然后再减小为l。图7中其它部分与图7(a)的情况基本相同。图7还说明了GKSC和CKSC的返回结果数量相同,而LCC略少。另外还计算了所有返回的簇的平均距离,其中GKSC和CKSC的结果相同,而LCC的稍大(仅仅在小数点后四位)。所以,GKSC和CKSC返回同样的结果(所有的最优簇),而LCC返回了更少并且更大的结果,并与GKSC和CKSC的结果相差不大。从图5中可以看出在关键字个数一定时,从DBLP中获得的平均关键字结点总数要多于从Treebank中获得的平均关键字结点数。但通过图6的比较可以看出,无论使用哪种聚类算法,在相应的情况下,对于Treebank所花费的聚类时间都要大于(有些是远大于)对DBLP所花费的时间,这说明了聚类算法的时间复杂度不只与关键字结点总数相关,还依赖于特定的文档结构以及实际的关键字结点的分布情况。当树的高度更大以及结构更加复杂时,聚类算法的时间花费也会增大。除此之外,在实验中还实现了XKSearch^中寻找SLCA的算法IL(IndexedLookup),并与之进行比较。根据XKSearch,IL的算法复杂度为0(|&|.log|S|)。它将所有的关键字结点按照包含关键字的情况分为一些关键字结点集(具有相同关键字的结点在同一个集合中);ISl是其中最小的集合的结点数,而ISl是所有关键字结点的总数。图8是三个聚类算法和IL算法在DBLP上的时间花费比较(距离阈值为2.0),在其它距离阈值下结果也类似。从图8中可以看出,IL的算法效率比任何一种聚类算法的效率都高,原因在于这两类算法的设计目标不同IL仅仅是从所有关键字结点中找出一组特殊的结点,而聚类算法的目的则是在于根据一个距离阈值找到一个特定的关键字结点集合的一个划分。因为本发明支持关键字之间的"OR"运算,因而通常情况下会得到更多结果。为了进一步进行说明,实验中选用特定的搜索结果来说明XKCluster和SLCA方法结果的异同。这里使用XMarkM数据集来进行两种方法结果的比较实验,因为XMark数据集的DTD中包含大量的递归元素。图9(a)是XMark的一个DTD片段。实验中先使用XMark提供的文档生成器生成一个XML文档,然后使用两种方法分别对该文档进行关键字搜索。图9(b)是该文档的一个文档片段。如果使用"M^'w"和"0^ar"作为搜索的关键字,,贝IJSLCA方法能够找出一个SLCA结点"torf",,然后可以依此返回以该结点为根的子树(是一封邮件的正文)。SLCA方法在选取结果时认为LCA相对最低的结果最优秀,但对于得到的所有结果却不能按照LCA的高低排序。所以即使提供了某种结果的扩展方法,用户也很难确定对哪个结果使用该方法,所以不能得到该邮件的其它信息(比如日期)。而只要距离阈值的大小设置合理,本发明的方法可以得到"ma/r结点和"tec,"结点,从而能够得到更多的信息。实际在现实使用的文档中,这种情况经常发生。因为一封邮件的发送者和接收者的名字往往会在邮件正文中出现。另外,"feywoW元素会导致更多类似情况的出现,因为在DTD中,它直接指向自己形成递归。参考文献[ijV.Hristidis,Y.Papakonstantinou,andA.Balmin.KeywordproximitysearchonXMLgraphs.InICDE,2003.[2jY.Xu,Y.Papakonstantinou.EfficientKeywordSearchforSmallestLCAsinXMLDatabases.InSIGMOD,2005.[3]Y.Li,C.Yu,andH.V,Jagadish.Schema-FreeXQuery.InVLDB,2004.[4jV.Hristidis,N.Koudas,Y.Papakonstantinou,andD.Srivastava.KeywordProximitySearchinXMLTrees.InIEEETransactionsonKnowledgeandDataEngineering,2006[5jS.Cohen,J.Mamou,Y.Kanza,andY.Sagiv.XSEarch:ASemanticSearchEngineforXML.InVLDB,2003.[6jL.Guo,F.Shao,C.Botev,andJ.Shanmugasundaram.XRANK:RankedKeywordSearchoverXMLDocuments.InSIGMOD,2003.[7jZ.LiuandY.Chen.IdentifyingMeaningfulReturnInformationforXMLKeywordSearch.InSIG腳,2007.[8jG.Bhalotia,A.Hulgeri,C.Nakhe,S.Chakrabaxti,andS.Sudaxshan.KeywordsearchingandbrowsingindatabaseusingBANKS.InICDE,2002.V.HristidisandY.Papakonstantinou.Discover:Keywordsearchinrelationaldatabases.InVLDB,2002.[io]S,Agrawal,S.Chaudhuri,andG.Das.DBXplorer:Asystemforkeyword-basedsearchoverrelationaldatabase.InICDE,2002.[ii]H.He,H.Wang,J.Yang,andP.S.Yu.BLINKS:RankedKeywordSearchesonGraphs.InSIGMOD,2007.[12]http://www.cs.Washington,edu/research/xmldatasets/www/repository.html[n〗T.Feder,P.Hell,S.Klein,andR.Motwani.Complexityofgraphpartitionproblems.InSIGACT,1999.[14]Xmark,http:〃monetdb.cwi.nl/xml/.表1<table>tableseeoriginaldocumentpage24</column></row><table>权利要求1、一种基于语义距离模型的XML文档关键字搜索聚类方法,其特征在于具体步骤如下(1)定义用户提交的关键字,并将XML文档的关键字搜索语义定义为关键字之间的语义距离模型,并以此来表示用户的搜索意图;(2)将关键字搜索的返回结果定义为关键字簇的最小组成树;(3)XML文档树进行预处理;(4)根据本发明提出的语义距离模型,选择使用如下三种聚类算法之一种进行XML关键字搜索基于图的聚类算法、核心集驱动的聚类算法和松弛的核心集驱动聚类算法;(5)根据排序模型,对搜索结果进行排序。步骤(1)中将用户提交的关键字定义为一个包含t个关键字的集合L={ki|i=1,…,t},XML文档定义为一棵XML文档树,具体如下定义1.XML文档树,将一颗XML文档树表示为一个8元组d=(V,E,X,label(id),pl(id1,id2),depth(id),dwcode(id),lca(V′)),其中(1)V是树上所有结点的集合,并且每个结点都有唯一的标识符和Dewey编码;(2)EV×V,是树上边的集合;(3)label(id)为标签函数,用来获得标识为id的结点的标签,其中id∈V;(4)XV是树上所有关键字结点的集合,所谓关键字结点即标签中包含关键字的结点;(5)pl(id1,id2)函数,用来取得id1和id2两个结点之间的路径长度,其中id1和id2必须具有祖先后代关系,而此函数返回的结果为它们之间的路径上所包含的边的个数;(6)depth(id)函数,用来获得标识为id的结点的深度(树的根的深度为1),其中id∈V;(7)dwcode(id)函数,用来获得标识为id的结点的Dewey编码,其中id∈V;(8)lca(V′)函数,其中V′V是V的任意子集,函数返回V′中所有结点的最低公共祖先;定义2.两个关键字结点之间的最短路径,两个关键字结点xi和xj的最短路径为结点xi到lca({xi,xj})的路径加上结点xj到lca({xi,xj})的路径;同时,用函数spl(xi,xj)来表示结点xi和xj的最短路径的长度,显然spl(xi,xj)=pl(lca({xi,xj}),xi)+pl(lca({xi,xj}),xj);定义两个关键字结点之间的语义距离,XML文档树上任意两个关键字结点之间的语义距离dis(xi,xj)被定义如下2、根据权利要求1所述的基于语义距离模型的XML文档关键字搜索聚类方法,其特征在于所述步骤(4)中,三种聚类算法具体步骤如下(一)基于图的关键字搜索聚类算法的具体步骤如下(1)从上到下按层次访问#中的结点,在每一层的列表中,从左到右遍历,对于当前访问结点,计算它和同层右边以及下面的某些邻居的距离;(2)对于更低层次的结点,首先确定有多少层次的结点需要被考虑;给定一个",距离公式必须满足<formula>formulaseeoriginaldocumentpage4</formula>,又由于<formula>formulaseeoriginaldocumentpage4</formula>所以<formula>formulaseeoriginaldocumentpage4</formula>成立,也就是说<formula>formulaseeoriginaldocumentpage4</formula>所以<formula>formulaseeoriginaldocumentpage4</formula>是x,下面必须考虑的层次的数目,其中Z7oor函数表示向下取整;(3)计算出所需要考虑的层次数目后,对于A下方y7oor(鄉A(;c,)w)层中的每一层,首先找到x的后代在该层中的位置,再从该位置向左遍历直至距离超出阈值,在这一层中,其它结点都不需要参与考虑;当A是所属层中的第一个结点时,使用二分法去寻找它在y7o。K^^0O.w)个低层次列表中后代结点的位置,并且用指针记录下这些位置;而当义,不是第一个结点时,只从那些记录的位置开始向右寻找后代结点的位置,之后再修改指针到当前位置;(4)每次计算两个结点的距离时,如果小于或等于距离阈值,则将该两个结点用边连接起来,并且记录下距离作为该边的权;(5)上一步结束后,可以得到一个加权的无向图,然后再将图分解得到所有的最大完全字图,从而得到结果簇;(二)核心集驱动的聚类算法的步骤如下定义核心集,对于距离阈值"来说,任一个关键字集合C。^X,如果它所包含的关键字结点中任意两者之间的距离都小于或等于",则G被称为一个核心集(core);定义原始核心集,^中的一个结点集合C/被称为一个原始核心集(coreorigin),当且仅当(l)C/是一个核心集;(2)CZ中的结点都处于^的同一层次;(3)在该层次中不存在一个核心集C。使得CcC。;(1)首先遍历仅将〃中的结点分成一些核心集,对于^的每一层,具体的做法是创建一个空集,将该层第一个结点加入,从第二个结点开始往后遍历,计算第一个结点与遍历当前结点之间的距离;如果小于等于"则将之加入集合;当遇到距离超出"的第一个结点时,再创建一个空集,以该结点为集合中第一个结点继续遍历,直至该层中所有结点都已遍历完;一个原始核心集所包含的是^上同一层次中相邻的一组结点,所以,U…,W是一个原始核心集;(2)再寻找原始核心集周围的核心集,求出包含这些原始核心集的最优簇,当找出…,W在所有层次上需要考虑的核心集后,在每一层取一个核心集组成一个核心集的集合,在该集合内寻找包含^,,;d的最优簇;(三)松驰的核心集驱动聚类算法的具体步骤如下(1)首先遍历层次型数据结构#,得到一组原始核心集;(2)对于^中的每一层建立两个列表头结点列表^VA和尾结点列表77\^;其中,WZ和77^分别按顺序存放该行中所有原始核心集的第一个和最后一个结点;(3)对于每个原始核心集6T,寻找其它所有层次中的一些原始核心集,这些原始核心集中存在结点到所有C。'中结点的距离都小于等于";(4)找到这些原始核心集后,将它们合并到C/中形成一个结果集。全文摘要本发明属于Web数据管理
技术领域
,具体为一种基于语义距离模型的可扩充标记语言(XML)的关键字搜索方法,称为XKLuster。本发明提出一种新的模型,称为“XML关键字语义距离模型”。它通过更全面地考虑XML的层次结构特征来度量XML关键字搜索的语义;基于本发明提出的“XML关键字语义距离模型”,从不同的角度,设计三种聚类算法基于图的关键字聚类算法(GKSC)、核心集驱动的关键字聚类算法(CKSC)和松弛的核心集驱动聚类算法(LCC);提出一种排序模型对所有的搜索结果进行排序,以便将搜索结果返回给用户。与已有方法相比,本发明提出的方法可得到更加合理的返回结果。本发明可用于互联网上的XML文档搜索、XML数据库的搜索等领域。文档编号G06F17/30GK101241502SQ20081003454公开日2008年8月13日申请日期2008年3月13日优先权日2008年3月13日发明者皓朱,杨卫东申请人:复旦大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1