掌桥专利:专业的专利平台
掌桥专利
首页

社区网络的处理方法、装置、设备及存储介质

文献发布时间:2023-06-19 13:46:35


社区网络的处理方法、装置、设备及存储介质

技术领域

本申请涉及互联网技术领域,尤其涉及一种社区网络的处理方法、装置、设备及存储介质。

背景技术

目前,可以基于以下两种常用的社区划分算法:Louvain算法和标签传播算法(Label Propagation Algorithm,简称LPA),对社区网络进行划分。其中,Louvain算法相较于LPA算法而言执行效率较高,计算结果也相对稳定,得到广泛的应用。Louvain算法是基于多层次对模块度(Modularity)进行优化,从而实现社区划分的算法,其优化目标是最大化整个社区网络的模块度。其中,模块度用于评估社区网络划分结果的合理性,其物理含义为社区网络中所有社区的社区内节点的连变数与随机情况下的边数之差的均值,取值范围为(-1,1),取值越大,表示社区网络按照当前的社区结果进行划分越合理。

现有技术中,每新增一个节点,均需采用Louvain算法对全部节点重新执行一遍社区划分过程。这种划分方式,耗时较大,无法适用于实时性较强的场景。

发明内容

本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

本申请提出一种社区网络的处理方法、装置、设备及存储介质,以实现仅针对新增的业务节点执行社区划分过程,可以极大地节省计算的工作量,提升处理效率,可以适用于实时性较强的场景,提升该方法的适用性,用于解决现有技术中,每新增一个节点,均需采用Louvain算法对全部节点重新执行一遍社区划分过程,耗时较大,无法适用于实时性较强的场景的技术问题。

本申请第一方面实施例提出了一种社区网络的处理方法,包括:

获取待添加至社区网络的第一业务节点;

将所述社区网络中各第二业务节点所从属的社区,作为候选社区;其中,所述第二业务节点为所述社区网络中与所述第一业务节点存在关联关系的业务节点;

根据所述第一业务节点归入各候选社区前后所述社区网络的模块度变化值,从所述候选社区中确定第一目标社区,或者创建所述第一目标社区;

将所述第一业务节点归入所述社区网络的所述第一目标社区。

本申请实施例的社区网络的处理方法,通过获取待添加至社区网络的第一业务节点;将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点;根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区;将第一业务节点归入社区网络的第一目标社区。由此,仅针对新增的业务节点执行社区划分过程,可以极大地节省计算的工作量,提升处理效率,可以适用于实时性较强的场景,提升该方法的适用性。

本申请第二方面实施例提出了一种社区网络的处理装置,包括:

获取模块,用于获取待添加至社区网络的第一业务节点;

确定模块,用于将所述社区网络中各第二业务节点所从属的社区,作为候选社区;其中,所述第二业务节点为所述社区网络中与所述第一业务节点存在关联关系的业务节点;

处理模块,用于根据所述第一业务节点归入各候选社区前后所述社区网络的模块度变化值,从所述候选社区中确定第一目标社区,或者创建所述第一目标社区;

归入模块,用于将所述第一业务节点归入所述社区网络的所述第一目标社区。

本申请实施例的社区网络的处理装置,通过获取待添加至社区网络的第一业务节点;将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点;根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区;将第一业务节点归入社区网络的第一目标社区。由此,仅针对新增的业务节点执行社区划分过程,可以极大地节省计算的工作量,提升处理效率,可以适用于实时性较强的场景,提升该方法的适用性。

本申请第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现如本申请第一方面实施例提出的社区网络的处理方法。

本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请第一方面实施例提出的社区网络的处理方法。

本申请第五方面实施例提出了一种计算机程序产品,当所述计算机程序产品中的指令处理器执行时,执行如本申请第一方面实施例提出的社区网络的处理方法。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本申请实施例一所提供的社区网络的处理方法的流程示意图;

图2为本申请实施例二所提供的社区网络的处理方法的流程示意图;

图3为本申请实施例三所提供的社区网络的处理方法的流程示意图;

图4为本申请实施例的社区网络中社区划分过程示意图;

图5为本申请实施例四所提供的社区网络的处理装置的结构示意图;

图6示出了适于用来实现本申请实施方式的示例性计算机设备的框图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

