三种平滑方法

为了理解《LETOR: A benchmark collection for research on learning to rank for information retrieval》中提出的数据特征中的三个:LMIR.ABS、LMIR.DIR、LMIR.JM的计算方法,我查阅了很多资料。前面一篇博客是理解。这一篇也是。这篇博客的内容来自《A Study of Smoothing Methods for Language Models Applied to Ad Hoc Information Retrieval》。一作翟成祥,我曾经学过老师的文本检索课程。这篇文章主要写下自己的感受和学习到的。

1 论文目的

这篇论文的目的是研究平滑方法在信息检索中的作用。信息检索方法很多,这里评估的是使用语言模型建立query和文档相似度计算实现排序的信息检索方法。基于语言模型计算相似度的排序算法对平滑算法有多敏感?平滑算法的参数又该怎么选择?

2 语言建模方法

2.1 基础

我们假设一个query是根据一个语言模型基于document 生成的。
我们的目的是评估estimate p ( d ∣ q ) p(d|q) p(dq)的大小。 p ( d ∣ q ) p(d|q) p(dq)解释为d产生观测q的概率。
根据贝叶斯公式: p ( d ∣ q ) ∝ p ( q ∣ d ) p ( d ) p(d|q)\propto p(q|d)p(d) p(dq)p(qd)p(d)
假设p(d)服从均匀分布,对结果不产生影响,所以 p ( d ∣ q ) ∝ p ( q ∣ d ) p(d|q)\propto p(q|d) p(dq)p(qd)
当然p(d)也可以用一些非文本特征,例如文档长度、链接数量作为文档特征参与排序。在当前文档中认为是均匀分布。

2.2 可见词与不可见词

进一步 p ( q ∣ d ) = ∏ i p ( q i ∣ d ) p(q|d) = \prod_ip(q_i|d) p(qd)=ip(qid),在本文档中使用一元语言模型(unigram language model )建模。对于二元、三元语言模型建模方法参考:[10]D. H. Miller, T. Leek, and R. Schwartz (1999). "A hidden Markov model information retrieval system,In Proceedings of the 1999 ACM SIGIR Conference on Research and Development in Information Retrieval^ pp. 214-221. [20]F. Song and B. Croft (1999). “A general language model for information retrieval,” in Proceedings of the 1999 ACM SIGIR Conference on Research and Development in Information Retrieval^ pp. 279-280.

语言模型评估可能性的方式与TD-IDF是不同的,但有趣的是通过平滑方法可以在两者之间建立一种相似性。

一般平滑方法都会分成2个分布: p s ( w ∣ d ) p_s(w|d) ps(wd)表示可见词的分布, p u ( w ∣ d ) p_u(w|d) pu(wd)表示不可见词的分布。公式改写为如下:

l o g p ( q ∣ d ) = ∑ i l o g p ( q i ∣ d ) = ∑ i ; c ( q i ; d ) > 0 l o g p s ( q i ∣ d ) + ∑ i ; c ( q i ; d ) = 0 l o g p u ( q i ∣ d ) = ∑ i ; c ( q i ; d ) > 0 l o g p s ( q i ∣ d ) p u ( q i ∣ d ) + ∑ i l o g p u ( q i ∣ d ) logp(q|d)=\sum_ilogp(q_i|d)\\ =\sum_{i;c(q_i;d)>0}logp_s(q_i|d)+\sum_{i;c(q_i;d)=0}logp_u(q_i|d)\\ =\sum_{i;c(q_i;d)>0}log\dfrac{p_s(q_i|d)}{p_u(q_i|d)} +\sum_ilogp_u(q_i|d) logp(qd)=ilogp(qid)=i;c(qi;d)>0logps(qid)+i;c(qi;d)=0logpu(qid)=i;c(qi;d)>0logpu(qid)ps(qid)+ilogpu(qid)

在这里有个注意的点。不可见词指的是在当前文档中不存在的词。例如query=“计算机 散热”,当前文档中没有“散热”这个词,但是整体的语料库中是有"散热"这个词的。这样“散热”就是不可见单词。如果整个训练语料中都没有“散热”这个词,那这个词就不参与计算。

最后两部的等价过程是这样的:倒数第一步:第一部分是所有可见词的可见概率对数加和,第二部分是所有不可见词的不可见概率对数加和。
最后一步的第二部分是:所有词的不可见概率对数和。对加了可见词的不可见概率对数和,需要在第一部分减去,就是 ∑ i ; c ( q i ; d ) > 0 l o g p s ( q i ∣ d ) p u ( q i ∣ d ) \sum_{i;c(q_i;d)>0}log\dfrac{p_s(q_i|d)}{p_u(q_i|d)} i;c(qi;d)>0logpu(qid)ps(qid)了。

