知识图谱的查询方法、装置、计算机设备和存储介质与流程

文档序号:21456907发布日期:2020-07-10 17:52阅读:298来源:国知局
知识图谱的查询方法、装置、计算机设备和存储介质与流程

本申请涉及图查询技术领域,特别是涉及一种知识图谱的查询方法、装置、计算机设备和存储介质。



背景技术:

知识图谱也被称为科学知识图谱,在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。知识图谱数据管理的一个重要问题是如何对知识图谱的数据进行存储和查询,大部分知识图谱的数据使用资源描述框架(resourcedescriptionframework,rdf)数据集来表示。其中,rdf三元组是构成rdf图的最基本单元。随着知识图谱相关技术的不断发展,rdf三元组数据日益激增,并且被广泛地应用在多个领域,包括科学、生物信息、商业智能和社交网络等。在现实世界中,rdf数据集往往达到数亿条三元组数据。因此,目前如何有效管理大规模rdf图数据集受到越来越多的关注。

而随着稀疏矩阵数据结构和算法的发展,以及事实上rdf数据的稀疏性无处不在,促使了许多研究人员采用稀疏矩阵运算来解决图计算的问题。具体到rdf图,通过将rdf图存储为一个稀疏矩阵,对rdf图的查询操作也随之可以转换为一系列简明的稀疏矩阵运算。然而,由于稀疏矩阵中非零元素分布不规律以及稀疏矩阵运算过程中需要不断进行不规则的数据访存,使得容易产生高延迟,导致降低了查询效率。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高效率的知识图谱的查询方法、装置、计算机设备和存储介质。

一种知识图谱的查询方法,所述方法包括:

将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量;

对所述稀疏矩阵和所述稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量;

根据计算核组的数量以及各所述计算核组对应的计算从核的数量,将所述压缩稀疏矩阵划分成多个子集并分别分配给各所述计算从核;

各所述计算从核基于分配的所述子集和所述压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。

在其中一个实施例中,所述方法还包括:

获取预设的阈值;

根据所述阈值,按列将各所述计算从核中的所述子集进行划分,得到数量与所述阈值相同的列向量集合,将所述列向量集合作为最终的子集。

在其中一个实施例中,当所述子集为列向量集合时,所述各所述计算从核基于分配的所述子集和所述压缩稀疏向量并行进行知识图谱的查询,得到查询结果,包括:

各所述计算从核将分配的各所述列向量集合,依次且分别与所述压缩稀疏向量进行矩阵运算,运算结果向量;

将所述运算结果向量解码得到查询结果。

在其中一个实施例中,所述对所述稀疏矩阵和所述稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量,包括:

筛选并获取所述稀疏向量中的非零元,得到压缩稀疏向量;

确定各所述非零元在所述稀疏向量中的索引号,得到非零元索引号;

从所述稀疏矩阵中筛选获取列索引号与各所述非零元索引号相同的列,得到筛选稀疏矩阵;

删除所述筛选稀疏矩阵中各列之间的空行,得到压缩稀疏矩阵。

在其中一个实施例中,所述根据计算核组的数量以及各所述计算核组对应的计算从核的数量,将所述压缩稀疏矩阵划分成多个子集并分别分配给各所述计算从核,包括:

基于所述压缩稀疏矩阵中非零元的个数和计算核组的数量,按行对所述压缩稀疏矩阵进行划分,得到数量与所述计算核组的数量相同的多个矩阵块;

将各所述矩阵块分别分配给各所述计算核组;

基于所述矩阵块中非零元的个数和所述计算核组对应计算从核的数量,按行对所述矩阵块进行划分,得到与所述计算从核的数量相同的多个矩阵条;

将各所述矩阵条作为子集分别分配给各所述计算从核。

在其中一个实施例中,所述将知识图谱编码并转换成稀疏矩阵,包括:

根据所述知识图谱的节点数量确定矩阵大小,并构建与所述矩阵大小相同的空矩阵;

