`
jishublog
  • 浏览: 868981 次
文章分类
社区版块
存档分类
最新评论

信息检索导论学习笔记(6)-文档评分,词项权重计算及向量空间模型

 
阅读更多

参数化索引及域索引

迄今为止,我们都将文档看成一系列词项的序列.实际上,大多数文档都具有额外的结构信息.数字文档通常会把与之相关的元数据(metadata)以机读的方式一起编码.所谓元数据,指的是和文档相关的一些特定形式的数据,比如文档的作者,标题以及出版日期等等.

问题:考虑查询"寻找由William Shakespeare 于 1961年撰写,其中包含短语alas poor Yorick的文档".和通常一样,查询的处理过程需要进行倒排记录表的合并操作.但是不同的是,这里在处理查询时还会涉及参数化索引上的合并操作.

对上述查询,如何设计索引结构?通常有两种方式:

词典方式处理

在词典中,对不同域分别建立一个索引.同通常一样,查询的处理过程需要进行倒排记录表的合并操作(不同域下倒排索引的合并).




倒排记录方式处理

显然,对于查询,词典方式下域索引的处理要对多个索引进行合并处理,效率相对会比较低.因此考虑将域信息存储在倒排记录而不是词典中.



采用这种编码的另外一个重要的原因是它能支持域加权评分(weighted zone scoring)技术的使用


域和字段很相似,只是它的内容可以是任意的自由文本.字段通常的取值可能性相对较小,而域可以由任意的,数目无限制的文本构成.比如,通常可以把文档的标题和摘要看作域.我们可以对文档的不同域构建独立的倒排索引.


域加权评分

给定一个布尔查询q和一篇文档d,域加权评分方法给每个(q,d)对计算出一个[0,1]之间的得分.该得分由每个域上的得分线性组合而成,而每个域上的得分取布尔值:要么是0,要么是1.更具体地,给定一系列文档,假定每篇文档有L个域,其对应的权重分别是g1,...,gl (- [0, 1],他们满足



令si为查询和文档的第i个域匹配得分(1和0分别表示匹配上和没匹配上).例如,在AND查询下,如果所有查询词项都出现在某个域中,则这个域的对应得分为1,否则为0.


词项频率及权重计算

到目前为止,我们只考虑了词项在文档域中出现与否这两种情况.现在开始考虑词项频率,按常理如果文档或者域中词项出现的频率越高,那么该文档或者域的得分也越高

词项频率:词项t的词项频率是指词项t在文档d中出现的次数,记为:,其中两个下标分别对应词项和文档

那么如何评价得分呢? 最简单的方式是直接根据term在文档中的出现次数(即原始词频tf),来对文档进行评分

然而,原始tf不太合适:某个词项在A文档中出现10次,即tf=10,在B文档中出现1次,tf=1,那么A比B更相关,但是相关度不会相差10倍.相关度不会正比于词项频率

一种替代原始tf的方法:对数词频



公式中的数字1是为了平滑计算用的,对于tf值为1的情况,采用对数频率加1的方式平滑处理

另一种tf的变体计算公式:基于最大值的tf归一化



这种方法被称为增强型规范化tf, 其中的a是调节因子,过去经验值为0.5,新的研究表明取值为0.4效果更好.公式中的tf代表这个单词的实际词频数目,而MAX(tf)代表了文档中所有单词中出现次数最多的那个单词对应的词频数目.之所以要如此操作,主要对于长文档的一种抑制,因为如果文档较长,则长文档中所有单词的tf值会普遍比段文档的值高,但是这并不意味着长文档与查询更相关.用单词的实际词频除以文档中最高词频,等于将绝对的数值进行了规范化转换,公式的含义就转换为:同一个文档内单词之间的相对重要性.

逆文档频率

原始的词项频率会面临这样一个严重的问题,即在和查询进行相关度计算时,所有的词项都被认为是同等重要的.

显然罕见词项比常见词项所蕴含的信息更多.因此在对搜索结果排序时,对于罕见词我们希望赋予高权重而对于常见词我们希望赋予低权重

引入因子文档频率(document frequency)df,它表示的是出现t的所有文档的数目

罕见词项比常见词项蕴含的信息更多,因此df是和词项t的信息量成反比的一个值.由于df本身往往较大,所以通常需要将它映射到一个较小的取值范围中去.为此, 假定所有文档的数目为N, 词项t的idf(inverse document frequency, 逆文本频率)的定义如下:


idf是反映词项t的信息量的一个重要指标,一个罕见词的idf往往很高,而高频词的idf就可能较低.

idf对排序的影响:
  • idf会影响至少包含2个词项的查询的文档排序结果.例如,在查询"arachnocentric line"中,idf权重计算方法会增加arachnocentric的相对权重,同时降低line的相对权重
  • 对于单词项查询,idf对文档排序基本没有任何影响

tf-idf权重计算

对于每篇文档中的每个词项,可以将其tf和idf组合在一起形成最终的权重.tf-idf权重机制对文档d中的词项t赋予的权重如下:




换句话说,tf-idf按照如下的方式对文档d中词项t赋予权重:
  1. 当t只在少数几篇文档中出现多次时,权重取值最大(此时能够对这些文档提供最强的区分能力)
  2. 当t在一篇文档中出现次数很少,或者在很多文档中出现,权重取值次之(此时对最后的相关度计算作用不大)
  3. 如果t在所有的文档中都出现,那么权重取值最小

BM25算法浅析

了解了上述概念后,我们可以来看一下BM25算法.BM25算法,通常用来作搜索相关性评分.一句话概括其主要思想:对Query进行语素解析,生成语素qi.然后,对于每个搜索结果D,计算每个qi与D的相关性得分,最后,对qi相对与D的相关性的分进行加权求和,从而得到Query与D的相关性得分.

语素(科普):语速是最小的语音,语义结体,是最小的有意义的基本单位

BM25算法的一般性公式如下:




其中:
  • Q表示query
  • qi表示Q解析之后的一个语速(对于中文而言,我们可以把对Query的分词作为语素分析,每个词看成语速qi)
  • d表示一个搜索结果文档
  • W表示语速qi的权重
  • R(qi, d)表示语素qi与文档d的相关性得分

权重Wi

判断一个词与一个文档的相关性权重,方法有很多种,较常用的是idf,这里公式如下:



其中,N为索引中全部文档的数目,n(qi)为包含语素qi的文档数目

根据idf的定义可以看出,对于给定的文档集合,包含qi的文档数目越多,则qi的权重越低.也就是说,当很多文档都包含了qi时,qi的区分度就不高,因此使用qi来判断相关性时的重要度就较低.(举例:的这个词出现频率很高,但是所含的信息量很低)

相关性得分R(qi,d)

BM25中相关性得分的一般形式为:



其中:



其中:
  • k1, k2, b为调节因子,通常根据经验设置,一般k1 = 2, b = 0.75
  • fi为qi在d中出现频率,也就是词项频率,qfi为qi在Query中出现频率
  • dl为文档d的长度,avgdl为所有文档的平均长度.由于绝大部分情况下,qi在Query中只会出现一次,因此qfi为1

综上所述,公式可以化简为:



从K的定义中可以看出,参数b的作用是调整文档长度对相关性影响的大小.b越大,文档长度对相关性得分的影响越大,反之越小.这可以理解为:当文档较长时,包含qi的机会越大.因此,同等fi情况下,长文档与qi的相关性应该比短文档与qi的相关性弱


参考链接




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics