文本获取和搜索引擎的几率模型

coursera课程 text retrieval and search engine 第四周 推荐。算法

几率模型

根据现有搜集的数据作估算,假设一个文档被用户看到了,若是文档被用户点击进去,那么认为是相关的,不然不相关[只认为相关和不相关],那么在特定的查询状况下,即可获得这种点击比例。app

没法处理用户没有看过的文档以及没有过的查询函数

几率模型的核心思想就是,假设当前文档是某个用户想要的,那么这其中有多大的几率代表这个查询是来自于此特定用户,即

p(R=1|d,q)\approx p(q|d,R=1)

条件成立是基于一个假设:用户的查询是用户自身基于某个类似文档而写下的查询关键字.net

Statistical Language Model(LM)

用来描述某个句子造成某种特定序列可能行,好比“Today is Wednesday”,和句子 “Today Wednesday is”这二者的顺序各有一种可能性。这种计算方式,很明显的是它依赖于当前语句的,用处在于处理天然语言中的不肯定性,好比要知道某个句子“Today is”下一个单词是”Wednesday”的几率。这种模型最简单的状况就是 Unigram LM3d

Unigram LM

假设全部单词都是互相独立的,那么单个句子成立的几率就是每一个单词出现的几率。 就统计来讲,我存在一个文档库,能够统计每一个单词出现的次数,一定会出现一个排列cdn

而对另外一语更具体的文档库,可能会存在另外一排列

于是根据不一样的文档库,能够统计出不一样的单词排列,这样就能够生成文档主题;类似的,对于相关性而言,好比个人当前文档库是全部包含”computer”的文档库,那么能够计算出
另外对于全部的文档库而言,都会有一些公共的经常使用的词库,为提高辨识度,须要去掉,能够采用几率除法,来突出当前文档库的相关单词几率

使用Unigram LM 可能性查询

给定一个查询,根据Unigram LM的规则,它能够被拆分红单个单词的几率乘积blog

于是能够对不一样的文档作几率排列,可是若是当前词没有出如今文档里面,它的几率确定是0

update 没有出现排序

能够看出这样计算也存在问题,它是根据文档中包含查询语句的方式来计算的;反过来想,用户的全部可能输入当作一个文档库,那么他也会有一个相对的排序,因此也会出现一个单词排列,而这些排列中的单词颇有可能不在须要查询到文档库中。所以为解决这些问题,能够在计算几率上加上log运算函数,改为加法便能获得解决文档

能转换成全部的单词是由于当全部单词在查询语句中没有的时候,其实就是0,等价于在查询语句中的有的状况it

平滑处理

通过log处理后,几率计算方式最关键的在于计算如何计算全部单词在文档中出现的几率,通常来讲,这是一个”阶梯”函数

已知的是,当前函数没有处理到文档中没有的单词,为了处理没有的状况,能够加上平滑处理,即对于没有出如今当前文档中的单词,这个单词会出如今与当前文档相关的文档中【好比引用文档】,这个时候整个文档库的几率计算方式变成

这里的C指的是与当前文档库相关的集合,或者换句话说,等价于整个文档库,只不过会有一个因子决定不一样文档库的权重

此时计算方式变成

|q|等价于整个文档库中的单词在查询语句中出现的次数,也就是查询语句自己所包含的单词的数量

函数重写后,对于排序来说,最后一部分,全部的文档算出来的值都是同样,因此能够忽略【针对全部的文档库计算的】,对于中间的部分,能够看到相对长的查询有一个基于因子的log算法,某种程度上是对长度的一种惩罚,越长能够选择较大的因子,而对于第一部分来说,能够看到,可见的文档的单词几率则相似于TF,不可见的文档部分则至关于IDF的做用[在非当前文档中出现的几率越大,做用反而越小]

计算 P(q|d)的方式[几率计算方式]

  1. Jelinek-Mercer smoothing.
  2. Dirichlet Prior, or Bayesian, Smoothing.

与VSM比较

VSM经过计算查询与文档之间的类似性,经过点积来计算大小并归一化以后来做为排序依据; 几率模型是统计总的次数做为几率预估[有通用的文档库计算,以及具体的文档库],最简单的方式是给全部的单词几率作乘积来作排序计算

相关文章
相关标签/搜索