一种动态图数据的摘要展示方法与流程

文档序号:24985702发布日期:2021-05-07 23:03阅读:178来源:国知局
一种动态图数据的摘要展示方法与流程

本发明涉及图数据处理领域,具体的是一种动态图数据的摘要展示方法。



背景技术:

图数据常被用于表示实体和他们之间的关联关系,相较于关系型数据库,图数据提供了一种快速存储和访问关联关系的方式,从而在近些年得到越来越广泛的应用。常见的图数据包括社交网络(用户及他们之间的关系)、电商的产品购买数据(产品、用户及他们之间的购买关系)、医疗图数据(症状、患者、药品和他们之间的关系)、知识图谱(实体及其关系)等。

在使用图数据进行复杂分析之前,用户需要对图数据有个大致的了解,例如知道这个数据中主要存储了哪些类型的节点和哪些常见的关联关系,特别是当图数据出现变化时,即针对动态图数据时,用户需要知道有哪些类型的节点和关系发生了变化。

首先,随着互联网产业的发展和人类信息挖掘技术的快速进步,当前的图数据处于一个规模快速增长的阶段,例如谷歌的知识图谱拥有超过10亿个节点和700亿个关联关系,facebook的社交网络中包含数十亿个用户节点和超过万亿个关联关系。其次,在规模增加的同时,数据复杂程度也在快速增加。最后,图数据处于快速变化过程中,例如在社交网络中,每时每刻都有新用户的加入和新朋友关系的形成。因此,目前用户使用和理解图数据存在以下问题:数据规模巨大、数据复杂程度高以及数据变化速度快,从而导致用户难以理解数据变化并基于此确定更高级分析的方向。



技术实现要素:

为解决上述背景技术中提到的不足,本发明的目的在于提供一种动态图数据的摘要展示方法,能够在数据发生变化时,快速的通过摘要的变化,展示数据发生变化的主要部分,从而帮助用户理解数据变化并基于此确定更高级分析的方向。

本发明的目的可以通过以下技术方案实现:

一种动态图数据的摘要展示方法,系统在载入图数据之后,将首先针对当前数据生成一组初始的图摘要,之后随着数据动态更新,将同步更新摘要,同时通过对比两个时刻的摘要的差别,直观地展示出这两个时刻之间图数据的主要变化;

动态图数据的摘要展示方法具体包括以下步骤:

s1、载入数据;

s2、初始摘要发现:跟据已有的节点上的属性和边,构建一组子图作为潜在的图摘要,同时计算每个图摘要的匹配,最终将匹配数量较多的子图作为图摘要存储起来,即选取匹配数量最高的k个子图作为k-频繁子图,并且展示给用户;

s3、判断是否还有新数据到来;

s4、载入新数据,与旧数据融合;

s5、动态摘要更新:在生成了初始的k-频繁子图之后,当图数据本身发生变化,需要根据数据变化情况动态调整子图树和子图缓存,从而更新k-频繁子图;

s6、摘要变化生成,给定两个时刻t1和t2,通过对比发现这两个时刻的摘要p1和p2的差别,从而帮助用户理解这两个时刻图数据的变化情况。

进一步地,步骤s2中子图树构建过程主要包括在第一层发现所有的属性及值,在第二层发现所有这些属性-值节点之间对应的边,从第三层开始,将上一层的子图进行拼接,生成更大的子图,一直到所有潜在的可能摘要都被生成。

进一步地,步骤s2中通过在子图树中进行剪枝,对于某些子图预估其匹配数量的上限,从而直接删除那些匹配数量较低的子图,来减少需要计算匹配的子图数量;

子图树剪枝过程具体如下:首先构建一个容量为n个子图的缓存,在构建子图树时,在第二层首先选取匹配数量最高的n个子图放入缓存,假设这n个子图中匹配数量最低的子图的匹配数量为l,从第三层开始,如果某个子图的匹配高于l,将缓存中匹配数量最低的子图删除,同时将该子图放入缓存,并更行l的值,如果某个子图的匹配数量低于l,那么基于子图包含理论,任何包含该子图的更大子图的匹配值肯定不会高于l,在树中将该子图删除,从而选取匹配数量最高的k个子图作为k-频繁子图。

进一步地,步骤s5中动态摘要更新根据某个具体的时刻图数据变化中受影响的节点和边,定位在子图树中可能受影响的子图,针对单个更新考虑以下情况:

(1)如果是节点或者属性的增加,首先判断在子图树的第一层是否需要增加新的子图,即增加的属性是否是之前的图中没有的,若属于新的属性,则从第二层开始,增加新的子图并进行拼接和匹配计算,若不是新的属性,则对所有包含该属性的子图重新计算其匹配数量,并更新频繁子图缓存;