将所述知识图谱中各节点的关系作为矩阵元素填入所述空矩阵,得到稀疏矩阵。

在其中一个实施例中,所述将获取的查询数据转换成稀疏向量,包括:

将所述查询数据与对角矩阵进行乘运算,得到稀疏向量。

一种知识图谱的查询装置,所述装置包括:

转换模块,用于将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量;

压缩模块,用于对所述稀疏矩阵和所述稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量;

划分模块,用于根据计算核组的数量以及各所述计算核组对应的计算从核的数量,将所述压缩稀疏矩阵划分成多个子集并分别分配给各所述计算从核;

查询模块,用于各所述计算从核基于分配的所述子集和所述压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述知识图谱的查询方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述知识图谱的查询方法的步骤。

上述知识图谱的查询方法、装置、计算机设备和存储介质,一方面,将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量后,通过筛选和压缩减少稀疏矩阵和稀疏向量的冗余数据,从而因为只保留有用的数据避免了后续基于稀疏矩阵进行查询时因存在大量冗余数据而限值带宽利用率的问题,提高了查询效率。另一方面,在得到压缩稀疏矩阵之后基于计算核的数量的对其进行划分分配以及各计算核并行进行查询,实现了并行化的查询方案,从而减少延迟率提升处理速度,从而提高查询的效率。

附图说明

图1为一个实施例中知识图谱的查询方法的应用环境图;

图2为一个实施例中知识图谱的查询方法的流程示意图;

图3为一个实施例中rdf图的示意图;

图4为一个实施例中与rdf图对应的稀疏矩阵的示意图;

图5a-5b为一个实施例中压缩简化存储的示意图;

图6为一个实施例中稀疏矩阵划分和分配的示意图;

图7为另一个实施例中知识图谱的查询方法的流程示意图;

图8为一个实施例中知识图谱的查询装置的结构框图;

图9为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的知识图谱的查询方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。当终端102接收到用户的查询指令时,可以由终端102响应查询指令单独完成本申请的知识图谱的查询方法,也可以通过将终端102将查询指令发送给服务器104,由服务器单独完成本申请的知识图谱的查询方法。以服务器104为例,服务器104将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量;服务器104对稀疏矩阵和稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量;服务器104根据计算核组的数量以及各计算核组对应的计算从核的数量,将压缩稀疏矩阵划分成多个子集并分别分配给各计算从核;服务器104各计算从核基于分配的子集和压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图2所示,提供了一种知识图谱的查询方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:

步骤s202,将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量。

其中,查询数据是用于对知识图谱进行数据查询的已知数据。知识图谱也被称为科学知识图谱,在图书情报界称为知识域可视化或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及它们之间的相互联系。具体来说,知识图谱是通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前沿领域以及整体知识架构达到多学科融合目的的现代理论。它把复杂的知识领域通过数据挖掘、信息处理、知识计量和图形绘制而显示出来,揭示知识领域的动态发展规律,为学科研究提供切实的、有价值的参考。迄今为止,其实际应用在发达国家已经逐步拓展并取得了较好的效果,但它在我国仍属研究的起步阶段。

稀疏矩阵是指非零元素的个数远远小于矩阵元素的总数,并且非零元素的分布没有规律的矩阵。具体来说,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵。即通过定义非零元素的总数比上矩阵所有元素的总数为矩阵的稠密度。稀疏矩阵稀疏向量乘(sparsematrix-sparsevectormultiplication,spmspv)的数学表达式通常表示为y=a×x,a为输入的稀疏矩阵,x为输入的稀疏向量,y为输出的稀疏向量。具体到本实施例,可以理解为是将知识图谱转换为稀疏矩阵a,查询数据转换为稀疏向量x,需要查询的数据,即查询结果为输出的稀疏向量y。

具体地,服务器接收到携带有查询数据的查询语句,查询语句为sparql(simpleprotocolandrdfquerylanguage)语句,因为sparql语句是提出的rdf图上的标准查询语言。服务器响应查询语句,获取构建好的被查询的知识图谱。应当理解的是,服务器所获取的构建好的知识图谱可以是预先存储在本地的知识图谱,也可以是通过终端接收的用户实时上传至的知识图谱。

由于大部分知识图谱的数据都使用资源描述框架(resourcedescriptionframework,rdf)数据集来表示,rdf数据集也可以被描述为一个有向标签图,称为rdf图。rdf图通常又是以三元组的形式来表示信息,简单来说,每一条描述都是以主谓宾三元组形式(主语、谓语、宾语)构成的短句。因此,当服务器获取到rdf形式的知识图谱之后,首先将知识图谱里属于文字形式的信息进行编码,编码成数值形式,从而方便后面转换成稀疏矩阵进行相应的数值运算。然后,可以基于三元组的构成特点将文字形式的信息已经转换成数值形式的rdf知识图谱转换成稀疏矩阵。rdf图即可存储为n*n的稀疏矩阵,n为rdf图的节点数,而稀疏矩阵中的非零元即为rdf图中的边。

在一个实施例中,将知识图谱编码并转换成稀疏矩阵具体包括:根据知识图谱的节点数量确定矩阵大小,并构建与矩阵大小相同的空矩阵;将知识图谱中各节点的关系作为矩阵元素填入空矩阵,得到稀疏矩阵。

如图3-4所示,图3提供一种rdf图的示意图,图4提供一种由图3所示的rdf图转换而成的稀疏矩阵的示意图。参考图3-4,图3中rdf图包括abcde五个节点,那么对应的图4的稀疏矩阵即为5*5的矩阵,分别由abcde五个节点表示。以及,图4稀疏矩阵中的非零元即是一个节点和另一个节点连接的边a、b、c、d。稀疏矩阵中非零元即可以表示为rdf三元组中的主语通过谓语连接到宾语,谓语可以理解为是两个节点的之间的关系,三元组的形式(主语、谓语、宾语)对应于(实体、关系、实体)。例如,以节点a与节点c为例,即为主语a通过谓语a连接到宾语c,稀疏矩阵中a行c列的非零元就是a。

在一个实施例中,查询数据可以通过对角矩阵转换成稀疏向量,对角矩阵是一个主对角线之外的元素皆为0的矩阵。例如,假设sparql查询语句为<?x,a,?y>,其中,a为查询数据,?x和?y为被查询的数据。通过a与对角矩阵i相乘,转换成稀疏向量。后续通过转换得到的稀疏矩阵和稀疏向量进行稀疏矩阵向量乘得到查询结果,稀疏矩阵向量乘表达式可以重新表示为:

即根据谓语a(查询数据)从rdf知识图谱所转换成稀疏矩阵jz中获得满足该谓语条件的变量x和y,并将结果存储在矩阵mxy中,即查询得到x和y。其中,i为对角矩阵。是一个类似矩阵乘的操作,其中矩阵乘中的乘法运算代替为逻辑“与”运算、加法运算代替为逻辑“或”运算。

步骤204,对稀疏矩阵和稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量。

其中,由于稀疏矩阵和稀疏向量中零元素占比居多,而在稀疏矩阵向量乘中,稀疏矩阵中只有与稀疏向量中非零元索引号对应的数据为有用的运算数据,而存在的大量的零元素为无用的冗余数据。索引号可以理解为是非零元在稀疏向量中的行号和列号。

具体地,服务器通过筛选出稀疏向量中的非零元并存储,得到只有非零元的压缩稀疏向量。然后,根据非零元的索引号从稀疏矩阵筛选对应的有用的数据并存储,得到稀疏矩阵对应的压缩稀疏矩阵。

步骤s206,根据计算核组的数量以及各计算核组对应的计算从核的数量,将压缩稀疏矩阵划分成多个子集并分别分配给各计算从核。

