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

命名實體識別

命名實體的提出源自信息抽取問題,即從報章等非結構化文本中抽取關于公司活動和國防相關活動的結構化信息,而人名、地名、組織機構名、時間和數字表達式結構化信息的關鍵內容,所以需要從文本中去識別這些實體指稱及其類別,即命名實體識別和分類。

21世紀以后,基于大規模語料庫的統計方法成為自然語言處理的主流,以下是基于統計模型的命名實體識別方法歸納:


基于CRF的命名實體識別方法

基于CRF的命名實體識別方法簡便易行,而且可以獲得較好的性能,廣泛地應用于人名、地名和組織機構等各種類型命名實體的識別,可以說是命名實體識別中最成功的方法。

其基本思路是,將給定的文本首先進行分詞處理,然后對人名、簡單地名和簡單組織機構名進行識別,最后識別復合地名和復合組織機構名,復合指嵌套關系。

基于CRF的命名實體識別方法屬于有監督的學習方法,因此需要利用已標注的大規模語料對CRF模型的參數進行訓練。

在訓練階段,首先需要將分詞語料的標記轉化成用于命名實體序列標注的標記。接下來要做的事情是確定特征模板,特征模板一般采用當前位置的前后2~3個位置上的字串及其標記作為構成特征模型的符號。而且由于不同的命名實體一般出現在不同的上下文語境中,因此對于不同的命名實體(如中國人名、日本人名、歐美人名、俄羅斯人名)識別一般采用不同的特征模板。我們由特征得到特征函數,且不同的特征之間可以組合。

特征函數確定以后,剩下的工作就是訓練CRF模型參數了。

基于多特征的命名實體識別方法

在命名實體識別中,無論采用哪一種方法,都是試圖發現和利用實體所在的上下文特征和實體的內部特征,只不過特征的顆粒度有大(詞性和角色級特征)有?。ㄔ~形特征)的問題??紤]到大顆粒度特征和小顆粒度特征有互相補充的作用,應該兼顧使用的問題,多特征相融合的漢語命名實體識別方法被提出了。

該方法是在分詞和詞性標注的基礎上進一步進行命名實體的識別,由詞形上下文模型、詞性上下文模型、詞形實體詞模型和詞性實體詞模型4個子模型組成的。

其中,詞形上下文模型估計在給定詞形上下文語境中產生實體的概率;詞性上下文模型估計在給定詞性上下文語境中產生實體的概率;詞形實體模型估計在給定實體類型的情況下詞形串作為實體的概率;詞性實體模型估計在給定實體類型的情況下詞性串作為實體的概率

系統性能表現主要通過準確率、召回率和F-測度3個指標來衡量。準確率和召回率在前面的文章中講過了,這里說一下F-測度:


F-測度綜合考慮了準確率和召回率。

詞性標注

詞性(part-of-speech)是詞匯基本的語法屬性,通常也稱為詞類。詞性標注就是在給定句子中判定每個詞的語法范疇,確定其詞性并加以標注的過程,是中文信息處理面臨的重要基礎性問題。

基于統計模型的詞性標注方法

我們可以基于HMM去實現詞性標注方法,實現基于HMM的詞性標注方法中,模型的參數估計是其中的關鍵問題,也就是HMM的第三個問題,當時我們講可以隨機地初始化HMM的所有參數,但是,這將使詞性標注問題過于缺乏限制。

因此,通常利用詞典信息約束模型的參數。假設輸出符號表由單詞構成(即詞序列為HMM的觀察序列),如果某個對應的『詞匯-詞性標記』沒有被包含在詞典中,那該詞匯被標記為該詞性標記的概率就為0;如果存在,那該詞匯被標記為某詞匯標記的概率為其所有可能被標記的所有詞性個數的倒數:


然后我們根據訓練語料給定詞性標記生成詞的概率,我們思考一下,如何根據訓練語料來合理的估計模型概率,對于某詞性標記j生成詞wl的概率,分子我們用詞wl出現的次數乘以該詞匯被標記為該詞匯標記的概率,分母是在訓練語料范圍內,所有詞被標記為該詞匯標記的概率乘以該詞出現的次數。某詞性標記j生成詞wl的概率,也即下式:

不僅考慮詞出現次數的原因,個人理解,一是考慮到前面說過的,有些詞是不能由特定詞性標記輸出的,所以其乘積為0,累加時就會被忽略;二是在估計模型參數時考慮到詞本身所可能對應的詞性標記的個數,在計算特定詞性標記的生成概率時,給予對應詞性標記少的詞匯一定的優待,給予其一定的概率傾斜。

另外,還有一種方法是采用將詞匯劃分成若干等價類的策略,以類為單位進行參數統計,進而避免了為每個單詞單獨調整參數,大大減少了參數的總個數。

一旦初始化完成后,就可以按照HMM的前向后向算法進行訓練。

還有一點要注意的是,由于不同領域語料的概率有所差異,HMM的參數也應隨著語料的變化而變化。

這就涉及到一個問題,在對原有的訓練語料增加新的語料以后,模型的參數就需要重新調整了。而根據經典HMM的理論,也就是上篇講的HMM,已經訓練過的語料就難以再發揮作用了,所以這里希望當有新語料進來時,新舊語料能夠同時發揮作用。

