其他分享
首页 > 其他分享> > TF-IDF与TextRank

TF-IDF与TextRank

作者:互联网

TF-IDF

TF_IDF(Term Frequency/Inverse Document Frequency)是信息检索领域非常重要的搜索词重要性度量;用以衡量一个关键词w对于查询(Query,可看作文档)所能提供的信息。
TF-IDF是两个指标的乘积:词频和逆文档频率。
词频(Term Frequency, TF)表示关键词w在文档 D i D_i Di​中出现的频率: T F w , D i = c o u n t ( w ) ∣ D i ∣ TF_{w,D_i}=\frac{count(w)}{|D_i|} TFw,Di​​=∣Di​∣count(w)​
其中,count(w)为关键词w在文档中的出现次数, ∣ D i ∣ |D_i| ∣Di​∣为文档 D i D_i Di​中所有词的数量。
逆文档频率(Inverse Document Frequency, IDF)反映关键词的普遍程度——当一个词越普遍(既有大量文档包含这个词)时,其IDF值越低;反之,则IDF值越高。IDF定义如下: I D F W = l o g N ∑ i = 1 N I ( w , D i ) IDF_W=log\frac{N}{\sum_{i=1}^NI(w,D_i)} IDFW​=log∑i=1N​I(w,Di​)N​
其中,N为所有的文档总数, I ( w , D i ) I(w,D_i) I(w,Di​)表示文档 D i D_i Di​是否包含关键词,若包含则为1,若不包含则为0。若词w在所有文档中均未出现,则IDF公式中的分母为0;因此需要对IDF做平滑(smooth): I D F W = l o g N 1 + ∑ i = 1 N I ( w , D i ) IDF_W=log\frac{N}{1+\sum_{i=1}^NI(w,D_i)} IDFW​=log1+∑i=1N​I(w,Di​)N​
关键词w在文档 D i D_i Di​的TF-IDF值: T F − I D F w , D i = T F w , D i ∗ I D F w TF-IDF_{w,D_i}=TF_{w,D_i}*IDF_w TF−IDFw,Di​​=TFw,Di​​∗IDFw​
从上述定义可以看出:

TextRank

TextRank由Mihalcea与Tarau于EMNLP’04 [1]在论文《TextRank: Bringing Order into Texts》中提出来,其思想非常简单:通过词之间的相邻关系构建网络,然后用PageRank迭代计算每个节点的rank值,排序rank值即可得到关键词。
PageRank本来就是用来解决网页排名的问题,网页之间的链接关系即为图的边,迭代计算公式如下: P R ( V i ) = ( 1 − d ) + d ∗ ∑ j ∈ I n ( V i ) 1 ∣ O u t ( V j ) ∣ P R ( V j ) PR(V_i)=(1-d)+d*\sum_{j\in In(V_i)}\frac{1}{|Out(V_j)|}PR(V_j) PR(Vi​)=(1−d)+d∗j∈In(Vi​)∑​∣Out(Vj​)∣1​PR(Vj​)
其中, P R ( V i ) PR(V_i) PR(Vi​)表示第i个网页的价值, I n ( V i ) In(V_i) In(Vi​)表示由链接到i的网页组成的集合, O u t ( V j ) Out(V_j) Out(Vj​)表示从j网页出去的网页组成的集合, ∣ O u t ( V j ) ∣ |Out(V_j)| ∣Out(Vj​)∣表示集合的网页数量
公式中,某个网页的价值,是由链接到(进入)这个网页的每个网页的价值和对应的权重决定的。一个网站,如果越多的网站链接到它,说明这个网站约有价值,为什么一定要加入一个权重呢?公式可以看到,权重是从某个网页链接出去的数量的倒数,数量越多,权重越小,好比是投票,某个人投出的票越多,说明这个人的票越没有含金量。

