具体实施方式
下面参考附图详细描述本发明的各实施方式。附图中的流程图和框图,图示了按照本发明各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为备选的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。为方便下文描述,首先介绍本申请中技术术语的定义。
在此使用的术语“社交网络”或者“社交网站”是指向对特定对象感兴趣或只是一起“闲逛”的人们提供虚拟社区的web站点。成员通过语音、聊天、即时消息、视频会议和博客等技术手段进行通信。而且,社交网络通常向成员提供联系其他成员的好友的方法。这种站点还可以用作亲自会面的媒介。
社交网络为其用户或成员提供与该社交网络的其他用户进行通信和交互的能力(注意,在社交网络的“成员”和“用户”具有等同的含义,因此可互换使用)。在操作中,社交网络的用户可以首先进行登录,继而与其好友或者其他用户进行互动。在此使用的术语“好友”是指用户通过社交网络形成有连接、关联或者其他关系的任何其他用户。社交网络中的连接通常是双向的(但不是必须的),因此术语“好友”可能依赖于参照系。注意,好友之间的连接可以是直接连接;然而,社交网络的某些实施方式允许经由一级或者多级间接连接而形成好友关系。
另外,术语“好友”并非必须要求用户在现实生活中实际上是朋友,它仅仅表示社交网络中的关系。然而应当注意,在本发明中,当好友在真实世界中彼此相识时,这两个好友在社交网络中通常具有好友关系。在本发明的实施方式中并不特意区分相识、具有好友关系以及在表示好友的节点之间具有边,另外以节点表示好友,也并不特意区分好友和节点。在下文中,将仅以社交网络中的用户如何对自己的好友进行分组,来具体说明如何实现本发明的方法和装置。
图1示意性示出了社交网络中好友之间的关系的图示100。应当注意,图1示出的是特定用户的好友,也即在该用户的好友列表中的好友。在图1中,以节点表示用户的好友,而以节点之间的边表示好友之间的关系。例如,节点102和104之间存在边,这表示好友102和104彼此之间是好友;节点102和106之间没有边,这表示好友102和106之间不具有好友关系。
本发明进行分组时所基于的一个原理在于,位于同一分组内的好友之间通常彼此相识,并且相识的好友通常在社交网络中具有好友关系。例如“中学同学”分组中的好友通常是中学同班或者同年级同学,通常他们会彼此“添加好友”。反映到关系图中,表示彼此相识的好友的节点之间具有边,因而可以基于关系图中由节点和边构成的“团”来对好友进行分组。
例如对于图1所示的关系图,节点102、104、108、110和112构成全连通子图,即,在上述节点中任何一对节点之间都具有边。这表示,由上述节点表示的5个好友之间分别具有好友关系,因而可以将这5个好友划分在一个分组内。又例如,对于节点106,该节点仅与节点112和110分别具有边,因而可以认为用户106不太可能与上述5个彼此相识的好友属于同一类。
应当注意,本发明中所述的“团”是指用户好友的关系图中的子图,并且该子图的连通率满足特定的阈值。连通率表示一个图或子图中存在的边的数量与在任意两个节点间均具有边时边的数量的比值。例如,对于由节点102、104、108、110和112构成的子图(图1中虚线左侧的部分):即此时为全连通子图。又例如,对于整个图1:
根据本发明的一个实施方式,示出了一种用于对用户的好友进行分组的方法,包括:基于用户的好友列表中多个好友之间的关系,生成至少一个完全子图;扩张至少一个完全子图以形成至少一个团;以及将至少一个团之一内的好友划分至一个分组;其中团的连通率不低于第一阈值,第一阈值与用户的好友列表中的好友数量相关联。
下面参见图2详细描述,图2示意性示出了根据本发明一个实施方式的对用户的好友进行分组的方法的流程图200。在步骤S202中,基于用户的好友列表中多个好友之间的关系,生成至少一个完全子图。在此,可以以每个好友注册时的标识符(例如,注册号)来作为关系图中的节点标识。注册号越小则该用户的注册时间越早,可以认为注册号较小的用户因使用时间较长而具有较高优先级,或者还可以采用其他规则区分用户的优先级。提取完全子图的目的在于将完全子图作为寻找“团”的起点,因为完全子图内的好友彼此都相识,因而以此为基础更易于获得正确性较高的分组。
在步骤S204中,扩张至少一个完全子图以形成至少一个团。应当注意,此处的团的连通率不低于第一阈值,第一阈值与用户的好友列表中的好友数量相关联。根据本发明的一个实施方式,将对好友进行分组的问题转换为在关系图中寻找连通率满足特定要求的团,以保证该团内的好友之间基本上彼此都是相识的。
例如,基于用户对好友分组准确程度的要求,可以取0.7-0.8之间的值来作为第一阈值,该第一阈值越高则准确分组的可能性越高,反之则越低。如果用户仅希望粗略地对好友进行分类,还可以选择更低的第一阈值,如果希望准确分组则可以选取高于0.8的第一阈值。
继而在步骤S206中,将至少一个团之一内的好友划分至一个分组。经过步骤S202和S204后获得的团已经保证了其中的好友基本上都彼此相识,因而将团内的好友划分至一个分组即可实现将好友分类。应当注意,可以形成一个或者多个团,可以仅将一个团内的好友划分至一个分组,还可以将多个或者全部团内的好友分别划分至相应的分组。
根据本发明的一个实施方式,基于用户的好友列表中多个好友之间的关系、生成至少一个完全子图包括:基于多个好友各自具有的好友数量,对好友列表中的多个好友进行排序;以及基于排序添加表示用户的好友的点,以生成至少一个完全子图。
基于用户的好友自身具有好友的数量来对好友列表进行排序目的在于,在生成完全子图时首先考虑自身好友数量较多的好友,以加快生成完全子图的速度。当列表中两个好友自身的好友数量相等时,可以对注册号较小的用户赋予较高优先级。基于另一策略,如果经统计发现新注册的用户在近期使用社交网络的频率更高,还可以对注册号较大的用户赋予较高优先级。
根据排序后的好友列表来向关系图(最初为空)中逐个添加表示好友的节点。图3示意性示出了根据本发明一个实施方式的生成完全子图的方法的流程图300。在初始时完全子图为空,通过遍历排序后列表中的每个好友来添加表示好友的节点。在步骤S302中,按照排序后好友列表的顺序加入一个好友。在步骤S304中,判断当前好友是否与某个子图构成完全图。如果判断结果为是,则在步骤S306将当前好友加入该子图,否则在步骤S308利用当前好友形成单独子图(此时仅包括表示当前好友的一个节点)。在步骤S310中,如果存在下一好友,则操作流程返回至步骤S302,否则结束。
在本发明的一个实施方式中,至少一个完全子图中的每个是经过补点后的单独完全子图。在此“补点”是指为保留好友之间的关系而额外添加点的过程。
在经过图3所示步骤之后,还可能存在孤立节点的情况并且这有可能导致丢失某些完全子图,因而需要进行“补点”的操作。图4示意性示出了根据本发明一个实施方式的在生成完全子图期间的各子图的示意图400。图4A示出了表示好友402、404、406和408之间的真实好友关系的图示;图4B示出了经过图3所示步骤后形成的关系图400B。例如节点402、404、406位于排序后好友队列的前端,因而首先形成了左侧三角形的完全子图。尽管节点408与节点402和406也能形成完全子图,然而根据步骤S304,由于将节点408加入左侧完全子图后不能形成完全子图,操作流程前进至步骤S308使得节点408成为单独的子图(仅包括一个节点)。
图4C示出了进行补点后的图示,即,向节点408所在子图添加节点402’和406’以便记录节点408与节点402和406之间的好友关系。经过补点之后,多个完全子图作为形成团的基础成为下一步骤的输入。
根据本发明的一个实施方式,扩张至少一个完全子图以形成至少一个团包括:向至少一个完全子图添加表示用户的好友的点以形成扩张后的子图;基于相似性规则合并扩张后的子图以形成至少一个团。应当注意,在向各完全子图中添加节点期间,应当保证基于完全子图形成的团的连通率满足特定标准,否则不能保证分组的准确性。由于在形成团之后还可以存在优化的步骤,因而在形成团期间,团的连通率应当满足的标准可以与第一阈值相同,或者是不同于上文所述第一阈值的其他阈值,例如可以低于或者高于第一阈值。
根据本发明的一个实施方式,向至少一个完全子图添加表示用户的好友的点以形成扩张后的子图包括:如果加入点后形成的子图的连通率不低于第二阈值则添加点。
图5A示意性示出了根据本发明一个实施方式的向团中添加点以进行扩张的示意图500A。图5A左侧示出了在扩张期间形成的包括节点502、504、506和508的团。虚线示出了向该团添加节点510后节点510与其他各节点的好友关系。应当注意,此时团的连通率从原来的变化为例如选取第二阈值为0.8时,则添加可以节点510。
图5B示意性示出了根据本发明一个实施方式的向团中添加点以进行扩张的另一示意图500B。如果此时节点510仅与节点502具有好友关系,则加入节点510后团的连通率从原来的变化为例如选取第二阈值为0.8时,则不添加节点510。本领域技术人员可以根据具体情况选取不同的第二阈值。
应当注意,因为逐个添加节点,可以将满足条件的节点置入候选节点列表,并在候选列表构建完毕时一次性添加候选列表中的全部节点以便节省计算资源。另外,在扩张子图时将最初的完全子图作为核心来添加节点,这可以避免过度扩张的问题。
根据本发明的另一实施方式,还包括删除杂点的过程,也即删除使得扩张后的子图的连通率低于第三阈值的点。由于向完全子图中添加节点是逐个添加节点的逐步扩张过程,新节点的添加可能会导致扩张后团中的某个节点使得团的连通率较低。这代表该节点所表示的用户与团中的较少用户相识,因而为保证分组的正确性需要删除这样的点。例如,可以设置第三阈值为0.8。
根据本发明的一个实施方式,基于相似性规则合并扩张后的子图以形成至少一个团包括,如果两个团中重复节点的个数大于或等于较小团中节点个数的50%,则合并两个团。应当注意,在参见图4A至图4C所示的“补点”操作中添加了重复节点,因而合并相似子图可以确保尽量减少多个团之间的重复节点,并尽量找到连通率满足要求的尽量大的团。
图6A和图6B分别示意性示出了根据本发明一个实施方式的合并相似子图前后的图示600A和600B。在图600A中,左侧的子图610与右侧子图620具有重复节点602(602’)和604(604’)。此时,在较小子图(右侧子图620)中的节点数为3,而子图610和620的重复节点个数为2。由于2/3=66.67%大于较小子图620的节点数的50%,因而将子图610和620合并以形成如图6B所示子图630。
根据本发明的一个实施方式,在合并子图之后还包括:从多个团中的每个团中删除使得团的连通率低于第一阈值的点。在形成团的过程中,由于经历了补点、添加点、删除杂点、合并等步骤中的一个或者多个,可能会使得合并后的子图中的某些点不满足分组的条件,因而应当删除这些“坏点”以保证连通率。
图7示意性示出了根据本发明一个实施方式的计算第一阈值的函数图示700。根据本发明的一个实施方式,第一阈值y表示为:y=0.6×exp(-0.0035×x),其中x表示用户的好友列表中的好友数量。如图7所示,横坐标表示好友数目而纵坐标表示由这些好友形成的团的连通率。在此实施方式中选择了系数0.6,因而函数y=0.6×exp(-0.0035×x)的取值为小于0.6的正数。根据本发明的一个实施方式,对于具有不同数量好友的用户,还可以选择不同的函数来计算第一阈值。例如如果某用户的好友数量较少,则可以选择较大的系数以便分组结果更准确,或者还可以选择其他的指数值。上述计算公式是基于对被划分至同一分组中的好友形成的团的连通率进行统计分析而获得的。根据其他实施方式,本领域技术人员还可以选择取值空间在(0,1]范围内的其他函数。
图8示意性示出了根据本发明一个实施方式的对用户的好友进行分组的装置的结构图800。在一个实施方式中,提供了一种用于对用户的好友进行分组的装置,包括:用于基于用户的好友列表中多个好友之间的关系,生成至少一个完全子图的装置810;用于扩张至少一个完全子图以形成至少一个团的装置820;以及用于将至少一个团之一内的好友划分至一个分组的装置830;其中团的连通率不低于第一阈值,第一阈值与用户的好友列表中的好友数量相关联。
根据本发明的一个实施方式,其中用于基于用户的好友列表中多个好友之间的关系、生成至少一个完全子图的装置包括:用于基于多个好友各自具有的好友数量、对好友列表中的多个好友进行排序的装置;以及用于基于排序添加表示用户的好友的点、以生成至少一个完全子图的装置。
根据本发明的一个实施方式,其中至少一个完全子图中的每个是经过补点后的单独完全子图。
根据本发明的一个实施方式,其中用于扩张至少一个完全子图以形成至少一个团的装置包括:用于向至少一个完全子图添加表示用户的好友的点以形成扩张后的子图的装置;用于基于相似性规则合并扩张后的子图以形成至少一个团的装置。
根据本发明的一个实施方式,其中用于向至少一个完全子图添加表示用户的好友的点以形成扩张后的子图的装置包括:用于在加入点后形成的子图的连通率不低于第二阈值时添加点的装置。
根据本发明的一个实施方式,还包括:用于删除使得扩张后的子图的连通率低于第三阈值的点的装置。
根据本发明的一个实施方式,还包括:用于从多个团中的每个团中删除使得团的连通率低于第一阈值的点的装置。
根据本发明的一个实施方式,其中第一阈值y表示为:y=0.6×exp(-0.0035×x),x表示用户的好友列表中的好友数量。
图9示出了适于用来实践本发明实施方式的计算机系统的示意性框图。如图9所示,计算机系统可以包括:CPU(中央处理单元)901、RAM(随机存取存储器)902、ROM(只读存储器)903、系统总线904、硬盘控制器905、键盘控制器906、串行接口控制器907、并行接口控制器908、显示控制器909、硬盘910、键盘911、串行外部设备912、并行外部设备913和显示器914。在这些设备中,与系统总线904耦合的有CPU 901、RAM 902、ROM 903、硬盘控制器905、键盘控制器906、串行控制器907、并行控制器908和显示控制器909。硬盘910与硬盘控制器905耦合,键盘911与键盘控制器906耦合,串行外部设备912与串行接口控制器907耦合,并行外部设备913与并行接口控制器908耦合,以及显示器914与显示控制器909耦合。应当理解,图9所示的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
应当理解,图9所示的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
应当注意,本发明的实施方式可以通过硬件、软件或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的设备和方法可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的设备及其模块可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
说明书中提及的通信网络可以包括各类网络,包括但不限于局域网(“LAN”),广域网(“WAN”),根据IP协议的网络(例如,因特网)以及端对端网络(例如,ad hoc对等网络)。
应当注意,尽管在上文详细描述中提及了设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明,但是应该理解,本发明并不限于所公开的具体实施方式。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。所附权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。