连载的上一篇文章,我们了解到了贝叶斯公式:P(A|B) = P(A) * P(B|A) / P(B)
,使用贝叶斯公式,可以帮助我们将难计算的逆概转换为计算正向概率。今天呢,我们以一个拼写纠正的例子,再来实际感受一下贝叶斯公式的巧妙应用~
拼写纠正
所谓拼写纠正是指,当我们发现某个用户输入了一个系统中不存在的单词时,我们需要去猜测用户可能要输入的单词是什么?并按照可能性从高到低列出可能性最高的几个单词来提示用户。比如用户输入单词 tlp
,这个词本身并不存在,那用户是想输入 top
tip
... ,最可能输入的是哪个呢?
以上需求,就涉及到我们要比较在用户输入某个单词的情况下,每种猜测的可能性大小。也就是条件概率:
P(猜测用户想输入的单词 | 用户实际输入的单词)
接下来,小鱼使用字母 D
表示用户实际输入的单词,h1
h2
h3
... 则表示各种猜测。则用户在输入单词 D
的情况下,他真正想输入的是 h1
h2
h3
... 的概率就可以表示为:
- 猜测 1:
P(h1|D)
- 猜测 2:
P(h2|D)
- 猜测 3:
P(h3|D)
- ...
我们可以统一用 h
泛指 h1
h2
h3
...,根据贝叶斯公式,那么我们需要求解的条件概率就可以表示为:P(h|D) = P(h) * P(D|h) / P(D)
。
公式化简
接下来,我们来化简使用贝叶斯公式转换后的条件概率。
首先,我们并不是要求解等式的右半部分,因为我们只是想比较一下输入为 D
的情况下各种猜测的概率大小。P(D)
表示用户输入单词 D
的概率,对于不同的猜测 h1
h2
h3
... ,P(D)
都是一样的,所以在比较时,可以忽略公式中的 P(D)
。
那么,我们要比较的部分也就变为 P(h) * P(D|h)
,即 P(h|D) ∝ P(h) * P(D|h)
,也就是说 P(h|D)
正比于 P(h) * P(D|h)
。公式中 P(h)
为语料库中单词 h
出现的概率,是一个特定的先验概率;P(D|h)
表示单词 h
被误输成 D
的概率,比如 the
被错误地写成 thr
的概率,这个概率可以根据一些规则进行求解。
注:公式
P(h | D) ∝ P(h) * P(D | h)
所表达的含义也就是说对于给定观测数据,一个猜测是好是坏,取决于“这个猜测本身独立的可能性大小(先验概率)”和“这个猜测生成我们观测到的数据的可能性大小。
举个例子:比如用户输入tlp
,那到底是 top
还是 tip
?
两种猜测都只是中间一个字母不同,这个时候,当最大似然不能作出决定性的判断时,先验概率就可以插手进来给出指示——“既然你无法决定,那么我告诉你,一般来说 top
出现的程度要高许多,所以更可能他想打的是 top
。
这就是特定猜测的先验概率。而上述提到的最大似然就是一种 P(D|h)
的比较理论,关于模型比较理论,我们下节见啦~
(¦3[▓▓] 晚安
网友评论