其中,计算核是指服务器中处理器的核,包括主核和从核,而一个核组包括一个1个主核和多个从核,多个主核可以组成多个核组。以“神威太湖之光”超级计算机为例,神威超级计算机由40940个申威26010异构多核处理器构成,每个处理器上集成了4个核组,每个核组中有1个计算控制主核和64个计算从核。一个申威26010处理器可访问内存32gb,每个核组本地内存8gb。而每个主核数据存储空间为32kb、指令存储空间为32kb。每个从核局部存储空间大小为64kb,指令存储空间为16kb。从核可以直接离散访问主存也可以通过dma(directmemoryaccess,直接内存操作)方式批量访问主存,离散访问延迟为278cycles,批量访问延迟为25cycles,批量访问性能更佳。

具体地,当服务器压缩得到压缩稀疏矩阵之后,基于压缩稀疏矩阵的非零元个数将压缩稀疏矩阵划分多个矩阵块且将多个矩阵块分配给不同的计算核组。然后,计算核组之间同样基于矩阵块的非零元个数将矩阵块划分为矩阵条,将各矩阵条作为压缩稀疏矩阵的子集分配给计算核组中的计算从核。

划分原则为:保证各个计算核组/计算从核之间的被分配的非零元个数基本一致,即各矩阵块之间以及各矩阵条之间的非零元个数基本一致。例如,当一个计算核组分配得到矩阵块中非零元个数与该计算核组包括的计算从核的数量能够整除时,即优选平均分配原则。矩阵块划份得到各个矩阵条中的非零元个数相等。而不能整除时,确保各个矩阵条之间的非零元个数相差越小越好。

步骤s208,各计算从核基于分配的子集和压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。

具体地,在为各计算从核分配子集的同时,或者在分配得到子集之后,将压缩稀疏向量分配给所有的计算从核,使得每个计算从核分配得到一个子集(矩阵条)和完整的压缩稀疏向量x’。然后,所有的计算从核基于各自得到的子集和压缩稀疏向量并行进行稀疏矩阵向量乘运算,得到的运算结果即为查询结果。

上述知识图谱的查询方法、装置、计算机设备和存储介质,一方面,将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量后,通过筛选和压缩减少稀疏矩阵和稀疏向量的冗余数据,从而因为只保留有用的数据避免了后续基于稀疏矩阵进行查询时因存在大量冗余数据而限值带宽利用率的问题,提高了查询效率。另一方面,在得到压缩稀疏矩阵之后基于计算核的数量的对其进行划分分配以及各计算核并行进行查询,实现了并行化的查询方案,从而减少延迟率提升处理速度,从而提高查询的效率。

在一个实施例中,如图5a-5b所示,提供一种压缩简化存储的示意图,参考图5a,稀疏矩阵a是一个有m行、n列的矩阵,稀疏向量x是长度为n的向量。参考图5a,spmspv运算表达式可以为:

步骤s204,对稀疏矩阵和稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量,包括:

s1,筛选并获取稀疏向量中的非零元,得到压缩稀疏向量。

s2,确定各非零元在稀疏向量中的索引号,得到非零元索引号。

具体地,参考图5b,x是长度为n的稀疏向量,通过筛选确定x中的非零元个数nnz(x)=4。对稀疏向量x进行压缩简化存储为x’,x’中只保留了x中的4个非零元。创建两个数组存储x’:数组xi[4]={j1,j2,j3,j4}存储每个非零元在x中的索引号,数组xv[4]={x1,x2,x3,x4}存储每个非零元实际所表示的数值。后续根据数组xi[4]和数组xv[4]即可直接确定各非零的索引号得到非零元索引号,以及获取各非零元实际的数值。

s3,从稀疏矩阵中筛选获取列索引号与各非零元索引号相同的列,得到筛选稀疏矩阵。

s4,删除筛选稀疏矩阵中各列之间的空行,得到压缩稀疏矩阵。