Louvain算法是基于多层次对模块度进行优化,从而实现社区划分的算法,其优化目标是最大化整个社区网络的模块度。

其中,模块度用于评估社区网络划分结果的合理性,模块度Q的定义如下:

公式(1)中,C

公式(1)中,A

Louvain算法的计算过程分以下几个步骤:

1、将图中每个节点看作一个单独的社区;此时,社区中有多少节点,就有多少社区;

2、对于每个节点i,依次尝试将该节点i分别分配到其邻居节点所在的社区,计算分配前和分配后模块度的变化值ΔQ,并记录ΔQ最大的邻居节点。若ΔQ的最大值为正数,则将该节点i分配给最大的ΔQ所对应的邻居节点所在的社区;

3、重复执行步骤2,直到图中节点所属社区不再变化,达到稳定状态;

4、对图进行压缩,将处于同一社区的节点压缩成一个新的社区节点,将社区节点内的各节点之间的边的权重进行加和操作,压缩成一条指向该社区节点的边;将相邻两个社区之间的边的权重加和,转换为相邻社区节点之间的边的权重;

5、重复执行步骤4,直到整个图的模块度不再发生变化。

Louvain算法相对于其他常用的社区划分算法,比如LPA算法而言,执行效率较高,且计算结果也相对稳定。Louvain算法最耗时的操作为算法刚开始时,将每个节点分别尝试划入相邻节点所在社区,并计算模块度变化值的步骤,也就是在第一次执行步骤2时,由于此时需要计算模块度变化值的节点数量最多,因此计算量最大。节点按照社区压缩之后,点和边的数量会大大减少,在后续的执行过程中,图的状态会很快达到稳定。

其中,LPA算法的基本思路为:将节点i的社区发送给该节点i的邻居节点,并获取邻居节点所属的社区,将获取到的最多的社区,作为节点i所属的社区。迭代上述过程,直到所有节点所属社区达到稳定。

但本质上,Louvain算法是基于离线方式进行社区划分的过程,该算法可以较好地还原某个时间点上,一个静态的图中节点所属的社区。但是,对于实时性较强的场景,当有一个新的节点到来时,无法实时地计算并获取该新的节点所在社区的信息。理由为,当一个新的节点到来时,Louvain算法需对全部节点重新执行一遍社区划分过程,耗时较大。

因此,本申请实施例主要针对现有技术中,Louvain算法无法适用于实时性较强的场景的技术问题,提出一种社区网络的处理方法。

本申请实施例的社区网络的处理方法,通过获取待添加至社区网络的第一业务节点;将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点;根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区;将第一业务节点归入社区网络的第一目标社区。由此,仅针对新增的业务节点执行社区划分过程,可以极大地节省计算的工作量,提升处理效率,可以适用于实时性较强的场景,提升该方法的适用性。

下面参考附图描述本申请实施例的社区网络的处理方法、装置、设备及存储介质。

图1为本申请实施例一所提供的社区网络的处理方法的流程示意图。

本申请实施例以该社区网络的处理方法被配置于社区网络的处理装置中来举例说明,该社区网络的处理装置可以应用于任一计算机设备中,以使该计算机设备可以执行社区网络的处理功能。

其中,计算机设备可以为个人电脑(Personal Computer,简称PC)、云端设备、移动设备等,移动设备例如可以为手机、平板电脑、个人数字助理、穿戴式设备、车载设备等具有各种操作系统、触摸屏和/或显示屏的硬件设备。

如图1所示,该社区网络的处理方法可以包括以下步骤:

步骤101,获取待添加至社区网络的第一业务节点。

本申请实施例中,待添加至社区网络的第一业务节点可以为新增的业务节点,其中,当业务类型或业务含义不同时,业务节点可以不同,比如业务节点可以代表注册的用户,或者代表一笔交易请求等,本申请对此并不作限制。

本申请实施例中,当新增一个业务节点时,社区网络的处理装置可以获取该新增的业务节点,本申请中记为第一业务节点。

步骤102,将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点。

本申请实施例中,可以获取社区网络中与该第一业务节点存在关联关系的业务节点,本申请中记为第二业务节点,将社区网络中各第二业务节点所从属的社区,作为候选社区。

