一种基于多样化算法框架TAD的面向Top‑k查询的查询结果即时多样化算法的制作方法

文档序号:13675632阅读:343来源:国知局

本发明涉及top-k查询解释及查询结果多样化技术领域,尤其涉及一种基于多样化算法框架tad的针对动态扩张相似图上极大独立集的多样化算法。



背景技术:

查询结果多样化是一项近年来非常热门的信息处理技术。它旨在从庞大的查询结果集中挑选出一个子集,使得该子集中的查询结果不仅与查询尽可能相关,而且互相之间信息冗余度尽可能低。

这些查询结果多样化方法都假定查询结果集已经获得,并从中搜索得到多样化的top-k查询结果。现有技术中,有将top-k查询的结果构建成一个多样性图,图中顶点代表搜索结果,边代表邻接的两个顶点是相似的,它的目标是寻找k个互不邻接的顶点并使得其相关性评分总和最大。现有技术中,还有构造了一个边际增益的目标函数,每次选择一个查询结果作为多样化结果时,考虑其对查询的相关性和对已有多样化结果的相似性,选择增益最大的查询结果成为新的多样化结果。前两者在考虑多样性问题的时候,关注的是局部多样性,即仅考虑了多样化结果集中元素的互不相似性。现有技术中,还有加入了覆盖度的概念来考虑结果集的全局多样性。它使用欧式距离来衡量结果之间的相似程度,以一个结果为中心,其特定半径范围内的结果都与其相似,定义该结果覆盖了其半径范围内的搜索结果。它的目标在于选取出能覆盖所有搜索结果的代表结果集,这同时也保证了结果集一定的多样化程度。

然而,随着各种应用中数据量的急剧增长,生成所有查询结果的时间和空间代价非常高昂,因而top-k查询成为了普遍的选择。top-k查询旨在找出与查询相关度最高的k个结果,其特点是在满足一定假设的前提下不必遍历所有结果,能在top-k结果被发现后立即终止处理。但top-k查询给多样化技术带来了新的挑战,要求多样化必须嵌入到查询处理过程中,而不是在查询处理完成之后再进行。



技术实现要素:

针对以上技术问题,本发明提出了一种多样化算法框架tad(top-and-diversify),和基于此框架上的一种针对动态扩张相似图上极大独立集的多样化算法divsa(diversifiedsearchalgorithm),是一种在top-k查询处理的过程中,实时的生成多样化结果集的解决方案。

多样化算法框架tad的提出是基于减少冗余计算的考虑,由于搜索的结果并不是按照其相对于查询的相关度降序排列的,如果计算所有的生成结果之间的相似度,将是巨大的开销,因此tad将搜索结果分成两部分,一部分是超过当前相关度分数上界值的搜索结果,设为集合t,另一部分是低于当前相关度分数上界值的搜索结果和仍没有生成的结果。相关度分数上界值指的是目前可能生成的搜索结果相对于关键词的相关度分数的最大值,将此值记为upperbound,大部分经典的top-k查询处理算法都提供了十分有效的相关度分数上界值。

一种基于多样化算法框架tad的面向top-k查询的查询结果即时多样化算法,其特征在于,包括以下步骤:

步骤1:基于流式产生的查询结果,使用nexttop模块得到一个查询结果,将该查询结果加入到集合t中,nexttop模块的具体执行步骤包括:

步骤1.1:基于流式产生的查询结果,使用一个优先队列que存储当前生成的查询结果,按照其对于查询的相关度从大到小在que中依次排序;

步骤1.2:更新upperbound值并判断que中的第一个结果的相关度分数是否超过upperbound,若超过了upperbound,将其作为nexttop模块的结果返回,否则返回步骤1.1;

步骤2:动态的构建集合t的相似图,具体是当集合t中每加入一个新结果,就在对应的相似图中增加一个新节点和相关的边,该相似图的具体构建步骤包括:

步骤2.1:基于一定的相似性度量方法,计算新加入的结点与集合t中所有其他结点的相似度分数;

步骤2.2:若新结点与某个已有结点的相似性分数高过设定的阈值,则在两个结点之间增加一条边;

步骤3:在相似图上执行多样化算法divsa,若能找到满足限制条件的多样化结果集则停止搜索,整个流程结束,否则返回步骤1,继续扩充集合t,该多样化算法divsa是基于动态演化相似图上极大独立集进行,具体包括:

