首页 / 专利库 / 人工智能 / 相似性得分 / 采用AI3解决SKQwhy-not问题的方法及系统

采用AI3解决SKQwhy-not问题的方法及系统

阅读:145发布:2020-05-13

专利汇可以提供采用AI3解决SKQwhy-not问题的方法及系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种采用AI3解决SKQwhy-not问题的方法及系统,涉及空间关键字查询技术领域,本发明通过将对象的数字属性以布尔表达式的形式表示,更接近现实应用场景;并设计AI3索引来巧妙的组织对象信息,同时设计出相应的查询策略,实现通过 修改 查询q',用最小的修改代价,满足在查询结果中所有缺失对象均出现,进而解决空间关键字查询中why-not问题的方法及系统。,下面是采用AI3解决SKQwhy-not问题的方法及系统专利的具体信息内容。

1.一种采用AI3解决SKQwhy-not问题的方法,其特征在于,包括以下步骤:
获取所有对象o,构建AI3索引;
获取初始查询q=(q.loc,q.doc0,q.B,k,α)和缺失对象集M;根据缺失对象的关键字的频率递减的顺序构建候选关键字列表CKS、根据缺失对象的相似性得分递减的顺序构建候选属性值对列表CAS;将精炼查询q'的关键字集q'.doc和属性值对q'.B'分别设置为q.doc0和q.B;
有序地抽取CKS中的关键字和CAS中的属性值对,分别添加至查询q'的关键字集q'.doc和查询q'的属性值对q'.B'中,形成新的精炼查询q';分别对各个精炼查询q'进行处理以找出最佳精炼查询,直至CKS和CAS都为空;
分别对各个精炼查询q'进行处理,具体包括:
计算q'的修改代价p',过滤掉p'≥pc的查询q',pc为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中的查询qb的修改代价;
对于p'若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列;对于符合条件的叶子结点指向的磁盘页面中的每个对象,依次判断查询q'的属性值对q'.B'与对象的属性值对是否满足属性匹配,将匹配的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
若为非频繁关键字,则分析其对应的磁盘页面中的每个对象,若查询q'的属性值对q'.B'与对象的属性值对满足属性匹配,则将其对应的磁盘页面中的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
对满足查询q'要求的对象集中的所有对象均根据其相似性得分从高至低排序,直到所有原始结果对象和所有缺失对象均出现,获得k'个对象;
如果k'≤km,km为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中时结果集的大小,则计算q'的修改代价p',如果p'2.如权利要求1所述的方法,其特征在于:获取所有对象o,构建AI3索引,具体包括以下步骤:
使用四叉树结构将数据空间分层划分为单元格;将单元格作为基本的存储单位,存储包含关键字的对象的空间位置属性信息
创建三个组件:用作户的查找表、包含密集关键字单元的摘要信息的头文件,以及在所有倒排列表中存储关键字单元元组的数据文件;
将频繁关键字的基本关键字单元的属性信息存储在四叉树的叶子结点中;
四叉树的每一个非叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是Ri的所有子结点的地址列表和Ri.S是Ri的所有子结点的属性值对的并集;
四叉树的每一个叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是它链接到的磁盘页面的地址,Ri.S是它链接到的磁盘页面中所有对象的属性值对的并集。
3.如权利要求1所述的方法,其特征在于:B为布尔表达式:
为一个谓词集合,其中i∈[1,n],i∈N*。
4.如权利要求1所述的方法,其特征在于:计算q'的修改代价p',计算公式为:
其中,β1,β2,β3,β4分别表示是cost函数中k值、关键字、属性种类、属性值的权重;βi≥0且 k'是精炼查询q'的查询结果集的大小,k0是初始查询q的结果集的大小,km是保留初始查询关键字和属性,且所有的缺失对象都出现在查询结果中时结果集的大小,用km-k0规范化k'-k0;Δdoc是从q.doc0调整到q'.doc所需改变的关键字的数量,其中缺失对象集M={m1,m2,...,mj},通过|q.doc0∪M.doc|来规范化
Δdoc;ΔAn是从初始查询调整到精炼查询所需改变的属性种类的数量,通过|q.B∪M.B|来规范化ΔAn; n是q.B和M.B所包含的属性的总和;Δvi是包含属性Ai的所有
对象关于该属性的属性值的最大差值;|vi'-vi|是属性Ai中当前查询属性值vi'与初始查询属性值vi之间的差值的绝对值,且|vi'-vi|≤Δvi,通过Δvi来规范化|vi'-vi|。
5.如权利要求1所述的方法,其特征在于:计算查询q和对象o之间的相似性得分,计算公式为:
其中α是0到1之间的一个变量,用来定义距离邻近度与文本相关性之间的相对重要性,d(q.loc,o.loc)表示的是查询q与对象o之间的欧氏距离,dmax(q.loc,O.loc)表示的是查询点q到对象集合O中的所有对象的最大距离,用对象集O中所有对象间距离的最大值表示。
6.如权利要求2所述的方法,其特征在于:若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列,具体包括以下步骤:
若为频繁关键字,将其在头文件中的四叉树根结点加入待处理的非叶子结点队列;
判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点;
若不是,过滤掉该子结点;若是,判断该子结点是非叶子结点还是叶子结点;
若是非叶子结点,将该非叶子结点加入待处理的非叶子结点队列等待处理;若是叶子结点,将该叶子结点加入符合条件的叶子结点队列。
7.如权利要求6所述的方法,其特征在于:判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点,判断标准是:
a)在该子结点上具有查询q'的所有属性类别;
b)查询q'的每一个属性值范围与该子结点的对应属性值范围有交集。
8.一种采用AI3解决SKQwhy-not问题的系统,其特征在于,包括:
AI3索引构建模,其用于:获取所有对象o,构建AI3索引;
候选列表构建模块,其用于:获取初始查询q=(q.loc,q.doc0,q.B,k,α)和缺失对象集M;根据缺失对象的关键字的频率递减的顺序构建候选关键字列表CKS、根据缺失对象的相似性得分递减的顺序构建候选属性值对列表CAS;将精炼查询q'的关键字集q'.doc和属性值对q'.B'分别设置为q.doc0和q.B;
精炼查询模块,其用于:有序地抽取CKS中的关键字和CAS中的属性值对,分别添加至查询q'的关键字集q'.doc和查询q'的属性值对q'.B'中,形成新的精炼查询q';分别对各个精炼查询q'进行处理以找出最佳精炼查询,直至CKS和CAS都为空;分别对各个精炼查询q'进行处理,具体包括:
计算q'的修改代价p',过滤掉p'≥pc的查询q',pc为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中的查询qb的修改代价;
对于p'若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列;对于符合条件的叶子结点指向的磁盘页面中的每个对象,依次判断查询q'的属性值对q'.B'与对象的属性值对是否满足属性匹配,将匹配的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
若为非频繁关键字,则分析其对应的磁盘页面中的每个对象,若查询q'的属性值对q'.B'与对象的属性值对满足属性匹配,则将其对应的磁盘页面中的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
对满足查询q'要求的对象集中的所有对象均根据其相似性得分从高至低排序,直到所有原始结果对象和所有缺失对象均出现,获得k'个对象;
如果k'≤km,km为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中时结果集的大小,则计算q'的修改代价p',如果p'9.如权利要求8所述的系统,其特征在于:AI3索引构建模块具体用于:
使用四叉树结构将数据空间分层划分为单元格;将单元格作为基本的存储单位,存储包含关键字的对象的空间位置和属性信息;
创建三个组件:用作门户的查找表、包含密集关键字单元的摘要信息的头文件,以及在所有倒排列表中存储关键字单元元组的数据文件;
将频繁关键字的基本关键字单元的属性信息存储在四叉树的叶子结点中;
四叉树的每一个非叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是Ri的所有子结点的地址列表和Ri.S是Ri的所有子结点的属性值对的并集;
四叉树的每一个叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是它链接到的磁盘页面的地址,Ri.S是它链接到的磁盘页面中所有对象的属性值对的并集。
10.如权利要求9所述的系统,其特征在于:B为布尔表达式:
*
为一个谓词集合,其中i∈[1,n],i∈N。
11.如权利要求9所述的系统,其特征在于:若为频繁关键字,所述精炼查询模块将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列,具体包括以下步骤:
若为频繁关键字,将其在头文件中的四叉树根结点加入待处理的非叶子结点队列;
判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点;
若不是,过滤掉该子结点;若是,判断该子结点是非叶子结点还是叶子结点;
若是非叶子结点,将该非叶子结点加入待处理的非叶子结点队列等待处理;若是叶子结点,将该叶子结点加入符合条件的叶子结点队列。
12.如权利要求11所述的系统,其特征在于:所述精炼查询模块判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点,判断标准是:
a)在该子结点上具有查询q'的所有属性类别;
b)查询q'的每一个属性值范围与该子结点的对应属性值范围有交集。

说明书全文

3

采用AI 解决SKQwhy-not问题的方法及系统

技术领域

[0001] 本发明涉及空间关键字查询技术领域,具体涉及一种采用AI3解决SKQwhy-not问题的方法及系统

背景技术

[0002] 随着越来越多的对象与地理位置和文本描述相关联,空间关键字查询(SKQ)已经被提出且被广泛的研究。在现实生活中,对象一般具有其他的数字属性,例如平均价格、比率、流行度等。如果在查询中没有考虑到这些限制的条件,通常不可能或者很难得到用户所要的结果。因此,为了满足查询用户在这些属性上的限制条件和精炼查询过程,空间关键字查询需要考虑到数字属性。
[0003] 本文主要针对top-k增强型空间关键字查询。在检索top-k对象时,该类查询首先检索满足q查询中的数字属性要求的对象,然后根据查询点与对象之间的空间距离和文本相似性的综合得分进行排名。图1给出的是一个增强型空间关键字查询的一个示例,表1给出的是对象的文本信息和相关属性信息
[0004] 表1:图1中对象的相关信息
[0005]
[0006]
[0007] 如图1所示,用户发起一个关于关键字cafe的查询,其中平均价格不超过42美元、评分高于4.3分、流行度大于700。然后这些增强性的需求可以用一个布尔表达式来表示:(avg-price<42∧Rating>4.3∧Popularity>700)。首先,对象o3、o5、o8满足以上增强性查询需求,然后根据对象o3、o5、o8与查询q之间的文本匹配和空间匹配程度,可以使用所选择的排序函数返回排序在前的前三个对象。除此之外,由于o1与q没有相同的关键字,所以o1被忽略;o2、o4、o6、o7也被忽略,因为它们都不满足查询属性要求。
[0008] 然而,在某些情况下,当用户想要的对象没有出现在查询结果集中,用户可能会思考为什么这些想要的对象没有出现在查询结果集中,如何将他们想要的对象添加到查询结果集中。例如,在用户发起一个查询并且得到包含o3、o5、o8的查询结果后,他或许想知道为什么他们熟悉的对象o1、o6没有出现在查询结果集中,o3、o5、o8难道真的比o1、o6好吗?他们如何才能使他们熟悉的对象o1、o6出现在查询结果集中?
[0009] 在获取查询结果后,用户可能发现他们想要某些对象不在查询结果集中,从而他们就会质疑整个查询结果。解决为什么这些想要的对象缺失以及如何高效地检索出用户想要的查询对象的问题就称为why-not问题。然而,目前尚未有解决增强型的空间关键字top-k查询中why-not问题的相关技术。因此,亟需一种能够解决增强型空间关键字top-k查询中why-not问题的技术方案。

