TextRank原理解释

目录

1. PageRank原理

2. TextRank

(1)TextRank需要满足的条件

(2)TextRank思想的简要理解

(3)TextRank原理及例子讲解


1. PageRank原理

在这里可以看我转载的PageRank原理链接,比较详细https://blog.****.net/weixin_42168614/article/details/87929281

https://blog.****.net/weixin_42168614/article/details/87929326

在这里想把我自己理解的PageRank原理阐述一下,PageRank主要是通过网页之间的连接关系得到最后网页的排名,分为三步:

*(1)冲浪者随机选择起始页面;

*(2)在以后的每一步,以d直接进入目标页面或以1-d的通过其它指向目标页面的超链接进入目标页面;

*(3)一个页面的重要性取决于指向该页面的页面的重要性,则页面P的重要性为:

TextRank原理解释

其实在PageRank中,要理解到每个节点是二重循环,第一是遍历i点的每个相连节点vj;第二对每个节点j,计算节点j的出度,节点j的出度指的是图中和i相连的所有点的权重之和,并且点的权重在每次迭代中都是更新变化的,所以每轮都要重新计算节点j的出度。故此,图的信息只考虑节点边的链接,而与节点的信息无关。

设一个k窗口,{w1,w2,...,wk}对于在滑动窗口k之内的词,都认为是有联系的,对于有联系的词,可以在有词构成的图中增加相应的权重,一个窗口遍历完所有的句子节点后,一个词图就构建成功了。下面截图是我对PageRank的进一步理解:

TextRank原理解释

在PageRank迭代计算中,你会发现初始权重D和M不会发生变化,变化的是每次相邻节点的值的变化,最终会迭代到收敛,所谓的收敛就是相邻节点差值小于0.001,但是在这个例子中你会发现到最后两次迭代的结果不会发生变化时就收敛了。

2. TextRank

以上是我对PageRank的理解,可能理解的还是很浅,但是对TextRank做了很好的铺垫。博客上有很多讲TextRank的,但是一直对公式以及理论的理解不够深入,可能各位博主自己理解到位了,但是对我反映慢的来说,真正理解它还远远没有达到。下面是我自己的理解。

(1)TextRank需要满足的条件

首先,TextRank是利用了markov原理,要满足它的两个条件,即状态转移矩阵M需满足markov中stochastic matric,把所有全为0的行替换为e/n.;要满足不可约,非周期,所以需要做平滑处理。

(2)TextRank思想的简要理解

TextRank的思想借用PageRank的思想来理解,如果一个单词出现在很多单词后,说明这个单词比较重要;一个TextRank值很高的单词后面跟着一个单词,那这个单词的TextRank的值也会提高。如图1可以直观理解:

TextRank原理解释

如果词w1出现在w2,w3,w4后,则说明词W1比较重要,同理前三个指向w1的TextRank的值很高,那么w1的值也会提高。

(3)TextRank原理及例子讲解

TextRank是针对文本中的句子设计的一种权重算法,利用投票原理,让每个词给它邻居节点投票,票的权重取决于票数。

在这里举个大家都常举的例子,来说明TextRank的投票机制及权重计算。

注:若窗口K=4,这以这个词为中心,取这个词的前4个词以及后四个词,如果分词后一个词出现很多次,先将每次的窗口取出来,然后将各次的结果合并去重,得到最后结果,建立图模型

例子:“程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和编码人员,但两者的界限并不是非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类”。

经过结巴分词后,得到【程序员, 英文, Programmer, 从事,程序, 开发, 维护, 专业, 人员, 程序员, 分为, 程序, 设计, 人员, 程序, 编码, 人员, 界限, 并不, 非常, 清楚, 特别是在, 中国, 软件, 从业人员, 分为, 程序员, 高级, 程序员, 系统分析员, 项目经理, 四大】,然后构造K=4的窗口,就以程序员这个词为例说明处理结果:

TextRank原理解释

如图所示,对分词结果中的每个每个程序员进行遍历,取出出现在“程序员”前后各4个词作为相邻词语,例如图中黑色字体,然后将黑色的四个程序员得到的相邻词语节点进行去重合并为红色字体,总共得到17个相关联的词语。然后就是投票迭代,就拿程序员这个节点来说明,“程序员”的权重是由着17个词投票决定的,而每个词投出去的分数是和这个词本身的权重决定的。进行迭代投票的过程如下:

第一轮:

[Pg, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]依给次*程序员*投票,得分如下:

[Pg]给[程序员]投票后,[程序员]的得分:

TextRank原理解释


然后专业等在窗口中的词语给程序员的投票迭代也如此进行,即[Pg, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]依次给[程序员]投票,投完票后,再给其它的词进行投票,本轮结束后,判断是否达到最大迭代次数200或两轮之间分数差值小于0.001,如果满足则结束,否则继续进行迭代。

最后,选取得分高的词作为关键词。


附录:

学习链接:https://www.zhihu.com/people/dianshangshijue/activities