当前位置:云好站网站目录 » 文章资讯 » 网站运营 » 文章详细

武汉SEO浏览器中搜索引擎算法公式,PR算法安装步骤及计算

网站运营 78

能看到这篇文章的读者应该都使用过浏览器,但是你们有谁思考过浏览器中搜索引擎的运作模式?

说个我年轻时有意思的idea

每个用户输入搜索单词,百度就会记录下数据放进一个字典作为key值。然后给你展示一些相关网页,当你选择其中一个,这个选择会被记录为value值存入字典,相同类型越多,这个组合的位置上升地越高。

这么做现在想想也是可行,就是效率会特别低下。而且它有一个不足之处:它把多维关系进行了降维处理。

比如下图

A和B可以使一个key:value的关系,可是有时候B也可以是key值,这里就设计到一个权重问题。每一个网页都需要有一个权重值用来评估它的可靠性。

1998年之前的搜索引擎是通过时间顺序基于检索词进行检索。往往搜索结果网页质量不高,很多网页也会故意增加检索词频率,相当于现在的蹭热度。

比如你检索北京市某某中学,它会在下面弄一个友情链接:北京市教育局,公安局……这么做就是为了别人在搜索教育局和公安局的时候给自己增加权重。

为此谷歌的拉里佩奇提出了PageRank算法用来解决这一问题。PR直接翻译就是网页权重,指的是一个网页影响力等于所有入链集合的页面加权影响力之和。

具体公式如下

首先需要了解两个概念

出链:链接出去的链接

入链:链接进来的链接

PR算法还有两个问题

等级泄露:如果一个网页没有出链,就像黑洞一样吸收了其他网页的影响力,导致其他网页PR为0

等级沉没:如果一个网页只有出链,没有入链,迭代下来也会导致该网页PR为0(不存在分母v)

为此拉里佩奇一拍脑门,想出了一个阻尼因子d用来收敛PR算法模型。

具体公式如下

理论太枯燥,我们用实际案例来解释。

安装模块

左下角install package。

导入模块

创建有向关系

就是上面那个图片关系。

这里你会发现这是一个列表,其中里面的有向关系是以元组的形式存在的。

创建有向图

查看数据类型

networkx.classes.digraph.DiGraph

添加节点

查看个数/节点

run

求PR值

run

基础的说完了,接下来实践一个项目,说实话网上数据很多,但是有向的数据真不多。为了给读者一个福利,我好费劲才弄了一份。嘿嘿嘿……

导入模块

1和2就不介绍了

3是有向网络模型

4是防错字典模块

读取数据

run

AB列是人名,我用了加密技术转化为了字符串,C列是两个人交易的金额。

把数据放入列表

PR算法中的有向关系是用元组的形式存储的,C列数据用于绘制网络中的边长度。

运行结果

list1赋值给变量

为啥要另外赋值一次?

没啥原因:处女座!

创建有向图

防错字典

填充数据和边长

第一步:填充graph

第二步:填充edges_weights_temp

第二步看着有点复杂,理解了就简单了:假设一个元组不在edges_weights_temp中,则以该【元组】为key,C列为值,如果存在,则累加C列的值。

加个判断看一下效果

run

再把字典转化为列表

设置路径和权重

计算PR值

run

这就是每个人在这份数据中的交易权重。

设置节点属性

定义画图函数

1.判断语句为各种图形的类别

2.使用PR值设置节点大小

3.设置网络边长度

4.绘制图形的节点、边、标签

5.展示图片

运行结果

我们发现f362这个人与其他人都有着密切的交易关系,这是一只大佬啊。

打开数据验证一下,正向交易

验证fb2a

如果我们觉得图片中点太多,只要发现其中隐藏的大佬,我们可以用PR值剪枝。

设置阙值

复制网络图

剪掉低于阙值的节点

n和p_rank

画图

运行结果

重要角色都被选了出来,是不是很好玩?今天的内容有点多,好好消化一下。