CN110110154B - 一种图文件的处理方法、装置及存储介质 - Google Patents

一种图文件的处理方法、装置及存储介质 Download PDF

Info

Publication number
CN110110154B
CN110110154B CN201810103371.0A CN201810103371A CN110110154B CN 110110154 B CN110110154 B CN 110110154B CN 201810103371 A CN201810103371 A CN 201810103371A CN 110110154 B CN110110154 B CN 110110154B
Authority
CN
China
Prior art keywords
nodes
node
sub
community
file
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
Application number
CN201810103371.0A
Other languages
English (en)
Other versions
CN110110154A (zh
Inventor
齐逸岩
黄俊深
成杰峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810103371.0A priority Critical patent/CN110110154B/zh
Publication of CN110110154A publication Critical patent/CN110110154A/zh
Application granted granted Critical
Publication of CN110110154B publication Critical patent/CN110110154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Tourism & Hospitality (AREA)
  • Economics (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • General Health & Medical Sciences (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种图文件的处理方法,包括:提取图文件并存储至持久化存储空间中,所述图文件包括社交网络的节点、连接所述节点的连接关系以及所述连接关系的权重值;根据所述图文件包括的节点的连接关系,将所述图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;将分割后的子图文件加载至内存空间;初始化所述内存空间所加载子图文件中的节点,并迭代计算所述内存空间所加载子图文件中节点的社区标签;根据迭代计算完成后得到的所述节点的社区标签,更新所述持久化存储空间中存储的图文件。本发明还提供了一种图文件的处理装置、以及存储介质。

Description

一种图文件的处理方法、装置及存储介质
技术领域
本发明涉及计算机应用技术,尤其涉及一种图文件的处理方法、装置及存储介质。
背景技术
在社交网络中,社区发现算法常用于检测社交网络中的社区结构,并可以进一步的挖掘感兴趣的社区或行为异常的用户群体。
现有的社区发现算法通常是将整个社交网络的数据存入内存,并进行迭代计算,但是,对于大规模的社交网络会产生内存不足无法计算的情况。
例如,在QQ好友关系社交网络中,总共有约19亿用户(即社交网络中的节点)和超过550亿条好友关系(即社交网络中节点的连接关系),若将这种大规模的QQ好友关系社交网络的数据存入内存中,则会对内存产生巨量的需求,实际应用中难以部署这样的硬件环境,即是部署也难以保证计算的效率。
发明内容
本发明实施例期望提供一种图文件的处理方法、装置及存储介质,能够对于社交网络的图文件进行资源集约型的高效计算。
为达到上述目的,本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种图文件的处理方法,包括:
提取图文件并存储至持久化存储空间中,所述图文件包括社交网络的节点、连接所述节点的连接关系以及所述连接关系的权重值;
根据所述图文件包括的节点的连接关系,将所述图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;
将分割后的子图文件加载至内存空间;
初始化所述内存空间所加载子图文件中的节点,并迭代计算所述内存空间所加载子图文件中节点的社区标签;
根据迭代计算完成后得到的所述节点的社区标签,更新所述持久化存储空间中存储的图文件。
本发明实施例还提供了一种图文件的处理装置,包括:
提取模块,用于提取图文件并存储至持久化存储空间中,所述图文件包括社交网络的节点、连接所述节点的连接关系以及所述连接关系的权重值;
分割模块,用于根据所述图文件包括的节点的连接关系,将所述图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;
加载模块,用于将分割后的子图文件加载至内存空间;
初始化模块,用于初始化所述内存空间所加载子图文件中的节点;
计算模块,用于迭代计算所述内存空间所加载子图文件中节点的社区标签;
更新模块,用于根据迭代计算完成后得到的所述节点的社区标签,更新所述持久化存储空间中存储的图文件。
上述方案中,所述加载模块,具体用于:
将所述分割后的子图文件中未迭代计算社区标签的子图文件,加载到所述内存空间中;
当所加载的子图文件迭代计算社区标签完成后,在所述内存空间中释放所加载的子图文件,并将未迭代计算社区标签的子图文件,加载到所述内存空间中。
上述方案中,所述初始化模块,具体用于:
为所述内存空间所加载子图文件中的各个节点分配差异化的社区标签;
根据所述节点所分配的社区标签,计算所述节点的初始化的第一权重和以及所述社区标签的初始化的第二权重和;
其中,所述第一权重和以及所述第二权重和用于计算所述节点的模块度;
其中,所述第一权重和为所述节点的连接关系的权重和,所述第二权重和为所述社区标签对应社区的内部具有点连接的连接关系的权重和。
上述方案中,所述计算模块,具体用于:
遍历所述加载子图文件中的节点,并执行以下迭代处理:
计算所遍历节点具有邻接节点的社区标签时对应的模块度;
确定使所述模块度最大时所遍历节点所具有的社区标签,并分配给所遍历节点相应的社区标签;
当所述内存空间所加载子图文件的模块度在迭代前后的梯度满足收敛条件时停止迭代,将相同社区标签的节点合并为新的节点。
上述方案中,所遍历节点具有邻接节点的社区标签时对应的模块度为第一因子与第二因子的差值;
其中,所述第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,所述第二因子为所遍历节点权重和的乘积、与所述全部连接关系权重和的比值,所述所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,所述全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和。
上述方案中,所述内存空间所加载子图文件的模块度在迭代前后的梯度为:所加载子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和。
上述方案中,所述收敛条件包括:所述内存空间所加载子图文件的模块度在迭代前后的梯度小于梯度阈值。
上述方案中,所述计算模块,具体用于:
将所述内存空间加载的子图文件中针对不同节点的迭代计算,分配到对应的多个并行的线程;
在每个线程中,基于目标节点的各邻接节点的迭代前社区标签,计算所述目标节点具有不同迭代前社区标签时对应的模块度,选取最大模块度对应的迭代前社区标签分配给所述目标节点作为迭代后社区标签;
当全部所述线程完成后,基于所述目标节点的迭代后社区标签,更新所述目标节点的迭代前社区标签的第二权重和、以及所述目标节点的迭代后社区标签的第二权重和。
本发明实施例所提供的图文件的处理方法、装置及存储介质,通过将图文件进行分割,形成子图文件,并将子图文件加载至内存空间中,对内存空间所加载的子图文件中节点的社区标签进行迭代计算更新,因此,通过分割,相对于一次性加载大的图文件,减小了对内存空间的依赖,从而使得在内存资源有限的设备中进行计算成为可能,从而能够充分利用已有的设备进行计算,实现了资源集约的高效计算,从而可以在内存资源有限的设备上处理数十亿节点和数百亿节点的连接关系的巨型网络,具有易操作、可移植性强等特点,解决了由于针对大规模的社交网络的图文件进行计算而产生内存不足的问题。
附图说明
图1是本发明实施例提供的图文件的处理装置的一个可选的结构示意图;
图2是本发明实施例提供的图文件的处理方法的一个可选的流程示意图;
图3是本发明实施例提供的标签传播算法的一个可选的原理示意图;
图4是本发明实施例提供的社区划分算法的一个可选的原理示意图;
图5是本发明实施例提供的图文件的处理系统的一个可选的结构示意图;
图6是本发明实施例提供的图文件的处理系统的一个可选的关系示意图;
图7是本发明实施例提供的基于图的拓扑结构进行社区发现的一个可选的示意图;
图8是本发明实施例提供的包含四个社区的一个可选的社交网络示意图;
图9是本发明实施例提供的QQ好友关系图文件的处理方法的一个可选的流程示意图;
图10是应用本发明实施例提供的社区标签计算的一个可选的应用场景示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例是本发明一部分实施例,而不是全部的实施例。根据本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述具体的实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)社交网络,依托于互联网、通过网站或者客户端实现用户之间社交的系统,包括硬件层的社交网络服务器以及软件层的各种形式客户端(例如APP和网页);社交网络用户凭借客户端来从获取社交网络的各种服务。
2)图文件,一种用于描述社交网络的拓扑结构的文件,根据图文件可以形成社交网络的图形化表示,在图形化表示中将社交网络中的用户、用户之间的连接关系、以及连接关系的紧密度进行映射,对应映射为图社交网络中的节点、连接节点的连接关系(本文中也称为边)、连接关系的权重值,将所得到的映射结果可以整合形成图文件的形式进行存储。
3)权重,是一个相对的概念,针对某一指标而言。某一指标的权重是指该指标在整体评价中的相对重要程度。权重是要从若干评价指标中分出轻重来,一组评价指标体系相对应的权重组成了权重体系。
4)社区,是指在一个网络中在某些维度的特征相似的一组节点,且组内的节点与网络中的其他节点则不相似;更为一般的可以表述为:社区是指网络中节点的集合,这些节点内部连接紧密而外部连接稀疏;节点所属的社区使用节点的社区标签(也简称为标签)表示。
5)标签传播算法,是一种基于图的半监督学习方法,其基本思路是用已标记(也就是标记节点的标签)节点的标签信息,去预测未标记节点的标签信息。
6)社区发现算法,用于检测网络中的社区结构,并可以进一步的挖掘感兴趣的社区或行为异常的用户群体。
7)遍历,依次对每个需要进行处理的节点均做一次访问。
8)迭代,是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果;每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。
9)模块度,也称模块化度量值,是一种衡量网络的社区结构强度的方法,社区划分的目标是使得划分后的社区内部的连接较为紧密,而在社区之间的连接较为稀疏,通过模块度可以刻画这样的划分的优劣,模块度越大,则社区划分的效果越好。
现在将参考附图描述实现本发明实施例的图文件的处理装置,图文件的处理装置可以以各种形式来实施,例如服务器或服务器集群部署。下面对本发明实施例的图文件的处理装置的硬件结构做进一步说明。
参见图1,图1是本发明实施例提供的图文件的处理装置100的一个可选的结构示意图,需要指出,图1仅仅示出了图文件的处理装置的示例性结构而非全部结构,根据需要可以实施图1示出的部分结构或全部结构。
图1所示图文件的处理装置100可以包括:至少一个处理器110、至少一个通信总线140、用户接口130、至少一个网络接口120和存储器150。图文件的处理装置100中的各个组件通过通信总线140耦合在一起。可以理解,通信总线140用于实现这些组件之间的连接通信。通信总线140除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图1中将各种总线都标为通信总线140。
其中,用户接口130可以包括显示器、键盘、鼠标、轨迹球、点击轮、按键、按钮、触感板或者触摸屏等。网络接口120可以包括标准的有线接口、无线接口,典型地,无线接口可以是WiFi接口。
可以理解,存储器150可以是高速RAM存储器,也可以是非不稳定的存储器(Non-Volatile Memory),例如至少一个磁盘存储器。存储器150还可以是至少一个远离处理器110的存储系统。
本发明实施例提供的图文件的处理方法可以应用于处理器110中,或者由处理器110实现,处理器110可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,应用于图文件的处理装置的图文件的处理方法中的不同操作可以通过处理器110中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器110可以是通用处理器、DSP或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器110可以实现或者执行本发明实施例应用于图文件的处理装置的图文件的处理方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所提供的应用于图文件的处理装置的图文件的处理方法,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。
作为示例,软件模块可以位于存储介质中,存储介质位于存储器150,处理器110读取存储器150中的信息,结合其硬件完成本发明实施例提供的应用于图文件的处理装置的图文件的处理方法,包括提取模块151、分割模块152、加载模块153、初始化模块154、计算模块155和更新模块156。
所述提取模块151,用于提取图文件并存储至持久化存储空间中,图文件包括社交网络的节点、连接节点的连接关系以及连接关系的权重值;
所述分割模块152,用于根据图文件包括的节点的连接关系,将图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;
所述加载模块153,用于将分割后的子图文件加载至内存空间;
所述初始化模块154,用于初始化内存空间所加载子图文件中的节点;
所述计算模块155,用于迭代计算内存空间所加载子图文件中节点的社区标签;
所述更新模块156,用于根据迭代计算完成后得到的节点的社区标签,更新持久化存储空间中存储的图文件。
在一些实施例中,提取模块151,具体用于:从社交网络的数据库中提取用户连接关系;将用户映射为社交网络中的节点,将用户之间的连接关系映射为社交网络中连接节点的连接关系,将用户之间的连接紧密度映射为社交网络中连接关系的权重值;将所得到的映射结果整合为图文件,并将图文件存储至持久化存储空间中。
在一些实施例中,分割模块152,具体用于:根据图文件中的节点的连接关系,将图文件中的节点划分到互不相交的节点区间;根据划分得到的节点区间,将图文件对应节点区间进行分割,形成与节点区间对应的子图文件。
在一些实施例中,加载模块153,具体用于:将分割后的子图文件中未迭代计算社区标签的子图文件,加载到内存空间中;当所加载的子图文件迭代计算社区标签完成后,在内存空间中释放所加载的子图文件,并将未迭代计算社区标签的子图文件,加载到内存空间中。
在一些实施例中,初始化模块154,具体用于:为内存空间所加载子图文件中的各个节点分配差异化的社区标签;根据节点所分配的社区标签,计算节点的初始化的第一权重和以及社区标签的初始化的第二权重和;其中,第一权重和以及第二权重和用于计算节点的模块度;其中,第一权重和为节点的连接关系的权重和,第二权重和为社区标签对应社区的内部具有点连接的连接关系的权重和。
在一些实施例中,计算模块155,具体用于:遍历加载子图文件中的节点,并执行以下迭代处理:计算所遍历节点具有邻接节点的社区标签时对应的模块度;确定使模块度最大时所遍历节点所具有的社区标签,并分配给所遍历节点相应的社区标签;当内存空间所加载子图文件的模块度在迭代前后的梯度满足收敛条件时停止迭代,将相同社区标签的节点合并为新的节点。
在一些实施例中,所遍历节点具有邻接节点的社区标签时对应的模块度为第一因子与第二因子的差值;其中,第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,第二因子为所遍历节点权重和的乘积、与全部连接关系权重和的比值,所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和,其中,第二因子不仅限于所遍历节点权重和的乘积、与全部连接关系权重和的比值,还包括比值中涉及到的因子的各种变形。
在一些实施例中,内存空间所加载子图文件的模块度在迭代前后的梯度为:所加载子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和。
在一些实施例中,所述收敛条件包括:内存空间所加载子图文件的模块度在迭代前后的梯度小于梯度阈值。
在一些实施例中,计算模块155,具体用于:将内存空间加载的子图文件中针对不同节点的迭代计算,分配到对应的多个并行的线程;在每个线程中,基于目标节点的各邻接节点的迭代前社区标签,计算目标节点具有不同迭代前社区标签时对应的模块度,选取最大模块度对应的迭代前社区标签分配给目标节点作为迭代后社区标签;当全部线程完成后,基于目标节点的迭代后社区标签,更新目标节点的迭代前社区标签的第二权重和、以及目标节点的迭代后社区标签的第二权重和。
下面继续对上述本发明实施例图文件的处理实现过程做进一步地详细说明。
参见图2,图2为本发明实施例提供的图文件的处理方法的一个可选的流程示意图,图文件的处理方法可以应用于服务器;在本发明实施例中,服务器可以包括但不限于云端服务器;将结合图2的各个步骤进行说明。
步骤201:提取图文件并存储至持久化存储空间中,图文件包括社交网络的节点、连接节点的连接关系以及连接关系的权重值。
在一些实施例中,作为示例可以参看图3,从社交网络的数据库中提取用户连接关系,将社交网络数据库中的所有用户映射为社交网络中的节点,将用户之间的连接关系映射为社交网络中连接节点的连接关系,将用户之间的连接紧密度映射为社交网络中连接关系的权重值,可以根据多个维度确定权重,如发生关联的维度,线上、线下,关于各个维度的度量可以根据联系的频繁程度来确定;将所得到的映射结果整合为图文件,图文件可以存储至持久化存储空间中。
作为示例,持久化存储空间可以是硬盘等各种存储介质中用于存储数据的空间,具有掉电不丢失数据的特性,持久化存储空间可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,Ferromagnetic Random Access Memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory),磁表面存储器可以是磁盘存储器或磁带存储器。图文件可以表示为G=(V,E,W),其中,V为社交网络中节点的集合,E为社交网络中连接节点的连接关系的集合,W为连接关系的权重值的集合。
作为示例,可以将从社交网络的数据库中提取的用户连接关系存储为三元组(u,v,w),其中,u,v表示连接关系中的两个节点,w表示两个节点连接关系的权重值;可以理解地,用户之间的连接紧密度越大,即节点之间的连接关系越紧密,权重值越大,需要指出,社交网络中连接关系的权重值可以通过多种方式计算,可以根据多个维度确定权重,如发生关联的维度,线上、线下,关于各个维度的度量可以根据联系的频繁程度来确定,例如,在QQ社交网络中,权重值可以由QQ好友之间的亲密度表示,也可以由好友之间信息交互次数表示,等等。
步骤202:根据图文件包括的节点的连接关系,将图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交。
在一些实施例中,图文件中记录了社交网络中所包括的节点、以及节点之间的连接关系,根据连接关系完成从图文件到子图文件的分割,下面进行说明。
首先,将图文件中节点映射到三维空间中,例如,通过在三维空间中节点之间的边、以及表示节点之间的边的权重值,完成社交网络中节点到三维空间的映射,三维空间是社交网络的空间化表达,其中,节点之间的边是对于节点的各种属性、行为、偏好等数据之间的相似度的量化表达,可以理解,边可以表示节点之间的一种连接,此时边是单维的,用以表示相连接的节点之间在一个类型的联系(或互动),对应的权重值用以表示联系(或者互动)的强度;当然边也可以表示多个维度,用以表示节点之间的多个类型的联系(或互动),对应的权重值用以表示联系(或者互动)的强度。
举例来说,从图文件中任意选取一个节点的数据,建模为三维空间中的一个节点,节点代表了社交网络中的用户,用户分享的项目种类是多样化的,包括图片、视频、日志等,将用户与其他用户(也就是图文件中与建模的用户存在连接关系的节点)的联系(互动)建模为三维空间的边,边对应的权重值是一个多维度的向量,向量的每个维度的分量表示在一个类型项目的权重值;以此类推,直至对图文件中所有节点的相关数据建模完毕。
其次,根据三维空间中节点的连接关系,将三维空间的节点划分到在三维空间中互不相交的节点区间。
举例来说,三维空间中的节点通过边、以及边所表示的一个或多个维度的权重值连接,根据节点区间互不相交的条件对节点区间进行分割,可以理解根据上述条件的约束,可以实施各种算法(例如,贪心算法)对三维空间进行划分形成节点区间,下面对应用贪心算法划分图文件进行说明。
在对一个根据图文件建模形成的三维空间划分的贪心算法实施过程中,对三维空间中的节点根据所连接的节点的数量进行降序的排序,根据降序遍历每个节点,根据节点区间的创建顺序,依次判断遍历的节点是否可以加入已有的节点区间,如果可以,则加入已有的节点区间,如果不可以,则针对该节点建立新的节点区间,直至节点遍历完毕。
作为一个示例,对三维空间中的节点根据所连接的节点的数量进行降序的排序,记为节点1,2,3,……,初始化包括节点1的节点区间1,继续遍历节点,以节点i为例,按照已经创建的节点区间(假设已经创建的节点区间是{Ii}1,{Ii}2,{Ii}3……,{Ii}P)的创建顺序,依次判断节点i是否可以加入节点区间{Ii}1,{Ii}2,{Ii}3……,{Ii}P,如果可以,则加入相应的节点区间,如果不可以,则针对该节点建立新的节点区间{Ii}P+1,直至节点遍历完毕,最后得到互不相交的节点区间:{Ii}2,{Ii}3……,{Ii}P,{Ii}P+1
作为又一个示例,从图文件中任意选取一个节点,将此节点以及与此节点有连接关系的所有节点,组合形成一个节点区间,记为节点区间{Ii}1,同样的方式形成节点区间{Ii}2、节点区间{Ii}3…{Ii}P,其中Ii为节点的集合,最终,图文件中的节点被划分到互不相交的节点区间。
作为再一个示例,作为从图文件中任意选取一个节点划分成节点区间的替代方式,可以按照图文件中的节点的编号进行顺序处理,将图文件中的节点划分为P个互不相交的节点区间{Ii}P,然后根据划分得到的节点区间,将持久化存储空间中的图文件对应节点区间进行分割,形成与节点区间对应的子图文件,子图文件中记录所对应节点区间中的节点以及连接关系。
每个子图文件中均定义了一个连接关系集合和节点集合,连接关系集合由集合Ei={(u,v,w)|v∈Ii}定义,节点集合Ii则包括连接关系集合中的所有节,举例来说,依据上述节点区间的划分方式将图文件进行切片,每个切片中均定义了一个边切片和节点切片,边切片由集合Ei={(u,v,w)|v∈Ii}定义,节点切片Ii则包含边切片中的所有节点。需要指出,该分割步骤,目的在于增强算法的可扩展性,让其可以在单机上处理百亿规模的连接网络,图文件的分割结果对最终的社区划分没有影响。
再次,根据划分得到的节点区间所包括的节点以及节点之间的连接关系,将图文件中记录的节点以及节点的连接关系根据节点区间进行分割,针对每个节点区间,在初始化的图文件中记录相应节点区域所包括的节点(相当于图文件中节点的切片)以及节点之间的连接关系(相当于图文件中的边的切片),记录完成后形成与节点区间对应的子图文件。
不难看出,由于子图文件中仅仅记录了一个节点区间的节点及其连接关系,因此子图文件的体积相较于图文件能够得以显著减小,同时,在每个子图文件中最大程度保留了在图文件中所记录的节点之间的连接关系。
步骤203:将分割后的子图文件加载至内存空间。
在一些实施例中,将分割后的子图文件中未迭代计算社区标签的子图文件,即将分割后的子图文件中未迭代计算节点的标签的子图文件,加载到内存空间中;当所加载的子图文件迭代计算社区标签完成后,在内存空间中释放所加载的子图文件,并将未迭代计算社区标签的子图文件,加载到内存空间中。
举例来说,从持久化存储空间中读取分割后的一个子图文件,作为示例可以命名为第一子图文件,再将第一子图文件加载到内存空间中,在内存空间中对第一子图文件迭代计算社区标签完成后,进行释放,并从持久化存储空间中读取分割后的另一个未迭代计算社区标签的子图文件,并将其加载到内存空间中,进行社区标签的计算,计算社区标签完成后进行释放,按照此顺序依次将分割后的子图文件加载至内存空间。
通过将图文件进行分割,相对于一次性加载大的图文件,减小了对内存空间的依赖,从而使得在内存资源有限的设备中进行计算成为可能,从而能够充分利用已有的设备进行计算,实现了资源集约的高效计算。
在一些实施例中,可以以2个、3个或多个为粒度并行将分割后的子图文件中未迭代计算节点的标签的子图文件,加载到内存空间中。需要指出,以1个为粒度相对于以2个、3个或多个为粒度将分割后的子图文件中未迭代计算节点的标签的子图文件,加载到内存空间,可以最大程度减小内存空间的占用,从而提升计算效率。
步骤204:初始化内存空间所加载子图文件中的节点,并迭代计算内存空间所加载子图文件中节点的社区标签。
在一些实施例中,可以通过标签传播算法(LPA,Label Propagation Algorithm)进行社区标签的计算,这种算法是最早的基于标签的算法,是所有基于标签算法的基础,其最大的特色是简单、高效。
参照图3,图3是本发明实施例提供的标签传播算法的一个可选的原理示意图,将结合图3说明计算过程。
第一步:初始化内存空间所加载子图文件中的节点。
为内存空间所加载子图文件中的各个节点分配差异化的社区标签,即为所加载子图文件中的所有节点指定一个唯一的标签
Figure BDA0001567003970000144
其中V是图中节点的集合,ci代表节点i所属的社区标签。
举例来说,内存空间所加载子图文件中的节点,有的节点的标签是已知的(即训练样本),有的节点的标签是未知的(即测试样本),目的在于获得测试样本的标签;初始化时,训练样本可以采用自身的已知的标签,对于测试样本可以随机分配标签,保证每个样本具有的标签是独一无二的,分配的社区标签可以采用节点的编号表示,例如,节点1所属的社区标签为c1=1,节点2所属的社区标签为c2=2,节点3所属的社区标签为c3=3。
第二步:逐轮刷新内存空间所加载子图文件中所有节点的标签,直到达到收敛条件为止。
对于每一轮刷新,节点标签刷新的规则如下:
Figure BDA0001567003970000141
其中
Figure BDA0001567003970000142
表示节点i的邻居节点中社区标签为k的节点的集合;即对于某一个当前处理的节点(简称为当前节点),考察其所有邻居节点的标签,并进行统计,将出现个数最多的标签赋给当前节点;当个数最多的标签不唯一时,随机从多个不同的标签中选一个标签,赋给当前节点。
采用上述LPA算法在内存空间中一次性加载图文件进行计算,一方面消耗大量的内存空间,针对大型的社交网络的图文件存在难以实施的限制,另一方面,每次迭代结果不稳定,准确率不高;前几轮的迭代会对最后的社区划分产生很大的影响,而且对社区的划分常常很不均匀,容易产生超大的社区。
在一些实施例中,可以通过多层次贪婪层次合并算法(Fast Unfolding)算法进行社区的划分,社区划分的目标是使得划分后的社区内部的连接较为紧密,而在社区之间的连接较为稀疏,通过模块度可以刻画这样的划分的优劣,模块度越大,则社区划分的效果越好,模块度的公式如下所示:
Figure BDA0001567003970000143
其中,
Figure BDA0001567003970000151
表示社区c内部节点之间连接关系的权重和,
Figure BDA0001567003970000152
表示的是与社区c内部的点连接的连接关系的权重和,包括社区内部的边以及社区外部的边,m为社交网络中所有连接关系的权重和。
Fast Unfolding算法采用模块度这一指标作为衡量社区划分好坏的指标,由于直接求解的不可实现性,算法不断的为每一个节点选取使Q增长最大的社区加入。
参照图4,图4是本发明实施例提供的社区划分算法的一个可选的原理示意图,分为两个阶段,第一阶段和第二阶段:第一阶段用于设定各节点的归属社区,直至不再发生变化;第二阶段用于构建新图,并重新执行第一阶段的操作,直至模块度不再变化。下面结合图4说明具体的计算步骤。
第一步:初始化内存空间所加载子图文件中的节点。
为内存空间所加载子图文件中的各个节点分配差异化的社区标签,即为所加载子图文件中的所有节点指定一个唯一的标签
Figure BDA0001567003970000153
其中V是图中节点的集合,ci代表节点i所属的社区标签。举例来说,内存空间所加载子图文件中的节点,有的节点的标签是已知的(即训练样本),有的节点的标签是未知的(即测试样本),目的在于获得测试样本的标签;初始化时,训练样本可以采用自身的已知的标签,测试样本可以随机分配标签,保证每个样本的标签是独一无二的即可,分配的社区标签可以为节点的编号,例如,节点1所属的社区标签为c1=1,节点2所属的社区标签为c2=2,节点3所属的社区标签为c3=3。
第二步:遍历所加载子图文件中的节点,并执行迭代处理。
作为迭代处理的示例,计算所遍历节点具有邻接节点的社区标签时对应的模块度,所遍历节点具有邻接节点的社区标签时的模块度为第一因子与第二因子的差值;第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,第二因子为所遍历节点权重和的乘积、与全部连接关系权重和的比值,所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和,其中,第二因子不仅限于为所遍历节点权重和的乘积、与全部连接关系权重和的比值,还包括比值中涉及到的因子的各种变形。
第一权重和以及第二权重和用于计算所遍历节点的模块度;第一权重和为节点的连接关系的权重和,第二权重和为社区标签对应社区的内部具有点连接的连接关系的权重和。
确定使模块度最大时所遍历节点具有的社区标签,并分配给所遍历节点相应的社区标签;也就是说,假设节点属于邻接节点所属的社区时,计算节点对应不同社区的多个模块度,计算节点属于不同社区时,子图文件的模块度,可以理解为,假设将节点分别分配至邻接节点所属的社区,计算节点属于不同的邻接节点所属的社区时对应的子图文件的模块度;比较计算前后的模块度,选取使模块度最大的社区标签,分配相应社区的社区标签。
当内存空间所加载子图文件的模块度在迭代前后的梯度满足收敛条件时,停止迭代;其中,内存空间所加载子图文件的模块度在迭代前后的梯度为:所加载子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和,作为示例,收敛条件可以包括,内存空间所加载子图文件的模块度在迭代前后的梯度小于梯度阈值。
针对上述迭代处理的过程,是逐轮刷新内存空间所加载子图文件中所有节点的标签;对于每一轮刷新,节点标签刷新的规则如下:
Figure BDA0001567003970000161
其中,ki为与节点i相连边的权重和,
Figure BDA0001567003970000162
表示社区c中节点与节点i相连边的权重和,
Figure BDA0001567003970000163
表示的是与社区c内部的点连接的连接关系的权重和,包括社区内部的边以及社区外部的边,m为社交网络中所有连接关系的权重和;为保证社区迭代收敛,为每轮迭代的模块度的变化量
Figure BDA0001567003970000164
设定了阈值δ,若ΔQsum<δ,停止迭代。
第三步:将相同社区标签的节点合并为新的节点,并重复第二步的迭代过程。
需要指出,第三步可以根据需要进行多轮。
采用上述Fast Unfolding算法会在一定程度上缓解迭代结果不稳定的现象,但是依然会产生超大的社区簇。此外,LPA算法和Fast Unfolding算法通常是将整个社交网络存入内存空间中进行计算,对于大规模的社交网络会产生内存不足无法计算的情况;同时,它们原始的串行计算的特性在处理大规模的社交网络会耗费数日或数十日进行迭代。
在一些实施例中,可以通过分布式基于模块度的图聚类算法进行社区的划分,该算法利用大规模集群来加速图聚类速度,将图结构进行分块,并分别读取进不同的服务器中进行并行计算。
采用上述分布式基于模块度的图聚类算法虽然在速度上有较大提升,但是依然无法处理拥有数十亿节点和数百亿边的巨型社交网络。此外,该分布式算法所需计算成本很高,部署困难,且需要专业的优化方法进行各种条件的设定。
在一些实施例中,可以在Fast Unfolding算法的基础上进行改进,利用图计算平台的以节点为中心的计算逻辑,设计出了并行化的高度可扩展的大规模社交网络社区发现算法,该算法可以在单台计算机上处理数十亿节点和数百亿边的巨型网络,具体步骤如下:
第一步:初始化内存空间所加载子图文件中的节点:
1)为内存空间所加载子图文件中的各个节点分配差异化的社区标签,即为所加载子图文件中的所有节点指定一个唯一的标签
Figure BDA0001567003970000171
其中V是图中节点的集合,ci代表节点i所属的社区标签。举例来说,内存空间所加载子图文件中的节点,有的节点的标签是已知的(即训练样本),有的节点的标签是未知的(即测试样本),目的在于获得测试样本的标签;初始化时,训练样本可以采用自身的已知的标签,测试样本可以随机分配标签,保证每个样本的标签是独一无二的即可,分配的社区标签可以为节点的编号,例如,节点1所属的社区标签为c1=1,节点2所属的社区标签为c2=2,节点3所属的社区标签为c3=3。
2)根据节点所分配的社区标签,计算节点的初始化的第一权重和以及社区标签的初始化的第二权重和,这里,初始化的第一权重和以及初始化的第二权重和是基于初始化时所分配的标签进行计算的;其中,第一权重和以及第二权重和用于计算节点的模块度;其中,第一权重和为节点的连接关系的权重和,第二权重和为社区标签对应社区的内部具有点连接的连接关系的权重和。
举例来说,初始化全局特征,在内存空间中建立数组Σtot,在内存空间所加载子图文件中的每个节点i进行初始化时,初始
Figure BDA0001567003970000181
其中
Figure BDA0001567003970000182
记录了当前所有与社区ci相连的边的权重和。由于在初始化时,每个节点都被赋予一个单独的社区,
Figure BDA0001567003970000183
此时与ki具有相同的值。
需要指出,节点初始化只在第一轮迭代的更新步骤中执行,而社区标签更新在接下来的迭代中每一轮均执行。
第二步:迭代计算内存空间所加载子图文件中节点的社区标签。
计算所遍历节点具有邻接节点的社区标签时对应的模块度;其中,在第一次迭代计算时,模块度基于初始化的第一权重和以及初始化的第二权重和进行计算;后续迭代计算时,模块度基于上一次迭代更新后的第一权重和以及上一次迭代更新后的第二权重和进行计算。
其中,所遍历节点具有邻接节点的社区标签时对应的模块度为第一因子与第二因子的差值;其中,第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,第二因子为所遍历节点权重和的乘积、与全部连接关系权重和的比值,所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和,其中,第二因子不仅限于为所遍历节点权重和的乘积、与全部连接关系权重和的比值,还包括比值中涉及到的因子的各种变形。
可以理解地,第一因子和第二因子中所包括的第一权重和以及第二权重和,在第一次迭代计算时,是基于初始化的权重和计算的,在后续迭代计算时,是基于上一次迭代更新后的权重和计算的。
确定使模块度最大时所遍历节点所具有的社区标签,并分配给所遍历节点相应的社区标签;也就是说,节点属于邻接节点所属的社区时,会计算到节点对应不同社区的多个模块度,计算节点属于不同社区时,子图文件的模块度;比较计算前后的模块度,选取使模块度最大的社区标签,分配相应社区的社区标签。
作为示例,将内存空间加载的子图文件中针对不同节点的迭代计算,分配到对应的多个并行的线程;在每个线程中,基于目标节点的各邻接节点的迭代前社区标签,计算目标节点具有不同迭代前社区标签时对应的模块度,选取最大模块度对应的迭代前社区标签分配给目标节点作为迭代后社区标签;当全部线程完成后,基于目标节点的迭代后社区标签,更新目标节点的迭代前社区标签的第二权重和、以及目标节点的迭代后社区标签的第二权重和。
当内存空间所加载子图文件的模块度在迭代前后的梯度满足收敛条件时,停止迭代;其中,内存空间所加载子图文件的模块度在迭代前后的梯度为:所加载子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和;其中,收敛条件包括,内存空间所加载子图文件的模块度在迭代前后的梯度小于梯度阈值。
针对上述迭代处理的过程,举例来说,采用Fast Unfolding第二步的更新规则;但是在并行化处理时,多个线程同时对相同数据进行读写可能造成数据不一致,造成结果的不可控性。因此,本算法为每个节点定义一个额外的标签
Figure BDA0001567003970000191
Figure BDA0001567003970000192
在内存空间加载的子图文件中针对不同节点的迭代计算彻底更新完成后,在写回至持久化存储空间前对相关数据进行统一更新,具体更新方式如下,对于
Figure BDA0001567003970000193
其中,Vj为第j个切片中节点的集合,←为赋值标志;ki为与节点i相连边的权重和,
Figure BDA0001567003970000194
表示社区c中节点与节点i相连边的权重和;
Figure BDA0001567003970000195
表示的是与社区c内部的点连接的边的权重和,包括社区内部的边以及社区外部的边。为保证社区迭代收敛,为每轮迭代的模块度的变化量
Figure BDA0001567003970000196
设定了阈值δ,若ΔQsum<δ,停止迭代。
需要指出,尽管在每轮更新时,只能轮流将持久化存储空间中分割后的子图文件读入内存空间,但是在写回至持久化存储空间时,可以对所有子图文件进行写操作。同时,利用上述全局数组Σtot,可以保证在处理每个子图文件时,都是在上一轮最优的基础上进行的;最终通过多轮迭代,以达到最后的社区划分结果。
采用上述并行化的高度可扩展的大规模社交网络社区发现算法,可以在单台计算机上处理数十亿节点和数百亿边的巨型网络,具有易操作、可移植性强等特点,解决了大规模社交网络计算在空间和时间上的障碍,并且有效解决了不稳定性及社区分布不均匀的问题。
步骤205:根据迭代计算完成后得到的节点的社区标签,更新持久化存储空间中存储的图文件。
在一些实施例中,将迭代计算完成后得到的节点的社区标签,写回至持久化存储空间中,更新持久化存储空间中存储的图文件。
可见,通过上述实施例,根据节点的连接关系,将图文件分割形成子图文件,使得每个子图文件能够在内存中独立完成计算并写回至持久化存储空间中,从而,通过一个计算节点即可完成计算任务,不需要部署大型网络。
下面,以一个实施例对本发明实施例所提供的图文件的处理系统做进一步地详细说明。
参考图5,图5为本发明实施例提供的图文件的处理系统的一个可选的组成结构示意图,图文件的处理系统可以应用于服务器;在本发明实施例中,服务器可以包括但不限于云端服务器;如图5所示,本发明实施例中图文件的处理系统可以包括:社交网络用户关系提取子系统、大型图文件预处理子系统和社区划分子系统,具体流程如图5所示。其中,社交网络用户关系提取子系统可直接通过数据库操作实现;大型图文件预处理子系统利用图计算框架的预处理来实现;社区划分子系统建立在以节点为中心的图计算框架上,具体分为节点社区初始化、节点社区标签更新和社区划分收敛三个步骤,每轮迭代中轮流将大型图文件预处理子系统的输出结果读入内存,但是保持对全局数据的持续更新,最终达到收敛。各个子系统的具体描述如下:
(1)社交网络用户关系提取子系统
此系统从社交网络数据库中,提取图文件并存储至持久化存储空间中,图文件包括社交网络的节点、连接节点的连接关系以及连接关系的权重值。
在一些实施例中,从社交网络的数据库中提取用户连接关系,将社交网络数据库中的所有用户映射为社交网络中的节点,将用户之间的连接关系映射为社交网络中连接节点的连接关系,将用户之间的连接紧密度映射为社交网络中连接关系的权重值;将所得到的映射结果整合为图文件,并将图文件存储至持久化存储空间中,作为示例,持久化存储空间可以是硬盘,图文件可以表示为G=(V,E,W),其中,V为社交网络中节点的集合,E为社交网络中连接节点的连接关系的集合,W为连接关系的权重值的集合。
作为示例,可以将从社交网络的数据库中提取的用户连接关系存储为三元组(u,v,w),其中,u,v表示连接关系中的两个节点,w表示两个节点连接关系的权重值;可以理解地,用户之间的连接紧密度越大,即节点之间的连接关系越紧密,权重值越大,需要指出,社交网络中连接关系的权重值可以通过多种方式计算,例如,在QQ社交网络中,权重值可以由QQ好友之间的亲密度表示,也可以由好友之间信息交互次数表示,等等。
(2)大型图文件预处理子系统
此系统根据图文件包括的节点的连接关系,将图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交。
在一些实施例中,图文件中记录了社交网络中所包括的节点、以及节点之间的连接关系,根据连接关系完成从图文件到子图文件的分割,下面进行说明。
首先,将图文件中节点映射到三维空间中,例如,通过在三维空间中节点之间的边、以及表示节点之间的边的权重值,完成社交网络中节点到三维空间的映射,三维空间是社交网络的空间化表达,其中,节点之间的边是对于节点的各种属性、行为、偏好等数据之间的相似度的量化表达,可以理解,边可以表示节点之间的一种连接,此时边是单维的,用以表示相连接的节点之间在一个类型的联系(或互动),对应的权重值用以表示联系(或者互动)的强度;当然边也可以表示多个维度,用以表示节点之间的多个类型的联系(或互动),对应的权重值用以表示联系(或者互动)的强度。
举例来说,从图文件中任意选取一个节点的数据,建模为三维空间中的一个节点,节点代表了社交网络中的用户,用户分享的项目种类是多样化的,包括图片、视频、日志等,将用户与其他用户(也就是图文件中与建模的用户存在连接关系的节点)的联系(互动)建模为三维空间的边,边对应的权重值是一个多维度的向量,向量的每个维度的分量表示在一个类型项目的权重值;以此类推,直至对图文件中所有节点的相关数据建模完毕。
其次,根据三维空间中节点的连接关系,将三维空间的节点划分到在三维空间中互不相交的节点区间。
举例来说,三维空间中的节点通过边、以及边所表示的一个或多个维度的权重值连接,根据节点区间互不相交的条件对节点区间进行分割,可以理解根据上述条件的约束,可以实施各种算法(例如,贪心算法)对三维空间进行划分形成节点区间,下面对应用贪心算法划分图文件进行说明。
在对一个根据图文件建模形成的三维空间划分的贪心算法实施过程中,对三维空间中的节点根据所连接的节点的数量进行降序的排序,根据降序遍历每个节点,根据节点区间的创建顺序,依次判断遍历的节点是否可以加入已有的节点区间,如果可以,则加入已有的节点区间,如果不可以,则针对该节点建立新的节点区间,直至节点遍历完毕。
作为一个示例,对三维空间中的节点根据所连接的节点的数量进行降序的排序,记为节点1,2,3,……,初始化包括节点1的节点区间1,继续遍历节点,以节点i为例,按照已经创建的节点区间(假设已经创建的节点区间是{Ii}1,{Ii}2,{Ii}3……,{Ii}P)的创建顺序,依次判断节点i是否可以加入节点区间{Ii}1,{Ii}2,{Ii}3……,{Ii}P,如果可以,则加入相应的节点区间,如果不可以,则针对该节点建立新的节点区间{Ii}P+1,直至节点遍历完毕,最后得到互不相交的节点区间:{Ii}2,{Ii}3……,{Ii}P,{Ii}P+1
作为又一个示例,从图文件中任意选取一个节点,将此节点以及与此节点有连接关系的所有节点,组合形成一个节点区间,记为节点区间{Ii}1,同样的方式形成节点区间{Ii}2、节点区间{Ii}3…{Ii}P,其中Ii为节点的集合,最终,图文件中的节点被划分到互不相交的节点区间。
作为再一个示例,作为从图文件中任意选取一个节点划分成节点区间的替代方式,可以按照图文件中的节点的编号进行顺序处理,将图文件中的节点划分为P个互不相交的节点区间{Ii}P,然后根据划分得到的节点区间,将持久化存储空间中的图文件对应节点区间进行分割,形成与节点区间对应的子图文件,子图文件中记录所对应节点区间中的节点以及连接关系。
每个子图文件中均定义了一个连接关系集合和节点集合,连接关系集合由集合Ei={(u,v,w)|v∈Ii}定义,节点集合Ii则包括连接关系集合中的所有节,举例来说,依据上述节点区间的划分方式将图文件进行切片,每个切片中均定义了一个边切片和节点切片,边切片由集合Ei={(u,v,w)|v∈Ii}定义,节点切片Ii则包含边切片中的所有节点。需要指出,该分割步骤,目的在于增强算法的可扩展性,让其可以在单机上处理百亿规模的连接网络,图文件的分割结果对最终的社区划分没有影响。
再次,根据划分得到的节点区间所包括的节点以及节点之间的连接关系,将图文件中记录的节点以及节点的连接关系根据节点区间进行分割,针对每个节点区间,在初始化的图文件中记录相应节点区域所包括的节点(相当于图文件中节点的切片)以及节点之间的连接关系(相当于图文件中的边的切片),记录完成后形成与节点区间对应的子图文件。
不难看出,由于子图文件中仅仅记录了一个节点区间的节点及其连接关系,因此子图文件的体积相较于图文件能够得以显著减小,同时,在每个子图文件中最大程度保留了在图文件中所记录的节点之间的连接关系。
(3)社区划分子系统
该系统建立在以节点为中心的图计算框架下,两者关系如图6所示。基于模块度的社区划分算法分为节点初始化、节点社区标签更新和社区划分收敛三个步骤;该系统将社区划分算法部署在图计算框架中。
节点社区初始化的过程,可以是初始化内存空间所加载子图文件中的节点:
第一,为内存空间所加载子图文件中的各个节点分配差异化的社区标签,即为所加载子图文件中的所有节点指定一个唯一的标签
Figure BDA0001567003970000241
其中V是图中节点的集合,ci代表节点i所属的社区标签。举例来说,内存空间所加载子图文件中的节点,有的节点的标签是已知的(即训练样本),有的节点的标签是未知的(即测试样本),目的在于获得测试样本的标签;初始化时,训练样本可以采用自身的已知的标签,测试样本可以随机分配标签,保证每个样本的标签是独一无二的即可,分配的社区标签可以为节点的编号,例如,节点1所属的社区标签为c1=1,节点2所属的社区标签为c2=2,节点3所属的社区标签为c3=3。
第二,根据节点所分配的社区标签,计算节点的初始化的第一权重和以及社区标签的初始化的第二权重和,这里,初始化的第一权重和以及初始化的第二权重和是基于初始化时所分配的标签进行计算的;其中,第一权重和以及第二权重和用于计算节点的模块度;其中,第一权重和为节点的连接关系的权重和,第二权重和为社区标签对应社区的内部具有点连接的连接关系的权重和。
举例来说,初始化全局特征,在内存空间中建立数组Σtot,在内存空间所加载子图文件中的每个节点i进行初始化时,初始
Figure BDA0001567003970000242
其中
Figure BDA0001567003970000243
记录了当前所有与社区ci相连的边的权重和。由于在初始化时,每个节点都被赋予一个单独的社区,
Figure BDA0001567003970000244
此时与ki具有相同的值。
需要指出,节点初始化及节点社区标签更新均是在图计算框架下设计实现的,节点初始化只在第一轮迭代的更新步骤中执行,而社区标签更新在接下来的迭代中每一轮均执行。
节点社区标签更新的过程,即每轮迭代的过程,可以分为以下三个步骤:
第一步是读取,即从持久化存储空间中读取分割后的子图文件,并将分割后的子图文件加载至内存空间。
在一些实施例中,将分割后的子图文件中未迭代计算社区标签的子图文件,即将分割后的子图文件中未迭代计算节点的标签的子图文件,加载到内存空间中;当所加载的子图文件迭代计算社区标签完成后,在内存空间中释放所加载的子图文件,并将未迭代计算社区标签的子图文件,加载到内存空间中。
举例来说,就是从持久化存储空间中读取分割后的一个子图文件,作为示例可以命名为第一子图文件,再将第一子图文件加载到内存空间中,在内存空间中对第一子图文件迭代计算社区标签完成后,进行释放,并从持久化存储空间中读取分割后的另一个未迭代计算社区标签的子图文件,并将其加载到内存空间中,进行社区标签的计算,计算社区标签完成后进行释放,按照此顺序依次将分割后的子图文件加载至内存空间。
在一些实施例中,可以以2个、3个或多个为粒度并行将分割后的子图文件中未迭代计算节点的标签的子图文件,加载到内存空间中。但是,以1个为粒度相对于以2个、3个或多个为粒度将分割后的子图文件中未迭代计算节点的标签的子图文件,加载到内存空间,可以提高内存空间的最小占用率,从而提升计算效率。
第二步是更新,即迭代计算内存空间所加载子图文件中节点的社区标签。
计算所遍历节点具有邻接节点的社区标签时对应的模块度;其中,在第一次迭代计算时,模块度基于初始化的第一权重和以及初始化的第二权重和进行计算;后续迭代计算时,模块度基于上一次迭代更新的第一权重和以及上一次迭代更新的第二权重和进行计算。
其中,所遍历节点具有邻接节点的社区标签时对应的模块度为第一因子与第二因子的差值;其中,第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,第二因子为所遍历节点权重和的乘积、与全部连接关系权重和的比值,所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和,其中,第二因子不仅限于为所遍历节点权重和的乘积、与全部连接关系权重和的比值,还包括比值中涉及到的因子的各种变形。
可以理解地,第一因子和第二因子中所包括的第一权重和以及第二权重和,在第一次迭代计算时,是基于初始化的权重和计算的,在后续迭代计算时,是基于上一次迭代更新后的权重和计算的。
确定使模块度最大时所遍历节点所具有的社区标签,并分配给所遍历节点相应的社区标签;也就是说,节点属于邻接节点所属的社区时,会计算到节点对应不同社区的多个模块度,计算节点属于不同社区时,子图文件的模块度;比较计算前后的模块度,选取使模块度最大的社区标签,分配相应社区的社区标签。
作为示例,将内存空间加载的子图文件中针对不同节点的迭代计算,分配到对应的多个并行的线程;在每个线程中,基于目标节点的各邻接节点的迭代前社区标签,计算目标节点具有不同迭代前社区标签时对应的模块度,选取最大模块度对应的迭代前社区标签分配给目标节点作为迭代后社区标签。
针对上述迭代处理的过程,举例来说,采用Fast Unfolding第二步的更新规则;但是在并行化处理时,多个线程同时对相同数据进行读写可能造成数据不一致,造成结果的不可控性。因此,本算法为每个节点定义一个额外的标签
Figure BDA0001567003970000261
Figure BDA0001567003970000262
第三步是写回,将迭代计算完成后得到的节点的社区标签,写回至持久化存储空间中,更新持久化存储空间中存储的图文件。
当全部线程完成后,基于目标节点的迭代后社区标签,更新目标节点的迭代前社区标签的第二权重和、以及目标节点的迭代后社区标签的第二权重和。在内存空间加载的子图文件中针对不同节点的迭代计算彻底更新完成后,在写回至持久化存储空间前对相关数据进行统一更新,具体更新方式如下,对于
Figure BDA0001567003970000263
其中,Vj为第j个切片中节点的集合,←为赋值标志;ki为与节点i相连边的权重和,
Figure BDA0001567003970000271
表示社区c中节点与节点i相连边的权重和;
Figure BDA0001567003970000272
表示的是与社区c内部的点连接的边的权重和,包括社区内部的边以及社区外部的边。
需要指出,尽管在每轮更新时,只能轮流将持久化存储空间中分割后的子图文件读入内存空间,但是在写回至持久化存储空间时,可以对所有子图文件进行写操作。同时,利用上述全局数组Σtot,可以保证在处理每个子图文件时,都是在上一轮最优的基础上进行的;最终通过多轮迭代,以达到最后的社区划分结果。
社区划分收敛的过程,当内存空间所加载子图文件的模块度在迭代前后的梯度满足收敛条件时,停止迭代。
其中,内存空间所加载子图文件的模块度在迭代前后的梯度为:所加载子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和;其中,收敛条件包括,内存空间所加载子图文件的模块度在迭代前后的梯度小于梯度阈值,即为保证社区迭代收敛,为每轮迭代的模块度的变化量
Figure BDA0001567003970000273
设定了阈值δ,若ΔQsum<δ,停止迭代。
可见,通过上述实施例,根据节点的连接关系,将图文件分割形成子图文件,使得每个子图文件能够在内存中独立完成计算并写回至持久化存储空间中,从而,通过一个计算节点即可完成计算任务,不需要部署大型网络。
现实生活中存在各种各样的社交网络,诸如人际关系网、交易网、运输网等等。对这些社交网络进行社区发现具有极大的意义,如在人际关系网中,可以发现出具有不同兴趣、背景的社会团体,方便进行不同的宣传策略;在交易网中,不同的社区代表不同购买力的客户群体,方便运营为他们推荐合适的商品;在资金网络中,社区有可能是潜在的洗钱团伙、刷钻联盟,方便安全部门进行相应处理;在相似店铺网络中,社区发现可以检测出商帮、价格联盟等,对商家进行指导等等。总的来看,社区发现在各种具体的网络中都能有重点的应用场景,图7展示了基于图的拓扑结构进行社区发现的例子。社区结构可以理解为社会网络的子图,而在社区中节点的连接比较稠密,各社区间顶点的连接比较稀疏,如图8所示,一个包含四个社区的社交网络图,明显地,社区内部节点连接比社区间节点连接稠密。
下面以QQ好友关系的社交网络为例,对本发明实施例QQ好友关系图文件的处理实现过程做进一步地详细说明。
参见图9,图9为本发明实施例提供的QQ好友关系图文件的处理方法的一个可选的示意图,QQ好友关系图文件的处理方法可以应用于服务器;在本发明实施例中,服务器可以包括但不限于云端服务器;如图9所示,本发明实施例中QQ好友关系图文件的处理方法的实现流程,包括以下步骤:
步骤901:提取QQ好友关系图文件并存储至持久化存储空间中,图文件包括QQ好友关系社交网络的节点、连接节点的连接关系以及连接关系的权重值。
在本发明实施例中,从QQ好友关系社交网络的数据库中提取好友的连接关系,将QQ好友关系社交网络数据库中的所有QQ用户映射为社交网络中的节点,将QQ用户之间的亲密关系映射为社交网络中连接节点的连接关系,将用户之间的连接亲密度映射为社交网络中连接关系的权重值;将所得到的映射结果整合为QQ好友关系图文件,并将QQ好友关系图文件存储至持久化存储空间中,作为示例,持久化存储空间可以是硬盘,QQ好友关系可以表示为G=(V,E,W),其中,V为QQ好友关系社交网络中节点的集合,E为QQ好友关系社交网络中连接节点的连接关系的集合,W为连接关系的权重值的集合。
作为示例,可以将从QQ好友关系社交网络的数据库中提取的用户连接关系存储为三元组(u,v,w),其中,u,v表示连接关系中的两个节点,w表示两个节点连接关系的权重值;可以理解地,用户之间的连接紧密度越大,即节点之间的连接关系越紧密,权重值越大,需要指出,QQ好友关系社交网络中连接关系的权重值可以通过多种方式计算。
步骤902:根据QQ好友关系包括的节点的连接关系,将QQ好友关系图文件分割形成QQ好友关系子图文件,其中,分割后形成的QQ好友关系子图文件所对应的节点区间互不相交。
在本发明实施例中,QQ好友关系图文件中记录了QQ社交网络中所包括的节点、以及节点之间的连接关系,首先,将QQ好友关系图文件中节点映射到三维空间中,在三维空间中节点之间的距离表示及节点之间的权重值,根据节点的连接关系,将QQ好友关系图文件中映射到三维空间的节点,根据在空间的连接关系,划分到在三维空间中互不相交的节点区间;然后,根据划分得到的节点区间,将QQ好友关系图文件根据节点区间进行分割,针对每个节点区间记录所包括的节点(相当于QQ好友关系图文件中节点的切片)以及节点之间的连接关系(相当于QQ好友关系图文件中的边的切片),从而形成与节点区间对应的QQ好友关系子图文件。
不难看出,由于QQ好友关系子图文件中仅仅记录了一个节点区间的节点及其连接关系,因此QQ好友关系子图文件的体积相较于QQ好友关系图文件能够得以显著减小,同时,在每个QQ好友关系子图文件中最大程度保留了在QQ好友关系图文件中所记录的节点之间的连接关系。
举例来说,从QQ好友关系图文件中任意选取一个节点,将此节点以及与此节点有连接关系的所有节点,组合形成一个节点区间,记为节点区间{Ii}1,同样的方式形成节点区间{Ii}2、节点区间{Ii}3…{Ii}P,其中Ii为节点的集合,最终,QQ好友关系图文件中的节点被划分到互不相交的节点区间;作为从QQ好友关系图文件中任意选取一个节点划分成节点区间的替代方式,可以按照图文件中的节点的编号进行顺序处理,将图文件中的节点划分为P个互不相交的节点区间{Ii}P,然后根据划分得到的节点区间,将持久化存储空间中的QQ好友关系图文件对应节点区间进行分割,形成与节点区间对应的QQ好友关系子图文件,QQ好友关系子图文件中记录所对应节点区间中的节点以及连接关系。
每个QQ好友关系子图文件中均定义了一个连接关系集合和节点集合,连接关系集合由集合Ei={(u,v,w)|v∈Ii}定义,节点集合Ii则包括连接关系集合中的所有节点,举例来说,依据上述节点区间的划分方式将QQ好友关系图文件进行切片,每个切片中均定义了一个边切片和节点切片,边切片由集合Ei={(u,v,w)|v∈Ii}定义,节点切片Ii则包含边切片中的所有节点。需要指出,该分割步骤,目的在于增强算法的可扩展性,让其可以在单机上处理百亿规模的连接网络,图文件的分割结果对最终的社区划分没有影响。
步骤903:将分割后的QQ好友关系子图文件加载至内存空间。
在本发明实施例中,将分割后的QQ好友关系子图文件中未迭代计算社区标签的子图文件,即将分割后的QQ好友关系子图文件中未迭代计算节点的标签的子图文件,加载到内存空间中;当所加载的QQ好友关系子图文件迭代计算社区标签完成后,在内存空间中释放所加载的QQ好友关系子图文件,并将未迭代计算社区标签的QQ好友关系子图文件,加载到内存空间中。以1个为粒度将分割后的QQ好友关系子图文件中未迭代计算节点的标签的QQ好友关系子图文件,加载到内存空间,可以提高内存空间的最小占用率,从而提升计算效率。
步骤904:初始化内存空间所加载QQ好友关系子图文件中的节点,并迭代计算内存空间所加载QQ好友关系子图文件中节点的社区标签。
在本发明实施例中,可以在Fast Unfolding算法的基础上进行改进,利用图计算平台的以节点为中心的计算逻辑,设计出了并行化的高度可扩展的大规模社交网络社区发现算法,该算法可以在单台计算机上处理数十亿节点和数百亿边的QQ好友关系巨型网络,具体步骤如下:
第一步:初始化内存空间所加载QQ好友关系子图文件中的节点:
1)为内存空间所加载QQ好友关系子图文件中的各个节点分配差异化的社区标签,即为所加载QQ好友关系子图文件中的所有节点指定一个唯一的标签
Figure BDA0001567003970000301
其中V是图中节点的集合,ci代表节点i所属的社区标签;举例来说,内存空间所加载QQ好友关系子图文件中的节点,有的节点的标签是已知的(即训练样本),有的节点的标签是未知的(即测试样本),目的在于获得测试样本的标签;初始化时,训练样本可以采用自身的已知的标签,测试样本可以随机分配标签,保证每个样本的标签是独一无二的即可,分配的社区标签可以为节点的编号,例如,节点1所属的社区标签为c1=1,节点2所属的社区标签为c2=2,节点3所属的社区标签为c3=3。
2)根据节点所分配的社区标签,计算节点的初始化的第一权重和以及社区标签的初始化第二权重和,这里,初始化的第一权重和以及初始化的第二权重和是基于初始化时所分配的标签进行计算的;其中,第一权重和以及第二权重和用于计算节点的模块度;其中,第一权重和为节点的连接关系的权重和,第二权重和为社区标签对应社区的内部具有点连接的连接关系的权重和。
举例来说,初始化全局特征,在内存空间中建立数组Σtot,在内存空间所加载QQ好友关系子图文件中的每个节点i进行初始化时,初始
Figure BDA0001567003970000311
其中
Figure BDA0001567003970000312
记录了当前所有与社区ci相连的边的权重和。由于在初始化时,每个节点都被赋予一个单独的社区,
Figure BDA0001567003970000313
此时与ki具有相同的值。
需要指出,节点初始化只在第一轮迭代的更新步骤中执行,而社区标签更新在接下来的迭代中每一轮均执行。
第二步:迭代计算内存空间所加载QQ好友关系子图文件中节点的社区标签:
计算所遍历节点具有邻接节点的社区标签时对应的模块度;其中,在第一次迭代计算时,模块度基于初始化的第一权重和以及初始化的第二权重和进行计算;后续迭代计算时,模块度基于上一次迭代更新的第一权重和以及上一次迭代更新的第二权重和进行计算。
其中,所遍历节点具有邻接节点的社区标签时对应的模块度为第一因子与第二因子的差值;其中,第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,第二因子为所遍历节点权重和的乘积、与全部连接关系权重和的比值,所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和,其中,第二因子不仅限于为所遍历节点权重和的乘积、与全部连接关系权重和的比值,还包括比值中涉及到的因子的各种变形。
可以理解地,第一因子和第二因子中所包括的第一权重和以及第二权重和,在第一次迭代计算时,是基于初始化的权重和计算的,在后续迭代计算时,是基于上一次迭代更新后的权重和计算的。
确定使模块度最大时所遍历节点所具有的社区标签,并分配给所遍历节点相应的社区标签;也就是说,节点属于邻接节点所属的社区时,会计算到节点对应不同社区的多个模块度,计算节点属于不同社区时,QQ好友关系子图文件的模块度;比较计算前后的模块度,选取使模块度最大的社区标签,分配相应社区的社区标签。
作为示例,将内存空间加载的QQ好友关系子图文件中针对不同节点的迭代计算,分配到对应的多个并行的线程;在每个线程中,基于目标节点的各邻接节点的迭代前社区标签,计算目标节点具有不同迭代前社区标签时对应的模块度,选取最大模块度对应的迭代前社区标签分配给目标节点作为迭代后社区标签;当全部线程完成后,基于目标节点的迭代后社区标签,更新目标节点的迭代前社区标签的第二权重和、以及目标节点的迭代后社区标签的第二权重和。
当内存空间所加载QQ好友关系子图文件的模块度在迭代前后的梯度满足收敛条件时,停止迭代;其中,内存空间所加载QQ好友关系子图文件的模块度在迭代前后的梯度为:所加载QQ好友关系子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和;其中,收敛条件包括,内存空间所加载QQ好友关系子图文件的模块度在迭代前后的梯度小于梯度阈值。
针对上述迭代处理的过程,举例来说,采用Fast Unfolding第二步的更新规则;但是在并行化处理时,多个线程同时对相同数据进行读写可能造成数据不一致,造成结果的不可控性。因此,本算法为每个节点定义一个额外的标签
Figure BDA0001567003970000321
Figure BDA0001567003970000322
在内存空间加载的QQ好友关系子图文件中针对不同节点的迭代计算彻底更新完成后,在写回至持久化存储空间前对相关数据进行统一更新,具体更新方式如下,对于
Figure BDA0001567003970000331
Figure BDA0001567003970000332
其中,Vj为第j个切片中节点的集合,←为赋值标志;ki为与节点i相连边的权重和,
Figure BDA0001567003970000333
表示社区c中节点与节点i相连边的权重和;
Figure BDA0001567003970000334
表示的是与社区c内部的点连接的边的权重和,包括社区内部的边以及社区外部的边。为保证社区迭代收敛,为每轮迭代的模块度的变化量
Figure BDA0001567003970000335
设定了阈值δ,若ΔQsum<δ,停止迭代。
需要指出,尽管在每轮更新时,只能轮流将持久化存储空间中分割后的QQ好友关系子图文件读入内存空间,但是在写回至持久化存储空间时,可以对所有子图文件进行写操作。同时,利用上述全局数组Σtot,可以保证在处理每个QQ好友关系子图文件时,都是在上一轮最优的基础上进行的;最终通过多轮迭代,以达到最后的社区划分结果。
采用上述并行化的高度可扩展的大规模QQ好友关系社交网络社区发现算法,可以在单台计算机上处理数十亿节点和数百亿边的QQ好友关系巨型网络,具有易操作、可移植性强等特点,解决了大规模QQ好友关系社交网络计算在空间和时间上的障碍,并且有效解决了不稳定性及社区分布不均匀的问题。
步骤905:根据迭代计算完成后得到的节点的社区标签,更新持久化存储空间中存储的QQ好友关系图文件。
在一些实施例中,将迭代计算完成后得到的节点的社区标签,写回至持久化存储空间中,更新持久化存储空间中存储的QQ好友关系图文件。
参见图10,图10是应用本发明实施例提供的社区标签计算的可选的应用场景示意图,对本发明实施例提供的实际应用场景的示例进行说明。
作为一个示例,本发明实施例提供的社区标签的计算可以实施为服务器的社区标签计算方案,社交网络用户针对终端上的社交网络客户端进行操作,终端将社交网络用户的操作数据向服务器上报,服务器将接收到的操作数据进行社区标签的计算,并基于标签向终端进行服务的推送,例如,对于QQ用户,通过服务器进行的社区标签计算,可以推荐社区内高相似节点给QQ用户,即进行好友的推荐。
综上所述,本发明实施例所提供的图文件的处理方法、装置及存储介质,通过提取图文件,并将所提取的图文件存储至持久化存储空间中,图文件包括社交网络的节点、连接所述节点的连接关系以及连接关系的权重值;根据图文件包括的节点的连接关系,将图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;并将分割后的子图文件加载至内存空间中;初始化内存空间所加载子图文件中的节点,并迭代计算内存空间所加载子图文件中节点的标签;根据迭代计算完成后得到的节点的社区标签,更新持久化存储空间中存储的图文件。通过将图文件进行分割,形成子图文件,并将子图文件加载至内存空间中,对内存空间所加载的子图文件中节点的社区标签进行迭代计算更新,因此,通过分割,相对于一次性加载大的图文件,减小了对内存空间的依赖,从而使得在内存资源有限的设备中进行计算成为可能,从而能够充分利用已有的设备进行计算,实现了资源集约的高效计算,从而可以在内存资源有限的设备上处理数十亿节点和数百亿节点的连接关系的巨型网络,具有易操作、可移植性强等特点,解决了由于针对大规模的社交网络的图文件进行计算而产生内存不足的问题。
进一步的,采用并行化的高度可扩展的大规模社交网络社区发现算法,解决了大规模社交网络计算在空间和时间上的障碍,并且有效解决了不稳定性及社区分布不均匀的问题;此外,通过设计全局数组结构,在一轮迭代结束时统一更新,解决了并行处理冲突问题,通过设计迭代终止条件,优化了并行处理效率。
通过本发明实施例所提供的图文件的处理方法、装置及存储介质,可以用于检测社会网络中的恶意社区。利用已知的恶意节点作为种子,和本发明实施例挖掘出的社区,可以扩展出一批具有相似行为、相似特征的恶意节点;
也可以用于社会网络中的好友推荐。常规的好友推荐一般是基于共同好友数这一指标;利用本发明实施例挖掘出的社区和目标节点,可以推荐社区内的高相似节点给目标节点。
还可以用于社会网络中的社区标定。采用半监督的学习方式,本发明实施例可以对每个社区所属的类别进行标定,例如:腾讯员工,喜欢玩LOL的用户等;根据这些标签,可进行精准营销等活动。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

