UCAS - AI学院 - 自然语言处理专项课 - 第8讲 - 课程笔记
UCAS-AI學院-自然語言處理專項課-第8講-課程筆記
- 句法分析·短語結構分析
- 概述
- 線圖分析法
- CYK分析法
- 基于PCFG的分析法
- 句法分析性能評估
- 局部句法分析
- 句法分析·依存句法分析
- 概述
- 依存關系分析方法
- 依存關系分析性能評估
- 短語結構與依存關系
- 基于深度學習的句法分析
- 英漢句法結構特點對比
句法分析·短語結構分析
概述
- 完全句法分析:獲得句子完整的句法分析樹
- 目標:實現高準確率、高魯棒性、快速句子結構自動分析過程
- 困難:結構歧義(Catalan Number)
- 基本方法
- CFG規則分析方法
- 線圖分析
- CYK
- Earley
- LR / Tomita
- PCFG規則分析方法
- NN改進的分析方法
- CFG規則分析方法
線圖分析法
- 三種策略
- bottom-up:詞到句子的規約
- top-down:句子到詞的推導
- combining
- 自底向上Chart分析算法
- 給定一組CFG規則
- 給定一個句子的詞性序列(保留多個詞性)
- 構造一個線圖(結點和邊的組合,邊為對應詞的詞性)
- 建立一個二維表(每一條邊的起始和終止)
- 操作:查看任意相鄰幾條邊上的詞性串是否與某條重寫規則右部相同,則增加一條跨邊,標記為重寫規則的左部,直到沒有新的邊產生
- 點規則:用于表示規則右部被歸約的程度
- 活性邊:規則右部未被完全匹配
- 非活性邊:規則右部完全匹配
- 數據結構
- 線圖Chart:分析過程中已經建立的成分、位置,n×nn \times nn×n數組
- 代理表Ageda:重寫規則代表的成分,棧或者隊列
- 活動邊集Active Arc:未完全匹配的處理規則,數組或者列表
- 算法P28
- 時間復雜度分析
- CCC式非終結符數目,nnn為句子長度,SSS為點規則狀態數目
- Agenda表中最大元素個數Cn2C n^2Cn2
- Active Arc表中最大元素個數Sn2S n^2Sn2
- Chart表中最大元素個數Cn2C n^2Cn2
- 操作·非終結符插入到Agenda表,最多CCC次(規則個數)
- 操作·取出Agenda表中的一個元素,最多1次操作
- 操作·每條規則加入Active Arc表,最多Sn2S n^2Sn2次操作
- 操作·擴展弧·非終結符插入Chart表,最多1次操作
- 操作·擴展弧·將擴展的活動便插入Agenda表,最多Sn2S n^2Sn2次操作
- 操作·擴展弧·擴展點規則插入Active Arc表,最多Sn2S n^2Sn2次操作
- 每處理一個單詞,需要最多操作數2+C+3Sn22 + C + 3 S n^22+C+3Sn2
- 對整個句子,總最大操作數n×(2+C+3Sn2)n \times (2 + C + 3 S n^2)n×(2+C+3Sn2)
- 時間復雜度O(Kn3)O(K n^3)O(Kn3)
- 優點:簡單易于實現
- 弱點:效率低、需要高質量規則、難以區分歧義結構(可以得到多個分析結果,但是無法確定哪個是對的)
CYK分析法
- 算法
- 對Chomsky文法進行規范化
- A→wA \to wA→w,標記
- A→BCA \to BCA→BC,多標記展開
- 自下而上的分析方法
- (n+1)×(n+1)(n + 1) \times (n + 1)(n+1)×(n+1)識別方陣,nnn為句子長度
- 對Chomsky文法進行規范化
- 識別矩陣構成
- 主對角線以下全部為0
- 主對角線以上由文法GGG的非終結符狗哼
- 主對角線上元素由句子終結符構成
- 識別矩陣構造
- t0,0=0t_{0, 0}=0t0,0?=0,從t1,1t_{1,1}t1,1?到tn,nt_{n, n}tn,n?放入單詞wiw_iwi?
- 靠主對角線元素ti,i+1t_{i, i+1}ti,i+1?,開始分析
- 對規則A→w1A \to w_1A→w1?,那么t0,1=At_{0, 1} = At0,1?=A
- 后續以此類推,沿平行主對角線方向推導(無規則可用時,直接復制沒分析的那一項)
- 對規則A→BCA \to BCA→BC,B∈ti,kB \in t_{i,k}B∈ti,k?,C∈tk,jC \in t_{k, j}C∈tk,j?,則ti,j=At_{i, j} = Ati,j?=A
- 句子由GGG生成,當且僅當t0,n=St_{0, n} = St0,n?=S
- 優點:實現簡單,執行效率高
- 缺點:需要對文法范式化處理,無法區分歧義
基于PCFG的分析法
-
概率上下文無關文法
- A→α,pA \to \alpha, \ pA→α,?p
- ∑αp(A→α)=1\sum_\alpha p(A \to \alpha) = 1∑α?p(A→α)=1
-
計算分析數概率的基本假設
- 位置不變性:子樹的概率與其管轄的詞在句子中的位置無關
- 上下文無關性:子樹概率與管轄范圍以外的詞無關
- 祖先無關性:子樹概率推導與子樹祖先結點無關
-
將子樹視為獨立事件,子樹概率計算可以使用其包含子樹概率連乘得到
-
三個問題
- 給定句子WWW和PCFGGGG,快速計算p(W∣G)p(W|G)p(W∣G)
- 給定句子WWW和PCFGGGG,快速選擇最佳句法結構樹
- 給定句子WWW和PCFGGGG,調節GGG使p(W∣G)p(W | G)p(W∣G)最大
-
假設文法只有兩種形式(規范化,Chomsky范式)
- A→wA \to wA→w,標記
- A→BCA \to BCA→BC,多標記展開
-
快速計算句法樹概率:內向或外向算法
- 內向算法:動態規劃,計算由非終結符AAA推導出字串片段wi…wjw_i \dots w_jwi?…wj?的概率αij(A)\alpha_{ij}(A)αij?(A),而句子的概率則是由SSS推導出字串的概率α1n(S)\alpha_{1n}(S)α1n?(S)
- αij(A)=p(A??wi…wj)\alpha_{ij}(A) = p(A \Rightarrow^\ast w_i \dots w_j)αij?(A)=p(A??wi?…wj?)
- 遞推公式:αii(A)=p(A→wi)\alpha_{ii}(A) = p(A \to w_i)αii?(A)=p(A→wi?)
- 遞推公式:αij(A)=∑B,C∈VN∑i≤k≤jp(A→BC)αik(B)α(k+1)j(C)\alpha_{ij}(A) = \sum_{B,C \in V_N} \sum_{i \le k \le j} p(A \to BC) \alpha_{ik}(B) \alpha_{(k+1)j}(C)αij?(A)=∑B,C∈VN??∑i≤k≤j?p(A→BC)αik?(B)α(k+1)j?(C)
- 初始化:αii(A)\alpha_{ii}(A)αii?(A)
- 歸納計算:j=1…n,i=1…n?jj = 1 \dots n,\ i = 1 \dots n - jj=1…n,?i=1…n?j,計算αi(i+j)(A)\alpha_{i(i + j)}(A)αi(i+j)?(A)
- 終止:p(S??w1…wn)=α1n(S)p(S \Rightarrow^\ast w_1 \dots w_n) = \alpha_{1n}(S)p(S??w1?…wn?)=α1n?(S)
- 內向歸納,自底向上
- 外向算法:外箱變量βij(A)\beta_{ij}(A)βij?(A)是由文法初始符號SSS推導語句WWW的過程中,到達擴展符號串w1…wi?1Awj+1wnw_1 \dots w_{i - 1} A w_{j + 1} w_nw1?…wi?1?Awj+1?wn?的概率
- βij(A)=p(S??w1…wi?1Awj+1wn)\beta_{ij}(A) = p(S \Rightarrow^\ast w_1 \dots w_{i - 1} A w_{j + 1} w_n)βij?(A)=p(S??w1?…wi?1?Awj+1?wn?)
- βij(A)=∑B,C∑k>jβik(B)p(B→AC)α(j+1)k(C)+∑B,C∑k<iβik(B)p(B→CA)αk(i?1)(C)\beta_{ij}(A) = \sum_{B,C} \sum_{k \gt j} \beta_{ik}(B) p(B \to AC) \alpha_{(j + 1)k}(C) + \sum_{B,C} \sum_{k \lt i} \beta_{ik}(B) p(B \to CA) \alpha_{k(i - 1)}(C)βij?(A)=∑B,C?∑k>j?βik?(B)p(B→AC)α(j+1)k?(C)+∑B,C?∑k<i?βik?(B)p(B→CA)αk(i?1)?(C)
- 推導到BBB的概率,乘上擴展BBB的概率,再乘上擴展另外一側到字串的概率
- 表示除了AAA為根節點的子樹以外的概率
- 初始化:β1n(A)=δ(A,S)\beta_{1n}(A) = \delta(A, S)β1n?(A)=δ(A,S)
- 歸納計算:j=n?1…0,i=1…n?jj = n-1 \dots 0,\ i = 1 \dots n - jj=n?1…0,?i=1…n?j,計算βi(i+j)(A)\beta_{i(i + j)}(A)βi(i+j)?(A)
- 終止:p(S??w1…wn)=∑Aβii(A)p(A→wi)p(S \Rightarrow^\ast w_1 \dots w_n) = \sum_A \beta_{ii}(A) p(A \to w_i)p(S??w1?…wn?)=∑A?βii?(A)p(A→wi?)
- 自頂向下,外向擴展
- 內向算法:動態規劃,計算由非終結符AAA推導出字串片段wi…wjw_i \dots w_jwi?…wj?的概率αij(A)\alpha_{ij}(A)αij?(A),而句子的概率則是由SSS推導出字串的概率α1n(S)\alpha_{1n}(S)α1n?(S)
-
最佳搜索:Viterbi算法
- γij(A)\gamma_{ij}(A)γij?(A)是由非終結符AAA推導出語句WWW中字串wi…wjw_i \dots w_jwi?…wj?的最大概率
- Ψi,j\Psi_{i,j}Ψi,j?用于保存Viterbi分析結果
- 注意與α\alphaα的區別:前者算綜合,后者算最大
- 初始化:γii(A)=p(A→wi)\gamma_{ii}(A) = p(A \to w_i)γii?(A)=p(A→wi?)
- 歸納計算:j=1…n,i=1…n?jj = 1 \dots n,\ i = 1 \dots n - jj=1…n,?i=1…n?j,γi(i+j)(A)=max?B,C∈VN,i≤k≤i+jp(A→BC)γik(B)γ(k+1)j(C)\gamma_{i(i + j)}(A) = \max_{B,C \in V_N,\ i \le k \le i + j} p(A \to BC) \gamma_{ik}(B) \gamma_{(k+1)j}(C)γi(i+j)?(A)=maxB,C∈VN?,?i≤k≤i+j?p(A→BC)γik?(B)γ(k+1)j?(C),Ψi(i+j)(A)=arg?max?B,C∈VN,i≤k≤i+jp(A→BC)γik(B)γ(k+1)j(C)\Psi_{i(i + j)}(A) = \arg\max_{B,C \in V_N,\ i \le k \le i + j} p(A \to BC) \gamma_{ik}(B) \gamma_{(k+1)j}(C)Ψi(i+j)?(A)=argmaxB,C∈VN?,?i≤k≤i+j?p(A→BC)γik?(B)γ(k+1)j?(C)
- 終止:max?p(S??w1…wn)=γ1n(S)\max p(S \Rightarrow^\ast w_1 \dots w_n) = \gamma_{1n}(S)maxp(S??w1?…wn?)=γ1n?(S)
-
參數估計:內外向算法
-
使用大量語料直接估計參數
- p^(Nj→ζ)=C(Nj→ζ)∑γC(Nj→γ)\widehat p(N^j \to \zeta) = \frac {C(N^j \to \zeta)}{\sum_\gamma C(N^j \to \gamma)}p?(Nj→ζ)=∑γ?C(Nj→γ)C(Nj→ζ)?
-
沒有大量語料,EM算法
-
初始隨機賦值,得到模型
-
訓練語料,得到期望值
-
最大似然估計
-
得到新的模型,迭代訓練
-
C(A→BC)=∑1≤i≤k≤j≤np(Aij,Bik,C(k+1)j∣w1…wn,G)=1p(w1…n∣G)∑1≤i≤k≤j≤np(Aij,Bik,C(k+1)j,w1…wn∣G)=1p(w1…n∣G)∑1≤i≤k≤j≤nβij(A)p(A→BC)αik(B)α(k+1)j(C)\begin{aligned} C(A \to BC) &= \sum_{1 \le i \le k \le j \le n} p(A_{ij}, B_{ik}, C_{(k+1)j} | w_1 \dots w_n, G) \\ &= \frac {1}{p(w_1 \dots _n | G)} \sum_{1 \le i \le k \le j \le n} p(A_{ij}, B_{ik}, C_{(k+1)j} , w_1 \dots w_n | G) \\ &= \frac {1}{p(w_1 \dots _n | G)} \sum_{1 \le i \le k \le j \le n} \beta_{ij}(A) p(A \to BC) \alpha_{ik}(B) \alpha_{(k + 1)j}(C) \end{aligned} C(A→BC)?=1≤i≤k≤j≤n∑?p(Aij?,Bik?,C(k+1)j?∣w1?…wn?,G)=p(w1?…n?∣G)1?1≤i≤k≤j≤n∑?p(Aij?,Bik?,C(k+1)j?,w1?…wn?∣G)=p(w1?…n?∣G)1?1≤i≤k≤j≤n∑?βij?(A)p(A→BC)αik?(B)α(k+1)j?(C)?
- 推導到AAA的概率,擴展AAA的概率,全部擴展到字串的概率
-
C(A→a)=∑1≤i≤k≤j≤np(Aii∣w1…wn,G)=1p(w1…n∣G)∑1≤i≤k≤j≤np(Aii,w1…wn∣G)=1p(w1…n∣G)∑1≤i≤k≤j≤nβii(A)p(A→a)δ(a,wi)\begin{aligned} C(A \to a) &= \sum_{1 \le i \le k \le j \le n} p(A_{ii}| w_1 \dots w_n, G) \\ &= \frac {1}{p(w_1 \dots _n | G)} \sum_{1 \le i \le k \le j \le n} p(A_{ii}, w_1 \dots w_n | G) \\ &= \frac {1}{p(w_1 \dots _n | G)} \sum_{1 \le i \le k \le j \le n} \beta_{ii}(A) p(A \to a) \delta(a, w_i) \end{aligned} C(A→a)?=1≤i≤k≤j≤n∑?p(Aii?∣w1?…wn?,G)=p(w1?…n?∣G)1?1≤i≤k≤j≤n∑?p(Aii?,w1?…wn?∣G)=p(w1?…n?∣G)1?1≤i≤k≤j≤n∑?βii?(A)p(A→a)δ(a,wi?)?
-
p^(A→μ)=C(A→μ)∑μC(A→μ)\widehat p(A \to \mu) = \frac {C(A \to \mu)}{\sum_\mu C(A \to \mu)}p?(A→μ)=∑μ?C(A→μ)C(A→μ)?
-
-
-
Learning Algorithm -> PCFG -> CYK / Chart
-
優點:利用概率進行剪枝,減少搜索空間,加快分析效率;可以定量比較兩個句法分析器性能(概率置信度)
-
缺點:對概率計算條件比較苛刻(三個假設)
句法分析性能評估
- PARSEVAL評測
- 精度:正確短語個數占比
- 召回率:正確短語個數占正確答案比例
- F-值:常取F-1值
- 交叉括號數:分析樹中與其他分析樹邊界交叉成分個數的平均值
- 標記格式XP?(SP,TP)XP-(SP,TP)XP?(SP,TP)
- 短語標記,起始位置,終止位置
- 漢語句子分析性能低于英文
局部句法分析
- 淺層句法分析 / 語塊劃分
- 語塊識別 + 語塊之間依存關系分析
- 英語語塊
- 詞
- 非遞歸名詞短語、動詞詞組
- Base NP,簡單、非嵌套名詞短語,看作基本分類問題識別(序列標注,IOB,)
- 非遞歸副詞短語、介詞短語
- 子句
- 基于SVM的識別方法(Base NP)
- 三類特征:詞、詞性、Base NP標志
句法分析·依存句法分析
概述
- 一切接結構句法現象可以概括為關聯、組合和轉位三個核心
- 關聯——詞之間的從屬關系
- 動詞是句子的中心,并支配其他成分,本身不受任何成分支配
- “價”的概念:動詞所能支配的行動元(名詞詞組)的個數
- 依存關系:詞語之間支配和被支配的關系
- 有向圖表示:有向弧表示兩個成分的依存關系,由支配者出,到達被支配者
- 依存樹表示:子節點依存于父節點,也可以表示成依存投射樹
- 依存語法的4條公理
- 一個句子只有一個獨立的成分(單一父節點)
- 句子的其他成分都從屬于某一成分(聯通)
- 任何一成分都不能依存于兩個或多個成分(無環)
- 如果成分A直接從屬于成分B,而成分C在句子中位于A和B之間,那么,成分C或者從屬于A,或者從屬于B,或者從屬于A和B之間的某一成分(可投射)
- 不可投射的:依存關系樹中虛線于實線相交的情形
- 優勢
- 簡單,天然此會化的
- 不過多強調句子中的固定順序
- 受深層語義結構驅動
- 形式化程度較淺,更加靈活
依存關系分析方法
- 輸入:句子
- 輸出:依存結構,有向圖描述
- 生成式分析方法
- 采用聯合概率模型Score?(x,y∣θ)\operatorname{Score}(x, y| \theta)Score(x,y∣θ),生成一系列語法樹,賦予概率分值,取最大概率作為最終結果
- 優點:大規模樣本可以獲得好的性能
- 弱點
- 聯合概率模型,需要各種假設簡化,不易加入語言特征
- 全局搜索,復雜度較高,O(n3)O(n^3)O(n3)或O(n5)O(n^5)O(n5)
- 判別式分析方法
- 采用條件概率模型Score?(x∣y,θ)\operatorname{Score}(x| y, \theta)Score(x∣y,θ),使目標最大的θ\thetaθ作為模型的參數
- 最大生成樹模型
- 整棵樹的分值s(x,y)=∑(i,j)∈ys(i,j)=∑(i,j)∈yw?f(i,j)s(\bold x, \bold y) = \sum_{(i, j) \in y} s(i, j) = \sum_{(i, j) \in y} \bold w \cdot \bold f(i, j)s(x,y)=∑(i,j)∈y?s(i,j)=∑(i,j)∈y?w?f(i,j)
- s(i,j)s(i, j)s(i,j)兩節點之間的邊的分值,f(i,j)\bold f(i, j)f(i,j)為二元特征函數向量,w\bold ww為對應特征函數的權值
- 優點
- 避開了聯合概率需要的獨立性假設
- 較好的可計算性,可應用更多方法,可處理非投射現象
- 分析準確率較高
- 弱點
- 整句內全局搜索,不易使用動態特征
- 算法復雜度較高
- 決策式分析方法
- 模仿人的認知過程,按照特定方向每次讀入一個詞,每一步由當前狀態做出決策(判斷依存關系),不再改變
- 移進-規約算法(Shift-Reduce)
- 三元組:S(棧頂詞),I(當前詞),A(依存弧集合)
- 兩種動作:規約(左 / 右的依存關系建立)、移進(移入棧中)
- 改進(Arc-eager)四個動作:LArc(依存弧向左指)、RArc(依存弧向右指)、規約(退出當前考察,非根詞移出棧)、移進,由stack和queue維護
- 算法P23
- 基于動作轉移的方法(決策之間逐步專業)
- 優點
- 之前產生的所有句法結構作為特征
- 新型時間復雜度O(n)O(n)O(n)
- 弱點
- 局部最優代替全局最優,導致錯誤傳遞
- 不可處理非投射現象
- 依存句法分析器實現(Arc-eager)
- 動作轉換
- 足夠多的訓練集
- 每個數據結構維護兩個指針(頂和次頂)
- 左弧——可直接規約
- 右弧——不可直接規約,需等待判斷進一步的右弧
依存關系分析性能評估
- 無標記依存準確率UA:所有詞中正確支配詞所占百分比,未找到支配詞的詞也算在內
- 帶標記依存準確率LA:所有詞中正確支配且依存關系類型也正確的百分比,根節點也算在內
- 依存正確率DA:所有非根結點詞中找到其正確支配詞的詞所占的百分比
- 根正確率RA
- 定義1:正確根結點的個數與句子個數的比值
- 定義2:所有句子中找到正確根結點的句子所占的百分比
- 對單根節點語言,二者等價
- 完全匹配率CM:所有句子中無標記依存結構完全正確的句子所占的百分比
短語結構與依存關系
- 短語結構可轉換為依存結構
- 定義中心詞抽取規則,產生中心詞表(中文短語中,中心詞往往在最后)
- 根據中心詞表,為句法樹中每個節點選擇中心子節點(中心詞自底向上傳遞得到)
- 將非中心子節點的中心詞依存到中心子節點的中心詞上,得到相應的依存結構
基于深度學習的句法分析
- 面向決策式依存分析的離散特征和連續特征相結合方法
- 結合詞向量中的非線性關系
- Word2vec(融入連續特征) + CRFs(動作序列分類)
- 連續特征離散化后于原離散特征相結合(利用離散特征的魯棒稀疏優勢)
- 連續特征隱層向量與原離散特征結合(計算各動作的分值)
- 基于機器翻譯原理的句法分析方法
- 句法樹——短語標記序列
- 機器翻譯——句子翻譯成短語標記序列
英漢句法結構特點對比
- 不考慮漢語分詞和詞性兼類帶來的影響
- 漢語更少地使用功能詞,且沒有形態變化;不適用限定詞的名詞普遍存在,復數標記有限且很少出現
- 英語短語絕大部分以左部為中心;漢語比較復雜,大多數以右部為中心,動詞和介詞的補語在中心詞的后面
- 漢語句子普遍存在沒有主語的情況——難以判斷是句子還是短語
- 英語是結構性語言,分句間結構聯系;漢語是表意型語言,分句間結構獨立
- 漢語長句分析方法:句群——分析森林
- 對包含“分割”標點的長句進行分割
- 對分割后的各個子句分別進行句法分析(第一級分析),各個最大概率的子樹根節點的詞類或短語類別標記作為第二級句法分析的輸入
- 通過第二遍分析各子句或短語之間的結構關系,從而獲得整句的最大概率分析樹
總結
以上是生活随笔為你收集整理的UCAS - AI学院 - 自然语言处理专项课 - 第8讲 - 课程笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 引起短波通讯服务器终端,影响短波通信的主
- 下一篇: BIM众包网双节送福利-BIM资源免费领