Publicité

PCFG構文解析法

Software Engineer à Google
9 Aug 2015
Publicité

Contenu connexe

Présentations pour vous(20)

Similaire à PCFG構文解析法(20)

Publicité
Publicité

PCFG構文解析法

  1. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 1 PCFG構文解析法 小田 悠介 NAIST @odashi_t NLP東京Dの会 8/9/2015
  2. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 2 今日話す内容 ● CFG と CKY アルゴリズム ● PCFG ● Vertical/Horizontal Markovization (Stanford Parser) ● PCFG-LA (Berkeley Parser) ● 頑健な構文解析器 (Ckylark)
  3. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 3 Chomsky 階層 Type-0 Type-1 Type-2 Type-3 正規言語 文脈自由言語 文脈依存言語 帰納的可算言語 ● 形式言語理論のおさらい 今日の話題 チューリングマシン上の アルゴリズム
  4. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 4 文脈自由文法 ● 文脈自由文法 (context-free grammar: CFG) – Chomsky 階層の Type-2 文法 – 単一の記号を複数の記号列に書き換える規則の集合 S文 VP動詞句 NP名詞句 DT限定詞 This isVBZ動詞:三単現 NP名詞句 DT限定詞 NN名詞:単数 a pen – 注目している記号の周囲の情報 (=文脈) は考慮しない (=自由) – CFG により生成される自然言語の構文木は句構造 (phrase structure) と呼ぶ
  5. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 5 This is a pen Cocke-Kasami-Younger アルゴリズム ● Cocke-Kasami-Younger (CKY or CYK) アルゴリズム – 文法 と入力単語列 が与えられたとき で を生成可能か判別(構文木も作れる) – 小さい部分木から順に生成 ... 動的計画法の一種 DT NNS NP VBZ NNS DT NN NP NN S NP S VP SQ S 全体の解析は
  6. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 6 Chomsky 標準形 ● CKY アルゴリズムは Chomsky 標準形の文法のみ解析可能 Binary 規則 文法 → 文法 + 文法 Lexicon 文法 → 単語 Chomsky 標準形: 以下の規則のみからなる CFG ● 実際の構文は... NP DT Unary VP NP PPVBZ Trinary NP JJDT JJ NN もっと大きな規則
  7. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 7 Unary 規則の取り扱い ● 限定適用(近似) – 各 CKY テーブル上で、予め決めた回数だけ Unary 規則を適用(普通は 1 回だけ) – 実用的にはこれで十分な場合が多い ● Ckylark の実装 DT NNS VBZ DT NNS VBZ NP VP● 厳密な unary chain – Unary 規則の集合でグラフを構築 – 今見ている記号に到達可能な経路を列挙 ● Berkeley Parser の実装 S FRAG NP VP NNS VBZ SBAR DT NP DT NP DT NP DT NP DTDT SBAR S FRAG DT NNS VBZ NP VP SBAR S FRAG
  8. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 8 Trinary 以上の規則の取り扱い ● 基本的な考え: 分解して binary 規則に変形 VP NP PPVB VP VP/PP PPVB NP 文法範疇の使用(厳密) VP NP PPVB VP VP PPVB NP X-bar 文法(近似) ● 分解方向によるバリエーション VP X PPVB NP 左分解 VP X PPVB NP 右分解 – 言語や文法の特徴で適切に選択 – Berkeley Parser および Ckylark は X-bar 文法かつ左分解 ● 分解方向は無理矢理変更可能
  9. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 9 自然言語の曖昧性 ● 複数の(多分)正しい構文木が存在する可能性 PRP VBD DT NN IN DT NN NP VP NP PP NP S I saw a girl with a telescope I saw a girl with a telescope PRP VBD DT NN IN DT NN NP VP NP PP NP S NP
  10. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 10 確率的文脈自由文法 (1) ● 確率的文脈自由文法 (probabilistic CFG: PCFG) [Booth&Thompson1973] 他 – 構文木の「確からしさ」を解析時に考慮 ● 各規則が生成確率を持つ VP ξ = 0.05VBZ VBZ NP ξ = 0.18 ...... VBZ VP ξ = 0.09 VBZ NP PP ξ = 0.15 VBP NP ξ = 0.17 VBP NP PP ξ = 0.10 MD VP ξ = 0.14 VBG S ξ = 0.02
  11. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 11 確率的文脈自由文法 (2) ● 構文木の生成確率 PRP VBD DT NN IN DT NN NP VP NP PP NP S I saw a girl with a telescope ● 最も単純な PCFG モデル: Treebank 中の規則の個数をスコアとする – 最尤推定と同じ ξ ξ ξ ξ ξ ξ ξ ξ ξξ ξξξ 構文木の生成確率 ランダム生成したときに その木が得られる確率
  12. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 12 構文解析の評価 (1) ● Labeled precision/recall/Fβ – 各句の (先頭位置, 終端位置, 記号) の一致数 ● Crossing brackets – 参照木の句を跨ぐような解析結果の句の数 ● Tagging accuracy – 当てた品詞(準終端記号)の数
  13. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 13 構文解析の評価 (2) PRP VBD DT NN IN DT NN NP VP NP PP NP S I saw a girl with a telescope I saw a girl with a telescope PRP VBD DT NN IN DT NN NP VP NP PP NP S NP Gold Parse S:1-7 NP:1-1 VP:2-7 NP:3-4 PP:5-7 NP:6-7 S:1-7 NP:1-1 VP:2-7 NP:3-7 NP:3-4 PP:5-7 NP:6-7 – LP = 6/7 85.7%≒ – LR = 100% – LF1 = (2*LP*LR) / (LP+LR) 92.3%≒ – Crossing brackets = 0 – Tagging accuracy = 100%
  14. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 14 単純なPCFGの問題 (1) ● 文法の種類が荒すぎる – 例: 右の構文木の 2 個の NP は同じ? ● NP … Subject, PRP のみを生成しやすい ● NP … Object, NN を含む句を生成しやすい ● NP が PRP のみを生成する確率は NP の 約 8.7 倍 [Klein&Manning2003] – 明らかに同じ記号で違う意味のものが存在 ● 別の記号に分けるべき PRP VBD DT NN NP VP NP S He ate an apple PRPNP VBDVP DTNP NNNP NPS VPS NPVP SROOT He ate an apple ● Parent annotation [Johnson1998] – 各記号に親のラベルを付与 – 縦方向の 2 階 Markov 連鎖でモデル化するのと同じ ● 普通の PCFG は 1 階 Markov 連鎖
  15. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 15 単純なPCFGの問題 (2) ● データスパースネス – ほとんどの規則の登場回数が 1 回 ● 記号の複雑な組み合わせ ● 記号の反復 – 過学習の原因 ● …学習データに登場 不当に高確率 ● …学習データにない 0 Penn Treebank 中の規則の頻度 [Collins1999] VP → VB NP NP NP PRN VP → VB NP SBAR PP SG ADVP VP → VB NP ADVP ADVP PP PP VP → VB RB VP → VB NP PP NP SBAR VP → VB NP PP SBAR PP ... 実際にPenn Treebank に 1 回しか登場しない 規則の例 [Collins1999] ● 対応策: 大きな規則の分解 – X-bar 文法でもある程度対応可能 ● ただし規則の周辺情報は消滅 – 周辺情報をどこまで残す?
  16. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 16 Vertical/Horizontal Markovization (1) ● Vertical/Horizontal Markovization [Klein&Manning2003] – 巨大な生成規則を周辺情報を含む部分木に分割 – Parent annotation などいくつかの既存法の一般化 NP VP DT JJ JJ NN a quick brown fox VBZ jumps S NP DT JJ JJ NN ROOT NPROOT-S : DT DT JJ JJ NN NPROOT-S : DT...JJ NPROOT-S : DT...JJ-NN NPROOT-S NPROOT-S : DT...JJ-JJ NPROOT-S : DT...JJ-NN 親 V-1個の祖先 主辞 H個の兄弟
  17. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 17 Vertical/Horizontal Markovization (2) ● Stanford Parser – V/H Markovization + 色々な文法分割のヒューリスティクス + 探索の工夫 – LF1 = 86.3% [Klein&Manning2003] 時点 VとHを色々変えたときのLF1と規則の数 [Klein&Manning2003] 単純なPCFG Parent annotation [Collins1999]
  18. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 18 潜在注釈付き PCFG ● 潜在注釈付き PCFG (PCFG with Latent Annotation: PCFG-LA) [Matsuzaki+2005] – 各記号に直接近隣の情報を関連付けるのではなく、周辺の特徴を捉えた潜在クラスを付与 DT[5] VBD[3] DT[2] NN[9] NP[1] VP[2] NP[2] S[4] This is a pen ● 潜在クラスをどのように作る? – コーパスから自動的に生成できると嬉しい NP[1] … Subject になりやすい特徴を持つ NP[2] … Object になりやすい特徴を持つ DT[5] … This や that を生成しやすい DT[2] … A を生成しやすい
  19. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 19 Split-merge アルゴリズム (1) ● Split-merge アルゴリズム [Petrov+2006] – 教師なし学習による潜在クラス生成法 ● Split-step … 潜在クラスを適当に分割、EM アルゴリズムで生成確率を推定 ● Merge-step … Split の効果がなかった潜在クラスを再結合 – 潜在クラスが木構造として得られる ● [Petrov+2006]: split-step で 2 分割、merge-step で半分を再結合 – 1 回の split-merge で潜在クラス数が 1.5 倍に増加 Split-merge により自動生成された潜在クラス階層 [Petrov+2006]
  20. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 20 Split-merge アルゴリズム (2) 最終的な潜在クラスの例 [Petrov+2006] 似たような特徴の 単語同士が クラスタリング されている
  21. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 21 Coarse-to-fine 構文解析 ● PCFG-LA の問題: 生成規則が膨大 – 潜在クラス付き記号の数は split-merge により指数的に増加 – 通常の CKY …解析では計算が終わらない ● Coarse-to-fine 構文解析 – まず階層の浅い潜在クラスで CKY 解析 – 確率の低いノードを削除、残ったノードで次の階層の解析 Coarse-to-fine 解析時の CKY テーブル(色の濃さは確率) [Petrov2009]
  22. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 22 PCFG-LA の解析精度 ● Berkeley Parser – Split-merge + 平均化スムージング + 単語素性による未知語処理 + 探索の工夫 – LF1 = 90.2% [Petrov+2006] 時点 過学習 PCFG-LA による構文解析の LF1 値 [Petrov2009]
  23. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 23 …実際の構文解析器では ● 実際に構文解析を使用するのは、大きなシステムのパイプラインの一部 ● 基本的に解析失敗は可能な限り避けたい – 例: 機械翻訳 形態素 解析 構文 解析 機械 翻訳 入力 テキスト 音声認識 etc. 出力 テキスト 音声合成 etc. – エラーの発生した場所より先の処理が実行不可能 – ユーザ視点だと「壊れた」のと同じ ● 多少変な入力が渡されても問題なく結果を出力できる頑健性が必要 – もしくは裏でエラー処理をものすごく頑張る
  24. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 24 Coarse-to-fine 解析の問題 ● Coarse-to-fine 解析は稀に探索に失敗 – 構文木の確率が極端に低い場合、CKY ノードを枝刈りしすぎる Level 0 (PCFG) Level 1 Level 2 DT22 PP NN1 JJ NN DT NN2 NN1 NN2 NN21 NN11 NN12 NP11 DT12 DT2 VP CD NP NP2 NP1 NNS NN DT21 NP12 NN22 DT1 DT11 – 全ての候補が枝刈りされてしまい、そのノード以下の解析が不可能 ● どのような構文木も出力することができない
  25. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 25 Coarse-to-fine 解析の中間結果を使用 ● 失敗が起こったとき、その前段の CKY テーブルで構文木を生成 – Coarse-to-fine 解析は最後まで実行しなくても問題ない OK OK OK OK Level 0 (PCFG) Level 1 Level 2 Level N Tree Make parse tree Tree Make parse tree OK OK Fail Level 0 (PCFG) Level 1 Level 2 Level N Tree Make parse tree ● 「最初の解析で失敗しなければ」構文木を生成可能
  26. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 26 モデルの不整合による解析失敗 ● Coarse-to-fine 解析の初段 (=PCFG) で失敗する場合 – 入力が学習データと大きく離れているため、モデルが対応できていない – 例: 括弧 ? NN a symbol @NP -LRB- ( DT PRN X ( some phrases @PRN -RRB- ) -LRB- – Penn Treebank 内で、左括弧は PRN 句の前方にのみ存在 – それ以外の使い方はモデル的に想定されていない
  27. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 27 未知語スムージング ● 想定外の用法で出現した単語は未知語と考える – 普通に解析できなくても、未知語に置き換えた場合に解析できることがある – 非常に小さい割合で生成確率に未知語の生成確率を補間 ? DT NN a symbol @NP NP ( -LRB- unk NN λ 元の単語生成確率 未知語生成確率 未知語補間係数 非常に小さい値 (実験ではE-10)
  28. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 28 ● Ckylark [Oda+2015] – Coarse-to-fine 解析 + 中間結果の利用 + 未知語スムージング + 確率スケーリング – Penn Treebank の解析精度は Berkeley Parser とほぼ同程度 – NTCIR-PATMT 300 万文(80単語以内の文を抜粋)で解析失敗なし 0 0.0136 0.561 % Ckylark 0 失敗した文数 (NTCIR PATMT-en) Tool Berkeley # 419 Egret 17287 Failure Smoothing factor 0 (PCFG) 1741 1 135 2 24 3 11 4 5 5 57 6 1405 0 130 19 8 4 51 1389 Failed grammar level 失敗の分布 未知語スムージングの 効果 前段で構文木を生成することにより 除去可能
  29. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 29 Ckylark の使い方 (1) ● インストール $ git clone git@github.com:odashi/ckylark $ cd ckylark $ autoreconf ­i $ ./configure $ make $ make install ● 構文解析 – 英語: wsj 日本語: jdc 中国語: ctb (日本語と中国語は KyTea が必要) $ ckylark ­­model wsj > This is a pen . < ( (S (NP (DT This)) (VP (VBZ is) (NP (DT a) (NN pen))) (. .)) ) $ kytea ­notags | ckylark ­­model jdc > これはペンです。 < ( (助動詞でP (助動詞でP (名詞P (助詞はP (代名詞 これ) (助詞は は))  (名詞 ペン)) (助動詞でP (助動詞で で) (語尾 す))) (補助記号 。)) )
  30. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 30 Ckylark の使い方 (2) ● 品詞推定 – Penn Treebank 上の推定精度は 97% くらい ● 不完全な文の構文解析 – 文法記号をワイルドカードとして使用可能 $ ckylark ­­model wsj ­­output­format postag > This is a pen . < This/DT is/VBZ a/DT pen/NN ./. $ kytea ­notags | ckylark ­­model jdc ­­output­format postag > これはペンです。 < これ/代名詞 は/助詞は ペン/名詞 で/助動詞で す/語尾 。/補助記号 $ ckylark ­­model wsj ­­partial > This is [NP] . < ( (S (NP (DT This)) (VP (VBZ is) (NP [NP])) (. .)) ) > [PRP] [VBZ] [PP] . < ( (S (NP (PRP [PRP])) (VP (VBZ [VBZ]) (PP [PP])) (. .)) )
  31. 15/08/09 Copyright (C) 2015 by Yusuke Oda, AHC-Lab, IS, NAIST 31 今日話した内容 ● CFG と CKY アルゴリズム ● PCFG ● Vertical/Horizontal Markovization (Stanford Parser) ● PCFG-LA (Berkeley Parser) ● 頑健な構文解析器 (Ckylark)
Publicité