日志

NLP 关键词提取算法之 TextRank

对文本提取关键词,除了经典的 TF-IDF 算法,还有另一种常用的算法 — TextRank

TextRank 介绍

TextRank 是一种基于图的排序算法,它的基本思想来自于著名的 Google PageRank.

PageRank via @Wikipedia

图:PageRank via @Wikipedia

PageRank 的基本思想

  • 一个网页的入链越多,它就越重要。
  • 如果一个网页被越重要的网页所指向,它也越重要。

TextRank 算法简释

下图是通过 TextRank 进行关键词提取的一个简单例子
例子

图:通过 TextRank 提取文本关键词

通过 TextRank 进行关键词提取的主要步骤

  1. 对文本进行分词,并去掉停用词以及非目标词性词汇。
  2. 通过一个固定长度的滑动窗口在分词文本上滑动,每个窗口内的词根据共现关系构建一条边,最终形成一个图。
  3. 对图进行 PageRank,实际上就是投票和迭代的过程。
  4. 选出权重最高的 TopK 个词。

算法总结

  • TextRank 算法一定程度上考虑了文本中词与词之间的关系,也就是文本结构,在实际应用中它的效果一般会比 TF-IDF 好,当然它的计算复杂度也比 TF-IDF 高得多。
  • TextRank 算法更擅长处理长文本,对短文本的效果并不理想,主要因为短文本的词汇信息较弱,构建的图并不理想。
  • TextRank 算法仍然倾向于选择出现较为频繁的词作为关键词。
转载请注明出处:

© http://hejunhao.me

日志

NLP 关键词提取算法之 TF-IDF

TF-IDF 是处理 NLP 问题时经常使用的经典算法,常用于对文本进行关键词的提取。

TF-IDF 介绍

计算公式

TF-IDF 的计算非常简单


TF-IDF = TF(\text{文章词频}) * IDF(\text{逆文档频率})

概念解释

TF: 指某个词在一段文本中出现的词频


TF = \dfrac{\text{某个词在文章中出现的次数}}{\text{文章总词数}}

IDF: 指某个词在所有文本(对应语境所在的训练语料,例如:科学领域、体育领域)中的区分度,它认为越少出现的词区分度越高,相应的 IDF 值也越高。


IDF = \log\dfrac{(\text{训练语料的总文档数+1})}{(\text{出现该词的文档数+1})}

分母 “+1” 是为了防止分母为零,同时相应地分子 “+1” 以防止 IDF 为负数。

算法总结

经验

从计算公式可知,TF-IDF 的准确性非常依赖 IDF 模型的质量。同一个词在不同领域对应的区分度(IDF)也不同甚至差别巨大,例如 “冠军” 在体育领域的语料中出现的次数远远大于在政治领域的语料中所出现的次数,这意味着在后者的语境下,“冠军” 这个词的区分度更高,IDF 值更大。要提升 TF-IDF 的算法效果一般需要根据业务场合单独训练特定领域的 IDF 模型。

评价

  • TF-IDF 计算复杂度低,适合对效率优先的场景。
  • 由于它只依赖关键词的统计特征进行排序,有时候效果并不理想,比如有时候文本的关键要素不一定是频繁出现的元素。
  • 另外它也缺乏对文本结构的考虑。
转载请注明出处:

© http://hejunhao.me