前言
搜索引擎采用检索模型决定网页内容与用户查询的相关性情况。
et. 布尔模型、向量空间模型、概率模型、语言模型、机器学习排序算法
搜索引擎发挥着计算用户需求与文档内容相关性作用
好的搜索引擎会在排序结果中提升第一象限和第二象限文档排名、抑制第三、四象限文档排名
1.布尔模型(Boolean Model)
-利用布尔表达式判定文档与搜索词相关性
2.向量空间模型(Vector Space Model)
-用若干特征表征文档和查询,并表示为一个超平面内的一个向量。通过计算查询向量与文档向量夹角来表示相关性大小
2.1 文档表示
用一个t维的向量描述每个文档,特征可以是(单词、词组、N-gram片段等)
et.
2.2 相似性计算
-用户查询向量和文档向量的相关性计算,cosin相关性计算公式如下:
分子:两个向量的点积
分母:两个特征向量在欧式空间长度的乘积
出现分母的原因:消除长短文章对相关性的影响
相关项的几何表述如下图所示,夹角越小,相关项越大。
计算D4 D5 的相似性:
2.3 特征权重计算
-向量空间模型里,特征权值计算一般称为:Tf*IDF框架
- 词频因子(Tf)
单词在文档中出现的次数
一种变体计算公式:加入log抑制 出现10次的单词权值是出现1词单词的10倍 这有些不合理
另一种变体计算公式:增强规范化Tf, a为调节因子, MAX(Tf)文档中所有单词中出现次数最多的那个单词对应词频,这样可以抑制长文档tf比短文档大
- 逆文档频率因子(IDF)
-表述特征单词之间的相对重要性(描述单词区分度的因子)
N-总共文档数
nk-单词k在多少个文档中出现
- Tf*IDF框架
上述公式计算得到的特征值越大,越可能是好的指示词,偏向将 词频高+区分度高的单词的权重高
3.概率检索模型
3.1 概率排序原理
思路:
- 给定一个用户查询
- 文档与用户需求的相关性建立模型
- 将文档划分为相关性文档和不相关文档,于是将这种相关衡量转换为一个分类
对于某个文档D,p(R|D) 代表一个文档对应的相关性的概率、p(NR|D)代表一个文档对应的不相关的概率
p(R|D)>p(NR|D) 则判定文档与用户查询相关
利用贝叶斯公式:
相关=>
=>
虽然是一个二值分类问题,但是并不需要进行真正的分类,而是由高到低进行排序就行,
问题转换为:评估因子P(D|R) 和 P(D|NR)
3.2 二元独立模型(Binary Independent Model)
-BIM模型,两个假设
- 二元假设
一篇文章由特征进行表示时候,以特征 出现、不出现 两种情况表示,不考虑词频等其他因素
比如:特征集合为5个单词,某个文档D的二元假设:{10101}
- 词汇独立性假设
单词没有任何内联关系,因此可以将文档概率转换为单词概率的乘积
那么上述文档{10101}的概率可以表示为:
P(D|R) = p1*(1-p2)*p3*(1-p4)*p5
上述公式的含义是:在相关性文档集合中命中文档D的概率是:单词1在相关性集合中出现的概率*单词2不在文档集合中出现的概率 ....(注意:这里的不在文档集合中出现的概率并不代表着在不相关文档集合中出现的概率,因为也包含在二者都不出现的概率)
同理:
P(D|NR) = s1*(1-s2)*s3*(1-s4)*s5
上述公式的含义是:在不相关文档集合中命中文档D的概率:单词1在不相关集合中出现概率*单词2不在文档集合中出现的概率....
公式推导:
=>=>
:代表在文档D出现过的各个单词的概率乘积(当然是以相关文档和不相关文档的身份都算)
:代表在文档D没有出现过的各个单词的概率乘积
=>
说明:
第一部分:文档中出现过得的单词计算得到的单词概率
第二部分:所有特征单词计算得到的单词概率(所有文档),所以这一部分是一个固定值
=>
=>
到此就得到了相关性的计算方法,剩下的问题就是计算pi和si。
看下表:
这个计算表困惑了挺长时间的,下面是我的理解
di = 1 代表某个单词di出现
di = 0 代表某个单词di不出现
ri:相关文档中出现di单词的个数
ni:不相关文档中出现di单词的个数
其他就都好理解了
那么 pi = ri/R si = (ni-ri)/(N-R)
为了避免log(0)的出现,做了加入特殊值的处理
=>
i:qi=di=1 含义是同时出现在用户查询Q和文档D中的单词,累加这些单词的估值,得到查询Q和文档Q相关性度量。
这样估算的前提:知道哪些文档是相关文档、哪些文档是不相关文档
3.3 BM25模型
-二元假设推导对于单词的特征只考虑了是否在文档中出现,没考虑单词的权值,BM25考虑了单词权值
查询Q中出现的每个查询词,依次统计单词在文档D中的分值,累加后得到文档D与查询Q的相关性得分
fi 代表单词在文档D中的词频
k1和K是经验参数(K中 dl代表文档D的长度,avdl是文档集合中所有文档的平均长度,b为调节因子)
qfi 查询词在用户查询中的词频
k2 经验参数
BM25融合了4个考虑因子,IDF因子、文档长度因子、文档词频因子、查询词频因子
et:
查询语句: 乔布斯 ipad
由于初始情况不知道相关文档情况,所以假设R,ri为0(相关文档)
第一部分:
这就是一个典型的IDF因子(单词对文档的区分度反应因子)
文档集合总数:N = 10000
文档集合中包含查询词的个数:N乔布斯=1000, Nipad=100
文档D中包含查询词的个数:f乔布斯=8,fipad = 5
调节因子:k1 = 1.2 k2 = 200 b = 0.75
dl/avdl 文档长度/平均文档长度: = 1.5
带入公式,就可以得到:
对于文档集合中所有文档进行上述处理,排序后就可以得到最终搜索内容的查询结果。
3.4 BM25F模型
-在BM25基础上进行改进,将粒度更细分化,文章划分为不同的域,区分对待。et:网页划分为标题、meta描述信息、页面内容等,不同的域的权重不同。
:第i个单词出现在不同域的得分
:域的长度因素
:每个域的权重
:第u个域出现的词频数
:域的实际长度
:文档集合中这个域的平均长度
:调节因子
3.5 语言模型方法
-从文档出发,为每个文档建立不同的语言模型,判断由文档生成用户查询的可能性多大
思路:
- 用户提交查询Q
- 文档集合中所有文档计算生成Q的概率
- 生成的概率由大到小排序
注意:
一种常见的一元语言模型,每个单词抽取概率的分布情况就是一元语言模型,会存在如下问题:
会存在某些单词生成概率为0导致整个查询整体的生成概率为0
这就是数据稀疏问题,一种解决方案就是从文档中出现过的单词的分布概率中取出一部分,分配给文档中没有出现过的单词中,也就是背景概率
上述概率计算公式就是加入背景概率后的查询概率计算公式,添加了一部分文档集合语言模型的部分。
补充:HMM隐马尔科夫语言模型、相关模型、翻译模型等诸多改进模型都是对该基础模型的改进。
3.5 机器学习排序(Learning to Rank)
3.5.1 机器学习排序的基本思路
-传统检索模型靠人工拟合排序公式,机器学习排序分为
- 人工标注训练数据(标注文档与查询词的相关性,可利用用户点击记录来模拟表述减小工作量)
- 文档特征抽取
- 学习分类函数(通过样本,确定打分函数,用若干个特征表示文档)
- 文档中包含查询词的词频tf
- 查询词逆文档频率IDF
- 文档长度
- 网页入链长度
- 网页出链长度
- 网页的pageRank值
- 网页的url长度
- 查询词的Proximity值:文档中多大的窗口内科出现所有查询词
- 实际搜索系统中采用机器学习模型
目前的研究方法来说,将机器学习排序方法分为:
- 单文档方法
- 文档对方法
- 文档列表方法
3.5.2 单文档方法(PointWise Approach)
-单独一个文档转换为向量后,机器学习系统根据分类/回归函数对文档打分,打分结果既搜索结果
3.5.3 文档对方法(PairWise Approach)
-单文档方法只考虑了相关性与否,未考虑文档之间的顺序关系。文档对方法需要两两文档凑对,判定二者相关性优先级。
et : SVM、Boost、神经网络等
3.5.4 文档列表方法(ListWise Approach)
-根据k个训练实例(一个查询既对应的所有搜索结果评分作为一个实例)得到左右评分函数F,依据这个评分函数,对诶个文档打分,按照得分顺序进行排序。
- 下图展示了一个训练实例
2.找到这样一个函数,对Q1的搜多结果打分排序,做到和人工打分排序尽可能相同。
et.上图得到了两个计算函数f、h,评估搜索结果排序组合的概率分布,与训练实例对比找到相似性虽高的计算函数f作为搜索时的评分函数。
事实上我们有若干个训练实例。
3.6 检索质量评价标准
3.6.1 精确率与召回率
-精确率,召回率
上图为检索结果与搜索相关性的文档分布
搜索结果中与查询有关的文档数:N
搜索结果中与查询无关的文档树:M
不在搜索结果中与查询有关的文档数:K
不在搜索结果中与查询无关的文档数:L
精确率:N/(N+M)
召回率:N/(N+K)
3.6.2 P@10指标
-关注搜索结果排名最靠前文档的结果质量
3.6.3 MAP指标(Mean Average Precision)
MAP:多次查询检索质量
AP:单次查询检索质量
et:当前检索结果中有3个与用户相关的文档,分别在2、4、6位置,但是理想位置是1、2、3
所以 AP = mean(1/2+2/4+3/6) --理想位置/实际位置 的均值
MAP:就是在AP的基础上对多次查询的ap求均值。