具体地,参考图5b,稀疏矩阵a是一个有m行、n列的稀疏矩阵,a中的非零元个数为nnz(a)=11。由于稀疏向量x只有4个非零元,因此,从稀疏矩阵中筛选出与稀疏向量x这4个非零元索引号对应的列只有4列,这4列是列索引号与4个非零元索引号对应的4列。然后,去除这4列之外其他的列,以及将这4列中间的空行删除,从而a’中的行数减少为m’=7,最终得到只有4列7行的压缩稀疏矩阵a’。筛选后的得到的压缩稀疏矩阵a’中nnz(a’)=8。可以通过三个数组存储压缩稀疏矩阵a’,数组colp[5]={0,3,6,7,8}存储了每一列在a’中的起始位置,数组rows[8]={1,2,4,0,4,6,3,5}存储每个非零元在a’中的行索引,数组vals[8]={a1,a2,a3,a4,a5,a6,a7}存储每个非零元实际的数值。

另外,应当理解的是,由于稀疏矩阵和稀疏向量均被压缩存储,对应的输出稀疏向量自然也是会被同步压缩的。参考图5b,原始的稀疏矩阵与稀疏向量乘得到输出系数向量y,y是长度为m的稀疏向量。然而,当稀疏矩阵被压缩存储为压缩稀疏矩阵a’,稀疏向量被压缩存储为压缩稀疏向量x’之后,对应的y同样被压缩为y’。y’中只保留了m’=7个非零元,这7个元素在y中的索引号对应的是a’中所有非零元在a中的行索引号。同样可以由两个数组存储y’:数组yi[7]={i1,i2,i3,i4,i5,i6,i7}存储每个非零元的索引,数组yv[7]={y1,y2,y3,y4,y5,y6,y7}存储每个非零元的数值。

本实施例中,通过对稀疏矩阵和稀疏向量进行压缩,去除大量无用的冗余数据从而避免冗余数据限制了带宽利用率,提高后续的查询效率。

在一个实施例中,步骤s206,包括:基于压缩稀疏矩阵中非零元的个数和计算核组的数量,按行对压缩稀疏矩阵进行划分,得到数量与计算核组的数量相同的多个矩阵块;将各矩阵块分别分配给各计算核组;基于矩阵块中非零元的个数和计算核组对应计算从核的数量,按行对矩阵块进行划分,得到与计算从核的数量相同的多个矩阵条;将各矩阵条作为子集分别分配给各所述计算从核。

如图6所示,提供一种以图5b所示的压缩稀疏矩阵a’为例的稀疏矩阵划分和分配的示意图。本实施例以计算核组的数量为2、每个计算核组中的计算从核的数量为2为例进行说明。

具体地,参考图6,按照非零元基本一致的划分原则,基于压缩稀疏矩阵a’非零元的个数,按行将压缩系数矩阵a’划分为2个矩阵块block,每个block非零元的个数为4,分给第一个核组的block有4行,分给第二个核组的block有3行。对应的,y’也被划分为相应的2个核组片段cg-segy’。分给第一个核组的cg-segy’有4个元素,分给第二个核组的cg-segy’有3个元素。可以理解为,每个核组分配得到一个block和整个x’,计算结果为对应的cg-segy’。

然后,按照非零元基本一致的划分原则,基于每个计算核组分配得到的矩阵块block的非零元的个数,继续按行将block划分为2个矩阵条tile,每个tile非零元的个数为2。对应的,cg-segy’也会被划分为相应的2个从核片段cpe-segy’。由此,计算核组中每个计算从核分配得到一个矩阵条tile和整个x’,计算结果为对应的cpe-segy’。即在本实施例中,分配给计算从核的子集为矩阵条tile。

在本实施例,通过计算核组和计算从核的个数将压缩稀疏矩阵进行划分,充分发掘利用了计算核组之间的并行性以及每个计算核组中计算从核间的并行性。并且,在划分时,基于非零元的个数、以及按照矩阵的行进行划分,不仅可以保证各计算从核的负载均衡还能防止并行的冲突,从而多方面提高处理的效率。

在一个实施例中,如图7所示,提供另一种知识图谱的查询方法,在步骤s206之后,还包括:

