NLP詞法分析(一):中文分詞
##1.中文分詞介紹 中文分詞相較於英文分詞要難許多,因為英文字身就是由單詞與空格組成的,而中文則是由獨立的字組成的,但同時語義卻是有詞來表達的。因此對於中文的分析與研究,首先應尋找合適的方法進行分詞。現有的中文分詞技術主要分為規則分詞,統計分詞與規則加統計相結合的方式,接下來將分別介紹。 ###1.1規則分詞 規則分詞主要是通過構建詞典,對需要進行分詞的語句與詞典中的詞語進行匹配,從而實現切分,具體主要有正向最大匹配法,逆向最大匹配法,雙向最大匹配法。 ####1.1.1正向最大匹配法 正向最大匹配法實現的原理如下:假設分詞詞典中最長詞語的長度為 i, 那麼則選取需要進行分詞的語句中的前 i
規則分詞在一般的分詞任務中已經能夠得到較好的結果了,但是其缺點是需要大量人力物力去維護與更新分詞詞典。同時,對於新詞,規則分詞很難能夠正確切割。相反,統計分詞法較好的解決的這個問題。
###1.2統計分詞 統計分詞的基本思想是基於統計的概念,如果相連的字在不同的地方出現的次數越多,則其越有可能為一個詞。因此我們可以利用出項概率來推測成詞的可能性,從而實現分詞。常見的統計分詞方法有隱含馬爾可夫(HMM)、條件隨機場(CRF)等。接下來我們首先建立統計分詞的語言模型,接著簡單介紹一下HMM
####1.2.1統計分詞語言模型 假設字串的長度為m,那麼對於這個字串的概率分佈可以描述為: 通過鏈式法則,我們可以計算其概率值: 由於實際計算中,上式非常複雜,一般採用n-gram模型進行簡化計算。n-gram模型即只考慮與字距離在n以內的文字對於這個字的影響。這樣條件概率可以表示為: 這樣,當n=1時,為unigram模型: 即為每個字單獨的概率,但是unigram模型無法保留相鄰字之間的關係,所以用於分詞效果很不理想。當n=2,3時,模型可以保留一定的字之間的資訊,又不至於使得計算過為複雜。
####1.2.2HMM模型 HMM即隱含馬爾可夫模型,其基本思想為,將字在構造詞的過程中所承擔的角色歸為4類:B(begin),M(middle),E(end),S(single),接著,句子的分詞任務便可以轉化成對對句子中每個字進行標註角色的任務。在介紹HMM分詞之前,首先需要介紹隱含馬爾可夫過程。 ####隱含馬爾可夫過程 一般來說,馬爾可夫假設為:對於某一個隨機過程,假設其存在n個狀態S,那麼對於某個特定的狀態,其概率分佈只與前一個狀態有關。即: 而符合馬爾可夫假設的過程即為馬爾可夫過程,也叫做馬爾可夫鏈,一般的馬爾可夫連結串列示如下: 上圖中,每個圓代表一個狀態,而線代表狀態的轉移與其概率。 而隱含馬爾可夫過程是馬爾可夫過程的擴充套件。在隱含馬爾可夫過程中,不同時刻的狀態是不可見的,所以無法通過觀測來推測不同狀態的概率分佈。但是其在每個狀態時會輸出一個特定的特徵,並且這個特徵的概率分佈與且僅與當前的狀態有關。這就是隱含馬爾可夫過程: 上圖中,x代表狀態,y代表對應特徵。 ####HMM分詞 瞭解了隱含馬爾可夫過程,便可以介紹HMM分詞模型了。通過上述內容我們可以很容易的發現HMM分詞是典型的隱含馬爾可夫過程。其中B\M\E\S代表不同的狀態,而句子中每個字則代表其不同狀態所產生的特徵。而我們的任務則是根據概率分佈推測句子中每一個字背後的狀態,從而達到分詞。 通過數學模型推導過程如下: 假設用表示句子與其中每一個字。而用表示對應的狀態。則分詞任務可以描述成: 通過貝葉斯公式可以得到: 對於,其只與分詞時使用的訓練集有關,是個常數。則我們的模型可以轉化為求: 根據隱含馬爾可夫過程的假設 同時,對於: