第六章 文档评分、词项权重计算及向量空间模型
在文档集规模很大时,满足布尔查询结果的文档数量可能非常多,往往会大大超过用户能够浏览的文档的数目。对于给定的查询,搜索引擎会计算每个匹配文档的得分并排序。
6.1.参数化索引及域索引
之前,我们都是将文档看成一系列词项的序列。但实际上,文档除了文本外还有元数据,比如创建时间、文档标题,作者信息等,因此我们也可以对他进行限制;比如限制查询文档结果必须是2010年发表的;
参数化索引(parametric index):某个字段取值存在一定限制,如取值范围的限制,日期,则为参数化索引;
域索引:某个字段取值没有任何限制,比如标题,可以是任意的自由文本;
1. 域加权评分
给定一系列文档,假定每篇文档有l个域,其对应的权重分别是
,且满足
。
令
为查询和文档的第i个域的匹配得分(1表示匹配上,0表示没匹配上),则域加权评分方法定义为:
,该方法有时也被称为排序式布尔检索(ranked Boolean retrieval)。
例如,一个文档集,每篇文档都有三个域–author,title,body,三个域的权重系数分别为 ,查询shakespeare,出现shakespeare时得分为1,否则为0。如果shakespeare出现在某文档的title和body域,则该文档最后得分为0.8。
2.权重学习
对于不同域的权重,可以从训练数据学习得到。
6.2 词项频率及权重计算
自由文本查询(参见第一章,没有任何搜索连接符如布尔操作符),在Web上很流行,它将查询看成多个词组成的集合。先对于每个词项计算它与文档的匹配得分,然后将所有查询词项的得分求和。
这样,我们对文档中每个词项都赋予了一个权重。最简单的,可以将权重设置为词项频率。
词项频率(term frequency):词项t在文档d中的出现次数,记为 。
词袋模型(bag of words model):忽略文档在文档中的出现次序,只关心出现的次数。词袋模型下,文档Mary is quicker than John和John is quicker than Mary是等价的。
只考虑词项频率有一个严重的问题,即在和查询进行相关度计算时,所有的词项都被认为是同等重要的。实际上,有些词项对相关度计算基本没有区分能力,如停用词the等。需要将出现次数较多的词项赋予较低的权重,常用的因子是文档频率。
文档频率:出现t的所有文档的数目,记为 。
逆文档频率:假定所有文档的总数为N,词项t的 idf(逆文档频率) 定义如下:
。
tf-idf权重:对每篇文档每个词项,将其tf和idf组合起来形成最终的权重,即文档d中词项t的权重如下: 。
我们可以将每个文档看成是一个向量(vector),其中每个分量都对应词典中的一个词项,分量值为计算出的tf-idf权重。当某个词项在文档中没有出现时,其对应的分量值为0。这种向量形式对于评分和排序十分重要。
6.3 向量空间模型
在文档向量中,每个分量代表词项在文档中的相对重要性。一系列文档在同一向量空间中的表示被称为向量空间模型(vector space model,简称VSM)。
1. 两篇文档的相似性计算
假设文档d对应的向量用 表示,其中每个分量对应一个词项,向量分量可以用tf或tf-idf等权重计算方式。注意,在词袋模型下,文档Mary is quicker than John和John is quicker than Mary是等价的。
计算两篇文档 的相似度的常用方法是用余弦相似度:
上式除以分母的效果实际上相当于将向量 进行长度归一化,因此,其也可以重写成:
其中, 是相应的单位向量。
2. 查询向量
也可以将查询表示成向量,记为。可以通过计算给定的查询向量和每个文档向量的相似度来对所有文档进行排名,
因此,整个检索过程就是:计算查询向量和文档集中每个文档向量的余弦相似度,结果按照得分排序,并返回得分最高的K篇文档。然而,这个过程的代价很大,因为每次相似度计算都是数万维向量之间的内积计算。
3. 其他tf-idf权重计算方法
每篇文档每个词项权重计算方法可以用很多方式计算,如:
- tf
- tf-idf
tf的亚线性尺度变换方法:
即使一个词项在文档中出现20次,它所携带信息的重要性也不可能是只出现1次的词项的20倍。一个常用修改是采用原始词项频率的对数函数,此时权重计算方法如下:
得到:- 基于最大值的tf归一化:
采用文档d中最大的词项频率对所有词项进行归一化。
阻尼系数a是0到1之间的数,通常取0.4。a主要起平滑作用。
长文档中词项频率一般更大,这显然是不公平的,最大化tf归一化方法可以减轻这种不公平性。