TextRank原理解释

article/2025/8/28 17:06:41

目录

1. PageRank原理

2. TextRank

(1)TextRank需要满足的条件

(2)TextRank思想的简要理解

(3)TextRank原理及例子讲解


1. PageRank原理

在这里可以看我转载的PageRank原理链接,比较详细https://blog.csdn.net/weixin_42168614/article/details/87929281

https://blog.csdn.net/weixin_42168614/article/details/87929326

在这里想把我自己理解的PageRank原理阐述一下,PageRank主要是通过网页之间的连接关系得到最后网页的排名,分为三步:

*(1)冲浪者随机选择起始页面;

*(2)在以后的每一步,以d直接进入目标页面或以1-d的通过其它指向目标页面的超链接进入目标页面;

*(3)一个页面的重要性取决于指向该页面的页面的重要性,则页面P的重要性为:

其实在PageRank中,要理解到每个节点是二重循环,第一是遍历i点的每个相连节点vj;第二对每个节点j,计算节点j的出度,节点j的出度指的是图中和i相连的所有点的权重之和,并且点的权重在每次迭代中都是更新变化的,所以每轮都要重新计算节点j的出度。故此,图的信息只考虑节点边的链接,而与节点的信息无关。

设一个k窗口,{w1,w2,...,wk}对于在滑动窗口k之内的词,都认为是有联系的,对于有联系的词,可以在有词构成的图中增加相应的权重,一个窗口遍历完所有的句子节点后,一个词图就构建成功了。下面截图是我对PageRank的进一步理解:

在PageRank迭代计算中,你会发现初始权重D和M不会发生变化,变化的是每次相邻节点的值的变化,最终会迭代到收敛,所谓的收敛就是相邻节点差值小于0.001,但是在这个例子中你会发现到最后两次迭代的结果不会发生变化时就收敛了。

2. TextRank

以上是我对PageRank的理解,可能理解的还是很浅,但是对TextRank做了很好的铺垫。博客上有很多讲TextRank的,但是一直对公式以及理论的理解不够深入,可能各位博主自己理解到位了,但是对我反映慢的来说,真正理解它还远远没有达到。下面是我自己的理解。

(1)TextRank需要满足的条件

首先,TextRank是利用了markov原理,要满足它的两个条件,即状态转移矩阵M需满足markov中stochastic matric,把所有全为0的行替换为e/n.;要满足不可约,非周期,所以需要做平滑处理。

(2)TextRank思想的简要理解

TextRank的思想借用PageRank的思想来理解,如果一个单词出现在很多单词后,说明这个单词比较重要;一个TextRank值很高的单词后面跟着一个单词,那这个单词的TextRank的值也会提高。如图1可以直观理解:

如果词w1出现在w2,w3,w4后,则说明词W1比较重要,同理前三个指向w1的TextRank的值很高,那么w1的值也会提高。

(3)TextRank原理及例子讲解

TextRank是针对文本中的句子设计的一种权重算法,利用投票原理,让每个词给它邻居节点投票,票的权重取决于票数。

在这里举个大家都常举的例子,来说明TextRank的投票机制及权重计算。

注:若窗口K=4,这以这个词为中心,取这个词的前4个词以及后四个词,如果分词后一个词出现很多次,先将每次的窗口取出来,然后将各次的结果合并去重,得到最后结果,建立图模型

例子:“程序员(英文Programmer)是从事程序开发、维护的专业人员。一般将程序员分为程序设计人员和编码人员,但两者的界限并不是非常清楚,特别是在中国。软件从业人员分为初级程序员、高级程序员、系统分析员和项目经理四大类”。

经过结巴分词后,得到【程序员, 英文, Programmer, 从事,程序, 开发, 维护, 专业, 人员, 程序员, 分为, 程序, 设计, 人员, 程序, 编码, 人员, 界限, 并不, 非常, 清楚, 特别是在, 中国, 软件, 从业人员, 分为, 程序员, 高级, 程序员, 系统分析员, 项目经理, 四大】,然后构造K=4的窗口,就以程序员这个词为例说明处理结果:

如图所示,对分词结果中的每个每个程序员进行遍历,取出出现在“程序员”前后各4个词作为相邻词语,例如图中黑色字体,然后将黑色的四个程序员得到的相邻词语节点进行去重合并为红色字体,总共得到17个相关联的词语。然后就是投票迭代,就拿程序员这个节点来说明,“程序员”的权重是由着17个词投票决定的,而每个词投出去的分数是和这个词本身的权重决定的。进行迭代投票的过程如下:

第一轮:

[Pg, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]依给次*程序员*投票,得分如下:

[Pg]给[程序员]投票后,[程序员]的得分:


然后专业等在窗口中的词语给程序员的投票迭代也如此进行,即[Pg, 专业, 中国, 人员, 从业人员, 从事, 分为, 四大, 开发, 程序, 系统分析员, 维护, 英文, 设计, 软件, 项目经理, 高级]依次给[程序员]投票,投完票后,再给其它的词进行投票,本轮结束后,判断是否达到最大迭代次数200或两轮之间分数差值小于0.001,如果满足则结束,否则继续进行迭代。

最后,选取得分高的词作为关键词。


附录:

学习链接:https://www.zhihu.com/people/dianshangshijue/activities

 


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

相关文章

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

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

NLP学习笔记——TextRank算法

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

机器学习——逻辑回归常见面试题整理

逻辑回归 1.介绍 逻辑回归假设数据服从伯努利分布,通过极大化似然函数的方法,运用梯队下降来求解参数,来达到将数据二分类的目的。 2.逻辑回归的损失函数和梯度下降参数迭代方法 逻辑回归的损失函数是它的极大似然函数 参数迭代方法 3.逻…

