coursera课程 text retrieval and search engine 第四周 推荐。算法
根据现有搜集的数据作估算,假设一个文档被用户看到了,若是文档被用户点击进去,那么认为是相关的,不然不相关[只认为相关和不相关],那么在特定的查询状况下,即可获得这种点击比例。app
没法处理用户没有看过的文档以及没有过的查询函数
条件成立是基于一个假设:用户的查询是用户自身基于某个类似文档而写下的查询关键字.net
用来描述某个句子造成某种特定序列可能行,好比“Today is Wednesday”,和句子 “Today Wednesday is”这二者的顺序各有一种可能性。这种计算方式,很明显的是它依赖于当前语句的,用处在于处理天然语言中的不肯定性,好比要知道某个句子“Today is”下一个单词是”Wednesday”的几率。这种模型最简单的状况就是 Unigram LM3d
假设全部单词都是互相独立的,那么单个句子成立的几率就是每一个单词出现的几率。 就统计来讲,我存在一个文档库,能够统计每一个单词出现的次数,一定会出现一个排列cdn
给定一个查询,根据Unigram LM的规则,它能够被拆分红单个单词的几率乘积blog
update 没有出现排序
能够看出这样计算也存在问题,它是根据文档中包含查询语句的方式来计算的;反过来想,用户的全部可能输入当作一个文档库,那么他也会有一个相对的排序,因此也会出现一个单词排列,而这些排列中的单词颇有可能不在须要查询到文档库中。所以为解决这些问题,能够在计算几率上加上log运算函数,改为加法便能获得解决文档
能转换成全部的单词是由于当全部单词在查询语句中没有的时候,其实就是0,等价于在查询语句中的有的状况it
通过log处理后,几率计算方式最关键的在于计算如何计算全部单词在文档中出现的几率,通常来讲,这是一个”阶梯”函数
这里的C指的是与当前文档库相关的集合,或者换句话说,等价于整个文档库,只不过会有一个因子决定不一样文档库的权重
此时计算方式变成
|q|等价于整个文档库中的单词在查询语句中出现的次数,也就是查询语句自己所包含的单词的数量
函数重写后,对于排序来说,最后一部分,全部的文档算出来的值都是同样,因此能够忽略【针对全部的文档库计算的】,对于中间的部分,能够看到相对长的查询有一个基于因子的log算法,某种程度上是对长度的一种惩罚,越长能够选择较大的因子,而对于第一部分来说,能够看到,可见的文档的单词几率则相似于TF,不可见的文档部分则至关于IDF的做用[在非当前文档中出现的几率越大,做用反而越小]
VSM经过计算查询与文档之间的类似性,经过点积来计算大小并归一化以后来做为排序依据; 几率模型是统计总的次数做为几率预估[有通用的文档库计算,以及具体的文档库],最简单的方式是给全部的单词几率作乘积来作排序计算