本系列中文十年回顧中講了時至今日黔牵,中文分詞中對效果影響最大的是未登錄詞的識別嗽交。今天要講的就是基于HMM算法的中文分詞花颗,可以用來發(fā)掘為登錄詞卖哎。
從中文分詞角度理解HMM
中文分詞弊添,就是給一個漢語句子作為輸入录淡,以“BEMS”組成的序列串作為輸出,然后再進行切詞油坝,進而得到輸入句子的劃分嫉戚。其中,B代表該字是詞語中的起始字免钻,M代表是詞語中的中間字彼水,E代表是詞語中的結束字,S則代表是單字成詞极舔。
下面是一個用字符標注方法進行識別的一個例子
小明碩士畢業(yè)于中國科學院計算所
BEBEBMEBEBMEBES
BE/BE/BME/BE/BME/BE/S
小明/碩士/畢業(yè)于/中國/科學院/計算/所
上面的例子就是一個給定觀察序列凤覆,得到狀態(tài)序列,在HMM中就是一個解碼過程拆魏。
HMM簡介
定義: HMM (隱馬爾可夫模型) 是關于時序的概率模型盯桦, 描述由一個隱藏的馬爾可夫鏈隨機生成不可觀察的狀態(tài)序列,再有狀態(tài)序列生成一個觀測序列的過程渤刃。
HMM有以下5個要素:
觀測序列-O:小明碩士畢業(yè)于中國科學院計算所
狀態(tài)序列-S:BEBEBMEBEBMEBES
初始狀態(tài)概率向量-π:句子的第一個字屬于{B,E,M,S}這四種狀態(tài)的概率
狀態(tài)轉移概率矩陣-A:如果前一個字位置是B拥峦,那么后一個字位置為BEMS的概率各是多少
觀測概率矩陣-B:在狀態(tài)B的條件下,觀察值為耀的概率卖子,取對數(shù)后是-10.460
備注:示例數(shù)值是對概率值取對數(shù)之后的結果略号,為了將概率相乘的計算變成對數(shù)相加,其中-3.14e+100作為負無窮,也就是對應的概率值是0
三類問題
當通過五元組中某些已知條件來求未知時玄柠,就得到HMM的三類問題:
- 似然度問題:參數(shù)(O突梦,π,A羽利,B)已知的情況下宫患,求(π,A这弧,B)下觀測序列O出現(xiàn)的概率
- 解碼問題:參數(shù)(O娃闲,π,A匾浪,B)已知的情況下皇帮,求解狀態(tài)值序列S。(viterbi算法)
- 學習問題:參數(shù)(O)已知的情況下户矢,求解(π玲献,A,B)梯浪。(Baum-Welch算法)
中文分詞屬于解碼問題捌年, 就是對給定的觀察序列,求解對應的最優(yōu)狀態(tài)的問題挂洛。
我們希望找到 s_1,s_2,s_3,... 使 P (s_1,s_2,s_3,...|o_1,o_2,o_3....) 達到最大礼预。
意思是,當我們觀測到信號 o_1,o_2,o_3,... 時虏劲,我們要根據(jù)這組信號推測出發(fā)送的句子 s_1,s_2,s_3,....托酸,顯然,我們應該在所有可能的句子中找最有可能性的一個柒巫。
HMM 的兩個假設:
-
有限歷史假設:si 只由si-1 決定
-
獨立輸出假設:第 i 時刻的接收信號 oi 只由狀態(tài) si 決定
基于上面的兩個假設励堡,解碼問題可以推導如下:
Viterbi 算法
Viterbi算法:是一種動態(tài)規(guī)劃算法。它用于尋找最有可能產生觀測事件序列的維特比路徑——隱含狀態(tài)序列堡掏,特別是在馬爾可夫信息源上下文和隱馬爾可夫模型中应结。
定義在t時刻, 狀態(tài)為i的所有單路徑中最大的值為:
則在t+1時刻有:
則利用上面的兩個公式就可以完成解碼了泉唁。