步骤3.1:定义集合spre存储了前一个相似图的所有极大独立集,v为新加入相似图的结点,遍历所有的极大独立集i∈spre,并逐一创建对应新集合i′=i∪v;若集合i中存在结点在相似图中邻接于结点v,则删除对应的i′中邻接于结点v的所有结点;若集合i中没有任何结点邻接于v,从spre中删除i;将新的极大独立集i′加入到新集合snew中,此集合用于保存新相似图的极大独立集;

步骤3.2:删除snew中构成其他集合子集的集合;

步骤3.3:判断snew中是否存在极大独立集其元素个数达到k,若存在一个极大独立集其元素个数达到k,那么便结束搜索,将此极大独立集作为多样化集返回,否则进入步骤3.4;

步骤3.4:spre=spre∪snew,向集合t中加入一个新结点,返回到tad的步骤1。

本发明要解决的技术问题是在一种具有通用性的top-k查询处理过程中,即令其具有如下3个特点:1)查询处理过程流式地而不是完整地生成结果;2)依次生成结果与查询的相关度不一定是有序的;3)对还未生成的结果,存在一个相关度的上界值upperbound,即时而高效地生成多样化结果集。

在上述的一种基于多样化算法框架tad的面向top-k查询的查询结果即时多样化算法,步骤3.2中删除其他集合子集的操作具体流程如下:

步骤3.2.1:将集合snew中的元素按照其内部元素的数量从大到小排序;

步骤3.2.2:从大到小遍历snew中的元素,对于每一个元素,比较它是否是其任意前序元素的子集,若是则删除此元素。

在上述的一种基于多样化算法框架tad的面向top-k查询的查询结果即时多样化算法,其特征在于,所述步骤3中,限制条件包括以下约束条件:

约束条件1:多样化结果集的大小为k,即包含k个查询结果;k为用户输入的想要返回的查询结果数量;

约束条件2:多样化结果集的元素之间互不相似;

约束条件3:在满足前两个条件的所有集合之中,选择集合中相关度最小的元素比其他集合中相关度最小的元素都具有更大相关度分数的集合。

本发明的多样化算法框架tad和多样化算法divsa能够正确和高效的达到限制条件的要求得到多样化结果集是基于以下理论基础的。

本发明的多样化算法框架tad采用了一种有序的方式去搜索候选集合,即先得到的满足互不相似条件的集合之中相关度分数最低的元素的相关度分数高于后得到的集合。因此我们只需要判断当前得到的候选集合(满足互不相似条件的集合,也就是极大独立集)是否达到了k个元素,若满足,它便是我们需要的多样化结果集,之后满足条件的集合其相关度分数最低的元素的相关度分数不会有之前高。整个有序过程是基于按照相关度大小从大到小向t集合中加入元素的过程实现的。相似图动态扩张的过程中,新加入的结点的相关度分数是最低的,因此我们只需要判断包含新结点的极大独立集是否达到了k个元素,以此来判断是否找到多样化结果集。tad不仅保证了算法能正确的找到多样化结果集,由于只进行了必要的计算开销,也保证了算法的高效性。

在普通图上寻找其中所有的极大独立集问题是一个经典的np难问题,本发明的多样化算法是一种增量式的计算方法,利用所保存的前一次相似图的极大独立集全集,使用简单的步骤来求解加入一个新结点后的相似图的极大独立集全集,以此来求得多样化结果集的候选集合,其理论保障如下:

假设g(s′)是加入新结点v之后的相似图,g(s)是加入v之前的相似图。

首先证明g(s′)的不包含新结点v的所有极大独立集都在spre中。假设i是g(s′)中的一个不包含点v的极大独立集,那么易知i也是g(s)的一个独立集。假设i不是g(s)的极大独立集,那么必然存在一个点v′∈g(s)加入i之后使其成为一个极大独立集,然而v′也属于g(s′),i是g(s′)中的一个不包含点v的极大独立集,那么i中必然存在一个点v′相似于点v,此时产生矛盾,因此i必然是g(s)的极大独立集,所以g(s′)中的任意一个不包含点v的极大独立集都是g(s)的极大独立集,由于spre存储着g(s)的所有极大独立集,即得证不包含点v的极大独立集都在spre中。

其次证明g(s′)的包含新结点v的所有极大独立集都在snew中。假设i是g(s′)中的一个包含点v的极大独立集,且其不包含在snew中。从i中删除点v得到一个独立集i′,此时在g(s)中必然存在一个极大独立集i″,使得由snew中元素生成的步骤可知,在snew中存在一个集合i″′由i″加入点v并删除与其相似的点得到,易知而i是g(s′)中的一个极大独立集,所以i″′也是g(s′)一个极大独立集且和i相等。由矛盾可知g(s′)的包含新结点v的所有极大独立集都在snew中。