2.3 引入常量

我们再进一步假设 p u ( q i ∣ d ) = α d p ( q i ∣ C ) p_u(q_i|d)=\alpha_dp(q_i|C) pu(qid)=αdp(qiC) α d \alpha_d αd是一个与文档相关的常数。 p ( q i ∣ C ) p(q_i|C) p(qiC)是一个集合语言模型(collection language model)。这里的C应该是整个训练语料库中的词总数。到此,我们有:
l o g p ( q ∣ d ) = ∑ i ; c ( q i ; d ) > 0 l o g p s ( q i ∣ d ) α d p ( q i ∣ C ) + n l o g α d + ∑ i l o g p ( q i ∣ C ) logp(q|d)=\sum_{i;c(q_i;d)>0}log\dfrac{p_s(q_i|d)}{\alpha_dp(q_i|C)} +nlog\alpha_d+\sum_ilogp(q_i|C) logp(qd)=i;c(qi;d)>0logαdp(qiC)ps(qid)+nlogαd+ilogp(qiC)
n:查询的长度(query中词的个数)

现在这个公式分成两个部分。第一部分是权重,衡量每个词在query-document之间的权重。第二部分是只涉及到当前文档的常数,它与有多少概率分配给不可见词相关。 q i q_i qi的参数 p s ( q i ∣ d ) α d p ( q i ∣ C ) \dfrac{p_s(q_i|d)}{\alpha_dp(q_i|C)} αdp(qiC)ps(qid)与词频成正比,与语料库中的词频成反比。 p ( q i ∣ C ) p(q_i|C) p(qiC)起到了类似于IDF的作用。第二部分我们可以认为它起到了类似于文档长度正则化的作用。

3 平滑方法

p m l ( w ∣ d ) = c ( w ; d ) ∑ w c ( w ; d ) p_{ml}(w|d)=\dfrac{c(w;d)}{\sum_wc(w;d)} pml(wd)=wc(w;d)c(w;d)c(w;d)是指w在d中的出现次数

基于复杂度以及有效性,作者选择了三种平滑方法:Jelinek-Merce、Dirichlet、Absolute discount。根据这三种计算得到的语言模型也是我需要的三个特征。

3.1 Jelinek-Merce

p s ( w ∣ d ) = ( 1 − λ ) p m l ( w ∣ d ) + λ p ( w ∣ C ) p_s(w|d)=(1-\lambda)p_{ml}(w|d)+\lambda p(w|C) ps(wd)=(1λ)pml(wd)+λp(wC)
α d = λ \alpha_d=\lambda αd=λ

3.2 Dirichlet

p s ( w ∣ d ) = c ( w ; d ) + μ p ( w ∣ C ) ∑ w c ( w ; d ) + μ p_s(w|d)=\dfrac{c(w;d)+\mu p(w|C)}{\sum_wc(w;d)+\mu} ps(wd)=wc(w;d)+μc(w;d)+μp(wC)

α d = μ ∑ w c ( w ; d ) + μ \alpha_d=\dfrac{\mu}{\sum_wc(w;d)+\mu} αd=wc(w;d)+μμ

3.3 Absolute discount

p s ( w ∣ d ) = m a x ( c ( w ; d ) − δ , 0 ) ∑ w c ( w ; d ) + δ ∣ d ∣ u ∣ d ∣ p ( w ∣ C ) p_s(w|d)=\dfrac{max(c(w;d)-\delta,0)}{\sum_wc(w;d)}+\dfrac{\delta|d|_u}{|d|}p(w|C) ps(wd)=wc(w;d)max(c(w;d)δ,0)+dδdup(wC)

α d = δ ∣ d ∣ u ∣ d ∣ \alpha_d=\dfrac{\delta|d|_u}{|d|} αd=dδdu

∣ d ∣ |d| d表示文档中的词的总量。
∣ d ∣ u |d|_u du表示文档中不同词的个数。

4 试验以及结果

作者测试了不同长度的搜索词,在不同平滑方法上的效果。得到如下结论:
1 搜索效果对平滑敏感
2 Jelinek-Mercer表现相对来说会好一些,但是仅对于长的,详细的查询。对于长query,lambda可以等于0.7;对于短query,lambda等于0.1
3 Dirichlet prior 在短查询上来说表现比较好 μ的值一般在2000。 query越长,μ值越大。
4 Absolute discount在短查询上表现比较好,在长的详细的查询上表现不好。 δ \delta δ的值一般在0.7左右。
5 插值平滑策略效果要比backoff策略好。

平滑方法在语言相似度模型中可能有2个作用。一个是提高模型的准确率;第二个是降低非信息词的重要性。Dirichlet prior 在第一个作用中表现的很好,Jelinek-Mercer在第二个作用中表现很好。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值