我有3个关于智能网络算法的主要问题(web 2.0)
这本书我正在阅读http://www.amazon.com/Algorithms-Intelligent-Web-Haralambos-Marmanis/dp/1933988665,我想更深入地学习算法
1.您可能关注的人(推特)
如何确定我的请求的最近结果?数据挖掘?哪种算法?
2.你如何连接功能(Linkedin)
简单的算法就是这样的.它利用两个节点之间的路径让之间说我和其他人是Ç. 我- > A,B - > A的连接件- "ç.它不是任何强力算法或任何其他类似的图算法:)
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)
Run Code Online (Sandbox Code Playgroud)
在每个令人耳目一新的页面中都是愚蠢的
4.您的意思是(谷歌),我知道,他们可能有实现它语音算法 http://en.wikipedia.org/wiki/Phonetic_algorithm简单的同音 http://en.wikipedia.org/wiki/Soundex这里是谷歌工程副总裁兼首席信息官Douglas Merrill讲http://www.youtube.com/watch?v=syKY8CrHkck#t=22m03s
前三个问题怎么样?欢迎任何想法!
谢谢
您可以使用基于因子的计算:
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
Run Code Online (Sandbox Code Playgroud)
因此,在Twitter的情况下,"您可能关注的人"可以基于以下因素(用户A是用户查看此"您可能关注的人"功能,可能会有或多或少的因素):
那么他们在哪里比较"你可能会跟随的人"呢?该列表可能来自具有大量粉丝的人(他们可能是名人,阿尔法极客,着名产品/服务等)和[用户A关注的人]正在关注的组合.
基本上,这里有一定程度的数据挖掘,阅读推文和bios,计算.当服务器负载当天最少(或者可能在单独的服务器上全天候完成)时,可以在每日或每周的cron作业上完成此操作.
这可能是一个聪明的工作,让你觉得已经做了大量的蛮力来确定路径.然而,经过一些表面研究,我发现这很简单:
说你是用户A; 用户B是你的联系; 用户C是用户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也不例外!
基本上,算法由开发人员定义.您可以使用其他人的算法,但最终,您也可以创建自己的算法.