综上所述,由于g(s′)所有的极大独立集分为两部分,包含和不包含新结点v的极大独立集。因此spre=spre∪snew包含了g(s′)中所有极大独立集。

本发明具有如下优点:本发明使用的多样化top-k查询处理框架tad,在实时的top-k查询结果生成过程中,仅通过集合t中的查询结果得到多样化查询结果,由于将非t集结果排除在相似度的计算之外,可以避免大量的非必要计算,保证了多样化算法的高效性。本发明的多样化算法创新性地使用相似图上极大独立集来完成对多样化结果的搜索,使用增量式算法计算动态扩张相似图的极大独立集,每一次计算极大独立集的时间复杂度仅与前一个相似图上极大独立集数量线性相关,保证了算法的效率。

附图说明

图1是本发明中多样化算法框架tad的流程图。

图2是nexttop函数流程图。

图3是多样化算法divsa的程序框图。

图4是去除snew中构成其它集合子集的元素的函数流程图。

具体实施方式

当前对查询处理的结果多样化过程一般为:假设查询结果全集已知,首先设计查询结果的相关性度量标准,其次设计查询结果互相之间的相似性度量标准,然后设计多样化结果集所需满足的目标函数,目标函数一般都是相关性与相似性的综合度量。最后设计算法从全局结果中挑选出满足目标函数的多样化结果集。

上述过程最缺乏实践性的地方在于假设查询的结果全集已知,且多样化结果集选取时的各类计算针对全集,这使得在查询结果全集较大时,计算开销过大,多样化过程的效率难以保障。

本发明的主要改进方式在于:其一,在查询结果产生的过程中实时计算多样化结果集,避免查询结果全集过大而造成效率低下。其二,使用tad算法框架将查询结果之间的相似度计算局限在少量高相关度查询结果之中,减少了大量的冗余计算。其三,本发明首次使用了基于动态扩张相似图上极大独立集计算的多样化方法,且提出了一种增量式算法计算动态扩张相似图上的极大独立集,给出了一个结果多样化过程完备而高效的解决方案。

一、首先介绍本发明的方法原理,包括:

步骤1:基于流式产生的查询结果,使用nexttop函数得到一个查询结果,将其加入到集合t中。

步骤2:动态的构建集合t的相似图,即集合t中每加入一个新结果,就在对应的相似图中增加一个新节点和相关的边。

步骤3:在相似图上执行多样化算法divsa,若能找到满足限制条件的多样化结果集则停止搜索,返回结果,否则返回步骤1,继续扩充集合t。

在上面所述的步骤1中的nexttop函数,其具体的程序执行步骤如下:

步骤1.1:基于流式产生的查询结果,使用一个优先队列que存储当前生成的查询结果,按照其对于查询的相关度分数从大到小在que中依次排序。

步骤1.2:更新upperbound值并判断que中的第一个结果的相关度分数是否超过upperbound,若超过了upperbound,将其作为nexttop函数的结果返回,否则返回步骤1.1。

对于上述步骤2中提到的相似图,其定义如下:

相似图是本发明定义的一种描述集合t的元素之间相似关系的图形结构。图中每一个顶点代表集合t中的一个搜索结果,若两个搜索结果相似,即其基于一定相似性度量方法的相似度分数超过一定阈值,则在对应的两个顶点之间增加一条边,以此构建的图便是相似图。

其具体构建步骤如下:

步骤2.1:基于一定的相似性度量方法,计算新加入的结点与集合t中所有其他结点的相似度分数。

步骤2.2:若新结点与某个已有结点的相似性分数高过设定的阈值,则在两个结点之间增加一条边。

本发明的多样化算法divsa是通过在当前集合t所对应的相似图上寻找满足约束条件的极大独立集的途径来寻找多样化结果集。独立集是指图中两两互不相邻的顶点构成的集合。若在一个独立集中加入图中任何顶点之后都无法再构成一个独立集,那么此独立集为极大独立集。

本发明所定义的多样化结果集需满足以下三个约束条件:

1)多样化结果集的大小为k,即包含k个查询结果。k为用户输入的想要返回的查询结果数量。

2)多样化结果集的元素之间互不相似。

3)在满足前两个条件的所有集合之中,选择集合中相关度最小的元素比其他集合中相关度最小的元素都具有更大相关度分数的集合。

上述对查询结果相似度的计算有多种方式,目前使用过的方式有欧式距离,jaccard距离等等,由于不是本发明的重点,此处不加细述。条件3描述的约束条件是多样化问题中的经典的fmaxmin目标函数,详细的形式化定义可参见文献[1]。

divf的步骤3中多样化算法divsa的具体执行步骤如下:

步骤3.1:假设集合spre存储了前一个相似图的所有极大独立集,v为新加入相似图的结点,遍历所有的极大独立集i∈spre,并逐一创建对应新集合i′=i∪v。若集合i中存在结点在相似图中邻接于结点v,则删除对应的i′中邻接于结点v的所有结点;若集合i中没有任何结点邻接于v,从spre中删除i。将新的极大独立集i′加入到新集合snew中,此集合用于保存新相似图的极大独立集。

步骤3.2:删除snew中构成其他集合子集的集合。

步骤3.3:判断snew中是否存在极大独立集其元素个数达到k,若存在一个极大独立集其元素个数达到k,那么便结束搜索,将此极大独立集作为多样化集返回,否则进入步骤3.4。

步骤3.4:spre=spre∪snew,向集合t中加入一个新结点,返回到tad的步骤1。

对于步骤3.2中删除其他集合子集的操作具体流程如下:

步骤3.2.1:将集合snew中的元素按照其内部元素的数量从大到小排序。

步骤3.2.2:从大到小遍历snew中的元素,对于每一个元素,比较它是否是其任意前序元素的子集,若是则删除此元素。

二、下面结合附图进行具体实施例的描述。

首先基于增量式集合t动态构建相似图。

由附图2可知,在查询结果流式产生的过程中,按照其相关度分数从大到小插入到优先队列que中。每次更新upperbound的之后,比较que中第一个元素的相关度分数是否超过了upperbound,若是则将此元素返回到tad,若否则继续向que中插入新的结果并更新upperbound。

由附图1可知,对于前面算法流程中返回的结果v,我们将其加入到集合t。首先计算v与集合t中其他元素的相似度分数,以此为依据在原有的相似图上增加边。若v和某一个结点相似度分数超过设定阈值,则在两结点之间增加一条边,表示两个结点所代表的搜索结果是相似的。相似图构建完毕后,通过求解相似图上的极大独立集作为多样化结果集的候选,极大独立集的定义使得集合之中的元素本身满足互不相似的条件,且能够代替所有的独立集,因此只要首次找到一个极大独立集满足元素个数达到k便能得到所求解的多样化结果集。

其次使用增量式算法计算动态扩张相似图的极大独立集。

假设g(s′)是加入新结点v之后的相似图,g(s)是加入v之前的相似图。在附图3中,数据结构spre存储了g(s)的所有极大独立集,snew用来存储g(s′)中包含结点v的极大独立集。我们需要通过遍历spre中的所有极大独立集,以这些集合为基础来生成g(s′)上的所有极大独立集。首先,设i是spre中一个普通的极大独立集,构建一个集合i′=i∪v。其次,判断i中是否有结点和v在g(s′)中邻接,若存在,则从i′中删除与v在g(s′)中邻接的结点,若不存在,则从spre中删除集合i。最后将集合i′加入到数据结构snew中,接下去选取spre中下一个极大独立集重复上述步骤。

之前我们已经证明了spre=spre∪snew包含了g(s′)中所有极大独立集,但是为了减少冗余计算,我们需要剔除spre和snew中冗余的集合。首先在生成g(s′)中的包含结点v的极大独立集过程中,spre中部分集合会变得冗余,比如若i中不存在结点和v在g(s′)中邻接,那么生成的集合i′将完全包含集合i,此时需要从spre中将其删除。其次我们需要剔除snew中冗余的集合,即构成其它集合子集的集合。根据附图4,首先我们需要使用排序算法对snew中的集合根据其集合大小从大到小排序;其次遍历snew中的集合,对每一个集合i,查看是否有其前序集合包含了其本身所有的元素,若是则将i从snew中删除,若否则保留集合i。

最后基于相似图上的极大独立集返回多样化结果集。

根据前面叙述的理论基础,多样化结果集的候选集合只在snew中产生。根据附图3,遍历snew中每一个极大独立集,判断其是否满足k元素条件,若存在一个极大独立集达到k个元素则返回该集合作为多样化结果集。若不存在任何一个极大独立集达到k个元素,那么合并spre和snew作为下一次执行多样化算法divsa的输入。

以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案,都落入本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1