42ca376e561252d380eb6e2d.docx
- 文档编号:30036371
- 上传时间:2023-08-04
- 格式:DOCX
- 页数:109
- 大小:1.72MB
42ca376e561252d380eb6e2d.docx
《42ca376e561252d380eb6e2d.docx》由会员分享,可在线阅读,更多相关《42ca376e561252d380eb6e2d.docx(109页珍藏版)》请在冰豆网上搜索。
检索模型与算法
第2章检索模型与算法
检索模型提供了一种度量查询和文档之间相似度的方法。
这些模型基于一种共同的理念:
文档和查询共有的词项(term)越多,则认为这篇文档和该查询越相关。
语言本身就客观存在着诸多的不确定性,现实中一个相同的概念可能会用多种不同的词项来表达(如newyork和thebigapple可能指的是同一含义)。
另外,相同的词项也可能有很多种语义(比如bark和duck,它们的名词形式和动词形式的意思迥然不同。
我们介绍的一些检索算法采用了相应措施来解决这些语言中的不确定性问题。
检索模型就是一种算法,该算法的处理对象是查询Q和文档集合{D1,D2,…,Dn},处理过程就是计算每篇文档Di(1≤i≤n)和这个查询的相似度SC(Q,Di)。
[注:
SC是SimilarityCoefficient(相似度)的缩写,有时记作RSV(RetrievalStatusValue),用来表示检索状态值]。
常用的检索模型有如下几种。
向量空间模型--我们将查询和文档都表示为词项空间中的向量,进而可以计算这两个向量之间的相似度。
概率模型--基于文档集中每个词项在相关文档中出现的可能性计算出概率。
对文档和查询匹配的所有词项计算联合概率,从而得出文档与查询的相似度。
语言模型--针对每一篇文档,建立一个语言模型,并且计算出各文档"生成"查询的概率。
推理网络--我们采用贝叶斯网络来推断文档和查询间的相关性。
推理过程基于文档中的"证据",这种"证据"是文档中可以作出文档相关性推断的依据。
推理的可信度即为文档查询的相似度。
布尔检索--在原始的布尔查询结果中,我们对每篇文档都赋予一个得分,这样就可以进行查询结果排序。
具体的做法是:
将每个查询词项赋予一个权重,进而使用这个权重计算文档与查询的相似度。
LSI(隐性语义检索)--我们使用词项-文档矩阵来表示文档集中出现的词项。
这个矩阵通过奇异值分解(SingularValueDecomposition,SVD)来降维,奇异值分解可以过滤掉文档中的噪声,这样两篇有相同语义的文档在多维空间中距离会比较接近。
神经网络方法--网络中包含一系列神经元(或者称作节点),这些神经元在激活查询到文档的触发链接的过程中进行传导。
网络中每个链接的权重被传到文档,这些权重汇集起来作为查询和文档之间的相似度。
人们往往会预先定义好一批相关文档集和不相关文档集,然后再调整神经网络链接上的权重,以达到"训练"神经网络的目的。
遗传算法--我们可以通过进化的方法来得到查找相关文档的最优查询过程。
初始的查询可以使用随机的权重,也可以使用估计值。
通过修改这些权重来产生新的查询。
接近已知相关文档的新查询得以幸存,而"适应度"较小的查询在随后的过程中被淘汰。
模糊集检索--每篇文档被映射到一个模糊集[这种集合不仅包含元素,还包含与每个元素相关的权重,用来表示该元素的隶属度(membership)]。
该模型将布尔查询映射为模糊集的相交、合并和补集等操作,这样我们就可以计算出每篇文档与查询相关的隶属度。
隶属度即为相似度。
对于一个已知的检索模型,我们可以使用许多不同的实用策略(utility)来提高检索模型的性能。
我们将在第3章中详细介绍这些实用策略。
需要注意的是,一些检索模型和实用策略基于完全不同的数学思想。
例如,概率检索模型理论上不能与向量空间模型的同义词表(thesaurus)联合使用,然而,这种结合很有可能提高最终的检索效果。
不过,当混合搭配使用基于不同数学模型的检索模型和实用策略时,我们还是要特别谨慎。
我们竭尽所能来优化查询,大多数方法是在初始查询中增加或者删除一些词项,其他的方法则仅仅是把重点放在查询的计算范围上(比如,使用子文档或者片段来代替整篇文档)。
关键在于每种策略是即插即用的,且可以应用于任意一个检索模型(虽然这种情况很少出现)。
在深入研究每种检索模型的细节之前,我们希望提醒读者注意一点。
在力图展现算法的原始形式时,我们有意留下不一致的形式。
例如,在实现一个缓慢增长函数时,一些算法的提出者使用ln(x)而其他人则使用lg(x)。
显然,我们都知道这些函数之间严格来说不过是常量积的关系。
虽然它确实会带来些许误解,但是我们感觉展现原始的描述仍然有其优越性。
为了清晰起见,我们尽量在不同策略中使用通用符号,并且提供一个可以运行的例子。
这些例子都采用相同的查询和文档集,其具体用法与检索模型无关。
2.1 向量空间模型
向量空间模型通过向量的方式来计算相似度,其中每一篇文档用一个向量来表示,而查询同样用一个向量来表示[Salon等人,1975]。
该模型基于以下思想:
大致来说,文章的语义通过所使用的词语来表达。
如果可以将文档中的词语表示成一个向量,那就有可能将文档和查询进行比较,从而判定它们内容相似的程度。
如果将查询也看做文档,就可以计算出文档和查询的相似度。
通过文档中使用的词项进行衡量,我们认为最接近查询内容的文档是最相关文档。
图2-1说明了向量空间模型的基本理念,其中包含一个查询向量和三个文档向量。
该模型主要涉及两方面工作:
一是如何构建一个向量来表示文档中的词项;二是如何构建另一个向量来表示查询中的词项。
接下来,我们必须选择一种方法来度量任意文档向量和查询向量的相似度。
一种方法是可以比较两个向量的差值向量大小,然而由于查询一般比较短小,这会导致较大的向量看起来往往和大多数查询都不相关。
判断两个向量相近性的传统方法是计算这两个向量之间夹角的大小。
两个向量的夹角可以通过内积(或称点积)计算出来,然而我们并没有必要真正计算出角度的实际值--任何计算夹角的单调函数都可以达到实用的要求。
我们通常使用"相似度"来代替夹角。
计算相似度有多种方法,通常来说,内积效果最佳。
通过以上的讨论,我们可以得到以下共识:
只有文档向量和查询向量指向的方向大体一致,它们才相似。
图2-1 向量空间模型
对于文档集中每一个不同的词项(或概念),我们在向量中只记录一个分量。
接下来,我们考虑在文档集中只有两个不同词项
和
的情况。
所有的向量只包含两个分量:
第一个分量表示词项的出现情况,第二个分量表示词项
的出现情况。
构造向量最简单的方法是:
当词项出现时,就在对应向量的分量处记1;如果词项未出现,就在对应的分量处记0。
下面我们看一篇实际的文档,比如文档D1,其中词项
出现了两次,词项
出现了零次。
这个文档使用二值表示方法时,对应的向量为<1,0>。
二值表示方法可以用来计算相似度,但是并没有考虑一个词项在文档中出现的次数。
通过扩展这种表示形式,我们将词项在文档中出现的频率作为向量中各个分量的值。
在这个例子中,向量可以表示为<2,0>。
图2-2给出了一个简单的例子。
对于文档集中每个独立的词项,我们需要在向量中定义一个分量。
使用一个简单的例子,在一个只包含两个词语的语言中(只有A和I是有效的词项),所有的查询和文档都可以采用二维空间向量来表示。
图2-2给出了一个查询和三篇文档,并且给出了它们的向量形式及其图形表示。
查询和文档的相似度可以通过计算两个向量的距离得出。
在这个例子中,可以认为文档1和查询的向量相同,从而文档1在查询结果列表中排在第一位。
图2-2 只有两个词项的向量空间模型
除了简单地给出查询词列表外,用户通常还会给出权重,该权重表示一个词项比另外一个词项更重要。
这是通过在初始查询中用户人工指定词项权重来实现的。
另外一种方法是自动指定权重--通过基于词项在整个文档集中出现的频率。
基本思想是:
不频繁出现的词的权重应该比频繁出现的词的权重更高。
文献[Salton,1969;Salton,1970b]分别采用权重自动赋值与人工赋值方法计算相似度,然后进行查询比较。
实验结果表明:
自动赋值在查询性能上并不比和人工赋值差[Salton,1969,Salton,1970b]。
遗憾的是,这些结果并没有引入词项在整个文档集中的相对权重。
在20世纪70年代,研究者深入研究了不同文档集的权重。
研究结论是:
如果引入不同文档集的权重,能够提升相关度排序的效果。
尽管在实验中使用了相对较小的文档集,作者仍然得出一个结论:
"迄今为止,信息检索研究中不少事情都可以称为结论确凿,这就是其中之一。
"[Robertson和SparckJones,1976]
我们采用更加形式化的定义,并采用稍大一些的例子来展示如何使用基于数据集频率的权重。
对应于一个给定的词项,其权重使用IDF(逆文档频率)来计算。
为了给每篇文档建立一个对应的向量,可以考虑如下定义。
对于每一篇文档向量,都有n个分量,并且对于整个文档集中每个不同的词项,都包含一个词条。
向量中的每个分量为在整个文档集中计算出来的每个词项的权重。
在每篇文档中,词项权重基于词项在整个文档集中出现的频率情况以及词项在某一个特定文档中出现的频率自动赋值。
词项在一篇文档中出现的频率越高,则权重越大;相反,如果词项在所有文档中出现的频率越高,则权重越小。
仅当词项在文档中出现时,文档向量中词项的权重才为非零值。
对于一个包含许多小文档的大文档集,文档向量可能会包含大量的零元素。
例如,一篇文档集包含10000个不同的词项,也就是每个文档中要用10000维的向量来表示。
一个给定的只有100个不同词项的文档向量则包含9900个零分量。
对于文档中词项的权重因素,主要综合考虑词频和逆文档频率。
也就是说,我们使用下面的公式计算文档i对应的向量中第j个词条的值:
下面我们来考虑一个包含D1和D2两篇文档的文档集,在文档D1中词"绿色"出现了十次,而在D2中"绿色"仅出现了5次。
如果仅仅查询"绿色",那么在结果中文档D1排在文档D2前面。
当我们在一篇文档检索系统中用文档集中t个不同的词项来查询时,系统将为每个文档计算维度为t的向量D(di1,di2,…,dit)。
向量值使用前文所述的词项权重填充。
类似地,查询中的词项构建的向量为Q(wq1,wq2,…,wqt)。
查询Q和文档Di的相似度可以简单地定义为两个向量的内积。
因为查询向量和和文档向量在长度上是相似的,这种策略也常常被用来计算两篇文档的相似度。
我们将在3.2节中讨论将SC应用到文档聚类中。
2.1.1 相似度计算举例
下面我们考虑一个固定的查询和文档集,包含一个查询Q和三篇文档组成的文档集:
Q:
"goldsilvertruck"
D1:
"Shipmentofgolddamagedinafire"
D2:
"Deliveryofsilverarrivedinasilvertruck"
D3:
"Shipmentofgoldarrivedinatruck"
在这个文档集中,有三篇文档,所以d=3。
如果一个词项仅在三篇文档中的一篇中出现,那么该词项的IDF就是lg(d/dfi)=lg(3/1)=0.477。
类似地,如果一个词项在三篇文档中的两篇中出现,那么该词项的IDF就是lg(d/dfi)=lg(3/2)=0.176。
如果一个词项在三篇文档中都出现了,那么该词项的IDF就是lg(d/dfi)=lg(3/3)=0。
三篇文档的每个词项的IDF值如下所示:
现在就可以构造文档向量了。
因为文档集中出现了11个词项,所以我们构造一个11维的文档向量。
我们可以用上文给出的按字母顺序排列的词项来构建文档向量,所以t1对应第一个词项"a",t2对应"arrived",依次类推。
向量j中词项i的权重计算方式为idfi×tfij。
文档向量如表2-1所示。
表2-1 文档向量
docid
a
arrived
damaged
delivery
fire
gold
in
of
shipment
silver
truck
D1
0
0
0.477
0
0.477
0.176
0
0
0.176
0
0
D2
0
0.176
0
0.477
0
0
0
0
0
0.954
0.176
D3
0
0.176
0
0
0
0.176
0
0
0.176
0
0.176
Q
0
0
0
0
0
0.176
0
0
0
0.477
0.176
在实现向量空间模型或其他检索模型时,我们通常使用倒排索引(invertedindex)来避免在每篇文档中使用冗长的顺序查找来查找查询词。
因此,在用户提交查询之前,我们首先构造倒排索引表。
从图2-3中我们可以看到倒排索引表的结构。
n个词项中的每一项都被存储在称为索引的结构中。
对于每一个词项,指向的逻辑链接表被称作倒排表(postinglist)。
倒排表记录每篇包含该词项的文档。
在图2-3中,倒排表中记录了文档标识符和词频等信息。
(实际上,人们往往使用比链接表更有效的结构,但从概念上讲都是为了同一目的。
)图中的倒排表表明词项t1在文档1中出现了一次,在文档10中出现了两次。
对于一个任意的词项t1的条目,表明该词项在文档j中出现了tf次。
倒排索引的的具体构造细节和用法将在第5章中介绍,不过知道倒排索引通常在各种检索模型中用来提高运行效率是非常有用的。
图2-3 倒排索引
在20世纪60年代后期的文献[Salton和Lesk,1968]中就有关于向量空间模型的早期研究。
该模型在20世纪70年代中期使用非常普遍[Salton等人,1975],并且现在仍然是计算查询和文档相似度最广泛使用的方法之一[TREC,2003]。
这种方法非常重要,因为检索系统可以据此决定最终将哪些文档展示给用户。
通常用户只需要最前面的n篇文档,并且这些文档按相似度进行排序。
接下来,科研人员研究了提升基本的tf-idf权重的词项权重计算方式[Salton和Buckley,1988]。
人们研究了许多不同的方法,并且认为用下面的公式计算文档i中词项j的权重效果出色:
这样计算权重的出发点是:
在已知的查询和文档中,词频很高的匹配词项淹没了其他匹配词项的效果。
为了避免这种现象,科研人员提出使用lg(tf)+1来缩小词频的范围。
基于该思想的修订版本是在查询和文档中的词项使用不同的权重。
一种被称作lnc.ltc的词项权重计算模式非常有效。
文档中使用1+lg(tf)×idf计算权重,查询中使用1+lg(tf)计算权重。
标签lnc.ltc是如下形式:
qqq.ddd,其中qqq指查询权重,ddd指文档权重。
这三个字母:
qqq或ddd是xyz的形式。
第一个字母x可以是n、l或a。
n表示原始词频或指tf。
l表示通过取对数来降低权重,所以可以使用1+lg(tf)。
a表示加强权重,所以权重为
。
第二个字母y表示是否使用idf。
n表示不使用idf,t表示使用idf。
第三个字母z表示是否使用文档长度归一化。
通过归一化文档长度,我们试着减小检索中文档长度的影响(见公式2-1)。
在文献[Singhal,1997]中,n表示不使用归一化,c表示使用标准的余弦归一化,u表示使用临界点长度(pivotedlength)归一化。
2.1.2 相似度
人们提出了许多比较查询向量和文档向量的方法,这些方法都经过了证明。
这里我们来快速回顾一下。
其中最常见的方法是余弦方法,也就是计算查询向量和文档向量之间夹角的余弦值。
因为
在计算每篇文档的相似度时都会出现,向量内积除以文档向量大小后,余弦系数应该给出相同的相关性结果。
我们注意到余弦方法通过考虑文档长度来"归一化"结果。
通过内积方法,一个比较长的文档可能会得到一个比较高的分数,仅仅因为文档比较长,因此有更多的机会包含查询词--并不一定因为文档是相关的。
Dice系数定义为:
Jaccard系数定义为:
余弦方法通过将向量内积除以文档向量的长度来实现不同文档长度的归一化。
余弦方法中假定文档长度对查询没有影响。
排除归一化因素,较长的文档更容易被认定为相关的,仅仅因为长文档包含的词多,所以增加了包含查询词的可能性。
除以文档向量长度就是不考虑文档长度。
结果是(至少对于TREC数据),这种简单的假设是不正确的。
拿50个TREC查询集所有查找到的相关文档来说,Singhal发现实际上在长文档集中更多文档被判断为相关的[Singhal,1997]。
原因可能是长文档仅仅是有更多的机会包含那些与给定查询确实相关的词项。
为了找到一种调整归一化因子的方法,Singhal比较了相关的可能性和在文档集中被检索到的可能性,其中已知与查询集相关的文档。
理想情况下,如果检索概率和相关概率同时以文档长度为标准进行作图,那么这两条曲线应该基本一致。
由于并不是这种情况(实际上两条曲线是相交的),所以肯定存在一个文档长度点使检索概率和相关概率相等。
在这个点(被称为临界点)前,文档被检索的概率大于相关概率。
在这个点后,文档被检索的概率小于相关概率。
一旦找到临界点,我们就可以使用这个"校正因子"进行归一化调整。
这个"校正因子"通过一个线性表达式计算出来,其中在临界点时线性表达式的值等于临界点的值,并且选定一定的斜率来增加短文档归一化之后的值,这样短文档被选定的概率等于相关概率。
因此,相似度为:
这种方法有两个变量:
分别为斜率s和临界点p。
不过,我们也有可能将斜率s表示为临界点的函数。
Singhal在纠正和调整相应的斜率之前,将整个文档集上统计计算出来的平均归一化因子选定为临界点。
同时,将归一化因子除以(1.0s)p。
计算相似度的等式如下:
其中avgn是在任何纠正前的平均文档归一化因子。
临界点模式对于短文档和中等长度的文档还算有成效,但是与归一化前相比,整个算法会更有利于特别长的文档。
为了修正这一点,在任何调整前,科研人员提出将文档中不同词项的数量|di|作为归一化因子。
最后一种调整是针对在特别长文档中出现的词频特别高的情况。
首先,使用1+lg来限制词频。
为了应对长文档,将每个词项权重除以平均词项权重。
新的权重dij为
使用新权重,并且除以调整因子的新公式如下:
然后我们计算给定文档集中每篇文档的词项的平均数量,并且将其作为临界点p。
一旦计算完成,就可以使用文档集就上训练出一个很好的斜率。
公式(2-2)被称为临界点唯一归一化(pivoteduniquenormalization),并且实验表明,在公式(2-1)临界点余弦归一化的基础上检索效果得到了提高。
修改后的归一化因子使得更可能检索到长文档,并且对于TREC查询,性能可以提高10%。
我们同时可以注意到向量空间模型假设词项之间是独立的。
缓解向量空间模型词项独立性问题的一个方法就是改变基向量。
尽管改变基向量并不能完全解决问题,但是可以缓解这一问题。
其思想为:
为每篇文档选一个基本的组合词项(不管词频)。
新的基本向量可以相互正交,并且按比例转化为单位向量。
文档和查询可以表示为新的基本向量的形式。
同时联合使用其他方法(可以是概率),可以避免独立性假设,但是在实际应用中效果并没有显著的提高。
2.2 概率检索模型
概率模型通过计算文档与查询相关的概率来作为文档和查询的相似度。
这就使相关性排序问题降为概率论应用问题。
概率论的综述可以查看文献[Fuhr,1992]。
概率论可以用来计算查询和文档的相关性。
学术界提出了两种根本不同的方法。
第一种依靠使用模式来预测相关性[Maron和Kuhns,1960],第二种使用查询中的每个词项作为线索来判断文档是否相关[Robertson和SparckJones,1976]。
使用概率论检索文档的研究可以追溯到Maron和Kuhns。
他们的研究开创了估计文档是否与一个给定的特定词项相关的研究领域。
所有的概率研究起源于这样一种观点:
基于一个词项分别在相关文档和不相关文档中出现的频率来估计该词项的权重。
2.2.1节描述了简单的词项权重模型,2.2.2节中介绍了非二值独立模型,2.2.3节和2.2.4节分别介绍泊松模型和基于片段的模型,这两种模型在TREC数据集上都取得了不错的成绩。
最后,2.2.5节中讲述模型的两大问题--参数估计和独立性假设。
2.2.1 简单的词项权重
(1)
词项权重的使用基于PRP(ProbabilityRankingPrinciple,概率排序原理),PRP假定最佳效果是基于与查询相关的概率估计进行排序[Robertson,1977]。
关键是对查询的构成分量计算概率,然后使用这些分量作为证据,从而计算出文档与查询相关的最终概率。
我们对查询中的词项赋予权重,权重对应于查询词可以检索到相关文档的概率。
我们结合每个词项的权重来计算最终的相关性。
在该领域的大多数论文中,引入了概率论并且讨论了独立性假设的有效性,所以简要回顾一下概率论是恰当的。
下面我们试着预测一支叫做沙罗曼蛇的垒球队是否可以赢得比赛。
基于以往的经验,我们可以观察到:
他们经常在晴朗的天气,当他们最好的游击手上场时赢得比赛。
这意味着有两个证据可以使用:
户外的天气情况和好的游击手。
对于一场已知的比赛,如果天气晴朗的话,有75%的可能性可以赢得比赛;如果游击手出赛的话,有60%的可能性赢得比赛。
因此,我们记作:
P(win|sunny)=0.75
P(win|good-shortstop)=0.6
这支球队在两个条件下可以取胜的条件概率记为p(win|suny,good-shortstop),这表示"这支球队在天气晴朗且有好的游击手出赛的情况下获胜的条件概率"。
我们有两个证据推断沙罗曼蛇队可以获胜。
直觉告诉我们两个条件都满足时会比只满足一个条件获胜的概率更大。
组合它们的方法也就是"看看成败的机率"。
75%获胜的可能性也就是有25%输掉的可能性,60%获胜的可能性也就是有40%输掉的可能性。
我们假设这两个条件是独立的。
进行相应的替换和运算,我们得到:
假设沙罗曼蛇队是0.500球队俱乐部(也就是说,他们输赢次数一样多),然后假设和的值分别是0.6和0.75,那么可以得到:
由此可以得到
的值为9/11=0.818。
注意到,组合晴朗的天气和优异的游击手两个条件可以得到比只有任何一个条件都高的获胜概率。
关键在于独立性假设。
天气晴朗的可能性和优异游击手的出场是完全独立的。
游击手出现的机率不受天气情况而改变。
类似地,天气情况也不会受游击手出场与否影响。
如果这种独立性被破坏了:
假如游击手喜欢晴朗的天气--需要特别考虑这种依赖性。
同时独立性假设也要求天气和优异游击手的出现和给定的输赢之间是独立的。
对于信息检索查询,查询中的词项可以看做文档相关的指示器。
查询中词项A的出现与否可以预测文档是否相关。
因此,经过一段时间的观察,我们发现词项A同时在文档和查询中出现时,文档相关的概率为x%。
这样我们就为词项A赋值这个概率。
假设词项间是独立的,这样就可以针对查询中的每一个词项来计算其概率。
最终,计算所有权重的乘积就可以计算出文档相关的概率。
我们知道,独立性假设在现实中确实不是一个很好的模型。
尽管理论上存在问题,但是一些研究者已经研究出为什么使用这些假设的系统性能相当好[Cooper,1991]。
例如,对应查询苹果派,相关文档中包含词项苹果可能比用词项派或者其他随机选择的词项的相关概率更高一些。
因此,这就违背了关键的独立性假设。
概率模型的大多数工作都假定词项间是相互独立的,这是因为处理依赖性将引入大量的计算。
人们还不清楚考虑依赖性后效果是否有所提升,而且我们注意到只需相对较少的工作即可实现依赖性。
这些方法计算量确实相当大,而且更为重要的是,计算量很难估
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 42 ca376e561252d380eb6e2d