淺談自然語言處理基礎(中)

層次化的隱馬爾可夫模型

在自然語言處理等應用中,由于處理序列具有遞歸特性,尤其當序列長度比較大時,HMM的復雜度將會急劇增大,因此層次化隱馬爾可夫模型(HHMM)被提出了。

我們知道HMM是由兩個隨機過程構成的,而HHMM是由多層隨機過程構成的。在HHMM中每個狀態就是一個獨立的HHMM,因此一個HHMM的狀態就產生一個觀察序列,而不是一個觀察符號。HHMM通過狀態遞歸地產生觀察序列,一個狀態可以激活下層狀態中的某個狀態,而被激活的狀態又可以再激活下層的狀態,直至到達某個特定的狀態,這一遞歸過程結果。該特定狀態成為生產狀態,只有生產狀態才能通過常規的HMM機制,即根據輸出符號的概率分布產生可觀察的輸出符號。不直接產生可觀察符號的隱藏狀態稱作內部狀態,不同層次之間的狀態轉移叫垂直轉移,同一層次上狀態之間的轉移叫做水平轉移。特殊的終止狀態負責控制轉移過程返回到激活該層狀態轉移的上層狀態。

這一遞歸過程將形成一個生產狀態序列,而每個生產狀態生成一個觀察輸出符號,因此生產狀態序列將為頂層狀態生成一個觀察輸出序列,HHMM的樹狀結構如圖所示:


HHMM的樹狀結構

最上面的q1就是一個能產生一個觀察序列的HHMM狀態,而q1產生的這個結構也是一個獨立了HHMM,圖中畫雙圈的就是終止狀態,用于控制轉移過程返回到激活該層狀態的上層狀態。其它狀態為內部狀態。終止狀態與生產狀態不同,圖中并沒有畫出生產狀態。

為了避免誤解,我特意找了另一張HHMM的圖對比著來看:


HHMM

圖中畫雙圈的是終止狀態,能夠輸出符號的是生產狀態,不能輸出符號且不是終止狀態的被叫做內部狀態。

像HMM一樣,HHMM中也有三個基本問題,第一個就是快速地計算觀察序列的概率,第二個就是求解模型最有可能的狀態序列,第三個就是在給定一個HHMM的結構和一個或多個觀察序列的條件下,估計模型的最優參數。

馬爾可夫網絡(馬爾可夫隨機場)

前面其實是講過馬爾可夫模型的,馬爾可夫網絡不同于馬爾可夫模型,我們來回顧一下前面的圖:


常見的概率圖模型

我們知道馬爾可夫模型和隱馬爾科夫模型HMM都是有向圖模型,而馬爾可夫網絡是無向圖模型。

馬爾可夫網絡和貝葉斯網絡有類似之處,也可用于表示變量之間的依賴關系,但它又與貝葉斯網絡有所不同。一方面它可以表示貝葉斯網絡無法表示的一些依賴關系,如循環依賴;另一方面,它不能表示貝葉斯網絡能夠表示的某些關系,如推導關系。

一個簡單的無向圖

馬爾可夫網絡是一組有馬爾可夫性質的隨機變量的聯合概率分布模型,由一個無向圖G(如上圖)和定義在G上的勢函數組成。

無向圖的每個頂底表示一個隨機變量,每條邊表示兩個隨機變量之間的依賴關系。

首先簡單說一下什么是子圖,假設有兩個圖,如果第二個圖的頂點都是第一個圖的頂點,第二個圖的邊也都是第一個圖的邊,那么第二個圖就是第一個圖的子圖。

如果一個子圖任意兩個頂點都有邊相連,那么這個子圖就是一個完全子圖,一個完全子圖又稱為一個團,一個團的完全子圖叫子團。

因為圖是無向的,所以我們不能用條件概率對模型進行參數化,而是使用團勢能函數或簡稱勢函數進行參數化,每個團都對應一個勢函數,表示團的一個狀態。

我們的目的是什么?是對無向圖進行參數化,得到概率分布,進而描述出整個馬爾科夫網絡。拿上面的那個簡單的無向圖舉例,這個圖可以拆成兩個團,一個是XC1 = {x1, x2},另一個是XC2 = {x1, x3, x4},這個馬爾可夫網絡H的分布概率PΦ(x1, x2, x3, x4)可以由這兩個團的團勢能函數Φ(XC)進行因子化,PΦ(x1, x2, x3, x4)可以看做是這個馬爾可夫網絡H的一個吉布斯分布:

Z是歸一化常量,稱為劃分函數,不重要。

那然后我們只需要確定每個團的團勢能函數Φ(XC)了。我們一般將團勢能函數Φ(XC)定義為:Φ(XC) = exp{-E(XC)},其中-E(XC)叫做團XC的能量函數。

這樣我們就得到了整個圖模型的吉布斯分布。而且因為式子里是連乘,我們可以通過取對數,將因子化的乘積運算轉變為加法運算:


最大熵模型

前面講熵的時候我們就提到過最大熵模型,它的基本原理是:在只掌握關于未知分布的部分信息的情況下,符合已知知識的概率分布可能有多個,但使熵值最大的概率分布最真實的反映了事件的分布情況,因為熵定義了隨機變量的不確定性,當熵最大時,隨機變量最不確定,最難準確地預測其行為。也就是說,在已知部分信息的前提下,關于未知分布最合理的推斷應該是符合已知信息最不確定或最大隨機的推斷。

最大熵模型的推導比較復雜,這里盡量不列公式,而是側重于把原理講清楚。

這里我們先引入特征的概念,簡單的說,就是一個待消歧問題可能的候選結果與上下文信息的一個對應關系。就是在怎樣的上下文條件下,這個待消歧問題的結果是什么。

最大熵模型說,在已知部分信息的前提下,關于未知分布最合理的推斷應該是符合已知信息最不確定或最大隨機的推斷,實際上就是下面這個式子:


首先式子左側的是條件概率,a就是『待消歧問題的結果』,b就是『上下文條件』,這個條件概率就是最大熵模型所要描述的概率分布,即知道在特定上下文條件下,某待消歧問題的結果。

然后式子的右側就是所謂的『最不確定或最大隨機的推斷』了,我們選擇所建模型中所有與已知樣本中的概率分布相吻合的概率分布中熵最大的推斷作為最終的結果,P就是這些符合條件的模型的集合。

我們建的模型中p(b)的概率分布必須符合已知訓練樣本中的概率分布,所以我們直接代入已知訓練樣本中的概率分布,也即式子中帶了估計符號的p(b)

其實上面那個式子就是我們需要求最大值的目標函數,接下來的問題就是如何確定所建模型中所有與已知樣本中的概率分布相吻合的概率分布的集合P。

最大熵模型也說,在已知部分信息的前提下,關于未知分布最合理的推斷應該是符合已知信息最不確定或最大隨機的推斷,那什么叫做『符合已知信息』?

符合已知信息也即,所建立模型的概率分布應該與已知樣本中的概率分布相吻合(這里用的是聯合概率分布),而我們通過所建立模型中『特征』的期望值和已知樣本中『特征』的期望值作比較。如果特征對于模型是有用的,那這兩個期望值應當是相等的。

而且我們往往選擇不止一個特征,比如,我們選取k種在建模過程中對輸出有影響的特征,分別表示出這k種特征下所建立模型中『特征』的期望值和已知樣本中『特征』的期望值,
令其相等,那么也就相應的產生了k個約束條件,符合k條已知信息。

這樣,問題就變成了在滿足k個約束條件下求解目標函數的最優解的問題,而拉格朗日乘子法可以用于解決這一問題。也即如下式:


接下來是最大熵模型的訓練,最大熵模型訓練的任務就是選取有效的特征f以及權重λ。由于可以利用歧義點所在的上下文信息(如詞形、詞性、窗口大小等)作為特征條件,而歧義候選往往也有多個,因此各種特征條件和歧義候選可以組合成很多特征函數,必須對其進行篩選。

比如從候選特征集中選擇那些訓練數據中出現頻次超過一定閾值的特征,或者利用互信息作為評價尺度從候選特征集中選擇滿足一定互信息要求的特征等等。

