链接分析算法之:主题敏感PageRank

  前面的讨论提到。PageRank忽略了主题相关性,导致结果的相关性和主题性降低,对于不同的用户,甚至有很大的差别。例如,当搜索“苹果”时,一个数码爱好者可能是想要看 iphone 的信息,一个果农可能是想看苹果的价格走势和种植技巧,而一个小朋友可能在找苹果的简笔画。理想情况下,应该为每个用户维护一套专用向量,但面对海量用户这种方法显然不可行。所以搜索引擎一般会选择一种称为主题敏感PageRank(Topic-Sensitive PageRank )的折中方案。主题敏感PageRank的做法是预定义几个话题类别,例如体育、娱乐、科技等等,为每个话题单独维护一个向量,然后想办法关联用户的话题倾向,根据用户的话题倾向排序结果。

      主题敏感PageRankPageRank算法的改进版本,该算法已被Google使用在个性化搜索服务中。

1. 基本思想

基本思想:

       通过离线计算出一个与某一主题相关的PageRank向量集合,即计算某个页面关于不同主题的得分。主要分为两个阶段:主题相关的PageRank向量集合的计算和在线查询时主题的确定(即在线相似度的计算)。 

2. 主题敏感PageRank计算流程

1、确定话题分类

           主题敏感PageRank参考ODP网站(www.dmoz.org),定义了16个大的主题类别,包括体育、商业、科技等。ODP(Open Directory Project)是人工整理的多层级网页分类导航站点(参见图1),在顶级的16个大分类下还有更细致的小

                   1.gif

     

                                                                   图1  ODP首页

粒度分类结构,在最底层目录下,人工收集了符合该目录主题的精选高质量网页地址,以供互联网用户导航寻址。主题敏感PageRank采用了ODP最高级别的16个分类类别作为事先定义的主题类型。 

2、网页topic 归属

       这一步需要将每个页面归入最合适的分类,具体归类有很多算法,例如可以使用 TF-IDF 基于词素归类,也可以聚类后人工归类。这一步最终的结果是每个网页被归到其中一个 topic。

3、分topic 向量计算

      在PageRank的向量迭代公式:

         2.png

        

     即R = q  × P * R + ( 1 一 q) * e/N  (e单位向量)

     而在主题敏感PageRank中,向量迭代公式为:

       3.jpg

          首先是单位向量e变为了s。

          而s是这样一个向量:对于某 topic 的s,如果网页k在此 topic 中,则s中第k个元素为1,否则为0。注意对于每一个 topic 都有一个不同的s。而|s |表示s中 1 的数量。

        假设有页面A,B,C, D,假设页面A归为 Arts,B归为 Computers,C归为 Computers,D归为 Sports。那么对于 Computers 这个 topic,s就是:

         4.gif  

     假设我们设置阻尼系数q=0.8, 而|s|=2, 因此,迭代公式为:

       5.jpg

       最后算出的向量就是 Computers 这个 topic 的 rank。如果实际计算一下,会发现B、C页在这个 topic 下的权重相比上面非 Topic-Sensitive 的 rank 会升高,这说明如果用户是一个倾向于 Computers topic 的人(例如程序员),那么在给他呈现的结果中B、C会更重要,因此可能排名更靠前。

4. 在线相似度计算

        最后一步就是在用户提交搜索时,确定用户的 topic 倾向,以选择合适的 rank 向量。主要方法有两种:

       一种是列出所有 topic 让用户自己选择感兴趣的项目,这种方法在一些社交问答网站注册时经常使用;

       另外一种方法利用“用户查询分类器”对查询进行分类,即搜索引擎会通过某种手段(如 cookie 跟踪)跟踪用户的行为,进行数据分析判断用户的倾向。

       如2,假设用户输入了查询请求“乔丹”,查询词“乔丹”隶属于体育类别的概率为0.6,娱乐类别的概率为0.1,商业类别的概率为0.3                                              

6.jpg

                                            2 在线相似度计算

       在进行上述用户查询分类计算的同时,搜索系统读取索引,找出包含了用户查询“乔丹”的所有网页,并获得已计算好的各个分类主题的PageRank值,在图6-21的例子里,假设某个网页A的各个主题PageRank值分别为体育0.2,娱乐0.3以及商业0.1

      得到用户查询的类别向量和某个网页的主题PageRank向量后,即可计算这个网页和查询的相似度。通过计算两个向量的乘积就可以得出两者之间的相关性。在图6-21的例子里,网页A和用户查询“乔丹”的相似度为:

Sim(“乔丹”,A)= 0.6*0.2+0.1*0.3+0.3*0.1=0.18

      对包含“乔丹”这个关键词的网页,都根据以上方法计算,得出其与用户查询的相似度后,就可以按照相似度由高到低排序输出,作为本次搜索的搜索结果返回给用户。

3. 利用主题敏感PageRank构造个性化搜索    

       以上内容介绍的是主题敏感PageRank的基本思想和计算流程,从其内在机制来说,这个算法非常适合作为个性化搜索的技术方案。

    在图2所示例子里,计算相似度使用的只有用户当前输入的查询词“乔丹”,如果能够对此进行扩展,即不仅仅使用当前查询词,也考虑利用用户过去的搜索记录等个性化信息。比如用户之前搜索过“耐克”,则可以推断用户输入“乔丹”是想购买运动服饰,而如果之前搜索过“姚明”,则很可能用户希望获得体育方面的信息。通过这种方式,可以将用户的个性化信息和当前查询相融合来构造搜索系统,以此达到个性化搜索的目的,更精准的提供搜索服务。

4. 主题敏感PageRank与PageRank的差异 

      PageRank算法基本遵循前面章节提到的“随机游走模型”,即用户在浏览某个网页时,如果希望跳转到其它页面,则随机选择本网页包含的某个链接,进入另外一个页面。主题敏感PageRank则对该概念模型做出改进,引入了更符合现实的假设。一般来说用户会对某些领域感兴趣,同时,当浏览某个页面时,这个页面也是与某个主题相关的(比如体育报道或者娱乐新闻),所以,当用户看完当前页面,希望跳转时,更倾向于点击和当前页面主题类似的链接,即主题敏感PageRank是将用户兴趣、页面主题以及链接所指向网页与当前网页主题的相似程度综合考虑而建立的模型。很明显,这更符合真实用户的浏览过程。

     PageRank是全局性的网页重要性衡量标准,每个网页会根据链接情况,被赋予一个唯一的PageRank分值。主题敏感PageRank在此点有所不同,该算法引入16种主题类型,对于某个网页来说,对应某个主题类型都有相应的PageRank分值,即每个网页会被赋予16个主题相关PageRank分值。

     在接受到用户查询后,两个算法在处理方式上也有较大差异。PageRank算法与查询无关,只能作为相似度计算的一个计算因子体现作用,无法独立使用。而主题敏感PageRank是查询相关的,可单独作为相似度计算公式使用。而且,在接收到用户查询后,主题敏感PageRank还需要利用分类器,计算该查询隶属于事先定义好的16个主题的隶属度,并在相似度计算时的排序公式中利用此信息。

转自:http://blog.csdn.net/hguisu/article/details/8005192

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/2724

(0)
s19930811s19930811
上一篇 2016-02-14 14:04
下一篇 2016-02-17 12:40

相关推荐

  • 探究PHP底层

    1、PHP是什么? PHP 指的是我们从外面看到的一套完整的系统。这听起来有点糊涂,但其实并不复杂(PHP4 内部结构图)。从功能上来分:我们可以分为三部分: 1、 解释器部分(Zend 以引擎),负责对输入代码的分析、翻译和执行;2、 功能性部分(PHP功能函数以及扩展),负责具体实现语言的各种功能(比如它的函数等等);3、 接口部分(SAPI),负责同 …

    Linux干货 2015-04-10
  • 文本处理工具 grep

    文件查看:       文件查看命令:cat,tac,rev               cat [OPTION]… [FILE]…            …

    Linux干货 2016-08-07
  • 中秋干货之系统启动修复

    在使用CentOS系统时,难免会有误操作而导致机器不能正常启动,这里介绍了多种启动失败的原因和修复的方法。 grub损坏类 grub 1stage 被破坏使用dd擦写MBR前446字节,即抹去stage1阶段–[root@_2_ ~]# reboot #重启–启动失败,找不到系统,这时只能借助光盘进入修复模式,重新安装grub&#82…

    Linux干货 2016-09-15
  • 马哥网络班21期-第四周作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。        cp -r /etc/skel /home/tuser1        chmod 700 /home/tuser1  …

    Linux干货 2016-08-02
  • 8.16

    for 循环是相对比较简单的循环,任何一个循环里面都可以嵌套循环,用for可以解决简单逻辑上的任何循环 。 有两种基本格式:for i in " ";do         或者dor((i=0;i<=9;i++))可以嵌套if或者while等循环 if循环。最重要的是判断的条件,if意为如果什…

    Linux干货 2016-08-19
  • 网卡路由配置信息及偷懒用法

            对于初学Linux的人来说,配置网卡无疑是比较晕的,各种的配置文件,字段、命令等让人眼花撩乱。所以这一章主要给大多数还在网卡配置路由配置的同学们解惑一、网卡配置基本概念        …

    Linux干货 2017-05-08