ageRank和TextRank
PageRank
PageRank原理
pangRank是用于对网页进行排名的算法。通俗的讲就是对每个网页进行打分,根据得分高低进行排序。怎么打分?
打分思路如下:
1.假如有个网页C
2.当连接(其他网页可以跳转到C)到C的网页越多(A和B的数量越多),C的比重(pagerank值)应该越高。
3.当链接到C的网页的本身比重越高时(A和B本身体的分数越高),C的比重应该越高。

PageRank论文:
《The PageRank Citation Ranking: Bringing Order to the Web》
具体实现:
假设互联网是一个有向图,ABC三个节点代表网页,每条边代表转移比重。

每个网页都会以等概率跳转到它链接到的网页,跳转是随机的,这就形成了一个随机游走模型,即一阶马尔可夫链 。初始化时每个节点的权重都是1,随着不断的跳转,不断的迭代。这个马尔科夫链会逐渐的形成一种平稳分布。

权重(PageRank值)的计算公示如下:

公式来源于何晗:自然语言处理入门, S ( v i ) S(v_i) S(vi)是某个节点的权重,初始都是1,d是介于(0,1)之间的常熟因子,模拟用户通过点击链接跳转到这个页面的概览,1-d就是用户通过输入网址到这个页面的概览。 I n ( v i ) In(v_i) In(vi)表示能链接到 V i V_i Vi的节点的集合, O u t ( V j ) Out(V_j) Out(Vj)表示从 V j V_j Vj出发的链接的集合。所以从 V − j V-j V−j发出的链接越多,每个链接的权重就越小。以figure2为例,权重为9的节点,总过发出了3条链接,则每条链接的权重为9/3=3。
PageRank程序设计
以figure3为例,假设有ABC三个节点,初始时刻三个节点的权重都是1,

设计程序计算ABC最终的权重:
#coding=utf8
class Node():
#初始化一个节点
def __init__(self, value=1, childrens=set(), name=''):
'''初始时刻所有节点的权重都是1'''
self.value = value
self.childrens = childrens
self.name = name
def __repr__(self):

PageRank算法通过网页间的链接关系评估网页的重要性。TextRank算法借鉴PageRank思想,应用于文本处理,实现关键词和关键句的抽取。
最低0.47元/天 解锁文章
1434

被折叠的 条评论
为什么被折叠?



