基於統計的自動分詞算法

   簡介:利用字與字間、詞與詞間的同現頻率做爲分詞的依據,不必定須要創建好的詞典。須要大規模的訓練文本用來訓練模型參數。
優缺點:不受應用領域的限制;但訓練文本的選擇將影響分詞結果。 

算法

機率最大統計分詞算法

1、主要原理  

  對於任意一個語句,首先按語句中詞組的出現順序列出全部在語料庫中出現過的詞組;將上述詞組集中的每個詞做爲一個頂點,加上開始與結束頂點,按構成語句的順序組織成有向圖;再爲有向圖中每兩個直接相連的頂點間的路徑賦上權值,如 A→B,則 AB 間的路徑權值爲 B 的費用(若 B 爲結束頂點,則權值爲 0);此時原問題就轉化成了單源最短路徑問題,經過動態規劃解出最優解便可。spa

 

2、思路說明

(1)獲取候選詞

   獲取句子中可能出現的全部詞做爲候選詞,但要知足下列條件:若是是長度大於 1 的詞,則必須在詞典中出現;若是是長度等於 1,即爲單字,能夠不在詞典中出現。字符串

(2)構造前趨詞

  假定字符串從左到右進行掃描,能夠獲得 w1,w2,…,wi-1,wi,….等若干候選詞,若是 wi-1 的尾字根 wi 的首字鄰接,就稱 wi-1 爲 wi 的前趨詞。好比上面例中,候選詞「有」就是候選詞「意見」的前趨詞,「意見」和「見」都是「分歧」的前趨詞。字串最左邊的詞沒有前趨詞。class

(3)尋找最佳前趨詞

  若是某個候選詞 wi 有若干個前趨詞 wj,wk,…..等等,其中累計機率最大的候選詞稱爲 wi 的最佳前趨詞。好比候選詞「意見」只有一個前趨詞「有」,所以「有」同時也就是「意見」的最佳前趨詞;候選詞「分歧」有兩個前趨詞「意見」和「見」,其中「意見」的累計機率大於「見」累計機率,所以「意見」是「分歧」的最佳前趨詞。原理

(4)肯定最優路徑

  回溯,從字符串的尾部按照最佳前趨詞的指引,向前搜索最優路徑。搜索

 

 

3、算法描述

① 對一個待分詞的子串S,按照從左到右的順序取出所有候選詞w1,w2,…,wi,…,wn;統計

②到詞典中查出每一個候選詞的機率值 P(wi),並記錄每一個候選詞的所有左鄰詞;動態規劃

③按照公式 1 計算每一個候選詞的累計機率,同時比較獲得每一個候選詞的最佳左鄰詞;block

④若是當前詞 wn 是字串 S 的尾詞,且累計機率 P(wn)最大,則 wn 就是 S 的終點詞;字符

⑤從 wn 開始,按照從右到左順序,依次將每一個詞的最佳左鄰詞輸出,即 S 的分詞結果。 

 

4、舉例演示

①對「有意見分歧」,從左到右進行一遍掃描,獲得所有候選詞:「有」,「有意」,「意見」,「見」,「分歧」;

②對每一個候選詞,記錄下它的機率值,並將累計機率賦初值爲 0;

③順次計算各個候選詞的累計機率值,同時記錄每一個候選詞的最佳左鄰詞;

  P’(有) =P(有),

  P’(有意) = P(有意) ,

  P’(意見) = P’(有) * P(意見) ,(「意見」的最佳左鄰詞爲「有」 )

  P’(見) = P’(有意) * P(見) , (「見」的最佳左鄰詞爲「有意」 )

  P’(意見) >P’(見)

「分歧」是尾詞,「意見」是「分歧」的最佳左鄰詞,分詞過程結束,輸出結果:有/ 意見/ 分歧/ 

 

5、算法缺點

①最大機率分詞法不能解決全部的交集型歧義問題:「這事的肯定不下來」:

  W1=這/ 事/ 的確/ 定/ 不/ 下來/

  W2=這/ 事/ 的/ 肯定/ 不/ 下來/

  P(W1)<P(W2)


②沒法解決組合型歧義問題:「作完做業才能看電視」

  W1=作/ 完/ 做業/ 才能/ 看/ 電視/

  W2=作/ 完/ 做業/ 才/ 能/ 看/ 電視/

相關文章
相關標籤/搜索