一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种图搜索方法、装置及设备与流程

2022-02-25 20:41:25 来源:中国专利 TAG:


1.本技术涉及互联网技术领域,尤其涉及一种图搜索法、装置及设备。


背景技术:

2.随着社会各行业的快速发展,现实社会织起了了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随着数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库。其中,图由两个元素组成:节点和关系。每个节点代表一个实体(人,地,事物,类别或其他数据),每个关系代表两个节点的关联方式。图数据库(graph database)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据,图形数据库是一种在线数据库管理系统,具有处理图形数据模型的创建,读取,更新和删除(crud)操作。
3.图数据库可以应用在社交领域、零售领域、金融领域以及物联网领域等等,应用广泛,所以,亟需提供一种更为可靠的图搜索方案。


技术实现要素:

4.本说明书实施例提供一种图搜索方法、装置及设备,以解决现有技术中无法基于图进行图搜索的问题。
5.为解决上述技术问题,本说明书实施例是这样实现的:
6.本说明书实施例提供的一种图搜索方法,包括:
7.获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;
8.对所述第一图数据执行分解操作,得到对应的图数据单元;
9.根据各个所述图数据单元的属性信息,生成所述第一图数据对应的单词集合;
10.基于所述单词集合,搜索与所述第一图数据相关的图数据。
11.本说明书实施例提供的一种图搜索装置,包括:
12.第一图数据获取模块,用于获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;
13.分解模块,用于对所述第一图数据执行分解操作,得到对应的图数据单元;
14.单词集合生成模块,用于根据各个所述图数据单元的属性信息,生成所述第一图数据对应的单词集合;
15.图数据搜索模块,用于基于所述单词集合,搜索与所述第一图数据相关的图数据。
16.本说明书实施例提供的一种图搜索设备,包括:
17.至少一个处理器;以及,
18.与所述至少一个处理器通信连接的存储器;其中,
19.所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
20.获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;
21.对所述第一图数据执行分解操作,得到对应的图数据单元;
22.根据各个所述图数据单元的属性信息,生成所述第一图数据对应的单词集合;
23.基于所述单词集合,搜索与所述第一图数据相关的图数据。
24.本说明书实施例提供的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现一种图搜索方法。
25.本说明书至少一个实施例能够达到以下有益效果:通过获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;对所述第一图数据执行分解操作,得到对应的单元;根据所述单元的属性信息,生成所述第一图数据对应的单词集合;基于所述单词集合,执行与所述第一图数据相关的搜索操作。通过该方法,可以解决现有的图数据库不能支持图搜索的空白,且能够支持相似图搜索和子图搜索的功能,不需要额外的训练成本和模型存储成本,节省了大量的服务器计算资源和时间成本。
附图说明
26.为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
27.图1为本说明书实施例提供的一种图搜索方法的整体系统框图;
28.图2为本说明书实施例提供的一种图搜索方法的流程示意图;
29.图3为本说明书实施例提供的图搜索方法中的图分解示例图;
30.图4为本说明书实施例提供的一种图搜索装置的结构示意图;
31.图5为本说明书实施例提供的一种图搜索设备的结构示意图。
具体实施方式
32.为使本说明书一个或多个实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书一个或多个实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书一个或多个实施例保护的范围。
33.以下结合附图,详细说明本说明书各实施例提供的技术方案。
34.随着基于图谱的智能分析的场景越来越多,利用图来解决算法和工程问题也越发受到青睐。一种应用场景,医药分析中,具有相同或者类似功能基团的药物可能会有相类似的功效。若提前将已知功效的药物拆解成功能基团的关系图存入图数据库,利用图搜索功能,输入新药的功能基团关系图,输出为数据库中已知类似结构的药物,以及对应的药物资料,这样就可以帮助到医药研发者判断新药可能具有的功效。
35.另一种应用场景,在程序分析领域,可以将程序运行时候的调用图保存在图数据库中。在程序上线或者发布之前,需要采用程序用例对待上线的程序进行测试,测试成功才会上线。因为程序运行时候会有不同的输入,所以同一个版本程序的服务上线后产生很多调用图。不同的调用图代表了程序内部执行逻辑的不同,即承载了该程序的业务属性。当程
序的代码做出变更后,可以通过分析得到变更的影响用例,从而精准的进行变更测试,节约时间。
36.现有技术中,目前的图数据库,主要提供的功能是图的存储与图查询。这里的查询指的是通过专用的语言描述查找图的条件,由图数据库引擎帮助用户查找到对应的图或者子图。如在企业关系查找中,需要找到公司a和公司b之前人员的关系网,就可以用现有的图数据库来完成。但是目前的图数据库无法解决用给定的图去搜索关联的图。
37.为了解决现有技术中的缺陷,本方案给出了以下实施例:
38.接下来,将针对说明书实施例结合附图进行具体说明:
39.图1为本说明书实施例提供的一种图搜索方法的整体系统框图。如图1所示,系统包括图数据库接口101、图查询模块103、图数据增删与修改模块105、图搜索模块107、图节点和边数据存储模块109以及图向量与单词数据存储模块111。该系统不仅能够为用户提供普通的图查询功能,还能为用户提供图搜索功能,其中,图查询主要是根据节点和边的条件数据,查询得到图或者子图的数据;图搜索主要是基于图进行搜索,即基于图搜索得到相似图或子图。
40.系统可以通过图数据库接口101接收用户发送的请求,例如:图查询请求、数据增删修改请求或图搜索请求,若接收到图查询请求,可以由图查询模块103与图节点和边数据存储模块109进行交互,具体地,图查询模块103主要负责承接图查询服务,可以基于用户输入的节点和/或边数据与图节点和边数据存储模块109进行交互,或者与用户输入的节点和/或边数据相匹配的图。若系统接收到数据增删修改请求,可以由图数据增删与修改模块105与图节点和边数据存储模块109或图向量与单词数据存储模块111进行交互,图数据增删与修改模块105,主要负责原始数据的增加,删除,修改的工作。若系统接收到图搜索请求,可以由图搜索模块107与图向量与单词数据存储模块111进行交互,其中,图搜索模块107集成了相似图搜索和子图搜索等功能,图向量与单词数据存储模块111,主要可以存放图的预处理信息,包括图的编码向量与预处理的单词信息。同时还可以提供向量检索功能与单词的倒排索引功能。
41.接下来,可以结合实施例对本说明书实施例提供的方案进行说明:
42.图2为本说明书实施例提供的一种图搜索方法的流程示意图。从程序角度而言,流程的执行主体可以为搭载于应用服务器的程序或应用客户端。在本实施例中,流程的执行主体可以是提供图搜索功能的服务器,该服务器还可以同时提供图查询功能以及图存储功能等,可以根据用户输入的图,从图数据库中查找到与输入的图所对应的结果图。
43.如图2所示,该流程可以包括以下步骤:
44.步骤210:获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据。
45.第一图数据可以表示用户输入的图对应的数据,图可以是由顶点的有穷非空集合和顶点之间边的集合组成。在现有的图查询方案中,用户在需要查找相应的图数据时,一般是输入某个点和/或边的自身属性信息进行查询,如在企业关系查找中,需要找到公司a和公司b之前人员的关系网,就可以用现有的图数据库来完成,但是目前的图数据库无法满足用给定的图去搜索关联的图的需求。该步骤中,在进行图搜索时,用户输入的数据为图对应的图数据。
46.步骤220:对所述第一图数据执行分解操作,得到对应的单元。
47.所述对所述第一图数据执行分解操作,得到对应的单元,具体可以包括:
48.按照预设规则对所述第一图数据进行分解操作,得到对应的单元;一个所述单元包括所述第一图数据中的一个节点数据,或者,一个所述单元包括所述第一图数据中的边数据以及该边连接的节点数据。
49.分解操作可以理解为将图中的点和边按照预设规则进行拆解的操作,例如:节点自身可以成为一个单元,节点与节点之间的连接关系可以成为一个单元,一个以上节点与节点与节点之间的边可以成为一个单元。
50.步骤230:根据所述单元的属性信息,生成所述第一图数据对应的单词集合。
51.在步骤220中,对第一图数据进行分解得到单元之后,可以遍历图中的所有分解出的单元,利用单元的属性信息进行hash编码成为一个单词。单元和单词(hash值)之间可以是一一对应的关系。即一个单元中可以包括一个或多个点,还可以包括边,根据该单元的属性信息,可以生成该单元对应的一个单词。
52.其中,单元的属性信息可以包括该单元中节点自身的属性信息以及边自身的属性信息,还可以包括节点或边在图中的属性信息,例如:一个单元中的某两个或者某几个点之间的关系信息等。
53.步骤240:基于所述单词集合,搜索与所述第一图数据相关的图数据。
54.可选的,所述基于所述单词集合,搜索与所述第一图数据相关的图数据,具体可以包括:
55.基于所述单词集合,确定图数据库中与所述第一图数据匹配的目标图数据;所述目标图数据与所述第一图数据的关联关系满足预设条件;所述关联关系满足预设条件包括:所述目标图数据与所述第一图数据之间的相似度满足第一预设条件或者所述目标图数据与所述第一图数据之间的包含度满足第二预设条件。
56.单词集合可以表示输入的图中分解后的各个单元对应的单词的集合。搜索操作可以表示确定图数据库中与第一图数据匹配的目标图数据的操作。具体地,可以包括确定与第一图数据相似的目标图数据的操作,也可以包括确定包含第一图数据的目标图数据的操作。更近一步地,确定与第一图数据相似的目标图数据时,可以确定其相似度大于第一预设条件的图数据为第一图数据的目标图数据;确定包含第一图数据的目标图数据时,可以确定其包含度满足第二预设条件的图数据为目标图数据。其中第一预设条件以及第二预设条件可以根据实际应用需求进行设定,对此本说明书实施例不作具体限定。
57.应当理解,本说明书一个或多个实施例所述的方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。
58.图2中的方法,通过获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;对所述第一图数据执行分解操作,得到对应的单元;根据所述单元的属性信息,生成所述第一图数据对应的单词集合;基于所述单词集合,执行与所述第一图数据相关的搜索操作。通过该方法,可以解决现有的图数据库不能支持图搜索的空白,且能够支持相似图搜索和子图搜索的功能,不需要额外的训练成本和模型存储成本,节省了大量的服务器计算资源和时间成本。
59.基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,下面进行说明。
60.所述根据所述单元的属性信息,生成所述第一图数据对应的单词集合,具体可以包括:
61.对于任意一个所述单元,确定该单元中的节点数据以及边数据;
62.确定所述节点数据以及所述边数据的属性信息;
63.对所述属性信息进行哈希计算,得到该单元对应的单词,
64.将所述单词确定为所述单词集合中的一个元素。
65.一个单元中可以包括一个节点,也可以包括多个节点,可以包括一条边,也可以包括边以及对应的边连接的节点;每个节点都有自身的属性信息,例如:当某个节点表示用户时,该节点的属性信息可以是该用户自身的属性信息,例如:用户的资产信息、身份信息等。每条边也有自身的属性信息,例如:在公司关系网络图中,边可以表示职位隶属关系,还可以表示部门关系等。当然,属性信息还可以包括节点或边在图中的信息,例如:某一节点在图中作为连接其他节点的中间节点。a节点连接b节点,b节点连接c节点,d节点连接b节点,b节点连接e节点,存在多个节点与b节点相连,此时,与b节点相连的节点数量或者节点类型等信息也可以作为b节点的属性信息。
66.对每个单元的属性信息进行哈希编码成一个单词,得到用户输入的图分解得到的多个单元对应的多个单词,形成单词集合。
67.由于在本说明书实施例中的图数据库中,既会存储图节点和边,以用于图查询;也会存储图向量和单词,以进行图搜索,因此,在进行图搜索时,可以将图分解为单词和向量的形式,以便于进行图搜索。
68.图搜索功能可以包括相似图搜索功能以及子图搜索功能,接下来可以分别对此进行论述:
69.功能一、相似图搜索功能
70.若所述关联关系满足预设条件为所述目标图数据与所述第一图数据之间的相似度满足第一预设条件;所述基于所述单词集合,确定图数据库中与所述第一图数据匹配的目标图数据,具体可以包括:
71.对所述单词集合中的单词对应的向量进行标准化处理,得到所述第一图数据对应的第一图向量;
72.基于所述第一图向量,从所述图数据库中确定所述第一图数据对应的候选图数据集合;
73.基于所述单词集合,从所述候选图数据库集合中确定与所述第一图数据之间的相似度满足第一预设条件的所述目标图数据。
74.其中,对所述单词集合中的单词对应的向量进行标准化处理,可以包括:对所述单词集合中的单词对应的向量进行加和,并进行归一化处理,得到所述第一图数据对应的第一图向量。
75.在将图分解为单词集合之后,对于每个单词,依照其hash值作为种子,编码成一个向量,具体地,编码方式可以是将每个单词的向量进行加和,相加的方式可以是每个维度对位相加,标准化就是使得向量的模为1。
76.在进行相似图搜索时,先基于第一图数据的图向量,预先从图数据库中筛选出向量距离满足距离阈值的前m个候选图数据集合,然后再基于单词列表计算相似度,根据相似
度从候选图数据集合中确定目标图数据。
77.所述基于所述单词集合,从所述候选图数据库集合中确定与所述第一图数据之间的相似度满足第一预设条件的所述目标图数据,具体可以包括:
78.计算所述单词集合中的单词与所述候选图数据库中的单词之间的相似度;
79.确定所述候选图数据库中所述相似度大于或等于预设相似度阈值的目标图数据。
80.若所述候选图数据库中所述相似度大于或等于预设相似度阈值的目标图数据存在多个,将所述候选图数据中相似度最大的图数据确定为目标图数据。
81.在图数据库中,对于单词集合,可以以单词列表的形式进行存储。
82.在进行图搜索时,首先给定图a,以及其他查找条件。按照预设规则对图a进行分解,根据图a对应的图向量,通过计算,从图数据库中确定满足其他查找条件且向量距离满足预设距离的n个图,同时取出这n个图的单词列表,用单词相似度计算这n个图与图a的单词相似度,根据相似度值,将相似度值满足预设条件的图作为目标图。
83.除此之外,还可以根据得到的相似度结果按照单词相似度值从大至小的顺序进行重新排序,然后按照预设条件输入相似度最大的图或者按照相似度排序,输出前m个图,m≤n。然后输出搜索结果。
84.在具体计算相似度时,可以采用以下公式进行计算:
[0085][0086]
其中,两个单词列表wordsa,wordsb,这两个单词重复的单词列表为wordsab。定义函数len为求列表单词的数量,max为求最大值,分子表示两个a、b两个图中重复的单词列表,分母表示两个列表单词数量的最大值。
[0087]
所述基于所述单词集合,确定图数据库中与所述第一图数据匹配的目标图数据之后,还可以包括:将所述目标图数据的id以及所述相似度值发送至所述用户的终端。
[0088]
在基于用户输入的图查找到对应的目标图之后,可以将目标图的id以及相似度值发送给用户,以便用户查看搜索得到的目标图以及相似程度。
[0089]
功能二、子图搜索
[0090]
若所述关联关系满足预设条件为所述目标图数据与所述第一图数据之间的相似度满足第一预设条件;所述基于所述单词集合,确定图数据库中与所述第一图数据匹配的目标图数据,具体可以包括:
[0091]
基于所述单词集合,根据倒排索引方法,确定包含所述单词集合的候选图数据集合;
[0092]
计算所述单词集合与所述候选图数据集合中每个图数据的包含度;
[0093]
将所述候选图数据集合中包含度大于或等于预设包含度阈值的图数据确定为目标图数据。
[0094]
若所述候选图数据集合中包含度大于或等于预设包含度阈值的图数据存在多个,将所述候选图数据中包含度最大的图数据确定为目标图数据。
[0095]
在计算子图包含度时,可以采用以下公式:
[0096]
[0097]
其中,子图单词列表subwordsa、图数据库中的图对应的单词列表subwordsb,subwordsab为这两个单词重复的单词列表。定义函数len为求列表单词的数量,分子可以表示重合的单词数量,分母可以表示子图的单词数量。
[0098]
子图搜索,可以理解为搜索大概率包含子图的图,具体地,首先给定子图a,以及其他查找条件。按照预设规则分解子图a,分解得到子图a的单元之后,基于哈希编码得到图a对应单词列表,使用带有倒排索引功能的模块搜索出数据库中满足其他查找条件且包含单词列表图a对应单词列表最多的m个图。进一步计算这m个图与子图a的子图包含度,结果按子图包含度从大至小的顺序重新排序,然后输出搜索结果,输入的搜索结果可以包含图的id,以及子图包含度等信息,并将所述目标图数据的id以及所述包含度值发送至所述用户的终端。
[0099]
一种实施方式中,用户可以对图数据库中存储的数据进行修改,与普通的图数据库操作流程一样,用户可以通过接口提供插入、删除或者修改的图的id,图的节点,边,以及其他图的属性信息,若为存入或者修改命令,可以根据用户的指令修改图中的信息,并取出修改之后的图,若为删除命令直接删除图数据库中的原始图对应的数据,根据修改后的图进行图分解,节点自身可以成为一个单元,节点与节点的连接关系也可以成为一个单元。遍历图中的所有分解出的单元,利用单元的属性信息进行hash编码成为一个单词。单元和单词(hash值)发生一对多的概率很小,可以确定单元和单词之间存在一一对应关系。对于每个单词,可以依照其hash值作为种子,编码成一个向量,例如:64位向量或者128位向量等等。一个图的所有单词向量之和再经过归一化后的向量作为整个图的图向量。若原始命令为存入或者修改,将图向量与所有单词hash值存入或者修改图数据库中原始图的对应数据,原始命令为删除图,则删除图数据库中原始图的数据。具体地,可以采用以下步骤实现:
[0100]
基于所述修改指令,对所述图数据库中对应的原始图数据进行修改,得到第二图数据;所述第二图数据包括所述原始图数据的id、第二图数据的id、所述第二图数据中的节点数据的属性信息以及所述第二图数据中的边数据的属性信息;所述第二图数据包括所述原始图数据的id、第二图数据的id、所述第二图数据中的节点数据的属性信息以及所述第二图数据中的边数据的属性信息;
[0101]
将所述第二图数据按照所述预设规则进行处理后存储至所述图数据库中。
[0102]
实现步骤中还可以包括:
[0103]
将所述图数据库中的原始图数据删除。
[0104]
其中,图进行单元分解时,可以按照预设规则进行分解,也可以基于图中节点或边的属性信息进行分解,例如:图做单元分解的时候,若设定节点自身为0阶分解,自身通过k步路径包含的节点和边为k阶分解,则上述单元分解的时候就是采用0阶 1阶分解的单元编码成为的单词,实际应用的时候可以根据存储,图本身的规模采用单独1阶分解,或者0阶分解 1阶分解 2阶分解,或者其他分解模式的组合。在加入节点或者边的属性进行图的单元分解时,可以结合图3进行说明:图3为本说明书实施例提供的图搜索方法中的图分解示例图,图3中为两个乙醛的结构示意图将其看作图数据为例进行分解:
[0105]
其中,可以将每个原子作为节点,化学键作为边。
[0106]
节点中没有特殊标明碳元素为,氢元素为,氧元素为,化学键根据共用电子对个数分为单键、双键,三键。分解方式可以不考虑节点属性,也就是同位素的影响,也可
以考虑同位素的影响。
[0107]
下面举例考虑同位素和化学键属性的影响,假设分解单词的方式为节点本身(0阶)以及节点与节点直接相连的关系(1阶),可以将图a分解为c,h,h,h,c,o,h,c-h,c-h,c-h,c=o,c-h,c-c。将图b分解为h,h,h,c,o,h,h,h,h,c,o,h,c=o,c-h,
[0108]
若不考虑同位素的影响,仅仅考虑化学键的属性影响,则可以将图a分解为c,h,h,h,c,o,h,c-h,c-h,c-h,c=o,c-h,c-c。将图b分解为c,h,h,h,c,o,h,c-h,c-h,c-h,c=o,c-h,c-c。
[0109]
需要说明的是,在对图进行单元分解时,具体的分解方式可以根据实际应用场景进行设定,也可以基于点或边的属性信息进行分解,对此,本说明书实施例不作具体限定。
[0110]
当然,本说明书实施例中的方案,除了可以进行图搜索之外,还保留了图数据库进行存储以及图查询的功能。即本说明书实施例中的方案可以使图数据库具备同存储功能、图查询功能以及图搜索功能。
[0111]
本说明书实施例中的方案,至少能够实现以下技术效果:
[0112]
1)对单词进行向量编码时候,采用了随机编码的方式,hash理论可以编码出无限的向量一一对应,得到了更好的效果,解决了跳字模型(skip-gram)需要有限量的单词才可以使用这种方式编码以及skip-gram需要提前拿到数据进行训练才能使用的问题。本说明书实施例中采用的方法能在提高精度同时,不需要额外的训练成本和模型存储成本,节省了大量的服务器计算资源和时间成本。
[0113]
2)现有的图数据库无法进行图搜索,本说明书实施例中的方法能够在存入图的同时提供图搜索的服务,能够在很多应用场景上方便研发人员使用,图数据库填补了现有的图数据库不能支持图搜索的空白,且能够支持相似图搜索和子图搜索的功能。
[0114]
3)可以通过将变更部分的调用子图进行搜索,得出包含这些子图的调用图,当程序发生变更的时候,程序分析可以分析出变更点前后的静态图。通过变更前后变更点的静态图分析出变更影响到的用例,从而可以得到每次变更的影响面,进一步针对影响的部分构建测试用例,相比全量用例测试来说节约了大量的测试时间。例如:假设用户测试用例有1万个,一旦程序变更之后,需要采用1万个用例一一测试,需要测试1万次,采用本说明书实施例的方法可以提前查找到相似的案例,进行去重,减少测试案例。并且,程序变更之后,可以基于子图包含的关系,判断程序变更影响了哪些用例,例如:变更只影响a场景的测试用例。那就只需要采用a场景中的测试用例进行测试即可。
[0115]
上述实施例中的方案,交互主体可以包括服务器以及图数据库,需要说明的是,服务器可以是独立于图数据库的服务器,服务器与图数据库之间可以进行数据交互,当然,服务器也可以是图数据库中的服务器,作为图数据库中的某一功能接口或数据处理模块。在下面的步骤中,将服务器与图数据库作为两个主体,只是为了更方便对方案的交互进行说明,并不限定服务器与图数据库相互独立。方案可以分为图存储阶段、图查询阶段以及图搜索阶段。
[0116]
图存储阶段:该阶段中,服务器可以是图数据库的一个功能接口,负责接收用户输入的图,将用户输入的图按照预设规则进行分解,分解为单元,对单元的属性进行哈希计算,得到单元对应的单词,最后确定图对应的单词列表以及图向量,并存储在图数据库中,当需要进行修改时,用户可以输入需要进行修改的图的id、节点信息或边信息等,修改后将
修改后的图保存至图数据库中,将图数据库中修改之前的图进行删除。
[0117]
图查询阶段:服务器可以接收用户的图查询请求,图查询请求中可以包括节点和/或边的属性信息,基于用户输入的信息,从图数据库中查找对应的目标图。
[0118]
图搜索阶段:如果是相似图搜索,则服务器接收用户输入的图,将图按照存储阶段的分解规则对图进行分解,并求得输入的图对应的单词列表以及图向量,现基于图向量预先从图数据库中筛选出向量距离满足距离阈值的前m个候选图数据集合,然后再基于单词列表计算相似度,根据相似度从候选图数据集合中确定目标图数据。如果是子图搜索,则直接求解输入的图对应的单词列表与图数据库中的图对应的单词列表之间的包含度,基于包含度确定目标图。
[0119]
基于同样的思路,本说明书实施例还提供了上述实施例中的方法对应的装置。图4为本说明书实施例提供的一种图搜索装置的结构示意图。如图4所示,该装置可以包括:
[0120]
第一图数据获取模块410,用于获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;
[0121]
分解模块420,用于对所述第一图数据执行分解操作,得到对应的图数据单元;
[0122]
单词集合生成模块430,用于根据各个所述图数据单元的属性信息,生成所述第一图数据对应的单词集合;
[0123]
图数据搜索模块440,用于基于所述单词集合,搜索与所述第一图数据相关的图数据.
[0124]
基于图4的装置,本说明书实施例还提供了该装置的一些具体实施方案,下面进行说明。
[0125]
可选的,所述装置,还可以包括:
[0126]
可选的,图数据搜索模块440,具体可以包括:
[0127]
相似图数据搜索单元,用于基于所述单词集合,确定图数据库中与所述第一图数据的相似度满足第一预设条件的目标图数据。
[0128]
可选的,图数据搜索模块440,具体可以包括:
[0129]
子图数据搜索单元,用于基于所述单词集合,确定图数据库中与所述第一图数据之间的包含度满足第二预设条件的目标图数据。
[0130]
可选的,所述分解模块420,具体可以包括:
[0131]
按照预设规则对所述第一图数据进行分解操作,得到对应的单元;一个所述单元包括所述第一图数据中的一个节点数据,或者,一个所述单元包括所述第一图数据中的边数据以及该边连接的节点数据;
[0132]
可选的,所述单词集合生成模块430,具体可以用于:
[0133]
对于任意一个所述单元,确定该单元中的节点数据以及边数据;
[0134]
确定所述节点数据以及所述边数据的属性信息;
[0135]
对所述属性信息进行哈希计算,得到该单元对应的单词,
[0136]
将所述单词确定为所述单词集合中的一个元素。
[0137]
可选的,所述相似图数据搜索单元,具体可以包括:
[0138]
第一图向量计算子单元,用于对所述单词集合中的单词对应的向量进行标准化处理,得到所述第一图数据对应的第一图向量;
[0139]
候选图数据集合子单元,用于基于所述第一图向量,从所述图数据库中确定所述第一图数据对应的候选图数据集合;
[0140]
相似图数据确定子单元,用于基于所述单词集合,从所述候选图数据库集合中确定与所述第一图数据之间的相似度满足第一预设条件的所述目标图数据。
[0141]
可选的,所述相似图数据确定子单元,具体可以用于:
[0142]
计算所述单词集合中的单词与所述候选图数据库中的单词之间的相似度;
[0143]
确定所述候选图数据库中所述相似度大于或等于预设相似度阈值的目标图数据。
[0144]
可选的,若所述候选图数据库中所述相似度大于或等于预设相似度阈值的目标图数据存在多个,将所述候选图数据中相似度最大的图数据确定为目标图数据。
[0145]
可选的,所述装置,还可以包括:
[0146]
第一结果发送模块,用于将所述目标图数据的id以及所述相似度值发送至所述用户的终端。
[0147]
可选的,所述子图数据搜索单元,具体可以包括:
[0148]
候选图数据集合确定子单元,用于基于所述单词集合,根据倒排索引方法,确定包含所述单词集合的候选图数据集合;
[0149]
包含度计算子单元,用于计算所述单词集合与所述候选图数据集合中每个图数据的包含度;
[0150]
子图数据确定子单元,用于将所述候选图数据集合中包含度大于或等于预设包含度阈值的图数据确定为目标图数据。
[0151]
可选的,若所述候选图数据集合中包含度大于或等于预设包含度阈值的图数据存在多个,将所述候选图数据中包含度最大的图数据确定为目标图数据。
[0152]
可选的,所述装置,还可以包括:
[0153]
第二结果发送模块,用于将所述目标图数据的id以及所述包含度值发送至所述用户的终端。
[0154]
可选的,所述装置,还可以包括:
[0155]
第二图数据获取模块,用于获取所述用户输入的第二图数据;所述第二图数据是对所述图数据库中包含的原始图数据进行修改得到的;所述第二图数据包括所述原始图数据的id、第二图数据的id、所述第二图数据中的节点数据的属性信息以及所述第二图数据中的边数据的属性信息;
[0156]
第二图数据存储模块,用于将所述第二图数据按照所述预设规则进行处理后存储至所述图数据库中。
[0157]
可选的,所述装置还可以包括:
[0158]
图数据删除模块,用于将所述图数据库中的原始图数据删除。
[0159]
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
[0160]
图5为本说明书实施例提供的一种图搜索设备的结构示意图。如图5所示,设备500可以包括:
[0161]
至少一个处理器510;以及,
[0162]
与所述至少一个处理器通信连接的存储器530;其中,
[0163]
所述存储器530存储有可被所述至少一个处理器510执行的指令520。所述指令被
所述至少一个处理器510执行,以使所述至少一个处理器510能够:
[0164]
获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;
[0165]
对所述第一图数据执行分解操作,得到对应的图数据单元;
[0166]
根据各个所述图数据单元的属性信息,生成所述第一图数据对应的单词集合;
[0167]
基于所述单词集合,搜索与所述第一图数据相关的图数据。
[0168]
基于同样的思路,本说明书实施例还提供了上述方法对应的计算机可读介质。计算机可读介质上存储有计算机可读指令。所述计算机可读指令可被处理器执行以实现以下方法:
[0169]
获取用户输入的第一图数据;所述第一图数据包括点数据以及边数据;
[0170]
对所述第一图数据执行分解操作,得到对应的图数据单元;
[0171]
根据各个所述图数据单元的属性信息,生成所述第一图数据对应的单词集合;
[0172]
基于所述单词集合,搜索与所述第一图数据相关的图数据。
[0173]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0174]
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字符系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0175]
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制
器:arc625d、atmelat91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0176]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字符助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本技术时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0177]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0178]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0179]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0180]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0181]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0182]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动
态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字符多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0183]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0184]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0185]
本技术可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本技术,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0186]
以上所述仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献