在本申请实施例的一种可能的实现方式中,可以存储社区网络中的各业务节点、以及社区网络中各业务节点之间的关联关系。从而本申请中,可以直接查询存储的数据,确定与该第一业务节点存在关联关系的第二业务节点。

作为一种示例,为了降低查询的复杂度,降低计算时间,社区网络可以存储于图数据库,图数据库中可以存储有社区网络中的各业务节点、社区网络中的各社区对应的社区节点、各社区节点与对应社区内各业务节点之间的关联关系、社区网络中各业务节点之间的关联关系。

也就是说,图数据库可以是一个二部图,二部图中包含两种类型的节点,一种为业务节点,另一种为社区节点,其中,业务节点隶属于唯一的社区节点,而社区节点可以包含多个业务节点。

作为另一种示例,为了提升该方法的适用性,社区网络还可以存储于其他的关系型数据库、非关系型数据库(NoSQL)或者搜索引擎中,关系型数据库、非关系型数据库或者搜索引擎中可以存储有社区网络中的各业务节点、社区网络中的各社区对应的社区节点、各社区节点与对应社区内各业务节点之间的关联关系、社区网络中各业务节点之间的关联关系。

因此,本申请中,可以直接查询以确定与该第一业务节点存在关联关系的第二业务节点,例如查询图数据库、关系型数据库、非关系型数据库或者搜索引擎,以确定与该第一业务节点存在关联关系的第二业务节点。

需要说明的是,当新增第一业务节点时,图数据库、关系型数据库、非关系型数据库或者搜索引擎中可能不存在该第一业务节点的相关数据,因此,作为本申请实施例的一种可能的实现方式,当新增第一业务节点时,可以提取该第一业务节点在设定维度上的特征,根据各已有业务节点在设定维度上的特征,与第一业务节点在设定维度上的特征,确定该第一业务节点与各已有业务节点之间的关联度,其中,已确定并存储有已有业务节点之间的关联关系以及各已有业务节点与社区节点之间的关联关系或隶属关系。

从而本申请中,可以根据关联度确定与该第一业务节点存在关联关系的第二业务节点,比如选取关联度高于预设关联度阈值的已有业务节点,作为第二业务节点。并且,还可以利用第一业务节点与第二业务节点之间的关联关系,对图数据库、关系型数据库、非关系型数据库或者搜索引擎进行更新。从而本申请中,可以直接从图数据库、关系型数据库、非关系型数据库或者搜索引擎中查询以获取与第一业务节点存在关联关系的第二业务节点。

步骤103,根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区。

本申请实施例中,模块度,用于衡量或评估社区网络中社区划分结果的合理性,当模块度变化值大于或者等于阈值时,表明社区网络中社区划分结果合理,而当模块度变化值小于阈值时,表明社区网络中社区划分结果不合理。

其中,阈值为较小的取值,例如,阈值可以为大于或者等于0的较小取值。

应当理解的是,当第一业务节点与第二业务节点具有关联关系时,该第一业务节点必然与第二业务节点所从属的候选社区对应的社区节点关联更为紧密。因此,本申请中,针对各候选社区,可以计算第一业务节点归入各候选社区前后,社区网络的模块度变化值ΔQ,并判断各候选社区对应的模块度变化值ΔQ中,是否存在大于或者等于阈值的模块度变化值,在各候选社区对应的模块度变化值ΔQ中存在大于或等于阈值的模块度变化值时,则确定将具有最大模块度变化值的候选社区,将具有最大模块度变化值的候选社区,作为第一目标社区,此时,该第一业务节点与第一目标社区内各业务节点联系最紧密。

而在各候选社区对应的模块度变化值不存在大于或等于阈值的模块度变化值时,即所有候选社区对应的模块度变化值均小于阈值时,表明该第一业务节点与所有已有业务节点均没有关联关系,因此,可以创建第一目标社区。

步骤104,将第一业务节点归入社区网络的第一目标社区。

本申请实施例中,在从候选社区中确定第一目标社区,或者创建第一目标社区后,可以将第一业务节点归入第二社区网络的第一目标社区。

本申请实施例的社区网络的处理方法,通过获取待添加至社区网络的第一业务节点;将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点;根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区;将第一业务节点归入社区网络的第一目标社区。由此,仅针对新增的业务节点执行社区划分过程,可以极大地节省计算的工作量,提升处理效率,可以适用于实时性较强的场景,提升该方法的适用性。

