目标知识图谱嵌入方法、其装置及电子设备与流程

未命名 09-29 阅读:49 评论:0


1.本技术实施例涉及计算机领域,具体而言,涉及一种目标知识图谱嵌入方法、其装置及电子设备。


背景技术:

2.随着大数据持续不断产生,知识图谱数据与日俱增。知识图谱是一种通用的语义知识的形式化描述框架,其中节点表示实体或概念,边表示实体或概念之间的语义关系。在知识图谱中,实体主要描述现实世界的实例,本体主要描述概念,知识图谱可以使用图数据库(graphdatabase)进行存储,并以图结构进行直观地呈现。知识图谱中的节点之间通过边相连,用于表达节点之间的关系,例如(客户a,隶属于,公司b)、(人物a,朋友,人物b)等,不同领域的知识图谱关注的实体类型、关系类型是不同的,现实世界包含丰富的实体和关系类型。
3.随着图数据规模的爆炸式增长,图数据库存在一些性能的局限,例如不容易进行分布式计算,不容易进行直接的语义理解等。知识图谱嵌入(knowledgegraphembedding)将知识图谱中的实体与关系表示为低维向量。通过将知识图谱中的实体和关系嵌入到连续向量空间,从而在方便计算的同时保留知识图谱中的结构信息。上述知识图谱嵌入概括了给定节点的语义与局部结构信息。
4.然而,大规模的知识图谱通常具有上亿节点,受到服务器内存的限制,已有的知识图谱嵌入模型难以实现对大规模的知识图谱的处理。


技术实现要素:

