TextRank算法介绍及实现
目录
1、PageRank算法
2、TextRank算法
(1)关键词抽取(keyword extraction)
(2)关键短语抽取(keyphrase extration)
(3)关键句抽取(sentence extraction)
3、TextRank算法实现
(1)基于Textrank4zh的TextRank算法实现
(2)基于jieba的TextRank算法实现
(3)基于SnowNLP的TextRank算法实现
4、PageRank算法与TextRank算法的区别
1、PageRank算法
PageRank算法通过计算网页链接的数量和质量来粗略估计网页的重要性,算法创立之初即应用在谷歌的搜索引擎中,对网页进行排名。
PageRank算法的核心思想如下:
(1)链接数量:如果一个网页被越多的其他网页链接,说明这个网页越重要,即该网页的PR值(PageRank值)会相对较高;
(2)链接质量:如果一个网页被一个越高权值的网页链接,也能表明这个网页越重要,即一个PR值很高的网页链接到一个其他网页,那么被链接到的网页的PR值会相应地因此而提高。
PageRank算法计算公式:
PageRank算法论文:The PageRank Citation Ranking: Bringing Order to the Web
2、TextRank算法
TextRank算法是一种基于图的用于关键词抽取和文档摘要的排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它利用一篇文档内部的词语间的共现信息(语义)便可以抽取关键词,它能够从一个给定的文本中抽取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法抽取出该文本的关键句。
TextRank算法的基本思想是将文档看作一个词的网络,该网络中的链接表示词与词之间的语义关系。
TextRank算法计算公式:
TextRank算法论文:TextRank: Bringing Order into Texts
TextRank算法主要包括:关键词抽取、关键短语抽取、关键句抽取。
(1)关键词抽取(keyword extraction)
关键词抽取是指从文本中确定一些能够描述文档含义的术语的过程。对关键词抽取而言,用于构建顶点集的文本单元可以是句子中的一个或多个字;根据这些字之间的关系(比如:在一个框中同时出现)构建边。根据任务的需要,可以使用语法过滤器(syntactic filters)对顶点集进行优化。语法过滤器的主要作用是将某一类或者某几类词性的字过滤出来作为顶点集。
(2)关键短语抽取(keyphrase extration)
关键词抽取结束后,我们可以得到的N个关键词,在原始文本中相邻的关键词构成关键短语。因此,从get_keyphrases函数的源码中我们可以看到,它先调用get_keywords抽取关键词,然后分析关键词是否存在相邻的情况,最后确定哪些是关键短语。
(3)关键句抽取(sentence extraction)
句子抽取任务主要针对的是自动摘要这个场景,将每一个sentence作为一个顶点,根据两个句子之间的内容重复程度来计算他们之间的“相似度”,以这个相似度作为联系,由于不同句子之间相似度大小不一致,在这个场景下构建的是以相似度大小作为edge权重的有权图。
3、TextRank算法实现
(1)基于Textrank4zh的TextRank算法实现
# coding=utf-8
from textrank4zh import TextRank4Keyword, TextRank4Sentence
import jieba.analyse
from snownlp import SnowNLP
import pandas as pd
import numpy as np#关键词抽取
def keywords_extraction(text):tr4w = TextRank4Keyword(allow_speech_tags=['n', 'nr', 'nrfg', 'ns', 'nt', 'nz'])# allow_speech_tags --词性列表,用于过滤某些词性的词tr4w.analyze(text=text, window=2, lower=True, vertex_source='all_filters', edge_source='no_stop_words',pagerank_config={'alpha': 0.85, })# text -- 文本内容,字符串# window -- 窗口大小,int,用来构造单词之间的边。默认值为2# lower -- 是否将英文文本转换为小写,默认值为False# vertex_source -- 选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪一个来构造pagerank对应的图中的节点# -- 默认值为`'all_filters'`,可选值为`'no_filter', 'no_stop_words', 'all_filters'# edge_source -- 选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪一个来构造pagerank对应的图中的节点之间的边# -- 默认值为`'no_stop_words'`,可选值为`'no_filter', 'no_stop_words', 'all_filters'`。边的构造要结合`window`参数# pagerank_config -- pagerank算法参数配置,阻尼系数为0.85keywords = tr4w.get_keywords(num=6, word_min_len=2)# num -- 返回关键词数量# word_min_len -- 词的最小长度,默认值为1return keywords#关键短语抽取
def keyphrases_extraction(text):tr4w = TextRank4Keyword()tr4w.analyze(text=text, window=2, lower=True, vertex_source='all_filters', edge_source='no_stop_words',pagerank_config={'alpha': 0.85, })keyphrases = tr4w.get_keyphrases(keywords_num=6, min_occur_num=1)# keywords_num -- 抽取的关键词数量# min_occur_num -- 关键短语在文中的最少出现次数return keyphrases#关键句抽取
def keysentences_extraction(text):tr4s = TextRank4Sentence()tr4s.analyze(text, lower=True, source='all_filters')# text -- 文本内容,字符串# lower -- 是否将英文文本转换为小写,默认值为False# source -- 选择使用words_no_filter, words_no_stop_words, words_all_filters中的哪一个来生成句子之间的相似度。# -- 默认值为`'all_filters'`,可选值为`'no_filter', 'no_stop_words', 'all_filters'# sim_func -- 指定计算句子相似度的函数# 获取最重要的num个长度大于等于sentence_min_len的句子用来生成摘要keysentences = tr4s.get_key_sentences(num=3, sentence_min_len=6)return keysentencesdef keywords_textrank(text):keywords = jieba.analyse.textrank(text, topK=6)return keywordsif __name__ == "__main__":text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \"我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \"副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \"据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \"获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \"国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \"正式将该小行星命名为“周又元星”。"#关键词抽取keywords=keywords_extraction(text)print(keywords)#关键短语抽取keyphrases=keyphrases_extraction(text)print(keyphrases)#关键句抽取keysentences=keysentences_extraction(text)print(keysentences)
运行结果:
(2)基于jieba的TextRank算法实现
if __name__ == "__main__":text = "来源:中国科学报本报讯(记者肖洁)又有一位中国科学家喜获小行星命名殊荣!4月19日下午,中国科学院国家天文台在京举行“周又元星”颁授仪式," \"我国天文学家、中国科学院院士周又元的弟子与后辈在欢声笑语中济济一堂。国家天文台党委书记、" \"副台长赵刚在致辞一开始更是送上白居易的诗句:“令公桃李满天下,何须堂前更种花。”" \"据介绍,这颗小行星由国家天文台施密特CCD小行星项目组于1997年9月26日发现于兴隆观测站," \"获得国际永久编号第120730号。2018年9月25日,经国家天文台申报," \"国际天文学联合会小天体联合会小天体命名委员会批准,国际天文学联合会《小行星通报》通知国际社会," \"正式将该小行星命名为“周又元星”。"# 基于jieba的textrank算法实现keywords=keywords_textrank(text)print(keywords)
运行结果:
(3)基于SnowNLP的TextRank算法实现
# 基于SnowNLP的textrank算法实现snlp=SnowNLP(text)print(snlp.keywords(6)) #关键词抽取print(snlp.summary(3)) #关键句抽取
运行结果:
4、PageRank算法与TextRank算法的区别
- PageRank算法根据网页之间的链接关系构造网络,TextRank算法根据词之间的共现关系构造网络;
- PageRank算法构造的网络中的边是有向无权边,TextRank算法构造的网络中的边是无向有权边。
参考:TextRank算法的基本原理及textrank4zh使用实例
本人博文NLP学习内容目录:
一、NLP基础学习
1、NLP学习路线总结
2、TF-IDF算法介绍及实现
3、NLTK使用方法总结
4、英文自然语言预处理方法总结及实现
5、中文自然语言预处理方法总结及实现
6、NLP常见语言模型总结
7、NLP数据增强方法总结及实现
8、TextRank算法介绍及实现
9、NLP关键词提取方法总结及实现
10、NLP词向量和句向量方法总结及实现
11、NLP句子相似性方法总结及实现
12、NLP中文句法分析
二、NLP项目实战
1、项目实战-英文文本分类-电影评论情感判别
2、项目实战-中文文本分类-商品评论情感判别
3、项目实战-XGBoost与LightGBM文本分类
4、项目实战-TextCNN文本分类实战
5、项目实战-Bert文本分类实战
6、项目实战-NLP中文句子类型判别和分类实战
交流学习资料共享欢迎入群:955817470(群一),801295159(群二)
TextRank算法介绍及实现相关推荐
- 独家 | 基于TextRank算法的文本摘要(附Python代码)
作者:Prateek Joshi 翻译:王威力 校对:丁楠雅 本文约3300字,建议阅读10分钟. 本文介绍TextRank算法及其在多篇单领域文本数据中抽取句子组成摘要中的应用. TextRank ...
- TextRank算法的基本原理及textrank4zh使用实例
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/wotui1842/article/de ...
- 使用TextRank算法为文本生成关键字和摘要
使用TextRank算法为文本生成关键字和摘要 发表于1年前(2014-12-01 21:31) 阅读(10282) | 评论(27) 155人收藏此文章, 我要收藏 赞15 摘要 TextRan ...
- 自动摘要生成(二):由PageRank转变而来的TextRank算法
一.瞎扯 这是我2019年写的第一篇博客,开篇说点题外话,翻了一下博客的记录,上一遍新闻自动摘要生成(一)的博客还是去年7月写的,这大半年的时间里,忙着秋招,忙着找工作,忙着实习,忙着完成毕业设计,以 ...
- python nlp文本摘要实现_用TextRank算法实现自动文本摘要
[51CTO.com快译]1. 引言 文本摘要是自然语言处理(NLP)领域中的应用之一,它必将对我们的生活产生巨大影响.随着数字媒体和出 版业的不断发展,谁还有时间浏览整篇文章/文档/书籍来决定它们是 ...
- 基于TextRank算法的单领域多文本摘要(英文摘要)
文章目录 基于TextRank算法的单领域多文本摘要 一.实现步骤 二.语料 tennis_articles_v4.csv 三.实现代码 四.实现效果 基于TextRank算法的单领域多文本摘要 一种 ...
- TextRank算法实践
TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法,PageRank算法主要用于给互联网网页排序,根据网页之间的跳转来构造一个初始权重矩阵(转移 ...
- 【自然语言处理】TextRank算法
TextRank算法 TextRank算法基于PageRank,用于为文本生成关键字和摘要.其论文是: Mihalcea R, Tarau P. TextRank: Bringing order i ...
- TextRank算法学习及使用
文章目录 一.算法思想 二.python代码实现 三.TextRank算法使用 1.textrank4zh模块的安装 2.实例介绍 总结 参考资料: 文本关键词抽取.文本摘要生成是自然语言处理( ...
最新文章
- 在tensorflow2.0下遇到1.x版本中占位符不兼容问题 tf.placeholder() is not compatible with eager execution的解决方法
- python线性整数规划求解_实例详解:用Python解决整数规划问题!
- JVM:堆与栈的比较
- DayDayUp:互联网江湖大佬那些事(互联网大佬学历一览)
- Ubuntu常用APT命令参数
- Codeforces 1196F K-th Path
- PHPCMS V9 采集实例
- windows+nginx负载测试
- Leecode刷题热题HOT100(7)—— 整数反转
- python3.7怎么安装wsgiref_python3.x - python3使用wsgiref时环境变量出现乱码
- ExtJS4.2学习(18)时间控件
- “密码人”越来越多将会出现“密码危机”
- php简单登陆,PHP简单实现单点登录
- 有趣的逻辑较量——《啊哈C语言》更新开始
- No toolchains found in the NDK toolchains folder for ABI with prefix:XXX
- [USACO2008 Mar]土地购买
- Zigbee物联网应用
- windows2016安装.net3.5错误:0x80070057;错误:0x800f081f
- mysql参数之max_connect_errors
- Padavan编译技巧