4

我对智能网络(web 2.0)中的算法有 3 个主要问题

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

1.你可能关注的人(推特)

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

2.你是如何连接的功能(Linkedin)

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

3.与你相似(Twitter、Facebook) 这个算法与1相似。它是简单地工作在 Twitter 中的最大(计数)朋友(Facebook)还是最大(计数)追随者?或他们实现的任何其他算法?我认为第二部分是正确的,因为运行循环

 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来实现它,这里是Google 工程副总裁兼首席信息官 Douglas Merrill 发言http://www.youtube.com/watch?v=syKY8CrHkck#t=22m03s

前三个问题呢?欢迎任何想法!

谢谢

4

4 回答 4

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

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

  • 在用户 A 和用户 B 的推文中发现的频繁关键字之间的相关性
  • 两个用户的个人资料描述之间的相关性
  • 用户 A 和 B 的位置之间的相关性
  • 用户 A 关注的人是否关注用户 B?

那么他们从哪里比较“你可能关注的人”呢?该列表可能来自拥有大量关注者(他们可能是名人、阿尔法极客、著名产品/服务等)和[用户 A 关注的人] 正在关注的人的组合。

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

你是如何连接的

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

假设你是用户 A;用户 B 是您的连接;用户 C 是用户 B 的连接。

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

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

资料来源:观察LinkedIN

和你一样

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

你的意思

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

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

结论

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

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

于 2011-01-02T04:49:21.277 回答
2

您可能关注的人

可能是多种推荐算法中的一种,也许是协同过滤

你是如何连接的

这只是社交图谱上的最短路径算法。假设连接没有权重,它将简单地使用广度优先

和你一样

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

查看Programming Collective Intelligence一书,以很好地介绍用于您可能关注的人和与您相似的人的算法类型,它也有很棒的 Python 代码可用。

于 2010-12-31T19:33:20.110 回答
1

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

1)。从表面上看,这并不难:对于我关注的每个人,看看他们关注的是谁。然后对于他们关注的每个人,查看他们关注的人,等等。当然,你走得越深,处理的数字就越多。

如果您还可以有效地提取相反的内容,您可以更进一步:对于我关注的人,谁也关注他们?

对于这两种方式,没有说的是一种衡量高音喇叭的方法,看看他们是否是我真正想追随的人:自由派追随者也可能追随保守的高音喇叭,但这并不意味着我想追随保守的(见#3)。

2)。不太清楚,想想……

3)。假设生物和推文是唯一要做的事情,困难的部分是:

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

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

  • K 表示聚类,以决定我倾向于区分哪些属性。
  • N-最近邻,在给定我倾向于给予权重的属性的情况下,找到与你最相似的 N 个高音扬声器。
  • 编辑:实际上,决策树可能是完成所有这一切的更好方法......

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

于 2010-12-31T19:54:59.987 回答
1
  1. 您可能关注的人 来自 Twitter 博客 - “建议基于几个因素,包括您关注的人和他们关注的人” http://blog.twitter.com/2010/07/discovering-who-to-follow.html 所以如果你关注 A 和 B,他们都关注 C,那么 Twitter 会向你推荐 C……
  2. 你是如何连接的功能 我想你已经回答了这个问题。
  3. 与您类似 如上所述,正如您所说,尽管结果可能已被缓存-因此每个会话仅执行一次,甚至可能更少...

希望有帮助,克里斯

于 2010-12-31T12:41:15.417 回答