一、概念
什么是数据平滑?我通过一个例子来解释一下。假设有如下语料库:
{
今天 天气 不错,
天气 晴朗,
晴朗 的 天气,
}
如果要计算句子s=“晴朗天气”的概率(用二元语法模型,自然语言处理(七)已经介绍过),有如下计算过程。
p(天气 | 晴朗) = c(晴朗天气)/ c(晴朗) = = 0
显然上面计算得到的概率不怎么准确,晴朗天气总有出现的可能,最起码概率应该大于0。
为了解决这种问题,数据平滑就有了用武之地,数据平滑的作用把概率为0的变为概率较小的非0概率。最后可能还有一个疑问,句子的概率是0就0呗,为什么要平滑?实际上在语音识别中如果识别到句子的概率是0,那么就识别失败了,不管如何都要识别出一个结果,所以不能让句子的概率成为0。
知道了数据平滑的目的和用途,就该了解,数据平滑到底怎么个平滑?怎么消除0概率?其实平滑的方法有很多,接下来介绍一些常用方法。
二、数据平滑方法
加1法:这个方法是用于n元语法模型的比较简单的方法,就是计算频率时,每个二元语法出现的次数加1。公式如下: