前言
今天为大家介绍一个python算法TextRank,实现从长篇中快速抽取精准摘要。
TextRank是一种基于图形的文本处理排序算法。PageRank通常用作其底层的图排序模型。当然,其他的图排序模型也可以与之结合。
TextRank算法不需要深入的语言和专业知识,因为它是一种无监督算法。在文本中使用基于图形的排序算法,需要构造一个图形来表达文本、单词和其他实体。
在汉语中,单词、短语、句子等可以作为图中的顶点。通过建立这些顶点之间的关系,如词序关系、语义关系、内容相似性等,可以构造出一个合适的图。
目前,TextRank在中文文本中的应用主要有三个方向,分别是:
1)关键词提取;
2)关键短语提取;
3)自动摘要。
Python中有一个名为textrank4zh的包,它实现了这三个函数。其源地址为:
实现了良好的文本处理效果。
效果预览
近日,Tushare Pro发布了近10年来央视新闻播出数据,对数据进行了清理和规范。
然而,每天新闻广播中有成千上万的单词,很难完全读懂。如果我们使用自动摘要技术将成千上万的单词浓缩成10个句子,阅读的负担就会减轻。自动汇总是TextRank的切入点。
在实现这个功能之前,让我们先来看看从新闻中提取的抽象效果。
扣扣 :13465+25417
多亏了Tushare的新闻广播标准文本,TextRank的自动摘要看起来非常好。
为什么TextRank这么好用?这主要是因为图排序模型是基于全局信息来计算每个顶点的重要性,而不是仅仅使用局部信息。下面简要介绍TextRank应用于自动摘要的基本原理。
基本原理
如前所述,使用TextRank分析文本首先需要在文本上构建一个图表。
对于文本自动摘要的任务,我们使用句子作为图的顶点,句子之间的关系作为图的边。我们需要评估句子之间的相似性。每个句子只与最相似的句子连接,并使用相似度作为边的权重。
事实上,这两句话是相似的,所以可以认为这两句话之间有一种“推荐”关系,也就是说,在读者阅读了这句话之后,这句话推荐读者阅读与之相似的句子。
评价两个句子相似度的方法有很多,如余弦相似度、编辑距离等。TextRank算法使用的是最基本的方法。相似度可以通过计算两个句子中相同单词的数量来计算。此外,还可以添加语法过滤器来过滤单词。
通过确定图的顶点和边以及边的权值,得到了一个加权图,加权图的形状如图1所示。接下来,可以使用PageRank迭代计算每个顶点(句子)的重要性。最后,将最重要的N个句子作为全文的总结,这是TextRank的自动总结结果。
代码实现
因为textrank4zh已经实现了TextRank的功能,我们可以直接使用它,而且使用非常简单。