【NLP】PageRank、TextRank算法的原理解析

news2025/1/18 5:51:56

一、说明

        PageRank是经典的网页热度评分算法,在自然语言的热词提取也有同样的意义(TextRank);本文详细叙述该算法的原理,配合部分代码演示其原理。        

二、PageRank算法的启发因素

2.1 算法兴起

        PageRank (PR) 是 Google 搜索使用的一种算法,用于在其搜索引擎结果中对网页进行排名。1996 年由Page和Brin提出,它以“网页”一词和联合创始人拉里佩奇的名字命名。 PageRank 是一种衡量网站页面重要性的方法。这个算法后被NLP采用,作为词热度的算法如TextRank,本篇专门研究这个算法。

        PageRank 可以定义在任意有向图上,而与之类似的问题都可以用此模型,因而被应用到社会影响力分析、文本摘要等多个问题,成了越来越被关注的经典算法。

2.2 算法的理论依据

        PageRank算法的基本想法是在有向图上定义一个随机游走模型,即一阶马尔可夫链,描述随机游走者沿着有向图随机访问各个结点的行为。在一定条件下,极限情况访问每个结点的概率收敛到平稳分布,这时各个结点的平稳概率值就是其PageRank值,表示结点的重要度。PageRank 是递归定义的,PageRank 的计算可以通过迭代算法进行。

2.3 关于网页热度的假设

        网页的热度究竟如何定义才算好?其实很朴素的理由决定了一个大的作d为。

        历史上,PageRank算法作为计算互联网网页重要度的算法被提出。PageRank是定义在网页集合上的一个函数,它对每个网页给出一个正实数,表示网页的重要程度,整体构成一个向量,PageRank值越高,网页就越重要,在互联网搜索的排序中可能就被排在前面。

        也就是大白话:

  •         人家访问我,给我增加热度,人家热度不变;
  •         我访问人家,给人家增加热度。我的热度不变

2.4 有向图的崛起

        AI研究者应该对有向图敏感起来,对于许多类网络模型,实际上都有意义。

        在实际应用中许多数据都以图(graph)的形式存在,比如,互联网、社交网络都可以看作是一个图。图数据上的机器学习具有理论与应用上的重要意义。 PageRank 算 法是图的链接分析(link analysis)的代表性算法,属于图数据上的无监督学习方法。

三、PageRank算法描述

        设计本算法用到的概念是:有向图、节点出度和入度、转移矩阵、递归;

        算法:下面是实现随机漫步方法的步骤。

  • 创建一个具有N个节点的有向图。
  • 现在进行随机漫步。
  • 现在,在随机行走过程中根据点对节点进行排序。
  • 最后,将其与内置的PageRank方法进行了比较。

3.1 构建一个网络有向图

        假如一个局域网的网络环境,随着业务进行,有如下访问网络有向图。 网络可以像有向图一样表示,其中节点表示网页,边在它们之间形成链接。通常,如果节点(网页)i链接到节点j,则意味着i指的是j。

图1 五个节点的网络环境

 3.2 知名度模型

        我们必须定义什么是网页的重要性。作为第一种方法,我们可以说是指引用它的网页的总数。如果我们停止使用这个标准,那么引用它的这些网页的重要性就不会被考虑在内。换句话说,一个重要的网页和一个不太重要的网页具有相同的权重。另一种方法是假设一个网页将其重要性平均分配给它链接到的所有网页。通过这样做,我们可以定义节点j的分数如下:、

        其中rᵢ是节点i和的分数,dᵢ是i节点的出度。Σ是所有节点i,其中对j节点有出度,我们可以写出这个线性系统:

        通过把这个线性系统的右边代入左边,我们得到了一个新的线性系统,我们可以用高斯消去法求解。但这种解决方案仅限于小型图。事实上,由于这类图是稀疏的,并且高斯消去法在执行其运算时会修改矩阵,因此我们会失去矩阵的稀疏性,并占用更多的内存空间。在最坏的情况下,不能再存储矩阵。

 3.3 构成一维马尔可夫链和(Markov Chain)

        由于马尔可夫链是由初始分布和转移矩阵定义的,因此上图可以被视为具有以下转移矩阵的马尔可夫链:

        与我们的示例相对应的转换矩阵,我们注意到P转置是行随机的,这是应用马尔可夫链定理的一个条件。对于初始分布,让我们考虑它等于:

        其中n是节点的总数。这意味着随机行走器将随机选择它可以到达所有其他节点的初始节点。

        在每一步,随机行者都会根据转移矩阵跳到另一个节点。然后计算每个步骤的概率分布。这个分布告诉我们,经过一定数量的步骤后,随机游走者可能会在哪里。概率分布使用以下公式计算:

        马尔可夫链的平稳分布是π=Pπ的概率分布π。这意味着一步之后分布不会改变。需要注意的是,并不是所有的马尔可夫链都允许平稳分布。

        如果马尔可夫链是强连通的,这意味着任何节点都可以从任何其他节点到达,那么它允许平稳分布。我们的问题就是这样。因此,经过无限长的步行,我们知道概率分布将收敛到平稳分布π。

