背景
TextRank算法来自于PageRank算法。
论文:TextRank: Bringing Order into Texts
窗口的概念可以参照论文中的描述。
PageRank
PageRank算法首先给每个网页一个PR值,由于PR值物理意义为一个网页被访问的概率,所以一般为1N\frac{1}{N}N1, 通常PR值的总和为1。这是一种迭代算法,PR值越大,表示网页的重要性越大。
PR(u)=∑v∈BuPR(v)L(v)
P R(u)=\sum_{v \in B_{u}} \frac{P R(v)}{L(v)}
PR(u)=v∈Bu∑L(v)PR(v)
BuB_uBu是链接到所有网页uuu的集合,PR(⋅)PR(\cdot)PR(⋅)是每个网页的PRPRPR值,L(v)L(v)L(v)是网页vvv的对外链接数。
算法步骤:(1)初始化每一个结点的概率,初始化为1/N1/N1/N表示为均值。
(2)
因为A,B,C都是接入D的,所以D的PR值是等于A,B,C的PR值之和(利用上述公式,注意分母)。
A,B,C又接入了其它结点,所以需要按照贡献做一个比值。
由于存在一个网页只对自己有自链接,或者是几个网页的出链形成一个循环圈。然后造成算法在迭代过程中,只增不减的情况(自己理解可以通过计算去验证,也是在计算中出现了这种问题,所以研究人员对算法进行了改进),改进后的算法如下所示:
PR(pi)=α∑pj∈MpiPR(pj)L(pj)+(1−α)N
P R\left(p_{i}\right)=\alpha \sum_{p_{j} \in M_{p_{i}}} \frac{P R\left(p_{j}\right)}{L\left(p_{j}\right)}+\frac{(1-\alpha)}{N}
PR(pi)=αpj∈Mpi∑L(pj)PR(pj)+N(1−α)
NNN表示节点的数量。
TextRank
TextRank算法是一种文本排序算法。区别于PageRank算法:PageRank算法构造的是有向无权图,而TextRank算法根据词之间的共现关系构造网络,得到的是无向有权边。TextRank将文档看作是一个词的网络,通过词与词的语义关系表示网络中的链接。每个单词是TextRank算法中的一个结点。使用word2vec可以对句子中的单词进行Embedding编码,然后可以通过Embedding计算句子的相似度,WS(Vi)WS(V_i)WS(Vi)可以表示为句子的相似度。
Wji∑Vk∈Out(Vj)Wjk
\frac{W_{j i}}{\sum_{V_{k} \in O u t\left(V_{j}\right)} W_{j k}}
∑Vk∈Out(Vj)WjkWji
分母表示所有对外链接数权重的和,表示的是概率。
WS(Vi)=(1−d)+d∗∑Vj∈In(Vi)Wji∑Vk∈Out(Vj)WjkWS(Vj)
W S\left(V_{i}\right)=(1-\mathrm{d})+\mathrm{d} * \sum_{V_{j} \in I n\left(V_{i}\right)} \frac{W_{j i}}{\sum_{V_{k} \in O u t\left(V_{j}\right)} W_{j k}} W S\left(V_{j}\right)
WS(Vi)=(1−d)+d∗Vj∈In(Vi)∑∑Vk∈Out(Vj)WjkWjiWS(Vj)
参考资料
https://blog.youkuaiyun.com/u013007900/article/details/88961913 (PageRank)
https://blog.youkuaiyun.com/wotui1842/article/details/80351386 (TextRank)
https://blog.youkuaiyun.com/asialee_bird/article/details/96894533(TextRank 公式清晰,有程序)
TextRank算法可以从中文文本中提取关键词和摘要,TextRank算法在textrank4zh中有实现,参数解析见:
https://www.jianshu.com/p/cf0a118215d7
http://blog.sina.com.cn/s/blog_628cc2b70102wx92.html(词性解释)
文本关键字textrank技术点之窗口中的词对
https://blog.youkuaiyun.com/a857553315/article/details/108044082