樸素貝葉斯分類實例-單詞糾正問題

本篇文章是我一個大三學妹江穎的學習筆記,我覺得寫得通俗易懂,又不失演算法嚴謹性!這裡整理一下記錄下來。希望對大家有幫助~

樸素貝葉斯演算法

帶你理解樸素貝葉斯分類演算法 - 知乎專欄這篇文章通俗的講解了樸素貝葉斯演算法,通過回憶,我們知道演算法公式如下:

單詞糾正問題

下面我們看一個問題去理解貝葉斯公式及其變形:

現在我們看到用戶輸入了一個不在字典里的單詞,如thew,我們如何去知道用戶實際想輸入的單詞是什麼?

我們可以將這個問題抽象成求:

我們現在不妨假設空間有the 和 thaw (為了簡化問題,我們的假設空間目前只有the 和 thaw)

實際問題中用的輸入法拼寫改正器一般只提取編輯距離為2以內的所有已知單詞作為假設空間的假設,這樣避免放入所有單詞,但是就算是這樣的假設,滿足的數據量依舊很大,可能有the , they , thaw 等等,所以本文這個問題的假設空間只放入兩個元素去討論(只是為了走完例子,幫助理解)。

我們現在應用貝葉斯公式,有:

而我們知道,實際上P(他實際輸入的單詞)是一個定值,因為是已經發生的事實,概率已知,那麼我們就可以採用貝葉斯公式的變形:

這裡寫成:

根據假設空間{ the ,nthaw },這裡有:

我們就比較P(thaw|thew)與p(the|thew)的概率誰大誰小即可!

求解分析

通過上面分析,我們需要比較P(thaw|thew)與p(the|thew)的概率大小。

也就是需要分別求出p(thew|thaw)*p(thaw)與p(thew|the)*p(the)的大小

那麼下面我們分別求p(thew|thaw)與p(thew|the)的大小比較與p(thaw)和p(the)的大小比較。

我們在這裡用編輯距離和操作難度聯合起來求解P(他實際輸入的單詞|我們猜測他想輸入的單詞),也就是p(thew|thaw)與p(thew|the)距離越近可能性越大。

可以理解為,單詞最容易輸錯成為同等長度或者長度相差不大的單詞,在本問題中,然而 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(thaw)<p(thew|the)*p(the)

那麼我們可以認為,用戶其實想敲入的是the這個詞語。

結論

於是根據上面,我們詳細的走了一遍樸素貝葉斯演算法的例子,雖然這個演算法用在單詞糾錯上的準確率不是太高。

但是至少讓我們清清楚楚的看到了數學演算法在實際中是如何應用的。我相信不要陷入抽象的公式,跳出來實際應用這點很重要。

希望對大家理解有幫助~

參考文獻:

1.周志華 《機器學習》 清華大學出版社

2.吳軍 《數學之美》人民郵電出版社

3.劉丹,方衛國,周泓 《基於貝葉斯網路的二元語法中文分詞模型》

.


推薦閱讀:

如何看待KDD CUP 2017賽事?為何臨近結束排行榜波動如此之大?
Python · 數據工具包

TAG:机器学习 | 自然语言处理 | 深度学习DeepLearning |