应当理解的是,将第一业务节点归入第一目标社区后,并不能确定该第一目标社区为第一业务节点所属的社区,比如,第一业务节点可能与第一目标社区中的部分业务节点联系紧密,但与第一目标社区中的剩余业务节点联系稀疏。因此,在本申请实施例的一种可能的实现方式中,为了提升社区网络划分结果的合理性,可以创建第二目标社区,根据将第一业务节点,以及在第一目标社区中第一业务节点相邻的各第三业务节点,以及各第三业务节点的关联节点中的至少一个或多个组合归入第二目标社区前后社区网络的模块度变化值,对第一业务节点、各第三业务节点和各关联节点中的至少一个或多个组合进行归属社区调整。

下面结合实施例二,对上述过程进行详细说明。

图2为本申请实施例二所提供的社区网络的处理方法的流程示意图。

如图2所示,该社区网络的处理方法可以包括以下步骤:

步骤201,获取待添加至社区网络的第一业务节点。

需要说明的是,步骤201的执行过程可以参见上述实施例中步骤101的执行过程,在此不做赘述。

步骤202,判断社区网络中是否存在与第一业务节点存在关联关系的业务节点,若是,执行步骤204,若否,执行步骤203。

本申请实施例中,可以查询以确定社区网络中是否存在与第一业务节点存在关联关系的业务节点,例如,当社区网络存储于图数据库时,可以查询图数据库,确定社区网络中是否存在与第一业务节点存在关联关系的业务节点。若社区网络中存在与第一业务节点存在关联关系的业务节点,则将与该第一业务节点存在关联关系的业务节点作为第二业务节点,并执行步骤204,若社区网络中不存在与第一业务节点存在关联关系的业务节点,则执行步骤203。

步骤203,在社区网络中创建第一业务节点所属的第一目标社区,并将第一业务节点添加至社区网络的第一目标社区。

本申请实施例中,当社区网络中不存在与第一业务节点存在关联关系的业务节点时,可以判定该业务节点属于单独的一个社区,因此,可以创建该第一业务节点所属的第一目标社区,并将第一业务节点添加至社区网络的第一目标社区,以及将该第一业务节点指向该第一目标社区对应的社区节点。

步骤204,将社区网络中各第二业务节点所从属的社区,作为候选社区。

其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点。

步骤205,根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区。

步骤206,将第一业务节点归入社区网络的第一目标社区。

本申请实施例中,步骤204至206可以分别采用本申请的各实施例中的任一种方式实现,本申请实施例并不对此作出限定,也不再赘述。

步骤207,创建第二目标社区。

本申请实施例中,可以在社区网络中,创建一个新的社区作为第二目标社区。

步骤208,根据将第一业务节点,以及在第一目标社区中第一业务节点相邻的各第三业务节点,以及各第三业务节点的关联节点中的至少一个或多个组合归入第二目标社区前后社区网络的模块度变化值,对第一业务节点、各第三业务节点和各关联节点中的至少一个或多个组合进行归属社区调整。

本申请实施例中,第三业务节点,是指第一目标社区中与第一业务节点相邻的各业务节点。

在本申请实施例的一种可能的实现中,可以将该第一业务节点归入第二目标社区,并确定将第一目标社区中与第一业务节点相邻的各第三业务节点,归入第二目标社区前后社区网络的模块度变化值,将各第三业务节点中归入第二目标社区后使得模块度变化值大于阈值的第三业务节点归入第二目标社区。

也就是说,可以将第一目标社区中与第一业务节点相邻的第三业务节点,与该第一业务节点划分到一个独立的第二目标社区中,并判断将各第三业务节点划分到第二目标社区前后社区网络的模块度变化值是否大于阈值,并将第三业务节点划分到第二目标社区后使得模块度变化值大于或等于阈值的第三业务节点,归入第二目标社区,以及将该第三业务节点指向该第二目标社区对应的社区节点。由此,可以实现从第一目标社区中分裂得到第二目标社区,使得第二目标社区中归入的为与第一业务节点联系紧密的各第三业务节点,提升社区划分结果的合理性。

