TextRank文本摘要算法

摘要提取:对文本进行降维处理

内容参考:
https://www.bilibili.com/video/BV1UR4y1E7fa?spm_id_from=333.337.search-card.all.click

TextRank-文本摘要算法

TextRank基于图的排序算法,来源于谷歌的PageRank算法,把文本单元分割成若干组成单元(单词或句子)并建立图模型,利用投票机制对文本的重要成分进行排序,仅仅利用****单篇文档本身的信息就可以实现关键词提取,摘录。和LDA,HMM等模型不同,TextRank不需要对多篇文档进行训练。

基于TextRank的关键词提取

从一端给定的文本自动抽取有意义的若干词语或词组,TextRank算法是利用局部词汇之间的关系(共现窗口)对后续关键词进行排序,直接从文本本身抽取:

  1. 给定文本T按照完整句子进行分割
  2. 每个句子进行分词和词性处理,并过滤掉停用词,只保留指定词性的单词,保留后的词为候选关键词
  3. 构建候选关键词图,G=(V,E)其中V为节点集,由步骤2中生成的候选关键词组成,然后采用共现关系构造任意两点之间的边,两个节点之间存在的边仅当他们对应的词汇在长度为K的窗口中共现。K表示窗口大小,即最多共现K个单词。
  4. 根据上面的公式,初始化各个节点的权重,迭代计算各个节点的权重,直至收敛。
  5. 对节点权重进行倒叙排列,从而得到最重要的T个但系,作为候选关键词
  6. 由步骤5得到的关键词,在原始文本中进行标记,若形成相邻词组则组合成多次关键词

基于TextRank的文本摘要

基于TextRank的文本摘要属于自动摘录,通过选取文本中重要度较高的句子形成文摘,其主要步骤如下:

  1. 预处理-将输入的文本或文本集的内容分割成句子得T=[S1,S2,S3····Sm],构件图G=(V,E)其中V为句子集,对句子进行分词,去除停止词,得到Si = [ti1,ti2,ti3,ti4,·····],其中tij是保留后得候选关键词
  2. 句子相似度计算,构建图G中的边集E, 基于句子间的内容覆盖率,给定两个句子Si,Sj,采用相似度计算公式进行计算
    . 相似度计算公式
    若相似度大于给定的阈值,就认为两个句子语义相关并将它们连接起来,即边的权值
  3. 句子权重计算:根据公式,迭代传播权重计算各句子的得分
  4. 抽取文摘句,将3得到的句子进行倒序排序,抽取重要度最高的T个句子作为候选文摘句
  5. 形成文本摘要:根据字数或句子数要求,从候选文摘句中抽取句子组成摘要

实验步骤:

实验目标:

1.导入依赖库

from gensim.summarization import summarize

2.加载数据

file = r'path'
with open(file,'r')as f:
	content = f.read()

3.文本截取

# 设置开始字符串和结束字符串
start_string = ''
end_string = ''
contents = 

4.文本清理-使用正则表达式

# 空格 替换 n

5.输出文本摘要

# 调用Gensim TextRank 文本摘要算法,执行文本摘要
gensim.summarization.summarizer.summarize(text,ratio=0.2, word_count = None, split = False)
# text为输入文本
# 重要 : ratio 这是摘要中所要求的句子数与输入文本数句子的比值 (摘要比例设置为0.2。提取原文档20%的文档)

第二种文本处理 方式

6.加载数据
加载wiki.txt数据,以实际数据存储路径为准

7.文档清洗
8.输出文本摘要

文本分析

你可能感兴趣的:(NLP,摘要模型,文章笔记,python)