5.本技术实施例提供了一种目标知识图谱嵌入方法、其装置及电子设备,以至少解决相关技术中知识图谱嵌入模型难以处理大规模的知识图谱的问题。
6.根据本技术的一个实施例,提供了一种目标知识图谱嵌入方法,包括:获取目标知识图谱的图数据;根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,其中第一子图谱中节点的度数大于第二子图谱中节点的度数;根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱;根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的知识图谱嵌入模型用于生成目标知识图谱的嵌入表示。
7.在一个示例性实施例中,根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,包括:根据目标知识图谱的图数据,确定第一预设数量,其中,第一预设数量小于目标知识图谱的全部节点的数量;根据目标知识图谱中节点的度数,确定目标知识图谱的全部节点中满足第一预设数量的多个第一节点,其中,目标知识图谱的全部节点中除多个第一节点之外的节点为多个第二节点,多个第一节点中的每个第一节点的度数大于多个第二节点中每个第二节点的度数;根据多个第一节点和多个第二节点,将目标知识图谱划分为与多个第一节点对应的第一子图谱以及与多
个第二节点对应的第二子图谱。
8.在一个示例性实施例中,第一预设数量小于或等于目标知识图谱的全部节点的五分之一。
9.在一个示例性实施例中,从目标知识图谱的全部节点中确定满足第一预设数量的多个第一节点,包括:根据目标知识图谱,确定目标知识图谱的全部节点中每个节点的度数;将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,其中,预设规则包括以下之一:多个节点的度数由上至下递增,以及多个节点的度数由上至下递减;从目标节点序列中获取满足第一预设数量的多个目标节点,得到多个第一节点。
10.在一个示例性实施例中,根据目标知识图谱,确定目标知识图谱的全部节点中每个节点的度数,包括:将目标知识图谱的图数据表示为邻接链表的形式;根据表示为邻接链表的目标知识图谱的图数据,计算所目标知识图谱的全部节点中每个节点的度数。
11.在一个示例性实施例中,将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,包括:根据目标知识图谱的图数据,确定目标知识图谱的全部节点的数量;根据目标知识图谱的全部节点的数量,获取预存节点列表;将目标知识图谱的全部节点中每个节点的度数添加至预存节点列表中,得到具有目标节点序列的目标节点列表。
12.在一个示例性实施例中,将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,还包括:在将目标知识图谱的全部节点中每个节点的度数添加至预存节点列表中之前,初始化预存节点列表。
13.在一个示例性实施例中,上述方法还包括:将目标节点列表存储至数据库中,得到新的预存节点列表,其中,数据库中存储有多个预存节点列表,多个预存节点列表中的任意一个预存节点列表与其余的至少一个预存节点列表用于存储的节点数量不同。
14.在一个示例性实施例中,从目标节点序列中获取满足第一预设数量的多个目标节点,得到多个第一节点,包括:在预设规则为多个节点的度数由上至下递增的情况下,按照与目标节点序列对应的序号由大到小的顺序,依次从目标节点序列中提取目标节点,直到提取的目标节点的数量满足第一预设数量;在预设规则为多个节点的度数由上至下递减的情况下,按照与目标节点序列对应的序号由小到大的顺序,依次从目标节点序列中提取目标节点,直到提取的目标节点的数量满足第一预设数量。
15.在一个示例性实施例中,根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱,包括:根据第二子图谱中节点的度数,将第二子图谱的图数据划分为多个数据集,其中,多个数据集中的每个数据集分别对应第二子图谱的全部节点中的至少一个节点;采用预设图划分算法将多个数据集中的每个数据集划分为多个子数据集,得到多个第三子图谱的图数据,其中,由多个数据集划分得到的多个子数据集与多个第三子图谱一一对应。
16.在一个示例性实施例中,根据第二子图谱中节点的度数,将第二子图谱的图数据划分为多个数据集,包括:根据第二子图谱中节点的数量和节点的度数,确定第二预设数量,其中,第二预设数量小于第二子图谱的全部节点的数量;将第二子图谱的图数据划分为满足第二预设数量的多个数据集,其中,与多个数据集中不同的数据集对应的节点的度数
不同。
17.在一个示例性实施例中,采用预设图划分算法将多个数据集中的每个数据集划分为多个子数据集,得到多个第三子图谱的图数据,包括:根据每个数据集,确定第三预设数量,其中,第三预设数量小于与每个数据集对应的节点的数量;采用metis算法将每个数据集划分为满足第三预设数量的多个子数据集,得到多个第三子图谱的图数据。
18.在一个示例性实施例中,根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,包括:获取知识图谱嵌入模型;根据知识图谱嵌入模型,确定目标训练框架;以第一子图谱的图数据和多个第三子图谱的图数据为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练。
19.在一个示例性实施例中,根据知识图谱嵌入模型,确定目标训练框架,包括:判断第一训练框架是否支持知识图谱嵌入模型;在第一训练框架支持知识图谱嵌入模型的情况下,确定第一训练框架为目标训练框架;在第一训练框架不支持知识图谱嵌入模型的情况下,确定第二训练框架为目标训练框架。
20.在一个示例性实施例中,第一训练框架为dgl-ke框架,第二训练框架为openke框架。
21.在一个示例性实施例中,以第一子图谱的图数据和多个第三子图谱的图数据为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练,包括:分别以多个子图谱中的每个子图谱为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练,其中,多个子图谱包括第一子图谱和多个第三子图谱;根据训练后的知识图谱嵌入模型,生成对应多个子图谱的多个嵌入表示。
22.在一个示例性实施例中,上述方法还包括:按照多个子图谱作为训练样本的顺序,将对应多个子图谱的多个嵌入表示依次上传至数据中心的存储节点。
23.在一个示例性实施例中,上述方法还包括:将上传至存储节点的多个子图谱的多个嵌入表示合并。
24.在一个示例性实施例中,上述方法还包括:根据预设指令,从知识图谱嵌入模型池中获取知识图谱嵌入模型,知识图谱嵌入模型池包括平移距离模型和语义匹配模型。
25.根据本技术的另一个实施例,提供了一种目标知识图谱嵌入装置,包括:获取模块,用于获取目标知识图谱的图数据;第一划分模块,用于根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,其中第一子图谱中节点的度数大于第二子图谱中节点的度数;第二划分模块,用于根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱;训练模块,用于根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的知识图谱嵌入模型用于生成目标知识图谱的嵌入表示。
26.根据本技术的又一个实施例,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
27.根据本技术的又一个实施例,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
28.通过本技术,在获取目标知识图谱的图数据之后,由于采用双层图划分算法,先根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,使得第一子图谱中节点的度数大于第二子图谱中节点的度数,再根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱,不仅可以通过结合低复杂度的粗划分算法和高复杂度的精细划分划分算法,提高了大规模知识图谱的划分效率,还可以避免相关技术中对大规模的知识图谱进行划分中计算性能与信息损失无法平衡的问题,从而通过将知识图谱通过双层图划分后得到的第一子图谱的图数据和多个第三子图谱的图数据,应用于知识图谱嵌入模型的训练,避免了相关技术中服务器内存的限制,进而能够实现对大规模的知识图谱的处理。因此,本技术通过提供上述将双层图划分处理与分布式知识图谱嵌入训练结合起来应用于大规模知识图谱嵌入训练的方式,解决了相关技术中知识图谱嵌入模型难以处理大规模的知识图谱的问题。
附图说明
29.图1是根据本技术实施例提供的一种目标知识图谱嵌入方法的计算机设备的硬件结构框图;
30.图2是根据本技术实施例的一种目标知识图谱嵌入方法的流程图;
31.图3是根据本技术实施例的一种目标知识图谱嵌入方法中分布式openke-dgl的工作流程图;
32.图4是根据本技术实施例的一种目标知识图谱嵌入装置的结构框图。
具体实施方式
33.下文中将参考附图并结合实施例来详细说明本技术的实施例。
34.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
35.为了便于描述,以下对本技术实施例涉及的部分名词或术语进行说明:
36.transe、transr、transd模型:为知识图谱嵌入模型,用于将关系的向量表示解释成头、尾实体向量之间的转移向量,建模关系。
37.知识图谱嵌入工具包(openke):也称知识图谱表示学习工具包,是基于符号数学系统(tensorflow)、开源的python机器学习库(pytorch)开发的用于将知识图谱嵌入到低维连续向量空间进行标示的开源框架。
38.图数据处理工具包(networkx):作为python的一个开源包,便于用户对复杂网络进行创建,操作和学习,利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。
39.图模型框架(pytorch-biggraph,pbg):是一种新型的嵌入式系统,能够扩展到具有数十亿节点和数十万亿边的图, pbg框架支持分布式计算,支持图划分算法,能够处理大规模的知识图谱。
40.本技术实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本技术实施例的一种目标知识图谱嵌入
方法的计算机终端的硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)和用于存储数据的存储器104,其中,上述计算机终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
41.存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本技术实施例中的目标知识图谱嵌入方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
42.传输设备106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(network interface controller,简称为nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(radio frequency,简称为rf)模块,其用于通过无线方式与互联网进行通讯。
43.在本实施例中提供了一种运行于上述计算机终端的目标知识图谱嵌入方法,图2是根据本技术实施例的目标知识图谱嵌入方法的流程图,如图2所示,该流程包括如下步骤:
44.步骤s202,获取目标知识图谱的图数据;
45.步骤s204,根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,其中第一子图谱中节点的度数大于第二子图谱中节点的度数;
46.步骤s206,根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱;
47.步骤s208,根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的知识图谱嵌入模型用于生成目标知识图谱的嵌入表示。
48.需要注意的是,目标知识图谱中任意一个节点的度数可以理解为,与该节点相连的边的数量。示例性的,节点a通过n条边与n个节点相连,则节点a的度数为n。
49.对于超大规模的知识图谱,对象之间具有复杂的语义链接关系。图划分是分布式图处理的基础性工作,将大规模的知识图谱划分到不同机器上,图划分是非确定性多项式(np-hard)问题。根据短板效应,处理的速度取决于性能最低的机器。另外图计算的过程还会在不同的机器之间进行通信,通信的代价较高,因此图划分的质量对于计算性能有较大影响。图划分过程中会切割一些边,高质量的划分需要同时满足负载均衡、最小化切割边或节点数量,即跨分区边数最少,或者重复节点最少。因此,对于超大规模的知识图谱,如何进行高质量图划分,满足计算性能提升和信息损失降低的平衡也是需要解决的问题。
50.具体地,相关技术中的图划分处理采用networkx,但networkx主要应用于单机的
环境,可处理小型的知识图谱。对于大型知识图谱处理效果并不理想,无法直接用于分布式环境。相关技术中也有采用pbg处理大规模的知识图谱,pbg能够解决cpu内存限制,将节点划分为不相交的分区,并存储在外存中,然而从外存加载数据的时候仍会导致gpu资源的浪费。
51.而在本技术实施例提供的上述方法中,通过上述步骤s202至s208,不仅可以通过结合低复杂度的图谱粗划分和高复杂度的图谱精细划分,提高了大规模知识图谱的划分效率,还可以避免相关技术中对大规模的知识图谱进行划分中计算性能与信息损失无法平衡的问题,从而通过将知识图谱通过双层图划分后得到的第一子图谱的图数据和多个第三子图谱的图数据,应用于知识图谱嵌入模型的训练,能够实现对大规模的知识图谱的处理。因此,本技术通过提供上述将双层图划分处理与分布式知识图谱嵌入训练结合起来应用于大规模知识图谱嵌入训练的方式,解决了相关技术中知识图谱嵌入模型难以处理大规模的知识图谱的问题,可以将各类针对单机开发的知识图谱嵌入模型,应用到大规模知识图谱。
52.进一步地,本技术实施例提出的上述双层图划分方式,能够实现多子图并行知识图谱嵌入训练,从而可以解决分布式适配的问题,克服了分布式知识图谱训练的难题,可以将各类针对单机开发的知识图谱嵌入模型,应用到大规模知识图谱。
53.并且,本技术实施例提出的上述方法是低耦合的,可以快速适配和接入新业务数据,而且无需人工标注数据,上述方法还可以应用于图数据库等涉及图数据分析的各个领域性的场景。
54.本技术实施例的上述分布式知识图谱嵌入训练包含两个子任务,即图划分(graphpartition)和知识图谱嵌入(knowledgegraphembedding)。图划分可以形式化为:给定图数据,通过图划分处理将其分为多个子图。知识图谱嵌入任务可以形式化为:给定三元组集合,其中,一个知识图谱由若干个三元组组成,和代表一条关系的头结点和尾节点,r代表关系,e代表实体集合,r代表关系类型集合,知识图谱嵌入旨在找到一个映射将知识图谱中实体和关系的表示为低维稠密向量。
55.本技术实施例提出了一种双层图划分处理方式,能够提高大规模知识图谱的处理效率。具体地,在上述步骤s202至s206中,获取目标知识图谱的图数据,并根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,其中第一子图谱中节点的度数大于第二子图谱中节点的度数,然后根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱。
56.在一些可选的实施方式中,根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,包括:根据目标知识图谱的图数据,确定第一预设数量,其中,第一预设数量小于目标知识图谱的全部节点的数量;根据目标知识图谱中节点的度数,确定目标知识图谱的全部节点中满足第一预设数量的多个第一节点,其中,目标知识图谱的全部节点中除多个第一节点之外的节点为多个第二节点,多个第一节点中的每个第一节点的度数大于多个第二节点中每个第二节点的度数;根据多个第一节点和多个第二节点,将目标知识图谱划分为与多个第一节点对应的第一子图谱以及与多个第二节点对应的第二子图谱。
57.在上述可选的实施方式中,在获取到目标知识图谱的图数据后,可以先确定目标知识图谱中全部节点的数量,从而根据目标知识图谱中全部节点的数量,确定一个小于该数量的预设数量,即第一预设数量,从而通过从目标知识图谱中全部节点中提取出满足第一预设数量的节点,使剩余的节点的度数小于提取出的节点的度数,因此,通过上述第一预设数量能够将目标知识图谱中全部节点划分为两部分,即多个第一节点和多个第二节点,进而可以依据上述两部分节点,将目标知识图谱划分为第一子图谱和第二子图谱。
58.在上述可选的实施方式中,第一预设数量可以小于或等于目标知识图谱的全部节点的五分之一。由于知识图谱的图数据通常服从长尾分布,即出度和入度高的节点只占很少一部分(例如10%),大多数节点之间的连接都是比较稀疏的。因此,本技术实施例通过设定第一预设数量远小于知识图谱中全部节点的数量,能够找出度数最高的那部分节点,从而利于实现由粗到精的双层图划分。
59.在一些可选的实施方式中,从目标知识图谱的全部节点中确定满足第一预设数量的多个第一节点,包括:根据目标知识图谱,确定目标知识图谱的全部节点中每个节点的度数;将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,其中,预设规则包括以下之一:多个节点的度数由上至下递增,以及多个节点的度数由上至下递减;从目标节点序列中获取满足第一预设数量的多个目标节点,得到多个第一节点。
60.在上述可选的实施方式中,可以先确定目标知识图谱的全部节点的度数,由于节点度数之间存在差别,从而可以对全部节点的度数进行排序以形成序列,上述序列中的度数可以由上至下递增或递减。
61.在上述可选的实施方式中,从目标节点序列中获取满足第一预设数量的多个目标节点,得到多个第一节点,可以包括:在预设规则为多个节点的度数由上至下递增的情况下,按照与目标节点序列对应的序号由大到小的顺序,依次从目标节点序列中提取目标节点,直到提取的目标节点的数量满足第一预设数量;在预设规则为多个节点的度数由上至下递减的情况下,按照与目标节点序列对应的序号由小到大的顺序,依次从目标节点序列中提取目标节点,直到提取的目标节点的数量满足第一预设数量。
62.具体地,对于序列中度数由上至下递减的序列,提取满足预设数量的头部节点,就可以得到多个具有较大度数的节点,即为第一节点,剩余的节点度数小于位于序列头部的节点,即为第二节点。对于序列中度数由上至下递增的序列,提取满足预设数量的尾部节点,就可以得到多个具有较大度数的节点,即为第一节点,剩余的节点度数小于位于序列尾部的节点,即为第二节点。
63.在上述可选的实施方式中,根据目标知识图谱,确定目标知识图谱的全部节点中每个节点的度数,可以包括:将目标知识图谱的图数据表示为邻接链表的形式;根据表示为邻接链表的目标知识图谱的图数据,计算所目标知识图谱的全部节点中每个节点的度数。
64.具体地,以邻接链表的形式表示知识图谱,邻接链表是图的一种链式存储方式,包含顶点和邻接点两部分,顶点包括顶点信息和指向第一个邻接点的指针,邻接点是包括邻接点的存储下标和指向下一个邻接点的指针,顶点的所有邻接点构成一个单链表,具体而言,邻接链表可以理解为一个一维数组,每个位置存放一个单链表的头结点,这个头结点有数据域和指向下一个节点(邻接点)的指针域。基于上述表示为邻接链表的知识图谱,能够
便于计算知识图谱中每个节点的度数。
65.在一些可选的实施方式中,将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,包括:根据目标知识图谱的图数据,确定目标知识图谱的全部节点的数量;根据目标知识图谱的全部节点的数量,获取预存节点列表;将目标知识图谱的全部节点中每个节点的度数添加至预存节点列表中,得到具有目标节点序列的目标节点列表。
66.在上述可选的实施方式中,可以预存有多个不同的节点列表,每个节点列表中节点的数量不同,从而可以根据目标知识图谱中全部节点的数量,从上述多个预存节点列表中选取节点数量大于目标知识图谱的节点数量或与目标知识图谱的节点数量一致的一个预存节点列表,将其作为目标预存节点列表,从而可以将目标知识图谱中全部节点的度数添加至目标预存节点列表中,得到存储有目标知识图谱中全部节点的度数的列表。
67.在上述可选的实施方式中,将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,还可以包括:在将目标知识图谱的全部节点中每个节点的度数添加至预存节点列表中之前,初始化预存节点列表。
68.具体地,上述预存节点列表可以添加有历史知识图谱中全部节点的度数的列表,此时,为了将目标知识图谱中全部节点的度数添加至该预存节点列表中,需要对预存节点列表进行初始化,以将该预存节点列表中中存储的历史知识图谱中全部节点的度数清空,然后再将目标知识图谱的全部节点的度数添加至该预存节点列表中。
69.在一些可选的实施方式中,本技术实施例中提供的上述方法还包括:将目标节点列表存储至数据库中,得到新的预存节点列表,其中,数据库中存储有多个预存节点列表,多个预存节点列表中的任意一个预存节点列表与其余的至少一个预存节点列表用于存储的节点数量不同。
70.在上述可选的实施方式中,存储在数据库中的多个预存节点列表可以分别添加有多个历史知识图谱中全部节点的度数,由于多个历史知识图谱中全部节点的数量可能不同,从而使对应不同历史知识图谱的预存节点列表中添加的节点数量不同,因此,通过将对应不同历史知识图谱的预存节点列表均存储至数据库中,能够用于对具有不同节点数量的知识图谱中的节点度数进行存储。
71.在本技术实施例的上述步骤s204中,图谱粗划分面临的是原始的大规模知识图谱,面对数量上亿的节点,许多传统的图划分算法会面临不可用的问题,基于此,本技术实施例中还提出了由粗到精的双层图划分算法,其中,图谱粗划分是先采用基于度的算法确定知识图谱中度数最高的那部分节点。示例性的,上述双层图划分算法中图谱粗划分所采用的算法如下:
72.输入:目标知识图谱的图数据graph,度数最高的节点数量n;
73.输出:划分的子图(即第二子图谱);
[0074][0075]
上述算法中,输入是目标知识图谱的图数据graph,以及目标知识图谱中度数最高的节点数量n。第1行是将图数据表示为邻接链表的形式。第2行初始化一个节点度数的列表。第3行至6行是计算目标知识图谱中全部节点度数的过程,其中,第4行是计算每个节点的度数,第5行是将度数添加到列表。第7行是根据节点的度数进行排序的操作,返回的index是数组元素的坐标。第8行是根据节点排序后的坐标,对节点进行划分,其中,前n个节点是度数高的节点集合high_set,剩余的节点是度数较低的节点集合low_set,返回的结果即划分之后的子图。
[0076]
采用上述算法,通过设定比例(即节点数量n占知识图谱中全部节点数量的比例),以确定该知识图谱中头部的节点,这部分节点由于边比较密集,局部结构特征非常丰富,因此在知识图谱嵌入的训练过程中无需与其他部分通信,即可学习质量较高的嵌入表示,大幅节省了通信的开销。上述知识图谱中其他节点度数不高的子图可以通过精细划分算法进行处理。
[0077]
在一些可选的实施方式中,根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱,包括:根据第二子图谱中节点的度数,将第二子图谱的图数据划分为多个数据集,其中,多个数据集中的每个数据集分别对应第二子图谱的全部节点中的至少一个节点;采用预设图划分算法将多个数据集中的每个数据集划分为多个子数据集,得到多个第三子图谱的图数据,其中,由多个数据集划分得到的多个子数据集与多个第三子图谱一一对应。
[0078]
在上述可选的实施方式中,经过低复杂度的粗划分得到的第二子图谱中除去了知识图谱中出度和入度高的节点,第二子图谱中大多数节点之间的连接都是比较稀疏的,从而可以通过相关技术中的图划分算法再进行精细划分,得到多个第三子图谱,从而提高了对目标知识图谱的处理效率,有利于处理知识图谱划分的机器的计算性能提升和信息损失降低之间的平衡。
[0079]
在上述可选的实施方式中,根据第二子图谱中节点的度数,将第二子图谱的图数据划分为多个数据集,可以包括:根据第二子图谱中节点的数量和节点的度数,确定第二预设数量,其中,第二预设数量小于第二子图谱的全部节点的数量;根据第二子图谱中节点的度数,将第二子图谱的图数据划分为满足第二预设数量的多个数据集,其中,与多个数据集
中不同的数据集对应的节点的度数不同。
[0080]
具体地,第二子图谱为经过低复杂度的粗划分得到的,其中大多数节点之间的连接都是比较稀疏的,根据第二子图谱中的节点数量以及全部节点的度数,确定一个用于划分该第二子图谱的预设数量,通过该预设数量对第二子图谱的图数据进行划分,能够使划分后得到的每个数据集对应的节点度数不同。
[0081]
在上述可选的实施方式中,采用预设图划分算法将多个数据集中的每个数据集划分为多个子数据集,得到多个第三子图谱的图数据,可以包括:根据每个数据集,确定第三预设数量,其中,第三预设数量小于与每个数据集对应的节点的数量;采用metis算法将每个数据集划分为满足第三预设数量的多个子数据集,得到多个第三子图谱的图数据。
[0082]
具体地,在将第二子图谱的图数据划分得到满足预设数量的多个数据集之后,采用metis算法对图数据进行精细化划分,从而得到与多个子数据集对应的多个第三子图谱,通过结合低复杂度的粗划分和高复杂度的精细划分,将目标知识图谱划分得到上述多个第三子图谱,能够提高大规模知识图谱的划分效率。
[0083]
本技术实施例提供的上述双层图划分算法中,图谱精细化划分所采用的算法可以是例如metis、louvain等相关技术中的图划分算法。下面以metis算法为例,上述双层图划分算法中图谱精细化划分所采用的算法如下:
[0084]
输入:第二子图谱的图数据low_set,节点的度数degree_list,并行数量c,划分mini子图(即第三子图谱)的数量m
[0085]
输出:划分的mini子图(即第三子图谱)
[0086][0087]
上述算法中,输入是通过图谱粗划分所采用的算法得到的子图low_set,图谱粗划分的过程中计算得到的节点度数degree_list,并行数量c,以及划分mini子图(即第三子图谱)的数量m。由于相关技术中的图划分算法无法直接应用于low_set图数据(亿级节点),需要进一步将其划分为c份,然后对每一份进行m份mini子图的划分,因此,通过输入上述并行数量c,将大规模的知识图谱划分为c份,可以提升计算效率。
[0088]
上述算法中,第1行是根据图谱粗划分所得到的子图的节点集合构建图数据。第2行是将图数据划分为c份并行处理,这个划分可以采用图谱粗划分中计算出的节点度数进行划分。第3行至7行是对于c份中的每一份进行精细化分的过程,其中,第4行是对c份中的每一份set构建一个图数据,第5行是采用metis算法对图数据进行精细化划分,得到多个
mini子图,第6行是将mini子图保存到磁盘上。上述过程也可以多进程并行执行,同时划分c份中的每一份set。
[0089]
在上述步骤s208中,根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的知识图谱嵌入模型用于生成目标知识图谱的嵌入表示。知识图谱嵌入旨在将知识图谱中的节点和边转化为通用的低维稠密向量表示,从而便于机器学习系统更好地利用和融合知识。
[0090]
相关技术中已有的知识图谱嵌入方法大多需要将整个知识图谱放到一张gpu显卡上进行加速计算,虽然小型的知识图谱可以完成计算,然而随着图谱规模的增大,如500万节点的知识图谱就会在高性能gpu显卡(如40g)上内存溢出,更不用说上亿节点的大规模知识图谱。示例性的,一个拥有20亿个节点的知识图谱,每个节点采用100-d浮点数嵌入参数的模型则需要800gb的内存来存储其参数,许多标准方法在面临大规模知识图谱时,都超过了典型商用服务器的内存容量。
[0091]
而本技术实施例的上述s208中,仅需要以目标知识图谱中第一子图谱的图数据和多个第三子图谱的图数据为训练样本,对知识图谱嵌入模型进行训练,从而能够避免大规模知识图谱受到gpu显卡的限制,能够实现大规模知识图谱嵌入训练。
[0092]
在一些可选的实施方式中,根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,包括:获取知识图谱嵌入模型;根据知识图谱嵌入模型,确定目标训练框架;以第一子图谱的图数据和多个第三子图谱的图数据为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练。
[0093]
具体地,知识图谱嵌入的算法主要用于学习语义嵌入。通过知识图谱嵌入表示使得知识图谱能够方便下游任务的使用。知识图谱嵌入的算法中,transe算法优化的目标是使得向量表示满足,其中,一个知识图谱由若干个三元组组成,和代表一条关系的头结点和尾节点,r代表关系,可以采用基于间隔的排序损失(triplet ranking loss)进行学习,使知识图谱嵌入具有如下公式:
[0094][0095]
其中,是一个间隔参数,代表只取正数部分。代表负样本集合,其包含的元素如下述公式所示:
[0096][0097]
其中,和代表随机采样得到的头实体和尾实体,但是两者不会同时采样。
[0098]
在上述可选的实施方式中,本技术实施例的上述方法还可以包括:根据预设指令,从知识图谱嵌入模型池中获取知识图谱嵌入模型。
[0099]
上述知识图谱嵌入模型池中的知识图谱嵌入模型主要分为基于距离的模型、语义匹配模型、其他创新模型。基于距离的模型,即平移距离模型,是通过建模实体在向量空间的相对距离来优化目标函数。其中,transe模型优化的目标是,该模型的参数量较少,计算的复杂度低,但是该模型不能处理复杂关系,例如一对多关系。transh模型通过添加参数矩阵,将实体向量投影到关系空间中,使得实体在不同的关系下拥有不同的表示。transr模型为不同的关系建立的单独的语义空间,然后将三元组的实体表示投影到相应的关系空间,并基于transe模型学习头实体、尾实体和关系的向量表示。transd模型通过为头
实体和尾实体设定不同的矩阵投影到关系空间,降低了模型复杂性,并增加实体和关系表示的多样性。kg2e提出建模实体和关系的不确定性,通过利用高斯分布和概率密度将实体和关系表示为采样的随机向量。
[0100]
语义匹配模型通过计算实体组合和关系在嵌入空间的匹配度来优化目标函数。其中,rescal模型,为一种双线性模型,用于将知识图谱编码为邻接矩阵,进而为多种关系类型构成张量,通过张量分解得到实体向量和关系矩阵表示。该矩阵对嵌入表示头尾实体的交互进行建模。distmult模型,也是一种双线性模型,用于将关系类型矩阵限定为对角矩阵,从而简化rescal模型的学习过程,减少了模型参数。全息嵌入(holographic embeddings,hoie)模型融合了rescal模型的表达能力和distmult模型的高效性的优点,将实体和关系在实体组合向量空间进行表示。hole模型提出对实体组合计算时采用循环运算,实现了非对称关系建模,减少了模型参数,将实体和关系表示为向量。
[0101]
除基于距离的模型和语义匹配模型之外的其他模型用于解决动态的知识图谱嵌入,融合多源信息,以及考虑实体属性、时序信息、图结构等问题。
[0102]
在上述可选的实施方式中,根据知识图谱嵌入模型,确定目标训练框架,包括:判断第一训练框架是否支持知识图谱嵌入模型;在第一训练框架支持知识图谱嵌入模型的情况下,确定第一训练框架为目标训练框架;在第一训练框架不支持知识图谱嵌入模型的情况下,确定第二训练框架为目标训练框架。
[0103]
具体地,上述第一训练框架可以为dgl-ke框架,上述第二训练框架可以为openke框架。
[0104]
在上述可选的实施方式中,以第一子图谱的图数据和多个第三子图谱的图数据为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练,可以包括:分别以多个子图谱中的每个子图谱为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练,其中,多个子图谱包括第一子图谱和多个第三子图谱;根据训练后的知识图谱嵌入模型,生成对应多个子图谱的多个嵌入表示。
[0105]
具体地,采用前述的双层图划分算法,将目标知识图谱划分为许多子图之后,以上述多个子图为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练,上述目标训练框架可以选自dgl-ke框架和openke框架。
[0106]
在一些可选的实施方式中,本技术实施例中的上述方法还包括:按照多个子图谱作为训练样本的顺序,将对应多个子图谱的多个嵌入表示依次上传至数据中心的存储节点,并将上传至存储节点的多个子图谱的多个嵌入表示合并。具体地,在每个子图训练完之后将对应的知识图谱嵌入上传到数据中心存储节点,所有子图上传完之后进行知识图谱嵌入的自动合并。
[0107]
以上述第一训练框架为dgl-ke框架,上述第二训练框架为openke框架为例,openke框架的优点在于其中包含的模型比较全面,但是它的局限性在于仅支持单机环境的训练,无法支持分布式的训练。同时也无法训练大规模的知识图谱。dgl-ke框架的优点在于它支持分布式训练,支持cpu-gpu混合训练,对基于共享内存的单机多进程训练进行了优化,可以训练大规模的知识图谱,局限性在于该框架仅仅支持较少的知识图谱嵌入模型,选择面比较窄。许多知识图谱嵌入模型在进行分布式改造时是极具挑战性的,甚至无法实现。
[0108]
由于训练知识图谱嵌入的模型有许多,不同的模型发挥最佳性能的场景有所不
同。然而这些模型大多数都是针对单机环境下提出的算法,无法直接应用于大规模的知识图谱。针对每一种模型单独开发分布式的版本是非常耗时的,而且效果不是很好,许多模型天性不适合转化为分布式算法。基于此,本技术实施例进一步提出了分布式openke-dgl知识图谱嵌入训练方法,用于学习大规模知识图谱嵌入表示,通过集成两种框架,可以涵盖完整的知识图谱嵌入模型,从而可以解决大多数知识图谱嵌入模型的适配问题,并且,上述方法在使用时可以支持通用的cpu和gpu解决方案,无需对数据中心的服务器硬件进行调整,大大降低了模型训练的成本和新业务开发、维护的周期。
[0109]
示例性的,上述分布式openke-dgl知识图谱嵌入训练方法采用的分布式训练算法如下:
[0110]
输入:目标知识图谱的图数据graph,模型名称model
[0111]
输出:知识图谱嵌入v
[0112][0113]
上述算法中,输入是目标知识图谱的图数据graph和模型名称model,输出是训练好的知识图谱嵌入v。第1行是采用前述的双层图划分算法,将目标知识图谱划分为许多子图,即第一子图谱和多个第三子图谱。第2行判断dgl-ke框架是否支持对应的模型。如果支持,则第3行采用dgl-ke框架进行模型训练。如果不支持对应的模型,则第5-8行采用openke框架进行模型训练。由于openke不支持多机多卡并行训练,本技术实施例提出多子图并行知识图谱嵌入训练策略。第5行代表将每个子图的数据进行处理,使用openke框架进行训练。第7行代表将子图训练产生的知识图谱嵌入上传到数据中心存储节点服务器。第9行代表当所有子图的训练结束,则合并所有上传的知识图谱嵌入。
[0114]
本技术实施例提供的上述目标知识图谱嵌入方法中分布式openke-dgl工作流程可以如图3所示,具体地,包括如下:
[0115]
1、输入小型知识图谱,通过用户设定选择的模型,系统根据模型是否存在,会优先选择dgl-ke框架。当选择openke框架时,在openke框架训练完之后将知识图谱嵌入上传到数据中心存储节点。
[0116]
2、输入大规模知识图谱,首先执行前述的双层图划分算法,然后执行前述的分布式训练算法,在这个过程中会判断选择的模型(transe、transr、transd、hole、complex

)是否存在,优先选择dgl-ke框架。如果模型不存在,则选择openke框架进行训练,在每个子图训练完之后将对应的知识图谱嵌入上传到数据中心存储节点,所有子图上传完之后进行知识图谱嵌入的自动合并。
[0117]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
[0118]
在本技术实施例中还提供了一种目标知识图谱嵌入装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0119]
图4是根据本技术实施例的目标知识图谱嵌入装置的结构框图,如图4所示,该装置包括:
[0120]
获取模块41,用于获取目标知识图谱的图数据;
[0121]
第一划分模块42,用于根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,其中第一子图谱中节点的度数大于第二子图谱中节点的度数;
[0122]
第二划分模块43,用于根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱;
[0123]
训练模块44,用于根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的知识图谱嵌入模型用于生成目标知识图谱的嵌入表示。
[0124]
通过本技术上述模块,在通过获取模块获取目标知识图谱的图数据之后,由于采用双层图划分算法,先通过第一划分模块根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,使得第一子图谱中节点的度数大于第二子图谱中节点的度数,再通过第二划分模块根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱,不仅可以通过结合低复杂度的粗划分算法和高复杂度的精细划分划分算法,提高了大规模知识图谱的划分效率,还可以避免相关技术中对大规模的知识图谱进行划分中计算性能与信息损失无法平衡的问题,从而通过训练模块将知识图谱通过双层图划分后得到的第一子图谱的图数据和多个第三子图谱的图数据,应用于知识图谱嵌入模型的训练,避免了相关技术中服务器内存的限制,进而能够实现对大规模的知识图谱的处理。因此,本技术通过提供上述将双层图划分处理与分布式知识图谱嵌入训练结合起来应用于大规模知识图谱嵌入训练的方式,解决了相关技术中知识图谱嵌入模型难以处理大规模的知识图谱的问题,可以将各类针对单机开发的知识图谱嵌入模型,应用到大规模知识图谱。
[0125]
在一些可选的实施方式中,上述第一划分模块包括:第一确定子模块,用于根据目
标知识图谱的图数据,确定第一预设数量,其中,第一预设数量小于目标知识图谱的全部节点的数量;第二确定子模块,用于根据目标知识图谱中节点的度数,确定目标知识图谱的全部节点中满足第一预设数量的多个第一节点,其中,目标知识图谱的全部节点中除多个第一节点之外的节点为多个第二节点,多个第一节点中的每个第一节点的度数大于多个第二节点中每个第二节点的度数;第一划分子模块,用于根据多个第一节点和多个第二节点,将目标知识图谱划分为与多个第一节点对应的第一子图谱以及与多个第二节点对应的第二子图谱。
[0126]
在一些可选的实施方式中,第一预设数量小于或等于目标知识图谱的全部节点的五分之一。
[0127]
在一些可选的实施方式中,上述第二确定子模块包括:第三确定子模块,用于根据目标知识图谱,确定目标知识图谱的全部节点中每个节点的度数;排序子模块,用于将目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,其中,预设规则包括以下之一:多个节点的度数由上至下递增,以及多个节点的度数由上至下递减;第一获取子模块,用于从目标节点序列中获取满足第一预设数量的多个目标节点,得到多个第一节点。
[0128]
在一些可选的实施方式中,上述第三确定子模块包括:表示子模块,用于将目标知识图谱的图数据表示为邻接链表的形式;第一计算子模块,用于根据表示为邻接链表的目标知识图谱的图数据,计算所目标知识图谱的全部节点中每个节点的度数。
[0129]
在一些可选的实施方式中,上述排序子模块包括:第四确定子模块,用于根据目标知识图谱的图数据,确定目标知识图谱的全部节点的数量;第二获取子模块,用于根据目标知识图谱的全部节点的数量,获取预存节点列表;添加子模块,用于将目标知识图谱的全部节点中每个节点的度数添加至预存节点列表中,得到具有目标节点序列的目标节点列表。
[0130]
在一些可选的实施方式中,上述排序子模块还包括:初始化子模块,用于在将目标知识图谱的全部节点中每个节点的度数添加至预存节点列表中之前,初始化预存节点列表。
[0131]
在一些可选的实施方式中,上述装置还包括:存储模块,用于将目标节点列表存储至数据库中,得到新的预存节点列表,其中,数据库中存储有多个预存节点列表,多个预存节点列表中的任意一个预存节点列表与其余的至少一个预存节点列表用于存储的节点数量不同。
[0132]
在一些可选的实施方式中,上述第一获取子模块包括:第一提取子模块,用于在预设规则为多个节点的度数由上至下递增的情况下,按照与目标节点序列对应的序号由大到小的顺序,依次从目标节点序列中提取目标节点,直到提取的目标节点的数量满足第一预设数量;第二提取子模块,用于在预设规则为多个节点的度数由上至下递减的情况下,按照与目标节点序列对应的序号由小到大的顺序,依次从目标节点序列中提取目标节点,直到提取的目标节点的数量满足第一预设数量。
[0133]
在一些可选的实施方式中,上述第二划分模块包括:第二划分子模块,用于根据第二子图谱中节点的度数,将第二子图谱的图数据划分为多个数据集,其中,多个数据集中的每个数据集分别对应第二子图谱的全部节点中的至少一个节点;第三划分子模块,用于采用预设图划分算法将多个数据集中的每个数据集划分为多个子数据集,得到多个第三子图
谱的图数据,其中,由多个数据集划分得到的多个子数据集与多个第三子图谱一一对应。
[0134]
在一些可选的实施方式中,上述第二划分子模块包括:第五确定子模块,用于根据第二子图谱中节点的数量和节点的度数,确定第二预设数量,其中,第二预设数量小于第二子图谱的全部节点的数量;第四划分子模块,用于将第二子图谱的图数据划分为满足第二预设数量的多个数据集,其中,与多个数据集中不同的数据集对应的节点的度数不同。
[0135]
在一些可选的实施方式中,上述第三划分子模块包括:第六确定子模块,用于根据每个数据集,确定第三预设数量,其中,第三预设数量小于与每个数据集对应的节点的数量;第五划分子模块,用于采用metis算法将每个数据集划分为满足第三预设数量的多个子数据集,得到多个第三子图谱的图数据。
[0136]
在一些可选的实施方式中,上述训练模块包括:第三获取子模块,用于获取知识图谱嵌入模型;第七确定子模块,用于根据知识图谱嵌入模型,确定目标训练框架;第一训练子模块,用于以第一子图谱的图数据和多个第三子图谱的图数据为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练。
[0137]
在一些可选的实施方式中,上述第七确定子模块包括:判断子模块,用于判断第一训练框架是否支持知识图谱嵌入模型;第八确定子模块,用于在第一训练框架支持知识图谱嵌入模型的情况下,确定第一训练框架为目标训练框架;第九确定子模块,用于在第一训练框架不支持知识图谱嵌入模型的情况下,确定第二训练框架为目标训练框架。
[0138]
在一些可选的实施方式中,第一训练框架为dgl-ke框架,第二训练框架为openke框架。
[0139]
在一些可选的实施方式中,上述第一训练子模块包括:第二训练子模块,用于分别以多个子图谱中的每个子图谱为训练样本,采用目标训练框架对知识图谱嵌入模型进行训练,其中,多个子图谱包括第一子图谱和多个第三子图谱;生成子模块,用于根据训练后的知识图谱嵌入模型,生成对应多个子图谱的多个嵌入表示。
[0140]
在一些可选的实施方式中,上述装置还包括:上传模块,用于按照多个子图谱作为训练样本的顺序,将对应多个子图谱的多个嵌入表示依次上传至数据中心的存储节点。
[0141]
在一些可选的实施方式中,上述装置还包括:合并模块,用于将上传至存储节点的多个子图谱的多个嵌入表示合并。
[0142]
在一些可选的实施方式中,上述装置还包括:第四获取子模块,用于根据预设指令,从知识图谱嵌入模型池中获取知识图谱嵌入模型,知识图谱嵌入模型池包括平移距离模型和语义匹配模型。
[0143]
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
[0144]
本技术的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
[0145]
在一个示例性实施例中,上述计算机可读存储介质可以包括但不限于:u盘、只读存储器(read-only memory,简称为rom)、随机存取存储器(random access memory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
[0146]
本技术的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
[0147]
在一个示例性实施例中,上述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
[0148]
本实施例中的具体示例可以参考上述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
[0149]
显然,本领域的技术人员应该明白,上述的本技术的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本技术不限制于任何特定的硬件和软件结合。
[0150]
以上所述仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。

技术特征:
1.一种目标知识图谱嵌入方法,其特征在于,包括:获取目标知识图谱的图数据;根据所述目标知识图谱的图数据和所述目标知识图谱中节点的度数,将所述目标知识图谱划分为第一子图谱和第二子图谱,其中所述第一子图谱中节点的度数大于所述第二子图谱中节点的度数;根据所述第二子图谱的图数据和第二子图谱中节点的度数,将所述第二子图谱划分为多个第三子图谱;根据所述第一子图谱的图数据和所述多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的所述知识图谱嵌入模型用于生成所述目标知识图谱的嵌入表示。2.根据权利要求1所述的方法,其特征在于,所述根据所述目标知识图谱的图数据和所述目标知识图谱中节点的度数,将所述目标知识图谱划分为第一子图谱和第二子图谱,包括:根据所述目标知识图谱的图数据,确定第一预设数量,其中,所述第一预设数量小于所述目标知识图谱的全部节点的数量;根据所述目标知识图谱中节点的度数,确定所述目标知识图谱的全部节点中满足所述第一预设数量的多个第一节点,其中,所述目标知识图谱的全部节点中除所述多个第一节点之外的节点为多个第二节点,所述多个第一节点中的每个第一节点的度数大于所述多个第二节点中每个第二节点的度数;根据所述多个第一节点和所述多个第二节点,将所述目标知识图谱划分为与所述多个第一节点对应的所述第一子图谱以及与所述多个第二节点对应的所述第二子图谱。3.根据权利要求2所述的方法,其特征在于,所述第一预设数量小于或等于所述目标知识图谱的全部节点的五分之一。4.根据权利要求2所述的方法,其特征在于,所述从所述目标知识图谱的全部节点中确定满足所述第一预设数量的多个第一节点,包括:根据所述目标知识图谱,确定所述目标知识图谱的全部节点中每个节点的度数;将所述目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,其中,所述预设规则包括以下之一:多个节点的度数由上至下递增,以及多个节点的度数由上至下递减;从所述目标节点序列中获取满足所述第一预设数量的多个目标节点,得到所述多个第一节点。5.根据权利要求4所述的方法,其特征在于,所述根据所述目标知识图谱,确定所述目标知识图谱的全部节点中每个节点的度数,包括:将所述目标知识图谱的图数据表示为邻接链表的形式;根据表示为所述邻接链表的所述目标知识图谱的图数据,计算所目标知识图谱的全部节点中每个节点的度数。6.根据权利要求4所述的方法,其特征在于,所述将所述目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,包括:根据所述目标知识图谱的图数据,确定所述目标知识图谱的全部节点的数量;根据所述目标知识图谱的全部节点的数量,获取预存节点列表;
将所述目标知识图谱的全部节点中每个节点的度数添加至所述预存节点列表中,得到具有所述目标节点序列的目标节点列表。7.根据权利要求6所述的方法,其特征在于,所述将所述目标知识图谱的全部节点中每个节点的度数按照预设规则进行排序,得到目标节点序列,还包括:在将所述目标知识图谱的全部节点中每个节点的度数添加至所述预存节点列表中之前,初始化所述预存节点列表。8.根据权利要求7所述的方法,其特征在于,还包括:将所述目标节点列表存储至数据库中,得到新的预存节点列表,其中,所述数据库中存储有多个预存节点列表,所述多个预存节点列表中的任意一个预存节点列表与其余的至少一个预存节点列表用于存储的节点数量不同。9.根据权利要求4所述的方法,其特征在于,所述从所述目标节点序列中获取满足所述第一预设数量的多个目标节点,得到所述多个第一节点,包括:在所述预设规则为所述多个节点的度数由上至下递增的情况下,按照与所述目标节点序列对应的序号由大到小的顺序,依次从所述目标节点序列中提取目标节点,直到提取的所述目标节点的数量满足所述第一预设数量;在所述预设规则为所述多个节点的度数由上至下递减的情况下,按照与所述目标节点序列对应的序号由小到大的顺序,依次从所述目标节点序列中提取目标节点,直到提取的所述目标节点的数量满足所述第一预设数量。10.根据权利要求1至9中任一项所述的方法,其特征在于,所述根据所述第二子图谱的图数据和第二子图谱中节点的度数,将所述第二子图谱划分为多个第三子图谱,包括:根据所述第二子图谱中节点的度数,将所述第二子图谱的图数据划分为多个数据集,其中,所述多个数据集中的每个数据集分别对应所述第二子图谱的全部节点中的至少一个节点;采用预设图划分算法将所述多个数据集中的每个数据集划分为多个子数据集,得到所述多个第三子图谱的图数据,其中,由所述多个数据集划分得到的多个所述子数据集与所述多个第三子图谱一一对应。11.根据权利要求10所述的方法,其特征在于,所述根据所述第二子图谱中节点的度数,将所述第二子图谱的图数据划分为多个数据集,包括:根据所述第二子图谱中节点的数量和节点的度数,确定第二预设数量,其中,所述第二预设数量小于所述第二子图谱的全部节点的数量;将所述第二子图谱的图数据划分为满足所述第二预设数量的所述多个数据集,其中,与所述多个数据集中不同的数据集对应的节点的度数不同。12.根据权利要求10所述的方法,其特征在于,所述采用预设图划分算法将所述多个数据集中的每个数据集划分为多个子数据集,得到所述多个第三子图谱的图数据,包括:根据所述每个数据集,确定第三预设数量,其中,所述第三预设数量小于与所述每个数据集对应的节点的数量;采用metis算法将所述每个数据集划分为满足所述第三预设数量的多个子数据集,得到所述多个第三子图谱的图数据。13.根据权利要求1至9中任一项所述的方法,其特征在于,所述根据所述第一子图谱的
图数据和所述多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,包括:获取所述知识图谱嵌入模型;根据所述知识图谱嵌入模型,确定目标训练框架;以所述第一子图谱的图数据和所述多个第三子图谱的图数据为训练样本,采用所述目标训练框架对所述知识图谱嵌入模型进行训练。14.根据权利要求13所述的方法,其特征在于,所述根据所述知识图谱嵌入模型,确定目标训练框架,包括:判断第一训练框架是否支持所述知识图谱嵌入模型;在所述第一训练框架支持所述知识图谱嵌入模型的情况下,确定所述第一训练框架为目标训练框架;在所述第一训练框架不支持所述知识图谱嵌入模型的情况下,确定第二训练框架为目标训练框架。15.根据权利要求14所述的方法,其特征在于,所述第一训练框架为dgl-ke框架,所述第二训练框架为openke框架。16.根据权利要求13所述的方法,其特征在于,所述以所述第一子图谱的图数据和所述多个第三子图谱的图数据为训练样本,采用所述目标训练框架对所述知识图谱嵌入模型进行训练,包括:分别以多个子图谱中的每个子图谱为训练样本,采用所述目标训练框架对所述知识图谱嵌入模型进行训练,其中,所述多个子图谱包括所述第一子图谱和所述多个第三子图谱;根据训练后的所述知识图谱嵌入模型,生成对应所述多个子图谱的多个嵌入表示。17.根据权利要求16所述的方法,其特征在于,还包括:按照所述多个子图谱作为训练样本的顺序,将对应所述多个子图谱的多个嵌入表示依次上传至数据中心的存储节点。18.根据权利要求17所述的方法,其特征在于,还包括:将上传至所述存储节点的所述多个子图谱的多个嵌入表示合并。19.根据权利要求1所述的方法,其特征在于,还包括:根据预设指令,从知识图谱嵌入模型池中获取所述知识图谱嵌入模型,所述知识图谱嵌入模型池包括平移距离模型和语义匹配模型。20.一种目标知识图谱嵌入装置,其特征在于,包括:获取模块,用于获取目标知识图谱的图数据;第一划分模块,用于根据所述目标知识图谱的图数据和所述目标知识图谱中节点的度数,将所述目标知识图谱划分为第一子图谱和第二子图谱,其中所述第一子图谱中节点的度数大于所述第二子图谱中节点的度数;第二划分模块,用于根据所述第二子图谱的图数据和第二子图谱中节点的度数,将所述第二子图谱划分为多个第三子图谱;训练模块,用于根据所述第一子图谱的图数据和所述多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的所述知识图谱嵌入模型用于生成所述目标知识图谱的嵌入表示。21.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机
程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至19任一项中所述的方法的步骤。22.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至19任一项中所述的方法的步骤。

技术总结
本申请实施例提供了一种目标知识图谱嵌入方法、其装置及电子设备,其中,该方法包括:获取目标知识图谱的图数据;根据目标知识图谱的图数据和目标知识图谱中节点的度数,将目标知识图谱划分为第一子图谱和第二子图谱,其中第一子图谱中节点的度数大于第二子图谱中节点的度数;根据第二子图谱的图数据和第二子图谱中节点的度数,将第二子图谱划分为多个第三子图谱;根据第一子图谱的图数据和多个第三子图谱的图数据,对知识图谱嵌入模型进行训练,训练后的知识图谱嵌入模型用于生成目标知识图谱的嵌入表示。通过本申请,可以将各类知识图谱嵌入模型,应用到大规模知识图谱,解决了相关技术中知识图谱嵌入模型难以处理大规模的知识图谱的问题。的知识图谱的问题。的知识图谱的问题。


技术研发人员:朱洪银 张闯 王敏
受保护的技术使用者:苏州浪潮智能科技有限公司
技术研发日:2023.08.03
技术公布日:2023/9/23
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