需要说明的是,在所有第三业务节点划分到第二目标社区后均使得模块度变化值小于阈值时,则表明社区分裂后的划分结果不合理,此时,可以将该第一业务节点归入到第一目标社区中。

在本申请实施例的另一种可能的实现方式中,可以将该第一业务节点归入第二目标社区,并确定将第一目标社区中与第一业务节点相邻的各第三业务节点的关联节点归入第二目标社区前后社区网络的模块度变化值,将各第三业务节点的关联节点中归入第二目标社区后使得模块度变化值大于阈值的业务节点归入第二目标社区。

在本申请实施例的又一种可能的实现方式中,可以将该第一业务节点归入第二目标社区,并确定将第一目标社区中与第一业务节点相邻的各第三业务节点和各第三业务节点的关联节点,归入第二目标社区前后社区网络的模块度变化值,将各第三业务节点和各第三业务节点的关联节点中归入第二目标社区后使得模块度变化值大于阈值的业务节点归入第二目标社区。

作为一种可能的实现方式,可以将第一业务节点归入第二目标社区,将各第三业务节点作为候选节点,并将候选节点中归入第二目标社区后使得模块度变化值大于阈值的候选节点,作为扩展节点,并将扩展节点的关联节点更新为候选节点,重复执行将各候选节点中归入第二目标社区后使得模块度变化值大于阈值的扩展节点归入第二目标社区的步骤,直至候选节点或扩展节点为空。

作为另一种可能的实现方式,可以将第一业务节点归入第二目标社区,之后,首先将各第三业务节点中归入第二目标社区后使得模块度变化值大于阈值的业务节点,归入第二目标社区。而后,确定不属于第二目标社区的各第三业务节点的关联节点,将不属于第二目标社区的各第三业务节点的关联节点中归入第二目标社区后使得模块度变化值大于阈值的业务节点,归入第二目标社区。

作为又一种可能的实现方式,可以将第一业务节点归入第二目标社区,之后,首先将各第三业务节点中归入第二目标社区后使得模块度变化值大于阈值的业务节点,归入第二目标社区。而后,确定与第二目标社区中第三业务节点的关联节点相连,但不属于第二目标社区的第四业务节点,将第四业务节点中归入第二目标社区后使得模块度变化值大于阈值的业务节点,归入第二目标社区。

本申请实施例的社区网络的处理方法,通过创建第二目标社区;根据将第一业务节点,以及在第一目标社区中第一业务节点相邻的各第三业务节点,以及各第三业务节点的关联节点中的至少一个或多个组合归入第二目标社区前后社区网络的模块度变化值,对第一业务节点、各第三业务节点和各关联节点中的至少一个或多个组合进行归属社区调整。由此,可以提升社区划分结果的合理性。

在本申请实施例的一种可能的实现方式中,社区网络中具有关联关系的业务节点之间连接有边,边的权重用于指示关联关系的关联度,可以根据各业务节点之间的关联度,计算社区网络的模块度变化值。

下面结合实施例三,对上述过程进行详细说明。

图3为本申请实施例三所提供的社区网络的处理方法的流程示意图。

如图3所示,该社区网络的处理方法可以包括以下步骤:

步骤301,获取待添加至社区网络的第一业务节点。

步骤302,将社区网络中各第二业务节点所从属的社区,作为候选社区。

其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点。

本申请实施例中,步骤301至302可以分别采用本申请的各实施例中的任一种方式实现,本申请实施例并不对此作出限定,也不再赘述。

步骤303,根据第一业务节点与第二业务节点之间的关联度,更新社区网络的关联度参数;其中,关联度参数,是对社区网络中各边的权重求和得到。

例如,社区网络的关联度参数可以为上述公式(1)中的m,该m为社区网络中所有边的权重之和。

在本申请实施例的一种可能的实现中,为了避免获取社区网络的关联度参数时,对社区网络中所有业务节点进行重新计算,从而造成计算量较大的情况,可以在缓存中维护各业务节点之间的关联度,并维护该关联度参数,只在新增第一业务节点时,利用该第一业务节点与第二业务节点之间的关联度,更新社区网络的关联度参数,例如可以将之前的关联度参数,加上第一业务节点与第二业务节点之间的关联度,得到更新后的关联度参数。

