自然语言处理之——关键词提取(一)

一. 摘要

本次的分享中,我们将了解目前较常用的关键词提取技术。关键词是代表文章重要内容的一组词。在文本的分类聚类、自动摘要等方面有着重要的作用。还可以让人们更直观便捷的浏览文本信息。在现实的常用文本中是不包含关键词的,所以自动提取关键词技术有着很重要的意义。

二. 关键字提取技术概述

在巨量的信息面前,很多信息是我们无法全面接收,因此我们需要从中筛选出一些我们感兴趣的或者有代表性的信息进行接收。那么这一个过程就是关键词提取技术。如果我们可以准确的将所有的文档都用几个简单的关键词描述,那么我们便可以通过关键词了解一篇文章的内容,这将会提高信息获取到效率。

关键词提取算法一般可以分为有监督和无监督两类。有监督的关键词提取方法主要是通过分类的方式进行,首先通过创建一个比较丰富完善的词表,然后通过计算相似度判断每个文档与词表中每个词的匹配程度,类似打标签的方式,以此达到关键词提取的效果。有监督的方法虽然可以获取到较高的提取精度,但是需要大批量的标注数据,人工成本非常高。另外,现代信息量爆炸式增长,会新增出大量的新信息,一个固定的词表代表范围有限,很难将这类信息内容表述出来,但要人工维护这个受控的词表需要很大的人力成本,这就成为了有监督方法在使用上的一个很大短板。

对比有监督的关键词提取方法,无监督的方法对数据的要求就低了很多。不需要人工创建、维护词表,也不需要人工标准语料辅助进行训练。因此,这类的关键词提取技术应用更普遍。本次分享我们的主要介绍的关键词提取技术是TF-IDF算法和TextRank算法。

三. T F-IDF 算法

TF-IDF算法(Term Frequency-Inverse Document Frequency,词频-逆文档频次算法)是一种基于统计的计算方法,常用于评估在一个文档集中一个词对某份文档的重要程度。这种思想是符合关键词抽取的需求,一个词语对文档越重要,那么是关键词的概率就越大,所以通常将TF-IDF算法应用在关键词提取中。

首先从算法的名称分析,TF-IDF算法是由两部分组成:TF算法和IDF算法。TF算法是统计一个词在一篇文档中出现的频次,基本思想理解为:一个词在一篇文档中出现的次数越多,那么这个词对文档的表达能力就越强。而IDF算法是统计一个词在文档集中的多少个文档中出现,基本思想理解为:如果一个词在越少数的文档中出现,则对文档的区分能力就越强。

TF算法和IDF算法也可以单独使用,但是两种算法单独使用过程中都有其不足的地方。TF算法仅仅能够衡量词在一篇文档的出现频次,没有考虑到词对文档的区分能力。而IDF算法则是相反,强调的是词的区分能力,但是一个词既然能够在一篇文档中频繁出现,也表示这个词可以很好的表征这篇文档的特征,如果忽视这点显然也是很不合理的。于是,经过实际考虑将这两种算法综合使用,组合成TF-IDF算法,从词频、逆文档频次两个方面对词的代表能力进行衡量。

自然语言处理之——关键词提取(一)

图1:TF表达式

在实际的使用中,TF的计算表达式如图所示。其中nij表示词i在文档j中的出现次数。但是仅用频次来表示,长文本中的词出现频次高的概率会更大,这一点会影响到不同文档之间关键词权值的比较。所以在计算过程中一般会对词频进行归一化。分母的部分就是统计文档中每一个词出现次数的总和,也就是文档中词的总数量。

自然语言处理之——关键词提取(一)

图2:IDF表达式

IDF算法的计算表达式如图所示。|D|表示文档集中总文档数,|Di|表示文档集中出现词i的文档数量。分母中+1是采用了拉普拉斯平滑思想,避免有部分新词没有在语料库中出现过而导致分母为零的情况出现,有增强算法健壮性的作用。

自然语言处理之——关键词提取(一)

图3:TF-IDF表达式

TF-IDF算法表达式如上图中所示,TF-IDF算法就是TF算法与IDF算法的综合使用,对于这两种算法的组合,通过大量的理论推导和实验研究后,发现以取IDF算法值的对数,然后相乘是较为有效的计算方式。

除了上述提到的传统TF-IDF算法之外,TF-IDF算法还有很多变种的加权方法。传统的TF-IDF算法中,仅仅考虑到了词的两个统计信息。因此,其对文本的信息利用程度显然是比较少的。所以除了上述的信息外,一个文本中还有很多的信息能够对关键词的提取起到很好的辅助作用,例如每个词的词性、出现的位置等等。算法本身的定义是死的,但是结合我们的应用场景,对算法进行合理的改造和补充,使之能够更适应应用环境,这样可以更好的得到想要的结果。

四. T extRank 算法

在上述的TF-IDF算法中,都需要基于一个现成的语料库,主题模型的关键词提取算法则是需要通过对大规模文档学习,发现文档的隐含主题。而TextRank算法则是可以脱离语料库的基础,仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本思想源于Google的PageRank算法。因此这里需要先了解下PageRank算法。

自然语言处理之——关键词提取(一)

图4:PageRank算法示意图

PageRank算法是一种网页排名算法,其基本思想有两个:(1)链接数量。一个网页被越多的其他网页链接,表示这个网页越重要;(2)链接质量。一个网页被一个越高权值的网页链接,也表示这个网页越重要。

自然语言处理之——关键词提取(一)

图5:PageRank算法表达式

In(Vi)为Vi的入链集合,Out(Vj)为Vj的出链集合,|Out(Vj)|则是出链的数量。因为每一个网页要将它自身的分数平均地贡献给每个链接,那么S(Vj)/|Out(Vj)|即为Vj贡献给Vi的分数。将Vi的所以入链贡献给它的分数相加,就是Vi自身的数值。以这种方式来计算每个网页的分数就会有一个问题,每个网页的得分都与其链接的网页的分数有关,那么其链接网页的数值该如何确定?为解决这个问题,算法开始时会将所以网页的得分初始化为1,然后通过多次迭代来对每个网页的分数进行收敛。收敛得到的数值为最终得分。

自然语言处理之——关键词提取(一)

图6:PageRank算法改造表达式

在图5表达式中计算会导致一些孤立网页得分为零。为避免这种情况出现,对图5中公式进行改造,加入了阻尼系数d,改造后表达式如图6中所示,这样即使是孤立的网页,也可得出数值。

上述便是PageRank算法的理论,也是TextRank算法的理论基础。不同的是PageRank是又向无权图,而TextRank进行自动摘要则属于有权图,因为在计分时除了考虑链接句子的重要性外,还要考虑两个句子的相似性。因此TextRank的完整表达式为

自然语言处理之——关键词提取(一)

图7:TextRank算法改造表达式

在计算每个句子给他链接句的贡献时,就不采用平均分配的方式,而是通过计算权重占总权重的比例进行分配,这里的权重就是两个句子的相似度值。相似度计算的方法可以采用距离相似度、余弦相似度等。在对一篇文档进行自动摘要的时候,默认每个语句和其他语句都有链接关系,也就是又向完全图了。

当TextRank应用到关键字抽取的时候,与应用在自动摘要中有两个不同的地方:(1)词与词之间的关联没有权重;(2)每个词不是与其余所以词都有链接。

由于第一点的不同,那么TextRank重点分数计算将会退化,将得分平均贡献给每个链接的词。

自然语言处理之——关键词提取(一)

图8:TextRank算法改造词表达式

对于第二点的不同,既然每个词与其余所有词并不是都相连,那么他们中间的链接关系该如何设定呢。这里的TextRank应用在关键字提取中时,加入了一个窗口的概念,在窗口中的词都是互相链接的。下面我们用示例展示一下窗口的概念应用。

原文档:詹姆斯夺得了职业生涯第4座总冠军。

分词后:[詹姆斯, 夺得, 了, 职业, 生涯, 第, 4, 座, 总冠军]。将窗口大小设置为4,可以得到以下几个窗口:

  1. [詹姆斯, 夺得, 了, 职业]

  2. [夺得, 了, 职业, 生涯]

  3. [了, 职业, 生涯, 第]

  4. [职业, 生涯, 第, 4]

  5. [生涯, 第, 4, 座]

  6. [第, 4, 座, 总冠军]

每个窗口内的所有词都有链接关系,比如[詹姆斯]和[夺得, 了, 职业]之间有链接关系。此时便可以套用TextRank的公式,对每个词进行得分的计算。最后便可以选择出得分最高的n个词作为文档的关键词。

五. 总结

本次分享的内容是自然语言处理中关键词提取技术的用处和效果介绍,主体内容主要解释了基于文档库的TF-IDF(词频-逆文档频次算法)的基础原理,以及可脱离文档库存在的TextRank算法思的想和表达式。关键词提取技术的方法多样且不共性,所以下篇的分享内容是LSA/LSI关键词提取算法的介绍,敬请期待!

Original: https://blog.csdn.net/xi_xiyu/article/details/122682357
Author: xi_xiyu
Title: 自然语言处理之——关键词提取(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/542771/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球