发明内容

[0010] 针对现有技术中存在的缺陷,本发明的目的在于提供一种采用AI3解决SKQwhy-not问题的方法及系统,有效解决空间关键字查询中why-not问题。
[0011] 为达到以上目的,本发明采取的技术方案是:一种采用AI3解决SKQwhy-not问题的方法,包括以下步骤:
[0012] 获取所有对象o,构建AI3索引;
[0013] 获取初始查询q=(q.loc,q.doc0,q.B,k,α)和缺失对象集M;根据缺失对象的关键字的频率递减的顺序构建候选关键字列表CKS、根据缺失对象的相似性得分递减的顺序构建候选属性值对列表CAS;将精炼查询q'的关键字集q'.doc和属性值对q'.B'分别设置为q.doc0和q.B;
[0014] 有序地抽取CKS中的关键字和CAS中的属性值对,分别添加至查询q'的关键字集q'.doc和查询q'的属性值对q'.B'中,形成新的精炼查询q';分别对各个精炼查询q'进行处理以找出最佳精炼查询,直至CKS和CAS都为空;
[0015] 分别对各个精炼查询q'进行处理,具体包括:
[0016] 计算q'的修改代价p',过滤掉p'≥pc的查询q',pc为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中的查询qb的修改代价;
[0017] 对于p'
[0018] 若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列;对于符合条件的叶子结点指向的磁盘页面中的每个对象,依次判断查询q'的属性值对q'.B'与对象的属性值对是否满足属性匹配,将匹配的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0019] 若为非频繁关键字,则分析其对应的磁盘页面中的每个对象,若查询q'的属性值对q'.B'与对象的属性值对满足属性匹配,则将其对应的磁盘页面中的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0020] 对满足查询q'要求的对象集中的所有对象均根据其相似性得分从高至低排序,直到所有原始结果对象和所有缺失对象均出现,获得k'个对象;
[0021] 如果k'≤km,km为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中时结果集的大小,则计算q'的修改代价p',如果p'
[0022] 在上述方案的基础上,获取所有对象o,构建AI3索引,具体包括以下步骤:
[0023] 使用四叉树结构将数据空间分层划分为单元格;将单元格作为基本的存储单位,存储包含关键字的对象的空间位置和属性信息;
[0024] 创建三个组件:用作户的查找表、包含密集关键字单元的摘要信息的头文件,以及在所有倒排列表中存储关键字单元元组的数据文件;
[0025] 将频繁关键字的基本关键字单元的属性信息存储在四叉树的叶子结点中;
[0026] 四叉树的每一个非叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是Ri的所有子结点的地址列表和Ri.S是Ri的所有子结点的属性值对的并集;
[0027] 四叉树的每一个叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是它链接到的磁盘页面的地址,Ri.S是它链接到的磁盘页面中所有对象的属性值对的并集。
[0028] 在上述方案的基础上,B为布尔表达式:
[0029]
[0030] 为一个谓词集合,其中i∈[1,n],i∈N*。
[0031] 在上述方案的基础上,计算q'的修改代价p',计算公式为:
[0032]
[0033] 其中,β1,β2,β3,β4分别表示是cost函数中k值、关键字、属性种类、属性值的权重;βi≥0且 k'是精炼查询q'的查询结果集的大小,k0是初始查询q的结果集的大小,km是保留初始查询关键字和属性,且所有的缺失对象都出现在查询结果中时结果集的大小,用km-k0规范化k'-k0;Δdoc是从q.doc0调整到q'.doc所需改变的关键字的数量,其中缺失对象集M={m1,m2,...,mj},通过|q.doc0∪M.doc|来规范化Δdoc;ΔAn是从初始查询调整到精炼查询所需改变的属性种类的数量,通过|q.B∪M.B|来规范化ΔAn; n是q.B和M.B所包含的属性的总和;Δvi是包含属性Ai的所有
对象关于该属性的属性值的最大差值;|vi'-vi|是属性Ai中当前查询属性值vi'与初始查询属性值vi之间的差值的绝对值,且|vi'-vi|≤Δvi,通过Δvi来规范化|vi'-vi|。
[0034] 在上述方案的基础上,计算查询q和对象o之间的相似性得分,计算公式为:
[0035]
[0036] 其中α是0到1之间的一个变量,用来定义距离邻近度与文本相关性之间的相对重要性,d(q.loc,o.loc)表示的是查询q与对象o之间的欧氏距离,dmax(q.loc,O.loc)表示的是查询点q到对象集合O中的所有对象的最大距离,用对象集O中所有对象间距离的最大值表示。
[0037] 在上述方案的基础上,若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列,具体包括以下步骤:
[0038] 若为频繁关键字,将其在头文件中的四叉树根结点加入待处理的非叶子结点队列;
[0039] 判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点;
[0040] 若不是,过滤掉该子结点;若是,判断该子结点是非叶子结点还是叶子结点;
[0041] 若是非叶子结点,将该非叶子结点加入待处理的非叶子结点队列等待处理;若是叶子结点,将该叶子结点加入符合条件的叶子结点队列。
[0042] 在上述方案的基础上,判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点,判断标准是:
[0043] a)在该子结点上具有查询q'的所有属性类别;
[0044] b)查询q'的每一个属性值范围与该子结点的对应属性值范围有交集。
[0045] 本发明还提供一种采用AI3解决SKQwhy-not问题的系统,包括:
[0046] AI3索引构建模,其用于:获取所有对象o,构建AI3索引;
[0047] 候选列表构建模块,其用于:获取初始查询q=(q.loc,q.doc0,q.B,k,α)和缺失对象集M;根据缺失对象的关键字的频率递减的顺序构建候选关键字列表CKS、根据缺失对象的相似性得分递减的顺序构建候选属性值对列表CAS;将精炼查询q'的关键字集q'.doc和属性值对q'.B'分别设置为q.doc0和q.B;
[0048] 精炼查询模块,其用于:有序地抽取CKS中的关键字和CAS中的属性值对,分别添加至查询q'的关键字集q'.doc和查询q'的属性值对q'.B'中,形成新的精炼查询q';分别对各个精炼查询q'进行处理以找出最佳精炼查询,直至CKS和CAS都为空;分别对各个精炼查询q'进行处理,具体包括:
[0049] 计算q'的修改代价p',过滤掉p'≥pc的查询q',pc为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中的查询qb的修改代价;
[0050] 对于p'
[0051] 若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列;对于符合条件的叶子结点指向的磁盘页面中的每个对象,依次判断查询q'的属性值对q'.B'与对象的属性值对是否满足属性匹配,将匹配的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0052] 若为非频繁关键字,则分析其对应的磁盘页面中的每个对象,若查询q'的属性值对q'.B'与对象的属性值对满足属性匹配,则将其对应的磁盘页面中的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0053] 对满足查询q'要求的对象集中的所有对象均根据其相似性得分从高至低排序,直到所有原始结果对象和所有缺失对象均出现,获得k'个对象;
[0054] 如果k'≤km,km为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中时结果集的大小,则计算q'的修改代价p',如果p'
[0055] 在上述方案的基础上,AI3索引构建模块具体用于:
[0056] 使用四叉树结构将数据空间分层划分为单元格;将单元格作为基本的存储单位,存储包含关键字的对象的空间位置和属性信息;
[0057] 创建三个组件:用作门户的查找表、包含密集关键字单元的摘要信息的头文件,以及在所有倒排列表中存储关键字单元元组的数据文件;
[0058] 将频繁关键字的基本关键字单元的属性信息存储在四叉树的叶子结点中;
[0059] 四叉树的每一个非叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是Ri的所有子结点的地址列表和Ri.S是Ri的所有子结点的属性值对的并集;
[0060] 四叉树的每一个叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是它链接到的磁盘页面的地址,Ri.S是它链接到的磁盘页面中所有对象的属性值对的并集。
[0061] 在上述方案的基础上,B为布尔表达式:
[0062]
[0063] 为一个谓词集合,其中i∈[1,n],i∈N*。
[0064] 在上述方案的基础上,若为频繁关键字,所述精炼查询模块将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列,具体包括以下步骤:
[0065] 若为频繁关键字,将其在头文件中的四叉树根结点加入待处理的非叶子结点队列;
[0066] 判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点;
[0067] 若不是,过滤掉该子结点;若是,判断该子结点是非叶子结点还是叶子结点;
[0068] 若是非叶子结点,将该非叶子结点加入待处理的非叶子结点队列等待处理;若是叶子结点,将该叶子结点加入符合条件的叶子结点队列。
[0069] 在上述方案的基础上,所述精炼查询模块判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点,判断标准是:
[0070] a)在该子结点上具有查询q'的所有属性类别;
[0071] b)查询q'的每一个属性值范围与该子结点的对应属性值范围有交集。
[0072] 与现有技术相比,本发明的优点在于:
[0073] 本发明通过将对象的数字属性以布尔表达式的形式表示,更接近现实应用场景;并设计AI3索引来巧妙的组织对象信息,同时设计出相应的查询策略,实现通过修改查询q',用最小的修改代价,满足在查询结果中所有缺失对象均出现,进而解决空间关键字查询中why-not问题的方法及系统。
附图说明
[0074] 图1为背景技术的对象集实例示意图;
[0075] 图2为本发明实施例的用AI3索引对对象进行划分的示意图;
[0076] 图3为本发明实施例的AI3索引的一个实例的结构示意图;
[0077] 图4为本发明实施例的基于AI3索引的算法示意图。

具体实施方式

[0078] 本发明实施例提供一种采用AI3解决SKQwhy-not问题的方法,包括以下步骤:
[0079] 获取所有对象o,构建AI3索引;
[0080] 获取初始查询q=(q.loc,q.doc0,q.B,k,α)和缺失对象集M,q.loc表示查询q所在位置,q.doc0表示查询q关键字集,q.B为布尔表达式,用来表示属性值对,k表示取查询结果排名的前k位,a为0到1之间的一个变量,用来定义距离邻近度与文本相关性之间的相对重要性;根据缺失对象的关键字的频率递减的顺序构建候选关键字列表CKS、根据缺失对象的相似性得分递减的顺序构建候选属性值对列表CAS;将精炼查询q'的关键字集q'.doc和属性值对q'.B'分别设置为q.doc0和q.B;
[0081] 有序地抽取CKS中的关键字和CAS中的属性值对,分别添加至查询q'的关键字集q'.doc和查询q'的属性值对q'.B'中,形成新的精炼查询q';分别对各个精炼查询q'进行处理以找出最佳精炼查询,直至CKS和CAS都为空;
[0082] 分别对各个精炼查询q'进行处理,具体包括:
[0083] 计算q'的修改代价p',过滤掉p'≥pc的查询q',pc为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中的查询qb的修改代价;
[0084] 对于p'
[0085] 若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列;对于符合条件的叶子结点指向的磁盘页面中的每个对象,依次判断查询q'的属性值对q'.B'与对象的属性值对是否满足属性匹配,将匹配的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0086] 若为非频繁关键字,则分析其对应的磁盘页面中的每个对象,若查询q'的属性值对q'.B'与对象的属性值对满足属性匹配,则将其对应的磁盘页面中的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0087] 对满足查询q'要求的对象集中的所有对象均根据其相似性得分从高至低排序,直到所有原始结果对象和所有缺失对象均出现,获得k'个对象;
[0088] 如果k'≤km,km为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中时结果集的大小,则计算q'的修改代价p',如果p'
[0089] 以下结合附图对本发明的实施例作进一步详细说明。
[0090] 一、增强型空间关键字top-k查询的定义
[0091] 谓词是构成布尔表达式的基本组件。给定四元组(A,fopt,fopd,x),其中A是属性,fopt是操作数,fopd是操作符,x是输入的值,可以更方便地定义谓词。
[0092] 定义1:谓词。
[0093] 如果一个映射函数p满足 那么 就是一个谓词。其中,若输入值x在谓词规定范围内,那么映射函数将返回1,否则就返回0。
[0094] 定义2:布尔表达式。
[0095] 已知一个谓词集合 其中i∈[1,n],i∈N*,那么布尔表达式B可以定义如下:
[0096]
[0097] 定义3:文本-空间对象。
[0098] 已知一个空间点o.loc,一组关键字集合o.doc和一组属性-值对{,...,,...,},文本空间对象o可以表示如下:
[0099] o=<o.loc,o.doc,o.S>,其中o.S={(A1=v1)∩(A1=v1)∩…∩(An=vn)}[0100] 定义4:增强型空间关键字查询。
[0101] 已知一个空间点q.loc,一个关键字集合q.doc0和一个布尔表达式q.B,那么一个增强型空间关键字查询q可以表达为:
[0102] q=<q.loc,q.doc0,q.B>
[0103] 定义5:关键字匹配。
[0104] 对于查询q和对象o,当且仅当q.doc和o.doc包含相同的关键字时,查询q和对象o才称为关键字匹配,也即:q.doc∩o.doc≠φ
[0105] 这里使用 表示关键字匹配
[0106] 定义6:属性匹配。
[0107] 对于查询q和对象o,当且仅当满足以下两个条件:a)q.B中的所有属性都包含在o.S中;b) (假设属性q.B中的属性Ai与o.S中的属性Ai'相等),其中: (Ai'=vi')∈o.S,那么查询q和
对象o就是属性匹配。
[0108] 使用 表示属性匹配
[0109] 定义7:综合匹配。
[0110] 当且仅当增强型空间关键字查询q和文本空间对象o同时满足关键字匹配和属性匹配时,q和o就是综合匹配,也即:
[0111]
[0112] 这里使用 表示综合匹配
[0113] 现在定义一个Rank函数来度量查询q和对象o之间的相似性得分:
[0114]
[0115] 其中α是0到1之间的一个变量,用来定义距离邻近度与文本相关性之间的相对重要性,d(q.loc,o.loc)表示的是查询q与对象o之间的欧氏距离,dmax(q.loc,O.loc)表示的是查询点q到对象集O中的所有对象的最大距离,具体用对象集O中所有对象间距离的最大值表示。
[0116] 定义8:增强型空间关键字top-k查询。
[0117] 已知一个对象集合O,增强型空间关键字top-k查询q=(loc,doc0,B,k,α)检索一个对象集合O’, 它满足:|O’|=k,且 o’∈O-O’,Rank(q,o)>Rank(q,o’).[0118] 二、增强型空间关键字top-k查询中的why-not问题
[0119] 当用户发起一个增强型Top-k空间关键字查询q=(loc,doc0,B,k,α),如果查询参数,例如文本描述、查询属性、k值和α设置不合理,这就会导致一个或者多个用户期望的对象可能意外缺失了,这种对象就称为缺失对象,用M={m1,m2,...,mj}表示。从而用户将会提出一个关于缺失对象集M={m1,m2,...,mj}的why-not问题,来询问为什么这些期望的对象会缺失,并寻求一个完善的、能够包含所有缺失对象的结果集的精炼查询q'=(loc,doc,B',k',α)。由于查询的位置通常是确定的,所以可以通过改变查询关键字集合、布尔表达式、k值和α值来改善初始查询。
[0120] 考虑到精炼查询q'的结果集包含所有的缺失对象,使q'.doc除了包含原始关键字集,也将部分或者所有的缺失对象的关键字包含进去,即,CKS是一个按照关键字频率排序的缺失对象的有序关键字列表,函数Out_List(CKS)表示从CKS中取出第一个关键字,并返回该关键字。例如在例1中通过查询q筛选掉o1,o2,o4,o6,o7,假如o4和o6是缺失的对象,关键字“center”的频率高于关键字“Cosmic”,那么在CKS中“center”就排在“Cosmic”的前面,此时CKS={“center”,“Comic”}。类似的,让q'.B'满足除原始属性值对集之外的、所有缺失对象的每个属性值对的要求,即,CAS表示的是按照对象相似性得分排序的、缺失对象的有序属性值对列表。函数Out_List(CAS)表示从CAS中取出、并返回第一个属性值对。综合以上例子,假设o4的相似性得分排名比o6的高,因此o4的属性值对就排在o6的属性值对前面。这是因为高得分对象一般是用户更加期望得到的,所以他们的属性值更符合用户的需求。因此,优先考虑o4的属性值对,可以得到:
[0121] q′.B′=q.B∪Out_List(CAS)=q.B∪o4.B
[0122]      =(avg-price≤42)∧(Rating>4.3)∧Popularity>700)
[0123] 其中,q.B=(avg-price<42∧Rating>4.3∧Popularity>700),o4.S=(avg-price=42∧Rating=4.4∧Popularity=900)。
[0124] 由于o6仍然不满足此精炼查询,因此考虑其属性值对,即,o6.S=(avg-price=35∧Rating=4.6∧Popularity=NULL),因而使得q′.B′=(avg-price≤42)∧(Rating>4.3)。
[0125] 考虑到改变不同查询参数的值会对查询的优化产生不同的影响,精炼查询q'与初始查询q之间的修改代价可以定义如下:
[0126]
[0127] 其中,β1,β2,β3,β4分别表示是cost函数中k值、关键字、属性种类、属性值的权重。βi≥0且 k'是精炼查询q'的查询结果集的大小,k0是初始查询q的结果集的大小,用km-k0规范化k'-k0。这是因为在许多前人的研究中,是通过保留初始查询关键字和属性,增大k0到km直到所有的缺失对象都出现在查询结果集中的方法来获取基本的精炼查询qb。
与之相反,较佳的精炼查询可以通过修改k值、关键字、属性种类和属性值来使得查询修改代价降低。其中k'-k0小于或等于km-k0。Δdoc是从q.doc0调整到q'.doc所需改变关键字的数量, 其中缺失对象集M={m1,m2,...,mj}。这里通过|q.doc0∪M.doc|
来规范化Δdoc;ΔAn是从初始查询调整到精炼查询所需改变的属性种类的数量,这里通过|q.B∪M.B|来规范化ΔAn;然后 n是q.B和M.B所包含的属性的总和。Δvi是
包含属性Ai的所有对象关于该属性的属性值的最大差值。|vi'-vi|是属性Ai中当前查询属性值vi'与初始查询属性值vi之间的差值的绝对值,且|vi'-vi|≤Δvi。这里通过Δvi来规范化|vi'-vi|。
[0128] ΔAn和Δdoc可以通过编辑距离来计算。在图1的例子中,将初始查询q修改成精炼查询q',其中q'.doc="{cat},{cafe}",q'.A=(avg-price<42)∪(Rating>4.5)∪(Popularity>700),则ΔAn=1,Δdoc=1。
[0129] 三、采用AI3索引的解决空间关键字查询中why-not问题的方法
[0130] 根据查询关键字是频繁关键字还是非频繁关键字,设计了AI3索引来提高查询效率,用于解决增强型空间关键字top-k查询的why-not问题。AI3索引是基于I3索引,使用四叉树结构将数据空间分层划分为单元格,来处理时空文本信息。索引将关键字单元格作为基本的存储单位,该单元格捕获包含关键字的对象的空间位置和属性信息。
[0131] 图2表示的是图1中两个关键字“cat”和“cafe”的关键字单元。将包含对象数不超过给定阈值的单元称为基本关键字单元;反之称为稠密关键字单元。假设一个单元格包含的对象数的阈值为2,因此,该关键字的每个基本关键字单元格最多包含两个带有此关键字的对象。图2中关于关键字“cat”的单元中,C1、C2、C42、C43和C44是基本单元,而C4是稠密单元。
[0132] 与I3类似,本发明实施例的AI3也包含三个主要组件:用作门户的查找表、包含密集关键字单元的摘要信息的头文件,以及在所有倒排列表中存储关键字单元元组的数据文件。与I3不同的是,AI3不仅使用了文本信息和空间信息来检索用户期望的对象,而且在头文件中也使用了属性信息来提高修剪的效率。具体而言,AI3将属性信息引入四叉树的结点摘要中。如果非叶子结点的属性信息和查询属性不是“属性匹配”,则将修剪该结点及其所有子结点。
[0133] 四叉树的每个非叶子结点Ri都包含一个三元组(Ri.id,Ri.S,Ri.Address),其中Ri.id是结点id,Ri.Address是Ri的所有子结点的地址列表和Ri.S是Ri的所有子结点的属性值对的并集。由于头文件存储在存储器中,为了节省查询时间,尤其是访问磁盘页面的时间,频繁关键字的基本关键字单元的属性信息被存储在四叉树的叶子结点中,而不是磁盘页面中。当叶子结点的属性信息和查询属性不匹配时,将忽略对应的磁盘页面。四叉树的每个叶结点Ri包含一个三元组(Ri.id,Ri.S,Ri.Address)。其中Ri.id是结点id,Ri.Address是它链接到的磁盘页面的地址,Ri.S是它链接到的磁盘页面中所有对象的属性值对的并集。
[0134] 继续图1中的示例,其中
[0135] o5.S=(avg-price=37∧Rating=4.5∧Popularity=1400),
[0136] o6.S=(avg-price=35∧Rating=4.6),o7.S=(Rating=4.3∧Popularity=700),
[0137] o8.S=(avg-price=38∧Rating=4.6∧Popularity=1600),如图3所示,R7包含对象o5和o6,因此
[0138] R7.S=Cover(o5.S,o6.S)=(avg-price∈[35,37])∧(Rating∈[4.5,4.6])∧(Popularity=1400)。
[0139] 这里函数Cover(oi.S,oj.S)返回的是值范围的列表,每一个值范围覆盖了Oi.S.Ak到Oj.S.Ak之间的每一个属性Ak∈oi.S∪oj.S的属性值范围。注意函数Cover()也适用于两个非叶子结点Ri和Rj,和具有更多参数的情况。然后:
[0140] R5.S=Cover(R7.S,R8.S,R9.S)=(avg-price∈[35,38])∧(Rating∈[4.3,4.6])∧(Popularity∈[700,1600])
[0141] 在I3中,可以将数据文件的不同基本关键字单元中的对象存储在磁盘页中以提高存储利用率,但这意味着,如果将磁盘页基本关键字单元中的某些对象加载到内存中进行处理,则来自该磁盘页的其他基本关键字单元也被加载到内存中以进行处理,这将消耗时间。相反,对于AI3,为了提高查询效率,磁盘页面仅存储AI3中的一个基本关键字单元的对象,这样当该磁盘页面加载到内存中时不会出现其他无关对象。
[0142] 图3给出了为图1中的对象构建的AI3索引。在图3中,关键字“cat”和“cafe”都存储在查找表中,并且这两个频繁关键字都各自链接到头文件中的四叉树。每个四叉树结点的属性值对用于修剪不合格的树分支。头文件中的每个四叉树叶结点都链接到数据文件的相关磁盘页面,根据叶结点的属性值对,可以确定需要访问哪些磁盘页。
[0143] 参见图4所示,该算法说明了使用AI3的增强型why-not空间关键字top-k查询处理方法的详细实现。该方法将AI3索引,初始查询q,缺失的对象集M,候选关键字列表CKS,候选属性值对列表CAS,基本优化查询qb中的惩罚Pc,qb中的查询结果对象km的数量作为输入。输出的是最佳的精炼查询q'。
[0144] 具体而言,CKS是根据关键字的频率递减的顺序排列的缺失对象的关键字有序列表,而CAS是根据缺失对象的相似性得分递减的顺序排列的缺失对象的属性值对有序列表。这两个列表是预先构建的,候选关键字和候选属性值对的处理顺序在获取精炼查询中起着重要作用。对于Pc,其值等于使用式(2)计算所得的cost(q,qb)。qb是之前讨论过的基本精炼查询。
[0145] 将队列D,队列D’,队列W,指针TWord,指针TNode,集合RRS初始化为空,分别用来存储符合条件的头文件中四叉树的非叶子结点,符合条件的头文件的四叉树叶子结点,精炼查询的关键字,正在处理的精炼查询的关键字,正在访问的头文件四叉树结点和满足优化精炼要求的对象集(第4行)。接下来,让q'.doc和q'.B'分别等于q.doc0和q.B(第5行)。接着,有序地取出CKS中的关键字和CAS中的属性值对,并将它们分别添加到q‘.doc和q'.B'中,从而形成新的精炼查询,然后对其进行处理以找出最佳的精炼查询,直到CKS和CAS都为空。
[0146] 第7-38行给出了每个精炼查询q'的处理步骤。首先,通过参数修改获得精炼查询q'。具体而言,将CKS中的第一个关键字和CAS中的第一个属性值对取出,分别添加到q'.doc和q'.B'中(第7-8行);在这里,函数Out_List(CKS)取出其第一个关键字并返回此关键字,而函数Out_List(CAS)的作用类似于Out_List(CKS);令k'为k0。然后根据等式(2)计算p'的成本q',以尽早过滤比qb代价高的精炼查询。如果p'≥Pc,则终止循环(10-11行)。否则,将精炼查询的关键字入队到队列W(第12行)来继续q'的处理过程(第13-29行):根据队列W的每个关键字的频率,以确定队列W的关键字是否为频繁关键字,并分别进行处理。
[0147] 第15-29行给出频繁关键字的处理步骤。对于TWord指向的频繁关键字,将其在头文件中的四叉树根结点推入队列D(第16行),然后将其合格的非叶子结点推入队列D进行处理,从而获得队列D',该队列保留合格的叶结点以便进一步处理。
[0148] 当队列D不为空时,D中的元素按如下顺序处理:1)将D中的头元素弹出并由TNode指向该元素(第18行);2)对于TNode的每个子结点ns,如果该结点满足以下要求:a)可以在ns.S上找到精炼查询q'的所有属性类别;b)q'的每个属性值范围与ns的对应属性值范围存在交集;则此结点可能包含结果对象,且是“合格”的,需要进一步处理(第20行)。然后,如果ns是非叶子结点,则将ns入队到队列D。如果ns是叶子结点,将ns入队到队列D'(第21-24行)。
[0149] 接下来,处理队列D'以获得查询结果q'.RRS。当队列D'不为空时,D'中的元素按如下顺序处理:1)弹出D'的头元素(结点)并由TNode指向它(第26行);2)对于TNode的每个对象oi,如果精炼查询属性q'.B'与oi.S属性匹配,则可以根据等式(1)计算对象oi的相似性得分,并将这个对象添加到RRS中(第27-29行)。
[0150] 第31-33行给出了非频繁关键字的处理步骤。对于由TWord链接的磁盘页面中的每个对象oi,如果精炼查询属性q'.B'与oi.S满足属性匹配,则可以根据等式(1)计算对象oi的相似性得分,并将该对象添加到RRS中(第31-33行)。
[0151] 接下来,对RRS中的所有对象均根据其相似性得分进行排序。直到所有原始结果对象和所有缺失对象均出现,可以获得得分最高的前k'个对象(第34行)。如果k'≤km,则计算出q'的成本(第36行);如果p'
[0152] 本发明实施例还提供一种采用AI3解决SKQwhy-not问题的系统,包括:
[0153] AI3索引构建模块,其用于:获取所有对象o,构建AI3索引;
[0154] 候选列表构建模块,其用于:获取初始查询q=(q.loc,q.doc0,q.B,k,α)和缺失对象集M;根据缺失对象的关键字的频率递减的顺序构建候选关键字列表CKS、根据缺失对象的相似性得分递减的顺序构建候选属性值对列表CAS;将精炼查询q'的关键字集q'.doc和属性值对q'.B'分别设置为q.doc0和q.B;
[0155] 精炼查询模块,其用于:有序地抽取CKS中的关键字和CAS中的属性值对,分别添加至查询q'的关键字集q'.doc和查询q'的属性值对q'.B'中,形成新的精炼查询q';分别对各个精炼查询q'进行处理以找出最佳精炼查询,直至CKS和CAS都为空;分别对各个精炼查询q'进行处理,具体包括:
[0156] 计算q'的修改代价p',过滤掉p'≥pc的查询q',pc为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中的查询qb的修改代价;
[0157] 对于p'
[0158] 若为频繁关键字,则将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列;对于符合条件的叶子结点指向的磁盘页面中的每个对象,依次判断查询q'的属性值对q'.B'与对象的属性值对是否满足属性匹配,将匹配的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0159] 若为非频繁关键字,则分析其对应的磁盘页面中的每个对象,若查询q'的属性值对q'.B'与对象的属性值对满足属性匹配,则将其对应的磁盘页面中的对象添加到满足查询q'要求的对象集中,并计算查询q'和对象之间的相似性得分;
[0160] 对满足查询q'要求的对象集中的所有对象均根据其相似性得分从高至低排序,直到所有原始结果对象和所有缺失对象均出现,获得k'个对象;
[0161] 如果k'≤km,km为保留初始查询关键字和属性、且所有的缺失对象都出现在查询结果中时结果集的大小,则计算q'的修改代价p',如果p'
[0162] 作为优选的实施方式,AI3索引构建模块具体用于:
[0163] 使用四叉树结构将数据空间分层划分为单元格;将单元格作为基本的存储单位,存储包含关键字的对象的空间位置和属性信息;
[0164] 创建三个组件:用作门户的查找表、包含密集关键字单元的摘要信息的头文件,以及在所有倒排列表中存储关键字单元元组的数据文件;
[0165] 将频繁关键字的基本关键字单元的属性信息存储在四叉树的叶子结点中;
[0166] 四叉树的每一个非叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是Ri的所有子结点的地址列表和Ri.S是Ri的所有子结点的属性值对的并集;
[0167] 四叉树的每一个叶子结点Ri都包含三个属性:Ri.id,Ri.S,Ri.Address,其中Ri.id是结点id,Ri.Address是它链接到的磁盘页面的地址,Ri.S是它链接到的磁盘页面中所有对象的属性值对的并集。
[0168] 作为优选的实施方式,B为布尔表达式:
[0169]
[0170] 为一个谓词集合,其中i∈[1,n],i∈N*。
[0171] 作为优选的实施方式,若为频繁关键字,所述精炼查询模块将其在头文件中的四叉树根结点加入待处理的非叶子结点队列,根据预设的筛选规则选出符合条件的叶子结点,加入符合条件的叶子结点队列,具体包括以下步骤:
[0172] 若为频繁关键字,将其在头文件中的四叉树根结点加入待处理的非叶子结点队列;
[0173] 判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点;
[0174] 若不是,过滤掉该子结点;若是,判断该子结点是非叶子结点还是叶子结点;
[0175] 若是非叶子结点,将该非叶子结点加入待处理的非叶子结点队列等待处理;若是叶子结点,将该叶子结点加入符合条件的叶子结点队列。
[0176] 作为优选的实施方式,所述精炼查询模块判断待处理的非叶子结点队列中当前结点的子结点是否是合格的结点,判断标准是:
[0177] a)在该子结点上具有查询q'的所有属性类别;
[0178] b)查询q'的每一个属性值范围与该子结点的对应属性值范围有交集。
[0179] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