(2)如果是边的增加,那么同1中描述,判断在子图树的第二层是否需要增加新的边,若是,则需要重新构建所有与这条新的边相关的子图,否则,则需要更新所有与这条边相关的子图的匹配数量,并更新频繁子图缓存;

(3)如果是节点或者属性的删除,从子图树的第一层开始更新所有与此属性相关的子图的匹配值,如果某子图的匹配变成0,则删除该子图及所有包含该子图的子图,依据新的匹配值更新缓存;

(4)如果是边的删除,将从子图树的第二层开始重复3中的步骤,更新所有与该条边相关的子图的匹配值;

(5)如果是属性值的修改,将其分解为删除旧的属性值并添加新的属性值两个子操作,并调用1、3中的步骤更新k-频繁子图。

进一步地,步骤s6中摘要对比时p1和p2都包含了k个摘要,需要对两组摘要进行一一对比,发现p1和p2之间的不同,同时对每一对摘要进行排序,从而帮助用户理解数据的变化情况,摘要对比时存在以下三种情况:

(ⅰ)p1和p2完全一致,说明这两个摘要没有任何变化,因而不包含在动态变化中;

(ⅱ)p1和p2没有任何相同的节点或者属性,说明这两个摘要没有任何关联,同样也不是动态变化的一部分;

(ⅲ)p1和p2至少有1个相同的节点/属性,即两个摘要既有相同的地方也有不同的地方,相同的地方是它们的关联所在,而不同的地方是数据变化的表现。

进一步地,摘要的排序主要考虑以下两点:首先,如果这两个摘要的匹配数量都很多,则这两个摘要能够代表足够多的图中的节点和边,因而排序应该较高;其次,如果2个摘要本身差别很大,说明有一定的几率描述的内容并不相关,两个摘要只有1个共同的属性,那么这两个摘要可能描述的是与这个属性相关的完全不同的2件事,所以摘要本身差距大,则其排序应该较低;

两个时刻摘要的排序值公式如下:

其中,l(p1)表示的是p1的匹配数量,l(p2)表示的是p2的匹配数量,m表示p1和p2中匹配数量最大的子图的匹配数量,diff(p1,p2)表示两个子图的差别,即它们共同的属性的数量处以它们所有的属性的数量;

依据排序值公式,生成所有的摘要对,对每一对摘要标示出它们之间的差别,从而帮助用户理解摘要的变化情况。

本发明的有益效果:

本发明通过实施更新存储的图数据摘要并生成摘要之间的区别,从而显示出数据变化的主要方面,用户可以基于摘要变化,进一步的访问数据底层,或者决定是否修改基于该数据的相关应用等;本发明动态图数据的摘要展示方法能够在数据发生变化时,快速的通过摘要的变化,展示数据发生变化的主要部分,从而帮助用户理解数据变化并基于此确定更高级分析的方向。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明动态图数据的摘要展示方法的流程图;

图2是本发明子图树构建的流程图;

图3是本发明k-频繁子图的生成的流程图;

图4是本发明动态摘要更新的流程图;

图5是本发明子图同构算法的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在本发明的描述中,需要理解的是,术语“开孔”、“上”、“下”、“厚度”、“顶”、“中”、“长度”、“内”、“四周”等指示方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的组件或元件必须具有特定的方位,以特定的方位构造和操作,因此不能理解为对本发明的限制。

一、图摘要定义

我们首先定义图数据及图摘要。图数据g可以被表现为一个三元组g=(v,e,f)。其中v是一组节点,e是一组连接节点的边每个节点或边拥有一组属性及对应的属性值,例如某公司节点可以有属性-属性值“类别-国家”“名称-xx公司”、“收入-xx万元”等(参与图1)。同样,该定义可以被广泛地应用于表现其他类别的图结构数据,例如针对社交网络数据,节点可以定义为“用户”,其拥有“年龄、注册时间、职业”等属性,用户与用户之间有“好友”、“关注”等关系。

以上定义常被用于表达静态的图数据,及数据在使用过程中不发生任何变化,但是日常使用的数据常常处于一个动态变化的过程,因而我们基于以上定义,将动态图数据定义为g*=(g,t),其中g是初始状态下的图,可以为空,t是一组图数据的变化t={<t1,δg1>,...<tn,δgn>},其中ti是某个具体的时刻,而δgi=(δvi,δei,δfi)是这个时刻在图上的变化,包括节点的增加/删除(δvi)、边的增加/删除(δei)和节点/边上属性及属性值的增加/修改/删除(δfi)。考虑图1中的金融知识图谱,在某一个给定时刻,可能有新的公司成立(节点增加)、有公司主营类别的变化(边的删除和重新建立)、有公司名称的变化(属性值的变化)等,这些变化都可以被表现为一个动态图。

