在前面几章介绍了如何下载网页、建立索引、确定网页质量的度量。在这节中,将会讨论如何确定网页和查询的相关性,找到最相关的网页。
影响搜索引擎好坏的因素有好多,主要可以归纳成以下几类:
- 完备的索引
- 对网页质量的度量
- 用户偏好
- 确定一个网页和某个查询的相关性的方法
1 搜索关键词权重的科学度量TF-IDF
下面以一个简单的例子来阐述,例如查询“原子能的应用”。
通过分词技术,我们可以将这个短语分解成“原子能-的-应用”三个词。
并且我们可以比较容易想到,三个词出现较多的网页会比三个词出现较少的网页相关性高。但是这种方法的缺点在于,每个网页的总字数是不一样的。因此我们需要进行归一化处理,也就是使用关键词的次数除以总字数,我们把这个称为“关键词的频率”(Term Frequency)。
因此度量网页相关性的一个简单方法就是计算各个关键词在网页中出现的总词频。例如如果一个查询包含N个关键字w1,w2,…,wN,则他们在一个特定网页中的词频分别是:TF1,TF2,…,TFN。那么这个网页的相关性就是:
但是我们又会发现一个漏洞,就是关键词"的"占据了很大的词频,但是这个关键词似乎又没有什么用处,我们通常称这种词为“停止词”,类似的词还有“是”、“和”、“中”、“地”等十几个。
并且我们还能够发现一个漏洞,关键词“应用”这个词比较普通,而关键词“原子能”是个比较专业的词。因此“原子能”理应具有更大的权重。
因此权重必须满足以下条件:
- 一个词预测主题的能力越强,权重越大。
- 停止词的权重为零。
概括地讲,假定一个关键词w在Dw个网页中出现过,那么Dw越大,w的权重越小,反之亦然。在信息检索中,使用最多的权重是“逆文本频率指数”(Inverse Document Frequency,缩写为IDF),它的公式为:log(D/Dw)。其中D是全部网页数。
例如假设中文网页数是D=10亿,停止词每个网页中都出现过,即Dw=10亿。那么它的IDF=log(10亿/10亿)=log(1)=0。假如原子能出现过200万次,那么IDF=(200万/10亿)=8.96。假如应用出现过5亿个网页中,那么IDF=log(2),那么只有1。
基于此,上述计算相关性的公式就由词频的简单求和变成了加权求和,即
因此两者相结合就形成了TF-IDF(Term Frequency / Inverse Document Frequency)。TF-IDF=TF*IDF