TextRank算法总结

TextRank算法总结


最近在调研自动生成文本方面的内容,突然想到了自动文摘里的textRank,这里我将参考了一些资料并对这些知识点进行了整理总结,初步总结如下:

目录



PageRank简介

PageRank最开始用来计算网页的重要性。整个www可以看作一张有向图图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向边。
PageRank的计算公式:
这里写图片描述

S(Vi)是网页i的中重要性(PR值)。d是阻尼系数,一般设置为0.85。In(Vi)是存在指向网页i的链接的网页集合。Out(Vj)是网页j中的链接存在的链接指向的网页的集合(也就是说网页j中指出去的链接网页集合)。|Out(Vj)|是集合中元素的个数。
PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。

一句话形象描述上图公式:所有指向网页i的网页j,网页j的重要性除以网页j向外指出链接的个数(由于网页j最多只能有一个链接指向网页i)的值的累积和作为网页i的重要性。

基于TextRank的关键词提取

  关键词抽取的任务就是从一段给定的文本中自动抽取出若干有意义的词语或词组。TextRank算法是利用局部词汇之间关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取。其主要步骤如下:
  (1)把给定的文本T按照完整句子进行分割,即这里写图片描述
  (2)对于每个句子这里写图片描述,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词,即这里写图片描述,其中这里写图片描述是保留后的候选关键词。
  (3)构建候选关键词图G = (V,E),其中V为节点集,由(2)生成的候选关键词组成,然后采用共现关系(co-occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为K的窗口中共现,K表示窗口大小,即最多共现K个单词。
  (4)根据上面公式,迭代传播各节点的权重,直至收敛。
  (5)对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
  (6)由(5)得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。例如,文本中有句子“Matlab code for plotting ambiguity function”,如果“Matlab”和“code”均属于候选关键词,则组合成“Matlab code”加入关键词序列。

基于TextRank的关键词短语提取

参照“使用TextRank提取关键词”提取出若干关键词。若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键短语。例如,在一篇介绍“支持向量机”的文章中,可以找到三个关键词支持、向量、机,通过关键短语提取,可以得到支持向量机。

基于TextRank的自动文摘

谈起自动摘要算法,常见的并且最易实现的当属TF-IDF,但是感觉TF-IDF效果一般,不如TextRank好。
TextRank是在Google的PageRank算法启发下,针对文本里的句子设计的权重算法,目标是自动摘要。它利用投票的原理,让每一个单词给它的邻居(术语称窗口)投赞成票,票的权重取决于自己的票数。这是一个“先有鸡还是先有蛋”的悖论,PageRank采用矩阵迭代收敛的方式解决了这个悖论。TextRank也不例外:
将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。
计算两个句子Si和Sj的相似度:
这里写图片描述
分子是在两个句子中都出现的单词的数量。|Si|是句子i的单词数。

TextRank的计算公式:
这里写图片描述
等式左边表示一个句子的权重(WS是weight_sum的缩写),右侧的求和表示每个相邻句子对本句子的贡献程度。与提取关键字的时候不同,一般认为全部句子都是相邻的,不再提取窗口。求和的分母wji表示两个句子的相似程度,分母又是一个weight_sum,而WS(Vj)代表上次迭代j的权重。整个公式是一个迭代的过程。

  基于TextRank的自动文摘属于自动摘录,通过选取文本中重要度较高的句子形成文摘,其主要步骤如下:
  (1)预处理:将输入的文本或文本集的内容分割成句子这里写图片描述,构建图G =(V,E),其中V为句子集,对句子进行分词、去除停止词,得这里写图片描述,其中这里写图片描述是保留后的候选关键词。
  (2)句子相似度计算:构建图G中的边集E,基于句子间的内容覆盖率,给定两个句子si,sj,采用如下公式进行计算:
  这里写图片描述
  若两个句子之间的相似度大于给定的阈值,就认为这两个句子语义相关并将它们连接起来,即边的权值这里写图片描述
  (3)句子权重计算:根据公式,迭代传播权重计算各句子的得分;
  (4)抽取文摘句:将(3)得到的句子得分进行倒序排序,抽取重要度最高的T个句子作为候选文摘句。
  (5)形成文摘:根据字数或句子数要求,从候选文摘句中抽取句子组成文摘。


参考资料

http://www.hankcs.com/nlp/textrank-algorithm-to-extract-the-keywords-java-implementation.html
https://my.oschina.net/letiantian/blog/351154
http://www.mamicode.com/info-detail-882805.html
http://www.hankcs.com/nlp/textrank-algorithm-java-implementation-of-automatic-abstract.html
http://blog.csdn.net/xiewenbo/article/details/46671587

  • 9
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值