面试精选逻辑推理题总结

类似的杀人游戏 1、500张骨牌整齐地排成一行,按顺序编号为1、2、3、……、499、500。第一次拿走所有奇数位置上的骨牌,第二次再从剩余骨牌中拿走奇数位置上的骨牌,以此类推。请问最后剩下的一张骨牌的编号是?(256&…

IT科技企业逻辑思维面试题

逻辑思维面试题 一、假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。【请描述操作过程】 答:(1)先用容积为6升的水壶装满水; &#…

面试逻辑题分享--字母数字映射关系推算题

越来越多的朋友可能会发现,在现在找工作的时候,经常会遇到一些笔试题,而且其中不乏有逻辑题,企业希望通过一些逻辑题的测试,来判断求职者的一个逻辑思维能力。今晚在群里看到有小伙伴发了一个题,一时兴起&a…

前端_逻辑题 1

题目一 5只鸡5天能下5个蛋,100天下100个蛋需要多少只鸡? 1只鸡5天能下1个蛋,1只鸡100天能下20个蛋,所以100天下100个蛋需要5只鸡。 题目二 两个盲人都各自买了一对黑袜和一对白袜,四对袜子的布质、大小完全相同&#…

华为软件测试笔试真题之变态逻辑推理题【二】华为爆火面试题

“一头牛重800公斤,一座桥承重700公斤,问牛怎么过桥?” 这个问题在知乎上被浏览过13672927次,火热程度可见一斑。 据说这是华为的面试题,看似不合理的题目和国际闻名的大厂,极大的勾起了人们的兴趣。 不像面…

二、逻辑回归LR面试题总结

1. 简单介绍一下逻辑回归? 逻辑回归主要用来解决分类问题,线性回归的结果 Y Y Y带入一个非线性变换的Sigmoid函数中,得到 [ 0 , 1 ] [0,1] [0,1]之间取值范围的数 S S S, S S S可以把它看成是一个概率值,如果我们设置…

互联网面试——.Net 面试题

提供了最常见的 .Net 面试问题和许多公司提出的答案。让我们看看顶级 Dot Net 面试问题列表。 1. 什么是.NET? .NET 是一种软件开发框架。它就像其他软件开发框架(J2EE)一样。它以类库和 API 的形式提供运行时功能和一组丰富的预构建功能。此…

程序员面试逻辑题解析

《程序员面试逻辑题解析》 基本信息 原书名:Puzzles for Programmers and Pro 作者: (美)Dennis E. Shasha [作译者介绍] 译者: 费若愚 朱学武 出版社:人民邮电出版社 ISBN:9787115301956 上架时间:2012…

程序员面试必看32道经典逻辑推理题

写在前面: 此文档由一位学长整理,转载请附上原文出处链接 32道经典逻辑推理题包括有关二进制、水桶、钱、蓝眼、时间、重量、数学、其他等问题 Click here 有秘密哦!!! 点击浏览 文章目录 一、数字的魅力二、分而治之…

面试逻辑题

逻辑题目 逻辑题目现在也是面试中常考的题目,也不清楚面试出这种题目的意义,可能就是考察面试人员是否逻辑清晰. 这种题目没有什么好的方法,除非你见过原题,否则,只能根据所给出的条件慢慢分析,尽量不要用常规思路,希望大家要跳跃思维. 如果实在不行就给出一种解法,可能不是最…

面试常见逻辑题小整理

题一、 1 1 1 2 1 1 2 1 1 1 1 1 2 2 1 下一行是什么? 答案: 312211 题二、 (1)烧一根不均匀的绳要用一个小时,如何用它来判断半个小时? (2)烧一根不均匀的绳,从头烧…

二维vector数组初始化方法

在用devcpp编译程序时发现,二维vector数组如果只定义的话,不指定元素个数也不进行初始化的时候会导致编译出错。 通常情况下,可以只提供vector对象容纳的元素数量而略去初始值。此时库会创建一个值初始化的元素初值,并把它赋给容器…

【vector常用的6种初始化方法】

文章目录 一二三四五六 一 最常用,此时,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加…

vector的初始化和遍历

这里只说明常用的vector初始化的方式。一般vector的初始化我还是比较习惯于像数组一样的初始化方式。一个一个赋值&#xff0c;或者用花括号的初始化。下面用一个程序来说明&#xff1a; #include "stdafx.h"#include <vector>#include <iostream.h>usi…

c++ vector 初始化_C++--vector()的用法

vector()的用法 概念 vector 是向量类型&#xff0c;它可以容纳许多类型的数据&#xff0c;如若干个整数&#xff0c;所以称其为容器。vector 是C STL的一个重要成员&#xff0c;使用它时需要包含头文件&#xff1a; #include<vector>;一、vector的初始化 (1) vector&l…

C++中 std::vector 的6种初始化方法

1.vector<int> list1; 默认初始化&#xff0c;最常用 此时&#xff0c;vector为空&#xff0c; size为0&#xff0c;表明容器中没有元素&#xff0c;而且 capacity 也返回 0&#xff0c;意味着还没有分配内存空间。 这种初始化方式适用于元素个数未知&#xff0c;需要在…

怎样初始化二维vector

二维vector的初始化方法总结 初始化一个 二维vector,行M,列N学会用大括号初始化二维数组初始化一个 二维vector,行M,列不固定初始化一个二维vector,行列都不固定注意初始化二维vector为空时的情况leetcode例题1leetcode例题2 以定义一个二维整形数组并初始化为例&#xff1a; …