基于距离划分树的高维数据相似性连接查询方法及装置与流程

文档序号:15982294发布日期:2018-11-17 00:28阅读:148来源:国知局

本发明涉及数据处理技术领域,具体而言,涉及一种基于映射空间划分的高维数据相似性连接查询方法及装置。

背景技术

随着数据采集技术的发展和数据采集设备的进步,数据规模、数据精度、数据维度都以前所未有的方式迅速增加。很多类型数据的维度可以达到数千维,甚至上万维,如图形图像、视频、轨迹、时间序列等。高维数据相似性连接查询的目的是从海量高维数据集合中,找出其相似度大于等于给定相似度阈值或者其距离小于等于给定距离阈值的数据对,其在很多领域中均有重要应用,如图片聚类、文档去重、相似视频检测等。

海量高维数据相似性连接查询是一种计算密集型操作,随着数据规模和维度的不断增加,传统的集中式处理方式和基于索引的算法已不能满足性能要求。

相似性查询是一种应用广泛的重要操作,目前有很多血症对其进行了大量研究,针对大规模数据相似性连接查询面临的性能和扩展问题,现有技术中,通过mapreduce框架来进行解决,但是,对于高维数据来说,在通过mapreduce框架进行相似性查询时,其计算复杂度较高,从而导致了查询效率低的问题。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种基于距离划分树的高维数据相似性连接查询方法及装置,以解决上述技术问题。

第一方面,本发明实施例提供了一种基于距离划分树的高维数据相似性连接查询方法,包括:

获取所有待查询的高维的原始数据,并将所述原始数据映射到一维空间;

根据预设的第一距离阈值及卡方分布性质确定第二距离阈值,根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树;

遍历所述距离划分树,并对所述距离划分树中的各节点进行比较,获得候选相似节点对集合;

计算所述候选相似节点对集合中各候选相似节点对包括的原始数据之间的原始距离,并将所述原始距离与所述第一距离阈值进行比较,获得相似性查询结果。

进一步地,所述根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树,包括:

根据所述原始数据构建根节点;

根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据的个数小于或等于所述预设阈值,获得所述距离划分树。

进一步地,所述根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树,包括:

从所述原始数据中随机获取原始数据子集,根据所述原始数据子集构建对应的初始距离划分树;

对所述初始距离划分树按照预设规则进行扩展,获得所述距离划分树;其中,所述预设规则包括:

对所述初始距离划分树中的第一层子节点进行扩展;

若所述初始距离划分树中的第一层最左边子节点的编号大于1,则生成一个虚拟子节点;

在所述初始距离划分树中的第一层最右边生成一个虚拟子节点;

若判断获知所述初始距离划分树中的第一层的所述子节点的编号非连续,则在非连续编号的两个子节点中间生成一个虚拟子节点。

进一步地,所述根据所述原始数据子集构建对应的初始距离划分树,包括:

根据所述原始数据子集构建根节点;

将所述原始数据子集映射到一维空间,并根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据子集在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据子集的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据子集的个数小于或等于所述预设阈值,获得初始距离划分树。

进一步地,所述遍历所述距离划分树,并对所述距离划分树中的各节点进行比较,获得候选相似节点对集合,包括:

遍历所述距离划分树,并获得对应的叶子节点集合;

将所述叶子节点集合中的每一叶子节点构成一个候选相似节点对,并加入到所述候选相似节点对集合中;

若判断获知叶子节点ni的距离范围下界与叶子节点nj的距离范围上界之差小于或等于第二距离阈值,则将所述叶子节点ni和所述叶子节点nj构成一个候选相似节点对,并加入到所述候选相似节点对集合中,其中,i和j均为正整数,且i>j。

进一步地,所述将所述原始距离与所述第一距离阈值进行比较,获得相似性查询结果,包括:

若判断获知所述原始距离小于或等于所述第一距离阈值,则将所述原始距离对应的所述候选数据对作为所述相似性查询结果。

第二方面,本发明实施例提供了一种基于距离划分树的高维数据相似性连接查询装置,包括:

映射模块,用于获取所有待查询的高维的原始数据,并将所述原始数据映射到一维空间;

距离划分树构建模块,用于根据预设的第一距离阈值及卡方分布性质确定第二距离阈值,根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树;

候选相似节点对集合获取模块,用于遍历所述距离划分树,并对所述距离划分树中的各节点进行比较,获得候选相似节点对集合;

比较模块,用于计算所述候选相似节点对集合中各候选相似节点对包括的原始数据之间的原始距离,并将所述原始距离与所述第一距离阈值进行比较,获得相似性查询结果。

进一步地,所述距离划分树构建模块,具体用于:

根据所述原始数据构建根节点;

根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据的个数小于或等于所述预设阈值,获得所述距离划分树。

进一步地,所述距离划分树构建模块,具体用于:

从所述原始数据中随机获取原始数据子集,根据所述原始数据子集构建对应的初始距离划分树;

对所述初始距离划分树按照预设规则进行扩展,获得所述距离划分树;其中,所述预设规则包括:

对所述初始距离划分树中的第一层子节点进行扩展;

若所述初始距离划分树中的第一层最左边子节点的编号大于1,则生成一个虚拟子节点;

在所述初始距离划分树中的第一层最右边生成一个虚拟子节点;

若判断获知所述初始距离划分树中的第一层的所述子节点的编号非连续,则在非连续编号的两个子节点中间生成一个虚拟子节点。

进一步地,所述距离划分树构建模块,具体用于:

根据所述原始数据子集构建根节点;

将所述原始数据子集映射到一维空间,并根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据子集在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据子集的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据子集的个数小于或等于所述预设阈值,获得初始距离划分树。

第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,

所述处理器和所述存储器通过所述总线完成相互间的通信;

所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。

第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:

所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。

本发明实施例通过将原始数据映射到一维空间,然后建立距离划分树,通过距离划分树筛选候选相似节点,并计算候选相似节点中原始数据之间的原始距离,根据原始距离得到相似性查询结果,通过将高维原始数据映射到一维空间降低了计算的复杂度,提高了查询效率。

本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的基于距离划分树的高维数据相似性连接查询方法流程示意图;

图2为本发明实施例提供的距离划分树结构示意图;

图3为本发明实施例提供的另一距离划分树结构示意图;

图4为本发明实施例提供的基于距离划分树的高维数据相似性连接查询装置结构示意图;

图5为本发明实施例提供的电子设备结构框图。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

图1为本发明实施例提供的基于距离划分树的高维数据相似性连接查询方法流程示意图,如图1所示,该方法包括:

步骤101:获取所有待查询的高维的原始数据,并将所述原始数据映射到一维空间。

在具体的实施过程中,在对高维的原始数据进行相似性连接查询时,装置首先获取所有待查询的高维的原始数据,并将这些高维的原始数据映射到一维空间,在映射阶段,根据定理1和定理2将d维空间的原始数据v与a进行点积运算,其中向量a的每一个元素都服从标准正态分布n(0,1)的独立、同分布随机变量,将其映射到一维空间。

应当说明的是,高维数据相似性连接查询(high-dimensionaldatasimilarityjoin,简称hdsj)。给定两个数据集合q和r,其中,q={q1,q2,...,qn1},r={r1,r2,...,rn2},qi是集合q中的第i个数据点,qi=<qi1,qi2,...,qid>,rj是集合r中的第j个数据点,rj=<rj1,rj2,...,rjd>,qi,|q|=n1,|r|=n2。假设距离函数为dist,距离阈值为ε,q和r的相似性连接查询结果是所有距离不大于ε的数据对,即:hdsj(q,r)={<qi,rj>|qi∈q,rj∈r,dist(qi,rj)≤ε}。距离函数dist的定义如下:

定理1为:对任意两个d维向量qi,则g(qi)-g(rj)服从正态分布n(0,dist2(qi,rj))。

定理2为:对于任意两个向量qi和rj,服从自由度为m的卡方分布,即:

