斯坦福大學-自然語言處理入門 筆記 第十五課 詞彙化(Lexicalization)的PCFGs

一、介紹

  • 一個短語的中心詞(head word)可以很好地代表這個短語的結構和含義,在構建PCFG模型的時候,可以考慮將這部分信息納入其中。如下圖所示加入單詞信息可以幫助我們更好地選擇出合適的模型。
    在這裏插入圖片描述

二、Charniak模型

  • Charniak模型是詞彙化PCFG的一個非常直觀的模型。條件概率是自上而下進行計算的,就像一般的PCFG一樣,但是實際的語法分析過程是自底向上的,就像CKY算法一樣。
  • 一個具體估計的例子:
    • 1、已知類別S的中心詞是rose,由NP和VP構成,VP的中心詞是rose,求NP的中心詞。h表示目前節點的單詞,這裏是profits;c表示目前節點的類別,這裏是NP;ph表示目前的節點的父節點的單詞,是rose;pc是目前節點的父節點的類別,這裏是S。對於NP的中心詞的計算是:從可能的中心詞中找到條件概率最大的那個argmaxP(h| ph,c,pc)=profit
    • 2、已知類別S的中心詞是rose,由NP和VP構成,NP的中心詞是profit,求接下來NP的構成規則。找到argmaxP(r| h,c,pc)。
    • 當估計根節點的單詞和接下來的構成規則時,概率條件中需要去掉父節點的信息。
      在這裏插入圖片描述
  • 詞彙化PCFG會明顯差異化概率
    • 基於不同動詞的動詞完全框架概率。
      在這裏插入圖片描述
    • 雙詞彙(bilexical)概率,在加入的條件變多以後概率明顯提升。
      在這裏插入圖片描述
  • Charniak線性插值法
    • 插值存在的原因是直接計算的條件概率是非常稀疏的,所以Charniak提出了一種線性插值的方法。公式如下:
      在這裏插入圖片描述
    • 其中,λ是以判別模型的方法確定的;C(ph)表示父節點單詞的語義(semantic)類型。
    • 這種方法能幫助我們在沒有充足的數據的時候,進行數據平滑。比如出現的下圖第一列的情況,P(h|ph,c,pc)估計爲0時。
      在這裏插入圖片描述

三、PCFG的獨立假設

  • PCFG也就是上下文無關文法的暗含假設就是獨立假設:在任意節點,當給定該節點的類型之後,該節點子樹內部的概率與子樹外部的概率相互獨立。
  • 獨立假設存在導致的一個問題是:在實際情況中很多時候父節點和其子節點的子節點是有很強的相關性的。舉例而言,下圖的第一個圖表示的是單純分裂一個NP節點的時候,它的左右子節點的可能性百分比。第二個圖是當已知這個節點是在父節點下的NP節點的時候的百分比。第二個圖是當已知這個節點的父節點是S時的百分比。第三個圖是當已知這個節點的父節點是VP時的百分比,可以看出三者的百分比是完全不同的。
    在這裏插入圖片描述
  • 解決獨立假設太強的問題的一個方法是狀態分裂(state spliting)。也就是在標註單詞類別的時候加上父節點的類別。但是會導致的問題是:造成特徵稀疏。
    在這裏插入圖片描述

四、非詞彙化PCFGs

1、什麼是非詞彙化句法分析?

  • 非詞彙化句法分析區別於詞彙化句法分析,我們使用的規則不會涉及到具體的單詞。
    • 比如NP-stocks就不算非詞彙化句法結構,NP^S -CC就是詞彙化句法分析
    • 還有一些語言學中常用的功能詞也能作爲一種規則,比如VB-have,SBAR-if/whether
    • 總結而言,我們使用的不是詞彙層面的特徵,而是基礎的語法層面的特徵,比如動詞的形式,是否是助動詞等等

2、基於實證的研究

  • 實證材料:語料庫是Penn treebank WSJ;分成測試集、訓練集和發展集
  • 評價標準:
    • f1,precision, recall
    • 在語法中的象徵(symbols)個數:(因爲個數的增長會導致速度變慢和稀疏特徵的問題)
      • 完整/被動象徵:NP,NP^S;
      • 積極/不完整象徵:拆分一對N規則導致的象徵,比如@NP_NP_CC
  • 狀態分裂(state spliting)
    • 1、水平馬爾可夫化(Horizontal Markovization):把前面單詞的類別附加到現在的單詞的類別上。見下圖圖表,橫座標1表示只附加一個前面的單詞類別;橫座標2v表示對頻率比較高的父節點類別附加兩個前面的單詞類別,剩下的附加一個;橫座標2表示附加兩個前面的單詞類別;inf表示不限制附加個數。可以看到在2v的時候預測比較正確,並且象徵個數比較少。
      在這裏插入圖片描述
    • 2、垂直馬爾可夫化(Vertical Markovization):與水平類似,只不過附加的是祖先節點的類別。
      在這裏插入圖片描述
    • 3、一對一規則分裂(Unary Splits):一對一規則經常出現,因此會導致一些錯誤,我們可以對一對一規則的類別進行標記-U。這一可以使得我們模型的f1提升1%
      在這裏插入圖片描述
    • 4、細化標註類型:Treebank 標註比較粗糙,很多不適合標註到一起,所以我們應該細化標註分類。比如把IN類型分成三類(that,whether,if| while after| in of to)
      在這裏插入圖片描述
    • 5、在詞組類別上標註中心詞的性質:比如Possessive NPs,Finite vs Infinite VPs,Lexical heads。
      在這裏插入圖片描述
    • 6、距離(distance)/遞歸(recursion)分裂:對附屬(attachment)進行標記
      • 如果詞組裏有動詞的話對其進行標記
      • 對有附屬的名詞詞組(NP)進行標註
        -
    • 模型結果:86.7%的f1,效果比第一代詞彙化句法分析好
      在這裏插入圖片描述

五、隱變量PCFGs

  • 我們怎樣自動找到合適的分裂象徵?
    • 利用一個隱變量算法,是EM算法,類似於向前的HMMs(forward-backward for HMMs),限制條件是限制條件是已經存在的樹結構。
    • 已知樹結構、基本類別,利用這種算法來找分裂的子類別(以數字來標記)。可以預先設定一個基本類別分裂成子類別的數目,但是更好的方法是先把一個類別分成兩個類別,如果這兩個類別可以提升條件概率就進行分裂,如果不行就合併,然後繼續分裂一直循環到滿足停止條件。
      在這裏插入圖片描述
  • 模型結果
    • 一些基本類型的隱變量學習結果
      在這裏插入圖片描述
    • 基本類型分裂成的子類型的數目圖
      在這裏插入圖片描述
    • 模型結果比較
      在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章