关键词提取算法概述

关键词提取概述

概念

关键词是指能反映文本主题或者主要内容的词语。关键词提取是NLP领域的一个重要的子任务。在信息检索中,准确的关键词提取可以大幅提升效率;在对话系统中,机器可以通过关键词来理解用户意图;在自动文摘、文本分类中,关键词的发现也非常有帮助。

关键词提取方法概述

关于文本的关键词提取方法分为:

  • 有监督的关键词抽取算法
  • 半监督的关键词抽取算法
  • 无监督的关键词抽取算法

有监督的关键词抽取算法

有监督的关键词提取方法主要是通过分类的方式进行,通过构建一个较为丰富和完善的词表,然后通过判断每个文档和词表中每个词都匹配程度,以类似打标签的方式,达到关键词提取的效果。既然是分类问题,就需要提供已经标注好的大批量训练语料,因为每天都有大量新的信息出现,人工维护词表需要很高的人力成本。

半监督的关键词抽取算法

只需要少量的训练数据,利用这些训练数据构建关键词抽取模型,然后使用模型对新的文本进行关键词提取,对于这些关键词进行人工过滤,将过滤得到的关键词加入训练集,重新训练模型。

无监督的关键词抽取算法

相对于有监督的方法,无监督的方法既不需要维护词表,也不需要人工标准语料辅助训练。利用某些算法挖掘文本中比较重要的词作为关键词,进行关键词抽取。关键词抽取流程如下:

关键词提取算法流程

因此这类算法在工程中应用较广,无监督关键词抽取算法可以分为三大类:

  • 基于统计特征的关键词抽取
  • 基于词图模型的关键词抽取
  • 基于主题模型的关键词抽取
基于统计特征的关键词抽取

基于统计特征的关键词抽取算法的思想是利用文档中词语的统计信息抽取文档的关键词。通常对文本进行预处理得到候选词语的集合,然后采用特征值量化的方式从候选集合中得到关键词。此处主要讲TF-IDF。

TF-IDF

TF-IDF基本思想:词的重要性与它在文件中出现的次数成正比,但同时会随着它在语料库中出现的频率成反比。

一个文档中多次出现的词总是有一定的特殊意义,但是并不是所有多次出现的词就都是有意义的,如果一个词在所有的文档中都多次出现,那么这个词就没有什么价值了。或者说,如果某个词或者短语在一个文档中出现多次,但是在其他文档中很少出现,就可以认为这个词或短语具有很好的区分性,适合用来对文档进行分类。

TF-IDF = TF * IDF,其中TF(Term Frequency)表示一个词在文档中出现的次数。DF(Document Frequency)表示整个语料库中含有某个词的文档个数。IDF(Inverse Document Frequency)为逆文档频率,其计算公式为:IDF= log(语料库中文档总数/(包含该词的文档数+1)),+1 的作用是做平滑处理。

基于词图模型的关键词抽取

基于词图模型的关键词抽取首先要构建文档的语言网络图,然后对语言进行网络图分析,在这个图上寻找具有重要作用的词或者短语,这些短语就是文档的关键词。

TextRank

TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法(其原理在本文在下面), 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取。TextRank算法用于关键词提取的步骤如下:

  • 把给定的文本T按照完整句子进行分割
  • 对每个句子,进行分词和词性标注处理,并过滤掉停用词,只保留指定词性的单词,如名词、动词、形容词。
  • 构建候选关键词图 G = (V,E),其中 V 为节点集,由(2)生成的候选关键词组成,然后采用共现关系(Co-Occurrence)构造任两点之间的边,两个节点之间存在边仅当它们对应的词汇在长度为 K 的窗口中共现,K 表示窗口大小,即最多共现 K 个单词。
  • 根据TextRank的公式,迭代传播各节点的权重,直至收敛。
  • 对节点权重进行倒序排序,从而得到最重要的T个单词,作为候选关键词。
  • 根据上述步骤得到最重要的T个单词,在原始文本中进行标记,若形成相邻词组,则组合成多词关键词。
基于主题模型的关键词抽取

基于主题关键词提取算法主要利用的是主题模型中关于主题的分布的性质进行关键词提取。在某些场景,关键词不一定会显示的出现在文档中,这种情况下,前面两种算法显然不能提取出隐含的主题信息,这时就需要用到主题模型。前两种算法仅用到了文本中的统计信息,并没有用到文本的语义信息。主题模型认为在词与文档之间没有直接的联系,它们应当还有一个维度将它们串联起来,将这个维度称为主题。每个文档都应该对应着一个或多个的主题,而每个主题都会有对应的词分布,通过主题,就可以得到每个文档的词分布。

P(单词 | 文档) = P(单词 | 主题) * P(主题 | 文档)

LSA

潜在语义分析(LSA)是主题建模的基础技术之一。其核心思想是将文档-词矩阵分解成相互独立的文档-主题矩阵和主题-词矩阵。LSA的主要步骤:

  • 使用词袋模型或空间向量模型将每个文档表示为向量
  • 将所有的文档词向量拼接起来构成文档-词矩阵
  • 对文档-词矩阵进行奇异值分解
  • 根据SVD结果,将文档-词矩阵映射到一个更低维度k的近似SVD结果,每个文档和词都可以表示为k个主题构成的空间中的一个点。通过计算每个文档和词的相似度,取相似度最高的一个词即为文档的关键词。
LDA

LDA 即潜在狄利克雷分布,是 pLSA 的贝叶斯版本。它假设文档中主题的先验分布和主题中词的先验分布都服从狄利克雷分布。根据贝叶斯学派的方法,通过先验的狄利克雷分布和观测数据得到的多项式分布,得到一组Dirichlet-multi共轭,并据此来推断文档中主题的后验分布和主题中词的后验分布,从而有助于更好地泛化。

结合吉布斯采样的LDA模型训练过程:

  • 随机初始化,对语料中每篇文档中的每个词w,随机的赋予一个topic编号z
  • 重新扫描语料库,对每个词w按照吉布斯采样公式重新采样它的topic,在语料中进行更新
  • 重复以上语料库的重新采样过程知道吉布斯采样收敛
  • 统计语料库的topic-word共现频率矩阵,该矩阵就是LDA的模型

接下来就可以按照一定的方式对新文档的主题进行预估,具体步骤如下:

  • 随机初始化,对当前文档中的每个词w,随机地赋一个主题编号z
  • 重新扫描当前文档,按照吉布斯采样公式重新采样它的主题
  • 重复以上过程,直到吉布斯采样收敛
  • 统计文档中的主题分布即为预估结果

应用

现阶段,文本的关键词提取在文本分类、文本检索、自动文摘、文本推荐和数据挖掘领域有着广泛的应用。在实际应用中,因为应用环境的复杂性,对于不同类型的文本,例如长文本和短文本,用同一种文本关键词提取方法得到的效果并不相同。因此,在实际应用中针对不同的条件环境所采用的算法会有所不同。

相对于上文中所提到的算法,一些组合算法在工程上被大量应用以弥补单算法的不足,例如将TF-IDF算法与TextRank算法相结合,或者利用TF-IDF与词性综合考虑得到关键词等。同时,工程上对于文本的预处理以及文本分词的准确性也有很大的依赖。对于文本的错别字,变形词等信息,需要在预处理阶段予以解决,分词算法的选择,未登录词以及歧义词的识别在一定程度上对关键词突提取会产生很大的影响。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值