在定义了静态和动态图数据之后,我们接下来定义图摘要及如何展示摘要变化。首先,图摘要是一个非常小的子图(通常只有<10个节点和边),这类小图能很直观的体现图数据的主要描述内容。与图的定义类似,图摘要可以被定义为g’=(v’,e’,f’),其也包含一组节点、边和属性,原始摘要1如果在图中有很多对应的匹配,那么我们知道该图数据描述的主要是与摘要1相关的内容。其次,两个图摘要之间的差别能够帮助我们理解这个图数据的变化。

图摘要里面的每个节点可能包含一组属性,那么给定一个图,我们可以生成非常多的子图,究竟选择哪些子图作为图摘要,我们接下来利用子图同构的概念定义每个子图在图中的匹配,我们对每个子图都发现其匹配的数量,进而选择匹配数量较多的子图作为图摘要,因为匹配数量多意味着该子图能够代表图数据中的大部分。

子图同构可以直观的理解为在g中找到与g’在结构和属性上完全一致的所有匹配的子图,子图同构可以定义为一个节点对应关系,即v与v’中节点的对应,假设该对应可以表现为一个对应函数f(x)。我们用表示两个图中所有的节点对应关系,如果u是摘要中的节点,那么f(u)就是对应的在g中的节点。如果该对应函数满足以下条件,那么我们认为它是一个子图同构:

1)

2)

3)

4)

6)f(u)中的属性能对应/匹配上u的属性及值

6)f(u)和f(u’)之间的边上的属性能对应/匹配上u,u’之间的边上的属性及值。

二、动态图数据的摘要展示方法

一种动态图数据的摘要展示方法,系统在载入图数据之后,将首先针对当前数据生成一组初始的图摘要,之后随着数据动态更新,将同步更新摘要,同时通过对比两个时刻的摘要的差别,直观地展示出这两个时刻之间图数据的主要变化;

如图1所示,动态图数据的摘要展示方法具体包括以下步骤:

s1、载入数据;

s2、初始摘要发现:跟据已有的节点上的属性和边,构建一组子图作为潜在的图摘要,同时计算每个图摘要的匹配,最终将匹配数量较多的子图作为图摘要存储起来,即选取匹配数量最高的k个子图作为k-频繁子图,并且展示给用户;

s3、判断是否还有新数据到来;

s4、载入新数据,与旧数据融合;

s5、动态摘要更新:在生成了初始的k-频繁子图之后,当图数据本身发生变化,需要根据数据变化情况动态调整子图树和子图缓存,从而更新k-频繁子图;

s6、摘要变化生成,给定两个时刻t1和t2,通过对比发现这两个时刻的摘要p1和p2的差别,从而帮助用户理解这两个时刻图数据的变化情况。

三、初始摘要发现

系统在载入初始图数据之后,将首先针对该数据生成一组初始的图摘要,核心方法是跟据已有的节点上的属性和边,构建一组子图作为潜在的图摘要,同时计算每个图摘要的匹配,最终将匹配数量较多的子图(选取匹配数量最高的k个子图作为k-频繁子图)作为图摘要存储起来,并且展示给用户。

其核心过程为构建一个树结构的子图空间,并对该空间中的所有子图计算器匹配。参照图5,构建过程主要包括在第一层发现所有的属性及值(我们用字母表示,例如字母a对应1个属性及其值),在第二层我们发现所有这些属性-值节点之间对应的边,例如公司(a)和国家(b)在g中相连,那么这里就会有a-b一条边,从第三层开始,我们将上一层的子图进行拼接,生成更大的子图,一直到所有潜在的可能摘要都被生成。在此过程中,对每个生成的子图,我们通过子图同构计算其匹配的数量。我们使用了文献cordella,luigip.(2004),"a(sub)graphisomorphismalgorithmformatchinglargegraphs",ieeetransactionsonpatternanalysisandmachineintelligence,26(10):1367–1372中介绍的子图同构算法。子图树构建主要流程如图2所示。

需要注意的是,我们通过在这个树中进行剪枝,来减少需要计算匹配的子图数量,即对于某些子图,我们可以预估其匹配数量的上限,从而直接删除那些匹配数量较低的子图。

我们首先引入一个图包含的概念,假设有个两个子图g1和g2,如果g1中的所有节点、边和属性都是g2中的节点、边和属性的子集,那么我们称g2包含了g1,例如图4中,a-b就被a-b-c包含。假设给定g的情况下,g1的匹配数量为s(g1),那么对任意两个子图g1和g2,如果那么s(g1)>s(g2),即较大的子图,其匹配的数量要比其包含的较小的子图要少,我们可以利用这个属性来预测一个子图的匹配的上限值。

