智能网络功能,算法(您可能关注的人,与您类似...)

时间:2010-12-14 06:02:45

标签: algorithm twitter soundex

我有3个关于智能网络中算法(web 2.0)

的主要问题

这是我正在阅读的书http://www.amazon.com/Algorithms-Intelligent-Web-Haralambos-Marmanis/dp/1933988665,我想深入学习算法

1。您可以关注的人(Twitter)

如何确定我的请求的最近结果?数据挖掘?哪种算法?

2. 如何连接功能(Linkedin)

简单的算法就是这样的。它绘制了两个节点之间的路径,在 Me 和另一个人 C 之间。 我 - > A,B - >连接 - > C 。它不是任何强力算法或任何其他类似的图算法:)

3. 与您类似(Twitter,Facebook)    此算法类似于 1。它是否仅仅适用于Twitter中的max(count)朋友(facebook)或max(count)粉丝?或他们实施的任何其他算法?我认为第二部分是正确的,因为运行循环

 dict{count, person}
 for person in contacts:
        dict.add(count(common(person)))
 return dict(max)

在每个刷新页面都是一种愚蠢行为。

4. 你的意思是(谷歌)     我知道他们可以用语音算法 http://en.wikipedia.org/wiki/Phonetic_algorithm实现它,只需 soundex http://en.wikipedia.org/wiki/Soundex,这里是谷歌工程副总裁兼首席信息官Douglas Merrill说{ {3}}

前三个问题怎么样?欢迎任何想法!

由于

4 个答案:

答案 0 :(得分:7)

您可以关注的人

您可以使用基于因子的计算:

factorA = getFactorA(); // say double(0.3)
factorB = getFactorB(); // say double(0.6)
factorC = getFactorC(); // say double(0.8)

result = (factorA+factorB+factorC) / 3 // double(0.5666666666666667)
// if result is more than 0.5, you show this person

所以说在Twitter的情况下,“你可以关注的人”可以基于以下因素(用户A是用户查看此“你可能关注的人”功能,可能有或多或少的因素):

  • 在用户A和用户B的推文中找到的常用关键字之间的相对性
  • 两个用户的个人资料描述之间的相关性
  • 用户A和B的位置之间的相关性
  • 用户A的用户是否跟随用户B?

那么他们在哪里比较“你可能会跟随的人”?该列表可能来自具有大量粉丝的人(他们可能是名人,阿尔法极客,着名产品/服务等)和[用户A关注的人]正在关注的组合。

基本上,这里有一定程度的数据挖掘,阅读推文和bios,计算。当服务器负载当天最少(或者可能在单独的服务器上全天候完成)时,可以在每日或每周的cron作业上完成此操作。

你是如何联系

这可能是一个聪明的工作,让你觉得已经做了大量的蛮力来确定路径。然而,经过一些表面研究,我发现这很简单:

说你是用户A;用户B是你的联系;用户B是用户B的连接。

要访问用户C,您需要先访问用户B的个人资料。通过访问用户B的个人资料,该网站已经保存了指示用户A在用户B的个人资料中的信息。因此,当您从用户B访问用户C时,该网站会立即告诉您“用户A - >用户B - >用户C',忽略所有其他可能的路径。

这是用户C的最高级别,用户Acannot继续查看他的连接,直到用户C是用户A的连接。

来源:观察LinkedIN

与您类似

与#1(您可能关注的人)完全相同,除了算法读入不同的人员列表。算法读入的人员列表是您关注的人。

你的意思是

嗯,你在那里得到了它,除了谷歌可能使用的不仅仅是soundex。有语言翻译,单词替换以及用于Google案例的许多其他算法。我不能对此发表太多评论,因为它可能会变得非常复杂,而且我不是处理语言的专家。

如果我们对Google的基础架构进行更多研究,我们会发现Google拥有专门用于拼写和翻译服务的服务器。您可以在http://en.wikipedia.org/wiki/Google_platform获取有关Google平台的更多信息。

结论

高度强化算法的关键是缓存。缓存结果后,您不必每页都加载它。谷歌做到了,Stack Overflow做了它(在大多数带有问题列表的页面上)和Twitter也不奇怪!

基本上,算法由开发人员定义。您可以使用其他人的算法,但最终,您也可以创建自己的算法。

答案 1 :(得分:2)

您可以关注的人

可能是众多类型的推荐算法之一,也许是collaborative filtering

您的联系方式

这只是社交图上的最短路径算法。假设连接没有权重,它将只使用breadth-first

与您类似

只需使用与您可能关注的人相同的算法重新安排数据集。

查看书籍Programming Collective Intelligence,详细了解用于您可能关注的人与您类似的算法类型,它具有也有很棒的python代码。

答案 2 :(得分:1)

  1. 人们您可以关注 来自Twitter博客 - “建议基于几个因素,包括您关注的人和他们关注的人”http://blog.twitter.com/2010/07/discovering-who-to-follow.html 因此,如果您按照A和B并且他们都遵循C,那么Twitter会向您推荐C ...
  2. 您的连接功能 我想你已经回答了这个问题。
  3. 与您类似 如上所述,正如你所说的,尽管结果可能是缓存的 - 所以它只能在每个会话中完成一次,甚至可能不那么频繁......
  4. 希望有所帮助, 克里斯

答案 3 :(得分:1)

我不使用twitter;但考虑到这一点:

1)。从表面上看,这并不困难:对于我追随的每个人,看看他们跟随谁。然后,对于他们关注的每个人,看看他们跟随谁,等等。当然,你走的越深,所需的数字越多。

你可以更进一步,如果你也可以有效地提取反向:对于我跟随的人,谁也跟着他们?

对于这两种方式,什么是未说明的是一种方法来衡量推特,看看他们是否是我真正想要关注的人:自由追随者也可能跟随保守的推特,但这并不意味着我会想跟随保守派(见#3)。

2)。不确定,想一想......

3)。假设生物和推文是唯一可行的,那么困难的部分是:

  • 决定应该存在哪些属性(政治派别,主题类型等)
  • 清理每个140个字符到数据挖掘。

一旦拥有了正确的属性集,就会想到两种不同的算法:

  • K表示聚类,以决定我倾向于区分哪些属性。
  • N-最近邻居,根据我倾向于给予重量的属性,找到N个最相似的推特。
  • 编辑:实际上,决策树可能是更好的方法来完成所有这些......

这都是推测性的,但如果有人获得报酬,这听起来很有趣。