Claims (14)

1.一种图文件的处理方法,其特征在于,包括:
提取图文件并存储至持久化存储空间中,所述图文件包括社交网络的节点、连接所述节点的连接关系以及所述连接关系的权重值;
根据所述图文件包括的节点的连接关系,将所述图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;
将分割后的子图文件中未迭代计算社区标签的子图文件,加载到内存空间中;
当所加载的子图文件迭代计算社区标签完成后,在所述内存空间中释放所加载的子图文件,并将未迭代计算社区标签的子图文件,加载到所述内存空间中;
初始化所述内存空间所加载子图文件中的节点,并迭代计算所述内存空间所加载子图文件中节点的社区标签;
根据迭代计算完成后得到的所述节点的社区标签,更新所述持久化存储空间中存储的图文件。
2.根据权利要求1所述的方法,其特征在于,所述提取图文件并存储至持久化存储空间中,包括:
从所述社交网络的数据库中提取用户连接关系;
将所述用户映射为所述社交网络中的节点,将所述用户之间的连接关系映射为所述社交网络中连接所述节点的连接关系,将所述用户之间的连接紧密度映射为所述社交网络中所述连接关系的权重值;
将所得到的映射结果整合为所述图文件,并将所述图文件存储至所述持久化存储空间中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述图文件包括的节点的连接关系,将所述图文件分割形成子图文件,包括:
根据所述图文件中的节点的连接关系,将所述图文件中的节点划分到互不相交的节点区间;
根据划分得到的所述节点区间,将所述图文件对应所述节点区间进行分割,形成与所述节点区间对应的子图文件。
4.根据权利要求1所述的方法,其特征在于,所述初始化所述内存空间加载子图文件中的节点,包括:
为所述内存空间所加载子图文件中的各个节点分配差异化的社区标签;
根据所述节点所分配的社区标签,计算所述节点的初始化的第一权重和以及所述社区标签的初始化的第二权重和;
其中,所述第一权重和以及所述第二权重和用于计算所述节点的模块度;
其中,所述第一权重和为所述节点的连接关系的权重和,所述第二权重和为所述社区标签对应社区的内部具有点连接的连接关系的权重和。
5.根据权利要求4所述的方法,其特征在于,所述迭代计算所述内存空间所加载子图文件中节点的社区标签,包括:
遍历所述加载子图文件中的节点,并执行以下迭代处理:
计算所遍历节点具有邻接节点的社区标签时对应的模块度;
确定使所述模块度最大时所遍历节点所具有的社区标签,并分配给所遍历节点相应的社区标签;
当所述内存空间所加载子图文件的模块度在迭代前后的梯度满足收敛条件时停止迭代,将相同社区标签的节点合并为新的节点。
6.根据权利要求5所述的方法,其特征在于,
所遍历节点具有邻接节点的社区标签时对应的模块度为第一因子与第二因子的差值;
其中,所述第一因子为所遍历节点的第一权重和与全部连接关系权重和的比值,所述第二因子为所遍历节点权重和的乘积、与所述全部连接关系权重和的比值,所述所遍历节点权重和的乘积为所遍历节点的第一权重和、与所遍历节点具有邻接节点的社区标签的第二权重和的乘积,所述全部连接关系权重和为所加载子图文件包括的连接关系的权重的加和。
7.根据权利要求5所述的方法,其特征在于,
所述内存空间所加载子图文件的模块度在迭代前后的梯度为:所加载子图文件中节点具有迭代后社区标签时的模块度,与具有迭代前社区标签时的模块度的差值的加和。
8.根据权利要求5所述的方法,其特征在于,所述收敛条件包括:所述内存空间所加载子图文件的模块度在迭代前后的梯度小于梯度阈值。
9.根据权利要求1所述的方法,其特征在于,所述迭代计算所述内存空间所加载子图文件中节点的社区标签,包括:
将所述内存空间加载的子图文件中针对不同节点的迭代计算,分配到对应的多个并行的线程;
在每个线程中,基于目标节点的各邻接节点的迭代前社区标签,计算所述目标节点具有不同迭代前社区标签时对应的模块度,选取最大模块度对应的迭代前社区标签分配给所述目标节点作为迭代后社区标签;
当全部所述线程完成后,基于所述目标节点的迭代后社区标签,更新所述目标节点的迭代前社区标签的第二权重和、以及所述目标节点的迭代后社区标签的第二权重和。
10.一种图文件的处理装置,其特征在于,包括:
提取模块,用于提取图文件并存储至持久化存储空间中,所述图文件包括社交网络的节点、连接所述节点的连接关系以及所述连接关系的权重值;
分割模块,用于根据所述图文件包括的节点的连接关系,将所述图文件分割形成子图文件,其中,分割后形成的子图文件所对应的节点区间互不相交;
加载模块,用于将分割后的子图文件中未迭代计算社区标签的子图文件,加载到内存空间中;当所加载的子图文件迭代计算社区标签完成后,在所述内存空间中释放所加载的子图文件,并将未迭代计算社区标签的子图文件,加载到所述内存空间中;
初始化模块,用于初始化所述内存空间所加载子图文件中的节点;
计算模块,用于迭代计算所述内存空间所加载子图文件中节点的社区标签;
更新模块,用于根据迭代计算完成后得到的所述节点的社区标签,更新所述持久化存储空间中存储的图文件。
11.根据权利要求10所述的装置,其特征在于,所述提取模块,具体用于:
从所述社交网络的数据库中提取用户连接关系;
将所述用户映射为所述社交网络中的节点,将所述用户之间的连接关系映射为所述社交网络中连接所述节点的连接关系,将所述用户之间的连接紧密度映射为所述社交网络中所述连接关系的权重值;
将所得到的映射结果整合为所述图文件,并将所述图文件存储至所述持久化存储空间中。
12.根据权利要求10所述的装置,其特征在于,所述分割模块,具体用于:
根据所述图文件中的节点的连接关系,将所述图文件中的节点划分到互不相交的节点区间;
根据划分得到的所述节点区间,将所述图文件对应所述节点区间进行分割,形成与所述节点区间对应的子图文件。
13.一种计算机可读存储介质,其特征在于,存储有可执行程序,所述可执行程序被处理器执行时,实现如权利要求1至9任一项所述的图文件的处理方法。
14.一种图文件的处理装置,其特征在于,包括:
存储器,配置为存储可执行程序;
处理器,配置为执行所述存储器中存储的可执行程序时,实现如权利要求1至9任一项所述的图文件的处理方法。
CN201810103371.0A 2018-02-01 2018-02-01 一种图文件的处理方法、装置及存储介质 Active CN110110154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810103371.0A CN110110154B (zh) 2018-02-01 2018-02-01 一种图文件的处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810103371.0A CN110110154B (zh) 2018-02-01 2018-02-01 一种图文件的处理方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN110110154A CN110110154A (zh) 2019-08-09
CN110110154B true CN110110154B (zh) 2023-07-11