而對于權重參數λ,最開始的訓練方法是通用迭代算法(Generalized Iterative Scaling,GIS),GIS實際上是一個典型的期望最大化算法(EM),簡單的說,就是在第零次迭代時,在遵循限制條件的前提下任意的初始化參數λ,然后用第N次迭代的模型來估算訓練數據中的分布。如果超過了實際的,就把相應的參數減小,否則,將他們變大。重復這個過程直到收斂。

GIS算法每次的迭代時間都很長,需要迭代很多次才能收斂,而且不太穩定,所以在實際應用中很少有人使用。改進迭代算法IIS(Improved Iterative Scaling)等,在GIS的基礎上進行了優化,不過計算量仍然非常巨大。

最大熵馬爾可夫模型

最大熵馬爾可夫模型(maximum-entropy Markov model,MEMM)又稱條件馬爾可夫模型(conditional Markov model,CMM)。它結合了隱馬爾可夫模型和最大熵模型的共同特點,被廣泛應用于處理序列標注問題。

McCallum認為,在HMM模型中存在兩個問題,一個是,在很多序列標注任務中,尤其是不能枚舉觀察輸出時,需要用大量的特征來刻畫觀察序列。比如識別一個公司名的時候,除了通過單詞,還要考慮到大寫字母、結尾詞、詞性、格式、在文本中的位置等。也就是說,我們需要用特征對觀察序列輸出進行參數化。

然后是,在很多自然語言處理任務中,需要解決的問題是在已知觀察序列的情況下求解狀態序列,HMM采用生成式的聯合概率模型P(ST,OT)來求解這種概率問題,這種方法不適合處理用很多特征描述觀察序列的情況。為此,MEMM直接采用條件概率模型P(ST|OT)(所以MEMM不是一種生成式模型),從而使觀察輸出可以用特征表示,借助最大熵模型進行特征選取。

下圖展示了HMM和MEMM的區別:


HMM與MEMM依存圖對照

在上一篇我們說過HMM有三個假設:

  • 有限歷史性假設:也即一階馬爾可夫模型,認定t時刻出現的狀態只與t-1時刻的狀態有關
  • 齊次性假設:假定P(s(i+1)|si)=P(s(j+1),sj)
  • 輸出獨立性假設:假定輸出僅與當前狀態有關

其中包括輸出獨立性假設,認為當前時刻的觀察輸出只取決于當前狀態,而在MEMM中,當前時刻的觀察輸出還可能取決于前一時刻的狀態,MEMM解決了HMM輸出獨立性假設的問題。實際上,MEMM也舍棄了齊次性假設,不再用生成式的聯合概率模型P(ST,OT)來求解,而是直接采用條件概率模型P(ST|OT)。

假設已知觀察序列O1O2...OT,要求解狀態序列S1S2...ST,并使條件概率P(S1S2...ST|O1O2...OT)最大。在MEMM中,將這一概率因子化為馬爾可夫轉移概率,從上面的圖中也可以看出,在MEMM中,當前時刻的狀態St取決于前一時刻的狀態S(t-1)和當前時刻的觀察輸出Ot,所以:


這樣,MEMM中的MM有了,接下來是ME,我們還記得上一篇講最大熵模型的時候,講到,最大熵模型解決的是給定上下文條件下,獲得待消歧問題結果的問題,那么在現在情況下,前一時刻的狀態S(t-1)和當前時刻的觀察輸出Ot就是上下文,而當前時刻的狀態St就是待消歧問題,所以我們依照這個思想通過最大熵分類器建模:


前面講過最大熵模型可以通過GIS來進行求解,GIS是一種EM算法,HMM中用于參數估計的前后向算法也是一種EM算法,在這里,前向后向算法修改后可用于MEMM的狀態轉移概率估計,這里具體的計算方法較為復雜,還用到了維特比算法的思想,這里不再深入講解。

MEMM是有向圖和無向圖的混合模型,其主體還是有向圖框架,與HMM相比,MEMM最大的優點在于它允許使用任意特征刻畫觀察序列,因為在MEMM里,處理觀察序列的實際上是最大熵模型的套路,最大熵模型在推導時就考慮了處理多種特征的情況。

MEMM的缺點在于存在標記偏置問題(label bias problem),MEMM解決了HMM輸出獨立性假設的問題,但是只解決了觀察值獨立的問題,而狀態之間的假設--有限歷史性假設,則是標注偏置問題產生的根源。

