人工智能自然语言处理—PageRank算法和TextRank算法详解

article/2025/8/28 14:32:21

人工智能自然语言处理—PageRank算法和TextRank算法详解

一、PageRank算法

PageRank算法最初被用作互联网页面重要性的计算方法。它由佩奇和布林于1996年提出,并被用于谷歌搜索引擎的页面排名。事实上,PageRank可以在任何有向图上定义,然后应用于社会影响分析、文本摘要和其他问题。
PageRank算法的基本思想是在有向图上定义一个随机游动模型,即一阶马尔可夫链,以描述随机游动者沿着有向图随机访问每个节点的行为。在某些条件下,在极限情况下访问每个节点的概率收敛到一个平稳分布,然后每个节点的平稳概率值就是它的PageRank值,它表示节点的重要性。PageRank是递归定义的,PageRank的计算可以通过迭代算法进行。

算法公式如下:

image-20230202130143219

原理如下图

image-20230202125738923

PageRank算法的核心思想如下:

(1)链接数量:如果一个网页被越多的其他网页链接,说明这个网页越重要,即该网页的PR值(PageRank值)会相对较高;

(2)链接质量:如果一个网页被一个越高权值的网页链接,也能表明这个网页越重要,即一个PR值很高的网页链接到一个其他网页,那么被链接到的网页的PR值会相应地因此而提高。

代码实例:

import numpy as np
p = 0.85    #引入浏览当前网页的概率为p,假设p=0.8a = np.array([[1,0,0,0],[0,0,0,1],[0,0,0,1],[0,1,0,0]],dtype = float)  #dtype指定为float
length=a.shape[1]  #网页数量
#构造转移矩阵
b = np.transpose(a)  #b为a的转置矩阵
m = np.zeros((a.shape),dtype = float)
for i in range(a.shape[0]):for j in range(a.shape[1]):#如果一个节点没有任何出链,Dead Endsif b[j].sum()==0:b[j]=b[j]+np.array([1/length]*length)m[i][j] = a[i][j] / (b[j].sum())  #完成初始化分配#pr值得初始化
v = np.zeros((m.shape[0],1),dtype = float)  #构造一个存放pr值得矩阵
for i in range(m.shape[0]):v[i] = float(1)/m.shape[0]count=0
ee=np.array([[1/length]*length]).reshape(length,-1)
# 循环100次计算pageRank值
for i in range(100):#  解决spider traps问题,spider traps会导致网站权重向一个节点偏移,将转移矩阵加上打开其他网页的概率1-pv = p*np.dot(m,v) + (1-p)*ee  count+=1print("第{}次迭代".format(count))
#pageRank值
print(v)

二、TextRank算法

TextRank算法是一种基于图的文本排序算法。它将文本分成几个组成单元(句子),构建节点连接图,使用句子之间的相似度作为边的权重,通过循环迭代计算句子的TextRank值,最后提取排名较高的句子,形成文本摘要。本文介绍了提取文本摘要的算法TextRank,并使用Python实现了TextRank算法的应用,从多个单域文本数据中提取句子以形成摘要。

TextRank算法的代码实例:

它是从Google的PageRank算法改进而来的,用于对网页的重要性进行排序。它使用文档中单词之间的共现信息(语义)来提取关键字。它可以从给定文本中提取关键词和关键短语,并使用提取自动摘要方法提取文本的关键句子。

# 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, })keywords = 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')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)

部分代码解释如下:

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.85

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的句子用来生成摘要

三、PageRank算法与TextRank算法的区别

  • PageRank算法根据网页之间的链接关系构造网络,TextRank算法根据词之间的共现关系构造网络;

    PageRank算法:

    image-20230202130548357

TextRank算法:
在这里插入图片描述

  • PageRank算法构造的网络中的边是有向无权边,TextRank算法构造的网络中的边是无向有权边。

http://chatgpt.dhexx.cn/article/mqOdpZUB.shtml

相关文章

TextRank算法学习及使用

文章目录 一、算法思想二、python代码实现三、TextRank算法使用1、textrank4zh模块的安装2、实例介绍 总结 参考资料: 文本关键词抽取、文本摘要生成是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体…

自然语言处理NLP--TextRank算法

文本摘要方法 早在20世纪50年代,自动文本摘要已经吸引了人们的关注。在20世纪50年代后期,Hans Peter Luhn发表了一篇名为《The automatic creation of literature abstract》的研究论文,它利用词频和词组频率等特征从文本中提取重要句子&…

【自然语言处理】基于TextRank算法的文本摘要

基于TextRank算法的文本摘要 文本摘要是自然语言处理(NLP)的应用之一,一定会对我们的生活产生巨大影响。随着数字媒体的发展和出版业的不断增长,谁还会有时间完整地浏览整篇文章、文档、书籍来决定它们是否有用呢? 利…

【自然语言处理】利用TextRank算法提取关键词

