关键词抽取与自动文摘
在自然语言处理中对于关键词抽取与自动文摘这两个主题,有着多种多样的方式去解决它们,这里将介绍一种叫做TextRank的方法,就可以解决这两个问题。我将结合具体的代码,试图将算法解释地更加清楚些。
论文『TextRank: Bringing Order into Texts』中首次提出了TextRank方法,如果想全面了解下这个方法,还是仔细看下这篇论文。
当你一看到TextRank这个名字的时候,你是否会觉得很熟悉,它是否有让你联想到Google的PageRank。其实,该方法就是基于PageRank而来的,只是将page替换成word、sentence以完成关键词抽取与自动文摘任务。当然其中的一些计算准则是以文本为标准的。
如果你还不熟悉PageRank的话,还是去网上找一篇博客来看看,其实是不难的。
关键词抽取中的TextRank
之前我们也提到了,就是将PageRank模型中的page替换成word。因为是用于文本中,所以与用于网页中是不一样的。改动的地方主要有:
PageRank中因为有链接的存在,所以是将存在链接的两个网页相连。而在文本处理中,一个词的出现,与其前后词之间是有联系的。在TextRank中存在一个窗口的概念,将一个词与窗口内的所有词进行连接。窗口值的设置也是比较讲究的。实验表明,如果窗口值设置的过大,不仅带来计算时间上的提高(因为图中的边数增加),而且会造成模型性能的下降。这里模型的性能是使用具体的任务去衡量的,关键词抽取是作为具体任务的前驱。
因为链接是具有指向性的,所以PageRank模型构造的是一个有向图。而在文本中,词与词之间的联系是很难确定方向的,所以既可以构造一个有向图也可以构造一个无向图。实验表明,有向图和无向图在收敛性上是没有差别的,就是它们都会收敛到一个固定值上。至于初始值的设置,在PageRank中就已经证明了,最终的结果与初值的设定无关,只与迭代的次数有关。只要迭代的次数足够,就能收敛到一个固定值。
在PageRank中,会将爬虫所爬到的所有网页都加入到模型中去,至于死链的去除,这都是后话。但在TextRank中,不会将文本中出现的所有词都加入到图模型中。因为不是所有的词都是有其实际意义的,例如说介词。所以在构建图模型时,会利用一定的语法规则过滤掉一些词,以减小图的规模。这里的过滤规则一般来说是基于词性的,所以在之前进行分词是还需要将词的词性给标记出来。实验表明,最佳的选择是保留名词和形容词。
PageRank模型中,连接的关系一般只会发生一次,很少会有一个网页中存在两个指向同一个网页的链接。但在文本中却不同,有一些词是固定的搭配,它们会在一起出现多词。所以TextRank所构造的图应该是一个赋权图。这里的权值应该是两者共同出现的次数。相应的每个结点权值的更新公式应该更改为:

最低0.47元/天 解锁文章
442

被折叠的 条评论
为什么被折叠?