只需要對HMM的前向后向算法做一些微調即可,我們還記得,前向后向算法需要根據初始化好的模型去計算轉移概率的期望值,再根據期望值去估計模型參數,也即π、aij、bj(k),最終收斂,我們得到了訓練完畢的π、aij、bj(k),但是這里我們不只保存π、aijbj(k),我們還要保存前一步的結果,也就是那些期望值,這樣,當新的語料引入時,我們將原來模型中保存的期望值與新語料訓練的期望值相加,即得到了反映新舊語料期望值變量的值,通過計算即可得到新的模型。這樣也就解決了舊語料的利用問題。

基于規則的詞性標注方法

基于規則的詞性標注方法是人們提出較早的一種詞性標注方法,其基本思想是按兼類詞(擁有多種可能詞性的詞)搭配關系和上下文語境建造詞類消歧規則,早期的規則一般由人編寫。

然而隨著語料庫規模的逐步增大,以人工提取規則的方式顯然是不現實的,于是人們提出了基于機器學習的規則自動提取方法。如下圖所示:


基于規則的錯誤驅動的機器學習方法的基本思想是,首先運用初始狀態標注器標識未標注的文本,由此產生已標注的文本。文本一旦被標注以后,將其與正確的標注文本進行比較,學習器可以從錯誤中學到一些規則,從而形成一個排序的規則集,使其能夠修正已標注的文本,使標注結果更接近于參考答案。

這樣,在所有學習到的可能的規則中,搜索那些使已標注文本中的錯誤數減少最多的規則加入到規則集,并將該規則用于調整已標注的文本,然后對已標注的語料重新打分(統計錯誤數)。不斷重復該過程,直到沒有新的規則能夠使已標注的語料錯誤數減少。最終的規則集就是學習到的規則結果。

這種方法的標注速度要快于人工,但仍然存在著學習時間過長的問題,改進方法是,在算法的每次迭代過程中,只調整受到影響的小部分規則,而不需要搜索所有的轉換規則。因為每當一條獲取的規則對訓練語料實施標注后,語料中只有少數詞性會發生改變,而只有在詞性發生改變的地方,才影響與該位置相關的規則的得分。

統計方法與規則方法相結合的詞性標注方法

有人提出了這樣一種詞性標注方法,其基本思想是,對漢語句子的初始詞性標注結果,先經過規則排歧,排除漢語中那些最常見的、語言現象比較明顯的歧義現象,然后再通過統計排歧,處理那些剩余的多類詞并進行未登錄詞的詞性推斷,最后再進行人工校對,得到正確的標注結果。人工校對時可以發現系統中的問題,并進行改進。

但是上面這種方法存在一個很大的問題就是統計的可信度,我們不知道統計結果的可信度,總是需要人工校對所有的統計排歧結果,所以有人又提出了一種新的統計方法與規則方法相結合的詞性標注方法。

新的方法通過計算詞被標注為所有詞性的概率,來對統計標注的結果給出一個可信度,這樣對于所有的語料,先經過統計標注,然后對那些可信度小于閾值,或者說錯誤可能性高于閾值的統計標注結果,才進行人工校對和采用規則方法進行歧義消解。

詞性標注的一致性檢查與自動校對

在語料庫建設中,詞性標注的一致性檢查和自動校對是不可缺少的重要環節。

一般情況下,語料庫中出現的詞性標注不一致現象主要由兩種,一種情況是,詞匯在詞表中本來是非兼類詞,只有一種詞性標記,在語料中卻被標注了不同的詞性標記;另一種情況是,詞匯在詞表中本來就是兼類詞,允許不同的詞性標注,可在標注語料語境相同時出現了不同的詞性標注。

第一種現象比較好解決,第二種現象可以采用基于聚類和分類的詞性標注一致性檢查方法,其基本觀點是,同一個詞在相似的上下文中應該具有相同的詞性。所以,根據訓練語料,可以對每個兼類詞分別計算出詞性標注相同時期上下文語境向量的平均值VA,然后計算該兼類詞被標注成每個可能的詞性符號時所在的上下文語境向量與相應的VA之間的關系,如果
與VA之間的距離大于了某個閾值H,則認為其可能出現了詞性標注不一致。

然后是詞性標注的自動校對方法,在計算機自動實現詞性標注的語料中,錯誤情況一般分為兩種,一種是,對于同樣的情況,如果一個地方出錯則通篇有錯,一錯到底。而另一種情況是,只有部分出錯,這也就是前面的一致性問題之一,已經給出了解決方法。

而對于一錯到底的情況,處理方法的基本思路實際上也相似,其基本思路是通過機器學習,從大規模訓練語料中抽取每個兼類詞在特定上下文語境中被標注的詞性信息,形成一個詞性校對決策表。這里用的不再是平均值了,對于被校對的標注語料,首先檢測每個兼類詞的上下文語境與決策表中的對應語境是否匹配,若匹配,則認為該校對語料中的兼類詞的語境與決策表中的條件一直,那其兼類詞的詞性也應該一致。

句法分析

句法分析的基本任務是確定句子的語法結構或句子中詞匯之間的依存關系。句法分析不是一個自然語言處理任務的最終目標,但它往往是實現最終目標的關鍵環節。

句法分析分為句法結構分析依存關系分析兩種。以獲取整個句子的句法結構為目的的稱為完全句法分析,而以獲得局部成分為目的的語法分析稱為局部分析,依存關系分析簡稱依存分析

一般而言,句法分析的任務有三個:

  • 判斷輸出的字符串是否屬于某種語言
  • 消除輸入句子中詞法和結構等方面的歧義
  • 分析輸入句子的內部結構,如成分構成、上下文關系等。

第二三個任務一般是句法分析的主要任務。

一般來說,構造一個句法分析器需要考慮兩部分工作:一部分是語法的形式化表示和詞條信息描述問題,形式化的語法規則構成了規則庫,詞條信息等由詞典或同義詞表等提供,規則庫與詞典或同義詞表構成了句法分析的知識庫;另一部分就是基于知識庫的解析算法了。

語法形式化屬于句法理論研究的范疇,目前在自然語言處理中廣泛使用的是上下文無關文法(CFG)和基于約束的文法,后者又稱合一文法。

簡單的講,句法結構分析方法可以分為基于規則的分析方法和基于統計的分析方法兩大類。

基于規則的句法結構分析方法的基本思路是,由人工組織語法規則,建立語法知識庫,通過條件約束和檢查來實現句法結構歧義的消除。

根據句法分析樹形成方向的區別,人們通常將這些方法劃分為三種類型:自頂向下的分析方法,自底向上的分析方法和兩者相結合的分析方法。自頂向下分析算法實現的是規則推導的過程,分析樹從根結點開始不斷生長,最后形成分析句子的葉結點。而自底向上分析算法的實現過程恰好想法,它是從句子符號串開始,執行不斷規約的過程,最后形成根節點。

基于規則的語法結構分析可以利用手工編寫的規則分析出輸入句子所有可能的句法結構;對于特定領域和目的,利用有針對性的規則能夠較好的處理句子中的部分歧義和一些超語法(extra-grammatical)現象。

但對于一個中等長度的輸入句子來說,要利用大覆蓋度的語法規則分析出所有可能的句子結構是非常困難的,而且就算分析出來了,也難以實現有效的消歧,并選擇出最有可能的分析結果;手工編寫的規則帶有一定的主觀性,還需要考慮到泛化,在面對復雜語境時正確率難以保證;手工編寫規則本身就是一件大工作量的復雜勞動,而且編寫的規則領域有密切的相關性,不利于句法分析系統向其他領域移植。

基于規則的句法分析算法能夠成功的處理程序設計語言的編譯,而對于自然語言的處理卻始終難以擺脫困境,是因為程序設計語言中使用的知識嚴格限制的上下文無關文法的子類,但自然語言處理系統中所使用的形式化描述方法遠遠超過了上下文無關文法的表達能力;而且人們在使用程序設計語言的時候,一切表達方式都必須服從機器的要求,是一個人服從機器的過程,這個過程是從語言的無限集到有限集的映射過程,而在自然語言處理中則恰恰相反,自然語言處理實現的是機器追蹤和服從人的語言,從語言的有限集到無限集推演的過程。

完全語法分析

基于PCFG的基本分析方法

基于概率上下文無關文法的短語結構分析方法,可以說是目前最成功的語法驅動的統計句法分析方法,可以認為是規則方法與統計方法的結合。

PCFG是CFG的擴展,舉個例子:


PCFG

當然,同一個符號不同生成式的概率之和為1。NP是名詞短語、VP是動詞短語、PP是介詞短語。

基于PCFG的句法分析模型,滿足以下三個條件:

  • 位置不變性:子樹的概率不依賴于該子樹所管轄的單詞在句子中的位置
  • 上下文無關性:子樹的概率不依賴于子樹控制范圍以外的單詞
  • 祖先無關性:子樹的概率不依賴于推導出子樹的祖先節點

根據上述文法,『He met Jenny with flowers』有兩種可能的語法結構:


而且我們可以通過將樹中的所有概率相乘,得到兩棵子樹的整體概率,從中選擇概率更大的子樹作為最佳結構。

與HMM類似,PCFG也有三個基本問題:

  • 給定一個句子W=w1w2…wn和文法G,如何快速計算概率P(W|G)
  • 給定一個句子W=w1w2…wn和文法G,如何選擇該句子的最佳結構?即選擇句法結構樹t使其具有最大概率
  • 給定PCFG G和句子W=w1w2…wn,如何調節G的概率參數,使句子的概率最大

首先是第一個問題,HMM中我們用的是前向算法和后向算法來計算觀察序列O概率,相似的,這里我們用的是內向算法和外向算法來計算P(W|G) 。

首先我們定義內向變量αij(A),與前向變量相似但又有不同,αij(A)即非終結符A推導出W中字串wiw(i+1)…wj的概率。那P(W|G)自然就等于α1n(S)了,S是起始符號,計算的就是由起始符號S推導出整個句子W=w1w2…wn的概率。

所以只要有αij(A)的遞歸公式就能計算出P(W|G),遞歸公式如下:

根據定義,αii(A)自然就等同于符號A輸出wi的概率;而αij(A)的計算思路是,這個子串wiw(i+1)…wj可以被切成兩部分處理,前一部分wiw(i+1)…wk由非終結符號B生成,后一部分wkw(k+1)…wj由非終結符號C生成,而BC由A生成。這樣將概率依次相乘,即可將一個大問題劃分為兩個小問題處理,兩個小問題又可以進一步劃分直到不能劃分為止,然后遞歸回來得到結果。

這里給一張內向變量計算方法示意圖:


這個問題也可以用外向算法來解決。

首先定義外向變量,βij(A)是,初始符號S在推導出語句W=w1w2…wn的過程中,產生符號串w1w2…w(i-1)Aw(j+1)…wn的概率(隱含著A會生成wiw(i+1)…wj)。也就是說βij(A)是S推導出除了以A節點為根節點的子樹以外的其他部分的概率。