步骤s207,获取预设的阈值;根据阈值,按列将各计算从核中的子集进行划分,得到数量与阈值相同的列向量集合,将列向量集合作为最终的子集。

具体地,在本实施例中,为了充分利用每个计算从核的有限局存,通过设定的阈值inc再次将计算从核中的子集(此时子集为矩阵条)进行划分,得到多个列向量集合。参考图6,本实施例中优选inc=2,根据阈值2按列对每个计算从核的矩阵条tile划分为若干个cvs(columnvectorset,列向量集合),每个cvs有2列。对应的,x’也被划分为相应的若干个片段segx’,每个片段segx’有2个元素。每个cvs、对应的segx’和cpe-segy’的大小必须适合于从核局存。

进一步的,在一个实施例中,当子集为列向量集合时,步骤s207,各计算从核基于分配的子集和压缩稀疏向量并行进行知识图谱的查询,得到查询结果,包括:各计算从核将分配的各列向量集合,依次且分别与压缩稀疏向量进行矩阵运算,得到运算结果向量;将运算结果向量解码得到查询结果。

具体地,参考图6,在计算从核并行基于稀疏矩阵稀疏向量运算进行查询时,每个计算从核先可以在其局存中为cpe-segy’开辟存储空间。然后,当进行运算时,计算从核每次先只加载一个cvs和这个cvs对应的segx’到局存进行每一轮次的计算,得到计算结果。最后将所有的计算结果都累加在局存中的cpe-segy’上,直到整个tile都加载到局存并计算完毕,累加后的cpe-segy’被返回到主存,从而得到运算结果向量。由于基于矩阵运算进行查询得到的结果仍然为编码后的数值形式。所以,通过对得到运算结果向量进行解码再次转换成对应的文字形式的查询结果,将查询结果返回显示给终端的用户。

在本实施例中,通过划分为列向量集合能够充分利用各个计算从核的优先局存,从而提高处理的效率。

应该理解的是,虽然图2、7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、7中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图8所示,提供了一种知识图谱的查询装置,包括:转换模块802、压缩模块804、划分模块806和查询模块808,其中:

转换模块802,用于将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量;

压缩模块804,用于对稀疏矩阵和稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量;

划分模块806,用于根据计算核组的数量以及各计算核组对应的计算从核的数量,将压缩稀疏矩阵划分成多个子集并分别分配给各计算从核;

查询模块808,用于各计算从核基于分配的子集和压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。

在一个实施例中,划分模块806还用于获取预设的阈值;根据阈值,按列将各计算从核中的子集进行划分,得到数量与阈值相同的列向量集合,将列向量集合作为最终的子集。

在一个实施例中,查询模块808还用于各计算从核将分配的各列向量集合,依次且分别与压缩稀疏向量进行矩阵运算,运算结果向量;将运算结果向量解码得到查询结果。

在一个实施例中,压缩模块804还用于筛选并获取稀疏向量中的非零元,得到压缩稀疏向量;确定各非零元在稀疏向量中的索引号,得到非零元索引号;从稀疏矩阵中筛选获取列索引号与各非零元索引号相同的列,得到筛选稀疏矩阵;删除筛选稀疏矩阵中各列之间的空行,得到压缩稀疏矩阵。

在一个实施例中,划分模块806还用于基于压缩稀疏矩阵中非零元的个数和计算核组的数量,按行对压缩稀疏矩阵进行划分,得到数量与计算核组的数量相同的多个矩阵块;将各矩阵块分别分配给各计算核组;基于矩阵块中非零元的个数和计算核组对应计算从核的数量,按行对矩阵块进行划分,得到与计算从核的数量相同的多个矩阵条;将各矩阵条作为子集分别分配给各所述计算从核。

在一个实施例中,转换模块802还用于根据知识图谱的节点数量确定矩阵大小,并构建与矩阵大小相同的空矩阵;将知识图谱中各节点的关系作为矩阵元素填入空矩阵,得到稀疏矩阵。

在一个实施例中,转换模块802还用于将查询数据与对角矩阵进行乘运算,得到稀疏向量。