什么是標注偏置問題?比如這樣的狀態轉換概率分布:


路徑1-1-1-1的概率:0.40.450.5=0.09
路徑2-2-2-2的概率:0.018
路徑1-2-1-2的概率:0.06
路徑1-1-2-2的概率:0.066

由此看來,最優的路徑是1-1-1-1,但是實際上,狀態1偏向于轉移到狀態2,而狀態2總傾向于停留在狀態2,這就是所謂的標注偏置問題,由于分支數不同,概率的分布不均衡,導致狀態的轉移存在不公平的情況。條件隨機場CRF則解決了標注偏置問題,是進一步優化。

這里給出HMM、MEMM、CRF的對比圖:


HMM

可以清晰的看到HMM的有限歷史性假設(認為Yt只取決于Y(t-1))和輸出獨立性假設(認為Xt只取決于Yt)。

MEMM

MEMM克服了HMM的輸出獨立性假設,不再認為Xt只取決于Yt。但是仍然存在有限歷史性假設,認為Yt只取決于Y(t-1)。

CRF

CRF模型解決了標注偏置問題,去除了HMM中兩個不合理的假設(有限歷史性假設、輸出獨立性假設),當然,模型相應得也變復雜了。

條件隨機場

條件隨機場(conditional random fields)由J.Lafferty提出,是一種典型的判別模型,就是對于給定的輸出標識序列Y和觀測序列X;條件隨機場通過定義條件概率P(Y|X),而不是聯合概率分布P(X,Y)來描述模型。CRF也可以看做一個馬爾可夫隨機場(無向圖模型、馬爾可夫網絡)

我們先給出一張更清晰的CRF的鏈式結構圖:


CRF的鏈式結構圖

如果以觀察序列X為條件,條件隨機場中,每一個隨機變量Yv都滿足以下馬爾可夫特性:


其中,w~v表示兩個結點在圖中是臨近節點。也即,就像前面所提到的,在條件隨機場中,有限歷史性假設也被舍棄了,Yt不再只取決于前一時刻的臨近節點Y(t-1),CRF統計了全局概率,在做歸一化時,考慮了數據在全局的分布,而不是僅僅在局部歸一化,是全局最優的解,這樣就解決了MEMM中的標記偏置的問題。

參考了標注偏置問題(Label Bias Problem)和HMM、MEMM、CRF模型比較,舉一個例子,對于一個標注任務『我愛北京天安門』:假設標注為" s c b e b c e"。

對于HMM的話,其判斷這個標注成立的概率為:
P= P(s轉移到c)*P('我'表現為s)* P(c轉移到b)*P('愛'表現為c)* ...
訓練時,要統計狀態轉移概率矩陣和符號發射概率矩陣。

對于MEMM的話,其判斷這個標注成立的概率為:
P= P(s轉移到c|'我'表現為s)*P('我'表現為s)* P(c轉移到b|'愛'表現為c)*P('愛'表現為c)*...
訓練時,要統計條件狀態轉移概率矩陣和符號發射概率矩陣。

前面也給出了這個圖:


HMM與MEMM依存圖對照

MEMM中,除了t-1時刻的狀態,當前時刻的觀察輸出也是當前時刻狀態的決定條件。

對于CRF的話,其判斷這個標注成立的概率為:
P= F(s轉移到s,'我'表現為s...)
F為一個函數,是在全局范圍統計歸一化的概率而不是像MEMM在局部統計歸一化的概率。

條件隨機場的條件概率公式較為復雜,這里不再給出推導過程。

條件隨機場也需要解決三個基本問題:特征的選取、解碼和參數訓練。

前面提到了條件隨機場就是一個馬爾可夫隨機場,這里簡要介紹一下馬爾可夫隨機場與條件隨機場的關系,參考了隨機場

馬爾可夫一般是馬爾可夫性質的簡稱,它指的是一個隨機變量序列按時間先后關系依次排開的時候,第N+1時刻的分布特性,與N時刻以前的隨機變量的取值無關。