步骤102:根据预设的第一距离阈值及卡方分布性质确定第二距离阈值,根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树。

在具体的实施过程中,根据预先设定的第一距离阈值ε及卡方分布性质可以确定出第二距离阈值kε,其中,定理3包括了卡方分布的性质,且定理3为:如果δm(qi,rj)>kε,则:p(dist(qi,rj)>ε)>1-p(χ2>k2)。根据一维空间中的原始数据和第二距离阈值构建距离划分树。图2为本发明实施例提供的距离划分树结构示意图,如图2所示。

应当说明的是,距离划分树构建的核心思想是:高维数据映射到一维空间后,以一维映射空间中新的距离阈值ε'=kε为单位进行划分,将原高维数据划分到等宽的分区中。每个分区包含的数据个数有一个上限,设置为max,一旦数据个数超过max,则该分区按照相等宽度一分为二,依此类推,最终形成一棵距离划分树。

步骤103:遍历所述距离划分树,并对所述距离划分树中的各节点进行比较,获得候选相似节点对集合。

在具体的实施过程中,对构建的距离划分树进行遍历,获得所有的叶子节点,然后对叶子节点进行比较确定候选相似节点对集合。应当说明的是,候选相似节点对集合的确定依据是根据两个叶子节点之间的距离。且候选相似节点对集合中包括了多个候选相似节点对,每一候选相似节点对中两个叶子节点,每个叶子节点中包括了至少一个原始数据。

步骤104:计算所述候选相似节点对集合中各候选相似节点对包括的原始数据之间的原始距离,并将所述原始距离与所述第一距离阈值进行比较,获得相似性查询结果。

在具体的实施过程中,由于每一候选相似节点对中包括两个叶子节点,每个叶子节点中包括至少一个原始数据,因此,可以计算出每个候选相似节点中任意两个原始数据之间的原始距离,然后将原始距离与第一距离阈值进行比较,从而将满足条件的留下,不满足条件的剔除,最终获得相似性查询结果。

本发明实施例通过将原始数据映射到一维空间,然后建立距离划分树,通过距离划分树筛选候选相似节点,并计算候选相似节点中原始数据之间的原始距离,根据原始距离得到相似性查询结果,通过将高维原始数据映射到一维空间降低了计算的复杂度,通过距离划分树可以以较低的代价找到候选结果,增强了过滤效果,提高了查询效率。

在上述实施例的基础上,所述根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树,包括:

根据所述原始数据构建根节点;

根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据的个数小于或等于所述预设阈值,获得所述距离划分树。

在具体的实施过程中,距离划分树的构造过程如下:在距离划分树中每一个节点(包括父亲节点和叶子节点),都包含有该节点所在level,层内编号orderno,数据个数count和对应的数据集合。首先根据原始数据构建一个根节点nroot,对数据集r中的任意向量vi,计算出其一维空间的映射值π1(vi),以第二距离阈值ε'=kε为基础对一维空间进行等宽划分,获得根节点对应的多个子节点,根据每一原始数据对应的映射值计算出每个原始数据在一维映射空间对应的子节点的编号如果编号为pid的子节点不存在,则新生成一个子节点,编号为pid,如果已经存在,则将vi插入到节点pid中,并将其数量count值增加1。一旦某个子节点中的数据量超过预设阈值,如max,则将该子节点进行进一步划分,根据距离范围将其等分为两个子节点。如此反复,最终生成一棵距离划分树。应当说明的是,通过所在层次level可以计算出当前层次中每个节点对应的距离宽度为:通过层内编号orderno可以推算出该节点对应的距离范围:由此可以计算出n2节点对应的距离范围是:即:

本发明实施例通过构建距离划分树对原始数据进行相似性连接查询,避免了数据倾斜的问题,提高了查询的准确度。

在上述实施例的基础上,所述根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树,包括:

从所述原始数据中随机获取原始数据子集,根据所述原始数据子集构建对应的初始距离划分树;

对所述初始距离划分树按照预设规则进行扩展,获得所述距离划分树;其中,所述预设规则包括:

对所述初始距离划分树中的第一层子节点进行扩展;

若所述初始距离划分树中的第一层最左边子节点的编号大于1,则生成一个虚拟子节点;

在所述初始距离划分树中的第一层最右边生成一个虚拟子节点;

若判断获知所述初始距离划分树中的第一层的所述子节点的编号非连续,则在非连续编号的两个子节点中间生成一个虚拟子节点。

在具体的实施过程中,在构建距离划分树时,为了节省时间,我们采用随机采样的方式从数据集r中选择一个子集r’,然后利用r’中的数据构建一棵初始距离划分树dsts,由于r’只是原始数据的一个子集,dsts中的节点可能无法代表全部的数据,可以采用如下措施对dsts进行扩展,从而得到完整的距离划分树dstc,图3为本发明实施例提供的另一距离划分树结构示意图,如图3所示:

(1)只需要对dst树中第一层的节点进行扩展,其它层的节点不再做额外处理;

(2)如果dsts中第一层最左边的节点编号大于1,表示为:nleft.orderno>1,则可生成一个新的虚拟节点nleft-virtual,其对应的层内编号为1:nleft.orderno–1;

(3)如果dsts中第一层最右边的节点编号为:nright.orderno,则可生成一个新的虚拟节点nright-virtual,其对应的层内编号可以表示为nright.orderno+1:+∞;

(4)如果初始距离划分树中的第一层的子节点的编号不是连续的,如图3中缺少编号为3和4的子节点,因此需要在2号子节点和5号子节点中生成一个虚拟子节点。应当说明的是,还应当在5号子节点和8号子节点之间生成一个虚拟子节点。

本发明实施例通过随机采样的方式构建距离划分树,节省了划分时间,提高了相似性查询的整体速率。

在上述实施例的基础上,所述根据所述原始数据子集构建对应的初始距离划分树,包括:

根据所述原始数据子集构建根节点;

将所述原始数据子集映射到一维空间,并根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据子集在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据子集的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据子集的个数小于或等于所述预设阈值,获得初始距离划分树。

在具体的实施过程中,初始距离划分树的构造过程如下:在距离划分树中每一个节点(包括父亲节点和叶子节点),都包含有该节点所在level,层内编号orderno,数据个数count和对应的数据集合。首先根据原始数据子集构建一个根节点nroot,对原始数据子集r'中的任意向量vi,计算出其一维空间的映射值π1(vi),以第二距离阈值ε'=kε为基础对一维空间进行等宽划分,获得根节点对应的多个子节点,根据原始数据子集中的每一原始数据对应的映射值计算出每个原始数据在一维映射空间对应的子节点的编号如果编号为pid的子节点不存在,则新生成一个子节点,编号为pid,如果已经存在,则将vi插入到节点pid中,并将其数量count值增加1。一旦某个子节点中的数据量超过预设阈值,如max,则将该子节点进行进一步划分,根据距离范围将其等分为两个子节点。如此反复,最终生成一棵初始距离划分树。

本发明实施例通过随机采样的方式构建距离划分树,节省了划分时间,提高了相似性查询的整体速率,另外也消除了数据倾斜的问题。

在上述实施例的基础上,所述遍历所述距离划分树,并对所述距离划分树中的各节点进行比较,获得候选相似节点对集合,包括:

遍历所述距离划分树,并获得对应的叶子节点集合;

将所述叶子节点集合中的每一叶子节点构成一个候选相似节点对,并加入到所述候选相似节点对集合中;

若判断获知叶子节点ni的距离范围下界与叶子节点nj的距离范围上界之差小于或等于第二距离阈值,则将所述叶子节点ni和所述叶子节点nj构成一个候选相似节点对,并加入到所述候选相似节点对集合中,其中,i和j均为正整数,且i>j。

在具体的实施过程中,对构建的距离划分树进行遍历,获得该距离划分树中所有的叶子节点集合,该叶子节点集合中包括了多个叶子节点,针对每一个叶子节点ni作如下处理:

ni自身中的原始数据有可能相似,需要该叶子节点进行自我比较,故可把<ni,ni>添加到候选相似节点对集合中;

然后将ni与其后面的所有的子节点依次进行比较,以nj为例,如果nj的距离范围下界减ni的距离范围上界的结果小于或等于第二距离阈值,则节点ni中的数据与节点nj中的数据可能相似,故可把<ni,nj>添加到候选相似节点对集合中。如果nj的距离范围下界减ni的距离范围上界的结果大于第二距离阈值,则添加到候选相似节点对集合中,并且nj之后的叶子节点也不可能与ni相似,因此,可以不用再继续比较。应当说明的是,i和j均为正整数,且i<j,且j不大于叶子节点总数。

本发明实施例通过将原始数据映射到一维空间,然后建立距离划分树,通过距离划分树筛选候选相似节点,并计算候选相似节点中原始数据之间的原始距离,根据原始距离得到相似性查询结果,通过将高维原始数据映射到一维空间降低了计算的复杂度,提高了查询效率。

在上述各实施例的基础上,所述将所述原始距离与所述第一距离阈值进行比较,获得相似性查询结果,包括:

若判断获知所述原始距离小于或等于所述第一距离阈值,则将所述原始距离对应的所述候选数据对作为所述相似性查询结果。

在具体的实施过程中,根据公式(1)可以计算每一个候选数据对中两个原始数据对应的原始距离,将原始距离与第一距离阈值进行比较,如果原始距离小于或者等于第一距离阈值,则说明该候选数据对中的两个原始数据满足数据相似性的要求,可以将该候选数据放入相似性查询结果中。反之,如果原始距离大于第一距离阈值,则说明该候选数据对中的两个原始数据不满足数据相似性的要求,则该候选数据不能作为相似性查询结果。

本发明实施例通过将高维的原始数据映射到一维空间,并将一维空间划分为多个子节点,获取各子节点中原始数据对应的候选数据对,根据候选数据对之间的原始距离获得最终的相似性查询结果,由于将高维原始数据映射到了一维空间,然后再进行相似性查询,大大降低了计算复杂度,从而提高了查询效率。

本发明实施例还提供的一种距离划分树的相似性连接查询算法,具体算法如下:

图4为本发明实施例提供的基于距离划分树的高维数据相似性连接查询装置结构示意图,如图4所示,该装置包括:映射模块401、距离划分树构建模块402、候选相似节点对集合获取模块403和比较模块404,其中,

映射模块401用于获取所有待查询的高维的原始数据,并将所述原始数据映射到一维空间;距离划分树构建模块402用于根据预设的第一距离阈值及卡方分布性质确定第二距离阈值,根据所述一维空间中的所述原始数据和所述第二距离阈值构建距离划分树;候选相似节点对集合获取模块403用于遍历所述距离划分树,并对所述距离划分树中的各节点进行比较,获得候选相似节点对集合;比较模块404用于计算所述候选相似节点对集合中各候选相似节点对包括的原始数据之间的原始距离,并将所述原始距离与所述第一距离阈值进行比较,获得相似性查询结果。

在具体的实施过程中,在对高维的原始数据进行相似性连接查询时,映射模块401首先获取所有待查询的高维的原始数据,并将这些高维的原始数据映射到一维空间。距离划分树构建模块402根据预先设定的第一距离阈值ε及卡方分布性质可以确定出第二距离阈值kε,根据一维空间中的原始数据和第二距离阈值构建距离划分树。候选相似节点对集合获取模块403对构建的距离划分树进行遍历,获得所有的叶子节点,然后对叶子节点进行比较确定候选相似节点对集合。由于每一候选相似节点对中包括两个叶子节点,每个叶子节点中包括至少一个原始数据,因此,比较模块404可以计算出每个候选相似节点中任意两个原始数据之间的原始距离,然后将原始距离与第一距离阈值进行比较,从而将满足条件的留下,不满足条件的剔除,最终获得相似性查询结果。

