最好走的路越走越难,最难走的路越走越容易

Follow guwendong on Web
  • Subscribe to Beyond Search via RSS
  • Join Resys Google Group
  • Follow @clickstone on Douban
  • Follow @clickstone on Twitter

Tag Archives: google

Google Matrix

Google 退出中国事件发生之后,来自木遥同学的一篇文字,让我不能同意更多!其中有这么一段,

这个「国家(指 Google)」是网络世界中的第一个霸权,它可以控制数据和知识的流通,影响人类的所见所闻乃至精神世界的每个方面;它握有大量个人隐私信息,并且具有无可撼动的垄断地位;它在许多场合起到的已经是近乎可以类比于公权力的作用。而另一方面,它只是一家私有公司,没有任何方式可以从外部对它合法的控制力进行监督和制约。它当然也许确实会始终尽量不干预搜索排名,小心翼翼地维护互联网的自由和公正,但这只是它自己的道义承诺而已,而我们甚至想不出什么办法来验证这一点。

木遥的整篇文字非常中肯,但若单独摘引这一段,则是典型的“断章取义”。同一段文字,放在木遥的全文里看与单独看此段,差不多会造成两种理解,作语义的同学想必对此有深刻体会,这就是 Context(上下文)的作用。

在 Personalization 方面,亦是如此 —— Context 非常重要!

春节前,kuberResys Group 里发起了一个讨论,“基于SNS/Lifestream的推荐”,提到了 Google 近期的一些动作。其实长久以来,在个性化领域,Google 一直在下一盘很大的棋!看看他的布局吧。

  1. Personalized new tab page
    这个是2009年1月 Google Toolbar 推出的一个 feature,当你打开 Firefox 时,不再只是看到一个空白 tab 页,Google 会根据你的浏览历史,为你定制一个个性化 tab,包含你最常用的一些站点或页面。这个已经是新一代浏览器的标配了。

  2. Interested-based Ads
    传统的 Adsense 广告,是根据与网页内容的相关度进行展示的,与浏览者本身的兴趣无关。2009年3月 Google 推出了这种基于用户兴趣的广告,浏览者看到的不再仅是与内容相关的广告,而是与其本身兴趣相符的广告。至于用户兴趣哪里来的?抛开搜索记录不说,遍布互联网的 Analytics 和 Adsense 脚本本身,就能干不少事情了。

  3. Personalized keyword-suggestions
    尽管这个搜索提示功能没少给谷歌找麻烦,但 Google 显然认为这个东东对用户是有益的,尤其是对登录之后的搜索用户。当用户登录了 Google 帐号,并启用了 Web History 功能之后,搜索提示会把你最近频繁使用的几个关键字显示给你,这对搜索到一半被打断回头又想继续的用户来说体验很好。当然了,谷歌用户自然是无缘使用的。

  4. Google Reader by Personalized Ranking
    个性化的信息阅读,是用户长久以来的心声,久觅未果不少人甚至已经开始自己动手实现。2009年10月,Google Reader 对在这方面的官方支持终于千呼万唤始出来。最吸引眼球的是新增的“Sort by magic”排序功能,它综合考虑用户的阅读历史,包括 Trends、Start、Share 以及 Like 等,将待阅读的内容进行个性化地排序。这对动辄 1000+ 未读条目的用户来讲,绝对是个福音,就我个人的使用体验来看,效果相当不错。

  5. Google News Personalization
    2009年10月,Google CEO Eric Schmidt 在接受采访的时候说,“想像这样一个媒体:它知道你是谁,知道你喜欢什么,知道你看过哪些新闻,它能够评价你是否喜欢正在阅读的文章,还能够专门挑出你感兴趣的广告…”——科技是多么的伟大!但也有用户说了,“靠!这简直是阿鼻地狱啊,还是麻溜地不要再用 Google 服务了”,杯具啊!

  6. Personalized Search
    Google CEO Eric Schmidt 和美女总裁都说了,“搜索的未来要靠个性化”!目前,基于关键字的搜索,无疑已经成为帮助用户从信息海洋中寻找内容的重要手段,但互联网暴长的数据容量其实让 Google 也很头大。搜索引擎通过长期分析用户的搜索行为,可以感知用户的意图,从而在特定范围内完成搜索,有效地提高搜索效率,增强用户粘性。有关 Google 个性化搜索更详尽的资料,可以参考这里,另外 Resys 里也有过一次热烈的讨论

  7. Personalized Gmail Ads
    从 Gmail 诞生的第一天,它就是贴着小广告的。这个事情之前差点犯了众怒,后来 Google 保证仅展示“Family-Safe”的广告,并许诺说,“Ads and links to related pages only appear alongside the message that they are targeted to, and are only shown when the Google Mail user, whether sender or recipient, is viewing that particular message.”。现在,Google 在标红的“only”前面加入了一个“not”。隐私问题与个性化服务的矛盾由来已久,这个事情我认为解决方案和 Google 退出中国的诉求是一致的,只要有法可依即可。关于 Gmail 里的广告,这里有一枚杯具,欢迎围观。

  8. Google Buzz
    Buzz 在这事儿上毫不含糊,直接就说了,“Buzz recommends interesting posts and weeds out ones you’re likely to skip.”。为了验证 Google 的这个说法,我正在戒推进行中,全力使用 Buzz,看它能不能给我带来什么惊喜。就目前的体验来讲,我基本上是可耻的失败鸟。

  9. Google Friend Connect
    Boss 总是最后出场!但人生就像一个茶几,你永远不知道下一个被放上来的是哪枚杯具。Facebook 新近发布的 Open Graph,有很大机会把擅长把别人搞成杯具的 Google 搞成彻头彻尾的杯具帝,让我们拭目以待吧!