隨機場包含兩個要素:位置(site),相空間(phase space)。當給每一個位置中按照某種分布隨機賦予相空間的一個值之后,其全體就叫做隨機場。我們不妨拿種地來打個比方。『位置』好比是一畝畝農田;『相空間』好比是種的各種莊稼。我們可以給不同的地種上不同的莊稼,這就好比給隨機場的每個『位置』,賦予『相空間』里不同的值。所以,俗氣點說,隨機場就是在哪塊地里種什么莊稼的事情。

然后類比馬爾可夫隨機場,還是拿種地打比方,如果任何一塊地里種的莊稼的種類僅僅與它鄰近的地里種的莊稼的種類有關,與其它地方的莊稼的種類無關,那么這些地里種的莊稼的集合,就是一個馬爾可夫隨機場。

其實通過上文也能發現,CRF和MRF(馬爾可夫隨機場)的關鍵區別就在馬爾可夫性質上,CRF是在給定需要標記的觀察序列的條件下,計算整個標記序列的聯合概率分布,而不是在給定當前狀態條件下,定義下一個狀態的狀態分布。

個人理解,馬爾可夫性質就是前面提到的有限歷史性假設,CRF舍棄掉了有限歷史性假設,這也就是CRF與MRF(馬爾可夫隨機場)的最大區別。

上面的講法可能還會有誤解,看下面這張圖:


樸素貝葉斯序列化得到HMM,Logistic回歸序列化得到鏈式CRF,HMM與鏈式CRF的區別就類似于樸素貝葉斯算法與Logistic回歸的區別。CRF舍棄掉了HMM的有限歷史性假設、輸出獨立性假設,由生成模型轉變為判別模型,由概率圖轉變為函數擬合(這句是解釋力最強的,如果你真的理解樸素貝葉斯算法和Logistic回歸算法的區別)。就像Logistic回歸,它不再像樸素貝葉斯算法那樣計算各種先驗條件概率,由貝葉斯公式得到計算結果,而是整體的去做函數擬合,表示出訓練集整體的聯合分布概率,并對其做期望最大化,這與CRF之于HMM是相同的。

自動分詞、命名實體識別與詞性標注

由于詞是最小的能夠獨立運用的語言單位,而漢語的詞與詞之間沒有任何空格之類的顯式標志指示詞的邊界,因此,自動分詞問題就成了處理漢語文本時面臨的首要基礎性問題。

漢語自動分詞中的基本問題

簡單地講,漢語自動分詞就是讓計算機系統在漢語文本的詞與詞之間自動加上空格或其他邊界標記。漢語自動分詞的主要困難來自如下三個方面:分詞規范、歧義切分和未登錄詞的識別。

首先是漢語分詞規范,『詞是什么』、『什么是詞』這兩個基本問題飄忽不定,迄今拿不出一個公認的、權威的詞表來。單字詞與詞素之間的劃界、詞與短語(詞組)的劃界,都是很難解決的問題。不同的人、普通人和語言學家之間的分詞標準都有很大的差異。

然后是歧義切分問題,梁南元定義了兩種基本的切分歧義類型,一個是交集型切分歧義,另一個是組合型切分歧義。

先說交集型切分歧義,漢字串AJB稱作交集型切分歧義,如果滿足AJ、JB同時為詞。此時漢字串J稱作交集串。比如『從小學起』可以切為『從小|學起』、『從|小學|起』。

一個交集型切分歧義所擁有的交集串的集合稱為交集串鏈,它的個數稱為鏈長。比如『結合成分子』,『結合』、『合成』、『成分』、『分子』均成詞,交集串的集合為『合、成、分』,因此鏈長為3。

接下來是組合型切分歧義,漢字串AB稱為多義組合型切分歧義,如果滿足A、B、AB同時成詞。比如『起身』,『他站|起|身|來』和『他|明天|起身|去北京』。還有別的例子,比如『才能』、『學生會』。而且嚴格定義的話,需要補充一個條件,文本中至少存在一個上下文語境C,在C的約束下,將AB切開成A、B,在語法和語義上都成立。

有人還將交集型切分歧義成為偶發歧義,多義組合型切分歧義稱為固有歧義。

對于一些較為復雜的文本,還可能會出現交集型歧義內包含組合型歧義的情況,有人稱其為混合型切分歧義。