Family

ID=67483638

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810103371.0A Active CN110110154B (zh) 2018-02-01 2018-02-01 一种图文件的处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN110110154B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110717056B (zh) * 2019-09-03 2023-05-23 平安科技(深圳)有限公司 Noe4j图数据库的更新维护方法、装置及计算机可读存储介质
CN111814006A (zh) * 2020-07-27 2020-10-23 深圳壹账通智能科技有限公司 图网络结构的分析方法、装置和计算机设备
CN114866264A (zh) * 2021-01-19 2022-08-05 上海观安信息技术股份有限公司 一种基于半监督学习算法的dga域名检测与家族聚类的方法
CN113568736B (zh) * 2021-06-24 2024-07-30 阿里巴巴创新公司 数据处理方法及装置

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003270985A1 (en) * 2002-12-23 2004-07-08 Canon Kabushiki Kaisha Method for Presenting Hierarchical Data
WO2007081519A2 (en) * 2005-12-30 2007-07-19 Steven Kays Genius adaptive design
CN103136267A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 一种基于社区的专家挖掘方法与装置
CN103678671A (zh) * 2013-12-25 2014-03-26 福州大学 一种社交网络中的动态社区检测方法
CN103729475A (zh) * 2014-01-24 2014-04-16 福州大学 一种社交网络中的多标签传播重叠社区发现方法
CN103744933A (zh) * 2013-12-31 2014-04-23 南京理工大学 一种基于并行化模块度优化的社区发现方法
CN104077279A (zh) * 2013-03-25 2014-10-01 中兴通讯股份有限公司 一种并行社区发现方法和装置
CN104077280A (zh) * 2013-03-25 2014-10-01 中兴通讯股份有限公司 社区发现并行化方法和系统、主节点和运算节点设备
CN104683405A (zh) * 2013-11-29 2015-06-03 国际商业机器公司 在车联网中集群服务器分发地图匹配任务的方法和装置
CN106886524A (zh) * 2015-12-15 2017-06-23 天津科技大学 一种基于随机游走的社会网络社区划分方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2002953555A0 (en) * 2002-12-23 2003-01-16 Canon Kabushiki Kaisha Method for presenting hierarchical data
US10795949B2 (en) * 2007-07-26 2020-10-06 Hamid Hatami-Hanza Methods and systems for investigation of compositions of ontological subjects and intelligent systems therefrom
US10324598B2 (en) * 2009-12-18 2019-06-18 Graphika, Inc. System and method for a search engine content filter

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2003270985A1 (en) * 2002-12-23 2004-07-08 Canon Kabushiki Kaisha Method for Presenting Hierarchical Data
WO2007081519A2 (en) * 2005-12-30 2007-07-19 Steven Kays Genius adaptive design
CN103136267A (zh) * 2011-12-01 2013-06-05 腾讯科技(深圳)有限公司 一种基于社区的专家挖掘方法与装置
CN104077279A (zh) * 2013-03-25 2014-10-01 中兴通讯股份有限公司 一种并行社区发现方法和装置
CN104077280A (zh) * 2013-03-25 2014-10-01 中兴通讯股份有限公司 社区发现并行化方法和系统、主节点和运算节点设备
CN104683405A (zh) * 2013-11-29 2015-06-03 国际商业机器公司 在车联网中集群服务器分发地图匹配任务的方法和装置
CN103678671A (zh) * 2013-12-25 2014-03-26 福州大学 一种社交网络中的动态社区检测方法
CN103744933A (zh) * 2013-12-31 2014-04-23 南京理工大学 一种基于并行化模块度优化的社区发现方法
CN103729475A (zh) * 2014-01-24 2014-04-16 福州大学 一种社交网络中的多标签传播重叠社区发现方法
CN106886524A (zh) * 2015-12-15 2017-06-23 天津科技大学 一种基于随机游走的社会网络社区划分方法