《統計自然語言處理(第二版)》這本書里講錯了,這里我給出我自己的理解,書里給的算法步驟如下:


很明顯的錯誤,初始化都把結果初始化了,那這個算法還算什么,直接等于1就完了唄。

這是作者對外向變量定義理解模糊的問題,上面給了外向變量的定義,里面有一句話『隱含著A會生成wiw(i+1)…wj』,那問題在于,A會生成wiw(i+1)…wj,這到底算是條件還是推論。

看這個算法的初始化的意思,說β1n(A),在A=S的時候,為1,不等于S為0,意思是什么?意思就是『隱含著A會生成wiw(i+1)…wj』這句話是條件,β1n(S)已經隱含了S生成W=w1w2…wn了,所謂的w1w2…w(i-1)Aw(j+1)…wn也就不存在了,只剩下一個S->S了,所以概率自然為1。

但是在第三步這個地方,作者理解成什么意思了呢?作者又把『隱含著A會生成wiw(i+1)…wj』這句話當成推論了,認為在β1n(S),里S會生成W=w1w2…wn是推論,那真是就正好了,要求的結果就是S生成W=w1w2…wn,這不就結束了嗎,結果就導致了這個算法第一步初始化都把結果初始化了。

那我的理解是什么呢,通過這個公式計算出來的β1n(S),確實是正確的,意義實際上也是包含了『隱含著A會生成wiw(i+1)…wj』這句話是推論,但是右側式子里由于不斷遞歸而產生的β1n(S),是把『隱含著A會生成wiw(i+1)…wj』這句話當條件的,所以計算上沒有問題。

我傾向于為第三步中的β1n(S)加一個星號,以表明意義的不同。

書中還給了個外向變量的計算方法示意圖,我覺得也是莫名其妙:


他說βij(A)是這兩種情況的概率和,這我們知道ji大,那這圖里這個k既比i小又比j大,這不是搞笑嗎。只能說圖上這倆C就不是一個C,k也不是一個k

那我為什么會理解成一個呢,除了字母相同,他前面還這么講『必定運用了形如B->AC或者B->CA的規則』、『運用B->AC或者B->CA兩種規則的情況』,這明顯就是給人以順序交換的誤解。

另外,還在內向變量的使用上前后不一,可以說這本書里對外向算法的講解是非常失敗的。而且對外向算法的計算仍然需要用到內向算法的遞歸,那真的直接用內向算法就好了,外向算法還要多定義變量。

然后是第二個問題,選擇句子的最佳結構,也即給定一個句子W=w1w2…wn和文法G,
選定擁有最大概率的語法結構樹。這一問題與HMM中類似,仍然采用動態規劃的思想去解決。最后利用CYK算法去生成擁有最大概率的語法結構樹。

第三個問題是給定PCFG G和句子W=w1w2…wn,如何調節G的概率參數,使句子的概率最大,與HMM相對的,PCFG這里采用的算法名叫內外向算法。與前后向算法相同,也屬于一種EM算法,其基本思想是,首先給G的產生式隨機地賦予一個概率值(滿足歸一化條件),得到文法G0,然后根據G0和訓練數據,可以計算出每條規則使用次數的期望值,用期望值進行最大似然估計,得到語法G的新參數值,新的語法記作G1,然后循環執行該過程,G的參數概率將收斂于最大似然估計值。

PCFG只是一種特殊的上下文無關文法模型,根據PCFG的模型和句子,具體去對句子做語法分析,生成語法結構樹,靠的是還是CYK算法。CYK算法是一個用來判定任意給定的字符串W是否屬于一個上下文無關文法的算法。

基于PCFG的句法分析模型存在有許多問題,比如因為PCFG沒有對詞匯進行建模,所以存在對詞匯信息不敏感的問題。因此人們提出了詞匯化的短語結構分析器,有效的提升了基于PCFG的句法分析器的能力。

而且,我們上面也提到了PCFG的三個獨立性假設,這也導致了規則之間缺乏結構依賴關系(就像HMM的三個假設也不完全合理一樣),而在自然語言中,生成每個非終結符的概率往往是與其上下文結構有關系的,所以有人提出了一種細化非終結符的方法,為每個非終結符標注上其父節點的句法標記信息。

D. Klein提出了帶有隱含標記的上下文無關文法(PCFG with latent annotations,PCFG-LA),使得非終結符的細化過程可以自動進行,并且在使用EM算法優化時,為避免到達局部最優,對其進行了改進,提出了一種層次化的『分裂-合并』策略,以期獲取一個準確并且緊湊的PCFG-LA模型。基于PCFG-LA的Berkeley Parser作為非詞匯化句法分析器的代表,無論是性能表現還是運行速度,都是目前開源的短語結構分析器中最好的。其語法樹如下圖:

普通句法樹與PCFG-LA句法樹對照實例

這個x就是隱含標記,xi的取值范圍一般是人為設定的,一般取1~16之間的整數。而且PCFG-LA也類似于HMM模型,原始非終結符對應HMM模型中的觀察輸出,而隱含標記對應HMM模型中的隱含狀態。

具體的PCFG-LA訓練過程,這里不詳述。

淺層語法分析(局部語法分析)

由于完全語法分析要確定句子所包含的全部句法信息,并確定句子中各成分之間的關系,這是一項十分苦難的任務。到目前為止,句法分析器的各方面都難以達到令人滿意的程度,為了降低問題的復雜度,同時獲得一定的句法結構信息,淺層句法分析應運而生。

