我有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}}
前三个问题怎么样?欢迎任何想法!
由于
答案 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关注的人]正在关注的组合。
基本上,这里有一定程度的数据挖掘,阅读推文和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)
希望有所帮助, 克里斯
答案 3 :(得分:1)
我不使用twitter;但考虑到这一点:
1)。从表面上看,这并不困难:对于我追随的每个人,看看他们跟随谁。然后,对于他们关注的每个人,看看他们跟随谁,等等。当然,你走的越深,所需的数字越多。
你可以更进一步,如果你也可以有效地提取反向:对于我跟随的人,谁也跟着他们?
对于这两种方式,什么是未说明的是一种方法来衡量推特,看看他们是否是我真正想要关注的人:自由追随者也可能跟随保守的推特,但这并不意味着我会想跟随保守派(见#3)。
2)。不确定,想一想......
3)。假设生物和推文是唯一可行的,那么困难的部分是:
一旦拥有了正确的属性集,就会想到两种不同的算法:
这都是推测性的,但如果有人获得报酬,这听起来很有趣。