为了保存匹配数量较多的子图,我们首先构建一个容量为k个子图的缓存,在构建子图树时,我们在第二层首先选取匹配数量最高的k个子图放入缓存,我们假设这k个子图中匹配数量最低的子图的匹配数量为l。从第三层开始,如果某个子图的匹配高于l,我们将缓存中匹配数量最低的子图删除,同时将该子图放入缓存,并更行l的值。如果某个子图的匹配数量低于l,那么基于子图包含理论,我们知道任何包含该子图的更大子图的匹配值肯定不会高于l(该子图的匹配数量上限已经低于l,那么我们可以在树中将该子图删除,在接下来的子图拼接过程中也不会再利用到此子图。k-频繁子图的生成过程如图3所示。

四、动态摘要更新

在生成了初始的k-频繁子图之后,当图数据本身发生变化,需要根据数据变化情况动态更新k-频繁子图,因为节点、边和属性的增删修改,部分频繁子图的匹配数量可能会降低,同时部分之前被去除的频繁子图的匹配数量增加,因而可能成为新的频繁子图。因此我们需要针对δgi中可能包含的情况进行摘要的动态更新。动态更新的核心在于依据数据的变化,动态调整子图树和子图缓存,从而更新k-频繁子图。

首先,根据δgi中受影响的节点和边,定位在子图树中可能受影响的子图。我们针对单个更新考虑以下情况:

(1)如果是节点或者属性的增加,那么我们将首先判断在子图树的第一层,是否需要增加新的子图,即增加的属性是否是之前的图中没有的。若属于新的属性,那么将从第二层开始,增加新的子图并进行拼接和匹配计算。若不是新的属性,那么将对所有包含该属性的子图重新计算其匹配数量,并更新频繁子图缓存;

(2)如果是边的增加,那么同1中描述,判断在子图树的第二层,是否需要增加新的边,若是,则需要重新构建所有与这条新的边相关的子图,否则,则需要更新所有与这条边相关的子图的匹配数量,并更新频繁子图缓存;

(3)如果是节点或者属性的删除,那么我们将从子图树的第一层开始,更新所有与此属性相关的子图的匹配值,如果某子图的匹配变成0,那么将删除该子图及所有包含该子图的子图。依据新的匹配值更新缓存;

(4)如果是边的删除,那么我们将从子图树的第二层开始,重复3中的步骤,更新所有与该条边相关的子图的匹配值;

(5)如果是属性值的修改,例如某个个人的收入值发生了变化,那么我们将其分解为删除旧的属性值并添加新的属性值两个子操作,并调用1、3中的步骤更新k-频繁子图。

动态摘要更新的流程如图4所示。

五、动态摘要的变化的生成

在动态更新摘要的基础上,我们接下来介绍给定了两个时刻t1和t2,如何发现他们之间的摘要(p1和p2)区别,从而帮助用户理解这两个时刻图数据的变化情况。

p1和p2都包含了k个摘要,我们需要做的是对两组摘要进行一一对比,发现他们之间的不同,同时对每一对摘要进行排序,从而帮助用户理解数据的变化情况。比对摘要时,我们考虑以下三种情况:

(ⅰ)p1和p2完全一致。此种情况说明这两个摘要没有任何变化,因而我们不会将它们包含在动态变化中;

(ⅱ)p1和p2没有任何相同的节点或者属性。此种情况说明这两个摘要没有任何关联,同样我们也不会将它们认为是动态变化的一部分;

(ⅲ)p1和p2至少有1个相同的节点/属性。我们所描述的动态变化主要针对这中情况,即两个摘要既有相同的地方也有不同的地方,相同的地方是它们的关联所在,而不同的地方是数据变化的表现。

针对上述描述的情况3,我们会生成所有有关联但不完全相同的摘要对,接下来我们介绍如何将这些摘要对进行排序。排序的依据主要考虑2点,首先,如果这两个摘要的匹配数量都很多,那么说明这两个摘要能够代表足够多的图中的节点和边,因而排序应该较高,其次,如果2个摘要本身差别很大,说明有一定的几率描述的内容并不相关,例如两个摘要只有1个共同的属性,那么这两个摘要可能描述的是与这个属性相关的完全不同的2件事,所以摘要本身差距大,则其排序应该较低。

基于此,我们定义了p1和p2的排序值公式:

其中,l(p1)表示的是p1的匹配数量,m表示p1和p2中匹配数量最大的子图的匹配数量,diff(x)表示两个子图的差别,即它们共同的属性的数量处以它们所有的属性的数量

依据排序值公式,我们生成了所有的摘要对,对每一对摘要,我们标示出它们之间的差别,从而帮助用户理解摘要的变化情况。

在本说明书的描述中,参考术语“一个实施例”、“示例”、“具体示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。

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