NLP-关键词抽取
[toc]
0 概述
在自然语言处理领域,我们有一种类型的问题:如何在一堆文本中中提取出核心词/句子。而无论是对于长文本还是短文本,往往可以通过几个关键词窥探整个文本的主题思想。
与此同时,不管是基于文本的推荐还是基于文本的搜索,对于文本关键词的依赖也很大,关键词提取的准确程度直接关系到推荐系统或者搜索系统的最终效果。
1 无监督算法
不需要人工标注的语料,利用某些方法发现文本中比较重要的词作为关键词,进行关键词抽取。
1.1 基于统计特征的关键词抽取
基于于统计特征的关键词抽取算法的思想是利用文档中词语的统计信息抽取文档的关键词。通常将文本经过预处理得到候选词语的集合,然后采用特征值量化的方式从候选集合中得到关键词。基于统计特征的关键词抽取方法的关键是采用什么样的特征值量化指标的方式,目前常用的有三类:
(1)基于词权重的特征量化
主要包括词性、词频、逆向文档频率、相对词频、词长等
-
词性
通过分词、语法分析后得到的结果。现有的关键词中,绝大多数关键词为名词或者动名词。一般情况下,名词与其他词性相比更能表达一篇文章的主要思想。但是,词性作为特征量化的指标,一般与其他指标结合使用。
-
词频
词频表示一个词在文本中出现的频率。一般我们认为,如果一个词在文本中出现的越是频繁,那么这个词就越有可能作为文章的核心词。词频简单地统计了词在文本中出现的次数,但是,只依靠词频所得到的关键词有很大的不确定性,对于长度比较长的文本,这个方法会有很大的噪音。
-
位置信息
一般情况下,词出现的位置对于词来说有着很大的价值。例如,标题、摘要本身就是作者概括出的文章的中心思想,因此出现在这些地方的词具有一定的代表性,更可能成为关键词。但是,因为每个作者的习惯不同,写作方式不同,关键句子的位置也会有所不同,所以这也是一种很宽泛的得到关键词的方法,一般情况下不会单独使用。
(2)基于词的文档位置的特征量化
这种特征量化方式是根据文章不同位置的句子对文档的重要性不同的假设来进行的。通常,文章的前N个词、后N个词、段首、段尾、标题、引言等位置的词具有代表性,这些词作为关键词可以表达整个的主题。
(3 )基于词的关联信息的特征量化
词的关联信息是指词与词、词与文档的关联程度信息,包括互信息、hits值、贡献度、依存度、TF-IDF值等
1.2 基于词图模型的关键词抽取
基于词图模型的关键词抽取首先要构建文档的语言网络图,然后对语言进行网络图分析,在这个图上寻找具有重要作用的词或者短语,这些短语就是文档的关键词。语言网络图中节点基本上都是词,根据词的链接方式不同,语言网络的主要形式分为四种:共现网络图、语法网络图、语义网络图和其他网络图。
在语言网络图的构建过程中,都是以预处理过后的词作为节点,词与词之间的关系作为边。语言网络图中,边与边之间的权重一般用词之间的关联度来表示。在使用语言网络图获得关键词的时候,需要评估各个节点的重要性,然后根据重要性将节点进行排序,选取TopK个节点所代表的词作为关键词。节点的重要性计算方法有以下几种方法。
(1) 特征综合法(aka社会网络中心性分析方法)
核心思想:节点重要性等于节点的显著性,以不破坏网络的整体性为基础。此方法就是从网络的局部属性和全局属性角度去定量分析网络结构的拓扑性质。
常用的定量计算方法如下。
(2) 系统科学法
核心思想:节点重要性等价于该节点被删除后对于整个语言网络图的破坏程度。
重要的节点被删除后会对网络的连通性等产生变化。如果我们在网络图中删除某一个节点,图的某些指定特性产生了改变,可以根据特性改变的大小计算节点的重要性,从而对节点进行筛选。
(3)随机游走法
网络图上的随机游走(random walk)是指给定图和出发点,随机地选择邻居节点,移动到邻居节点上,然后把 当前节点作为出发点,重复以上过程.那些被随机选出的节点序列就构成了一个在图上的随机游走过程。
核心思想:在有向图中,当一个节点指向另一个节点时,相当于由 弧的起点给弧的终点投上一票,节点得票越多,说明该节点在有向图中越重要,但同时,还跟给它投票的节点的 重要程度相关,即,一个节点的重要程度取决于它的票数和给它投票的节点本身的重要程度。
随机游走算法一个很出名的应用是大名鼎鼎的PageRank算法,PageRank算法是整个google搜索的核心算法,是一种通过网页之间的超链接来计算网页重要性的技术,其关键的思想是重要性传递。Mihalcea 等人将 PageRank 应用于关键词抽取领域,并命名为 TextRank。
1.3 基于主题模型的关键词抽取
对于一篇文章,我们的构思思路是先确定几个主题,然后根据主题想好描述主题的词汇,将词汇按照语法规则组成句子,段落,最后生成一篇文章。主题模型也是基于这个思想,它认为:① 文档是若干主题的混合分布;② 每个主题又是词语的概率分布。
PLSA模型就是第一个根据这个想法构建的模型,该模型认为:一篇文档中的每一个词都是通过一定概率选取某个主题,然后再按照一定的概率从主题中选取得到这个词语,这个词语的计算公式为: \(P(\frac{词语}{文档})=\sum_{主题}P(\frac{词语}{文档})\times P(\frac{主题}{文档})\) 一些贝叶斯学派的研究者对于PLSA模型进行了改进,他们认为,文章对应主题的概率以及主题对应词语的概率不是一定的,也服从一定的概率,于是就有了现阶段常用的主题模型–LDA主题模型。LDA模型下次再细讲。
基于主题模型的关键词抽取算法的步骤如下:
- 获取候选关键词(将文本分词,也可以再根据词性选取候选关键词)
- 语料学习(大规模预料学习得到主题模型)
- 计算文章主题分布(根据得到的隐含主题模型,计算文章主题分布和候选关键词分布)
- 排序(计算文档和候选关键词的主题相似度并排序,选取前n个词作为关键词)
2 有监督算法
它是将关键词抽取算法看作是二分类问题,通过构建一个较为丰富和完善的词表,然后通过判断文档与词表中每个词的匹配程度,来判断文档中的词或者短语是或者不是关键词。既然是分类问题,就需要提供已经标注好的训练语料,利用训练语料训练关键词提取模型,根据模型对需要抽取关键词的文档进行关键词抽取。
有监督的方法能够获取到较高的精度,但缺点是需要大批量的标注 数据,人工成本过高。
无监督的方法
- 有基于统计机器翻译 SMT 的方法(转换成翻译问题,可以采用 IBM Model 1)
- 基于序列标注模型的方法(转换成核心成分识别问题,类似 NER,状态只有0和1,即是否是核心成分,较适用于短文本)
- 基于排序学习LTR的方法(转换成候选词排序问题,采用 pairwise 方法,或者深度语义匹配方法,如 DSSM)
- 基于传统机器学习分类方法(转换成二元或多元分类问题)
有监督方法依赖一定规模的标注数据,效果通常会显著好于无监督方法
参考文献
-
[1] [达观数据,技术干货 如何做好文本关键词提取?从三种算法说起](https://baijiahao.baidu.com/s?id=1591759412102633028&wfr=spider&for=pc) - [2] 知乎,关键词」提取都有哪些方案?
- [3] 小Fan的回答,关键词」提取都有哪些方案?