• TextRank算法


    TextRank算法

    TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是:
    Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004.

    先从PageRank讲起
    在浅入浅出:PageRank算法这篇博客中我做过简要的介绍,这里再补充一下。
    PageRank最开始用来计算网页的重要性。整个www可以看作一张有向图图,节点是网页。如果网页A存在到网页B的链接,那么有一条从网页A指向网页B的有向边。
    构造完图后,使用下面的公式:

    S(Vi)是网页i的中重要性(PR值)。d是阻尼系数,一般设置为0.85。In(Vi)是存在指向网页i的链接的网页集合。Out(Vj)是网页j中的链接存在的链接指向的网页的集合。|Out(Vj)|是集合中元素的个数。
    也就是说:
    对于一篇网页来说,可以这么理解:它的重要性,取决于到他的每个链接页面的重要性之和来决定的。每个链接到该页面的页面的重要性S(Vj)S(Vj)还需要对所有它所出去的页面所评分。所以除以了OUT(Vj)。同时,该页面S(Vj)S(Vj)的重要性不能单单由其他的链接页面决定,还包含一定的概率来决定要不要接受由其他页面来决定,这也就是d的作用。

    PageRank需要使用上面的公式多次迭代才能得到结果。初始时,可以设置每个网页的重要性为1。上面公式等号左边计算的结果是迭代后网页i的PR值,等号右边用到的PR值全是迭代前的。
    举个例子:

    上图表示了三张网页之间的链接关系,直觉上网页A最重要。

    依然能判断出A、B、C的重要性。
    使用TextRank提取关键字
    将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。
    每个单词作为pagerank中的一个节点。设定窗口大小为k,假设一个句子依次由下面的单词组成:
    w1,w2,w3,w4,w5,…,wn
    [w1,w2,…,wk]、[w2,w3,…,wk+1]、[w3,w4,…,wk+2]等都是一个窗口。在一个窗口中的任两个单词对应的节点之间存在一个无向无权的边。
    基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。
    使用TextRank提取关键短语
    参照“使用TextRank提取关键词”提取出若干关键词。若原文本中存在若干个关键词相邻的情况,那么这些关键词可以构成一个关键短语。
    例如,在一篇介绍“支持向量机”的文章中,可以找到三个关键词支持、向量、机,通过关键短语提取,可以得到支持向量机。 使用TextRank提取摘要
    将每个句子看成图中的一个节点,若两个句子之间有相似性,认为对应的两个节点之间有一个无向有权边,权值是相似度。
    通过pagerank算法计算得到的重要性最高的若干句子可以当作摘要。
    论文中使用下面的公式计算两个句子Si和Sj的相似度:

    分子是在两个句子中都出现的单词的数量。|Si|是句子i的单词数。
    由于是有权图,PageRank公式略做修改:

    但是很明显我只想计算关键字,如果把一个单词视为一个句子的话,那么所有句子(单词)构成的边的权重都是0(没有交集,没有相似性),所以分子分母的权值w约掉了,算法退化为PageRank。所以说,这里称关键字提取算法为PageRank也不为过。

  • 相关阅读:
    Java结束线程的三种方法(爱奇艺面试)
    Threadlocal 传递参数(百度二面)
    数据一致性 kafka 是保存副本 leader读写,follower 只备份 而 zookeeper是 leader 读写,follower负责读
    Mysql 间隙锁原理,以及Repeatable Read隔离级别下可以防止幻读原理(百度)
    SOA,SOAP,RPC,以及 RPC协议与 REST 协议之间的关系(搜狗)
    select、poll、epoll之间的区别(搜狗面试)
    windows日志查看-非法关机判断方法
    望帝春心托杜鹃 中望帝的由来~
    深入解读Quartz的原理
    Hibernate性能优化之EHCache缓存
  • 原文地址:https://www.cnblogs.com/mdumpling/p/8598133.html
Copyright © 2020-2023  润新知