图片来源

 

怎样利用 GReader Share 数据?

这篇文章试图讨论一下郑昀在《基于Google Reader发展起来的个性化推荐系统之三大问题》一文中提出的一些问题。提请注意,我这里的观点是基于 GReader Share 数据限定之下的。

一、火星人现象
郑昀认为主要原因是:“推荐系统无法获知用户以前的知识结构”。

  1. 这是问题一:从根子上就无法完整反映用户的阅读经历。
  2. 这是问题二:如此大量的阅读视野狭窄的用户,推荐系统能否发挥作用呢?

对于问题一,解决办法我觉得只有两个。

  1. 尽可能多的扩展公开的数据源。比如,看我在 twitter 上推过哪些短址;看我在 delicious 上收藏了哪些链接;看我在 douban 上分享了哪些内容。GReader 的用户差不多都是网络的重度使用者,这方面可用的来源肯定不少。比如我,如果你订阅了我的 FriendFeed,那么我一天在看什么,你就差不多能知道一个大概了。
  2. 需要时间来积累。

这个问题,没有捷径。

对于问题二,其实之前在 kuberfeedzshare 的时候,我就和他讨论过。当时说了要写一篇 blog 的,后来由于我太懒就作罢了。我个人意见,GReader Share 的数据不适合做推荐,应该拿来做过滤器。这个后面展开。

二、有时效性和无时效性
大多数情况下,这个世界并不是非黑即白的。
对于时效性,我个人觉得别把它作为一个太过绝对的概念,它是和人相关的,应该作为一个相对的概念来理解。对于新近才接触某个领域的人来讲,翻翻老皇历也是有必要的。比如你看了我之前这篇的唠叨,对汪峰起了兴趣,那挖出他在鲍家街的老八卦看看也挺有意思,这些信息是新鲜的。而对于同样的内容,给我看就没什么意思了,它们out了。

因此,除了像刘未鹏所指出的“将文章分为有时效性(如新闻时政类)和无时效性(如读书笔记、GTD方法等)”这个方法,我觉得还可以从用户这个角度做一些事情。简要来讲,第一,划分用户关注的领域,这个基本是文本分类的问题,方法有不少,但大规模做起来很难,当然也并没有难到不可解决;第二,让用户方便地在时间线上游动,这个需要考虑呈现方式,给个带时间的列表是一种,高级点的像下面这个

三、惊喜很难吗?
我的回答是:确实很难!非常之难!
对于推荐系统的制作者,如果能让用户发出像 @imrchen 这样的感慨,那将是对其工作的最高程度的肯定。

@imrchen: 太神奇了,Amazon 竟然向我推薦 Python 書籍,我從來不曾在亞馬遜買過程式設計的書籍,最近買的和技術有關的書是 Beautiful Data,和 Python 完全搭不上邊。他們怎麼知道我最近在用 Python 開發東西,這樣的推薦未免也太神了吧!?

一个好的推荐系统制作者,需要钻研数据,精修算法,勤于思考,同时最重要的,要有一颗真正愿意帮助用户解决问题的心。

GReader Share 的数据更适合做过滤器

郑昀的文章里面,把 GReader Share 数据所存在的问题已经讲得很清楚了:基于 Google
Reader 的第三方推荐系统,能够拿到的数据是严重不足的。