淺層語法分析只要求識別句子中的某些結構相對簡單的獨立成為,例如非遞歸的名詞短語、動詞短語等,這些被識別出來的結構通常稱為語塊(chunk)。

淺層句法分析將句法分析分解為兩個主要子任務,一個是語塊的識別和分析,另一個是語塊之間的依附關系分析。其中,語塊的識別和分析是主要任務。在某種程度上說,淺層句法分析使句法分析的任務得到了簡化,同時也有利于句法分析系統在大規模真實文本處理系統中迅速得到應用。

基本名詞短語(base NP)是語塊中的一個重要類別,它指的是簡單的、非嵌套的名詞短語,不含有其他子項短語,并且base NP之間結構上是獨立的。示例如下:


base NP識別就是從句子中識別出所有的base NP,根據這種理解,一個句子中的成分和簡單的分為baseNP和非base NP兩類,那么base NP識別就成了一個分類問題。

base NP的表示方法有兩種,一種是括號分隔法,一種是IOB標注法。括號分隔法就是將base NP用方括號界定邊界,內部的是base NP,外部的不屬于base NP。IOB標注法中,字母B表示base NP的開端,I表示當前詞語在base NP內,O表示詞語位于base NP之外。

基于SVM的base NP識別方法

由于base NP識別是多值分類問題,而基礎SVM算法解決的是二值分類問題,所以一般可以采用配對策略(pairwise method)和一比其余策略(one vs. other method)。

SVM一般要從上下文的詞、詞性、base NP標志中提取特征來完成判斷。一般使用的詞語窗口的長度為5(當前詞及其前后各兩個詞)時識別的效果最好。

基于WINNOW的base NP識別方法

WINNOW是解決二分問題的錯誤驅動的機器學習方法,該方法能從大量不相關的特征中快速學習。

WINNOW的稀疏網絡(SNoW)學習結構是一種多類分類器,專門用于處理特征識別領域的大規模學習任務。WINNOW算法具有處理高維度獨立特征空間的能力,而在自然語言處理中的特征向量恰好具有這種特點,因此WINNOW算法也常用于詞性標注、拼寫錯誤檢查和文本分類等等。

簡單WINNOW的基本思想是,已知特征向量和參數向量和實數閾值θ,先將參數向量均初始化為1,將訓練樣本代入,求特征向量和參數向量的內積,將其與θ比較,如果大于θ,則判定為正例,小于θ則判定為反例,將結果與正確答案作比較,依據結果來改變權值。

如果將正例估計成了反例,那么對于原來值為1的x,把它的權值擴大。如果將反例估計成了正例,那么對于原來值為1的x,把它的權值縮小。然后重新估計重新更改權重,直到訓練完成。

這其實讓我想到了LR算法,因為LR算法也是特征向量與參數向量的內積,最后將其送到Sigmoid函數中去拿到判定結果,然后大于0.5的為正例,小于0.5的為反例,實際上只要反過來,Sigmod函數輸出0.5時候的輸入就是WINNOW算法里的那個實數閾值θ。但是區別在于WINNOW算法只判定大小,不判定概率,而LR利用Sigmoid函數給出了概率。LR利用這給出的概率,通過使訓練集的生成概率最大化來調整參數,而WINNOW則是直接樸素的錯誤情況來增大或縮小相關參數。目測LR因為使用了梯度下降,它的收斂速度要快于WINNOW,而WINNOW的優勢則在于可以處理大量特征。

基于CRF的base NP識別方法

基于CRF的base NP識別方法擁有與SVM方法幾乎一樣的效果,優于基于WINNOW的識別方法、基于MEMM的識別方法和感知機方法,而且基于CRF的base NP識別方法在運行速度上較其他方法具有明顯優勢。

依存語法理論

在自然語言處理中,我們有時不需要或者不僅僅需要整個句子的短語結構樹,而且要知道句子中詞與詞之間的依存關系。用詞與詞之間的依存關系來描述語言結構的框架成為依存語法,又稱從屬關系語法。利用依存語法進行句法分析也是自然語言理解的重要手段之一。

有人認為,一切結構語法現象可以概括為關聯、組合和轉位這三大核心。句法關聯建立起詞與詞之間的從屬關系,這種從屬關系由支配詞從屬詞聯結而成,謂語中的動詞是句子的中心并支配別的成分,它本身不受其他任何成分支配。

依存語法的本質是一種結構語法,它主要研究以謂詞為中心而構句時由深層語義結構映現為表層語法結構的狀況及條件,謂詞與體詞之間的同現關系,并據此劃分謂詞的詞類。

常用的依存于法結構圖示有三種:


計算機語言學家J. Robinson提出了依存語法的四條公理:

  • 一個句子只有一個獨立的成分
  • 句子的其他成分都從屬于某一成分
  • 任何一個成分都不能依存于兩個或兩個以上的成分
  • 如果成分A直接從屬于成分B,而成分C在句子中位于A和B之間,那么,成分C或者屬于成分A,或者從屬于B,或者從屬于A和B之間的某一成分。

這四條公理相當于對依存圖和依存樹的形式約束:單一父節點、連通、無環和可投射,由此來保證句子的依存分析結果是一棵有根的樹結構。

這里提一下可投射,如果單詞之間的依存弧畫出來沒有任何的交叉,就是可投射的(參考上面的兩個有向圖)。

