TextRank算法是基于PageRank的思想用在来文本领域,具体的PageRank算法可以参考我的博客:PageRank 页面排名算法。接下来就让我们了解一下怎么用在文本领域。
概念PageRank有节点、入链的概念,那么在文本领域怎么类比呢?
节点:可以是句子,也可以是关键词 入链、出链:textRank默认所有句子之间都是互相链接的,相当于每一个句子都是N-1的句子关联。 句子:摘要关系矩阵以N个句子构建一个N*N的关系矩阵,这样句子之间的关系如何计算?
简单一点就PageRank的出链计算,但是这里出链都是一样的,无差异,每个句子的出链都是(N-1),所以矩阵里的元素都是一样的,迭代都无法有差异,无效的方法。 另一种就是计算句子之间的相似度,句子之间共同出现的次数,或者one-hot模型构建句子,计算句子之间的相似性,举例:vjv_jvj指向viv_ivi,两个句子viv_ivi和vjv_jvj之间的相似性占vjv_jvj与其他句子的相似性总和的占比,作为vjv_jvj->viv_ivi的关系系数这样就可以有如下公式:
Wvi=(1−d)+d∗∑vj∈In(vi)sij∑vk∈out(vj)wjk∗Wvj
W_{v_i}=(1-d)+d*\sum_{v_j\in In(v_i)}\frac{s_{ij}}{\sum_{v_k\in out(v_j)}w_{jk}}*W_{v_j}
Wvi=(1−d)+d∗vj∈In(vi)∑∑vk∈out(vj)wjksij∗Wvj
参数解析:
In(vi)In(v_i)In(vi):表示viv_ivi的所有入链,其实就是除自己以外的其他句子,(n-1)个句子。 ∑vk∈out(vj)wjk\sum_{v_k\in out(v_j)}w_{jk}∑vk∈out(vj)wjk:相似性之和 Out(vj)Out(v_j)Out(vj):表示vjv_jvj的所有出链,其实就是除自己以外的其他句子,(n-1)个句子。这样就可以更新句子的分数,选取分数高的Top(n)个句子作为摘要。作为摘要模型时,构建的图都是完全无向图,这里大家画一画就能理解。
单词:提取关键词关键词的问题在于如何构建关键词之间的联系,没有联系就难以得到其他关键词跟我的关系系数,RageRank的算法需要节点之间的关系,才可以迭代计算。所以想法就是:
窗口:关键词位置的一个窗口大小是不是有其他单词出现,意思就是这两个关键词是不是相邻,用位置信息来衡量相关性,有的话就有权重,这里反而说明一点,并不是所有关键词之间都是互联的,跟句子摘要是有差别的。 wordEmbeding:词嵌入方式,把每个单词映用向量表示,这样就可以用来计算两者的相似性。这样计算公式还是上述的那个公式,变动不大。
优点、缺点优点:
无监督学习,使用者不需要有深入的语言学或者专业领域知识; 使用基于图的排序算法,综合考虑文本整体的信息来确定哪些words或者sentences可以更好的表达文本;缺点:
不能覆盖大部分的文本话题 文本信息有点重复