当前位置:首页>开发>正文

pagerank简单算法 textrank算法实现工具有哪些

2023-05-06 16:12:08 互联网 未知 开发

 pagerank简单算法 textrank算法实现工具有哪些

pagerank简单算法

用matlab来处理,代码如下:
A = [
0,1,1,1
1,0,1,0
0,1,0,1
1,0,1,0
]
A = A
M = A ./ repmat(sum(A),size(A,1),1)
[V, D]= eig(M)
EigenVector = V(:, abs(diag(D))==max(abs(diag(D))))
PageRank = abs(EigenVector)./ norm(EigenVector,1)

解释一下解题的过程:
1、
ABCD4个网页,用序号1234来代替,那么
A有链接到BCD,表示为:0,1,1,1
B有连接到AC,表示为: 1,0,1,0
C有连接到BD,表示为: 0,1,0,1
D有连接到AC,表示为: 1,0,1,0
即得到矩阵A
A =

0 1 1 1 0 1 0
0 1 0 1 0 1 0

2、对矩阵A做转置得到A,并对A的权重做调整得到M
A =

0 1 0 1 0 1 0
1 1 0 1 0 1 0

M =

0 0.5000 0 0.5000
0.3333 0 0.5000 0
0.3333 0.5000 0 0.5000
0.3333 0 0.5000 0

可以看出M的每一列的和都等于
3、
求出矩阵M的特征值V和特征向量D

V =

-0.4575 -0.8384 -0.6229 -0.0000
-0.4575 0.1772 0.4913 -0.707 -0.6100 0.4841 -0.3596 -0.0000
-0.4575 0.1772 0.4913 0.70D =

1.0000 0 0 0
0 -0.2113 0 0
0 0 -0.7887 0
0 0 0 0

4、
找出特征值最大的特征向量EigenVector
EigenVector =

-0.457 -0.457 -0.6100
-0.455、
对EigenVector 做归一化,得到PageRank
PageRank =

0.230 0.230 0.307 0.230
对结果的解释
ABD网页的权值都是0.2308,C网页的权值最大,为0.3077.

参考这篇文章《Google 的秘密
PageRank彻底解说 中文版 》,你可以百度到链接。

textrank算法实现工具有哪些

extRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是:
Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.
先从PageRank讲起。

PageRank

PageRank最开始用来计算网页的重要性。整个www可以看作一张有向图图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向边。
构造完图后,使用下面的公式:

S(Vi)是网页i的中重要性(PR值)。d是阻尼系数,一般设置为0.85。In(Vi)是存在指向网页i的链接的网页集合。Out(Vj)是网页j中的链接存在的链接指向的网页的集合。|Out(Vj)|是集合中元素的个数。

PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。

举个例子:

上图表示了三张网页之间的链接关系,直觉上网页A最重要。可以得到下面的表:
结束起始
A
B
C

A
0

B
0
0
0

C
0
0
0

横栏代表其实的节点,纵栏代表结束的节点。若两个节点间有链接关系,对应的值为1。

根据公式,需要将每一竖栏归一化(每个元素/元素之和),归一化的结果是:

结束起始
A
B
C

A
0

B
0
0
0

C
0
0
0

上面的结果构成矩阵M。我们用matlab迭代100次看看最后每个网页的重要性:
?

1
M = [0 1 0 0 0
0 0 0]

PR = [1 1 1]

for iter = 1:100
PR = 0.15 0.85*M*PR
disp(iter)
disp(PR)
end

运行结果(省略部分):

?

11111111120
22222222230
3333333
......

0.4050
0.1500
0.1500

0.4050
0.1500
0.1500

0.4050
0.1500
0.1500

0.4050
0.1500
0.1500

9
0.4050
0.1500
0.1500

100

0.4050
0.1500
0.1500

最终A的PR值为0.4050,B和C的PR值为0.1500。

如果把上面的有向边看作无向的(其实就是双向的),那么:

?

1
M = [0 1 0.5 0 0
0.5 0 0]

PR = [1 1 1]

for iter = 1:100
PR = 0.15 0.85*M*PR
disp(iter)
disp(PR)
end

运行结果(省略部分):

?

1111111.....

1.459 0.770 0.770
9
1.459 0.770 0.770
100

1.459 0.770 0.770
依然能判断出A、B、C的重要性。

使用TextRank提取关键字

将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。
每个单词作为pagerank中的一个节点。设定窗口大小为k,假设一个句子依次由下面的单词组成:
w1, w2, w3, w4, w5, ..., wn

w1, w2, ..., wk、w2, w3, ...,wk 1、w3, w4, ...,wk 2等都是一个窗口。在一个窗口中的任两个单词对应的节点之间存在一个无向无权的边。
基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。

使用TextRank提取关键短语

参照“使用TextRank提取关键词”提取出若干关键词。若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键短语。

例如,在一篇介绍“支持向量机”的文章中,可以找到三个关键词支持、向量、机,通过关键短语提取,可以得到支持向量机。
使用TextRank提取摘要

将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。
通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。

论文中使用下面的公式计算两个句子Si和Sj的相似度:

分子是在两个句子中都出现的单词的数量。|Si|是句子i的单词数。

PageRank算法怎么在网络爬虫里实现?(毕设)!!

根据PageRank的思想,编程在网络爬虫中实现。它的核心思想是能够发现权威超链接,通常的实现方法是将新分析出来的超链接与旧的超链接比对,使超链接的权重增加,从而抓取权重高的超链接。因为我们无法收录所有的超链接只能捡重要的收录。

hadoop如何实现分布计算

hadoop已经实现分布式计算,他本身就有hdfs分布式文件系统,通过master、slave实现分布式计算,计算框架目前包括离线框架MapReduce、实时计算框架storm、离线实时框架spark,分布式存储框架hdfs、分布式消息队列kafka,分布式日志采集工具flume,分布式数据hbase等等。

最新文章