Day28:网页排名演算法(PageRank)

PageRank

PageRank是一种连结分析演算法,它通过对超连结集合中的元素用数字进行权重赋值,实现「衡量集合范围内某一元素的相关重要性」的目的。着名例子:Google利用PageRank分析网页相关性和重要性,在搜寻引擎最佳化(SEO)中经常被用来作为评估网页最佳化的成效因素之一。


搜寻引擎最佳化(Search Engine Optimization,SEO)

透过搜寻引擎的运算规则来调整网站排名,将网站曝光度提高可以增加网站的流量,当使用者在进行搜寻时,往往注意力会放在前面的搜寻结果,所以网站为了提高曝光度,会使用各种方式提高排名。

「针对搜寻引擎作最佳化的处理」,是指为了要让网站更容易被搜寻引擎接受。搜寻引擎会将网站彼此间的内容做一些相关性的资料比对,然後再由浏览器将这些内容以最快速且接近最完整的方式,呈现给搜寻者。


用Python实现PageRank

#how we update the PageRank
def PageRank_one_iter(graph, d):
    node_list = graph.nodes
    for node in node_list:
        node.update_pagerank(d, len(graph.nodes))

#Calculate new PageRank
def update_pagerank(self, d, n):
  in_neighbors = self.parents
  pagerank_sum = sum((node.pagerank / len(node.children)) for node in in_neighbors)
  random_walk = d / n
  self.pagerank = random_walk + (1-d) * pagerank_sum

参考资料:PageRank: Link Analysis Explanation and Python Implementation from Scratch

用JavaScript实现PageRank

Matrix.prototype.row_stochastic = function(damping_factor) {
 
    var row_length = this.elements[0].length;
    var d = (1 - damping_factor) / row_length;
 
    var row_total = [];
 
    for (var x = 0; x < row_length; x++) {
        row_total.push(0);
        for (y = 0; y < row_length; y++) {
            row_total[x] += this.elements[x][y];
        }
    }
 
    var a1 = this.elements.clone();
 
    for (var x = 0; x < row_length; x++) {
        for (var y = 0; y < row_length; y++) {
            if (row_total[x] > 0) {
                a1[x][y] = a1[x][y]/row_total[x] + d;
            }
            else {
                a1[x][y] = (1/row_length) + d;
            }
        }
    }
 
    return $M(a1);
 
}

参考资料:PageRank Explained with Javascript


<<:  Day13 流程控制之条件判断

>>:  Day 15:vim 外挂大杂烩

如何以 SSH 方式 Clone 在 GitHub 上的项目

以本身自家服务器上的 Ubuntu 20.04.2 LTS (GNU/Linux 5.4.0–74-...

Day 29-制作购物车之Redux 4

主要呈现实作成果 以下内容有参考教学影片,底下有附网址。 (内容包括我的不专业解说分析及在实作过程中...

【Day28】2次收敛除法器实作

接下来探讨一种透过牛顿法来找到相除解的方法 收敛除法 Step1 : 规格化 N 和 D,令 D 趋...

[Day29] 部署网站 - 我与 ASP.NET Core 3 的 30天

一般来说,发布ASP.NET Core的应用程序部署到服务器上会经过以下动作 将发布的应用程序部署到...

倒数第2天

最近在思考工具机在使用C#的图形化介面 因此来查一下看长的怎样 https://docs.micro...