搜索下一站:个性化搜索基本方法和简单实验

原创 2010年12月02日 15:52:00

 

腾讯soso 文/王亮

 

      所谓的个性化搜索,就是将用户输入的关键字和该用户的个人偏好联系起来进行查询,据此猜测该用户可能想要得到的信息,从而将该用户最可能需要的信息显示在最前面。

      个性化搜索研究早在上世纪九十年末就已有之,相关的方法和研究已经非常多,但商业化的大规模应用尚未出现。其根本原因在于很少有用户愿意直接或间接提供个人信息,像目前很多实验系统都是采集IP的点击记录、cookie等信息构建用户模型,这样的模型显然也很难精确。

      但随着社区网络的快速发展,以用户为核心的UGC内容逐步成为互联网内容的主流,个性化搜索实现的主要障碍正在逐步消失。当前“Facebook+BingVs “Twitter+Google” 正在如火如荼的进行中,个性化很可能再次改变搜索界的版图。


基本需求

     个性化搜索的需求也比较明确,好比前一段时间,“章鱼”属于热门检索词,一些喜爱运动的童靴想搜索到“章鱼哥”和世界杯的故事,而一些生活化的mm,可能主要是需要如何做章鱼小丸子。但前一段“章鱼哥”仙去的那几天,大部分搜索引擎给出“章鱼”的结果,靠前面的基本都是关于体育的。这正是当前搜索引擎排序的基本思路,满足“大多数人”的需要。

      但目前社会正逐步趋向于“碎片化”,这种“大多数人”比例以前可能是80%,现在或未来可能只占30%。而从用户的角度来看,大部分用户都是“懒惰”的,一般只输入13个词,而且不懂not/and/or,很难充分表达自己的信息需求,但现在的搜索只提供的千人一面的结果,不考虑个体的差异性,无关网页就很多。

      从满足“大多数人”的需求逐步转向为每个人“量身定制”搜索,以提高用户的搜索体验,这正是个性化搜索要做的。


个性化搜索基本方法

      个性化搜索的“实质”其实就是对用户的检索词进行了“自动”的“扩展”。这种“扩展”基于对不同用户自身信息的分析。

      个性化搜索流程基本都分为三步:

(1) 根据用户检索,获得原有的搜系统的检索结果集。

(2) 根据用户模型和检索结果集,在线的计算每个结果文档的个性化权值。其实质是户模型和文档的“相似度”计算,将用户最“希望”得到的结果加权,这正是个性化搜索的核心。

(3) 与其它排序权值结合,对搜索结果进行重排。

 

      个性化搜索系统的基本结构图都差不多,如下图1所示:

 

      从图中可以看到,个性化搜索需要解决下面几个关键问题:

(1) 如何构建用户模型?即如何准确的描述用户的兴趣和特色,包括长短期兴趣等。

(2) 搜索个性化如何实现?即如何进行个性化权值的计算。

(3) 除了技术之外,隐私问题也是个性化搜索需要格外注意的问题,像Google前一段时间就因为Toolbar收集个人信息而受到多方指责。如果这个问题处理不好,即使算法方案再优秀,也只能呆在实验室里。

 

构建用户模型

      首先要采集用户的信息,很多试验系统的信息来源有用户注册信、访问日志,查询信息等。而社区时代,则有用户自己发表的博客、微博等UGC信息,这些信息显然更能代表用户的兴趣。

      采集到用户的信息后,就可以构建用户模型,目前主要有基于兴趣的模型和基于行为的模型两种。基于兴趣模型通常用用向量空间模型构建,就是利用特征词及其权值来表示用户的兴趣,其它一些实验模型有分类模型、语义网模型等。基于行为的模型则主要描述用户浏览模式或访问模式。

搜索个性化的实现

      实际上就是利用用户模型和结果文档集进行相似度计算,作为结果排序的要素,对结果进行过滤和重新排序。其基本方法和目前一些推荐系统中使用的方法基本一致,区别主要在于个性化搜索的“推荐”都是在线计算的:

  • 基于“规则过滤”。即基于一些规则,对结果进行过滤。如目前的一些地图搜索,就是根据IP的不同,自动选择搜索的城市。
  • 基于“内容过滤”。在线计算用户模型和结果文档模型的相似度,作为搜索结果排序的要素。典型有http://www.collarity.com/等,还有百度知道的问题推荐,也是利用搜索记录,推荐一些个性化的问题。
  • 基于“协同过滤”。利用用户之间的相似性进行检索结果的过滤和重排。像现在的Bing就是可以优先显示Facebook好友Like推荐的结果。

 

      实际的个性化搜索系统往往是不同方法的综合,如GoogleKaltix算法,基本思路就将具有类似兴趣爱好的人归为一组,率属于不同组的用户给出不同排序的结果,同时还利用了IP、位置等信息进行基于规则的过滤。几种个性化搜索实现方式如下图所示:

 

我们的研究实验

      腾讯有着丰富的UGC资源,这些我们进行个性化搜索研究实验提供了的良好的条件。如目前的Q-zone社区搜索就采用了基于好友关系链的协同过滤方法,使好友结果优先,由于好友的推荐远比一些挖掘算法得到的推荐靠谱的多,这种个性化搜索效果就非常好。有兴趣的童靴可以留意下,并欢迎提出改进意见。

      我们研究实验系统则主要选择和实现一些论文中算法,目前主要以分类算法为基础,实现搜索的个性化。

      实验的用户和文档模型均采用分类概率模型,目前设置了财经、教育、汽车等9个类别。文档和用户都是用一个9维的向量表示,每个向量元素为属于各个类别的概率:

用户模型:P(people)=(y0,y1,…,y8)

文档模型:P(page)=(z0,z1,…,z8)

      其中文档模型按照SVM分类中的逻辑回归方法计算分类概率,对于很短的微博,则可采用贝叶斯分类计算分类概率。用户模型则根据用户发布博客等各类文章的类别比例估算。

      个性化实现的方法:将结果文档模型与登录用户模型进行相似度计算,实现“内容过滤”。将结果文档作者模型与登录用户模型进行相似度计算,实现“协同过滤”。然后将两个结果进行线性相加,得到最终的个性化排序权值:

内容过滤:rank1=sim(P(people),P(page))=cos<P(people),P(page)>

协同过滤:rank2=sim(P(user),P(author))=cos<P(user),P(author)>

最终的个性化权值:rank=a*rank1+(1-a)rank2,0<a<1

其中sim表示相似度计算,目前采用余弦距离,参数a根据实际需要进行调整。

      该个性化搜索的基本算法非常简单,实现也比较容易。采用分类方法构建用户模型的最大好处就是维度低,分类一般都在十几维以内,在线计算非常容易,而且可以很容易的设置多级分类,构建不同粒度的用户模型。

      而按照一些文章中的说法,概率模型和一般的特征向量模型相比,还可更好地体现用户兴趣的多样性和变化。当然,还有最重要的一点,就是该模型提供的仅仅是一个十几维的数字,只体现大的兴趣分类,隐私敏感度较低,即使向外提供个性化云服务,可能也不会有太多的争议。

      在此基础上,还可对该方法进行一定的扩展,如利用检索词的分类概率确定“大众兴趣”模型,和个人用户模型进行叠加;根据用户发布某个类别的文章数,确定一个专家指数,作为计算协同过滤的因素;根据用户发表的文章总数确定模型的可信度;将用户的个人注册信息和query等折算为对应类型的文章数,构建长短期兴趣等。

      实验系统建好之后,遇到一个重要问题就是如何对搜索的效果进行评测,个性化搜索的效果涉及不同的用户、不同的检索词、不同的数据集,还没有一个统一的评测标准。而作为实验系统,也很难进行A/B评测等的在线的评测,因此先期主要构建特定的小规模数据集进行评测。

目前主要参考TREC的“主题(Topic)”查询测试方法及进行评测,其基本思路就是仿真用户的信息需求,以各种方式、各种角度陈述,并利用结构化的字段呈现,形成一个查询主题,然后比较查询结果和查询主题,人工或者自动判断结果的相关性。我们的一个典型的“查询主题”如下所示:

<top> 1  //检索主题编号

<topic>章鱼  //检索词

<user Interests> 4//用户类型,体育爱好者,评测中构建虚拟用户,只有一个兴趣分类

< Narrative >章鱼保罗预测德国击败英格兰章鱼保罗,它生于英国,在德国长大,保罗在南非世界杯上已经“成功预测”了德国胜澳大利亚、加纳,输给塞尔维亚的小组赛赛果。它预测的欧洲杯的赛事,命中率也有8成。出道两年的章鱼保罗在2008欧洲杯和2010世界杯两届大赛中,预测14次猜对13次、成功率飙升至92%............ //需要的文档样例,检索的目的的具体描述等。

      测试数据主要利用现有的一些搜索引擎结果构建,即输入检索词,抽取前几百个结果作为测试数据集,这样可以包含现有搜索的排序因素,方便实验效果评估。

      我们评测时采用两种测试方法:

(1) P@10方法,即判断前10个结果的精度,可以采用人工判别,也可以采用相似度方法判别,即判断前10个检索结果和< Narrative >字段的相似度 ,然后取其平均值作为精度指标。

(2) MRR方法,即第一个相关的答案序号倒数,该“相关”度可以人工判别,或者设置相似度阈值,进行自动判别。

 

      具体评测结果如下所述:

 

      该评测中,未登录时,只考虑文本相关性。登陆时,综合考虑文本相关性和“内容过滤”计算的相关性。从图中可以看到,登陆后的个性化结果大部分都好于未登录的检索结果,说明搜索的个性化还是有效果的。

 

需求为先,应用为王

      搜索的个性化发展趋势已经非常明确,“个性化”技术是否能让后来者实现跨越式发展?答案应该是否定的。市场如战场,先进的技术可以让企业的武器更为精良,但“武器”从来都不是决定战争胜负的最关键因素。如何把握用户需求,用最合适的技术去最好地满足需求才是关键所在。

 

附记:

      社区内容已经逐步成为互联网上最主要的内容,但这些内容存在缺少链接、“质量”普遍较差等特点,传统的文本相关性和PageRank等方法都缺少用武之地,但社区内容又包含了人与人之间的关系,人和文章之间的关系等新的特征。如何“整理”这些信息,不仅是搜索企业的挑战,更是整个互联网发展的挑战。在社区搜索研究方面,soso和国内外多所知名高校都有着深入的合作,并积极参与和资助了CIKM等知名的学术会议,介绍相关的问题和研究成果。未来,soso也会在条件允许的情况下,向研究、开发者提供社区搜索相关语料和基本算法库等内容。

 

      社区搜索,是挑战,更是机遇。

 

 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

mysql client常见error总结

mysql 客户端连接服务器,客户端报对应的错误号总结:  1.      Error  104 mysql@longxibendi-dba-u-abcd00.longxibendi:~$perr...

ERROR 2003 (HY000): Can't connect to MySQL server on '***.**.***.***' (110)

一直以为是我的ubuntu配置问题,chang shi

Can't connect to MySQL server on (110)

局域网连接不上。错误代码110。记录一下这个低级错误。 关了防火墙就好。

List中的数据如何根据对象的某一个或多个字段排序

第一节  对于引入题目的探讨 首先把引入题目表述的清楚一些,在一个List中存储的是一些对象实例,而对象实例包含多个属性字段,我们要根据对象的某个或者多个属性来对List进行排序。 假设List中...
  • awhip9
  • awhip9
  • 2017-03-13 15:36
  • 2629

心底的痕迹--自己写的歌

纪念我的最可宝贵的回忆云一般悄无声息你走进我的生活里好像石儿投入湖心激起圈圈环环的涟漪不经意间看到你的日记里面轻轻把我提起很高兴得惹你生气写满三页对不起寂寞的时候总把你记起生气的样子还是那样熟悉对自己...

新版微软一站式示例代码浏览器全球发布 – Metro 界面带给你全新示例搜索浏览体验

今天,第四版微软一站式示例代码浏览器正式全球发布。伴随其全新的Metro 界面和数十种新功能,我们希望能带给全球的开发人员革命性的示例搜索、下载、浏览和管理体验。 与前一版浏览器相比,一站式示例代码...

欢迎进入半颗心脏博客导航一站式搜索(所有博客的汇总帖)

世上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己;世界上最真情的相依,是你在try我在catch。无论你发...

博客导航——一站式搜索(所有博客的汇总帖)

博客导航——一站式搜索 以后博客肯定会越来越多的,所以这做一个整理,方便各位朋友能快速的锁定自己想要的资源 Android Studio Google主推-Android开发利器——Andr...

新浪微博搜索:下一站天王?

10月20日,新浪微博搜索突然以独立页面形式上线,尽管新浪本身非常低调,在微博首页、栏目等位置都没有进行推广宣传,用户使用时还需要直接在地址栏键入网址,但是却并不影响业界和媒体就此展开热议,有为这款产...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)