需要说明的是,本申请仅以步骤303在步骤302之后执行进行示例,实际应用时,在确定社区网络中与第一业务节点存在关联关系的第二业务节点时即可执行步骤303,即步骤303还可以在步骤302之前执行,或者,步骤303还可以与步骤302并列执行,对此不作限制。

步骤304,根据社区网络的关联度参数,确定第一业务节点归入各候选社区前后社区网络的模块度变化值。

需要说明的是,社区划分过程中涉及多次将业务节点归入社区,引起模块度变化值的计算,故而模块度变化值的计算效率会直接影响算法的执行时间。本申请中,可以对模块度变化值的计算公式进行精简,从而避免多余的计算。具体地,由于在计算时,只关心模块度变化值是大于或者阈值,还是小于阈值,比如阈值等于0时,只关心模块度变化值是正数还是负数,因此,可以去除模块度变化值计算公式中对正负结果没有影响的项。由此,模块度变化值ΔQ的计算公式可以简化如下:

其中,k

从而,本申请中,可以确定第一业务节点归入候选社区后,候选社区内与第一业务节点连接的各相邻边的权重和,并确定第一业务节点归入候选社区后,候选社区内各业务节点连接的边的权重和与各相邻边的权重和之间的乘积,将关联度参数、各相邻边的权重和,以及乘积代入模块度变化值的计算公式,例如上述公式(3),以得到社区网络的模块度变化值。

步骤305,根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区。

本申请实施例中,可以获取将第一业务节点分别归入每个候选社区前后,社区网络的模块度变化值,判断各候选社区对应的模块度变化值中是否存在大于或等于阈值的模块度变化值,若存在大于或等于阈值的模块度变化值,则将具有最大模块度变化值的候选社区作为第一目标社区,若不存在大于或等于阈值的模块度变化值,即各候选社区对应的模块度变化值均小于阈值时,则创建第一目标社区。

步骤306,将第一业务节点归入社区网络的第一目标社区。

本申请实施例中,步骤306可以分别采用本申请的各实施例中的任一种方式实现,本申请实施例并不对此作出限定,也不再赘述。

同样地,针对上述实施例中的步骤208,可以根据第一业务节点与第二业务节点之间的关联度,更新社区网络的关联度参数,根据更新后的社区网络的关联度参数,确定将第一业务节点,以及在第一目标社区中第一业务节点相邻的各第三业务节点,以及各第三业务节点的关联节点中的至少一个或多个组合归入第二目标社区前后社区网络的模块度变化值。具体地,可以确定将第三业务节点或关联节点归入第二目标社区后,第二目标社区内与第三业务节点或关联节点连接的各相邻边的权重和,并确定将第三业务节点或关联节点归入第二目标社区后,第二目标社区内各业务节点连接的边的权重和与各相邻边的权重和之间的乘积,将社区网络的关联度参数、各相邻边的权重和,以及乘积代入模块度变化值的计算公式,即上述公式(3),得到社区网络的模块度变化值。

作为一种示例,参见图4,图4为本申请实施例的社区网络中社区划分过程示意图。可以使用图数据库存储一个二部图,二部图中包含两种类型节点:业务节点和社区节点。当一个新的业务节点i到来时,可以基于图数据库,获取该业务节点i与现有的图中的哪些业务节点具有关联关系。若该业务节点i与图中任一现有业务节点或已有业务节点均未具有关联关系,则可以判定该业务节点i应属于单独的一个社区,则创建新的社区节点,并将业务节点i指向新建的社区节点,计算结束。

当业务节点i与图中若干已有业务节点具有关联关系,则该业务节点i必然与这些关联节点所属的社区节点关联更为紧密,针对这些关联节点所属的社区节点,可以逐个计算业务节点i加入各社区节点前后所引起的图的模块度变化值ΔQ。若所有社区节点对应的ΔQ均为负值,则表示该业务节点i加入这些社区节点会引起图的模块度降低,因此,业务节点应该加入一个新建的单独社区,则可以创建新的社区节点,并将该业务节点i指向该新建的社区节点,计算结束。否则,则确定ΔQ最大的社区节点C1,确定业务节点i与该社区节点C1中的业务节点联系最紧密。