為了便于理解,我國學者提出了依存結構樹應滿足的5個條件:

  • 單純結點條件:只有終結點,沒有非終結點
  • 單一父結點條件:除根節點沒有父結點外,所有的結點都只有一個父結點
  • 獨根結點條件:一個依存樹只能有一個根結點,它支配其他結點
  • 非交條件:依存樹的樹枝不能彼此相交
  • 互斥條件:從上到下的支配關系和從左到右的前于關系之間是相互排斥的,如果兩個結點之間存在著支配關系,它們就不能存在于前于關系

這五個條件是有交集的,但它們完全從依存表達的空間結構出發,比四條公理更直觀更實用。

Gaifman 1965年給出了依存語法的形式化表示,證明了依存語法與上下文無關文法沒有什么不同..

類似于上下文無關文法的語言形式對被分析的語言的投射性進行了限制,很難直接處理包含非投射現象的自由語序的語言。20世紀90年代發展起來了約束語法和相應的基于約束滿足的依存分析方法,可以處理此類非投射性語言問題。

基于約束滿足的分析方法建立在約束依存語法之上,將依存句法分析看做可以用約束滿足問題來描述的有限構造問題。

約束依存語法用一系列形式化、描述性的約束將不符合約束的依存分析去掉,直到留下一棵合法的依存樹。

生成式依存分析方法、判別式依存分析方法和確定性依存分析方法是數據驅動的統計依存分析中具有代表性的三種方法。

生成性依存分析方法

生成式依存分析方法采用聯合概率模型生成一系列依存語法樹并賦予其概率分值,然后采用相關算法找到概率打分最高的分析結果作為最后輸出。

生成式依存分析模型使用起來比較方便,它的參數訓練時只在訓練集中尋找相關成分的計數,計算出先驗概率。但是,生成式方法采用聯合概率模型,再進行概率乘積分解時做了近似性假設和估計,而且,由于采用全局搜索,算法的復雜度較高,因此效率較低,但此類算法在準確率上有一定優勢。但是類似于CYK算法的推理方法使得此類模型不易處理非投射性問題。

判別式依存分析方法

判別式依存分析方法采用條件概率模型,避開了聯合概率模型所要求的獨立性假設(考慮判別模型CRF舍棄了生成模型HMM的獨立性假設),訓練過程即尋找使目標函數(訓練樣本生成概率)最大的參數θ(類似Logistic回歸和CRF)。

判別式方法不僅在推理時進行窮盡搜索,而且在訓練算法上也具有全局最優性,需要在訓練實例上重復句法分析過程來迭代參數,訓練過程也是推理過程,訓練和分析的時間復雜度一致。

確定性依存方法

確定性依存分析方法以特定的方向逐次取一個待分析的詞,為每次輸入的詞產生一個單一的分析結果,直至序列的最后一個詞。

這類算法在每一步的分析中都要根據當前分析狀態做出決策(如判斷其是否與前一個詞發生依存關系),因此,這種方法又稱決策式分析方法。

通過一個確定的分析動作序列來得到一個唯一的句法表達,即依存圖(有時可能會有回溯和修補),這是確定性句法分析方法的基本思想。

短語結構與依存結構之間的關系

短語結構樹可以被一一對應地轉換成依存關系樹,反之則不然。因為一棵依存關系樹可能會對應多棵短語結構樹。

語義分析

對于不同的語言單位,語義分析的任務各不相同。在詞的層次上,語義分析的基本任務是進行詞義消歧(WSD),在句子層面上是語義角色標注(SRL),在篇章層面上是指代消歧,也稱共指消解。

詞義消歧

由于詞是能夠獨立運用的最小語言單位,句子中的每個詞的含義及其在特定語境下的相互作用構成了整個句子的含義,因此,詞義消歧是句子和篇章語義理解的基礎,詞義消歧有時也稱為詞義標注,其任務就是確定一個多義詞在給定上下文語境中的具體含義。

詞義消歧的方法也分為有監督的消歧方法和無監督的消歧方法,在有監督的消歧方法中,訓練數據是已知的,即每個詞的詞義是被標注了的;而在無監督的消歧方法中,訓練數據是未經標注的。

多義詞的詞義識別問題實際上就是該詞的上下文分類問題,還記得詞性一致性識別的過程嗎,同樣也是根據詞的上下文來判斷詞的詞性。

有監督詞義消歧根據上下文和標注結果完成分類任務。而無監督詞義消歧通常被稱為聚類任務,使用聚類算法對同一個多義詞的所有上下文進行等價類劃分,在詞義識別的時候,將該詞的上下文與各個詞義對應上下文的等價類進行比較,通過上下文對應的等價類來確定詞的詞義。此外,除了有監督和無監督的詞義消歧,還有一種基于詞典的消歧方法。

在詞義消歧方法研究中,我們需要大量測試數據,為了避免手工標注的困難,我們通過人工制造數據的方法來獲得大規模訓練數據和測試數據。其基本思路是將兩個自然詞匯合并,創建一個偽詞來替代所有出現在語料中的原詞匯。帶有偽詞的文本作為歧義原文本,最初的文本作為消歧后的文本。

有監督的詞義消歧方法

有監督的詞義消歧方法通過建立分類器,用劃分多義詞上下文類別的方法來區分多義詞的詞義。

基于互信息的消歧方法

基于互信息的消歧方法基本思路是,對每個需要消歧的多義詞尋找一個上下文特征,這個特征能夠可靠地指示該多義詞在特定上下文語境中使用的是哪種語義。