这个公式来自于《统计学习方法》,等号右边的平滑项(通过某种处理,避免一些突变的畸形值,尽可能接近实际情况)。
阻尼系数d(damping factor)的意义是,在任意时刻,用户到达某页面后并继续向后浏览的概率。1-d就是用户停止点击,随机跳到新URL的概率。
加平滑项是因为有些网页没有跳出去的链接,那么转移到其他网页的概率将会是0,这样就无法保证存在马尔科夫链的平稳分布。
于是,我们假设网页以等概率(1/n)跳转到任何网页,再按照阻尼系数d,对这个等概率(1/n)与存在链接的网页的转移概率进行线性组合,那么马尔科夫链一定存在平稳分布,一定可以得到网页的PageRank值。

所以PageRank的定义意味着网页浏览者按照以下方式在网上随机游走:以概率d按照存在的超链接随机跳转,以等概率从超链接跳转到下一个页面;或以概率(1-d)进行完全随机跳转,这时以等概率(1/n)跳转到任意网页。

PageRank的计算是一个迭代过程,先假设一个初始的PageRank分布,通过迭代,不断计算所有网页的PageRank值,直到收敛为止,也就是: M R = R MR=R MR=R
其中M为概率转移矩阵,R为PageRank向量。通过不断修改R,到达最终的稳定状态。

例:

上图中,可以认为A-E5个网页构成图,节点与节点之间存在着边,图中存在箭头,此时的图成为“有向图”。
B到C得箭头表示B网页有到C网页的链接,而A、B之间的箭头表示A、B网页之间相互链接。这是图的直观展示,如何转化成数学表示呢?就要靠邻接矩阵。
G = ( 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 ) G=\begin{pmatrix}0&1&0&0&0\\1&0&0&0&1\\0&1&0&0&0\\1&0&0&0&0\\0&1&0&1&0\end{pmatrix} G=⎝⎜⎜⎜⎜⎛​01010​10101​00000​00001​01000​⎠⎟⎟⎟⎟⎞​
G G G就是表示上面图的邻接矩阵, 有了邻接矩阵,通过标准化,我们可以计算出概率转移矩阵: G = ( 0 1 3 0 0 0 1 2 0 0 0 1 0 1 3 0 0 0 1 2 0 0 0 0 0 1 3 0 1 0 ) G=\begin{pmatrix}0&\frac{1}{3}&0&0&0\\\frac{1}{2}&0&0&0&1\\0&\frac{1}{3}&0&0&0\\\frac{1}{2}&0&0&0&0\\0&\frac{1}{3}&0&1&0\end{pmatrix} G=⎝⎜⎜⎜⎜⎛​021​021​0​31​031​031​​00000​00001​01000​⎠⎟⎟⎟⎟⎞​
低i行表示进入到第i个节点的概率分布,而第j列,表示第j个节点的出节点的概率分布。这里突然扯到了概率转移矩阵,实际这是对前面的“投票”打分机制的一种概率抽象。
我们可以用一个5维列向量S表示5个节点的概率初始值,也就是一个随机向量。 ( S ) 0 = ( 1 5 1 5 1 5 1 5 1 5 ) T (S)^0=(\frac{1}{5}\quad\frac{1}{5}\quad\frac{1}{5}\quad\frac{1}{5}\quad\frac{1}{5})^T (S)0=(51​51​51​51​51​)T
则: ( S ) n = W ( S ) n − 1 (S)^n=W(S)^{n-1} (S)n=W(S)n−1
相当于我们对随机向量S反复进行W概率转移过程。
我们利用矩阵运算来进行前面的迭代公式计算:
第一轮: ( S ) 1 = ( 0.067 0.3 0.067 0.1 0.267 ) T (S)^1=(0.067\quad0.3\quad0.067\quad0.1\quad0.267)^T (S)1=(0.0670.30.0670.10.267)T
我们希望得到一个稳定值,于是迭代100轮, ( S ) 1 00 = ( 2.04 ∗ 1 0 − 8 4.84 ∗ 1 0 − 8 2.04 ∗ 1 0 − 8 1.11 ∗ 1 0 − 8 3.44 ∗ 1 0 − 8 ) T (S)^100=(2.04*10^{-8}\quad4.84*10^{-8}\quad2.04*10^{-8}\quad1.11*10^{-8}\quad3.44*10^{-8})^T (S)100=(2.04∗10−84.84∗10−82.04∗10−81.11∗10−83.44∗10−8)T
收敛到几乎为0了,这显然是不合理的,这是PageRank最初遇到的问题之一,即Dead Ends问题,回到上面的A-E节点的连接图,可以看到,D不存在外链,这种节点,就称为Dead Ends,解决办法就是加入一个阻尼因子d。

虽然前面说W是概率转移矩阵,但它并不真正满足概率转移矩阵的定义:
矩阵各元素都是非负的,并且各行(列)元素之和等于1。

加入了阻尼因此后,可以认为用户有很大的可能会按照当前网页上出现的链接一直点击下去,有很小的可能会关掉当前网页点击其他网页。

关键词提取任务

在这个任务中,词就是Graph中的节点,而词与词之间的边,则利用"共线"关系来确定。所谓“共线”,就是共同出现,即在一个给定大小的滑动窗口内的词,认为是共同出现的,而这些单词也就存在着边,举例:
“淡黄的长裙,蓬松的头发 牵着我的手看最新展出的油画”
分词后:
淡黄 长裙 蓬松 头发
牵 我 手 看 最新 展出 油画

给定窗口为2, 依次滑动
淡黄 长裙
长裙 蓬松
蓬松 头发
牵 我
我 手
⋅ ⋅ ⋅ \cdot \cdot \cdot ⋅⋅⋅

则“淡黄”和“长裙”两个节点间存在边。

也可以去窗口为3,则此时, “淡黄”不仅和“长裙”存在边,也和“蓬松”存在边。
不难发现,相对于PageRank的无权有向图,这里建立的是无权无向图,对于有向图,论文提到是基于词的前后顺序角度去考虑,即给定窗口,比如对于“长裙”来说,“淡黄”与它之间是入边,而"蓬松"与它之间是出边,但是效果都要比无向图差。
构造好图之后,剩下的就是按照PageRank的公式进行迭代计算,提取关键词用到的公式和PageRank原公式是一样的。

文本摘要任务

文本摘要任务,也可以理解为"关键句提取任务",在这个任务中,节点不再是词,而是句子。而句与句之间的联系,也不能用“共现”来确定,还是利用相似度确定。因此,此时构造的是有权无向图。

为什么选用相似度来做权重呢? 直观上我们可以这样理解,当作者在一篇文章中想要重点强调一些内容时,他往往会在多个句子用不用的表达方式来表达相似的意思,因此这些句子之间的相似度是比较高的。所以,当有多个句子与同一个句子的相似度很高时,我们认为后者便是一个关键句。

对于相似度的计算方法,论文中给出了一种: S i m i l a r i t y ( S i , S j ) = ∣ { W k } ∣ W k ∈ S i   &   W k ∈ S j ∣ l o g ( ∣ S i ∣ ) + l o g ( ∣ S j ∣ ) Similarity(S_i,S_j)=\frac{|\{W_k\}|W_k\in S_i\ \& \ W_k\in S_j|}{log(|S_i|) + log(|S_j|)} Similarity(Si​,Sj​)=log(∣Si​∣)+log(∣Sj​∣)∣{Wk​}∣Wk​∈Si​ & Wk​∈Sj​∣​
其中,分母即两个句子的词数取对数后求和,分子是同属于两个句子的词的数量。

当然,也可以使用其他相似度计算方法,比如在有的改进的TextRank方法中,会使用余弦相似度,即先把两个句子分词,词向量化后,利用词向量加和求平均的方式计算句向量,然后再计算两个句子的余弦相似度。

标签:frac,Di,IDF,PageRank,TF,网页,TextRank
来源: https://blog.csdn.net/weixin_44060440/article/details/113716513