本发明总体上涉及可编程计算机,并且更具体地涉及用于从图(特别是知识图)自动生成假设的计算机实现的方法、计算机系统和计算机程序产品。
背景技术:
图论是对图的研究,图是用于建模在对象之间的成对关系的数学结构。在此背景下的图由顶点或节点以及连接它们的被称为边的线组成。在物理、生物、社会和信息系统中,图在应用中被广泛用于建模多种类型的关系和过程动态。因此,现代技术、科学和商业应用中的许多实际问题通常由图表示。
节点的中心度是广泛使用的用于确定节点在整个网络或图内的相对重要性的度量。节点中心度可用于确定在复杂网络中哪些节点是重要的,例如,以了解影响者或查找热点链接。例如,节点中心度通常用于确定一个人在社交网络中有何影响力,或者用于确定在空间句法中、一个房间在建筑物内的重要性或用于确定一条道路在城市网络中的使用情况。
技术实现要素:
根据第一方面,本发明体现为一种用于从图自动生成假设的计算机实现的方法。该方法包括接收初始图,其中初始图包括多个节点和在多个节点之间的多条边。该方法还包括计算初始图的预定属性,并修改初始图的多条边中的一条或多条。由此,创建包括多条原始边和一条或多条修改边的修改图。该方法还包括以下步骤:计算修改图的预定属性,比较初始图的预定属性与修改图的预定属性,以及如果初始图的预定属性和修改图的预定属性之间的差的预定度量超过预定阈值,则将一条或多条修改边标记为假设。
根据另一方面,本发明体现为一种计算机系统,该计算机系统包括具有计算机可读程序指令的存储器和用于执行计算机可读程序指令以执行用于从图自动生成假设的计算机实现的方法的处理器。该方法包括接收初始图,其中初始图包括多个节点和在多个节点之间的多条边。该方法还包括计算初始图的预定属性,并修改初始图的多条边中的一条或多条。由此,创建包括多条原始边和一条或多条修改边的修改图。该方法还包括以下步骤:计算修改图的预定属性,比较初始图的预定属性与修改图的预定属性,以及如果初始图的预定属性和修改图的预定属性之间的差的预定度量超过预定阈值,则将一条或多条修改边标记为假设。
根据本发明的又一方面,提供了一种计算机程序产品,该计算机程序产品用于通过计算机系统从图自动生成假设。该计算机程序产品包括其上具有程序指令的计算机可读存储介质。该程序指令可由计算机系统执行以使该计算机系统执行根据第一方面的方法。
下面将参考附图通过说明性和非限制性示例更详细地描述本发明的实施例。
附图说明
图1示出了根据本发明的实施例的计算机系统的示意性框图;
图2示出了根据本发明的实施例的用于从图自动生成假设的计算机实现的方法的方法步骤的流程图;
图3a示出了根据本发明的实施例的初始图的示例;
图3b示出了根据本发明的实施例的包括附加边的修改图的示例;
图3c示出了根据本发明的实施例的包括附加边和具有改变的边权重的修改边的修改图的示例;
图3d示出了根据本发明的实施例的包括两条附加边和一条被删除边的修改图的示例;
图4a示出了根据本发明的实施例的初始图的谱的简化示例;
图4b示出了根据本发明的实施例的修改图的谱;和
图5示出了根据本发明的实施例的用于从图自动生成假设的计算机实现的方法的方法步骤的另一流程图。
具体实施方式
参考图1-5,描述了本发明的实施例的一些总体方面和术语。
本发明的实施例公开了用于从图中确定或发现感兴趣的假设的方法、系统和计算机程序产品。
本发明的实施例公开了添加、删除或改变图的边并计算对图的预定属性有何种影响的方法。
根据本发明的实施例的图是知识表示系统,其包括多个节点和节点之间的多条边。因此,图可以体现为知识图。多个节点可以具有各种节点类型。多个节点可以保存关于信息项的信息。多条边指定节点之间的某些关系。
图或知识图kg的实例是三元集:kg{v,e},其中集v包含多个节点,这些节点具有来自允许的类型集中的类型。集e包含来自边类型列表的边,这些边链接来自集v的节点对。
kg的基础数学结构是有向图或无向图{v,e},其中节点和边的类型可以由数字加权方案表示。
本发明的实施例提供了一种方法和系统,该方法和系统允许自动确定kg中的节点之间的边或边集的某个插入、删除或权重改变是否可能是感兴趣的。(一条或多条)边的插入、删除或权重改变被认为是一种假设。
本发明的实施例计算边结构的改变是否显著改变图的节点的重要性的度量和/或图的谱属性。如果是这种情况,则相应的假设被认为是感兴趣的,因此可以被指定用于进一步的处理,例如,用于对发现的假设进行人工测试、模拟或任何其他进一步的验证。
这种方法可以显著改善从知识图中提取隐藏知识。本发明的实施例可以加速各种技术领域的研究和开发,因为它们允许通过计算手段发现有希望的或感兴趣的假设,然后可以更详细地评估这些假设。
现在参考图1,示出了计算机系统100的框图。计算机系统100可以被配置为执行用于从(知识)图自动生成假设的计算机实现的方法。计算机系统100可以与许多其他通用或专用计算系统环境或配置一起操作。可能适合与计算机系统100一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统以及包括上述任何系统或设备的分布式云计算环境等。
可以在由计算机系统执行的计算机系统可执行指令(例如,程序模块)的一般上下文中描述计算机系统100。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统100以通用计算设备的形式示出。计算机系统/服务器100的组件可以包括但不限于:一个或者多个处理器或者处理单元116,系统存储器128,连接不同系统组件(包括系统存储器128和处理单元116)的总线118。
总线118表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。
计算机系统100典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统100访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器128可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)130和/或高速缓存存储器132。计算机系统/服务器100可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统134可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线118相连。存储器128可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块142的程序/实用工具140,可以存储在例如存储器128中,这样的程序模块142包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块142通常执行本发明所描述的实施例中的功能和/或方法。程序模块142可以具体地执行用于从(知识)图自动生成假设的计算机实现的方法的一个或多个步骤,例如,如下所述的方法的一个或多个步骤。
计算机系统100也可以与一个或多个外部设备115(例如键盘、指向设备、显示器124等)通信,还可与一个或者多个使得用户能与该计算机系统100交互的设备通信,和/或与使得该计算机系统100能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口122进行。并且,计算机系统100还可以通过网络适配器120与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器120通过总线118与计算机系统100的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统100使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
图2示出了用于从图自动生成假设的计算机实现的方法的流程图200。该方法可以例如由图1的系统100执行,因此下面将参考图1的系统的组件进行描述。该方法具体地可以在计算机系统100上执行的程序模块142的控制下执行。
该方法从步骤210开始。
在步骤220,计算系统100接收初始图。初始图可以例如存储在存储系统134中,或者可以经由i/o接口122从外部设备(例如,经由网络)接收。
初始图包括多个节点和在多个节点之间的多条边。初始图可以具体地体现为知识图。
现在参考图3a,示出了这种初始图301的示例。初始图301包括多个节点,更具体地是六个节点1、2、3、4、5和6。图301还包括多条边,更具体地是六条边11、12、13、14、15和16。边11连接节点1和5,边12连接节点1和2,边13连接节点2和4,边14连接节点4和5,边15连接节点2和3,并且边16连接节点3和6。图301体现为加权图。因此,边与权重相关联。更具体地,边11具有权重w15,边12具有权重w12,边13具有权重w24,边14具有权重w45,边15具有权重w23,并且边16具有权重w36。权重w可以体现为实数。权重w也可以被表示为边权重。
根据其他实施例,可以使用非加权图。
虽然初始图301被体现为无向图,但是根据本发明的其他实施例,有向图也可以用作初始图。
返回参考图2,在步骤230中,计算系统100计算初始图301的预定属性。
预定属性具体地可以是图的任何属性,该属性以期望的方式表征该图。预定属性具体地可以是可量化的属性。预定属性具体地可以是可以通过计算手段以有效方式量化的属性。
根据实施例,计算初始图301的预定属性的步骤230包括计算初始图301的节点中心度。节点中心度、或者换句话说、节点的中心度是广泛使用的用于确定图中的节点的相对重要性的度量。在图3a中,分别用c1、c2、c3、c4、c5和c6表示节点1、2、3、4、5和6的节点中心度。因此,节点中心度也可以表示为节点重要性或节点显著性。
根据实施例,具有低计算成本的方法具体地可以用于计算节点中心度。具有低计算成本的合适方法是本领域已知的。
这种方法对于本发明的实施例特别有用,因为它们提供计算节点中心度的o(n)成本,其中,n是图中的节点数。此外,这种方法可以促进诸如gpu的加速器技术的良好使用。此外,这种方法提供o(|e|)存储器消耗,其中,|e|是图的边数。这可以确保相应计算系统(例如,计算系统100)的存储器层级子系统的最佳利用。
根据另一实施例,初始图的预定属性可以是初始图301的谱属性。
谱图理论研究图和与该图相关联的矩阵的特征多项式、特征值和特征向量的关系的属性。根据实施例,可以对图301计算的谱属性是初始图301的邻接矩阵的特征值集。该特征值集也可以表示为相应图的谱。
因此,步骤230可以包括计算图301的邻接矩阵的特征值集。根据实施例,这可以包括将该特征值集分配给多个柱(bin)的步骤。
图4a示出了图的谱401的简化示例,其可以表示初始图的谱。
谱401的x轴表示示例性邻接矩阵的特征值。x轴被分为最小特征值λmin和最大特征值λmax之间的等距间隔。每个间隔被分配给由n1、n2、...、n9表示的柱。柱n1、n2、...、n9表示在各个间隔中出现的特征值集中的特征值的数量。更具体地,n1表示例如在特征值λmin和λ1之间的间隔中出现的特征值的整数。因此,分柱建立了图的谱的离散化。这便于不同谱之间的比较,这将在下面更详细地解释。因此,y轴表示柱的大小n,即相应间隔的特征值的数量n。
应当指出,所示的谱401和402仅分别示出了初始图和修改图的示例性和简化示例。然而,所示的谱不对应于图301、302、303和304中所示的图的具体示例。
数量n1、n2、...、n9可以建立谱的向量
现在返回参考图2,在步骤240,修改初始图301的多条边中的一条或多条。这创建修改图。在图3b、3c和3d中示出了这种修改图的示例。
根据实施例,修改初始图的多条边中的一条或多条包括向初始图添加一条或多条附加边。这种添加在图3b中示出,其示出了包括具有权重w'56的附加修改边17的修改图302。其他边保持不变,因此对应于初始图301的原始边。
图3c示出了修改图303,其还包括具有权重w'56的附加边17。此外,边15的边权重已被改变为与初始图301的边权重w23不同的边权重w'23。因此,修改初始图的多条边中的一条或多条可以包括修改初始图的一个或多个边权重。
图3d示出了修改图304,其还包括附加边17以及具有权重w'46的另一个附加边18。此外,边11已经从初始图301移除。因此,根据实施例,修改初始图的多条边中的一条或多条还可以包括从初始图中删除一条或多条边。
在步骤250,计算系统100计算修改图的预定属性,例如,图302、303或304中的一个。
这可以通过如上所述的方法来完成,特别是通过计算节点中心度或通过计算修改图的谱属性来完成。
作为示例,图3b、图3c和图3d所示的修改图302、303和304分别包括节点1、2、3、4、5和6的新节点中心度c'1、c'2、c'3、c'4、c'5和c'6。新节点中心度c'1、c'2、c'3、c'4、c'5和c'6当然可以对于修改图302、303和304而不同,但是为了便于说明,仅用相同的符号表示。
图4b示出了修改图的新谱402,其可以对应于例如修改图303、303或304中的一个。新谱包括各个柱或间隔的新数量n'1、n'2、...、n'9。
数量n'1、n'2、...、n'9可以建立谱的新向量
然后,在步骤260中,计算系统100比较初始图(例如,图301)的预定属性与修改图(例如,图302、303和/或304)的预定属性。
根据实施例,可以通过将初始图的节点的节点中心度的总和与修改图的节点中心度的总和进行比较来执行该步骤。
参考例如图3a和3b所示的节点1、2、3、4、5和6的节点中心度,计算系统可以检查c1+c2+c3+c4+c5+c6的总和是否与c'1+c'2+c'3+c'4+c'5+c'6的总和显著差别,特别是该差是否超过差的预定度量。在该示例中,差的预定度量可以是节点中心度的总和之间的预定值。
根据另一实施例,步骤260可以包括执行初始图的节点的节点中心度与修改图的节点的节点中心度的成对比较。更具体地,计算系统100可以检查单个节点的节点中心度之间的单个差是否由于引入的修改而显著改变,或者更具体地,检查该差是否超过预定阈值。例如,这可以表示如下。如果maxi(|ci-c'i|)大于预定阈值,则引入的边改变被认为很重要。根据该示例,初始图的预定属性与修改图的预定属性之间的差的度量是初始图和修改图的所有对应节点对之间的最大差。
总的来说,在步骤270中,检查初始图的预定属性与修改图的预定属性之间的差的预定度量是否超过预定阈值。
如果是这种情况,计算系统会将已改变的一条或多条修改边标记为假设。换句话说,这种修改边被认为是显著的或重要的。
作为示例,如果在步骤260、270处的比较已经示出了图302的节点中心度的总和与图301的节点中心度的总和之间的差超过预定值,则边17将被标记为假设。
然后,该方法可以继续进行步骤240,以便测试或评估另一边修改。
根据实施例,差的预定度量是初始图的预定属性与修改图的预定属性之间的相对差。
这种相对差可以表示为例如百分比。作为示例,相对差可以将例如5%或10%的阈值定义为将修改边标记为假设所需的相对差。
现在参考图4a和4b所示的比较谱属性的示例,根据实施例,可以通过比较向量
根据实施例,差的预定度量是差的局部度量。差的局部度量可以定义为初始图的节点的子集与修改图的节点的相应子集之间的差的度量。
参考例如图3a和图3b,计算系统100可以检查与引入的边17相邻的节点(例如,节点1、3、4、5和6)的子集的总和之间的差是否超过预定阈值。
根据实施例,差的预定度量是差的全局度量。差的全局度量可以被定义为初始图的所有节点与修改图的所有节点之间的差的度量。
参考例如图3a和图3b,计算系统100可以检查所有节点(例如,节点1、2、3、4、5和6)的总和之间的差是否超过预定阈值。
图5示出了根据本发明的实施例的用于从图自动生成假设的计算机实现的方法的方法步骤的另一流程图500。流程图500部分对应于图2的流程图,并且包括类似的步骤。对于类似的步骤,参考图2的以上描述。
该方法从步骤510开始。
在步骤520中,计算系统100接收初始图和边改变集。初始图可以是例如存储在存储系统134中,或者其可以经由i/o接口122从外部设备(例如,经由网络)接收。
根据实施例,边改变集也可以被存储在存储系统134中。根据其他实施例,边改变集可以经由i/o接口122从外部设备(例如,经由网络)接收。
根据实施例,边改变集可以由客户端接收,并且计算系统可以为客户端提供假设的生成作为服务。边改变集可以包括多个附加边和/或多个要删除的边和/或加权边的多个权重改变。边改变集可以以列表的形式提供。
作为示例,多个节点可以代表多种蛋白质,并且边集可以包括疾病列表。然后,根据本发明的实施例的方法可以提供可能感兴趣的假设的列表作为输出,这些假设与用于治疗一种或多种疾病的两种或更多种蛋白质之间的可能相关性有关。这些假设然后可以用于进一步的验证,例如,通过实验或其他研究。
在步骤525,计算系统100计算初始图(例如,初始图301)的预定属性。
在步骤530,计算系统100执行边改变集中的一个边改变,例如,边改变集中的第一个。
在步骤540,计算系统100计算修改图(例如,图302、303或304中的一个)的预定属性。
然后,在步骤550,计算系统100比较初始图的预定属性与修改图的预定属性,并在步骤560,评估初始图的相应预定属性与修改图的预定属性之间的差的预定度量是否超过预定阈值。
如果不是这种情况,则在步骤580,计算系统100检查边改变集中是否存在尚未测试的剩余的边改变。
如果存在剩余的边改变,则该方法继续步骤530,并且执行该集合的另一边改变。
如果在步骤560计算系统100发现已经超过了相应阈值,则在步骤570,计算系统100将相应的边标记为假设,并在步骤575,将相应的边添加到假设集中。由此,方法400将该边改变集中的边改变收集到假设集中。
然后,该方法继续进行步骤580。如果在步骤580发现边改变的列表上没有剩余的边改变,则该方法继续进行步骤590,并提供假设集作为输出。
以迭代的方式执行步骤530至580,从而以连续的方式执行并测试边改变集中的边改变。
根据本发明的实施例的其他方法可以通过将假设集中的一个或多个假设添加到初始图来修改初始图,从而创建更新图。然后,它可以在更新图上再次执行如上所述的方法。这可以包括计算更新图的预定属性并修改更新图的多条边中的一条或多条以创建修改更新图。进一步的步骤可以包括计算修改更新图的预定属性,比较更新图的预定属性与修改更新图的预定属性,并且如果更新图的预定属性和修改更新图的预定属性之间的差的预定度量超过了预定阈值,则将一条或多条修改边标记为假设。
这种方法的这种重复应用可以在更新图中识别出进一步感兴趣的假设。
本发明可以是系统、方法和/或计算机程序产品。该计算机程序产品可以包括其上具有用于使计算系统100的处理器/处理单元执行本发明的方面的计算机可读程序指令的计算机可读存储介质。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。