以下内容学习、摘录自《数学之美》
2007年作者为Google黑板报写本章节时,技术和算法的重要性依然高于数据,因此确定网页和查询的相关性主要依靠算法。但是今天,由于商业搜索引擎已经有了大量的用户点击数据,因此,对搜索相关性贡献最大的是根据用户对常见搜索点击网页的结果得到的概率模型。
影响搜索引擎质量的诸多因素,除了用户的点击数据之外,都可以归纳成下面四大类:
1.完备的索引。如果一个网页不在索引中,那么再好的算法也找不到。
2.对网页质量的度量,比如 PageRank算法。
3.用户偏好。一个好的搜索引擎会针对不同用户,对相同的搜索给出不同的排名。
4.确定一个网页和某个查询的相关性的方法。
比如查找关于“原子能的应用”的网页。现在任何一个搜索引擎能提供几十万甚至是上百万个与这个查询词组多少有点关系的网页,那么哪个应该排在前面呢?显然应该把网页本身质量好的,且与查询关键词相关性高的网页排在前面。前面章节已经讲过PageRank算法可以度量网页的质量。那如何度量网页和查询的相关性呢?
假如我们输入短语“原子能的应用”进行搜索,那么该短语可以分为三个关键词:原子能、的、应用。
如果根据直觉,这三个词出现较多的网页比出现少的网页相关性高。那就有个漏洞,即:篇幅长的网页占便宜。所以,用关键词的词频(关键词出现的次数/网页的总字数)是更合理的选择。
如果一个查询包含n个关键词W1,W2,...,Wn,它们在同一个网页中出现的词频(TF, Term Frequency)是:TF1,TF2,...,TFn。那么这个查询和网页的相关性公式是:
TF1+TF2+...+TFn
但仍有漏洞,细心的你可能发现了:
1.“的”在汉语中使用过于频繁,类似的还有“是”、“和”等词不应该有那么大的词频贡献;
2.“应用”是个通用词、“原子能”是个专业词,相比较后者在相关性排名中比前者重要。
也就是说,一个词预测主题的能力越强,在相似性计算时的权重应该更大才对。
在信息检索中,使用最多的权重是“逆文本频率指数”(IDF, Inverse Document Frequency),它的公式为log(D/Dw)。其中:D指搜索引擎收录的网页数;Dw指包含关键词w的网页数。由此:
1.我们假定收录了10亿的网页,而“的”在所有的网页中都出现过,所以IDF("的")=log(10亿/10亿)=log1=0;
2.“应用”在5亿个网页中出现过,那么IDF("应用")=log(10亿/5亿)=log2=1;
3.“原子能”在200万个网页中出现过,那么那么IDF("原子能")=log(10亿/200万)=log500=8.96。
显然,引入了IDF设置词频的权重更合理。学者们已经发现并指出,所谓IDF的概念就是一个特定条件下关键词的概率分布的交叉熵( Kullback- Leibler divergence)。这样,关于信息检索相关性的度量,又回到了信息论。
最后得到的“度量查询与网页相关性”的公式是:
TF1*IDF1 + TF2*IDF2 + ... + TFn*IDFn
TF-IDF(Term Frequency / InverseDocument Frequency)是对搜索关键词的重要性的度量,并且具备很强的理论根据。现在的搜索引擎对TF-IDF进行了不少细微的优化,使得相关性的度量更加准确了。当然,对有兴趣写一个搜索引擎的爱好者来讲,使用TF-IDF就足够了。如果结合网页排名( Pagerank)算法,那么给定一个查询有关网页的综合排名大致由相关性和网页排名的乘积决定。