此时,并不能表示可以直接将该业务节点i划入社区节点C1即可,理由为,业务节点i可能与社区节点C1中的部分业务节点联系紧密,而与C1中的剩余业务节点联系稀疏。因此,为了提升社区划分结果的合理性,可以进一步确定,将业务节点i和C1中与该业务节点i相邻的业务节点单独组成一个社区,图的模块度的变化结果,若将业务节点i与C1中该业务节点i的相邻业务节点单独组成一个社区后,图的模块度变化值ΔQ为正数,则表示业务节点i与其相邻业务节点所组成的新的社区后,图的划分结果更加合理,即社区分裂后的划分结果更合理,因此,可以将该业务节点与C1中该业务节点i的相邻业务节点,组成一个新的社区节点C2。

社区节点C2组建后,可以再次判断与社区节点C2中的业务节点相连,但不属于社区节点C2内的业务节点,是否可以加入到社区节点C2中。具体地,可以逐个计算与社区节点C2中的业务节点相连,但不属于社区节点C2内的业务节点,从原有社区节点脱离,并归入至社区节点C2后,引起的图的模块度变化值ΔQ。若ΔQ为正数,则可以将对应的业务节点从原有社区节点脱离,并转移到社区节点C2。迭代上述过程,直到图的模块度达到稳定状态,则计算结束。经测算,该社区扩张过程,最多只要两次扩张即可达到稳定状态,可以极大地提升计算效率。

由此,基于图数据库(Graph Database)的方式,辅以对模块度计算项的优化,可实现实时地对新到来的业务节点计算其所属的社区,从而实现实时地计算,并获取社区划分的结果,提升该方法的适用性。

需要说明的是,在计算之前,如果存在一部分历史数据,则可以先运行离线的Louvain算法,并将社区划分结果导入到图数据库中,作为启动数据,启动数据可以提高上述社区划分算法,与离线的Louvain算法测算结果的一致性。然而,本申请也可以支持没有启动数据情况下,对社区的计算,提升该方法的适用性。

经测试,本申请实施例的社区网络的处理方法,对单个业务节点所属社区的计算,基本可以维持在500毫秒内完成,在部分极端的情况下,计算时间需要一秒,且计算结果与离线的Louvain算法划分的社区结果保持一致的相似度。本申请中,基于图数据库,通过计算模块度变化值的方式,模拟了离线的Louvain算法,判断新到来的业务节点所属的社区,从而将Louvain算法从离线的社区划分算法改进为实时的社区划分算法,可以极大的降低获取实时业务节点所在社区以及社区统计信息的时间延迟。

与上述图1至图3实施例提供的社区网络的处理方法相对应,本公开还提供一种社区网络的处理装置,由于本公开实施例提供的社区网络的处理装置与上述图1至图3实施例提供的社区网络的处理方法相对应,因此在社区网络的处理方法的实施方式也适用于本公开实施例提供的社区网络的处理装置,在本公开实施例中不再详细描述。

图5为本申请实施例四所提供的社区网络的处理装置的结构示意图。

如图5所示,该社区网络的处理装置500可以包括:获取模块510、确定模块520、处理模块530以及归入模块540。

其中,获取模块510,用于获取待添加至社区网络的第一业务节点。

确定模块520,用于将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点。

处理模块530,用于根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区。

归入模块540,用于将第一业务节点归入社区网络的第一目标社区。

进一步地,在本申请实施例的一种可能的实现方式中,该社区网络的处理装置500还可以包括:

创建模块,用于创建第二目标社区。

调整模块,用于根据将第一业务节点,以及在第一目标社区中第一业务节点相邻的各第三业务节点,以及各第三业务节点的关联节点中的至少一个或多个组合归入第二目标社区前后社区网络的模块度变化值,对第一业务节点、各第三业务节点和各关联节点中的至少一个或多个组合进行归属社区调整。

进一步地,在本申请实施例的一种可能的实现方式中,处理模块530,具体用于:获取将第一业务节点分别归入每个候选社区前后,社区网络的模块度变化值;若各候选社区对应的模块度变化值中存在大于或等于阈值的模块度变化值,则将具有最大模块度变化值的候选社区作为第一目标社区;若各候选社区对应的模块度变化值均小于阈值,则创建第一目标社区。