第三個是未登錄詞問題。未登錄詞又稱生詞(unknown word),未登錄詞可以有兩種解釋,一種是已有的詞表中沒有收錄的詞,另一個種是已有的訓練語料中未曾出現過的詞。由于目前的漢語自動分詞系統多采用基于大規模訓練語料的統計方法,所以這兩種解釋通常可以不用區分。

未登錄詞可能是:

  • 新出現的普通詞,比如一些最先流行在互聯網上的詞
  • 命名實體,比如人名、地名(包括城市名、省名、國家名等)、組織機構名、時間和數字表達
  • 專業名詞和研究領域名稱,比如三聚氰胺、堰塞湖
  • 其他專用名詞,比如新出現的產品、電影、書籍名等等

而且,在漢語分詞中對命名實體詞匯的識別不是只識別整個實體的左右邊界,而是將命名實體中可獨立成詞的切分單位正確地識別出來。比如『2017年3月27日』,這是一個命名實體,但在分詞時不能將其整個的作為一個實體識別出來,而是要分出『2017|年|3|月|27|日』。比如人名也要把姓和名分開。

漢語分詞方法

漢語自動分詞問題被提出來之后,上世紀80年代及之前,人們提出過很多分詞方法,比如正向最大匹配法、逆向最大匹配法、雙向掃描法、逐詞遍歷法等。這些方法大多數都是基于詞表進行的,因此,一般統稱為基于詞表的分詞方法

隨著統計方法的迅速發展,人們又提出了若干基于統計模型(比如HMM和n元文法模型)的分詞方法,以及規則方法與統計方法相結合的分詞技術。

N-最短路徑方法

我們先來介紹N-最短路徑方法,考慮到漢語自動分詞中存在切分歧義消除和未登錄詞識別兩個主要問題,有人提出將分詞過程分為兩個階段:首先采用切分算法對句子詞語進行初步切分,得到一個相對最好的粗分結果,然后,再進行歧義排除和未登錄詞識別。

粗切分結果的準確性與包容性(即必須涵蓋正確結果)直接影響后續的歧義排除和未登錄詞識別模塊的效果,并最終影響整個分詞系統的正確率和召回率。

N-最短路徑方法就是一個漢語詞語粗分模型,基本思想是,先根據詞典找到字串中所有可能的詞,構造一個詞語切分的有向無環圖,每個詞對應一條有邊長(權值)的邊,然后我們找出由起點到終點的所有路徑中,擁有N個最小長度值的路徑結果,所以得到的路徑數量可能大于N。簡單的來說,就是整體上盡可能多的用上詞典里的詞,而不是讓詞處于未處理的狀態,因為詞的邊長要比組成詞的字的總邊長要短。

因為涉及到圖的邊長,N-最短路徑方法還可以分為非統計粗分模型和統計粗分模型,所謂非統計粗分模型就是假定切分有向無環圖中所有詞的權重都是相等的,即每個詞對應的邊長為1。

既然是求最短路徑,就要考慮Dijkstra算法了,Dijkstra算法的過程這里不講,下面是求『他說的確實在理』的3-最短路徑的示例:


『他說的確實在理』的求解過程(N=3)

最終起點0到終點7有兩條長度為5的路徑,一條長度為6的路徑,一條長度為7的路徑,從Table表中就可以看出。前驅(i,j)中的i表示到達當前節點的前一個節點,而j表示對應到前一個節點i編號為j的路徑上。這樣根據這個表就能回溯出所有的路徑。

非統計模型給每個詞對應邊的長度賦值為1,隨著字串長度n和最短路徑數N的增大,長度相同的路徑數會急劇增加,同時粗切分結果數量必然上升,這對于后期處理和整個分詞系統的性能很不利。接下來我們介紹基于統計的N-最短路徑方法。

假定一個詞串W經過信道傳送,由于噪聲干擾而丟失了詞界的切分標志,到輸出端便成了漢字串C。N-最短路徑方法詞語粗分模型可以相應地改進為:求N個候選切分W,使概率P(W|C)為前N個最大值。

