PCFG -- 基於統計方法生成語法樹


語法樹的作用

  一棵語法樹不僅包括了詞性(part of speech), 還包括了短語(如名詞短語, 動詞短語)和結構化的信息(如主語, 謂語和賓語). 這些信息是進行機器翻譯所必須的, 例如機器翻譯中就需要使用到結構化信息, 來根據不同的語言規定調整主謂賓的順序.

上下文無關語法

  上下文無關語法(CFG)定義了描述語法樹的要素. CFG 是一個四元組, 即(S, sigma, R, N), 其中 S 表示開始符號, sigma 表示詞匯表, R 表示語法規則, N 表示非終端詞. 

CFG 的問題

  CFG 的一個明顯的問題是不能解決有歧義句子的語法樹解析問題. 從統計上看, 一個語法樹解析正不正確, 主要是跟出現概率相關的. 一般的, 正確的語法樹出現的概率要大點, 而錯誤的語法樹出現的概率相對較少. 由此可知, 要解決 CFG不能解決的歧義問題, 需要引入語法樹出現的鮮艷概率, PCFG 就是這樣的一個語法樹模型. 

基於概率的上下文無關語法

  PCFG 是一個五元組, 其定義為(S, sigma, R, N, p). 可以看到, 這基本上與 CFG 類似, 只是多出來一個元素 p, 表示在語料中規則出現的概率. 使用p 可以定義一棵語法樹出現的概率為樹中所有規則出現概率之積. 這樣, 當一個句子在可選的范圍內有多棵可能的語法樹時, 我們選擇先驗概率大的那棵樹, 這樣能最大程度避免解析錯誤. 

PCFG 的訓練

  對於 PCFG 中的 CFG 部分, 一般是由領域相關的專家給出的, 例如英語專家規定英語的 CFG. 而PCFG 中的 p 是從語料中統計而來. 運用最大似然估計, 可以有: 

      P(X -> Y) = count(X->Y)/count(X)

注意到, 規則中包括終端詞與非終端詞兩種元素. 在一個適當規模的語料中, 我們可以認為所有的非終端詞都會出現, 但是認為所有的終端詞都會出現卻是不現實的(想一下我們常聽到的那個美國農民日常使用的英語單詞只有數千個, 而所有的英語單詞卻有數萬個的情況). 當語料中沒有出現, 而在我們的測試樣本中卻出現了少見的單詞時, PCFG 會對所有的語法樹都給出概率為0的估計, 這對 PCFG 的模型是一個致命的問題.

  通常的補救措施是, 對語料中所有單詞出現次數進行統計, 然后將出現頻率少於 t 的所有單詞都換成同一個 symbol. 在進行測試時, 先查找測試句子中的所有單詞是否在句子中出現, 若沒有出現, 則使用 symbol 代替. 通過這種方法, 可以避免 PCFG 模型給出概率為0 的估計, 同時也不會損失太多的信息.

使用 PCFG 進行語法樹解析

  在使用 CFG 產生語法樹時, 通常采用左遞歸的方法, 從 S 開始, 每次使用一條規則的右部替換左部中第一個非終端詞, 直到左部中全部為待解析句子的單詞序列為止, 即得到該句子的一棵語法樹. 使用這種 brute force 的方法, 預測時間按照句子長度的指數增長. 而使用所謂的 CKY 算法, 可以降低為多項式量級.

  CKY 是一種 DP 算法, 其要求PCFG 中的R 必須符合 Chromsky Normal Form, 即: 

      X -> Y1  Y2 , 其中 Y1和 Y2屬於 N  

      X -> Y , 其中 Y 屬於 sigma

滿足了這種形式后, 可以定義CKY的最優子結構為 Pi(i, j, X), 其表示以 X 為根部非終端詞, 涵蓋句子中第 i 個到第 j 個單詞的語法樹的概率. 在這樣的定義下, 我們的目標就是尋找到一棵語法樹 t, 使得 Pi(1, n, S)最大. DP 算法的一個特點是問題的解是貪婪的, 一個較大問題的解必然依賴於一個較小問題的解, DP 算法按照 bottom-up 的方式, 從解決較小規模的問題開始, 逐漸構建對於目標問題的解. CKY 所定義的遞歸式如下: 

      basic case: Pi(i, i, X) = q(X -> wi)

      recursive case: Pi(i, j, X) = max (q(X->YZ) * Pi(i, s, Y) * Pi(s+1, j, Z)),

其中括號中的項為在所有的 X 的規則, 以及一切可能的分裂點 s的情況下得到的最大值.

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM