簡介:利用字與字間、詞與詞間的同現頻率作為分詞的依據,不一定需要建立好的詞典。需要大規模的訓練文本用來訓練模型參數。
優缺點:不受應用領域的限制;但訓練文本的選擇將影響分詞結果。
概率最大統計分詞算法
一、主要原理
對於任意一個語句,首先按語句中詞組的出現順序列出所有在語料庫中出現過的詞組;將上述詞組集中的每一個詞作為一個頂點,加上開始與結束頂點,按構成語句的順序組織成有向圖;再為有向圖中每兩個直接相連的頂點間的路徑賦上權值,如 A→B,則 AB 間的路徑權值為 B 的費用(若 B 為結束頂點,則權值為 0);此時原問題就轉化成了單源最短路徑問題,通過動態規划解出最優解即可。
二、思路說明
(1)獲取候選詞
獲取句子中可能出現的所有詞作為候選詞,但要滿足下列條件:如果是長度大於 1 的詞,則必須在詞典中出現;如果是長度等於 1,即為單字,可以不在詞典中出現。
(2)構造前趨詞
假定字符串從左到右進行掃描,可以得到 w1,w2,…,wi-1,wi,….等若干候選詞,如果 wi-1 的尾字根 wi 的首字鄰接,就稱 wi-1 為 wi 的前趨詞。比如上面例中,候選詞“有”就是候選詞“意見”的前趨詞,“意見”和“見”都是“分歧”的前趨詞。字串最左邊的詞沒有前趨詞。
(3)尋找最佳前趨詞
如果某個候選詞 wi 有若干個前趨詞 wj,wk,…..等等,其中累計概率最大的候選詞稱為 wi 的最佳前趨詞。比如候選詞“意見”只有一個前趨詞“有”,因此“有”同時也就是“意見”的最佳前趨詞;候選詞“分歧”有兩個前趨詞“意見”和“見”,其中“意見”的累計概率大於“見”累計概率,因此“意見”是“分歧”的最佳前趨詞。
(4)確定最優路徑
回溯,從字符串的尾部按照最佳前趨詞的指引,向前搜索最優路徑。
三、算法描述
① 對一個待分詞的子串S,按照從左到右的順序取出全部候選詞w1,w2,…,wi,…,wn;
②到詞典中查出每個候選詞的概率值 P(wi),並記錄每個候選詞的全部左鄰詞;
③按照公式 1 計算每個候選詞的累計概率,同時比較得到每個候選詞的最佳左鄰詞;
④如果當前詞 wn 是字串 S 的尾詞,且累計概率 P(wn)最大,則 wn 就是 S 的終點詞;
⑤從 wn 開始,按照從右到左順序,依次將每個詞的最佳左鄰詞輸出,即 S 的分詞結果。
四、舉例演示
①對“有意見分歧”,從左到右進行一遍掃描,得到全部候選詞:“有”,“有意”,“意見”,“見”,“分歧”;
②對每個候選詞,記錄下它的概率值,並將累計概率賦初值為 0;
③順次計算各個候選詞的累計概率值,同時記錄每個候選詞的最佳左鄰詞;
P’(有) =P(有),
P’(有意) = P(有意) ,
P’(意見) = P’(有) * P(意見) ,(“意見”的最佳左鄰詞為“有” )
P’(見) = P’(有意) * P(見) , (“見”的最佳左鄰詞為“有意” )
P’(意見) >P’(見)
“分歧”是尾詞,“意見”是“分歧”的最佳左鄰詞,分詞過程結束,輸出結果:有/ 意見/ 分歧/
五、算法缺點
①最大概率分詞法不能解決所有的交集型歧義問題:“這事的確定不下來”:
W1=這/ 事/ 的確/ 定/ 不/ 下來/
W2=這/ 事/ 的/ 確定/ 不/ 下來/
P(W1)<P(W2)
②無法解決組合型歧義問題:“做完作業才能看電視”
W1=做/ 完/ 作業/ 才能/ 看/ 電視/
W2=做/ 完/ 作業/ 才/ 能/ 看/ 電視/