赞
踩
TextRank是受到Google的PageRank的启发,通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本身的信息即可实现关键词提取、文本摘要抽取。
PageRank是用来标识网页的等级、 重要性的一种方法, 是衡量一个网页的重要指标。PageRank 算法提出之前, 已经有人提出使用网页的入链数量进行链接分析, 但是PageRank算法除了考虑入链数量之外, 还参考了网页质量因素, 通过组合入链数量和网页质量因素两个指标, 使得网页重要性的评价更加准确。
PageRank计算公式
将原文本拆分为句子,在每个句子中过滤掉停用词(可选),并只保留指定词性的单词(可选)。由此可以得到句子的集合和单词的集合。
每个单词作为pagerank中的一个节点。设定窗口大小为kk,假设一个句子依次由下面的单词组成:
基于上面构成图,可以计算出每个单词节点的重要性。最重要的若干单词可以作为关键词。
等式左边表示一个句子的权重(WS 是 weight_sum 的缩写),右侧的求和表示每个相邻句子对本句子的贡献程度。与提取关键字的时候不同,一般认为全部句子都是相邻的,不再通过窗口提取。
边的权值
因为我们是要抽取关键句,因而是以句子为基本单位。使用 TextRank 提取摘要的整个过程如下:
- # -*- encoding:utf-8 -*-
-
- import codecs
- from textrank4zh import TextRank4Keyword, TextRank4Sentence
-
- text = codecs.open('./text/01.txt', 'r', 'utf-8').read()
- tr4w = TextRank4Keyword(stop_words_file='./stopword.data') # 导入停止词
-
- # 使用词性过滤,文本小写,窗口为2
- tr4w.train(text=text, speech_tag_filter=True, lower=True, window=2)
-
- print '关键词:'
- # 20个关键词且每个的长度最小为1
- print '/'.join(tr4w.get_keywords(20, word_min_len=1))
-
- print '关键短语:'
- # 20个关键词去构造短语,短语在原文本中出现次数最少为2
- print '/'.join(tr4w.get_keyphrases(keywords_num=20, min_occur_num= 2))
-
- tr4s = TextRank4Sentence(stop_words_file='./stopword.data')
-
- # 使用词性过滤,文本小写,使用words_all_filters生成句子之间的相似性
- tr4s.train(text=text, speech_tag_filter=True, lower=True, source = 'all_filters')
-
- print '摘要:'
- print '\n'.join(tr4s.get_key_sentences(num=3)) # 重要性最高的三个句子
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。