一、textrank 论文解读 textrank 的思想是从谷歌的pagerank借鉴的。那我们先来讲一下PageRank的原理,PageRank就是认为 如果一个网页被很多网页链接的话,那就认为这个网页很重要。对于textrank 来讲那就是 如果一个单词出现在很多单词后面,那么说明这个单词很重要。
textrank 是个基于图的算法,类似于熟悉的N-gram算法,在textrank中每一个词与其前面的N个词以及后面的N个词均具有图相邻的关系,与PageRank不同的是,textrank是无向图,又因为在网页浏览的背景下,一个页面包含到另一个页面的多个或部分链接是不寻常的,因此,基于图表的排名的最初定义是假定为“中性”。然而,在我们的模型中,图是从自然语言文本中构建的,并且可能包括从文本中提取的单元之间的多个或部分链接。
基于图的排序算法本质上是一种根据从图中提取的全局信息来决定图中定点重要性的方法。对于G = (V,E),这个图来说,V是顶点,(如果在关键词抽取中对应的单词词组,如果在摘要抽取中对应的是句子),E是边,对于一个顶点,In(Vi)是指指向Vi的所有顶点(前驱节点集合),OUT(Vi)是Vi指向的顶点的集合(后继节点集合)。d是一个阻尼系数,在这里起到平滑的作用,通常设置为0。85。
textrank 的公式为:
文章图片
【文本摘要(一) textrank 论文 源码 使用】TextRank中一个单词
文章图片
的权重取决于与在
文章图片
前面的各个点
文章图片
组成的
文章图片
这条边的权重,以及
文章图片
这个点到其他其他边的权重之和。
textrank 主要分为两种应用:一种是 关键词抽取,一种是生成摘要。
关键词抽取的时候权重是要随机初始化,然后进行迭代。在生成摘要的时候,权重指的是句子的相似度,因为句子我们认为都是相邻的,因为之前会考虑到短语的共现性,认为共现性高的权重大,但是在句子的时候出现共现性的概率很小,所以我们一般默认不考虑。
关键词抽取时的评价方法为:precision recall F1-measure
生成摘要的评价方法为ROUGE 评价方法,rouge评价方法rouge解释
二、源码解析 生成式摘要 主要用了jieba的代码
三、jiebatextrank 应用 这里我们使用了清华大学刘志远老师的中文标记数据,是json形式的,
import json
import jieba.analyse
import codecsdef pre_rec_f1measure(y_pred,y_true):news_num= len(y_pred)p_m = 0.0
r_m = 0.0for i in range(news_num):
lenp = len(y_pred[i])
lent = len(y_true[i])
tp = 0.0
if lenp==0:
if lent ==0:
p=1.0
else:
r = 0.0
elif lent ==0:
if lenp ==0 :
r = 1.0
else:
p = 0.0
else:
for word in y_true[i]:
if word in y_pred[i]:
tp+=1p = tp/lenp
r = tp/lent
p_m += p
r_m +=r
precision =p_m/news_num
recall = r_m/news_num
f1_measure = 2*precision*recall/(recall+precision)
return precision,recall,f1_measuredef textran(path):with codecs.open(path,'r','utf-8') as f:
for line in f.readllines():
doc = json.loads(lines)#将json文件转换成python文件
y_true = doc["tags"]
text = doc["content"]
y_pred = jieba.analyse.textrank(text,topK=2,withWeight=True)return y_pred,y_trueif __name__ = '__main__':
y_pred,y_true = textran(path)
precision,recall,f1_measure = pre_rec_f1measure(y_pred,y_true)
print('precison is %.4f' % precision)
print('recall is %.4f'%recall)
print('f1_measure is %.4f'%f1_measure)
四、文本摘要的实现
推荐阅读
- 人工智能|hugginface-introduction 案例介绍
- 中文分词预处理之N最短路径法小结(转)
- 深度学习|2019年CS224N课程笔记-Lecture 17:Multitask Learning
- 深度学习|2018年度总结和2019年度计划
- BERT微调做中文文本分类
- 【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类Bert
- 【学习笔记】自然语言处理实践(新闻文本分类)- 基于深度学习的文本分类Word2Vec
- 自然语言处理|答案选择|语义匹配任务目前表现最好的几个模型
- 深度学习|NLP重铸篇之BERT如何微调文本分类
- NLP实践-Task1