尊重知识产权
[Rank教程](http://www.bdpt.net/cn/2018/11/03/rank教程-01-概述/)
用户提出问题Query
,然后检索算法检索出最相关的结果,并且对结果进行排序,这个排序的过程就是Rank
过程。它是信息检索(infornation retrieval)
和自然语言处理NLP
处理的很核心的一个内容。
一个典型的信息检索过程:
用户问题q
,然后输入一堆文档D
,检索系统去检索哪些文档与问题相关,然后在排个序。
实际应用:
- QA问答
- 在线广告:广告排序
- 个性化搜索
Rank方法发展到现在主要有五大类方法:- 布尔模型(
Boolean Model
) - 空间向量模型(
Vector Space Model
) - 概率检索模型(
Probabilistic Retrieval Model
):主要分为二元独立模型,BM25
,BM25F
- 语言模型(
Language Model
) - 机器学习模型(
Learning to Rank
):
主要分为:-
Rank Creation
-
Rank Aggregation
-
- 布尔模型(
这里我们会重点记录 Learning to Rank
.
常见指标:
精确率和召回率:
- Precision=N/(N + M)
- Recall=N/(N+K)
P@n指标
:关注搜索结果排名最靠前文档的结果质量
头十个文档中包含了五个文档,所以精度为0.5
MAP
指标(Mean Average Precision
)
AP(Average Precision): 针对单个查询
图中有3个相关文档,排在了第2,4,6位,如上计算
理想情况是1,2,3位
(1/1+2/2+3/3)/3=1
对多组查询,每个查询AP
相加求平均值,就是MAP
形式化表示:注意y只有0,1
两个取值,表示相关或者不相关
分母是相关文档数目,分子是到某个位置,看看其中相关文档所占数目,累加所有和即可,就是上图的计算方式
A
P
=
∑
j
=
1
n
i
P
(
j
)
⋅
y
i
,
j
∑
j
=
1
n
i
y
i
,
j
A P=\frac{\sum_{j=1}^{n_{i}} P(j) \cdot y_{i, j}}{\sum_{j=1}^{n_{i}} y_{i, j}}
AP=∑j=1niyi,j∑j=1niP(j)⋅yi,j
Mean reciprocal rank (MRR):
reciprocal rank
是指,第一个正确答案的排名的倒数。MRR
是指多个查询语句的排名倒数的均值。公式如下:
M
R
R
=
1
∣
Q
∣
∑
i
=
1
∣
Q
∣
1
r
a
n
k
i
M R R=\frac{1}{|Q|} \sum_{i=1}^{|Q|} \frac{1}{r a n k_{i}}
MRR=∣Q∣1∑i=1∣Q∣ranki1
其中ranki
表示第i个查询语句的第一个正确答案的排名。
LTR for Ranking Creation
单文档方法(PointWise Approach)
简单说就是一个查询q
和一个文档a
可以得到输入特征x
,以及输出label y
,用机器学习方法学习模型,当给定q
和a
时,我们得到相应输入特征x
,输入给模型,得到结果y
,然后根据结果y
进行排序,这就是PointWise
方法。实际上就是把Rank
问题转化成了分类问题。
文档对方法(PairWise Approach):
简单说就是根据一个查询q
和两个文档o1,o2
,得到输入特征x1
和x2
,以及对应label y1-y2
的值,然后用机器学习方法学习模型,当给定一个q
和多个文档时 ,我们可以得q
的每个文档pair
对之间的rank
关系,基于这些rank
关系我们对结果进行排序。
文档列表方法(ListWise Approach)
简单说就是根据一个查询q
和相应的所有文档O
,每个q
和o
对都会有特征x
,以及label y
,我们训练一个模型,该模型可以给定一q
和o
对应的特征x
,可以给出y
值(分数值),有了y
值,我们可以计算出不同排列组合的概率分布,如果模型给出的不同排列组合概率分布和最优结果概率分布相似,则学习到的模型是最佳模型。当给定一个新的查询q
和所有文档时,我们就可以算出每个文档分数,然后按分数进行对文档进行排序。