美文网首页
文章摘要的自动生成(1)PageRank的理解

文章摘要的自动生成(1)PageRank的理解

作者: 文_飞 | 来源:发表于2018-11-20 15:15 被阅读0次

    接到任务,要为一篇文章自动生成个文章摘要。搜索到个比较适合的源码:https://github.com/letiantian/TextRank4ZH

    具体看它的介绍原理,是使用了类似于pageRank的思路。

    PageRank (佩奇排序)


    PageRank算法在1998年4月举行的第七届国际万维网大会上由Sergey Brin和Larry Page提出。在佩奇和布林看来, 网页的排序是不能靠每个网页自己来标榜的, 无论把关键词重复多少次, 垃圾网页依然是垃圾网页。 那么, 究竟什么才是网页排序的可靠依据呢? 出生于书香门第的佩奇和布林 (两人的父亲都是大学教授) 想到了学术界评判学术论文重要性的通用方法, 那就是看论文的引用次数。 在互联网上, 与论文的引用相类似的是显然是网页的链接。 因此, 佩奇和布林萌生了一个网页排序的思路, 那就是通过研究网页间的相互链接来确定排序。 具体地说, 一个网页被其它网页链接得越多, 它的排序就应该越靠前。 不仅如此, 佩奇和布林还进一步提出, 一个网页越是被排序靠前的网页所链接, 它的排序就也应该越靠前。 这一条的意义也是不言而喻的, 就好比一篇论文被诺贝尔奖得主所引用, 显然要比被普通研究者所引用更说明其价值。 依照这个思路, 网页排序问题就跟整个互联网的链接结构产生了关系, 正是这一关系使它成为了一个不折不扣的数学问题。

    思路虽然有了, 具体计算却并非易事, 因为按照这种思路, 想要知道一个网页 Wi 的排序, 不仅要知道有多少网页链接了它, 而且还得知道那些网页各自的排序——因为来自排序靠前网页的链接更有分量。 但作为互联网大家庭的一员, Wi 本身对其它网页的排序也是有贡献的, 而且基于来自排序靠前网页的链接更有分量的原则, 这种贡献与 Wi 本身的排序也有关。 这样一来, 我们就陷入了一个 “先有鸡还是先有蛋” 的循环: 要想知道 Wi 的排序, 就得知道与它链接的其它网页的排序, 而要想知道那些网页的排序, 却又首先得知道 Wi 的排序。

    为了打破这个循环, 佩奇和布林采用了一个很巧妙的思路, 即分析一个虚拟用户在互联网上的漫游过程。 他们假定: 虚拟用户一旦访问了一个网页后, 下一步将有相同的几率访问被该网页所链接的任何一个其它网页。 换句话说, 如果网页 Wi 有 Ni 个对外链接, 则虚拟用户在访问了 Wi 之后, 下一步点击那些链接当中的任何一个的几率均为 1/Ni。那么网页的排序由什么来决定呢? 是由该用户在漫游了很长时间——理论上为无穷长时间——后访问各网页的几率分布来决定, 访问几率越大的网页排序就越靠前。

    PageRank的简单计算

    下图显示了某一时刻网页A、B、C的链接情况,网页A中存在到网页B、C中的链接,网页B存在到网页C的链接,网页C存在到网页A的链接。

    图01

    于是由图01,可以分别计算出A、B、C 的重要性PR。

    PR(A) = PR(C)

    PR(B) = PR(A)/2

    PR(C) = PR(A)/2 + PR(B)

    (为什么需要迭代?)由于网页排序的重要性是由虚拟用户漫游很长时间后个网页的概率分布决定的,所以先假设A、B、C的现时刻的重要性均为1,通过上面的方程进行模拟用户经过漫长的访问(迭代,例如100)得出:

    PR(A) = 0*PR(A) + 0*PR(B) + PR(C)

    PR(B) = 0.5*PR(A) + 0*PR(B) + 0*PR(C)

    PR(C) = 0.5*PR(A) + PR(B) + 0*PR(C)

    下面是MATLAB版本的代码:

    M = [0 0 1

        0.5 0 0

        0.5 1 0];

    PR = [1; 1 ; 1];

    for iter = 1:100

        PR = M*PR;

        disp(iter);

        disp(PR);

    end

    其中,核心的公式:

    PR_{n+1} = M * PR_{n}

    , 其中PR_{n} 为第 n 次浏览时访问各网页的几率合并为一个向量PR_{n} ,M为所有网页的互联结构关系的矩阵,M的每一列的和为1。上述公式描述的是一种马尔可夫过程 (Markov process), 而且是其中最简单的一类, 即所谓的平稳马尔可夫过程 (stationary Markov process)。但是现实中的模型,有一些网页不存在指向其他网页的链接,那么多次迭代之后,导致所有网页的PageRank都变为0(终止点问题)。这些网页在M中的表示为0的列向量。例如图02的C。

    图02 图中的C没有指向外部的链接

    有些网页只存在指向自己的链接,那么多次迭代之后,这将导致这个网页的PageRank为1,而其他网页的PageRank为0(陷阱问题)。

    图03 图中的C只存在指向自己的链接

    对终止点问题与陷阱问题的修正

    为了解决这些问题, 佩奇和布林对虚拟用户的行为进行了修正。 首先, 他们意识到无论真实用户还是虚拟用户, 当他们访问到 “悬挂网页” 时(终止点问题), 都不应该也不会 “在一棵树上吊死”, 而是会自行访问其它网页。 佩奇和布林假定它将会在整个互联网上随机选取一个网页进行访问。所以便是把M中的所有为零的列向量改为\frac{1}{N} ,N为所有网页的总数,例如图02中的N为4(A,B,C,D网页)。

     上面的只是解决了终止点问题,但还没解决陷阱问题。为此佩奇和布林引进了第二个修正, 他们假定,用户不会死板地只访问其所提供的链接。例如图03中访问到C时,用户可能会直接输入网页地址去访问B或者D。 具体地说, 他们假定用户在每一步都有一个小于 1 的几率 α 访问当前网页所提供的链接, 同时却也有一个几率 1-α 不受那些链接所限, 随机访问互联网上的任何一个网站。

    所以最终得出的公式为

    PR(A) = (1-\alpha ) + \alpha  *  \sum_{i=1}^m \frac{PR(Ti)}{C(Ti)}

    上式是计算网页A的重要性的式子。T_{i} 是存在到A的链接的网页。C(T_{i} )是网页T_{i} 中的存在的链接的数量。\alpha 是阻尼系数,一般定义为用户随机点击链接的概率,常取值0.85。而(1-\alpha )代表着不考虑入站链接的情况下随机进入一个页面的概率。

    相关资料


    本文基本复制以下的资料:

    谷歌背后的数学

    浅入浅出:PageRank算法

    PageRank算法简介及Map-Reduce实现

    相关文章

      网友评论

          本文标题:文章摘要的自动生成(1)PageRank的理解

          本文链接:https://www.haomeiwen.com/subject/cdfafqtx.html