然后根據貝葉斯公式P(W|C)=P(W)P(W|C)/P(C),P(C)是常數,P(W|C)為1,所以我們只需考慮P(W)即可,粗分的目標就是確定P(W)最大的N種切分結果。

然后我們采用一元文法模型,假定詞的出現相互獨立,以W=w1w2...wm作為一種切分結果,那切分W的概率為:

因為是連乘,為了處理方面,對其取對數,即變成了對數值的累加,那每一個對數值就可以看做是對應的詞在有向無環圖中的邊長,當然我們可能還需要做適當的數據平滑處理。

這樣對邊長進行修改后,直接代入之前非統計粗分模型的求解算法即可。

基于詞的n元語法模型的分詞方法

基于詞的n元語法模型是一個典型的生成式模型,早期很多統計分詞方法均以它為基本模型,然后配合其它未登錄詞識別模塊進行拓展。

基于詞的生成式模型的二元文法切分詞圖

其基本思想是:首先根據詞典對句子進行簡單匹配,找出所有可能的詞典詞,然后,將它們和所有的單個字作為結點構造n元的切分詞圖。圖中的結點表示可能的詞候選,邊表示路徑,邊上的n元概率表示代價,最后利用相關算法(如維特比算法)從圖中找到代價最小的路徑作為最后的分詞結果。

由于未登錄詞的識別是漢語分詞過程中的關鍵問題之一,因此,很多專家認為未登錄詞的識別與歧義切分應該是一體化處理的過程,而不是相互分離的。所以這種基于改進的信道信源模型的分詞方法被提出了。

為了給自動分詞任務一個明確的定義,J.Gao等人(2003)對文本中的詞給出了一個可操作的定義,把漢語詞定義成下列4類:

  • 待切分文本中能與分詞詞表中任意一個詞相匹配的字段為一個詞
  • 文本中任意一個經詞法派生出來的詞或短語為一個詞
  • 文本中被明確定義的任意一個實體名詞(如:日期、時間、貨幣、百分數、溫度、長度、面積、體積、重量、地址、電話號碼、傳真號碼、電子郵件地址等)是一個詞。
  • 文本中任意一個專有名詞(人名、地名、機構名)是一個詞。

假設隨機變量S為一個漢字序列,W是S上所有可能的詞序列結果,所以經過貝葉斯公式轉化,我們求的就是:


為了把4類詞納入同一個統計語言模型框架,一般把人名(PN)、地名(LN)、機構名(ON)各作為一類,實體名詞中的日期、時間、百分數、貨幣作為一類處理,簡稱實體名,詞法派生詞(MW)個詞表詞(LW)每個詞單獨作為一類。那么詞序列W可以被我們轉換成一個詞類序列C:


P(C)就是我們熟悉的語言模型,P(S|C)我們可以稱之為基于詞的生成式模型。

對P(C)我們采用三元文法模型:


而對于P(S|C),我們認為其滿足獨立性假設,總概率為各個概率的乘積,而對每個詞類的處理參考下表:


一些數據平滑操作也是需要的。

模型的訓練過程一般如下:

  • 在詞表的基礎上,先根據正向最大匹配法切分訓練語料,專有名詞特殊標注,實體名詞用規則和有限狀態自動機標注,得到一份帶類別標記的初始語料
  • 根據語料,采用最大似然估計法估計模型的概率參數
  • 采用得到的語言模型對訓練語料進行重新切分和標注
  • 重復上兩步直到系統性能不再有明顯提高

對于交集型歧義字段(OAS),該方法首先通過最大匹配檢測出這些字段,然后用一個特定的類<GAP>取代全體OAS,以此來訓練語言模型P(C)。類<GAP>通過消歧規則或機器學習方法來估計。

對于組合型歧義字段(CAS),該方法通過對訓練語料的統計,選出最高頻、且分布比較均勻的70條CAS,用機器學習方法為每一條CAS訓練一個二值分類器,這些分類器用于訓練語料中消解這些CAS的歧義。

由字構詞的漢語分詞方法

由字構詞的漢語分詞方法將分詞看做字的分類問題,是一種基于字的判別式模型,在以往的分詞方法中,無論是基于規則的方法還是基于統計的方法,一般都依賴于一個事先編制的詞表,自動分詞過程就是通過查詞表作出詞語切分的決策。與此相反,由字構詞的分詞方法認為每個字在構造一個特定的詞語時都占據著一個確定的構詞位置,比如詞首(B)、詞中(M)、詞尾(E)、單獨成詞(S)。

