文档排序模型--查询似然Query Likelihood

来源:互联网 发布:simg2img linux 编辑:程序博客网 时间:2024/06/06 18:03

 在概率模型中,我们定义排序函数是基于文档与查询之间的相关度、可能性来做的。f(d,q) = p(R=1|d,q), R {0,1}。概率模型有几个小分类:
  经典概率模型——>BM25
  语言模型Language Model —–>Query Likelihood
  Divergence from randomness—–>PL2
  

1 查询似然算法

 语言模型的假设是:p(R=1|q,d)p(q|d,R=1),文档与查询相关的概率约等于 在文档相关的前提下,用户输入q的概率。

1.1 概率模型的基本概念

 给定下面这个表格,收集了不同用户基于不同query,认为文档是否相似。
 f(q,d)=p(R=1|q,d)=count(q,d,R=1)count(q,d)
 例如p(R=1|q1,d1) = 1/2;p(R=1|q1,d2)=2/2….

 这里写图片描述
 这里的问题是对于不在表格中的查询,不在表格中的文档怎么处理?

1.2 查询似然算法

 解决上述问题,我们换个角度计算一下上面那个表格中,在文档d1相关的前提下,用户输入q1的概率是多少。如果概率越高则q1与d1的相关度就越高。
 需要提出一个假设:用户输入的查询词是基于想象的相关文档。

2 统计语言模型LM

2.1 LM的概念

 语言模型LM是一个基于单词序列的概率分布。
  p(“Today is Wednesday”) 0.001
  p(“Today Wednesday is”) 0.0000000000001
 同样的3个词,概率相差很大。这说明语言模型是基于上下文的。这个模型也可以理解为生成一个文本的概率。所以又被称为生成模型generating model。这是一种可以生成单词的随机系统。

2.2 LM为什么有效

 1 LM量化了自然语言的不确定性。
 2 能够解决以下问题
  speech recognition:已经看到单词“John” , “feels”,那继续看到的单词更可能是“happy”而不是”habit”。
  text categorization, information retrieval:一篇新闻文章中提到三次”baseball”,一次”game”,这篇文章是新闻的概率。
  information retrieval:已知一个用户喜欢体育,那他输入”baseball”的概率是多大。

2.3 最简单的语言模型:一元模型

 一元模型在生成文本的时候词与词之间是独立的:p(w1,w2...,wn)=p(w1)p(w2)...p(wn)。这里有n个参数p(w1)p(w2)…。生成的文本就是简单的从词的概率分布中抽取词汇。例如p("TodayisWend")=p("Today")p("is")p("Wend")
 
 这里写图片描述

 我们可以使用Topic1的词分布产生一篇 关于Text mining的文章。我们可以使用Topic2的词分布产生一篇关于 Food nurtrition的文章。当然我们也可以用Topic1的词分布产生一篇关于 Food nurtrition的文章,但这样的事情概率很低。这是依据词分布生成文章。
 接着我们换个角度。如果现在有一篇文档(已知文章的词的总量,每个词的词频),现在推测哪种词模型可能产生这样一篇文档,假设文章是由分布中的词汇组装而成的。
 p(text)=? p(mining)=?…..
 一种很直接的想法是用词频/词的总数:p(text)=10100p(mining)=5100…..
 这种方法被称为极大似然估计(Maximum Likelyhood Estimator ):p(w|θ)=p(w|d)=c(w,d)|d|
 对于没有出现在文档中的词,p(w|d)=0。 
 
 这里写图片描述

一元模型的用途。
用途1:表示不同的主题。这里涉及到通用模型,集合模型,文档模型。

用途2:做词的关联分析。从语义上来讲,哪些词和”computer”最接近?第一步,我们从包含”computer”的文档中得到每次的极大似然估计概率,将概率从大到小排序;第二步,我们找到这些词中有很多是通用词库的词,与”computer”无关,我们可以使用通用词库,得到通用词库每个词的极大似然估计概率。第三步,使用者两个模型,得到的词就是与”computer”相关的词。例如我们可以使用通用模型词的概率将第一步得到的概率normalize(规则化):p(w|"computer")p(w|B)

 

