TextRank算法获取文本关键词
1.PageRank
在了解TextRank前,首先一定要知道PageRank,实质上个人认为可以把TextRank当做PageRank2.0。谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法,“那就是看论文的引用次数”。由此想到网页的重要性也可以根据这种方法来评价。于是PageRank的核心思想就诞生了:
- 如果一个网页被很多其他网页链接到的话说明这个网页比较重要,也就是PageRank值会相对较高
- 如果一个PageRank值很高的网页链接到一个其他的网页,那么被链接到的网页的PageRank值会相应地因此而提高
2.PageRank算法原理
PageRank算法输出概率分布,用于表示随机点击链接的人到达任何特定页面的可能性。可以为任何大小的文档集合计算PageRank。在一些研究论文中假设在计算过程开始时,分布在集合中的所有文档中均匀分配。PageRank计算需要多次传递,称为“迭代”,通过集合调整近似PageRank值以更接近地反映理论真实值。
概率表示为介于0和1之间的数值。0.5概率通常表示为发生事件的“50%概率”。因此,PageRank为0.5表示点击随机链接的人有50%的可能性被导向0.5 PageRank的文档。
假定有四个网页:A、B、C和D,从页面到其自身的链接将被忽略。从一个网页到另一个网页的多个出站链接被视为单个链接。PageRank初始化为所有网页的相同值。在PageRank的原始形式中,所有网页上PageRank的总和是当时Web上的网页总数,因此在本例中的每个页面的初始值都为1。但是,PageRank的更高版本和本节的其余部分假设概率分布在0和1之间。因此,此示例中每个页面的初始值为0.25。
在下一次迭代时,从给定网页转移到其出站链接目标的PageRank在所有出站链接中平均分配。
如果系统中的唯一链接是从网页B,C和D到A,则每个链接在下一次迭代时将0.25 PageRank传输到A,总计0.75。
P
R
(
A
)
=
P
R
(
B
)
+
P
R
(
C
)
+
P
R
(
D
)
PR(A)=PR(B)+PR(C)+PR(D)
PR(A)=PR(B)+PR(C)+PR(D)
假设B具有到C和A的链接,页面C具有到页面A的链接,而页面D具有到所有三个页面的链接。因此,在第一次迭代中,B将转移一半现有的值,即0.125,A转移它的一半,即0.125,至C。而C将其所有现有值0.25转移到它链接到的唯一页面A。由于D有三个出站链接,它会将现有值的三分之一或大约0.083转移到A。在此迭代完成时,页面A的PageRank大约为0.458。
P
R
(
A
)
=
P
R
(
B
)
L
(
B
)
+
P
R
(
C
)
L
(
C
)
+
P
R
(
D
)
L
(
D
)
PR(A)=\frac{PR(B)}{L(B)}+\frac{PR(C)}{L(C)}+\frac{PR(D)}{L(D)}
PR(A)=L(B)PR(B)+L(C)PR(C)+L(D)PR(D)
在一般情况下,对于任何网页的PageRank值u可以表示为:
P
R
(
u
)
=
∑
u
∈
B
u
P
R
(
v
)
L
(
v
)
PR(u)=\sum_{u\in B_{u}}^{}\frac{PR(v)}{L(v)}
PR(u)=u∈Bu∑L(v)PR(v)
即,页面u的PageRank值取决于集合Bu 中包含的每个页面v的PageRank值(包含链接到页面u的所有页面的集合),除以来自页面v的链接的数量L(v)。
PageRank通过互联网中的超链接关系来确定一个网页的排名,其公式是通过一种投票的思想来设计的:如果我们要计算网页A的PageRank值(以下简称PR值),那么我们需要知道有哪些网页链接到网页A,也就是要首先得到网页A的入链,然后通过入链给网页A的投票来计算网页A的PR值。这样设计可以保证达到这样一个效果:当某些高质量的网页指向网页A的时候,那么网页A的PR值会因为这些高质量的投票而变大,而网页A被较少网页指向或被一些PR值较低的网页指向的时候,A的PR值也不会很大,这样可以合理地反映一个网页的质量水平。那么根据以上思想,佩奇设计了下面的公式.
S
(
V
i
)
=
(
1
−
d
)
+
d
∗
∑
u
∈
I
n
(
V
u
)
1
∣
O
u
t
(
V
j
)
∣
S
(
V
j
)
S(V_{i})=(1-d)+d*\sum_{u\in In(V_{u})}^{}\frac{1}{\left | Out(V_{j})\right |}S(V_{j})
S(Vi)=(1−d)+d∗u∈In(Vu)∑∣Out(Vj)∣1S(Vj)
该公式中,Vi表示某个网页,Vj表示链接到Vi的网页(即Vi的入链),S(Vi)表示网页Vi的PR值,In(Vi)表示网页Vi的所有入链的集合,Out(Vj)表示网页,d表示阻尼系数,是用来克服这个公式中“d *”后面的部分的固有缺陷用的:如果仅仅有求和的部分,那么该公式将无法处理没有入链的网页的PR值,因为这时,根据该公式这些网页的PR值为0,但实际情况却不是这样,所有加入了一个阻尼系数来确保每个网页都有一个大于0的PR值,根据实验的结果,在0.85的阻尼系数下,大约100多次迭代PR值就能收敛到一个稳定的值,而当阻尼系数接近1时,需要的迭代次数会陡然增加很多,且排序不稳定。公式中S(Vj)前面的分数指的是Vj所有出链指向的网页应该平分Vj的PR值,这样才算是把自己的票分给了自己链接到的网页。
3.TextRank算法原理
用TextRank提取来提取关键词,用PageRank的思想来解释它:
- 如果一个单词出现在很多单词后面的话,那么说明这个单词比较重要。
- 一个TextRank值很高的单词后面跟着的一个单词,那么这个单词的TextRank值会相应地因此而提高。
这样TextRank的公式就可以由PageRank公式改写为:
S
(
V
i
)
=
(
1
−
d
)
+
d
∗
∑
(
j
,
i
)
∈
ε
w
j
i
∑
v
k
∈
O
u
t
(
V
j
)
w
j
k
S
(
V
j
)
S(V_{i})=(1-d)+d*\sum_{(j,i)\in \varepsilon }^{}\frac{w_{ji}}{\sum_{v_{k}\in Out(V_{j})}^{}w_{jk}}S(V_{j})
S(Vi)=(1−d)+d∗(j,i)∈ε∑∑vk∈Out(Vj)wjkwjiS(Vj)
公式的意思很明显:
TextRank中一个单词i的权重取决于与在i前面的各个点j组成的(j,i)这条边的权重,以及j这个点到其他其他边的权重之和。
4.TextRank主要步骤
关键词抽取的任务就是从一段给定的文本中自动抽取出若干有意义的词语或词组。将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。TextRank算法是利用局部词汇之间关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取。其主要步骤如下:
- 把给定的文本T按照完整句子进行分割;
- 对于每个句子进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即其中是保留后的候选关键词;
- 构建候选关键词图G = (V,E),其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。
- 根据上面公式,迭代传播各节点的权重,直至收敛。
- 对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
- 由5得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。