CN108011735B - 社区发现方法及装置 - Google Patents
社区发现方法及装置 Download PDFInfo
- Publication number
- CN108011735B CN108011735B CN201610954505.0A CN201610954505A CN108011735B CN 108011735 B CN108011735 B CN 108011735B CN 201610954505 A CN201610954505 A CN 201610954505A CN 108011735 B CN108011735 B CN 108011735B
- Authority
- CN
- China
- Prior art keywords
- community
- nodes
- node
- small
- communities
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000001514 detection method Methods 0.000 claims description 18
- 238000012163 sequencing technique Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000005192 partition Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000001914 filtration Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009194 climbing Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000007670 refining Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/14—Network analysis or design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/01—Social networking
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5061—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the interaction between service providers and their network customers, e.g. customer relationship management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5061—Network service management, e.g. ensuring proper service fulfilment according to agreements characterised by the interaction between service providers and their network customers, e.g. customer relationship management
- H04L41/5064—Customer relationship management
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- General Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Economics (AREA)
- Computing Systems (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Primary Health Care (AREA)
- Strategic Management (AREA)
- Tourism & Hospitality (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种社区发现方法及装置,属于计算机技术与互联网技术领域。所述方法包括:根据预设社区发现算法对社会网络中的网络节点划分社区,并得到n个小社区以及每个小社区的标签;n为大于等于2的整数,预设社区发现算法划分社区的准确度高于预设阈值;根据标签传播算法更新社区节点的标签,社区节点为n个小社区中的网络节点,社区节点的初始标签为社区节点所属小社区的标签;将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n;解决了现有技术中划分得到的社区的粒度较小,进而无法满足社区划分需求的问题;达到了在保证社区的准确度的同时,又可以将小社区合并为大社区进而使得得到的社区的粒度符合划分需求的效果。
Description
技术领域
本发明实施例涉及计算机技术与互联网技术领域,特别涉及一种社区发现方法及装置。
背景技术
社区发现,是指将社会网络划分成不同的社区,使得同一社区内部的用户关系连接紧密,而社区与社区指间的关系连接稀疏。
现有的一种社区发现方法包括:服务器根据SCD(Scalable CommunityDetection,可扩展的社区检测)算法对社会网络划分社区,并得到多个社区。其中,社会网络是指诸如脸书、微博、校园网、即时通信应用程序等关系网络中的至少一种。
由于SCD算法基于网络中的三角形,划分出来的社区内部链接紧密,具备一定的准确度,但是由于其划分社区过于精细,并不适用于很多场景的需求。比如,以社会网络为校园网为例,划分后的社区通常小至用户在社团中所属的部门,而对于校园网来说,用户通常期望以学生阶段如初中同学、高中同学、大学同学来划分,因此显而易见的,上述划分方式并不满足用户需求。
发明内容
为了解决现有技术中存在的问题,本发明实施例提供了一种社区发现方法及装置。技术方案如下:
根据本发明实施例的第一方面,提供一种社区发现方法,该方法包括:
根据预设社区发现算法对社会网络中的网络节点划分社区,并得到n个小社区以及每个小社区的标签;n为大于等于2的整数,所述预设社区发现算法划分社区的准确度高于预设阈值;
根据标签传播算法更新社区节点的标签,所述社区节点为所述n个小社区中的网络节点,所述社区节点的初始标签为所述社区节点所属小社区的标签;
将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n。
根据本发明实施例的第二方面,提供一种社区发现装置,该装置包括:
划分模块,用于根据预设社区发现算法对社会网络中的网络节点划分社区,得到n个小社区以及每个小社区的标签;n为大于等于2的整数,所述预设社区发现算法划分社区的准确度高于预设阈值;
更新模块,用于根据标签传播算法更新社区节点的标签,所述社区节点为所述n个小社区中的网络节点,所述社区节点的初始标签为所述社区节点所属小社区的标签;
合并模块,用于将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n。
本发明实施例提供的技术方案带来的有益效果是:
通过在划分得到n个小社区之后,根据标签传播算法更新小社区中的社区节点的标签,进而将标签相同的社区节点划分至一个大社区,得到m个大社区,m<n;也即将初步划分得到的小社区进行合并,进而得到数量更少的大社区,解决了现有技术中划分得到的社区的粒度较小,进而无法满足某些场景的需求的问题;达到了在保证划分得到的社区的准确度的同时,又可以将小社区合并为大社区进而使得得到的社区的粒度符合划分需求的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明各个实施例提供的社区发现方法所涉及的算法架构图;
图2是本发明一个实施例提供的社区发现方法的流程图;
图3是本发明一个实施例提供的更新社区节点的标签的方法流程图;
图4是本发明另一实施例提供的社区发现方法中通过社区发现算法划分社区的示意图;
图5是本发明另一实施例提供的社区发现装置的结构示意图;
图6是本发明一个实施例提供的服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明各个实施例的社区发现方法可以用于服务器中,该服务器可以为一台服务器,也可以为由多台服务器组成的服务器集群,对此并不做限定。在各个实施例中,该服务器用于将社会网络划分为准确度高于预设阈值的至少两个社区,然后通过更新社区中的社区节点的标签的方式来将划分得到的小社区合并为大社区,进而最终使得得到的社区在准确度有所保证的前提下划分粒度仍然可以满足社区划分需求。其中,上述所说的社会网络是指诸如脸书、微博、校园网、即时通信应用程序等关系网络中的至少一种,并且社会网络中的各个节点即为对应的各个网络用户。
实际实现时,服务器可以通过社区发现算法划分得到社会网络中的n个小社区,然后通过标签传播算法更新得到的小社区中的社区节点,进而最终得到m个大社区,m<n。因此,请参考图1,其示出了本发明各个实施例所涉及的社区发现方法的算法框架示意图。
请参考图2,其示出了本发明一个实施例提供的社区发现方法的方法流程图,如图2所示,该社区发现方法可以包括:
步骤201,根据预设社区发现算法对社会网络中的网络节点划分社区,得到n个小社区以及每个小社区的标签,n为大于等于2的整数。
各个社区发现算法在发现社区时可能会存在一定的误差,其并非完全准确,也即每种社区发现算法均具备一定的准确度,而本实施例选取的预设社区发现算法为划分准确度高于预设阈值的发现算法。由于通常情况下,社区发现算法发现社区的准确度越高,其划分的社区相应的也越小,因此,本实施例所说的预设社区发现算法对社区的划分粒度通常小于预设粒度。以粒度为:同学>大学同学>学生会>部门>组别为例,预设粒度可以为其中某一种如学生会。具体的,该预设社区发现算法可以为诸如SCD算法以及派系过滤算法中的任一种。
划分得到的每个小社区中包括至少一个社区节点,本实施例对此并不做限定。并且,社区中的每个社区节点的标签即为该小社区的标签。其中,小社区的标签可以为大学同学、同事、家人等等。
比如,划分得到的小社区包括A、B、C、D,每个小社区的标签为A’、B’、C’和D’,其中A小社区中包括社区节点A1、A2、A3和A4,B小社区中包括节点B1、B2和B3,C小社区中包括社区节点C1、C2、C3、C4、C5和C6,D小社区中包括社区节点D1和D2,则社区节点A1、A2、A3和A4的初始标签即为A’,社区节点B1、B2和B3的初始标签即为B’,社区节点C1、C2、C3、C4、C5和C6的初始标签即为C’,社区节点D1和D2的初始标签即为D’。上述只是以每个小社区中包括几个社区节点来举例,实际实现时,每个小社区中还可以包括几十、几百甚至上千个社区节点,对此并不做限定。
步骤202,遍历每个社区节点,获取第一数量,第一数量为该社区节点所属小社区中的社区节点的数量。
为了后续步骤的执行,对于每个社区节点,服务器可以获取第一数量。
比如,以社区节点A1为例,服务器可以获取A1所在的社区也即小社区A中包括的社区节点的数量4。又比如,对于社区节点C2,服务器可以获取C2所在的社区也即小社区C中的社区节点的数量5。
步骤203,获取社区节点的相邻社区节点所属小社区中包括的与该社区节点相邻的相邻社区节点的数量,选择其中的最大值作为第二数量。
在社会网络中,不同社区节点之间可能存在相邻关系,而为了后续步骤的执行,对于每个社区节点,服务器可以先统计候选社区中包括的与该社区节点相邻的相邻社区节点的数量,然后从中选择最大值作为第二数量。其中,候选社区是指该社区节点的相邻社区节点所属的小社区。
比如,仍然以社区节点A1为例,社区节点A1与社区节点C1相邻,则服务器可以获取C1所属的社区也即小社区C中包括的A1的相邻节点的数量如5(分别为C1、C2、C3、C4和C5)。
本实施例只是以先执行步骤202后执行步骤203来举例,可选地,服务器还可以同时执行步骤202和步骤203,或者先执行步骤203后执行步骤202,对此并不做限定。
步骤204,若第二数量大于第一数量,则将社区节点的标签更新为第二数量所对应的小社区的标签,第二数量所对应的小社区是指包括的与该社区节点相邻的相邻社区节点的数量为第二数量的小社区。
在服务器获取到第一数量和第二数量之后,服务器可以检测第二数量是否大于第一数量,若检测结果为大于,则说明该社区节点的相邻社区节点中很大部分均在第二数量所对应的候选社区中,此时,该社区节点可以被划分至候选社区的可能性比较大,因此为了合并社区服务器可以将该社区节点的标签更新为第二数量所对应的候选社区的标签。
比如,仍然以社区节点A1为例,服务器获取到的第一数量为4,第二数量为5,第二数量大于第一数量,则此时,服务器可以将A1的标签由A’更新为小社区C的标签C’。
需要说明的是,若第二数量不大于第一数量,则服务器不对该社区节点的标签做任何处理。比如,获取到的第二数量为2,则服务器不更新社区节点A1的标签,也即其标签仍然为A’。
步骤205,在遍历各个社区节点之后,检测各个社区节点中标签发生变化的社区节点的数量是否达到数量阈值。
具体的,服务器可以在步骤204中每次更新社区节点的标签时进行计数,并在遍历完各个社区节点之后,获取计数得到的数值,检测该数值是否达到数量阈值。其中,数量阈值为用户预先设定的数值,该数量阈值小于预设数值。并且,通常情况下,该数量阈值可以为0,对此并不做限定。
步骤206,若检测结果为标签发生变化的社区节点的数量达到数量阈值,则再次遍历各个社区节点。
如果服务器的检测结果为标签发生变化的社区节点的数量达到数量阈值,则说明,各个社区节点的标签还未趋于稳定,仍然有继续传播的空间,此时服务器可以再次遍历各个社区节点,也即服务器再次执行步骤202。
步骤207,若检测结果为标签发生变化的社区节点的数量未达到数量阈值,则将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n。
若检测结果为未达到数量阈值,则此时说明各个社区节点的标签基本已经趋于稳定,此时服务器可以结束对社区节点的标签的更新。并且此后将标签相同的社区节点划分至一个大社区,并得到m个大社区。
实际实现时,服务器每更新一个社区节点的标签之后,可以将该社区节点划分至更新后的标签所对应的社区;当然,服务器还可以在遍历每个社区节点之后,统一按照社区节点的标签将标签相同的社区节点划分至一个大社区,本实施例对此并不做限定。
在本实施例的一个应用场景中,以社会网络为校园网,预设社区发现算法为SCD算法为例,服务器根据SCD算法划分得到基于所在社团的部门的小社区之后,对于某个部门的用户,由于其好友也即其大多数的相邻节点在某个班级的社区中,因此,服务器可以将在部门的小社区中的用户合并至班级的社区中,类似的,可以将处于班级社区中的用户合并至学生阶段如大学的社区中,这样,服务器即可得到划分准确且粒度较大的大社区。
需要补充说明的一点是,在遍历每个社区节点之前,还可以先对各个社区节点进行排序,比如,将各个社区节点按照随机顺序排序,或者,将各个社区节点按照各个社区节点的重要程度由高到低的顺序进行排序。并且,当按照重要程度排序时,在步骤202之前,还可以执行如下步骤:按照各个社区节点的重要程度由高到低的顺序对各个社区节点进行排序;相应的,步骤202可以具体实现为:按照排序后的各个社区节点的顺序,对每个社区节点,获取第一数量。
其中,按照各个社区节点的重要程度由高到低的顺序对各个社区节点进行排序的步骤可以具体包括如下三种可能的实现方式:
第一种,按照每个社区节点的聚类系数(Clustering Coefficient)由大到小的顺序对N个社区节点进行排序。
在排序过程中,若多个社区节点的聚类系数相同,则对于这多个社区节点,服务器按照各个社区节点的度从大到小的顺序排序。其中,节点的度是指与社区节点相邻的相邻社区节点的数量,比如,以社区节点A1为例,其相邻的社区节点包括C1、C2、C3、C4和C5,则社区节点A的度为5。另外,当社区节点的聚类系数为1且度小于预设度数时,将这些社区节点排在最后,且各个社区节点间按照度由大到小的顺序排序,本实施例对此并不做限定。
第二种,根据Pagerank算法对各个社区节点进行排序。
第三种,按照各个节点的度由大到小的顺序对各个社区节点进行排序。
实际实现时,服务器还可以通过其他方法对各个社区节点进行排序,本实施例对此并不做限定。
需要补充说明的另一点是,步骤205和步骤206为可选步骤,实际实现时,服务器在步骤204之后,可以直接执行步骤207,对此并不做限定。
另外,本实施例也只是以通过上述标签传播方法更新社区节点的标签来举例,实际实现时,服务器还可以通过其他标签传播方法更新社区节点的标签,本实施例对此并不做赘述。
需要补充说明的再一点是,本实施例所说的小社区是指通过预设社区发现算法划分得到的社区,大社区是指根据标签传播算法更新小社区中的节点的标签之后,按照标签相同重新划分得到的社区,其并非是说大社区中包括的社区节点的个数一定大于小社区中包括的社区节点的个数,这也就是说得到的m个大社区中可能存在某个大社区中包括的社区节点的个数小于n个小社区中的某个小社区中包括的社区节点的个数,本实施例对此并不做限定。
综上所述,本实施例提供的社区发现方法,通过在划分得到n个小社区之后,根据标签传播算法更新小社区中的社区节点的标签,进而将标签相同的社区节点划分至一个大社区,得到m个大社区,m<n;也即将初步划分得到的小社区进行合并,进而得到数量更少的大社区,解决了现有技术中划分得到的社区的粒度较小,进而无法满足某些场景的需求的问题;达到了在保证划分得到的社区的准确度的同时,又可以将小社区合并为大社区进而使得得到的社区的粒度符合划分需求的效果。
同时,本实施例在进行标签传播时,只有在第二数量大于第一数量时,才会将社区节点的标签更新为第二数量所对应的候选社区的标签,保证了根据更新后的标签重新划分社区之后社区划分的准确度。同时,通过将社区节点的标签更新为大于第一数量的第二数量所对应的候选社区的标签,避免了现有的标签传播时存在一定的随机性的问题,减少了划分后的社区的波动。
此外,更新标签的过程中,在遍历社区节点时,可以遍历按照社区节点的重要程度由高到低的顺序排列后的社区节点,进一步保证了合并后的社区的准确度。
在上述实施例中,假设社区节点的总量为N个,则请参考图3,步骤202至步骤204可以具体实现为如下步骤:
步骤301,对于N个社区节点中的第i个社区节点,获取第一数量,第一数量为第i个社区节点所属小社区中的社区节点的总数量,0≤i≤N-1,i的起始值为0。
步骤302,获取第i个社区节点的相邻社区节点所属小社区中包括的与该第i个社区节点相邻的相邻社区节点的数量,选择其中的最大值最为第二数量。
步骤301与上述步骤202类似,步骤302与步骤203类似,在此均不再赘述。
步骤303,若第二数量大于第一数量,则将第i个社区节点的标签更新为第二数量所对应的小社区的标签,并在i<N-1时令i=i+1,并再次执行对于N个社区节点中的第i个社区节点,获取第一数量的步骤。
在更新第i个社区节点的标签之后,为了遍历N个社区节点中的下一个社区节点,服务器可以在i<N-1时令i=i+1,并再次执行步骤301,在此步骤赘述。
而如果更新第i个社区节点的标签后,i=N-1,则说明N个社区节点已全部遍历完毕,此时服务器可以执行步骤206。
步骤304,若第二数量不大于第一数量,则在i<N-1时令i=i+1,并再次执行对于N个社区节点中的第i个社区节点,获取第一数量的步骤。
而如果第二数量不大于第一数量,则由于此时不需要更新第i个社区节点的标签,此时,为了遍历N个社区节点中的下一个社区节点,服务器可以在i<N-1时令i=i+1,并再次执行步骤301,在此步骤赘述。
与步骤303类似,若i=N-1,则服务器可以执行步骤206。
上述实施例中的社区发现算法可以为SCD算法以及派系过滤算法中的至少一种,下述以社区发现算法为SCD算法为例,则步骤201可以包括:
第一,社区初始化。
WCC(Weighted Community Clustering,加权社区聚类系数)是基于三角形的社区划分评价指标。其可有如下公式推导出来:
公式(1)用于计算节点x关于社区C的WCC值。其中,t(x,C)表示在社区C中与节点x相关的三角形数量,vt(x,C)表示所有能与节点x构成三角形的节点中属于社区C的节点数量。|C\{x}|+vt(x,V\C)表示社区C中不包括x在内的其余节点。
公式(2)用于计算单个社区的WCC值。
公式(3)用于计算一个社区划分的总体WCC值。其中P={C1,C2,...Cn},V代表网络中的节点。WCC值越大,代表划分效果越好。
第二,SCD算法将以公式(3)的WCC值作为目标函数,通过贪心算法来优化WCC值,得到一个局部最优划分。SCD主要分为两个步骤:
(1)预聚类。
预聚类之前,需要对社区进行剪枝。SCD算法将网络中不在任意三角形的边都移除。然后计算每个节点的聚类系数,节点v的聚类系数公式如下:
其中,j表示节点v的所有相邻节点之间互相连接的边的数量,k表示节点v的所有相邻节点的数量。
然后根据每个节点的聚类系数倒序排序,若聚类系数相同,则按节点的度从大到小排序。在这里我们考虑一个特殊情况,当一个节点的聚类系数为1且度为2时,将其放在序列的最后,最终得到节点序列S。
预聚类开始。按序遍历S中每个节点,对于任一还没被访问过的节点v,为v及其未被访问过的邻居节点创建一个新社区C,标记C中节点为已访问,并把C加到划分P中。直到所有节点都标记为已访问,迭代结束,得到一个预聚类的划分P。
(2)细化聚类。
在预聚类得到划分P后,使用爬山法来优化WCC值。首先遍历每个节点,计算每个节点的best_movement。再对每个节点执行best_movement,得到新的划分P’。计算P’的新WCC值,若新的WCC值相对旧的划分P的WCC值的提升大于一个阈值α(α可取0.1),则重新计算新划分P’的best_movement,直到前后两次划分的WCC值提升小于阈值α才结束。请参考图4,其示出了具体的方法流程图。
其中,best_movement是指对每个节点的最佳操作方式,分别有No_Action、Remove和Transfer三种候选。No_Action是指不执行任何操作;Remove是指将一个节点从当前社区移除,使其成为一个孤立的节点;Transfer是指将一个节点从当前社区移动至另外一个社区。
具体的,服务器计算best_movement之前,首先要计算每种操作对WCC值的增益,具体的:
A、记WCCI(v,C1)为将孤立节点v插入到社区C1后对整体WCC值的提升情况。假设P={C1,C2,...Ck,{v}}和P'={C'1,C2,...Ck}都是图G(V,E)的划分,且C'1=C1∪{v},有:
B、记WCCR(v,C1)计算将节点v从社区C1中移除后整体WCC值的提升情况。假设P={C1,C2,...Ck}和P'={C'1,C2,...Ck,{v}}都是图G(V,E)的划分,且C1=C'1∪{v},有:
WCC(P')-WCC(P)=WCCR(v,C1)=-WCCI(v,C'1) (6)
C、记WCCT(v,C1,C2)计算将节点v从社区C1转移到社区C2后整体WCC值的提升情况。假设P={C1,C2,...Ck}和P'={C'1,C2,...C'k}都是图G(V,E)的划分,且C1=C'1∪{v}和C'k=Ck∪{v},有:
WCC(P')-WCC(P)=WCCT(v,C1,Ck)=-WCCI(v,C'1)+WCCI(v,Ck) (7)
此后,对于V中的每个节点v,服务器首先计算将它从当前社区移除后的提升WCCR(v,C1),然后从它的邻居所属社区获得它的潜在候选社区,计算每个候选社区相应的转移提升值WCCT(v,C1,C2),选取提升最大的并作标记。然后从WCCR(v,C1)和最大WCCT(v,C1,C2)中选取最优操作,即Remove或Transfer。若两者对WCC值的提升均为负,则保持v在原社区不变(No_Action)。
经过上述步骤之后,服务器即可划分得到多个小社区,之后,服务器可以为每个社区分配一个对应的标签。
请参考图5,其示出了本发明一个实施例提供的社区发现装置的结构示意图,如图5所示,该社区发现装置可以包括:划分模块510、更新模块520和合并模块530。其中:
划分模块510,用于根据预设社区发现算法对社会网络中的网络节点划分社区,得到n个小社区以及每个小社区的标签;n为大于等于2的整数,所述预设社区发现算法划分社区的准确度高于预设阈值;
更新模块520,用于根据标签传播算法更新社区节点的标签,所述社区节点为所述n个小社区中的网络节点,所述社区节点的初始标签为所述社区节点所属小社区的标签;
合并模块530,用于将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n。
综上所述,本实施例提供的社区发现装置,通过在划分得到n个小社区之后,根据标签传播算法更新小社区中的社区节点的标签,进而将标签相同的社区节点划分至一个大社区,得到m个大社区,m<n;也即将初步划分得到的小社区进行合并,进而得到数量更少的大社区,解决了现有技术中划分得到的社区的粒度较小,进而无法满足某些场景的需求的问题;达到了在保证划分得到的社区的准确度的同时,又可以将小社区合并为大社区进而使得得到的社区的粒度符合划分需求的效果。
基于上述实施例提供的社区发现装置,可选的,所述更新模块520,包括:
第一获取单元,用于遍历每个社区节点,获取第一数量,所述第一数量为所述社区节点所属社区中的社区节点的数量;
第二获取单元,用于获取所述社区节点的相邻社区节点所属小社区中包括的与所述社区节点相邻的相邻社区节点的数量,选择其中的最大值作为第二数量;
更新单元,用于在所述第二获取单元获取到的所述第二数量大于所述第一获取单元获取到的所述第一数量,将所述社区节点的标签更新为所述第二数量所对应的小社区的标签,所述第二数量所对应的小社区是指包括的与所述社区节点相邻的相邻社区节点的数量为所述第二数量的小社区。
可选的,所述装置还包括:
检测模块,用于在遍历每个社区节点之后,检测各个社区节点中标签发生变化的社区节点的数量是否达到数量阈值;
第一结果模块,用于在所述检测模块的检测结果为标签发生变化的社区节点的数量达到所述数量阈值时,再次遍历每个社区节点;
第二结果模块,用于在所述检测模块的检测结果为标签发生变化的社区节点的数量未达到所述数量阈值时,结束遍历。
可选的,所述装置还包括:
排序模块,用于在所述第一获取单元遍历每个社区节点,获取第一数量之前,按照各个社区节点的重要程度由高到低的顺序对所述各个社区节点进行排序;
所述第一获取单元,还用于按照排序后的各个社区节点的顺序,对每个社区节点,获取所述第一数量。
可选的,所述排序模块,还用于:
按照每个社区节点的聚类系数由大到小的顺序对所述各个社区节点进行排序;
或者,
根据Pagerank算法对所述各个社区节点进行排序;
或者,
按照各个社区节点的度由大到小的顺序对所述各个社区节点进行排序。
需要说明的是:上述实施例提供的社区发现装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的社区发现装置和社区发现方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中的存储器中所包含的计算机可读存储介质;也可以是单独存在,未装配入终端中的计算机可读存储介质。该计算机可读存储介质存储有一个或者一个以上程序,该一个或者一个以上程序被一个或者一个以上的处理器用来执行资源转移监控方法。
请参考图6,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的社区发现方法。具体来讲:
所述服务器600包括中央处理单元(CPU)601、包括随机存取存储器(RAM)602和只读存储器(ROM)603的系统存储器604,以及连接系统存储器604和中央处理单元601的系统总线605。所述服务器600还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)606,和用于存储操作系统613、应用程序614和其他程序模块615的大容量存储设备607。
所述基本输入/输出系统606包括有用于显示信息的显示器608和用于用户输入信息的诸如鼠标、键盘之类的输入设备609。其中所述显示器608和输入设备609都通过连接到系统总线605的输入输出控制器610连接到中央处理单元601。所述基本输入/输出系统606还可以包括输入输出控制器610以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器610还提供输出到显示屏、打印机或其他类型的输出设备。
所述大容量存储设备607通过连接到系统总线605的大容量存储控制器(未示出)连接到中央处理单元601。所述大容量存储设备607及其相关联的计算机可读介质为服务器600提供非易失性存储。也就是说,所述大容量存储设备607可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器604和大容量存储设备607可以统称为存储器。
根据本发明的各种实施例,所述服务器600还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器600可以通过连接在所述系统总线605上的网络接口单元611连接到网络612,或者说,也可以使用网络接口单元611来连接到其他类型的网络或远程计算机系统(未示出)。
所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述社区发现方法的指令。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”(“a”、“an”、“the”)旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种社区发现方法,其特征在于,所述方法由一台服务器执行,或者由多台服务器组成的服务器集群执行,所述方法包括:
根据预设社区发现算法对社会网络中的网络节点划分社区,并得到n个小社区以及每个小社区的标签;n为大于等于2的整数,当前划分社区的准确度高于预设阈值,对社区的划分粒度小于预设粒度;
按照每个社区节点的聚类系数由大到小的顺序对各个社区节点进行排序,在排序过程中,若多个社区节点的聚类系数相同,则对于所述多个社区节点,按照各个社区节点的度由大到小的顺序对所述各个社区节点进行排序,其中,社区节点的度是指与所述社区节点相邻的相邻社区节点的数量,社区节点的聚类系数为其中,j表示第i个社区节点的所有相邻社区节点之间相互连接的边的数量,k表示第i个社区节点的所有相邻社区节点的数量;
按照排序后的各个社区节点的顺序,遍历每个社区节点,获取第一数量,所述第一数量为所述社区节点所属小社区中的社区节点的数量,所述社区节点为所述n个小社区中的网络节点,所述社区节点的初始标签为所述社区节点所属小社区的标签;获取所述社区节点的相邻社区节点所属小社区中包括的与所述社区节点相邻的相邻社区节点的数量,选择其中的最大值作为第二数量,所述社区节点对应所述社会网络中的网络用户,所述社区节点的相邻社区节点对应所述社区节点对应的网络用户的好友;
若所述第二数量大于所述第一数量,则将所述社区节点的标签更新为所述第二数量所对应的小社区的标签,若所述第二数量不大于所述第一数量,则不对所述社区节点的标签进行更新,所述第二数量所对应的小社区是指包括的与所述社区节点相邻的相邻社区节点的数量为所述第二数量的小社区;
所述方法还包括:
每次更新社区节点的标签时进行计数,在遍历每个社区节点之后,获取计数得到的各个社区节点中标签发生变化的社区节点的数量,检测所述数量是否达到数量阈值;
若检测结果为标签发生变化的社区节点的数量达到所述数量阈值,表示所述各个社区节点的标签还未趋于稳定,则再次遍历每个社区节点;
若检测结果为标签发生变化的社区节点的数量未达到所述数量阈值,则表示所述各个社区节点的标签已经趋于稳定,结束对所述各个社区节点的更新,将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n;
所述方法还包括:在遍历每个社区节点之后,按照所述每个社区节点的标签,将标签相同的社区节点划分至一个大社区,或者,每更新一个社区节点的标签之后,将所述社区节点划分至更新后的标签所对应的大社区;所述大社区的划分粒度大于所述小社区的划分粒度;
所述社会网络为校园网,所述小社区为所在社团的部门,所述大社区为所在班级,或者,所述小社区为所在班级,所述大社区为所在学生阶段,所述学生阶段包括中学和大学,所述班级的划分粒度大于所述部门的划分粒度,所述学生阶段的划分粒度大于所述班级的划分粒度。
2.一种社区发现装置,其特征在于,所述装置配置于服务器,或者配置于多台服务器组成的服务器集群,所述装置包括:
划分模块,用于:
根据预设社区发现算法对社会网络中的网络节点划分社区,并得到n个小社区以及每个小社区的标签;n为大于等于2的整数,当前划分社区的准确度高于预设阈值,对社区的划分粒度小于预设粒度;
排序模块,用于按照每个社区节点的聚类系数由大到小的顺序对各个社区节点进行排序,在排序过程中,若多个社区节点的聚类系数相同,则对于所述多个社区节点,按照各个社区节点的度由大到小的顺序对所述各个社区节点进行排序,其中,社区节点的度是指与所述社区节点相邻的相邻社区节点的数量,社区节点的聚类系数为其中,j表示第i个社区节点的所有相邻社区节点之间相互连接的边的数量,k表示第i个社区节点的所有相邻社区节点的数量;
更新模块,所述更新模块包括:
第一获取单元,用于按照排序后的各个社区节点的顺序,遍历每个社区节点,获取第一数量,所述第一数量为所述社区节点所属小社区中的社区节点的数量,所述社区节点为所述n个小社区中的网络节点,所述社区节点的初始标签为所述社区节点所属小社区的标签;
第二获取单元,用于获取所述社区节点的相邻社区节点所属小社区中包括的与所述社区节点相邻的相邻社区节点的数量,选择其中的最大值作为第二数量,所述社区节点对应所述社会网络中的网络用户,所述社区节点的相邻社区节点对应所述社区节点对应的网络用户的好友;
更新单元,用于在所述第二获取单元获取到的所述第二数量大于所述第一获取单元获取到的所述第一数量时,将所述社区节点的标签更新为所述第二数量所对应的小社区的标签,若所述第二数量不大于所述第一数量,则不对所述社区节点的标签进行更新,所述第二数量所对应的小社区是指包括的与所述社区节点相邻的相邻社区节点的数量为所述第二数量的小社区;
所述装置还包括:
检测模块,用于每次更新社区节点的标签时进行计数,在遍历每个社区节点之后,获取计数得到的各个社区节点中标签发生变化的社区节点的数量,检测所述数量是否达到数量阈值;
第一结果模块,用于在所述检测模块的检测结果为标签发生变化的社区节点的数量达到所述数量阈值,表示所述各个社区节点的标签还未趋于稳定,则再次遍历每个社区节点;
第二结果模块,用于在所述检测模块的检测结果为标签发生变化的社区节点的数量未达到所述数量阈值时,则表示所述各个社区节点的标签已经趋于稳定,结束对所述各个社区节点的更新; 合并模块,用于将标签相同的社区节点划分至一个大社区,并得到m个大社区,m<n;
所述装置还用于:在遍历每个社区节点之后,按照所述每个社区节点的标签,将标签相同的社区节点划分至一个大社区,或者,每更新一个社区节点的标签之后,将所述社区节点划分至更新后的标签所对应的大社区;所述大社区的划分粒度大于所述小社区的划分粒度;
所述社会网络为校园网,所述小社区为所在社团的部门,所述大社区为所在班级,或者,所述小社区为所在班级,所述大社区为所在学生阶段,所述学生阶段包括中学和大学,所述班级的划分粒度大于所述部门的划分粒度,所述学生阶段的划分粒度大于所述班级的划分粒度。
3.一种服务器,其特征在于,所述服务器包括一个或者一个以上处理器和存储器,所述存储器用于存储一个或者一个以上程序;所述一个或者一个以上程序被所述一个或者一个以上处理器用来执行如权利要求1所述的社区发现方法。
4.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者一个以上程序,所述一个或者一个以上程序被一个或者一个以上的处理器用来执行如权利要求1所述的社区发现方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610954505.0A CN108011735B (zh) | 2016-10-27 | 2016-10-27 | 社区发现方法及装置 |
PCT/CN2017/105956 WO2018077039A1 (zh) | 2016-10-27 | 2017-10-12 | 社区发现方法、装置、服务器及计算机存储介质 |
US16/310,920 US10846052B2 (en) | 2016-10-27 | 2017-10-12 | Community discovery method, device, server and computer storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610954505.0A CN108011735B (zh) | 2016-10-27 | 2016-10-27 | 社区发现方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108011735A CN108011735A (zh) | 2018-05-08 |
CN108011735B true CN108011735B (zh) | 2021-12-28 |
Family
ID=62048231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610954505.0A Active CN108011735B (zh) | 2016-10-27 | 2016-10-27 | 社区发现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108011735B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110738577B (zh) * | 2019-09-06 | 2022-02-22 | 平安科技(深圳)有限公司 | 社区发现方法、装置、计算机设备和存储介质 |
CN111182522B (zh) * | 2019-11-28 | 2022-10-25 | 北京明智和术科技有限公司 | 一种团伙确定方法、装置、电子设备及计算机存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893382A (zh) * | 2014-12-23 | 2016-08-24 | 天津科技大学 | 一种基于先验知识的微博用户群体划分方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990209B2 (en) * | 2012-09-06 | 2015-03-24 | International Business Machines Corporation | Distributed scalable clustering and community detection |
CN103327092A (zh) * | 2012-11-02 | 2013-09-25 | 中国人民解放军国防科学技术大学 | 一种信息网络上的社区发现方法和系统 |
CN105893381A (zh) * | 2014-12-23 | 2016-08-24 | 天津科技大学 | 一种基于半监督标签传播的微博用户群体划分方法 |
-
2016
- 2016-10-27 CN CN201610954505.0A patent/CN108011735B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893382A (zh) * | 2014-12-23 | 2016-08-24 | 天津科技大学 | 一种基于先验知识的微博用户群体划分方法 |
Non-Patent Citations (3)
Title |
---|
High Quality, Scalable and Parallel Community Detection for Large Real Graphs;Arnau Prat-Pérez等;《International Conference on World Wide Web》;20140411;第225-236页 * |
基于标签传播的实时社区发现算法研究;信楠;《中国优秀硕士学位论文全文数据库信息科技辑》;20140115;正文12-13页 * |
复杂网络中基于WCC 的并行可扩展社团挖掘算法;亚森·艾则孜等;《计算机应用与软件》;20160630;第37-43页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108011735A (zh) | 2018-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846052B2 (en) | Community discovery method, device, server and computer storage medium | |
US20240185133A1 (en) | Root cause discovery engine | |
US8990209B2 (en) | Distributed scalable clustering and community detection | |
US10409828B2 (en) | Methods and apparatus for incremental frequent subgraph mining on dynamic graphs | |
US10936765B2 (en) | Graph centrality calculation method and apparatus, and storage medium | |
CN107832407B (zh) | 用于生成知识图谱的信息处理方法、装置和可读存储介质 | |
CN110555172B (zh) | 用户关系挖掘方法及装置、电子设备和存储介质 | |
CN112765477B (zh) | 信息处理、信息推荐的方法和装置、电子设备和存储介质 | |
CN104077723B (zh) | 一种社交网络推荐系统及方法 | |
Patro et al. | Predicting protein interactions via parsimonious network history inference | |
KR20230031889A (ko) | 네트워크 토폴로지에서의 이상 탐지 | |
CN111274485A (zh) | 一种基于社区发现的个性化推荐方法 | |
Trivodaliev et al. | Exploring function prediction in protein interaction networks via clustering methods | |
US10313457B2 (en) | Collaborative filtering in directed graph | |
CN108011735B (zh) | 社区发现方法及装置 | |
Mercier et al. | Effective resistance against pandemics: Mobility network sparsification for high-fidelity epidemic simulations | |
CN110019845A (zh) | 一种基于知识图谱的社区演化分析方法及装置 | |
CN104572687A (zh) | 微博传播的关键用户识别方法和装置 | |
CN115292303A (zh) | 数据处理方法及装置 | |
WO2009107412A1 (ja) | グラフ構造推定装置、グラフ構造推定方法およびプログラム | |
Yucel et al. | Detection of network communities with memory-biased random walk algorithms | |
Liu et al. | Social Network Community‐Discovery Algorithm Based on a Balance Factor | |
CN114298203B (zh) | 数据分类的方法、装置、设备和计算机可读介质 | |
Reinthal et al. | Finding the densest common subgraph with linear programming | |
CN115759233B (zh) | 模型的训练方法、图数据处理方法、装置及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |