統計分詞:
統計分詞的主要思想是把每個詞看做是由字組成的,如果相連的字在不同文本中出現的次數越多,就證明這段相連的字很有可能就是一個詞。
統計分詞一般做如下兩步操作:
1.建立統計語言模型(n-gram)
2.對句子進行單詞划分,然后對划分結果做概率計算,獲取概率最大的分詞方式。這里就用到了統計學習算法,如隱馬爾科夫模型(HMM),條件隨機場(CRF)等
語言模型:
語言模型在信息檢索,機器翻譯,語音識別中承擔着重要的任務。這種模型結構簡單,直接,但同時也因為數據缺乏而必須采取平滑算法。這里主要介紹n元語言模型(n-gram)。
假設S表示長度為i,由(W1,W2,....,Wi)字序列組成的句子,則代表S的概率為:
P(S) = P(W1,W2,...,Wi) = P(W1)*P(W2|W1)*P(W3|W2,W1)....P(Wi|W1,W2,...,Wi-1)
即每個字的出現都與他之前出現過的字有關,最后整個句子S的概率為這些字概率的乘積。但是這個計算量很大,所以在這里我們可以利用馬爾科夫假設,即當前詞只與最多前n-1個有限的詞相關:
當n=1時,即出現在第i位上的詞Wi獨立於歷史時,一元文法被記作uni-gram,一元語言模型可以記作:

當n=2時,即出現在第i位上的詞wi僅與它前面的一個歷史詞wi-1有關,二元文法模型被稱為一階馬爾可夫鏈(Markov chain),記作bi-gram,二元語言模型可以記作:

當n=3時,即出現在第i位置上的詞wi僅與它前面的兩個歷史詞wi-2和wi-1有關,三元文法模型被稱為二階馬爾可夫鏈,記作tri-gram,三元語言模型可以記作:

在實際應用中,一般使用頻率計數的比例來計算n元條件概率。
基於HMM的分詞:
隱含馬爾可夫模型(HMM)是將分詞作為字在句子中的序列標注任務來實現的(關於HMM稍后會在另一篇文章中詳細介紹)。其基本思路是:每個字在構造一個特定詞語時都占據着一個特定的位置即詞位,一般采用四結構詞位:B(詞首),M(詞中),E(詞尾)和S(單獨成詞)。比如:
'中文/分詞/是/文本處理/不可或缺/的/一步/!',
標注后的形式:
'中/B 文/E 分/B 詞/E 是/S 文/B 本/M 處/M 理/E 不/B 可/M 或/M 缺/E 的/S 一/B 步/E !/S'。
其中,詞位序列代表着HMM中不可見的隱藏狀態序列,而訓練集中的文本則為可見的觀測序列。這樣就變成了已知觀測序列,求未知的隱藏序列的HMM問題。
本篇文章中,我們使用有標記的監督學習去訓練HMM的參數,無監督學習的Baum-Welch方法(EM)會后續更新到本文中。
實現主要分為三步:
1.使用已經分好詞的訓練集去訓練HMM模型,計算頻數得到HMM的三要素(初始狀態概率,狀態轉移概率和發射概率)。

2.使用Viterbi算法以及訓練好的三個概率矩陣,將待分詞的句子轉換為'BMES'類型的狀態序列。

3.根據已經求出的狀態序列,划分句子進行分詞。

最后測試結果:


本文實現的HMM分詞模型比較簡單,分詞效果依賴於訓練集文本語料庫的規模,所以要想得到更好的性能,需要花費人力維護語料庫。