具体实施方式
公开了用于为社交网络用户生成社交圈的系统和方法。用户可能出于各种原因存在于社交圈中,诸如与社交圈中的其它成员分享共同兴趣、与社交圈的创建者以一方式相关(例如,作为家庭成员、朋友、邻居或同事)、以及等等。本文所公开的系统和方法的示例利用了目标用户的朋友与这些朋友加入的社交圈之间的关系来生成可以推荐给目标用户的候选社交圈。本文所公开的另一示例在为目标用户生成候选社交圈时还可以考虑朋友所发布的内容之间的相似性。
以下,参考附图详细地描述依据本公开的某些示例。
图1是依据本公开的示例的可以为社交网络用户生成社交圈的系统的框图。该系统通常由附图标记100指代。本领域普通技术人员将意识到,图1中所示出的功能框和设备可以包括硬件元素、软件元素或者硬件元素和软件元素这二者的组合,所述硬件元素包括电路,所述软件元素包括存储在有形的、机器可读介质上的计算机代码。另外,系统100的功能块和设备不过是在示例中可以实现的功能块和设备的一个示例。基于针对特定电子设备的设计考虑,本领域普通技术人员会能够容易地定义特定的功能块。
系统100可以包括通过网络106进行通信的服务器102和一个或更多个客户端计算机104。如图1中所图示的,服务器102可以包括可以通过总线110连接到显示器112、键盘114、一个或多个输入设备116、以及诸如打印机118之类的输出设备的一个或更多个处理器108。输入设备116可以包括诸如鼠标或触摸屏之类的设备。处理器108可以包括在云计算架构中的单核、多核或核集群。服务器102还可以通过总线110连接到网络接口卡(NIC)120。NIC 120可以将服务器102连接到网络106。
网络106可以是局域网(LAN)、广域网(WAN)、或另一网络配置。网络106可以包括路由器、交换机、调制解调器、或者被用于互连的任何其他种类的接口设备。网络106可以连接到若干客户端计算机104。通过网络106,若干客户端计算机104可以连接到服务器102。客户端计算机104可以相似地被构造为服务器102。
服务器102可以具有在工作中通过总线110耦合到处理器108的其它单元。这些单元可以包括有形的、机器可读储存媒体,诸如储存器122。储存器122可以包括硬件驱动器、只读存储器(ROM)、随机存取存储器(RAM)、RAM驱动器、闪存驱动器、光学驱动器、高速缓冲存储器等等的任意组合。储存器122可以包括模型构建单元124、分级单元126和生成单元128。储存器122可以称为存储设备。
模型构建单元124可以基于用户在社交网络中的朋友和这些朋友所加入的社交圈构建个性化圈-用户图(PCUG)模型。在社交网络中,在创建社交圈时,创建者把成员放进该圈中。把用户加为特定社交圈的成员可以是出于任何原因。把用户放在社交圈中的行为可以被视为针对用户的标记动作。具有相似标记的用户(即,为相同社交圈的成员)可以享有一些共同特征。而且,依据创建者的观点,被放进相同社交圈中的用户可能具有某共同点。本文所公开的PCUG模型根据现有社交圈结构以及用户与社交圈之间的关系来建立。
图2图示了依据本公开的示例的PCUG模型的示意图。在图2中所示的PCUG模型中,左侧的节点表示将要针对其生成社交圈的目标用户,在中间的用户节点u1 至un表示目标用户的朋友,以及在右侧的圈节点c1至cm 表示朋友u1至 un分别加入的社交圈,其中,如果目标用户的朋友加入了一社交圈,则存在把用户节点连接到该社交圈节点的连接(即,边)。如果用户u1至 un具有至相同社交圈的边,则他们共同出现。两个用户能够共同出现在一个以上社交圈中是可能的。本文所描述的PCUG模型可以基于由目标用户的朋友中的任何一个创建的现有社交圈来构建。对于目标用户的每位朋友,此朋友所加入的社交圈可以被合并以及可以增加此朋友与这些社交圈之间的连接。如果朋友的社交圈已经存在,则不需要增加该社交圈,并且取而代之的是将仅在该朋友与该社交圈之间增加连接。结果,将创建如图2中所示的无向偶图。请注意,此图可以采用任何合适的数据结构来加以存储。
分级单元126可以至少部分地基于用户与社交圈之间的连接对PCUG模型中的社交圈进行分级。生成单元128可以基于所述社交圈的等级生成候选社交圈。
现在参考图3,图3是依据本公开的示例的为社交网络用户生成社交圈的方法的过程流程图。在块301,基于用户的朋友和所述朋友所加入的社交圈来构建个性化圈-用户图(PCUG)模型。PCUG模型的示例在图2中示出并且已经在上面予以描述。在块302,至少部分地基于朋友与社交圈之间的连接对PCUG模型中的社交圈进行分级。依据示例,使用以下公式(1)和(2)迭代地计算用户(即,目标用户的朋友)和社交圈的等级,直到列表和所有用户的等级值稳定为止。
其中|c|是社交圈c的成员数以及|Cu|是用户u所在的社交圈。给定目标用户ui,Rc 的初始值为, 其中ui f为用户ui的朋友集。函数circle (u,c) 的定义为:
在块303,基于所述社交圈的等级生成候选社交圈。可以把候选社交圈推荐给用户、用于广告目的等等。例如,在迭代计算收敛之后,前k个等级的社交圈将被选为例如要推荐给用户的候选。
依据本公开的另一示例,分级还可以包括基于朋友所发布的内容之间的相似性对社交圈进行分级;将根据内容相似性所获得的等级与根据所述PCUG模型所获得的等级进行组合以获得组合等级;以及基于组合等级对社交圈进行分级。
现在参考图4,图4是依据本公开的另一示例的为社交网络用户生成社交圈的另一方法的过程流程图。如所示出的,除了图3还包括块401之外,图4中的方法几乎与图3中的方法相同。块402-404与块301-303相同,并且本文将不详细描述。在块401,在构建PCUG模型之前,该方法还包括依据社交圈名字的相似性合并社交圈。
用户可以采用各种方式来命名他的或她的所创建的社交圈。例如,推特用户可以与他的喜欢打篮球的朋友创建圈子(或者采用推特的术语的列表)并且将该圈子命名为“足球”。与大多数标记系统类似,用户所生成的社交圈的名字可以是任意的、模糊的并且难以理解的。因而,使用它们的名字可能难以标识出相似的圈子。例如,“celeb”与“celebrity”以及“entertainment”与“entertnmnt”具有相同的含义但是外观不同。另外,上面所描述的PCUG模型由于共同出现的关系的偏斜度的原因可能高度不平衡(一小部分用户被加入到大量的社交圈中,而大多数用户被加入到少数社交圈中)。为了更好地构建个性化圈-用户图(PCUG)模型以及利用相似性,可以依据它们名字的相似性来合并社交圈。
现在参照图5,图5是依据本公开的示例的基于它们名字的相似性合并社交圈的方法的过程流程图。在块501,通过对社交圈的名字应用词干提取来处理它们。在块502,基于社交圈的被提取词干后的名字之间的距离对PCUG模型中的社交圈进行聚类。然后在块503,将聚类中的社交圈合并为一个社交圈。依据示例,社交圈的被提取词干后的名字之间的距离可以是编辑距离,并且此编辑距离还可以被归一化。例如,该距离可以被定义为:
其中De 是社交圈名c i 与 c j 之间的编辑距离。上面公式(4)考虑了名字的长度。例如, “entertainment”与“entertainments”之间的编辑距离是1。同样地,“as”与“a”之间的编辑距离也是1。然而, “entertainment”与“entertainments”比“as”与 “a”相似得多得多。
社交圈的名字去重可以改进PCUG模型的结构。然而,仍然存在没有边的单用户节点和仅有一条边的社交圈节点。这两种节点可以从PCUG模型中去除,这是由于没有边的用户节点在模型中被视为噪声,并且创建仅包含一个成员的社交圈可能无用。
如上所述,在示例中,如果社交圈具有相似的名字则可以将它们合并。用户被添加到特定合并社交圈集内的一个以上的社交圈中是可能的。例如,音乐迷可能被添加到由他的/她的朋友创建的许多与音乐相关的圈子。在合并之后,所有的具有类似名字的与音乐相关的社交圈被合并为一个单独的圈子。在此情况中,此用户仅具有一个连接到合并的音乐圈节点的边,即使他曾连接到许多不同的与音乐相关的圈子。为了区分此类关系,依据示例,可以给每个被合并的社交圈和其成员之间的连接(即,边)赋予权重,其中权重是包括被合并的社交圈中的所述成员的构成的社交圈的数目的函数。例如,每条边的权重可以如下计算:
其中是已经被合并至圈c的原始社交圈集。
给定由上面描述的方法生成的候选社交圈集,应当发现,许多候选社交圈享有共同的成员。这可能是由于至少两个原因:用户可以被放进多个社交圈中的事实,以及相似社交圈的聚类和合并。为了减少推荐给用户的社交圈之间的重叠,依据本公开的示例,社交圈的分级还可以基于它们之间的相似性。例如,通过考虑社交圈成员的多样性,可以使用最大区间相关度算法对候选社交圈进行分级和选择。依据示例,可以使用以下公式:
在此公式中,C是候选社交圈集,S是未被选为候选的C的子集,r(ci) 是PCUG模型中ci 的等级分数,以及Sim()是用来计算两个圈子的成员相似性的函数。在示例中,两个社交圈之间的相似性被定义为这两个社交圈之间的相同成员的百分比。λ是例如0-1范围内的参数,用来平衡分级结果以及其多样性,并且可以按需设定。在示例中,从PCUG模型生成的第一候选社交圈可以被选为第一发现的社交圈(即,ci∈C?S),然后可以使用公式(6)来计算候选社交圈中其余的等级并且相应地对它们进行分级。在那之后,把前k个候选选为候选社交圈。
现在参考图6,图6是依据本公开的另一示例的为社交网络用户生成社交圈的另一方法的过程流程图。如所示出的,除了图6还包括块604之外,图6中的方法几乎与图3中的方法相同。块601-603与块301-303相同,并且本文将不详细描述。在块604,在生成候选社交圈之后,基于用户的朋友是否在所述候选社交圈中可以将所述朋友标识为该候选社交圈的成员。
如上所述,在PCUG模型中,如果用户具有连接至候选社交圈的边,则用户将被选为该社交圈的成员,不管该用户是否真正与该圈子有关。实际上,十分可能的是用户被放进她可能不与之相关的社交圈中。例如,用户可能被放进用户碰巧与之踢了一次足球的某人的命名为“足球”的社交圈中。在这样的情况中,用户可能与这些圈子不相关,或者可能甚至与它们不相干。此情形可以通过检测和移除不相干用户来解决。
图7图示了依据本公开的另一示例的为社交网络用户生成社交圈的另一方法的过程流程图。图7的方法考虑了上面所描述的可能不相干用户的情况。如所示出的,除了图7还包括块705之外,图7中的方法几乎与图6中的方法相同。块701-704与块601-604相同,并且本文将不详细描述。在块705,在针对每个候选社交圈标识成员之后,可以从候选社交圈移除不相干成员。在示例中,从每个候选社交圈移除不相干成员可以基于所述成员与所述候选社交圈之间的连接的权重、成员共同出现、以及所述成员所发布的内容与所述候选社交圈之间的相似性中的至少一个。
例如,可以采用抽样方法来选择针对社交圈的代表性内容,并且然后可以计算此内容与成员所发布的内容之间的相似性。如果相似性低于一定阈限,则可以把该用户视为不相干并且从该候选社交圈移除该用户。另外,可以使用赋予用户节点与社交圈节点之间的每条边或连接的权重来移除不相干用户。例如,可以依据它们的权重对候选社交圈的成员进行分级,并且可以移除具有低等级的用户。
取代探究社交圈与其成员之间的直接关系,另一方法可以利用圈子成员之间的共同出现关系来移除不相干成员。可以将两个成员的共同出现计算为他们被放进相同社交圈中的次数,如以下公式示出:
其中是原始社交圈集。社交圈成员依据该成员与所有其它成员共同出现的总次数(即,等级分数)来分级,如下所示:
如果其等级分数低于一定阈限,则移除该成员。此阈限可以固定为一定值,诸如一,或者可以使用诸如Otsu阈限方法之类的方法来自动选择此阈限。
现在参考图8,图8是示出非暂时性计算机可读媒体的框图,所述媒体存储用于依据本公开的示例为社交网络用户生成社交圈的代码。非暂时性计算机可读媒体通常由附图标记800指代。
非暂时性计算机可读媒体800可以对应于存储计算机实现的指令(诸如编程代码等等)的任何典型的储存设备。例如,非暂时性计算机可读媒体800可以包括非易失性存储器、易失性存储器、和/或一个或更多个储存设备中的一个或更多个。非易失性存储器的示例包括但不限于,电可擦可编程只读存储器(EEPROM)和只读存储器(ROM)。易失性存储器的示例包括但不限于静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)。储存设备的示例包括但不限于硬盘、紧凑盘驱动器、数字多用途盘驱动器和闪存存储设备。
处理器801通常检索和执行非暂时性计算机可读媒体800中存储的计算机实现的指令,以便检测网页上有价值的部分。在块802,模型构建模块可以基于用户的朋友和所述朋友所加入的社交圈来构建个性化圈-用户图(PCUG)模型。在块803,分级模块可以至少部分地基于所述PCUG模型中朋友与社交圈之间的连接对社交圈进行分级。在块804,生成模块可以基于所述社交圈的等级生成候选社交圈。可以把候选社交圈推荐给用户。
根据实现模式的上述描绘,以上示例可以通过硬件、软件或固件或其组合来实现。例如,本文所描述的各种方法、过程、模块和功能单元可以由处理器(术语处理器要被广义地解释为包括CPU、处理单元、ASIC、逻辑单元、或可编程门阵列等)来实现。过程、方法和功能单元可以都由单个处理器来执行或者在若干处理器之间分开。它们可以被实现为可由一个或更多个处理器执行的机器可读指令。此外,本文的教导可以采用软件产品的形式来实现。计算机软件产品存储在储存媒体中并且包含用于使计算机设备(其可以是个人计算机、服务器、或网络设备等)实现本公开的示例中所记载的方法的多条指令。
附图仅是示例的图解,其中附图中所示出的模块或过程对于实现本公开而言未必是必要的。而且,上面示例的序号仅用于描述,并且不指示一示例更优于另一示例。
本领域技术人员可以理解,在示例中的设备中的模块可以如在该示例中所描述的那样布置在该示例的设备中,或者可以可替代地定位在与该示例中的那个不同的一个或更多个设备中。前述示例中的模块可以被组合为一个模块或者还可以被分为多个子模块。