本发明实施例通过将原始数据映射到一维空间,然后建立距离划分树,通过距离划分树筛选候选相似节点,并计算候选相似节点中原始数据之间的原始距离,根据原始距离得到相似性查询结果,通过将高维原始数据映射到一维空间降低了计算的复杂度,提高了查询效率。

在上述实施例的基础上,所述距离划分树构建模块,具体用于:

根据所述原始数据构建根节点;

根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据的个数小于或等于所述预设阈值,获得所述距离划分树。

在上述实施例的基础上,所述距离划分树构建模块,具体用于:

从所述原始数据中随机获取原始数据子集,根据所述原始数据子集构建对应的初始距离划分树;

对所述初始距离划分树按照预设规则进行扩展,获得所述距离划分树;其中,所述预设规则包括:

对所述初始距离划分树中的第一层子节点进行扩展;

若所述初始距离划分树中的第一层最左边子节点的编号大于1,则生成一个虚拟子节点;

在所述初始距离划分树中的第一层最右边生成一个虚拟子节点;

若判断获知所述初始距离划分树中的第一层的所述子节点的编号非连续,则在非连续编号的两个子节点中间生成一个虚拟子节点。

在上述实施例的基础上,所述距离划分树构建模块,具体用于:

根据所述原始数据子集构建根节点;

将所述原始数据子集映射到一维空间,并根据所述第二距离阈值对所述一维空间进行划分,获得所述根节点对应的多个子节点;

计算各原始数据子集在所述一维空间的映射值,根据所述映射值和所述第二距离阈值计算各原始数据对应的所述子节点的编号;

若判断获知所述子节点的编号不存在,则生成对应编号的新子节点;

若判断获知所述子节点中所述原始数据子集的个数大于预设阈值,则根据所述子节点的距离范围对所述子节点进行再次划分,直至所述子节点中的原始数据子集的个数小于或等于所述预设阈值,获得初始距离划分树。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。

综上所述,本发明实施例通过将原始数据映射到一维空间,然后建立距离划分树,通过距离划分树筛选候选相似节点,并计算候选相似节点中原始数据之间的原始距离,根据原始距离得到相似性查询结果,通过将高维原始数据映射到一维空间降低了计算的复杂度,提高了查询效率。

请参照图5,图5为本发明实施例提供的电子设备结构框图。电子设备可以包括查询装置501、存储器502、存储控制器503、处理器504、外设接口505、输入输出单元506、音频单元507、显示单元508。

所述存储器502、存储控制器503、处理器504、外设接口505、输入输出单元506、音频单元507、显示单元508各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述查询装置501包括至少一个可以软件或固件(firmware)的形式存储于所述存储器502中或固化在查询装置501的操作系统(operatingsystem,os)中的软件功能模块。所述处理器504用于执行存储器502中存储的可执行模块,例如查询装置501包括的软件功能模块或计算机程序。

其中,存储器502可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器502用于存储程序,所述处理器504在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的服务器所执行的方法可以应用于处理器504中,或者由处理器504实现。

处理器504可以是一种集成电路芯片,具有信号的处理能力。上述的处理器504可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器504也可以是任何常规的处理器等。

所述外设接口505将各种输入/输出装置耦合至处理器504以及存储器502。在一些实施例中,外设接口505,处理器504以及存储控制器503可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

输入输出单元506用于提供给用户输入数据实现用户与所述服务器(或本地终端)的交互。所述输入输出单元506可以是,但不限于,鼠标和键盘等。

音频单元507向用户提供音频接口,其可包括一个或多个麦克风、一个或者多个扬声器以及音频电路。

显示单元508在所述电子设备与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元508可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器504进行计算和处理。

所述外设接口505将各种输入/输入装置耦合至处理器504以及存储器502。在一些实施例中,外设接口505,处理器504以及存储控制器503可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。

输入输出单元506用于提供给用户输入数据实现用户与处理终端的交互。所述输入输出单元506可以是,但不限于,鼠标和键盘等。

可以理解,图5所示的结构仅为示意,所述电子设备还可包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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