logo

NLP-关键词提取

王哲峰 / 2022-04-05


目录

关键词提取介绍

关键词是代表文章重要内容的一组词。对文本聚类、分类、自动摘要等起重要作用。 此外, 它还能使人们便捷地浏览和获取信息。类似于其他的机器学习方法, 关键词提取算法一般也可以分为有监督和无监督两类:

关键词提取算法

TF-IDF

TF-IDF 算法(Term Frequency-Inverse Document Frequency, 词频-逆文档频次算法), 是一种基于统计的计算方法, 常用于评估一个文档集中一个词对某份文档的重要程度。这种作用显然很符合关键字抽取的需求, 一个词对文档越重要, 那就越可能 是文档对的关键词, 常将 TF-IDF 算法应用于关键词提取中。

从算法的名称就可以看出, TF-IDF 算法由两部分组成:

TF 算法和 IDF 算法也能单独使用, 在最早的时候就是如此, 但在使用过程中, 学者们发现这两种算法都有不足之处。TF 仅衡量词的出现频次, 但是没有考虑到词的对文档的区分能力

TF 的计算常用表达式:

$${tf}_{ij}=\frac{n_{ij}}{\sum_{k} n_{kj}}$$

$$tf(word) = \frac{word在文档中出现的次数}{文档总词数}$$

其中:

IDF 的计算常用表达式:

$${idf}_i=log\Big(\frac{|D|}{1+|D_{i}|}\Big)$$

其中:

TF-IDF 算法就是 TF 算法与 IDF 算法的综合使用, 具体的计算方法如下:

$$tf \times idf(i, j) = {tf}_{ij} \times {idf}_{i} = \frac{n_{ij}}{\sum_{k} n_{kj}} \times log\Big(\frac{|D|}{1+|D_{i}|}\Big)$$

TF-IDF 算法也有很多变种的加权方法。传统的 TF-IDF 算法中, 仅考虑了词的两个统计信息(出现频次、在多少个文档出现), 因此, 其对文本的信息利用程度显然也是很少的。

除了上面的信息外, 在一个文本中还有许多信息能够对关键词的提取起到很好的知道作用, 例如每个词的词性、出现的位置等。

在某些特定的场景中, 如在传统的 TF-IDF 基础上, 加上这些辅助信息, 能对关键词提取的效果起到很好的提高作用。

TextRank

TextRank 算法的基本思想来源于 Google 的 PageRank 算法。PageRank 算法是 Google 创始人拉里·佩奇和谢尔盖·布林与 1997 年构建早期的 的搜索系统原型时提出的链接分析算法, 该算法是他们用来评价搜索系统过覆盖网页重要性的一种重要方法, 随着 Google 的成功, 该算法也成为其他搜索 引擎和学术界十分关注的计算模型。

PageRank 算法是一种网页排名算法, 其基本思想有两条:

主题模型算法

LSA 和 LSI 以及 LDA

关键词提取示例

关键词提取使用的 Python 库

jieba

analyse 模块封装的 TextRank 算法

gensim

Gensim 是一款开源的第三方 Python 工具包, 用于从原始的非结构化文本中, 无监督的学习到文本隐层的主题向量表达。 它支持包括 TF-IDF、LSA、LDA 和 word2vec 在内的多种主题模型算法, 支持流式训练, 并提供了诸如相似度计算, 信息检索等一些常用任务的 API 接口

$ pip install genism

关键词提取算法步骤

训练一个关键词提取算法步骤:

  1. 加载已有的文档数据集
  2. 加载停用词表
  3. 对数据集中的文档进行 分词
  4. 根据停用词表, 过滤干扰词
  5. 根据数据集训练关键词提取算法

根据训练好的关键词提取算法对新文档进行关键词提取步骤:

  1. 对新文档进行分词
  2. 根据停用词表, 过滤干扰词
  3. 根据训练好的算法提取关键词