自然語言處理NLP【分詞篇】

NLP簡介和三種分詞模型

 

 

 

NLP逐漸成爲人工智能一大熱點研究方向,目前國外對英文分詞的研究比較深入,而中文分詞發展較緩。它需要聯繫上下文、作者背景、內容背景等進行調整。

 

處理這些高度模糊句子所採用消歧的方法,通常運用到語料庫以及隱馬爾可夫模型(Hidden Markov Model,HMM)、支持向量機(Support Vector Machine,SVM)和條件隨機場(Conditional Random Field, CRF)三種爲主,也常用於句法分析、命名實體識別、詞性標註等,且後兩者(SVM、CRF)明顯優於隱馬爾可夫模型。

 

 

其中隱馬爾可夫模型(HMM)和條件隨機場(CRF)的模型主幹相同,其能夠應用的領域往往是重疊的,但在命名實體、句法分析等領域CRF更勝一籌。當然不是必須學習HMM才能讀懂CRF,但通常來說如果做自然語言處理,這兩個模型大家都應該有所瞭解。

 

中文分詞的概念

 

 

 

中文分詞就是輸入一個漢語句子,輸出一串由「BEMS」組成的序列串,以「E」、「S」結尾進行切詞,進而得到句子劃分。其中B(begin)代表該字是詞語的起始字,M(middle)代表詞語中間字,E(end)結束字,S(single)單字成詞。

 

例如:

小普是星海灣最受歡迎的小馬

 

得到BEMS組成的序列爲

BESBMESBMESBE

 

因爲句尾只能是E或S,所以得到的切詞方式爲

BE/S/BME/S/BME/S/BE

 

進而得到中文句子切詞爲

小普/是/星海灣/最/受歡迎/的/小馬

 

我們的目的是想要獲得每個字的位置,就需要通過了解每個字的狀態和它之前的字推出。這就是一個典型的隱馬爾可夫模型問題。

 

什麼是隱馬爾可夫(HMM)模型

 

 

 

現實生活中有這樣一類隨機現象,在已知現在情況的條件下,未來時刻的情況只與現在有關,而與遙遠的過去並無直接關係。

 

比如天氣預測,如果我們知道「晴天,多雲,雨天」之間的轉換概率,那麼如果今天是晴天,我們便可以推斷明天的天氣情況,同理後天的天氣可以由明天的天氣進行推斷。

 

 

假設我們沒辦法知道真實的天氣情況,僅有今明後三天的植物狀態數據。由於植物狀態與天氣有關,我們可以通過隱馬爾可夫模型(Hidden Markov Model)利用植物數據推測真正的天氣情況。

 

即通過觀察某種信息來間接地推出該信息背後隱藏的信息。同理,中文分詞就是觀察中文句子間接地推出每個字在詞語中的位置。

 

運用HMM模型導出的Viterbi算法

 

 

 

1、 五元組:

觀測序列-O:小普是星海灣最受歡迎的小馬。

 

初始狀態概率向量-π:句子的第一個字屬於{B,E,M,S}這四種狀態的概率。

 

狀態轉移概率矩陣-A:如果前一個字位置是B,那麼後一個字位置爲BEMS的概率各是多少(如圖1,B後面是E的概率爲e^(-0.590),此次已取對數方便計算)。

 

 

觀測概率矩陣-B:在狀態B的條件下,如圖2觀察值爲「耀」的概率,取對數後是-10.460。

 

 

2、 兩種假設

假設一(有限歷史性):W_i只由W_(i-1)決定

假設二(獨立輸出):第i時刻的接收信號w_i只由發送信號r_i決定

 

3、 viterbi算法

通過五元組加上兩個假設導出解決中文分詞問題的Viterbi算法,而viterbi算法是一種解碼問題:參數(O,π,A,B)已知的情況下,求解狀態值序列S。它是一個多步驟、多選擇模型的最優化問題,每步選擇都保存了所有前序步驟到當前步驟的最小總代價以及下一步的選擇。

 

 

簡單介紹完隱馬爾可夫模型後會在此基礎上寫中文分詞(二)提出CRF的理解和兩者的比較。簡單概括就是:

隱馬爾可夫模型(HMM)是在擬合聯合概率p(x,y)分佈的參數,而條件隨機場(CRF)是直接在擬合後驗概率p(y|x)的參數。

 

參考:

https://blog.csdn.net/u014365862/article/details/54891582

https://www.cnblogs.com/mantch/p/12292084.html

 

作者:陳光澤,就讀於華中科技大學。