关于知识图谱的查询装置的具体限定可以参见上文中对于知识图谱的查询方法的限定,在此不再赘述。上述知识图谱的查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储知识图谱和对应的稀疏矩阵、以及压缩存储后的压缩稀疏矩阵和向量等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种知识图谱的查询方法。

本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量;

对稀疏矩阵和稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量;

根据计算核组的数量以及各计算核组对应的计算从核的数量,将压缩稀疏矩阵划分成多个子集并分别分配给各计算从核;

各计算从核基于分配的子集和压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取预设的阈值;根据阈值,按列将各计算从核中的子集进行划分,得到数量与阈值相同的列向量集合,将列向量集合作为最终的子集。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:各计算从核将分配的各列向量集合,依次且分别与压缩稀疏向量进行矩阵运算,运算结果向量;将运算结果向量解码得到查询结果。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:筛选并获取稀疏向量中的非零元,得到压缩稀疏向量;确定各非零元在稀疏向量中的索引号,得到非零元索引号;从稀疏矩阵中筛选获取列索引号与各非零元索引号相同的列,得到筛选稀疏矩阵;删除筛选稀疏矩阵中各列之间的空行,得到压缩稀疏矩阵。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:基于压缩稀疏矩阵中非零元的个数和计算核组的数量,按行对压缩稀疏矩阵进行划分,得到数量与计算核组的数量相同的多个矩阵块;将各矩阵块分别分配给各计算核组;基于矩阵块中非零元的个数和计算核组对应计算从核的数量,按行对矩阵块进行划分,得到与计算从核的数量相同的多个矩阵条;将各矩阵条作为子集分别分配给各所述计算从核。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据知识图谱的节点数量确定矩阵大小,并构建与矩阵大小相同的空矩阵;将知识图谱中各节点的关系作为矩阵元素填入空矩阵,得到稀疏矩阵。

在一个实施例中,处理器执行计算机程序时还实现以下步骤:将查询数据与对角矩阵进行乘运算,得到稀疏向量。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

将知识图谱编码并转换成稀疏矩阵,以及将获取的查询数据转换成稀疏向量;

对稀疏矩阵和稀疏向量进行冗余数据筛选和压缩,得到压缩稀疏矩阵和压缩稀疏向量;

根据计算核组的数量以及各计算核组对应的计算从核的数量,将压缩稀疏矩阵划分成多个子集并分别分配给各计算从核;

各计算从核基于分配的子集和压缩稀疏向量,并行进行知识图谱的查询,得到查询结果。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取预设的阈值;根据阈值,按列将各计算从核中的子集进行划分,得到数量与阈值相同的列向量集合,将列向量集合作为最终的子集。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:各计算从核将分配的各列向量集合,依次且分别与压缩稀疏向量进行矩阵运算,得到运算结果向量;将运算结果向量解码得到查询结果。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:筛选并获取稀疏向量中的非零元,得到压缩稀疏向量;确定各非零元在稀疏向量中的索引号,得到非零元索引号;从稀疏矩阵中筛选获取列索引号与各非零元索引号相同的列,得到筛选稀疏矩阵;删除筛选稀疏矩阵中各列之间的空行,得到压缩稀疏矩阵。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:基于压缩稀疏矩阵中非零元的个数和计算核组的数量,按行对压缩稀疏矩阵进行划分,得到数量与计算核组的数量相同的多个矩阵块;将各矩阵块分别分配给各计算核组;基于矩阵块中非零元的个数和计算核组对应计算从核的数量,按行对矩阵块进行划分,得到与计算从核的数量相同的多个矩阵条;将各矩阵条作为子集分别分配给各所述计算从核。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据知识图谱的节点数量确定矩阵大小,并构建与矩阵大小相同的空矩阵;将知识图谱中各节点的关系作为矩阵元素填入空矩阵,得到稀疏矩阵。

在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将查询数据与对角矩阵进行乘运算,得到稀疏向量。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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