发明内容
基于此,有必要针对上述技术问题,提供一种能够提高查询效率的基于稀 疏矩阵的知识图谱查询方法、装置、计算机设备和存储介质。
一种基于稀疏矩阵的知识图谱查询方法,所述方法包括:
获取知识图谱并将所述知识图谱转换成稀疏矩阵;
基于所述稀疏矩阵中各行向量的行向量长度,分别对所述稀疏矩阵进行行 向量划分,得到各划分稀疏矩阵;
分别评估各所述划分稀疏矩阵的行向量长度的离散度,确定离散度最低的 划分稀疏矩阵;
根据计算核的对齐字节对离散度最低的所述划分稀疏矩阵进行行向量填 充,得到填充稀疏矩阵;
基于所述填充稀疏矩阵进行所述知识图谱的查询。
在其中一个实施例中,所述基于所述稀疏矩阵中各行向量的行向量长度, 分别对所述稀疏矩阵进行行向量划分,得到各划分稀疏矩阵,包括:
确定所述稀疏矩阵中行向量长度最长的行向量的长度值;
获取小于所述长度值的各个正整数组成划分阈值集合;
依次将所述划分阈值集合中的所述正整数作为划分阈值,从所述稀疏矩阵 中确定行向量长度大于所述划分阈值的行向量;
基于所述划分阈值,将确定的行向量长度大于所述划分阈值的各行向量分 别划分成多个行向量长度不大于所述划分阈值的子行向量,得到所述划分阈值 对应的划分稀疏矩阵。
在其中一个实施例中,所述分别评估各所述划分稀疏矩阵的行向量长度的 离散度,得到离散度最低的划分稀疏矩阵,包括:
分别确定各所述划分稀疏矩阵的行向量长度的标准差;
比较各所述划分稀疏矩阵的行向量长度的标准差,确定所述标准差最小的 划分稀疏矩阵为离散度最低的划分稀疏矩阵。
在其中一个实施例中,所述分别确定各所述划分稀疏矩阵的行向量长度的 标准差,包括:
获取所述划分稀疏矩阵的行向量总数和行向量总长度、以及确定所述划分 稀疏矩阵中行向量长度相同的行向量的向量总数;
根据所述行向量总数、所述行向量总长度以及所述向量总数计算得到所述 划分稀疏矩阵的行向量长度的标准差。
在其中一个实施例中,所述获取所述划分稀疏矩阵的行向量总数,包括:
将所述稀疏矩阵中行向量长度大于所述划分阈值的行向量作为候选行向 量;
当所述候选行向量的行向量长度与所述划分阈值的余数为0时,确定各所 述候选行向量的行向量长度与所述划分阈值的商;
计算各所述商与固定值的差值,各所述差值与所述稀疏矩阵的行向量总数 的和作为所述划分稀疏矩阵的行向量总数;
当所述候选行向量的行向量长度与所述划分阈值的余数不为0时,确定各 所述候选行向量的行向量长度与所述划分阈值的商,各所述商与所述稀疏矩阵 的行向量总数的和作为所述划分稀疏矩阵的行向量总数。
在其中一个实施例中,所述根据计算核的对齐字节对离散度最低的所述划 分稀疏矩阵进行行向量填充,得到填充稀疏矩阵,包括:
根据计算核的对齐字节确定填充阈值;
根据所述填充阈值对所述划分稀疏矩阵中的各行向量分别进行向量填充, 得到各行向量长度均为所述填充阈值的倍数的填充稀疏矩阵。
在其中一个实施例中,所述基于所述填充稀疏矩阵进行所述知识图谱的查 询,包括:
获取所述知识图谱的查询语句,所述查询语句包括已知数据;
基于所述已知数据和所述填充稀疏矩阵进行矩阵乘运算,得到查询结果。
在其中一个实施例中,一种基于稀疏矩阵的知识图谱查询装置,所述装置 包括:
转换模块,用于获取知识图谱并将所述知识图谱转换成稀疏矩阵;
划分模块,用于基于所述稀疏矩阵中各行向量的行向量长度,分别对所述 稀疏矩阵进行行向量划分,得到各划分稀疏矩阵;
评估模块,用于分别评估各所述划分稀疏矩阵的行向量长度的离散度,得 到离散度最低的划分稀疏矩阵;
填充模块,用于根据计算核的对齐字节对离散度最低的所述划分稀疏矩阵 进行行向量填充,得到填充稀疏矩阵;
查询模块,用于基于所述填充稀疏矩阵进行所述知识图谱的查询。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序, 所述处理器执行所述计算机程序时实现上述任一项所述基于稀疏矩阵的知识图 谱查询方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处 理器执行时实现上述任一项所述基于稀疏矩阵的知识图谱查询方法的步骤。
上述基于稀疏矩阵的知识图谱查询方法、装置、计算机设备和存储介质, 一方面,由于一组数据离散度的高低能够表明该组数据的分布均匀情况,因此 该方法将知识图谱转换成稀疏矩阵并通过稀疏矩阵的行向量长度进行行向量划 分后,对划分得到的各划分稀疏矩阵进行离散度的评价,进而选取最低离散度 对应划分阈值划分得到的划分稀疏矩阵,保证所得到的划分稀疏矩阵中非零元 在行向量中分布的更均匀,离散度最小,避免因分布稀疏和不均匀导致降低查 询效率,从而提高了查询效率。另一方面,基于计算核的对齐字节对选取的划 分稀疏矩阵进行行向量填充得到填充稀疏矩阵,从而保证进行知识图谱查询时 对填充稀疏矩阵的数据访问都是按照字节边界对齐的,避免不对齐的访存造成处理异常,从而提高查询的效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实 施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅 用以解释本申请,并不用于限定本申请。
在一个实施例中,如图1所示,提供了一种基于稀疏矩阵的知识图谱查询 方法,本实施例以该方法应用于终端为例进行说明,可以理解的是,该方法也 可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服 务器的交互实现。本实施例中,该方法包括以下步骤:
步骤S102,获取知识图谱并将知识图谱转换成稀疏矩阵。
其中,知识图谱也被称为科学知识图谱,在图书情报界称为知识域可视化 或知识领域映射地图,是显示知识发展进程与结构关系的一系列各种不同的图 形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知 识及它们之间的相互联系。具体来说,知识图谱是通过将应用数学、图形学、 信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析 等方法结合,并利用可视化的图谱形象地展示学科的核心结构、发展历史、前 沿领域以及整体知识架构达到多学科融合目的的现代理论。它把复杂的知识领 域通过数据挖掘、信息处理、知识计量和图形绘制而显示出来,揭示知识领域 的动态发展规律,为学科研究提供切实的、有价值的参考。迄今为止,其实际 应用在发达国家已经逐步拓展并取得了较好的效果,但它在我国仍属研究的起 步阶段。
稀疏矩阵是指非零元素的个数远远小于矩阵元素的总数,并且非零元素的 分布没有规律的矩阵。具体来说,若数值为0的元素数目远远多于非0元素的 数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵。与之相反,若 非0元素数目占大多数时,则称该矩阵为稠密矩阵。定义非零元素的总数比上 矩阵所有元素的总数为矩阵的稠密度。
具体地,终端获取构建好的知识图谱,终端所获取的构建好的知识图谱可 以是预先存储在本地的知识图谱,也可以是接收的用户实时上传至终端的知识 图谱。由于大部分知识图谱的数据都使用资源描述框架(Resource Description Framework,RDF)数据集来表示,RDF数据集也可以被描述为一个有向标签图, 称为RDF图。RDF图是以三元组的形式来表示信息,简单来说,每一条描述都 是以主谓宾三元组形式(主语、谓语、宾语)构成的短句。因此,当终端获取 到RDF知识图谱之后,可以基于三元组的构成特点将RDF知识图谱转换成稀疏 矩阵。RDF图即可存储为n*n的稀疏矩阵,n为RDF图的节点数,而稀疏矩阵 中的非零元即为RDF图中的边。
如图2-3所示,图2提供一种RDF图的示意图,图3提供一种由图2所示 的RDF图转换而成的稀疏矩阵的示意图。参考图2-3,图2中RDF图包括ABCDE 五个节点,那么对应的图3的稀疏矩阵即为5*5的矩阵,分别由ABCDE五个节 点表示。以及,图3稀疏矩阵中的非零元即是一个节点和另一个节点连接的边a、 b、c、d。稀疏矩阵中非零元即可以表示为RDF三元组中的主语通过谓语连接到 宾语。例如,以节点A与节点C为例,即为主语A通过谓语a连接到宾语C, 稀疏矩阵中A行C列的非零元就是a。
步骤S104,基于稀疏矩阵中各行向量的行向量长度,分别对稀疏矩阵进行 行向量划分,得到各划分稀疏矩阵。
其中,行向量是指矩阵中的行,行向量长度可以理解为行所包括的元素个 数,例如行包括3个元素,行向量长度即为3。行向量划分即为将一行向量划分 为多行向量的过程,划分稀疏矩阵即为划分为多行向量后的矩阵。
具体地,依次获取稀疏矩阵中各行向量的行向量长度,当获取到一个行向 量长度之后,确定大于该行向量长度的所有行向量。然后,将大于该行向量长 度的所有行向量分别进行划分。因为行向量被划分为多个行,所以原始的稀疏 矩阵的行向量的数量会发生变化,行向量数量发生变化后的稀疏矩阵即为划分 稀疏矩阵。其中,划分得到的多行的行向量的向量长度均不能大于获取的行向 量长度。例如,当获取的行向量长度为3,那么稀疏矩阵中行向量长度大于3的 所有行向量均需要进行划分。以行向量长度为7的行向量为例,长度为7的行 向量可以划分成长度为3、3、1的三行子行向量,这三行子行向量的长度均小 于获取的行向量长度3。
步骤S106,分别评估各划分稀疏矩阵的行向量长度的离散度,确定离散度 最低的划分稀疏矩阵。
在统计学中,一组数据集的标准差反映了该数据集内个体之间的离散程度。 往往标准差越大,则数据集内个体间的离散程度也越大。因此,本实施例可以 通过终端分别计算各划分稀疏矩阵的行向量长度的标准差,通过比较各划分稀 疏矩阵的行向量长度的标准差确定离散度最低的划分稀疏矩阵。
在一个实施例中,步骤S106,包括:分别确定各划分稀疏矩阵的行向量长 度的标准差;比较各划分稀疏矩阵的行向量长度的标准差,确定标准差最小的 划分稀疏矩阵为离散度最低的划分稀疏矩阵。
具体地,终端分别统计各划分稀疏矩阵中每个行向量的长度的集合X={x0,x1,x2,…,xN(A)-1},由集合X的标准差σ来表示各划分稀疏矩阵的行向量长度的标准 差。N(A)是划分稀疏矩阵中的行向量总数,即划分稀疏矩阵包括多少行行向量。 集合X中的每个元素xi表示划分稀疏矩阵中第i个行向量的长度,i的取值范围 为{0,1,2,…,N(A)-1}。应当理解的是,由于程序通常从0开始计数,因此本实 例中的第0个行向量实际上就是划分稀疏矩阵的第一行向量,即集合X实际上 对应的行向量是{第一行、第二行……第N(A)行}。划分稀疏矩阵中向量长度的 离散度可由集合X的标准差σ来表示,公式如下::
其中,NNZ(A)为划分稀疏矩阵中非零元的总数。集合X的大小为N(A),即 集合X中一共有个N(A)元素,则集合X的算术平均数
为:
当计算得到各划分稀疏矩阵的行向量长度的标准差之后,通过将所有的标 准差进行大小比较,确定最小的标准差对应的划分稀疏矩阵为离散度最低的划 分稀疏矩阵。
步骤S108,根据计算核的对齐字节对离散度最低的划分稀疏矩阵进行行向 量填充,得到填充稀疏矩阵。
其中,向量填充是指对行向量进行向量补充为其增加新的向量。计算核是 指终端中处理器的计算核,例如神威26010处理器的计算核。
具体地,由于现有大部分处理器的每个计算核都安装有宽度为256位的 SIMD(Single Instruction Multiple Data,单指令多数据流)扩展部件。因此,在 本实施例中,在终端确定离散度最低的划分稀疏矩阵之后,通过对齐字节对划 分稀疏矩阵进行行向量填充得到填充稀疏矩阵。以此保证后续在进行向量化变 量映射时能够按字节对齐,从而有效地利用SIMD构架来优化并行稀疏矩阵向 量乘算法。而若不进行填充还可能会因为不对齐的访存导致操作执行的时候操 作系统引起异常。以32字节对齐为例,如图4所示,提供一种跨32字节不对 齐访存的示意图。
在一个实施例中,步骤S108,包括:根据计算核的对齐字节确定填充阈值; 根据填充阈值对划分稀疏矩阵中的各行向量分别进行向量填充,得到各行向量 长度均为填充阈值的倍数的填充稀疏矩阵。
具体地,由于向量化变量映射时双精度浮点类型按32字节对齐,单精度浮 点类型只需按照16字节对齐。因此为了同时满足双精度浮点类型和单精度浮点 类型,本实施例的填充阈值优选为4。
当终端获取到离散度最低的划分稀疏矩阵之后,通过填充阈值4对划分稀 疏矩阵中各行向量进行向量填充,得到每行行向量长度是4的倍数的填充稀疏 矩阵。如图5所示,提供一种向量填充示意图。参考图5,行填充后的矩阵每行 行向量的长度均为4的倍数。其中,填充的向量为0。
步骤S110,基于填充稀疏矩阵进行知识图谱的查询。
其中,查询语句是指用于指示进行知识图谱查询的指令。查询语句为 SPARQL(Simple Protocol and RDF Query Language)语句,SPARQL语句是提出的 RDF图上的标准查询语言。
具体地,当终端获取到知识图谱的查询SPARQL语句时,根据查询语句中 提供的已知数据与知识图谱对应的填充稀疏矩阵进行对应的矩阵乘运算,输出 查询结果。
上述基于稀疏矩阵的知识图谱查询方法,一方面,由于一组数据离散度的 高低能够表明该组数据的分布均匀情况,因此该方法将知识图谱转换成稀疏矩 阵并通过稀疏矩阵的行向量长度进行行向量划分后,对划分得到的各划分稀疏 矩阵进行离散度的评价,进而选取最低离散度对应划分阈值划分得到的划分稀 疏矩阵,保证所得到的划分稀疏矩阵中非零元在行向量中分布的更均匀,离散 度最小,避免因分布稀疏和不均匀导致降低查询效率,从而提高了查询效率。 另一方面,基于计算核的对齐字节对选取的划分稀疏矩阵进行行向量填充得到 填充稀疏矩阵,从而保证进行知识图谱查询时对填充稀疏矩阵的数据访问都是 按照字节边界对齐的,避免不对齐的访存造成处理异常,从而提高查询的效率。
在一个实施例中,如图6所示,步骤S104,包括:
步骤S602,确定稀疏矩阵中行向量长度最长的行向量的长度值。
步骤S604,获取小于长度值的各个正整数组成划分阈值集合。
步骤S606,依次将划分阈值集合中的正整数作为划分阈值,从稀疏矩阵中 确定行向量长度大于划分阈值的行向量。
步骤S608,基于划分阈值,将确定的行向量长度大于划分阈值的各行向量 分别划分成多个行向量长度不大于划分阈值的子行向量,得到划分阈值对应的 划分稀疏矩阵。
具体地,由于基于行向量长度最长的行向量的长度没有可以进行划分的行 向量,因此,通过确定小于行向量长度最长的行向量的长度值的正整数组成划 分阈值集合。即划分阈值集合的取值范围为k={1、2、3,……,L-1},L为行 向量长度最长的行向量的长度值。然后,依次将划分阈值集合中的正整数作为 划分阈值,确定长度大于该划分阈值的所有行向量,将大于划分阈值的所有行 向量进行划分,得到多个子行向量。例如,长度大于该划分阈值的行向量的长 度为j,那么长度为j的行向量将被划分为|j/k|个长度不大于k的子行向量(j>k)。 进而,稀疏矩阵的行向量总数即会被更新,行向量总数被更新后的稀疏矩阵即为划分稀疏矩阵。
在一个实施例中,获取划分稀疏矩阵的行向量总数,包括:将稀疏矩阵中 行向量长度大于划分阈值的行向量作为候选行向量;当候选行向量的行向量长 度与划分阈值的余数为0时,确定各候选行向量的行向量长度与划分阈值的商; 计算各商与固定值的差值,各差值与稀疏矩阵的行向量总数的和作为划分稀疏 矩阵的行向量总数;当候选行向量的行向量长度与划分阈值的余数不为0时, 确定各候选行向量的行向量长度与划分阈值的商,各商与稀疏矩阵的行向量总 数的和作为划分稀疏矩阵的行向量总数。
具体地,由于|j/k|的结果有两种情况,即有余数或者没有余数。而有余数或 者没有余数最终会影响子行向量的数量。所以获取划分稀疏矩阵的行向量总数 时,需要基于余数为0或不为0两种情况,具体公式如下:
其中,N(A)为划分稀疏矩阵的行向量总数,N(A’)为原始的稀疏矩阵的行向 量总数,mod为取余函数,dj表示划分稀疏矩阵中行向量长度为j的行向量的 总数,j={1、2、3,……,L},L为行向量长度最长的行向量的长度值。当|j/k| 余数为0时,表示j正好是k的倍数,而计算得到的|j/k|个子行向量需要减去固 定值1,即去除被划分的行向量的本身。
在一个实施例中,确定各划分稀疏矩阵的行向量长度的标准差,还包括: 获取划分稀疏矩阵的行向量总数和行向量总长度、以及确定划分稀疏矩阵中行 向量长度相同的行向量的向量总数;根据行向量总数、行向量总长度以及向量 总数计算得到所述划分稀疏矩阵的行向量长度的标准差。
具体地,划分稀疏矩阵的行向量总数为N(A),划分稀疏矩阵中各行向量的 行向量总长度为NNZ(A)。由于划分稀疏矩阵中各行向量的数量和长度均不确定, 那么长度相同的行向量的向量总数由数据集D={d1,d2,…,dL}表示,L为划分稀 疏矩阵中行向量长度最长的行向量的长度值,集合D中每个元素表示划分稀疏 矩阵中行向量长度为l的向量总数,l={1、2、3,……,L}。例如,当d2=2时, 则表示向量长度为2的共有两行行向量。那么,通过数据集D表示划分稀疏矩 阵的行向量长度的标准差的计算公式如下:
在一个实施例中,步骤S210,包括:获取知识图谱的查询语句,查询语句 包括已知数据;基于已知数据和填充稀疏矩阵进行矩阵乘运算,得到查询结果。
具体地,以对RDF知识图谱进行<?x,a,?y>、<?y,c,?z>和<?x,b,?w>一系列查 询的SPARQL语句查询为例,其中,a、c和b为已知数据,?x、?y、?z、?w表 示为需要经过查询得到的查询结果数据。基于填充稀疏矩阵和已知数据进行矩 阵乘运算的查询过程的步骤为:
这一步骤是根据谓语a从RDF知识图谱对应的填充稀疏矩阵JZ中获得满足 该谓语条件的变量x和y,并将结果存储在矩阵M
xy中,即查询得到x和y。其 中,I为对角矩阵。
是一个类似矩阵乘的操作,其中矩阵乘中的乘法运算代替 为逻辑“与”运算、加法运算代替为逻辑“或”运算。
这一步骤是利用(1)中变量y的结果和谓语c获得变量z的值。其中,any() 操作可以理解为是根据输入的假设为n×n的矩阵,生成n×1的向量v,其中每个 元素v(i)对应的是矩阵中第i行所有元素进行逻辑“或”运算的结果。diag()操作 可以理解为是根据输入的n×1的向量v,生成一个n×n的对角矩阵S,其主对角 线上的元素对应为v的元素。
(3)Mxy=Mxy×diag(any(Myz)),因为步骤(2)查询得到z的值,这一 步骤即是根据Myz更新Mxy。
应该理解的是,虽然图1、6的流程图中的各个步骤按照箭头的指示依次显 示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明 确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺 序执行。而且,图1、6中的至少一部分步骤可以包括多个步骤或者多个阶段, 这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执 行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤 或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种基于稀疏矩阵的知识图谱查询 装置,包括:转换模块702、划分模块704、评估模块706、填充模块708和查 询模块710,其中:
转换模块702,用于获取知识图谱并将知识图谱转换成稀疏矩阵。
划分模块704,用于基于稀疏矩阵中各行向量的行向量长度,分别对稀疏矩 阵进行行向量划分,得到各划分稀疏矩阵。
评估模块706,用于分别评估各划分稀疏矩阵的行向量长度的离散度,确定 离散度最低的划分稀疏矩阵。
填充模块708,用于根据计算核的对齐字节对离散度最低的划分稀疏矩阵进 行行向量填充,得到填充稀疏矩阵。
查询模块710,用于基于填充稀疏矩阵进行知识图谱的查询。
在一个实施例中,划分模块704还用于确定稀疏矩阵中行向量长度最长的 行向量的长度值;获取小于长度值的各个正整数组成划分阈值集合;依次将划 分阈值集合中的正整数作为划分阈值,从稀疏矩阵中确定行向量长度大于划分 阈值的行向量;基于划分阈值,将确定的行向量长度大于划分阈值的各行向量 分别划分成多个行向量长度不大于划分阈值的子行向量,得到划分阈值对应的 划分稀疏矩阵。
在一个实施例中,评估模块706还用于分别确定各划分稀疏矩阵的行向量 长度的标准差;比较各划分稀疏矩阵的行向量长度的标准差,确定标准差最小 的划分稀疏矩阵为离散度最低的划分稀疏矩阵。
在一个实施例中,评估模块706还用于获取划分稀疏矩阵的行向量总数和 行向量总长度、以及确定划分稀疏矩阵中行向量长度相同的行向量的向量总数; 根据行向量总数、行向量总长度以及向量总数计算得到所述划分稀疏矩阵的行 向量长度的标准差。
在一个实施例中,评估模块706还用于将稀疏矩阵中行向量长度大于划分 阈值的行向量作为候选行向量;当候选行向量的行向量长度与划分阈值余数为0 时,确定各候选行向量的行向量长度与划分阈值的商;计算各商与固定值的差 值,各差值与稀疏矩阵的行向量总数的和作为划分稀疏矩阵的行向量总数;当 候选行向量的行向量长度与划分阈值余数不为0时,确定各候选行向量的行向 量长度与划分阈值的商,各商与稀疏矩阵的行向量总数的和作为划分稀疏矩阵 的行向量总数。
在一个实施例中,填充模块708还用于根据计算核的对齐字节确定填充阈 值;根据填充阈值对划分稀疏矩阵中的各行向量分别进行向量填充,得到各行 向量长度均为填充阈值的倍数的填充稀疏矩阵。
在一个实施例中,查询模块710还用于获取知识图谱的查询语句,查询语 句包括已知数据;基于已知数据和填充稀疏矩阵进行矩阵乘运算,得到查询结 果。
关于基于稀疏矩阵的知识图谱查询装置的具体限定可以参见上文中对于基 于稀疏矩阵的知识图谱查询方法的限定,在此不再赘述。上述基于稀疏矩阵的 知识图谱查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。 上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以 软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模 块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其 内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、 存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提 供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。 该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存 储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口 用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商 网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于稀疏矩阵的知识图谱查询方法。该计算机设备的显示屏可以是液晶 显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的 触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是 外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关 的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定, 具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件, 或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器 中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取知识图谱并将知识图谱转换成稀疏矩阵;
基于稀疏矩阵中各行向量的行向量长度,分别对稀疏矩阵进行行向量划分, 得到各划分稀疏矩阵;
分别评估各划分稀疏矩阵的行向量长度的离散度,确定离散度最低的划分 稀疏矩阵;
根据计算核的对齐字节对离散度最低的划分稀疏矩阵进行行向量填充,得 到填充稀疏矩阵;
基于填充稀疏矩阵进行知识图谱的查询。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:确定稀疏矩 阵中行向量长度最长的行向量的长度值;获取小于长度值的各个正整数组成划 分阈值集合;依次将划分阈值集合中的正整数作为划分阈值,从稀疏矩阵中确 定行向量长度大于划分阈值的行向量;基于划分阈值,将确定的行向量长度大 于划分阈值的各行向量分别划分成多个行向量长度不大于划分阈值的子行向 量,得到划分阈值对应的划分稀疏矩阵。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:分别确定各 划分稀疏矩阵的行向量长度的标准差;比较各划分稀疏矩阵的行向量长度的标 准差,确定标准差最小的划分稀疏矩阵为离散度最低的划分稀疏矩阵。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取划分稀 疏矩阵的行向量总数和行向量总长度、以及确定划分稀疏矩阵中行向量长度相 同的行向量的向量总数;根据行向量总数、行向量总长度以及向量总数计算得 到所述划分稀疏矩阵的行向量长度的标准差。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将稀疏矩阵 中行向量长度大于划分阈值的行向量作为候选行向量;当候选行向量的行向量 长度与划分阈值余数为0时,确定各候选行向量的行向量长度与划分阈值的商; 计算各商与固定值的差值,各差值与稀疏矩阵的行向量总数的和作为划分稀疏 矩阵的行向量总数;当候选行向量的行向量长度与划分阈值余数不为0时,确 定各候选行向量的行向量长度与划分阈值的商,各商与稀疏矩阵的行向量总数 的和作为划分稀疏矩阵的行向量总数。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:根据计算核 的对齐字节确定填充阈值;根据填充阈值对划分稀疏矩阵中的各行向量分别进 行向量填充,得到各行向量长度均为填充阈值的倍数的填充稀疏矩阵。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:获取知识图 谱的查询语句,查询语句包括已知数据;基于已知数据和填充稀疏矩阵进行矩 阵乘运算,得到查询结果。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程 序,计算机程序被处理器执行时实现以下步骤:
获取知识图谱并将知识图谱转换成稀疏矩阵;
基于稀疏矩阵中各行向量的行向量长度,分别对稀疏矩阵进行行向量划分, 得到各划分稀疏矩阵;
分别评估各划分稀疏矩阵的行向量长度的离散度,确定离散度最低的划分 稀疏矩阵;
根据计算核的对齐字节对离散度最低的划分稀疏矩阵进行行向量填充,得 到填充稀疏矩阵;
基于填充稀疏矩阵进行知识图谱的查询。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:确定稀疏 矩阵中行向量长度最长的行向量的长度值;获取小于长度值的各个正整数组成 划分阈值集合;依次将划分阈值集合中的正整数作为划分阈值,从稀疏矩阵中 确定行向量长度大于划分阈值的行向量;基于划分阈值,将确定的行向量长度 大于划分阈值的各行向量分别划分成多个行向量长度不大于划分阈值的子行向 量,得到划分阈值对应的划分稀疏矩阵。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:分别确定 各划分稀疏矩阵的行向量长度的标准差;比较各划分稀疏矩阵的行向量长度的 标准差,确定标准差最小的划分稀疏矩阵为离散度最低的划分稀疏矩阵。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取划分 稀疏矩阵的行向量总数和行向量总长度、以及确定划分稀疏矩阵中行向量长度 相同的行向量的向量总数;根据行向量总数、行向量总长度以及向量总数计算 得到所述划分稀疏矩阵的行向量长度的标准差。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将稀疏矩 阵中行向量长度大于划分阈值的行向量作为候选行向量;当候选行向量的行向 量长度与划分阈值余数为0时,确定各候选行向量的行向量长度与划分阈值的 商;计算各商与固定值的差值,各差值与稀疏矩阵的行向量总数的和作为划分 稀疏矩阵的行向量总数;当候选行向量的行向量长度与划分阈值余数不为0时, 确定各候选行向量的行向量长度与划分阈值的商,各商与稀疏矩阵的行向量总 数的和作为划分稀疏矩阵的行向量总数。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:根据计算 核的对齐字节确定填充阈值;根据填充阈值对划分稀疏矩阵中的各行向量分别 进行向量填充,得到各行向量长度均为填充阈值的倍数的填充稀疏矩阵。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:获取知识 图谱的查询语句,查询语句包括已知数据;基于已知数据和填充稀疏矩阵进行 矩阵乘运算,得到查询结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于 一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述 各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、 存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的 至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁 带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory, SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述 实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特 征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细, 但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的 普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改 进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权 利要求为准。