[NLP] TextRank 算法

1 概述:TextRank算法

1.1 TextRank 算法 : 源于 PageRank 算法

感兴趣 PageRank 的朋友,请转阅: [机器学习/Python] PageRank原理与实现 - 博客园/千千寰宇

  • TextRank算法基于PageRank,用于为文本生成关键字摘要计算语句(短语或者词汇)的重要性排名,而PageRank最初是因Google搜索引擎需要对网站网页节点的重要性排序计算而诞生。
  • 模型本质上讲,TextRankPageRank并无二致,只是应用领域图模型节点的选择有所不同。

1.2 经典的TextRank 算法

  • 基于词图模型关键词抽取是将对文本的处理转化成网络图的连接分析
  • Text Rank算法是词图模型中应用最为广泛的一种方法,。
  • 该算法不同于基于TF-IDF模型和LDA主题模型的关键词抽取方法
  • 原始算法无需批量地训练语料, 其核心方法是对文本内的词语关系句子关系短语关系进行分析, 擅长独立的单文本关键词抽取, 实现简单且效果较好。
  • Text Rank算法是基于Google公司网页排序Page Rank算法, 将对文本的分析转化到网络图中, 通过分析网络图中各个节点的权重,确定节点的重要性。

其中,节点可以是词汇短语或者句子

  • Text Rank算法中, 依照网络图的定义构建词图G(V, E) , 词语的集合(即 词汇表)为V, 词语和词语之间连接的集合为E, 其计算公式如下:

  • 阻尼系数d取值0.85
  • W_ji 表示词语V_j到词语V_i的连接权重
  • W_jk : 表示词语V_j到词语V_k的连接权重
  • 从词语V_j出发指向的所有词语的集合为Out (V_j)
  • 所有指向词语V_i的词语集合为 In (V_i)
  • TR(V_i) 代表词语i的Text Rank值。

句间连接权重的计算

  • 经典的TextRank算法,是基于句子间词汇共现词频计算当前句子Si与文本内其它句子间的句子相似度,并将句子相似度作为连接权重,计算公式如下。

  • 分母对数化一定程度上可以避免长句子摘要生成的影响。

  • Text Rank算法是先将对象文本分词成词语集合V, 然后采用滑动窗口的方式在每个句子内形成词语词语之间的连接集合E, 再利用公式 (1) 迭代计算每个词语的Text Rank值;

  • 当相邻2次运算结果之差小于1个阈值, 或迭代计算次数大于指定次数, 则结束迭代运算;

  • 最后, 依据Text Rank值将词语按降序排列, 取top N作为最终的关键词集合。

研究表明, 当阈值设为0.0001情况下, 一般经过20~30次迭代计算即可以收敛。此算法简单且效率较高, 得到了广泛应用。

1.3 局限性

  • 由于Text Rank算法完全是基于关系的一种分析法, 存在以下缺点:
  • (1) 每个词语的初始权重取值相同, 这个权重并不能代表词语在该文本中的特殊含义。
  • (2) 词语和词语之间的连接仅仅以单个独立的句子内使用滑动窗口来确定, 缺少对上下文的整体考虑。
  • (3) 词语和词语之间连接的权重都赋予相同的默认值, 不能区分连接关系的强弱。
posted @ 2024-09-09 23:05  千千寰宇  阅读(638)  评论(0)    收藏  举报