3.4 计算方法

        (以上我们已经清楚知道这个模型的设计方法,其它就是个算法问题了) 

        我们注意到π是特征值为1的矩阵P的特征向量。我们使用Frobenius-Perron定理,而不是计算P的所有特征向量并选择对应于特征值1的特征向量。

        根据Frobenius-Perron定理,如果矩阵a是一个平方正矩阵(它的所有项都是正的),则它有一个正的特征值r,如|λ|<r,其中λ是a的特征值。具有特征值r的A的特征向量v是正的,并且是唯一的正特征向量。

        在我们的例子中,矩阵P是正的和平方的。平稳分布π必然是正的,因为它是一个概率分布。我们得出π是P的主特征向量,其主特征值为1。

        为了计算π,我们使用幂法迭代,这是一种计算给定矩阵a的主特征向量的迭代方法。从可以随机初始化的主特征向量b的初始近似开始,该算法将使用以下算法更新它直到收敛:

四、实验代码

1)对一个具体图的迭代算法。此为原理性伪代码。

2)更正规的代码,对任意有向图进行迭代收敛:见本文title的上传资源(80行python)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/678199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HDLBits笔记6:Circuits.Combinational Logic.Multiplexers + Arithmetic Circuits

Multiplexers 2-to-1 multiplexer module top_module( input a, b, sel,output out ); assign out sel ? b : a; endmodule2-to-1 bus multiplexer module top_module( input [99:0] a, b,input sel,output [99:0] out );assign out sel ? b : a; endmodule9-to-1 multi…

逍遥自在学C语言 | 多级指针探秘

前言 多级指针在C语言中是一种特殊的指针类型&#xff0c;它可以指向其他指针的指针。 通过多级指针&#xff0c;我们可以间接地访问或修改存储在内存中的数据。 在本文中&#xff0c;我们将讨论多级指针的概念、使用方法、使用场景以及常见错误及其避免方法。 一、人物简介…

软件项目管理 第六章 软件项目的进度管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

第六章 软件项目的进度管理 课后习题参考答案 1.选择题 (1)快速跟进是指&#xff08;A&#xff09;。 A.采用并行执行任务,加速项目进展 B.用一个任务取代另外的任务 C.如有可能,减少任务数量 D.减轻项目风险 (2)赶工一个任务时&#xff0c;…

相机畸变概述

上节说到了相机模型,那么这节说说相机的畸变 如果有手机爱好者,听到很多测评进行测评的时候,都会提到一个词,广角防畸变,啥意思,举个栗子 来看下信号塔,是不是已经开始歪了,这就是0.6倍,超广角模式下的畸变(其实一倍也畸变,小声BB) 为啥会畸变呢,仔细看镜头,镜头是曲面的,光…

CDN和DNS

目录 宽带&#xff0c;窄带&#xff0c;带宽区别和联系如何计算带宽带宽和网速的区别和联系 CDNCDN的原理CDN的好处CDN和通信行业DNS和CDN的区别与联系用户访问未使用CDN缓存网站的过程为使用了CDN缓存后的网站的访问过程变为 CDN加速服务 DNSDNS对好处公共 DNS114 DNS阿里DNS百…

Mac安装配置Visual Studio Code(vscode)以及Java环境详细教程(初学者必看)

原本博主今天想继续给大家出Java接下来的教程,但是就在昨天我在配置vscode的时候遇到了一些问题,Windows系统的小伙伴配置起来肯定很方便,但是在Mac的小伙伴却显得十分无奈,所以我想给大家出一篇Mac的Visual Studio Code配置以及Java环境搭建教程&#xff01; 博客主页:Jovy.的…

C#中调用MATLAB的函数形式的m文件

问题介绍 需要在C#编写的winform中调用matlab写的函数类型的m文件&#xff0c;并在winform中读取m文件的返回值。 之前也写过类似的博客&#xff0c;请参考&#xff1a;C#中调用MATLAB执行MATLAB代码 本篇文章算是之前文章的更新版本吧。 步骤 1 创建C#的winform项目 在桌面…

STM32单片机(九)USART串口----第一节:USART串口协议

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

【博弈论笔记】第二章 完全信息静态博弈

文章目录 第二章 完全信息静态博弈2.1 基本分析思路和方法2.1.1 上策均衡2.1.2 严格下策反复消去法2.1.3 划线法2.1.4 箭头法 2.2 纳什均衡2.2.1 纳什均衡的诞生2.2.2 纳什均衡的定义2.2.3 纳什与严格下策反复消去法2.2.4 一致预测性质 2.3 无限策略博弈和反应函数&#xff08;…