互信息是兩個隨機變量X和Y之間的相關性,X與Y關聯越大,越相關,則互信息越大。

這里簡單介紹用在機器翻譯中的Flip-Flop算法,這種算法適用于這樣的條件,A語言中有一個詞,它本身有兩種意思,到B語言之后,有兩種以上的翻譯。

我們現在有的,是B語言中該詞的多種翻譯,以及每種翻譯所對應的上下文特征。

我們需要得到的,是B語言中的哪些翻譯對應義項1,哪些對應義項2。

這個問題復雜的地方在于,對于普通的詞義消歧,比如有兩個義項的多義詞,詞都是同一個,上下文有很多,我們把這些上下文劃分為兩個等價類;而這種跨語言的,不僅要解決上下文的劃分,在這之前還要解決兩個義項多種詞翻譯的劃分。

這里面最麻煩的就是要先找到兩種義項分別對應的詞翻譯,和這兩種義項分別對應的詞翻譯所對應的上下文特征,以及他們之間的對應關系。

想象一下,地上有兩個圈,代表兩個義項;這兩個圈里,分別有若干個球,代表了每個義項對應的詞翻譯;然后這兩個圈里還有若干個方塊,代表了每個義項在該語言中對應的上下文。然后球和方塊之間有線連著(球與球,方塊與方塊之間沒有),隨便連接,球可以連多個方塊,方塊也可以連多個球。然后,圈沒了,兩個圈里的球和方塊都混在了一起,亂七八糟的,你該怎么把屬于這兩個圈的球和方塊分開。

Flip-Flop算法給出的方法是,試試。把方塊分成兩個集合,球也分成兩個集合,然后看看情況怎么樣,如果情況不好就繼續試,找到最好的劃分。然后需要解決的問題就是,怎么判定分的好不好?用互信息。

如果兩個上下文集(方塊集)和兩個詞翻譯集(球集)之間的互信息大,那我們就認為他們的之間相關關系大,也就與原來兩個義項完美劃分更接近。

實際上,基于互信息的這種方法直接把詞翻譯的義項劃分也做好了。

基于貝葉斯分類器的消歧方法

基于貝葉斯分類器的消歧方法的思想與《淺談機器學習基礎》中講的樸素貝葉斯分類算法相同,當時是用來判定垃圾郵件和正常郵件,這里則是用來判定不同義項(義項數可以大于2),我們只需要計算給定上下文語境下,概率最大的詞義就好了。

根據貝葉斯公式,兩種情況下,分母都可以忽略,所要計算的就是分子,找最大的分子,在垃圾郵件識別中,分子是P(當前郵件所出現的詞語|垃圾郵件)P(垃圾郵件),那么乘起來就是垃圾郵件和當前郵件詞語出現的聯合分布概率,正常郵件同理;而在這里分子是P(當前詞語所存在的上下文|某一義項)P(某一義項),這樣計算出來的就是某一義項和上下文的聯合分布概率,再除以分母P(當前詞語所存在的上下文),計算出來的結果就是P(某一義項|當前詞語所存在的上下文),就能根據上下文去求得概率最大的義項了。

基于最大熵的詞義消歧方法

利用最大熵模型進行詞義消歧的基本思想也是把詞義消歧看做一個分類問題,即對于某個多義詞根據其特定的上下文條件(用特征表示)確定該詞的義項。

基于詞典的詞義消歧方法

基于詞典語義定義的消歧方法

M. Lesk 認為詞典中的詞條本身的定義就可以作為判斷其詞義的一個很好的條件,就比如英文中的core,在詞典中有兩個定義,一個是『松樹的球果』,另一個是指『用于盛放其它東西的錐形物,比如盛放冰激凌的錐形薄餅』。如果在文本中,出現了『樹』、或者出現了『冰』,那么這個core的詞義就可以確定了。

我們可以計算詞典中不同義項的定義和詞語在文本中上下文的相似度,就可以選擇最相關的詞義了。

基于義類詞典的消歧方法

和前面基于詞典語義的消歧方法相似,只是采用的不是詞典里義項的定義文本,而是采用的整個義項所屬的義類,比如ANMINAL、MACHINERY等,不同的上下文語義類有不同的共現詞,依靠這個來對多義詞的義項進行消歧。

無監督的詞義消歧方法

嚴格地講,利用完全無監督的消歧方法進行詞義標注是不可能的,因為詞義標注畢竟需要提供一些關于語義特征的描述信息,但是,詞義辨識可以利用完全無監督的機器學習方法實現。

其關鍵思想在于上下文聚類,計算多義詞所出現的語境向量的相似性就可以實現上下文聚類,從而實現詞義區分。

語義角色標注概述

語義角色標注是一種淺層語義分析技術,它以句子為單位,不對句子所包含的予以信息進行深入分析,而只是分析句子的謂詞-論元結構。具體一點講,語義角色標注的任務就是以句子的謂詞為中心,研究句子中各成分與謂詞之間的關系,并且用語義角色來描述它們之間的關系。比如:


實際上就是填槽吧,找到句子中的時間、地點、施事者、受事者和核心謂詞。

目前語義角色標注方法過于依賴句法分析的結果,而且領域適應性也太差。

自動語義角色標注是在句法分析的基礎上進行的,而句法分析包括短語結構分析、淺層句法分析和依存關系分析,因此,語義角色標注方法也分為基于短語結構樹的語義角色標注方法、基于淺層句法分析結果的語義角色標注方法和基于依存句法分析結果的語義角色標注方法三種。

它們的基本流程類似,在研究中一般都假定謂詞是給定的,所要做的就是找出給定謂詞的各個論元,也就是說任務是確定的,找出這個任務所需的各個槽位的值。其流程一般都由4個階段組成:


候選論元剪除的目的就是要從大量的候選項中剪除掉那些不可能成為論元的項,從而減少候選項的數目。

論元辨識階段的任務是從剪除后的候選項中識別出哪些是真正的論元。論元識別通常被作為一個二值分類問題來解決,即判斷一個候選項是否是真正的論元。該階段不需要對論元的語義角色進行標注。

論元標注階段要為前一階段識別出來的論元標注語義角色。論元標注通常被作為一個多值分類問題來解決,其類別集合就是所有的語義角色標簽。

最終,后處理階段的作用是對前面得到的語義角色標注結果進行處理,包括刪除語義角色重復的論元等。

基于短語結構樹的語義角色標注方法

首先是第一步,候選論元剪除,具體方法如下:

  • 將謂詞作為當前結點,依次考察它的兄弟結點:如果一個兄弟結點和當前結點在句法結構上不是并列的關系,則將它作為候選項。如果該兄弟結點的句法標簽是介詞短語,則將它的所有子節點都作為候選項。
  • 將當前結點的父結點設為當前結點,重復上一個步驟,直至當前結點是句法樹的根結點。

舉個例子,候選論元就是圖上畫圈的:


經過剪除得到候選論元之后,進入論元識別階段,為分類器選擇有效的特征。人們總結出了一些常見的有效特征,比如謂詞本身、路徑、短語類型、位置、語態、中心詞、從屬類別、論元的第一個詞和最后一個詞、組合特征等等。

然后進行論元標注,這里也需要找一些對應的特征。然后后處理并不是必須的。

基于依存關系樹的語義角色標注方法

該語義角色標注方法是基于依存分析樹進行的。由于短語結構樹與依存結構樹不同,所以基于二者的語義角色標注方法也有不同。

在基于短語結構樹的語義角色標方法中,論元被表示為連續的幾個詞和一個語義角色標簽,比如上面圖給的『事故 原因』,這兩個詞一起作為論元A1;而在基于依存關系樹的語義角色標注方法中,一個論元被表示為一個中心詞和一個語義角色標簽,就比如在依存關系樹中,『原因』是『事故』的中心詞,那只要標注出『原因』是A1論元就可以了,也即謂詞-論元關系可以表示為謂詞和論元中心詞之間的關系。

下面給一個例子:


句子上方的是原來的依存關系樹,句子下方的則是謂詞『調查』和它的各個論元之間的關系。

第一步仍然是論元剪除,具體方法如下:

  • 將謂詞作為當前結點
  • 將當前結點的所有子結點都作為候選項
  • 將當前結點的父結點設為當前結點,如果新當前結點是依存句法樹的根結點,剪除過程結束,如果不是,執行上一步

論元識別和論元標注仍然是基于特征的分類問題,也有一些人們總結出來的常見特征。這里不詳述。

基于語塊的語義角色標注方法

我們前面知道,淺層語法分析的結果是base NP標注序列,采用的方法之一是IOB表示法,I表示base NP詞中,O表示詞外,B表示詞首。

基于語塊的語義角色標注方法將語義角色標注作為一個序列標注問題來解決。

基于語塊的語義角色標注方法一般沒有論元剪除這個過程,因為O相當于已經剪除了大量非base NP,也即不可能為論元的內容。論元辨識通常也不需要了,base NP就可以認為是論元。

我們需要做的就是論元標注,為所有的base NP標注好語義角色。與基于短語結構樹或依存關系樹的語義角色標注方法相比,基于語塊的語義角色標注是一個相對簡單的過程。

當然,因為沒有了樹形結構,只是普通序列的話,與前兩種結構相比,丟失掉了一部分信息,比如從屬關系等。

語義角色標注的融合方法

由于語義角色標注對句法分析的結果有嚴重的依賴,句法分析產生的錯誤會直接影響語義角色標注的結果,而進行語義角色標注系統融合是減輕句法分析錯誤對語義角色標注影響的有效方法。

這里所說的系統融合是將多個語義角色標注系統的結果進行融合,利用不同語義角色標注結果之間的差異性和互補性,綜合獲得一個最好的結果。

在這種方法中,一般首先根據多個不同語義角色標注結果進行語義角色標注,得到多個語義角色標注結果,然后通過融合技術將每個語義角色標注結果中正確的部分組合起來,獲得一個全部正確的語義角色標注結果。

融合方法這里簡單說一種基于整數線性規劃模型的語義角色標注融合方法,該方法需要被融合的系統輸出每個論元的概率,其基本思想是將融合過程作為一個推斷問題處理,建立一個帶約束的最優化模型,優化目標一般就是讓最終語義角色標注結果中所有論元的概率之和最大了,而模型的約束條件則一般來源于人們根據語言學規律和知識所總結出來的經驗。

除了基于整數線性規劃模型的融合方法之外,人們還研究了若干種其他融合方法,比如最小錯誤加權的系統融合方法。其基本思想是認為,不應該對所有融合的標注結果都一視同仁,我們在進行融合時應當更多的信賴總體結果較好的系統。

示意圖如下:


最小錯誤加權的系統融合過程

《淺談自然語言處理基礎》到此結束,四萬兩千多字,連讀書加寫文章花了一個月,每天8小時,終于整完了,累到不行。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容