1 背景

在前面的一篇博客里,笔者层提到过这两种计算关键词的思路(尴尬了,好像没有提到,没事待会儿写一篇LDA主题模型的博客,里面会涉及到),具体见:Python | 数据匹配+统计(这个博客里df_net_gt数据框的tf_word列就是根据TF-IDF得到的前五关键词)。今天笔者就带着大家来系统梳理一下这个知识点。

1.1 为什么要计算这两个指标?

  • 业务需求是:将外部数据源和已有数据库中的数据进行merge,目的是扩充数据库已有的标签。
  • 扩充的一种思路就是根据关键词来扩,即从外部数据源中提取出关键词来补充已有的数据库。
  • 那如何从外部数据源中提取出关键词呢?就用到了TF-IDF和TEXT-RANK两种方式了!

2 什么是TF-IDF

2.1 定义

TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词,而且算法简单高效,常被工业用于最开始的文本数据清洗。

2.2 计算方式

分三步进行计算。

  • 第一步是计算词频TF(term frequency)
    机器学习 | TF-IDF和TEXT-RANK的区别
  • 第二步计算逆文档频率IDF(inverse document frequency)
    机器学习 | TF-IDF和TEXT-RANK的区别
  • 第三步是将上述两个结果相乘即得TF-IDF

TF-IDF和一个词在文档中出现的次数成正比,与该词在整个语料库中的出现次数成反比

于是计算出文档的每个词的TF-IDF值,然后按降序排列,排在最前面的几个词即为文章主要的关键词

2.3 举例

网上流传着一个特别经典的例子,分享给大家:
机器学习 | TF-IDF和TEXT-RANK的区别

2.4 Python实现

具体见LDA主题模型实现的博客,sklearn就可以直接实现。

3 什么是TEXT-RANK

3.1 定义/思想

思想:通过词之间的相邻关系构建网络,然后用PageRank迭代计算每个节点的rank值,排序rank值即可得到关键词。

那啥是PageRank呢?

  • PageRank是用来解决网页排名的问题,网页之间的链接关系即为图的边。
  • 通过下面一个图具体了解PageRank是干啥的:
    机器学习 | TF-IDF和TEXT-RANK的区别

3.2 计算公式

  • PageRank的迭代计算公式为:
    机器学习 | TF-IDF和TEXT-RANK的区别
  • TextRank的迭代计算公式为:

机器学习 | TF-IDF和TEXT-RANK的区别

3.3 Python实现

见LAD主题模型博客

3.4 用途

  • 关键词提取
  • 关键词短语提取:基于关键词提取,可以简单认为:如果提取出的若干关键词在文本中相邻,那么构成一个被提取的关键短语。
  • 生成摘要 — 基于句子,将每个句子看作一个节点,计算TextRank。
    机器学习 | TF-IDF和TEXT-RANK的区别

4 两者对比

  • 关键词提取依赖于分词效果。两种处理方式:①停用词的改变;②自定义词典的改变。TextRank与TFIDF均严重依赖于分词结果——如果某词在分词时被切分成了两个词,那么在做关键词提取时无法将两个词黏合在一起(TextRank有部分黏合效果,但需要这两个词均为关键词)。因此是否添加标注关键词进自定义词典(这个在LDA主题模型博客也会有涉及,即如何添加自定义词典?),将会造成准确率、召回率大相径庭。
  • TextRank的效果并不优于TFIDF
  • TextRank虽然考虑到了词之间的关系,但是仍然倾向于将频繁词作为关键词
  • TextRank涉及到构建词图及迭代计算,所以提取速度较慢
  • 两者共同缺点:以上两种方法本质上还是基于词频,没有完全基于语义。

5 参考

相关文章:

  • 2022-12-23
  • 2021-06-20
  • 2022-12-23
  • 2021-06-09
  • 2022-12-23
  • 2021-10-30
  • 2021-08-20
  • 2021-12-09
猜你喜欢
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
  • 2021-06-29
  • 2021-07-21
  • 2021-12-24
  • 2021-11-25
相关资源
相似解决方案