基於統計模型的中文分詞方法


統計分詞:

        統計分詞的主要思想是把每個詞看做是由字組成的,如果相連的字在不同文本中出現的次數越多,就證明這段相連的字很有可能就是一個詞。

統計分詞一般做如下兩步操作:

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,一元語言模型可以記作:


uni-gram

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


bi-gram

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


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的三要素(初始狀態概率,狀態轉移概率和發射概率)。


訓練HMM參數

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

Viterbi求最大概率序列

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


分詞

最后測試結果:


訓練參數

 


讀取模型並分詞

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM