Loading... <h2 class="headline-1 bk-sidecatalog-title"><span style="line-height: 36px;font-size: 22px">1. 检索模型概述</span></h2> <p><span style="font-size: 18px"> <span style="font-size: 14px"><strong>搜索结果排序时搜索引擎最核心的部分,</strong>很大程度度上决定了搜索引擎的质量好坏及用户满意度。实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况。这里我们主要总结网页内容和用户查询相关的内容。</span></span></p> <p> 判断网页内容是否与用户査询相关,这依赖于搜索引擎所来用的检索模型。检索模型是搜索引擎的理论基础,为量化相关性提供了一种数学模型,是对查询词和文档之间进行相似度计算的框架和方法。<span style="font-family: 宋体">其本质就是相关度建模。如图所示,检索模型所在搜索引擎系统架构位置:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703170006-6.jpg" title="1428289248672441.jpg" alt="1.jpg" /></p> <p><span style="font-family: 宋体"> 当然检索模型理论研究存在理想化的隐含假设,及即假设用户需求已经通过查询非常清晰明确地表达出来了,所以检索模型的任务不涉及到对用户需求建模。但实际上这个和实际相差较远,即使相同的查询词,不同用户的需求目的可能差异很大,而检索模型对此无能为力。</span><span style="font-family: 宋体;font-size: 18px"> </span></p> <h2 class="headline-1 bk-sidecatalog-title"><span style="line-height: 36px;font-size: 22px">2. 检索模型分类</span></h2> <p><span style="font-size: 18px"><span style="font-family: 宋体"> <span style="font-size: 14px">大学学习的《数学模型》(姜启源第三版),现在还有点印象。数学模型将现实问题归结为相应的数学问题,并在此基础上利用数学的概念、方法和理论进行深入的分析和研究,从而从定性或定量的角度来刻画实际问题,并为解决现实问题提供精确的数据或可靠的指导。<br /> 所以我们从所使用的数学方法上分:</span></span></span></p> <p>1)基于集合论的<strong>IR</strong>模型<strong>(Set Theoretic models)</strong></p> <p> 布尔模型</p> <p> 基于模糊集的模型</p> <p> 扩展布尔模型</p> <p>2)基于代数论的<strong>IR</strong>模型<strong>(Algebraic models)</strong></p> <p> 向量空间模型</p> <p> 潜性语义索引模型</p> <p> 神经网络模型</p> <p>3)基于概率统计的<strong>IR</strong>模型<strong>(Probabilistic models)</strong></p> <p> 回归模型</p> <p> 概率模型</p> <p> 语言模型建模<strong>IR</strong>模型</p> <p> 推理网络模型</p> <p> 信任度网络模型</p> <p>此外还有基于统计的机器学习排序算法。<br />这里主要介绍 布尔模型,向量空间模型,概率模型,语言模型,机器学习排序算法<br />3. 布尔模型</p> <p>布尔模型:</p> <p> 是最简单的信息检索模型,是基于集合理论和布尔代数的一种简单的检索模型。<span style="font-family: 宋体"><br /></span></p> <p><span style="font-family: 宋体">基本思想:<br /></span></p> <p><span style="font-family: 宋体"> 文档和用户<strong>查询</strong>由其包含的单词集合来表示,两者的相似性则通过布尔代数运算来进行判定;</span></p> <p>相似度计算:</p> <p> 查询布尔表达式和所有文档的布尔表达式进行匹配,匹配成功的文档的得分为<strong>1</strong>,否则为<strong>0</strong>。 </p> <p> 如查询词:</p> <p> 苹果 and (iphone OR Ipad2)</p> <p> 文档集合:</p> <p> D1:IPhone 5于9月13号问世。</p> <p> D2: 苹果公司<span style="font-family: 宋体">于9月13号</span><span style="font-family: 宋体">发布</span>新一代IPhone。</p> <p> D3:Ipad2将于3月11日在美上市。</p> <p> D4:Iphone和ipad2的外观设计精美时尚</p> <p> D5:80后90后都喜欢iphone,但不喜欢吃苹果。</p> <p> 那么单词与文档关系如下图:</p> <p> <img src="//cto.wang/usr/uploads/2016/07/20160703170006-53.jpg" title="1428289358235034.jpg" alt="2.jpg" /></p> <p> 检索结果就是D2和D5符合搜索条件。<br /> 这类似于传统数据库检索,是精确匹。一些搜索引擎的高级检索往往是使用布尔模型的思想。如<strong>Google</strong>的高级检索。</p> <p>优点:<br /> 在于形式简洁、结构简单。</p> <p>缺点:</p> <p> 1)准确的匹配可能导致检出的文档过多或过少。因为布尔模型只是判断文档要么相关、要么不相关,它的检索策略基于二值判定标准,无法描述与查询条件部分匹配的情况。因此,布尔模型实际上是一个数值检索模型而不是信息检索模型。</p> <p> 2)尽管布尔表达式有确切的语义,但通常很难将用户的信息需求转换成布尔表达式。如今,人们普遍认为,给索引词加权能极大地改善检索效果。从对索引词加权的方法中引出了向量模型。</p> <h2 class="headline-1 bk-sidecatalog-title"><span style="line-height: 36px;font-size: 22px">4. 向量空间模型(Vector Space Model,VSM)</span></h2> <p><span style="font-family: 宋体">向量空间模型:<br /> 康奈尔大学<strong>Salton</strong>等人上世纪<strong>70</strong>年代提出并倡导,原型系统<strong>SMART</strong> </span></p> <p><span style="font-family: 宋体">基本思想:<br /></span></p> <p><span style="font-family: 宋体"> 把文档看成是由t维特征组成的一个向量,特征一般采用单词,每个特征会根据一定依据计算其权重,这t维带有权重的特征共同构成了一个文档,以此来表示文档的主题内容。</span></p> <p><span style="font-family: 宋体">相似性计算:<br /></span></p> <p><span style="font-family: 宋体"> 计算文档的相似性可以采用Cosine计算定义,实际上是求文档在t维空间中<strong>查询</strong>词向量和文档向量的夹角,越小越相似;对于特征权重,可以采用Tf*IDF框架,Tf是词频,IDF是逆文档频率因子指的是同一个单词在文档集合范围的出现次数,这个是一种全局因子,其考虑的不是文档本身的特征,而是特征单词之间的相对重要性,特征词出现在其中的文档数目越多,IDF值越低,这个词区分不同文档的能力就越差,这个框架一般把Weight=Tf*IDF作为权重计算公式。</span></p> <p><span style="font-family: 宋体;font-size: 18px">思路:<br /></span></p> <p><span style="font-family: 宋体">1)向量表示:</span></p> <p><span style="font-family: 宋体"> 文档Dj的向量可以表示为Dj(w1j, w2j ,⋯,wnj ) ,其中n是系统中的单词数目,wij 代表了标引词i在文档Dj中的权重。</span></p> <p><span style="font-family: 宋体"> 查询Q的向量可以表示为Q(w1q, w2q ,⋯,wnq ) ,wiq代表了单词i在查询Q中的权重</span></p> <p> 2)文档<strong>–</strong>单词矩阵<strong>(Doc-Term Matrix)</strong><strong><em>:<br /> n</em></strong>篇文档,<strong><em>m</em></strong>个标引词构成的矩阵<strong><em>Am*n</em></strong>,每列可以看成每篇文档的向量表示,同时,每行也可以可以看成<span style="font-family: 宋体">单词</span>的向量表示:</p> <p><span style="font-family: 宋体;font-size: 18px"> <img src="//cto.wang/usr/uploads/2016/07/20160703170006-13.png" title="1428289403117046.png" alt="3.png" /></span></p> <p><span style="font-family: 宋体">3)权重计算:<br /></span></p> <p> 布尔权重:标引词i在文档j中的权重wij =0或1(出现则取1,否则取0)</p> <p> TF权重:TF(Term Frequency)是单词在文档中出现的次数。权重wij = TFij或者归一化后的TF值</p> <p> TF的归一化(Normalization):将一篇文档中所有的标引词的TF值归一化到[0,1]之间。通常可以采用以下方式之一:<br /> 1: Wtf = 1 + log(TF)</p> <p> 2:<span style="font-family: 宋体">Wtf = a + (1- a)* TF /Max</span>(TF) 其中a为调节因子,经验取值a=0.5 最新研究表明是0.4效果更好。<br /> </p> <p> <span style="font-family: 宋体">单词</span>的文档频率DF(Document Frequency):<span style="font-family: 宋体">单词</span>在整个文档集合中出现的文档篇数,DF反映了<span style="font-family: 宋体">单词</span>的区分度, DF越高表示<span style="font-family: 宋体">单词</span>越普遍,因此其区分度越低,其权重也越低。</p> <p> 逆文档频率(Inverse DF ,IDF):DF的倒数,通常采用如下公式计算:(N是文档集合中所有文档的数目)</p> <p> <br /> <img src="//cto.wang/usr/uploads/2016/07/20160703170006-55.gif" title="1428289442136272.gif" alt="1.gif" /></p> <p>3)<span style="font-family: 宋体"> 计算权重</span>:向量空间模型中通常采用TF* IDF的方式计算权重,即标引词i在文档dj的权重Wij = TFij * IDFij .<br />4) 相似度计算:文档和查询词的相关程度(即相似度)可由它们各自向量在向量空问中的相对位置来决定。相似度计算函数有很多种,较常用的是两个向量夹角的余弦函数。<br /> </p> <p> <span class="headline-content">由向量的数量积</span>定义:两个向量的数量积(又称“内积”、“点积”,物理学上称为“标量积”。)是一个数量,记作<strong>a·b</strong>。若<strong>a</strong>、<strong>b</strong>不共线,则<strong>a·b</strong>=|<strong>a</strong>|·|<strong>b</strong>|·cos〈<strong>a</strong>,<strong>b</strong>〉。<br /> 其意义:两向量的数量积等于其中一个向量的模与另一个向量在这个向量的方向上的投影的乘积。我们把|b|cosθ叫做向量b在向量a的方向上的投影。<br /> 两向量<strong>a</strong>与<strong>b</strong>的数量积:<strong>a</strong>·<strong>b</strong>=|<strong>a</strong>|*|<strong>b</strong>|cosθ;其中|<strong>a</strong>|、|β|是两向量的模,θ是两向量之间的夹角(0≤θ≤π)。<br /> 若有坐标<strong>a</strong>(x1,y1,z1) ;<strong>b</strong>(x2,y2,z2),那么<strong>a</strong>·<strong>b</strong>=x1x2+y1y2+z1z2; |<strong>a</strong>|=sqrt(x1^2+y1^2+z1^2);|<strong>b</strong>|=sqrt(x2^2+y2^2+z2^2)。</p> <p> <strong>依定义有:cos〈a,b〉=a·b / |a|·|b|);若a、b共线,则a·b=+-∣a∣∣b∣。<br /> 其性质:<br /> 1)a</strong>·<strong>a</strong>=|<strong>a</strong>|的平方。 <br /> 2)<strong>a</strong>⊥<strong>b </strong>〈=〉<strong>a</strong>·<strong>b</strong>=0。 </p> <p> 于是文档和提问的相似度值由以下公式获得:<br /> <img src="//cto.wang/usr/uploads/2016/07/20160703170006-72.jpg" title="1428289457460782.jpg" alt="4.jpg" /> <img src="//cto.wang/usr/uploads/2016/07/20160703170006-13.jpg" title="1428289479576532.jpg" alt="4.jpg" /> </p> <p>理解Cosine相似性,可以讲每个文档以及查询看做t维特征空间的一个数值点。每个特征形成t维空间中的一个维度,链接特征空间原点和这个数值点形成一个向量,而Cosine相似性就是计算特征空间中两个向量之间的夹角。这个夹角越小,说明两个特征向量内容越相似。极端的情况就是两个完全相同的文档,其在向量空间中的两个向量是重叠的,Cosine相似性值为1.</p> <p> </p> <p>举例: </p> <p> 查询<strong><em>q</em></strong>:<strong>(<2006:1>,<</strong>世界杯<strong>:2>)</strong></p> <p> 文档<strong><em>d1</em></strong>:<strong>(<2006:1>,<</strong>世界杯<strong>:3>,<</strong>德国<strong>:1>,<</strong>举行<strong>:1>)</strong></p> <p> 文档<strong><em>d2</em></strong>:<strong>(<2002:1>,<</strong>世界杯<strong>:2>,<</strong>韩国<strong>:1>,<</strong>日本<strong>:1> <</strong>举行:<strong>1>)<br /> 倒排索引列表:<br /> <img src="//cto.wang/usr/uploads/2016/07/20160703170006-4.gif" title="1428289512634538.gif" alt="5.gif" /></strong></p> <p> 查询和文档进行向量的相似度计算:</p> <p> 采用内积</p> <p> 文档d1和q的内积:1*1+3*2=7</p> <p> 文档d2和q的内积:2*2=4</p> <p> 夹角余弦:</p> <p> 文档d1和q的夹角余弦:<img alt="" src="//cto.wang/usr/uploads/2016/07/20160703170006-72.png" width="54" height="28" style="border: none" /></p> <p> 文档d2和q的夹角余弦:<img alt="" src="//cto.wang/usr/uploads/2016/07/20160703170006-40.png" width="57" height="29" style="border: none" /></p> <p>优点:1) 简洁直观,可以应用到很多其他领域<strong>(</strong>文本分类、生物信息学<strong>),</strong>邮件过滤系统spamAssass。</p> <p> 3) 支持部分匹配和近似匹配,结果可以排序</p> <p> 4) 检索效果不错</p> <p>缺点:1) 计算量大</p> <p> 2) 单词的不同位置会代表不同的权重,而不同的关键词长度也会影响权重的大小<br /> 3) 单词之间的独立性假设与实际不符:实际上,<strong>单词</strong>的出现之间是有关系的,不是完全独立的。如:“王励勤”“乒乓球”的出现不是独立的。</p> <h2 class="headline-1 bk-sidecatalog-title"><span style="line-height: 36px;font-size: 22px">5. 概率模型</span></h2> <p><span style="font-family: 宋体">概率模型:<br /></span></p> <p><span style="font-family: 宋体"> 是目前效果最好的模型之一,okapi BM25这一经典概率模型计算公式已经在搜索引擎的网页排序中广泛使用。概率检索模型是从概率排序原理推导出来的。</span><span style="font-family: 宋体"> </span></p> <p><span style="font-family: 宋体">基本假设前提和理论:<br /> <strong>1).相关性独立原则:</strong>文献对一个检索式的相关性与文献集合中的其他文献是独立的。<br /> <strong>2).单词的独立性:</strong>单词和检索式中词与词之间是相互独立。即文档里出现的单词之间没有任何关联,任一单词在文档的分布概率不依赖其他单词是否出现<strong>。</strong><br /> <strong>3).文献相关性是二值的</strong>:即只有相关和不相关两种。<br /> <strong>4).概率排序原则:</strong>该原则认为,检索系统应将文档按照与查 询的概率相关性的大小排序,那么排在最前面的是最有可能被获取的文档<br /> <strong> 5).贝叶斯(Bayes)定理</strong>:用公式表示为:<br /> P(R|d)=(d|R)·P(R)/P(d)</span></p> <p><span style="font-family: 宋体">基本思想是:<br /></span></p> <p><span style="font-family: 宋体"> 是通过概率的方法将查询和文档联系起来,给定一个用户<strong>查询</strong>,如果搜索系统能够在搜索结果排序时按照文档和用户需求的相关性由高到底排序,那么这个搜索系统的准确性是最优的。在文档集合的基础上尽可能准确地对这种相关性进行估计就是其核心。</span></p> <p><span style="font-family: 宋体">相似度计算:<br /> 将查询Q和文档D根据有没有单词表示为二值向量,Q={q1,q2,…},D={d1,d2,…},di=0或1表示文献中没有或有第i个单词. 用R表示文献相关,<img alt="" src="//cto.wang/usr/uploads/2016/07/20160703170006-87.jpg" width="12" height="13" style="border: none" />表示文献不相关.<br /> 条件概率P(R|dj )表示文档 dj与查询qi相关的概率</span></p> <p><span style="font-family: 宋体"> 条件概率P(<img alt="" src="//cto.wang/usr/uploads/2016/07/20160703170006-87.jpg" width="12" height="13" style="border: none" />|dj)表示文档dj与查询qi不相关的概率</span></p> <p><span style="font-family: 宋体"> 利用它们的比值计算文档与查询的相似度。<br /> 若P(R|d)> P( <img alt="" src="//cto.wang/usr/uploads/2016/07/20160703170006-87.jpg" width="12" height="13" style="border: none" />|d),即比值大于1,则文献相关程度大于不相关程度,认为文献d是相关的,否则认为文献d不相关。在两者相等时,人为地认为它是不相关的。<br /></span></p> <p><span style="font-family: 宋体">优点:<br /> 1.采用严格的数学理论为依据,为人们提供了一种数学理论基础来进行检索决策;PubMed的related articles 。<br /> 2.采用相关反馈原理<br /> 3.在其中没有使用用户难以运用的布尔逻辑方法;<br /> 4.在操作过程中使用了词的依赖性和相互关系。<br />缺点:<br /> 1.计算复杂度大,不适合大型网络<br /> 2.参数估计难度较大<br /> 3.条件概率值难估计<br /> 4.系统的检索性能提高不明显,需与其他检索模型结合<br /></span></p> <h2 class="headline-1 bk-sidecatalog-title"><span style="font-size: 14px"><span style="line-height: 36px;font-size: 22px">6. 语言模型</span></span></h2> <p><span style="font-family: 宋体">语言模型:<br /> 是借鉴了语音识别领域采用的语言模型技术,将语言模型和信息检索模型相互融合的结果<br />基本思想:<br /> 其他的检索模型的思考路径是从<strong>查询</strong>到文档,即给定用户<strong>查询</strong>,如何找出相关的文档,该模型的思路正好想法,是由文档到<strong>查询</strong>这个方向,即为每个文档建立不同的语言模型,判断由文档生成用户<strong>查询</strong>的可能性有多大,然后按照这种生成概率由高到低排序,作为搜索结果。语言模型代表了单词或者单词序列在文档中的分布情况;</span></p> <p><span style="font-family: 宋体"></span></p> <h2 class="headline-1 bk-sidecatalog-title"><span style="font-size: 14px"><span style="line-height: 36px;font-size: 22px">7. 机器学习排序算法</span></span></h2> <p><span style="font-family: 宋体">机器学习排序算法:<br /> 随着搜索引擎的发展,对于某个网页进行排序需要考虑的因素越来越多,这是无法根据人工经验完成的,这时候用机器学习就是非常合适的,例如Google目前的网页排序公式考虑了200多种因子。机器学习需要的数据源在搜索引擎中较好满足,例如用户的搜索点击记录。其分成人工标注训练、文档特征抽取、学习分类函数以及在实际搜索系统中采用机器学习模型等4个步骤组成。人工标注训练可由用户点击记录来模拟人为对文档相关打分的机制。</span></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信