3 极大似然函数与一元模型

3.1 基本模型

 在统计语言模型中,我们提出:如果用户想要查找的是文档d,那用户有多大可能性提出这个特殊的查询
 例如文档d=”… news of presidential campaign … presidential candidate …”
 p(q=presidentialcampaign|d)=?
 
 现在,我们假设用户以此文档为基准,来提出一个查询,并且查询该文档。使用一元模型的极大似然思想:p(q=presidentialcampaign|d)=p("presidential"|d)p("campaign"|d)=c("presidential",d)|d|c("campaign",d)|d| (一元模型,就假设了查询中每个单词的产生是相互独立的)

3.2 升级版模型

 如果q = “presidential campaign update”,每个文档中都没有”update”这个词,概率p=0,这个时候就出现问题了。
 

 问题出在,如果假设用户查询的词都出在某一个文档(a document),但实际上用户是看过很多文档,他查询的词更可能出在于一个文档模型(a document model)。
 
 这里写图片描述

 从图中可以看出从文档模型产生文档,从文档模型产生查询。
 这样的模型该怎么计算呢?分两个步骤:1、计算文档模型(Document Language Model);2、计算每个词在文档模型中概率的乘积。
 q=w1w2...wn
 p(q|d)=p(w1|d)p(w2|d)....p(wn|d)
 f(q,d)=logp(q|d)=ni=1logp(wi|d)=WVlogp(w|d)
 我的问题:增强版与简单版本的思想从字面上的区别看从“文档” 变成了“文档语言模型”。我最开始的想法是“文档语言模型”是由很多文档组成的一个文档集,但是看老师的ppt又认为不是这么回事。我需要再找资料查明什么是文档语言模型。

3.3 p(w|d)=?

 对于p(w|d)不同的估计方法会形成不同的不同的排序函数。
 第一种估计方法是极大似然估计。pML(w|d)=c(w,d)|d|
 对于没有出现在文旦中的词,我们需要平滑技术,为那些没有出现在文档中的词给一个概率。
 一种解决方法是从一个引用语言模型查询出一个概率。这个引用语言模型可以是Collection Language Model.
 这里写图片描述

最后得到的排序函数是:
f(q,d)=log(p|d)=wiq,wid[c(wi,q)logpseen(wi|d)αdp(wi,C)]+nlogαd+ni=1logp(wi|C)
这是公式是经过变形的,为了方便计算得到的。同时,这个公式也更像TF-IDF得到的计算公式。
这里写图片描述

 pseen(wi|d)扮演了类似TF的角色。
 p(wi,C),在分母上,更像是IDF。
 αd类似于文档长度因子。它表示究竟想给未见过的单词多大的概率。如果文档本身很长,可能给的概率就会小一些;如果文档本身很短,给的概率就会大一些。
 

3.4 平滑方法

 pseen(wi|d)=?
 αd=?
 上面的公式留下了两个问题。

3.4.1 线性插入法

 Linear Interpolation (Jelinek-Mercer) Smoothing:固定系数
 结合极大似然算法:
 p(w|d)=(1λ)c(w,d)|d|+\lambdap(w|C)λ[0,1]
 αd=λ
 fJM(q,d)=Wq,Wdc(w,q)log[1+1λλc(w,d)|d|p(w|C)]

3.4.2 狄利克雷

 Dirichlet Prior (Bayesian) Smoothing 动态系数修改,添加伪计数
 这里写图片描述
 αd=μ|d|+μ
 fDIR(q,d)=[Wq,Wdc(w,q)log[1+c(w,d)μp(w|C)]]+nlogμμ+|d|

 按照查询似然的方式得到了和VSM类似的结果。不同的解决思路,过程中需要增加填补的方式也不同。
 查询似然->一元语言模型->文档语言模型->平滑
 位向量->词频->TF-IDF->TF变形->惩罚长文档

原创粉丝点击