查看原文
其他

朴素贝叶斯分类实例-单词纠正问题

2017-05-01 江颖 机器学习算法与自然语言处理

朴素贝叶斯分类实例-单词纠正问题


本篇文章是我一个大三学妹江颖的学习笔记,我觉得写得通俗易懂,又不失算法严谨性!这里整理一下记录下来。希望对大家有帮助~

1  朴素贝叶斯算法


带你搞懂朴素贝叶斯分类算法这篇文章通俗的讲解了朴素贝叶斯算法,通过回忆,我们知道算法公式如下:



2  单词纠正问题


下面我们看一个问题去理解贝叶斯公式及其变形:


现在我们看到用户输入了一个不在字典里的单词,如thew,我们如何去知道用户实际想输入的单词是什么?


我们可以将这个问题抽象成求:



我们现在不妨假设空间有the 和 thaw (为了简化问题,我们的假设空间目前只有the 和 thaw)


实际问题中用的输入法拼写改正器一般只提取编辑距离为2以内的所有已知单词作为假设空间的假设,这样避免放入所有单词。


但是就算是这样的假设,满足的数据量依旧很大,可能有the , they , thaw 等等,所以本文这个问题的假设空间只放入两个元素去讨论(只是为了走完例子,帮助理解,其它原理相同)。


我们现在应用贝叶斯公式,有:



而我们知道,实际上P(他实际输入的单词)是一个定值,因为是已经发生的事实,概率已知,那么我们就可以采用贝叶斯公式的变形:



这里写成:



根据假设空间{ the ,thaw },这里有:



我们就比较P(thaw|thew)与p(the|thew)的概率谁大谁小即可!


3  求解分析


通过上面分析,我们需要比较P(thaw|thew)与p(the|thew)的概率大小。


也就是需要分别求出p(thew|thaw)*p(thaw)/p(thew)与p(thew|the)*p(the)/p(thew),由于p(thew)是定值,并且俩者一样,这里比较就不用求出它。所以直接省去p(thew)


那么下面我们分别求p(thew|thaw)与p(thew|the)的大小比较与p(thaw)和p(the)的大小比较。


我们在这里用编辑距离和操作难度联合起来求解P(他实际输入的单词|我们猜测他想输入的单词),也就是p(thaw|thew)与p(the|thew)


距离越近可能性越大,可以理解为,单词最容易输错成为同等长度或者长度相差不大的单词,在本问题中,然而 the 和 thaw 离 thew 的编辑距离都是 1,在这里我们 认为编辑距离对区分俩者没有区分度。


这时候需要考虑操作难度的大小,即去比较到底哪个更可能被错打称为thew。我们注意到字母 e 和字母 w 在键盘上离得很紧,无名指可能不小心就多打出一个 w 来,the 就变成 thew 了。


而另一方面 thaw 被错打成 thew 的可能性就相对小一点,因为 e 和 a 离得较远而且使用的指头相差一个指头(神经科学的证据表明紧邻的身体设施之间容易串位)所以我们最终得到:


P(thew|thaw) < P(thew|the)


好的,我们已经得到了P(thew|thaw) < P(thew|the)。


下面我们来计算p(thaw)与p(the)的概率。


此时我们只需要比较thaw与the在文本库的出现频率。哪个频率高,我们就认为谁的概率大。


我们容易得出在英语中,the 出现的概率远远高于 thaw ,所以p(the)>p(thaw)


根据上面,我们可以得到

p(thaw)<p(the),p(thew|thaw)<p(thew|the)


则我们可以得出结论:


p(thew|thaw)*p(thew|thaw)<p(thew|the)*p(the)


那么我们可以认为,用户其实想敲入的是the这个词语。


4  结论


于是根据上面,我们详细的走了一遍朴素贝叶斯算法的例子,虽然这个算法用在单词纠错上的准确率不是太高。


但是至少让我们清清楚楚的看到了数学算法在实际中是如何应用的。我相信不要陷入抽象的公式,跳出来实际应用这点很重要。


希望对大家理解有帮助~


参考文献:

1.周志华 《机器学习》 清华大学出版社

2.吴军 《数学之美》人民邮电出版社

3.刘丹,方卫国,周泓 《基于贝叶斯网络的二元语法中文分词模型》


推荐阅读文章:

带你搞懂朴素贝叶斯分类算法

理解朴素贝叶斯算法中的拉普拉斯平滑

零基础掌握极大似然估计


近期文章预告:

《深入浅出决策树算法》

《深入浅出最大熵模型》

《深入浅出支持向量机》


开通了[自然语言处理与机器学习]公众号,里面除了干货还是干货,欢迎按住下面二维码扫描关注!


版权所有,转载请务必联系作者取得授权!



.

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存