你无法知道用户有意忽略了哪些文章,你很难拿到他的好友列表,Google不像
FriendFeed那样提供Dislike/Hide的按钮;你只知道他何时Share或like了某篇文章从何处(值得注意的一个细节是,如果用户是
自己订阅了煎蛋并推荐其中一篇文章,显然煎蛋对用户来说更加重要;相比而言,用户只是从其他人的Shared
Items订阅中share了煎蛋的某篇文章,却不去订阅煎蛋,说明煎蛋对他来说可能还不算重要。这个细节有点像“quick
stumbles”的思路)。

在这样的情况下,有效的方法就是最大化已有数据的能量,解决 GReader 本身尚未解决的一个重要问题:如何对阅读列表进行有效的组织。

1、计算 FollowRank
我曾经在 twitter 上感谢过 @imrchen,因为我发现,我好友的 Share List 里面,让我有精读冲动的,好多都是他 Share 出来的。@imrchen 的例子是我自己人肉过滤出来的,其实这个计算是可以自动化的——协同过滤里所有的 User-based 使用的相似度计算方法这里都适用。然后,根据相似度,我们取 Top50 作为我们的推荐种子,可以得到一个推荐列表。kuber 和 xlvector 应该都是这么做的,这也是最标准的 User-based 方法。

但,对于 GReader Share 数据,我建议再多考虑考虑。

这里面有个典型的例子,应该有好些人都订阅了 keso’s view,然后看到好文章就从这个列表里面进行 ReShare。对于这里面的活跃用户A,如果你用 A 的 Share List 和 keso 进行计算的话,有可能就会因为相似度很高,把 A 加入到了给 keso 进行推荐的种子用户里面。这显然是存在问题的。GReader Share 的产品设计,加重了单向 Follow 的因素,因此在种子用户的选择上,必须对传统 User-based 方法进行修正。

GReader 目前尚未提供相应的 API 获取用户的 Follow 数据,另外似乎也没有提供 Share 的时间让我们可以排排序,因此,要得到 ReShare 线路图应该是不太可能的。我这里提供一个变通的思路供讨论。
假设从用户A的 Share List 出发,查找和 A 共同 Share 了某篇文章的用户,可以得到一个候选用户集 ASet。然后设计一个公式,对隶属于 ASet 的用户B,综合考虑下面几个因素。

  1. BShare 包含的来源数目。
  2. 只有 B 单独 Share 的文章数量。
  3. 有 B 参与 Share 的文章,统计总 Like 数和 Share 数。
  4. AShare 与 BShare 交集数量 / AShare 数量。
  5. 第4项得分超过某阙值的周期数。

我把依此计算的结果,定义为用户A对用户B的 FollowRank。

剩下的就简单了,取 FollowRank 的 Top50 作为种子,得到候选集,阙值过滤,排排序,搞掂。

2、区分最新/最热的与我最感兴趣的
时常可以看到关注于解决信息过载问题的探讨,我个人认为,万里长征第一步,就是把用户感兴趣的摘出来,其他的按最新/最热排序。对于 GReader Share,做到此足以。

分析用户的兴趣,前面讲到了可以使用文本分类的办法。简单的还有基于 tag 的办法,不过第三方应该是无法获取 GReader 用户的 tag 数据的,此路不通;但可以绕,比如从 delicious 上提取 url 对应的 tags;然而对于中文内容,delicious 能够提供的帮助相当有限。因此,这里我建议可以考虑使用类似于内容基因的办法,说白了就是基于关键字的方法。我曾经在一些豆瓣影评数据上实验过抽取电影基因,得到的关键字组合还是挺靠谱的。我相信类似的算法用在 GReader Share 上效果应该也不会差,因为 GReader Share 数据集的文章质量应该还是比较好的。

目前在 GReader Share 数据的再利用方面,最领先的无疑是 玩聚SR,但它解决的是社会化排序的问题,是非个性化的。总体来讲,GReader 在个性化方向上能够提高的地方还有很多。像郑昀、kuber、xlvector 这样对此感兴趣的第三方开发者不妨加紧实践,没准哪天就被 Google 收编了。

有兴趣进行讨论的,移步这里

 

求助

第一次通过 blog 求助,希望好心的朋友帮忙!

Google 开放出来的英文 ngram 数据,对我的工作很有帮助。但我通过一些途径联系 LDC 购买,始终得不到回复。阅读我 blog 的朋友,如果有能提供帮助的,烦请联系我,谢谢!

另外,Google Alert 的结果提供了 Feed 输出的方式,可以直接在 Google Reader 里面订阅,非常好用。
 

 

1. 持续关注 个性化推荐 技术;
2. 持续关注 Semantic Web 技术;
3. 评论与上两项相关的互联网业务与产品;

我相信技术的力量!
wendell.gu@GMail.com

Archives