进一步地,在本申请实施例的一种可能的实现方式中,该社区网络的处理装置500还可以包括:

添加模块,用于若第一业务节点与社区网络中各业务节点均不存在关联关系,则在社区网络中创建第一业务节点所属的第一目标社区,并将第一业务节点添加至社区网络的第一目标社区。

进一步地,在本申请实施例的一种可能的实现方式中,调整模块,具体用于:将第一业务节点归入第二目标社区;将各第三业务节点作为候选节点;将各候选节点中归入第二目标社区后使得模块度变化值大于阈值的扩展节点归入第二目标社区,并将扩展节点的关联节点更新为候选节点,重复执行将各候选节点中归入第二目标社区后使得模块度变化值大于阈值的扩展节点归入第二目标社区的步骤,直至候选节点或扩展节点为空。

进一步地,在本申请实施例的一种可能的实现方式中,社区网络中具有关联关系的业务节点之间连接有边,边的权重,用于指示关联关系的关联度;该社区网络的处理装置500还可以包括:

更新模块,用于根据第一业务节点与第二业务节点之间的关联度,更新社区网络的关联度参数;其中,关联度参数,是对社区网络中各边的权重求和得到。

第一计算模块,用于根据社区网络的关联度参数,确定第一业务节点归入各候选社区前后社区网络的模块度变化值。

进一步地,在本申请实施例的一种可能的实现方式中,第一计算模块,具体用于:确定第一业务节点归入候选社区后,候选社区内与第一业务节点连接的各相邻边的权重和;确定第一业务节点归入候选社区后,候选社区内各业务节点连接的边的权重和与各相邻边的权重和之间的乘积;将关联度参数、各相邻边的权重和,以及乘积代入模块度变化值的计算公式,以得到模块度变化值。

进一步地,在本申请实施例的一种可能的实现方式中,社区网络中具有关联关系的业务节点之间连接有边,边的权重,用于指示关联关系的关联度;该社区网络的处理装置500还可以包括:

第二计算模块,用于确定将第三业务节点或关联节点归入第二目标社区后,第二目标社区内与第三业务节点或关联节点连接的各相邻边的权重和,并确定将第三业务节点或关联节点归入第二目标社区后,第二目标社区内各业务节点连接的边的权重和与各相邻边的权重和之间的乘积,将社区网络的关联度参数、各相邻边的权重和,以及乘积代入模块度变化值的计算公式,以得到模块度变化值;其中,关联度参数,是对社区网络中各边的权重求和得到。

进一步地,在本申请实施例的一种可能的实现方式中,社区网络存储于图数据库,图数据库中存储有社区网络中的各业务节点、社区网络中的各社区对应的社区节点、各社区节点与对应社区内各业务节点之间的关联关系、社区网络中各业务节点之间的关联关系。

本申请实施例的社区网络的处理装置,通过获取待添加至社区网络的第一业务节点;将社区网络中各第二业务节点所从属的社区,作为候选社区;其中,第二业务节点为社区网络中与第一业务节点存在关联关系的业务节点;根据第一业务节点归入各候选社区前后社区网络的模块度变化值,从候选社区中确定第一目标社区,或者创建第一目标社区;将第一业务节点归入社区网络的第一目标社区。由此,仅针对新增的业务节点执行社区划分过程,可以极大地节省计算的工作量,提升处理效率,可以适用于实时性较强的场景,提升该方法的适用性。

为了实现上述实施例,本申请还提出一种计算机设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时,实现如本申请前述实施例提出的社区网络的处理方法。

为了实现上述实施例,本申请还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请前述实施例提出的社区网络的处理方法。

为了实现上述实施例,本申请还提出一种计算机程序产品,当计算机程序产品中的指令处理器执行时,执行如本申请前述实施例提出的社区网络的处理方法。

图6示出了适于用来实现本申请实施方式的示例性计算机设备的框图。图6显示的计算机设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图6所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图6未显示,通常称为“硬盘驱动器”)。尽管图6中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(Compact Disc Read OnlyMemory;以下简称:CD-ROM)、数字多功能只读光盘(Digital Video Disc Read OnlyMemory;以下简称:DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network;以下简称:LAN),广域网(Wide Area Network;以下简称:WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的社区网络的处理方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

技术分类

06120113806671