一. 网页排序算法
二. 网页排序算法分类
1 基于访问量的排序算法
2 基于词频统计和词语位置加权的排序算法
3 基于链接分析的排序算法
4 基于智能化的排序算法
三. TD-IDF 算法
1 词频(Term Frequency, TF)
2 逆文档频率(Inverse Document Frequency, IDF)
四. BM25算法
五. PageRank 算法
利用查询关键词在文档中出现的频率和出现位置对文档进行排序是搜索引排序的一种主要思想。这种技术发展最为成熟,应用非常广泛,是许多搜索引擎的核心排序技术。查询关键词在文档中出现的频率越高,出现的位置越重要,则认为此文档越符合搜索意图、此文档越“重要”。这种技术有两个关键步骤:词频统计和词位置加权。
(1)词频统计
查询关键词在文档中出现的频率(词频)越高,则认为此文档和查询关键词的相关度越大。但当查询关键词为常用词(例如,“的”“这个”)时,其对相关性判断的意义非常小。在基于词频的统计算法中,著名的算法有TF-IDF算法、BM25算法等。
(2)词位置加权
由于网页文件是带有版面格式信息(HTML标签等)的,这些信息对于搜索关键词的加权起着十分重要的作用。例如,如果搜索关键词出现在了标题中,或搜索关键词在正文中被加粗,那么,可以对此关键词的这次出现分配更大的权值。
一. 回到文首在文献索引机制中,一篇论文被其他论文引用次数越多,或被越权威的论文引用,则这篇论文的重要性越大。在链接分析中,一个网页被其他网页引用次数越多,说明这个网页的内容越受欢迎,被越权威的网页所引用,说明这个网页的质量越高,其价值越大。链接分析排序算法大致可以分为如下几类:
(1)基于随机漫游模型的链接分析算法,例如PageRank和Reputation算法。
(2)基于概率模型的链接分析算法,如SALSA、PHITS等。
(3)基于Hub和Authority相互加强模型的链接分析算法,如HITS及其变种。
(4)基于贝叶斯模型的链接分析算法,如贝叶斯算法及其简化版本。
所有的算法在实际应用中都结合传统的内容分析技术进行了优化。
一. 回到文首目前,主流搜索引擎都在研究新的排序方法,来提升用户的满意度。但是上述几类算法都或多或少存在相关性差问题和搜索结果单一化的问题(241。
(1)搜索结果相关性差的问题
相关性是指检索关键词和网页的相关程度,相关性分析越精准,用户的搜索效果就会越好。由于语言是一个很复杂的系统,仅仅通过网页的表面特征及链接分析来判断检索词与页面的相关性得到的结论往往是片面的。例如,我们检索关键词为A,有些网页整篇都在介绍A的相关知识,但全篇都没有出现A这个关键词,这个网页根本无法被搜索引擎检索到。提升搜索相关性的方法是使用语意理解来分析检索关键词与网页的相关程度,同时剔除那些相关性低的网页。
(2)搜索结果单一化问题
一般情况下, 在搜索引擎中,不同的人搜索同一个关键词,得到的搜索结果是完全相同的,但是这并不能满足我们的需求。例如,普通人搜索“感冒”,一般是想得到感冒的预防知识和如何治疗感冒,但医学工作者可能更想得到关于感冒的论文。解决搜索结果单的方法是通过 Web数据挖掘, 建立用户模型(如用户职业、 兴趣、行为、 风格),提供个性化服务。
一. 回到文首TF =某个词语A在文档B出现的次数 / 文档B的长度
只使用词频进行统计显然是不够的:通常情况下,文档中会大量出现“的”“是”“这个”“this”“a”“the"这样的对搜索结果毫无帮助的词语(也称为“常用词”或“停止词(Stop Words)”)。 于是我们给每个词语增加这样一个权重:如果这个词在语料库中的每个文档中均频繁出现,那么这个词的权重就很小甚至为0;相反,如果某个词只在语料库中的某几篇文档中大量出现,那么这个词的权重就很大。这里的“权重”就是“逆文档频率”,它计算公式也有许多,最简单的形式如下:
IDF = log[语料库中文档总数 / 在语料中有多少个文档包含词语A]
除了最简单的形式外,下面这种形式的计算公式也经常被使用:
IDF=log[(N- n+0.5) / (n+0.5)]
其中,N为语料库中的文档数目,n为语料库中包含词语A的文档数目。不难发现,使用上述公式计算出来的IDF值符合我们的预期。
一. 回到文首与TF-IDF类似,BM25 (BM是Best Matching的缩写)也是一种基 于统计方法的排序算法,是二元独立模型的扩展,或者看作是TF-IDF算法的变形。此算法也是一种有效的相关性评分手段,被搜索引擎广泛使用。BM25 算法只关心“词语在查询中和在文档中的出现频率”,而不关心词语之间的内在联系(例如,先后顺序)。由于Okapi最早实现了此算法,故此算法也经常被称为“Okapi BM25”。
给出查询关键词A,则语料库中某篇文档B的BM25分数定义如下:
Score(A,B)= IDF(A) x [fx(k.+1)] / [f +k1x(1-b+bxk2)]
在这里,IDF是逆文档频率,f是“词语A在文章B中出现的频率”,k和b是两个调节参数,其中参数b用来调节文档长度对相关性影响的大小,通常使用的经验值为k=2, b=0.75,k2是文档的平均长度。
在实际使用中,可以对此公式做一些修改以适应不同场景的需要。
(1)如需完全忽略常用词,只需将它们的IDF值人为设为0即可。
(2)为了避免常用词被完全忽视,IDF项可以设定一个最小值ε。
(3) IDF 项可以用其他非线性函数代替。
(4)当词语A在于粮库中超过50%的文档中均有出现时,IDF值为负数。此时需要对IDF值做特殊处理。
一. 回到文首在Google 诞生之前,流行的网页排名大多基于流量统计:某个网页被访问得越多,这个网页就越重要,它就会被排在检索结果的前面。1998 年,Larry Page 发表了一篇论文,论文中提出了一种叫作PageRank的算法,这种算法的主要思想如下:越重要的网页,页面上的链接质量也越高,同时越容易被其他重要的网页链接。该算法完全利用网页之间互相链接的关系来计算网页的重要程度,摆脱了利用访问量加权的方法,将网页排序问题变成一个数学问题。与其他网页排序算法相比,PageRank 算法将整个互联网视为一体,充分利用了网页之间的联系,而不是仅仅关注于某一张网页。
PageRank算法的核心思想是让页面之间通过超链接来进行"投票”:页面A上有一个指向页面H的超链接,就相当于页面A给页面H“投了一票”;一个网页被越多网页链接到,那么这个网页就越受大家信赖,此网页越重要,PageRank值越高:一个很重要、PageRank值很高的网页(如网页B)链接到了其他网页,那么这些网页的PageRank值也会因此提高。
PageRank算法的背后是马尔可夫链(Markov Chain):PageRank 算法假设一个在网络上浏览网页的人,每看过一个网页之后都会随机点击网页上的某个链接以访问新的网页。如果当前这个人正在浏览网页x,那么此网页上每个链接被点击的概率(可以用向量Nx表示)也是确定的。
一. 回到文首