textRank算法原理介绍与摘要提取
TextRank
TextRank 公式在 PageRank 公式的基础上,为图中的边引入了权值的概念:
wijwij 就是是为图中节点 ViVi 到 VjVj 的边的权值 。dd 依然为阻尼系数,代表从图中某一节点指向其他任意节点的概率,一般取值为0.85。In(Vi)In(Vi) 和 Out(Vi)Out(Vi) 也和 PageRank 类似,分别为指向节点 ViVi 的节点集合和从节点 ViVi 出发的边指向的节点集合。
在 TextRank 构建的图中,默认节点就是句子,权值 wijwij 就是两个句子 SiSi 和 SjSj 的相似程度。两个句子的相似度使用下面的公式来计算:
分子是在两个句子中都出现的单词的数量,|Si||Si|是句子 i 中的单词数。
使用 TextRank 算法计算图中各节点的得分时,同样需要给图中的节点指定任意的初值,通常都设为1。然后递归计算直到收敛,即图中任意一点的误差率小于给定的极限值时就可以达到收敛,一般该极限值取 0.0001。
使用 TextRank 提取摘要
自动摘要,就是从文章中自动抽取关键句。人类对关键句的理解通常是能够概括文章中心的句子,而机器只能模拟人类的理解,即拟定一个权重的评分标准,给每个句子打分,之后给出排名靠前的几个句子。基于 TextRank 的自动文摘属于自动摘录,通过选取文本中重要度较高的句子形成文摘。
依然使用 TextRank 公式:
等式左边表示一个句子的权重(WS 是 weight_sum 的缩写),右侧的求和表示每个相邻句子对本句子的贡献程度。与提取关键字的时候不同,一般认为全部句子都是相邻的,不再通过窗口提取。
边的权值 wijwij 代表句子 SiSi 和 SjSj 的相似度,既可以使用上面介绍过的基于句子间内容覆盖率的方法计算,也可以使用基于编辑距离,基于语义词典,余弦相似度,BM25 算法等等。
因为我们是要抽取关键句,因而是以句子为基本单位。使用 TextRank 提取摘要的整个过程如下:
- 预处理:将文本分割成句子 S1,S2,⋯,SmS1,S2,⋯,Sm,以句子为节点构建图。
- 计算句子相似度:对句子进行分词、取停用词等处理,以便于计算任意两个句子之间的相似度。将计算好的句子相似度作为两个句子构成的边的权值。
- 句子权重:根据公式,迭代传播权重计算各句子的得分。
- 抽取文摘句:得到的句子得分进行倒序排序,抽取重要度最高的 N 个句子作为候选文摘句。
- 形成文摘:根据字数或句子数要求,从候选文摘句中抽取句子组成文摘。