性能测试的具体流程

以下是一个基本的性能测试过程&#xff0c;旨在帮助了解性能测试的具体流程和步骤。 1. 确定性能测试目标及指标 首先&#xff0c;需要确定性能测试的目标和指标&#xff0c;包括响应时间、吞吐量、并发用户数等方面。这些指标应该根据业务需求和用户场景进行设定&#xff0c…

Unity-Android常见的那些骚操作

老规矩&#xff0c;先安装unity&#xff0c;再安装安卓平台&#xff0c;安装AndroidStudio ,安装JDK,安装SDK 配置JDK 环境&#xff0c;在Unity里面引用SDK 和 JDK Unity中的Android Build Support下载 在Unity中的File>Building Settings>Android>Open Download Pag…

VMware Ubuntu忘记密码修改密码

目录 一、重启 二、重置密码 三、补充 一觉醒来&#xff0c;刚想去虚拟机爽一下Linux却发现忘记了密码&#xff1f; 没关系&#xff0c;这里有详细的步骤帮你修改密码&#xff01; 一、重启 重启虚拟机&#xff0c;在进度条未读完前&#xff0c;长按shift进入GRUB系统引导…

56 KVM工具使用指南-安装 LibcarePlus

文章目录 56 KVM工具使用指南-安装 LibcarePlus56.1 安装软件依赖56.2 安装 LibcarePlus56.3 查看安装是否成功 56 KVM工具使用指南-安装 LibcarePlus 56.1 安装软件依赖 LibcarePlus 运行依赖于 libunwind、 elfutils 和 binutils&#xff0c;在配置了 yum 源的 openEuler 系…

SpringSecurity中授权时fastjson序列化问题

最近在复习Spring Security&#xff0c;复习的鉴权的时候出现问题。26.封装权限信息_哔哩哔哩_bilibili 如果是从B站中看到&#xff0c;直接说问题可能出现的原因&#xff1a;可能是private List<String> authorities;中的权限信息命名不规范&#xff0c;去掉get&#x…

Python基础篇(十一):装饰器

装饰器 前言1. 装饰器的定义2. 装饰器的应用3. 装饰器的语法4. func(*args, **kwargs) 前言 装饰器是Python中一种强大的函数或类修饰机制&#xff0c;用于在不修改原始函数或类代码的情况下&#xff0c;对其进行功能扩展或修改。装饰器基于函数式编程的概念&#xff0c;通过将…

【计算机网络详解】——知识点复习(期末不挂科版)

配套视频&#xff1a;湖科大教书匠 配套教材&#xff1a;计算机网络&#xff08;第8版&#xff09; 谢希仁 根据学习通要求“掌握”的部分总结的&#xff0c;有亿点点长 &#xff0c;时间来不及就掌握画 ☆ 的就好啦 目录 &#x1f552; 1. 概述&#x1f558; 1.1 三种数据交换…

[英语单词] gated; cycle gated

gate *[geit] n. 门, 牌楼, 大门, 通道, 闸 vt. 装门于 门的原始作用就显示出来了&#xff0c;就是为了在主人自由进出的同时&#xff0c;保护私有财产的安全。 如果加了-ed&#xff0c;就代表使用了动词性&#xff0c;相当于给谁谁加了一个门&#xff0c;限制其行为的自由度。…

SpringBoot 如何使用 ACL 进行访问控制

SpringBoot 如何使用 ACL 进行访问控制 在现代 Web 开发中&#xff0c;访问控制是一个非常重要的问题。访问控制可以帮助我们保护敏感信息、防止恶意攻击、维护系统安全等。Spring Security 是一个非常流行的安全框架&#xff0c;它提供了一系列的认证和授权功能&#xff0c;可…

【网络1】协议及相关命令

文章目录 1.局域网&#xff1a;CSMA/CD2.互联网&#xff1a;ARP&#xff0c;DHCP&#xff0c;NAT3.TCP协议&#xff1a;telnet&#xff0c;tcpdump&#xff0c;syn/accept队列4.HTTPS协议&#xff1a;摘要&#xff08;sha、md5、crc&#xff09;。win对文件MD5校验&#xff1a;…

【博弈论笔记】第三章 完全且完美信息动态博弈

文章目录 第三章 完全且完美信息动态博弈3.1 动态博弈的表示法和特点3.2 策略的可信性和纳什均衡的不稳定问题3.2.1 相机选择和策略的可信性问题3.2.2 纳什均衡的不稳定问题3.2.3 逆推归纳法 3.3 子博弈和子博弈完美纳什均衡3.3.1 子博弈3.3.2 子博弈完美纳什均衡 3.4 四个经典…