第六章 文档评分、词项权重计算及向量空间模型
在文档集规模很大时,满足布尔查询结果的文档数量可能非常多,往往会大大超过用户能够浏览的文档的数目。对于给定的查询,搜索引擎会计算每个匹配文档的得分并排序。
6.1.参数化索引及域索引
之前,我们都是将文档看成一系列词项的序列。但实际上,文档除了文本外还有元数据,比如创建时间、文档标题,作者信息等,因此我们也可以对他进行限制;比如限制查询文档结果必须是2010年发表的;
参数化索引(parametric index):某个字段取值存在一定限制,如取值范围的限制,日期,则为参数化索引;
域索引:某个字段取值没有任何限制,比如标题,可以是任意的自由文本;
1. 域加权评分
给定一系列文档,假定每篇文档有l个域,其对应的权重分别是
g1,...,gl∈[0,1] g 1 , . . . , g l ∈ [ 0 , 1 ] ,且满足
∑li=1gi=1 ∑ i = 1 l g i = 1 。
令 si s i 为查询和文档的第i个域的匹配得分(1表示匹配上,0表示没匹配上),则域加权评分方法定义为: ∑li=1gisi ∑ i = 1 l g i s i ,该方法有时也被称为排序式布尔检索(ranked Boolean retrieval)。
例如,一个文档集,每篇文档都有三个域–author,title,body,三个域的权重系数分别为 g1=0.2,g2=0.3,g3=0.5 g 1 = 0.2 , g 2 = 0.3 , g 3 = 0.5 ,查询shakespeare,出现shakespeare时得分为1,否则为0。如果shakespeare出现在某文档的title和body域,则该文档最后得分为0.8。
2.权重学习
对于不同域的权重,可以从训练数据学习得到。
6.2 词项频率及权重计算
自由文本查询(参见第一章,没有任何搜索连接符如布尔操作符),在Web上很流行,它将查询看成多个词组成的集合。先对于每个词项计算它与文档的匹配得分,然后将所有查询词项的得分求和。
这样,我们对文档中每个词项都赋予了一个权重。最简单的,可以将权重设置为词项频率。
词项频率(term frequency):词项t在文档d中的出现次数,记为 tft,d t f t , d 。
词袋模型(bag of words model):忽略文档在文档中的出现次序,只关心出现的次数。词袋模型下,文档Mary is quicker than John和John is quicker than Mary是等价的。
只考虑词项频率有一个严重的问题,即在和查询进行相关度计算时,所有的词项都被认为是同等重要的。实际上,有些词项对相关度计算基本没有区分能力,如停用词the等。需要将出现次数较多的词项赋予较低的权重,常用的因子是文档频率。
文档频率:出现t的所有文档的数目,记为