Also Published As

Publication number Publication date
CN110110154A (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
CN110110154B (zh) 一种图文件的处理方法、装置及存储介质
US20210049209A1 (en) Distributed graph embedding method and apparatus, device, and system
JP6459968B2 (ja) 商品推薦装置、商品推薦方法、及び、プログラム
WO2022116689A1 (zh) 图数据处理方法、装置、计算机设备和存储介质
CN104077723B (zh) 一种社交网络推荐系统及方法
Zare et al. Determination of Customer Satisfaction using Improved K-means algorithm
CN105205052A (zh) 一种数据挖掘方法及装置
CN115358809A (zh) 一种基于图对比学习的多意图推荐方法及装置
CN116341956A (zh) 一种数据资产估计方法、系统、装置以及数据中台
CN110889493A (zh) 针对关系网络添加扰动的方法及装置
Xu et al. A product requirement development method based on multi-layer heterogeneous networks
Liu et al. Scalable and Effective Implicit Graph Neural Networks on Large Graphs
CN111275480B (zh) 面向多维稀疏销售数据仓库的欺诈行为挖掘方法
Huang et al. Community detection algorithm for social network based on node intimacy and graph embedding model
EP2541409B1 (en) Parallelization of large scale data clustering analytics
CN116415957A (zh) 异常交易对象识别方法、装置、计算机设备和存储介质
CN113704326B (zh) 基于知识图谱的异常结构挖掘方法、装置及可读存储介质
Gote et al. Predicting variable-length paths in networked systems using multi-order generative models
Godahewa et al. SETAR-Tree: a novel and accurate tree algorithm for global time series forecasting
CN115456708A (zh) 推荐模型的训练方法、装置、电子设备和存储介质
Ortelli et al. Resampling estimation of discrete choice models
Petrozziello et al. Data analytics for online travelling recommendation system: a case study
Cerqueira et al. Constructive aggregation and its application to forecasting with dynamic ensembles
Kolomeychenko et al. Detection of Communities in a Graph of Interactive Objects
Göschlberger et al. BiRank vs PageRank: Using SNA on Company Register Data for Fiscal Risk Prediction

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