创新实训(9)-提取式文本摘要之-TextRank

本文介绍了TextRank算法的起源,从PageRank算法出发,详细阐述了如何使用TextRank提取关键词和文章摘要。在提取关键词时,通过构建单词图并计算权重。而在提取文章摘要时,以句子为节点,利用句子相似度建立加权图。通过示例代码展示了TextRank4Sentence类的实现,包括分词、计算关键句等步骤。参考链接提供了更多相关资源。
摘要由CSDN通过智能技术生成

创新实训(9)-提取式文本摘要之-TextRank

1.起源

TextRank的灵感起源于PageRank算法,PageRank是用于计算网页权重的一个算法。

这个算法是基于图的算法,每个网页可以看作式一个图中的节点,如果网页A能够跳转到网页B,那么就有一条从A到B的有向边。这样就可以构造一个有向图。

然后使用下面的公式经过多次迭代就可以获得每个网页对应的权重。

PageRank公式

下面解释每个元素的含义:

N4sc6S.png

2. TextRank提取关键词

提取关键词和计算网页权重类似,只不过将网页替换成了词语。

所以第一步就是分词,每个单词就是图中的一个节点。然后是边的定义,可以利用n-gram的思路,即每个单词只与它附近的n个单词有关,即它与附近的n个词对应的节点连一条无向边。

另外,还需要对句子中的单词进行一部分处理,比如去掉停用词之类的。

下面是论文中的例子:

TextRank例子

图构建好之后,就可以使用上面的公式进行计算了。

3. TextRank提取文章摘要

上面提取文章关键词是以单词为节点,类比一下,提取文章摘要就应该以句子为节点。但是节点之间的关系如何定义是一个问题,无法使用上面提到的n-gram了,因为相邻的句子之间的关系是不确定的,可能说的完全是两个不同的事。

论文中作者提出了一个计算两个句子之间相似度的方法。这样一来,节点之间的边就变成了加权的边了,权值就是两个句子之间的相似度。

下面是论文中给出的计算两个句子相似度的公式:

句子相似度

N44vrt.png

当然使用其他计算相似度的方式也是可以的。

由于使用了带权的边,因此公式也要进行相应的修改:

N4IIhD.png基本就是把原来的对应边的部分添加了权重,边的数量改成了权重和。

4.TextRank文章摘要代码实现

这里参考了github上别人已经实现的代码:https://github.com/letiantian/TextRank4ZH

示例代码:

#-*- encoding:utf-8 -*-
from __future__ import print_function

import sys
try:
    reload(sys)
    sys.setdefaultencoding('utf-8')
except:
    pass

import codecs
from textrank4zh import TextRank4Keyword, TextRank4Sentence

text = codecs.open('../test/doc/01.txt', 'r', 'utf-8').read() # 打开目标文件,内容是要进行摘要的文本。
tr4w = TextRank4Keyword() # 定义一个提取关键词的类

# 分析文本内容
tr4w.analyze(text=text, lower=True, window=2)  # py2中text必须是utf8编码的str或者unicode对象,py3中必须是utf8编码的bytes或者str对象

# 输出关键词
print( '关键词:' )
for item in tr4w.get_keywords(20, word_min_len=1):
    print(item.word, item.weight)

print()
# 输出关键短语
print( '关键短语:'
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值