利用TextRank提取关键词 TextRank 是一种基于 PageRank 的算法,常用于关键词提取和文本摘要。在本文中,我将通过一个关键字提取示例帮助您了解 TextRank 如何工作,并展示 Python 的实现。 使用 TextRank、NER 等进行关键词提取 1.PageRank简…

【NLP】关键词提取:TFIDF、TextRank

前两天看到论文《Chinese Poetry Generation with Planning based Neural Network》中使用TextRank进行关键词提取。在阅读文章时也想到了除了TextRank之外,经常还使用TFIDF进行关键词提取。 一些算法的使用取决于业务场景和算法的特性。关键词提取是干什么的呢&am…

TF-IDF算法和TextRank算法的分析比较

TF-IDF算法 TF-IDF(词频-逆文档频率)算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降…

Python文本处理工具——TextRank

背景 TextRank是用与从文本中提取关键词的算法,它采用了PageRank算法,原始的论文在这里。Github地址。 这个工具使用POS( part-of-speech tagging : 词性标注 )然后抽取名词,这种方法对于关键词提取独具特色。 注意: 先安装NL…

TextRank学习笔记

TextRank起源与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法,这是一个用作网页重要度排序的算法。 并且,这个算法也是基于图的,每个网页可以看作是一个图中的结点,如果网页A能够跳转到网页B,那么则有一条A-…

【TextRank】关键词提取 算法原理 公式推导 源码分析

1.前言 在介绍TextRank前,我想先给大家介绍下PageRank,实质上个人认为可以把TextRank当做PageRank2.0。 谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法,“那就是看论文的引用次数”。由此想到网页的重要…

NLP - 关键词提取 - TextRank

NLP - 关键词提取 - TextRank 一、TextRank介绍二、PageRank介绍三、PageRank计算过程四、关键词提取任务 一、TextRank介绍 TextRank算法则可以脱离语料库的基础,仅对单篇文档进行分析就可以提取该文档的关键词。这也是TextRank算法的重要特点。TextRank算法的基本…

textrank算法原理与提取关键词、自动提取摘要PYTHON

首先介绍原理与概念 TextRank 算法是一种用于文本的基于图的排序算法。其基本思想来源于谷歌的 PageRank算法(其原理在本文在下面), 通过把文本分割成若干组成单元(单词、句子)并建立图模型, 利用投票机制对文本中的重要成分进行排序, 仅利用单篇文档本…

TextRank算法总结

TextRank算法总结 最近在调研自动生成文本方面的内容,突然想到了自动文摘里的textRank,这里我将参考了一些资料并对这些知识点进行了整理总结,初步总结如下: 目录 PageRank简介基于TextRank的关键词提取基于TextRank的关键词短语提…

TextRank算法实践

TextRank算法实践 PageRank算法思想 TextRank算法的思想主要源于PageRank算法,PageRank算法主要用于给互联网网页排序,根据网页之间的跳转来构造一个初始权重矩阵(转移矩阵),默认每个网页质量都是1 使用一个向量v&…

TextRank算法的基本原理及textrank4zh使用实例

TextRank算法是一种文本排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,它能够从一个给定的文本中提取出该文本的关键词、关键词组,并使用抽取式的自动文摘方法提取出该文本的关键句。其提出论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[…

TextRank算法

TextRank算法理解 TextRank算法 TextRank算法基于PageRank,用于为文本生成关键字和摘要。其论文是: Mihalcea R, Tarau P. TextRank: Bringing order into texts[C]. Association for Computational Linguistics, 2004. 先从PageRank讲起 在浅入浅出…

TextRank

TextRank与PageRank TextRank的灵感来源于大名鼎鼎的PageRank算法,这是一个用作网页重要度排序的算法。 这个算法是基于图的,每个网页可以看作是一个图中的结点,如果网页A能够跳转到网页B,那么则有一条A->B的有向边。这样&am…

TextRank算法介绍及实现

目录 1、PageRank算法 2、TextRank算法 (1)关键词抽取(keyword extraction) (2)关键短语抽取(keyphrase extration) (3)关键句抽取(sentence…

TextRank原理解释

目录 1. PageRank原理 2. TextRank (1)TextRank需要满足的条件 (2)TextRank思想的简要理解 (3)TextRank原理及例子讲解 1. PageRank原理 在这里可以看我转载的PageRank原理链接,比较详细h…

TextRank算法原理简析、代码实现

前言—PageRank 注:PageRank原理另行查询 在介绍TextRank前,我想先给大家介绍下PageRank,实质上个人认为可以把TextRank当做PageRank2.0。   谷歌的两位创始人的佩奇和布林,借鉴了学术界评判学术论文重要性的通用方法&#xff0…

NLP学习笔记——TextRank算法

一、算法简介 TextRank算法是一种基于图的排序算法,由谷歌的网页重要性排序算法PageRank算法改进而来,主要应用有关键词提取、文本摘要抽取等。该算法的主要思想是:把文档中的词(句)看成一个网络,词&#…