一元语言模型(Unigram Language Model)就是关于全部单词上的一个概率分布,它认为每篇文章都对应一个一元语言模型,文章中的单词都是从这个概率分布中采样得到。所以计算文章和查询语句之间的相关性,相当于计算文章对应的一元语言模型产生出查询语句的概率。
通常我们统计文档中的单词频率分布来估计文章对应的一元语言模型,但是未出现在文档中的单词的概率就被设置为0了,这显然是不合理的。所以需要对得到的一元语言模型进行平滑,使其更接近真实的概率分布。(说白了就是给那些未出现在文档中的单词分配些概率)
上式是线性插值平滑法,其中P(w|D)表示从文档中估计得到的单词w的概率(也就是单词w的在文档D中出现的个数除以文档D中单词总数)。P(w|C)是从语料库中估计得到的单词w的概率(也就是单词w的在语料库C中出现的个数除以语料库C中单词总数)。λ是平滑参数,调整两种概率之间的权重。MD是最后得到的一元语言模型,P(w|MD)表示一元语言模型MD产生单词w的概率。
文档中单词个数有限,对一些和本文档主题无关的单词w,它的P(w|D)很可能为0。但是语料库C表示所有文档的集合,所以P(w|C)几乎肯定不为0。所以用P(w|C)当做一个单词的先验概率,来平滑P(w|D),得到的一元语言模型MD更加贴近实际概率分布。
线性插值就是将两种概率线性加权得到最终的一元语言模型MD。
上式是狄里克雷平滑法。其中D(w)表示从文档D中单词w的个数,|D|表示文档D中单词总数,即文档长度。m是一个采样参数,p表示单词w的先验概率。MD是最后得到的一元语言模型,P(w|MD)表示一元语言模型MD产生单词w的概率。通常p = P(w|C)。即得到下式:
它表示给每篇文档D新增加m个单词,其中m是从P(w|C)采样得到的。P(w|C) 是从语料库中估计得到的单词w的概率。
狄里克雷平滑是线性插值平滑的一种特殊形式。线性插值平滑中参数λ是固定的,而狄里克雷平滑中参数λ是一个关于文档的函数,根据文档的不同而改变,如下所示:
其中D(w) = P(w|D)*|D|。明显m固定时,|D|越大,则λ越小,MD受到P(w|D)的影响越大,越相信文档D中得到的概率P(w|D)。|D|越小,则λ越大,MD受到P(w|C)的影响越大,越相信先验概率P(w|C)。
其中|V|表示所有词表大小(vocabulary size),即单词种类的个数,拉普拉斯平滑是狄里克雷平滑的一种特殊形式,相当于p = 1/|V|,m = |V|。这里相当于假设单词的分布是均匀分布,相当于每个种类的单词都往文档D里面添加一个,所叫做加一平滑(add-one smoothing)。
加一平滑也可以扩展到加n平滑,也就是每个种类的单词都往文档D里面添加n个。
参考:Smucker M D, Allan J. An Investigation of Dirichlet Prior Smoothing's Performance Advantage[J]. Journal of Applied Polymer Science, 2005, 47:1685-1700.