分詞結果表示成字標注形式之后,分詞問題就變成了序列標注問題。

因為我們需要根據上下文來判斷待消歧問題的結果,所以通常情況下,使用基于字的判別模型時需要在當前字的上下文中開一個w字的窗口(一般取w=5,也就是前后各兩個字),在這個窗口里抽取分詞相關的特征,常用的特征模板如下:

  • c(k)(k=-2,-1,0,1,2)
  • c(k)c(k+1)(k=-2,-1,0,1)
  • c(-1)c(1)
  • T(c(-2))T(c(-1))T(c(0))T(c(1))T(c(2))

c指k位置上的字,T指字的類型。

有了這些特征以后,我們就可以利用常見的判別模型,比如最大熵模型、條件隨機場、SVM和感知機等進行參數訓練了。

由字構詞的重要優勢在于,它能夠平衡地看待詞表詞和未登錄詞的識別問題,文本中的詞表詞和未登錄都是用統一的字標注過程來實現的,分詞過程就成了字重組的簡單過程。

基于詞感知機算法的漢語分詞方法

基于詞感知機算法的漢語分詞方法是一種基于詞的判別式模型,不同于前面基于詞的生成模型和基于字的判別模型。該模型采用平均感知機作為學習算法,直接使用詞而不是字的相關特征。

基于感知機算法的漢語自動分詞方法的基本思路是,對于任意給定一個輸入句子,解碼器每次讀一個字,生成所有的候選詞。生成候選詞的方式有兩種,第一個是,作為上一個候選詞的末尾,與上一個候選詞組合成一個新的候選詞;或者是,作為下一個候選詞的開始。這種方式可以保證在解碼過程中窮盡所有分詞候選。

在解碼的過程中,解碼器維持兩個列表,源列表和目標列表。開始時,兩個列表都為空。解碼器每讀入一個字,就與源列表中的候選組合,按上一段說的兩種方法,生成兩個新的候選詞放入目標列表。當源列表中的候選都處理完成之后,將目標列表中的所有候選詞復制到源列表中,并清空目標列表。然后讀入下一個字,如此循環往復直到句子結束。

這種算法類似于全切分算法,理論上生成切分結果的數量會隨句長指數增長,為了提升速度,可以對目標列表的條目數進行限制,每次只保留B個得分最高的候選。可以用平均感知機算法對目標列表中的切分候選進行打分和排序。

平均感知機算法也是套用一些特征模板,使用一些規則,進行打分和排序,這里不再細說。

基于字的生成式模型和判別式模型相結合的漢語分詞方法

前面講的,基于詞的n元語法模型(生成式模型)和基于字的序列標注模型(判別式模型)是兩大主流方法。

其中,基于詞的生成式模型在處理詞典詞時可以獲得較好的表現,而基于字的判別式模型則想法,對未登錄詞的處理要更好一些。

而且實驗發現,兩個處于詞邊界的字之間的依賴關系和兩個處于詞內部的字的依賴關系是不一樣的。基于詞的生成式模型實際上隱含的考慮了這種處于不同位置的字的依賴關系,而基于字的判別式模型卻無法考慮這種依賴關系。但是判別式模型能夠充分利用上下文特征信息,擁有較大的靈活性和魯棒性,所以基于字的n元語法模型,并將生成式模型與判別式模型相結合的漢語分詞方法被提出。

我們將基于詞的生成式模型中的詞替換為相應的字即得到了基于字的生成式模型。

基于字的生成式模型仍然以字作為基本單位,但考慮了字與字之間的依賴關系,與基于字的判別式模型相比,處理詞典詞的能力有了大幅改觀。但是該模型并不能像基于字的判別模型那樣考慮整個窗口,也即當前字后面的上下文。因此,基于字的生成式模型在處理未登錄詞的能力仍然若于基于字的判別式模型。

為了同時利用生成式模型和判別式模型的優點,利用線性插值法將這兩個模型進行整合,就提出了集成式分詞模型。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容