最近のTransition based parsing

3,417 views

Published on

Published in: Technology, Education
0 Comments
11 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,417
On SlideShare
0
From Embeds
0
Number of Embeds
304
Actions
Shares
0
Downloads
47
Comments
0
Likes
11
Embeds 0
No embeds

No notes for slide

最近のTransition based parsing

  1. 1. 最近の Transition-based Parsing PFI セミナー 2013/8/5
  2. 2. 自己紹介 ‣ 能地宏 / @nozyh ‣ 2011年夏インターン∼アルバイト ‣ 専門:自然言語処理・計算言語学 - 言語獲得 - 構文解析 ‣ - 2013/3 : 東大・情報理工 ‣ 2013/4 - : 総合研究大学院大学・情報学専攻 (D1) - 普段は NII にいます
  3. 3. 今日の話 ‣ 自然言語の構文解析 - 構文解析とは何か? - 係り受け解析の現状 ‣ transition-based parsing - Arc-standard,Arc-eager - 様々な亜種 (dynamic oracle, dynamic transition, non-monotonic, etc)
  4. 4. 対象者と聞き方 ‣ 自然言語処理の研究をしていない人(構文解析に失望している人?) - 現在自然言語処理で最高精度の構文解析がどういう仕組みで動いているのか 雰囲気を掴んでもらえれば… - 難しい数学はほとんど出てきません ‣ 自然言語処理の研究者 - Transition-based の様々な亜種・工夫について,今年の ACL, CoNLL (ただいま開催中@ブルガリア)まで - State-of-the-art の網羅というより,考え方中心です - 最新手法までのまとめとして
  5. 5. 構文解析(係り受け解析)入門 ‣ 海野さんの分かりやすいスライドがあります ‣ こちらは主に Chart-based の手法を説明 ‣ 今回は,それと対になる Transition-based の手法を主に説明 http://www.slideshare.net/unnonouno/ss-5724050
  6. 6. 係り受け = 依存文法 ‣ 例により説明がすくない…(英語は充実)
  7. 7. 解析してみよう 1. (日本語の場合)形態素解析 2. 文節に区切る(チャンキング) 3. 文節間に係り関係を付与 構造は語と従属部との関係として定義される 構造 は 語 と 従属 部 と の 関係 として 定義 さ れる 名 助 名 助 名 名 助 助 名 助 名 動 動 ※ 日本語は普通、矢印の向きがこれと逆ですが、 他の言語に合わせます
  8. 8. head と dependent ‣ head: 主辞 ‣ dependent: head にかかる句 ‣ dependent は head を修飾する ‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ ‣ 動詞が一番重要 => 文全体の head は動詞 名 助 構造 は 名 助 語 と 名 名 助 助 従属 部 と の 名 助 関係 として 名 動 動 定義 さ れる
  9. 9. head と dependent ‣ head: 主辞 ‣ dependent: head にかかる句 ‣ dependent は head を修飾する ‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ ‣ 動詞が一番重要 => 文全体の head は動詞 名 助 構造 は 名 名 助 助 従属 部 と の 名 助 関係 として 名 動 動 定義 さ れる head 名 助 語 と dependent
  10. 10. head と dependent ‣ head: 主辞 ‣ dependent: head にかかる句 ‣ dependent は head を修飾する ‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ ‣ 動詞が一番重要 => 文全体の head は動詞 名 助 構造 は 名 助 関係 として 名 動 動 定義 さ れる 名 助 語 と 名 名 助 助 従属 部 と の dependent head
  11. 11. 英語では、単語単位で木をつくる Jubatus is a processing platform for analyzing large-scale datasets which are increasing in the current big data era . is Jubatus a processing platform for analyzing large-scale datasets which are increasing ・・・
  12. 12. そもそも定義が曖昧な部分も ‣ head とは何か - 闇が広がっている・・・ - 教師なし構文解析は、自分の信じるheadの性質 (メタなhead) をモデルに組み込む問題 - しかし評価が問題(今日は教師ありしか扱いません) ex. 並列構造の解析 ... includes dogs , cats and rats ... 言語学者により解釈が異なる (!) Main family Prague family (code fP) [14 treebanks] Moscow family (code fM) [5 treebanks] Stanford family (code fS) [6 treebanks] Choice of head Head on left (code hL) [10 treebanks]       Head on right (code hR) [14 treebanks] Mixed head (code hM) [1 treebank] A mixture of hL and hR (Popel, et al. 2013)
  13. 13. なぜ構文解析するのか ‣ 構文木は、(浅い意味で)文の意味関係を捉えている ‣ そこから様々な情報を抽出して利用 - 機械翻訳:現在主流の Tree-to-string は,source 側の構文解析が必要      構文解析を間違えると翻訳も間違える - 情報抽出:主語と目的語の関係を見つけたい ‣ 今は色々なアプリケーションで構文解析の精度がボトルネック - 歴史は古いが重要( 90) - 本当に重要な問題を解いているかは疑問(?)
  14. 14. 基本の枠組み ‣ ツリーバンク : 言語学者が作った,構文 木 の集合 - 訓練データとして用いる - 非常に高コスト - 英語のデータは Penn Treebank (Marcus et al., 1993) をずっと使っている (5万文程度) ツリーバンク モデル(分類器) 教師あり学習 Jubatus is a processing platform ... 未知のデータを解析 head が予測出来た単語の割合で評価する (文毎の正解率ではない)
  15. 15. State-of-the-art 90.3Yamada and Matsumoto 03 90.5McDonald 05 McDonald and Pereia 06 91.5 Sagae and Lavie 06 92.7 93.0Koo and Collins 10 92.9Zhang and Nivre 11 93.39Bohnet and Kuhn 12 93.12Hayashi et al. 13 Charniak and Johnson 05 93.7 Petrov et al. 06 92.8 多くの結果は http://www.lumii.lv/nodalida2011/slides/nivre.pdf から引用 Transition-based Graph-based Hybrid PCFG-based 計算時間も重要 PCFG-based は遅い
  16. 16. 係り受け解析に対する二つの手法 ‣ DP で探索(Eisner法): (海野さんの資料など参照) ‣ Maximum Spanning Tree 法 : Graph-based People write Java with tears 分類問題 y x = : 単語間の係り関係 ˆy = arg max y w · (x, y) (x, y) : 素性関数 People write Java with tears People write Java with tears People write Java with tears w · = 10, 000 w · = 8, 400 w · = 1, 200 O(n3 ) O(n2 )
  17. 17. 係り受け解析に対する二つの手法 ‣ 今日はこちらをメインに話します ‣ Graph-based と異なる考えだが,両者の性能はほとんど同じ - McDonald and Nivre (2010), Goldberg and Elhadad (2010) などで様々な比較 Transition-based People write Java with tearsx = 逐次的な分類器の適応で解く: (以下の図はイメージ) People People write 500 writePeople -100 People write Java 1000 People write Java 50 People write Java with 1200 People write Java with 500 O(n)
  18. 18. (余談)最近の流行はHybrid法 ‣ Graph-based と Transition-based のいいとこどり,もしくは他のコアな 機械学習技術との組み合わせ ‣ Nivre and McDonald (2008) - Transition-based で一度解析し,その結果を Graph-based の素性に利用 ‣ Koo et al. (2010) - Dual decomposition で,二つの最適化問題を解く (c.f. 岡野原さんのブログ記事) - MST + 3rd-order non-projective chart parsing ‣ Rush and Petrov (2012) - Multi-pass pruning + 3rd-order Eisner ‣ Hayashi et al. (2013) - Dynamic programming shift-reduce + Packed forest reranking
  19. 19. 以降は Transition-based のみを扱います ‣ 基本の二つのモデルの紹介 - Arc-standard, Arc-eager (Nivre, 2004) ‣ 問題点とその解決法 - Beam search (Zhang and Clark, 2008) - DP (Huang and Sagae, 2010) - Dynamic oracle (Goldberg and Nivre, 2012) - Non-monotonic transition (Honnibal, Goldberg and Johnson, 2013 CoNLL) - Dynamic transition (Sartorio, Satta and Nivre, 2013 ACL)
  20. 20. Arc-standard People write Java with tears People write Java with tears Stack Actions Buffer (Input) Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH
  21. 21. Arc-standard People write Java with tears write Java with tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH People SH Stack Buffer (Input)
  22. 22. Arc-standard People write Java with tears Java with tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH People SH write L Stack Buffer (Input)
  23. 23. Arc-standard People write Java with tears Java with tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH People SH write L SH Stack Buffer (Input)
  24. 24. Arc-standard People write Java with tears with tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH SH L People write SH Java R Stack Buffer (Input)
  25. 25. Arc-standard People write Java with tears with tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH SH L People write SH Java R SH Stack Buffer (Input)
  26. 26. Arc-standard People write Java with tears tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH SH L SH R People write Java SH with SH Stack Buffer (Input)
  27. 27. Arc-standard People write Java with tears tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH SH L SH R People write Java SH with SH R Stack Buffer (Input)
  28. 28. Arc-standard People write Java with tears tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH SH L SH R People write Java SH with SH R R Stack Buffer (Input)
  29. 29. Arc-standard People write Java with tears Actions Shift: Bufferの先頭をStackに移動 LeftReduce: スタックの先頭2つをくっつける(右がhead) RightReduce: スタックの先頭2つをくっつける(左がhead) SH L R SH SH L SH R People write Java SH SH R tears with R Stack Buffer (Input)
  30. 30. Arc-standard はボトムアップ ‣ write → with というリンクは存在するが… - ここで R を選ぶと,with → tears というリンクは作られない tears SH SH L SH R People write Java SH with ? Stack Buffer (Input)
  31. 31. Arc-standard はボトムアップ ‣ write → with というリンクは存在するが… - ここで R を選ぶと,with → tears というリンクは作られない - with → tears ができあがってから,それを write と繋げないといけない tears SH SH L SH R People write Java SH with R 一度スタックから外れた語は, 子を持てない Stack Buffer (Input)
  32. 32. Arc-eager People write Java with tears People write Java with tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH
  33. 33. Arc-eager People write Java with tears write Java with tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH People LA
  34. 34. Arc-eager People write Java with tears write Java with tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH People LA SH
  35. 35. Arc-eager People write Java with tears Java with tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH LA SH People write RA
  36. 36. Arc-eager People write Java with tears with tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH LA SH People write RA Java RE
  37. 37. Arc-eager People write Java with tears with tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH LA SH People write RA Java RE RA
  38. 38. Arc-eager People write Java with tears tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH LA SH RA RE People write Java RA with RA
  39. 39. Arc-eager People write Java with tears tears Stack Actions Buffer (Input) SH Shift: Bufferの先頭をStackに移動 LA LeftArc: Bufferの先頭に,Stackの先頭をくっつける RA RightArc: Stackの先頭に,Bufferの先頭をくっつける.Bufferの先頭をStackに移動 RE Reduce: Stackの先頭をとりのぞく SH LA SH RA RE People write Java RA with RA
  40. 40. Arc-standard との違い ‣ Arc-standard は,右も左もボトムアップ ‣ Arc-eager は,左はボトムアップ,右はボトムダウン ‣ ボトムダウン:親から子へどんどん繋げていく ‣ ボトムアップ:子が全て出来てから,親に繋げる with tears Stack Buffer (Input) SH LA SH People write RA Java RE RA?
  41. 41. Arc-standard との違い ‣ Arc-standard は,右も左もボトムアップ ‣ Arc-eager は,左はボトムアップ,右はボトムダウン ‣ ボトムダウン:親から子へどんどん繋げていく ‣ ボトムアップ:子が全て出来てから,親に繋げる tears Stack Buffer (Input) SH LA SH RA RE People write Java RA with
  42. 42. その他:構造上の違い with tears SH SH L People write SH Java ? ここでの問題は, with tears が write か Java のどちらに係るか Arc-standard は,この時点で  その決断を行う必要がある Arc-standard with tears SH SH L People write SH Java R Right-reduce Shift tears SH SH L People write SH Java SH with このリンクは作れない このリンクは作れない ここが確定してしまう
  43. 43. その他:構造上の違い ‣ Zhang and Nivre (2011) : Arc-eager + 豊富な素性で State-of-the-art with tears People write Java ここでの問題は, with tears が write か Java のどちらに係るか Arc-eager では,write → Java  をつくった後で決められる 得られた構造を素性に組み込める Arc-eager SH LA SH RA S0S0h w 素性関数 1 1 ・・・ S0 Java w with S0h write w with Buffer の先頭の head と次の単語との関係 Arc-standard では利用不可能
  44. 44. Transition-based の問題点:局所性 ‣ 局所的な分類のみなので,大域的な最適解に り着けない ‣ 以降はこの解決策をいくつか紹介 I saw Jack and Jill fall Arc-eager saw I Jack and Jill fall Right-arc or Shift ? 素性関数はここまで見れない,つまり saw I Jack and Jill と同じに見えてしまう Shift が正解 Right-arc が正解
  45. 45. Beam search ‣ これまでの手法は,一つの解のみを保持 ‣ 分類器のスコア合計の k-best の候補を保持する - k に比例して計算量は増える - 正解が k-best から漏れなければ,たどり着く可能性がある ‣ DP を組み合わせてより効率的に k-best を持つと性能向上 (Huang and Sagae 10) Zhang and Clark (2008) SH LA SH SH LA RA O(kn) SH RA SH SH SH RA saw I Jack saw I Jack RA SH RA LA 10,000 8,500 8,200 5,000 RA RA 12,000 9,900 LA saw I Jack fall and Jill saw I Jack fall and Jill RA 3,4000 3,2000
  46. 46. Dynamic oracle ‣ 訓練方法を工夫する ‣ これまでの訓練方法 - 正解の係り受け木から,対応する Shift-reduce のアクションを取り出す - これまでの解析が全て合っている,という前提の訓練事例しか作れない Goldberg and Nivre (2012) 訓練文書 In an Oct. 19 review of ... SH SH SH RA LA LA RA … 変換するためのルールが存在 buffer の先頭と次の単語にリンク があればRA or LAを行う,など RA In an Oct. 19 review of 訓練の仕方 SH SH SH SH SH RA LA LA RA …正解: 予測: 1. 現在のパラメータで分類 2. 間違えた場合,パラメータの更新 3. 予測を正解に修正し,次の語を処理
  47. 47. Dynamic oracle ‣ 訓練方法を工夫する ‣ これまでの訓練方法 - 正解の係り受け木から,対応する Shift-reduce のアクションを取り出す - これまでの解析が全て合っている,という前提の訓練事例しか作れない Goldberg and Nivre (2012) 訓練文書 In an Oct. 19 review of ... SH SH SH RA LA LA RA … 変換するためのルールが存在 buffer の先頭と次の単語にリンク があればRA or LAを行う,など In an 訓練の仕方 1. 現在のパラメータで分類 SH SH RA SH SH SH RA LA LA RA …正解: 予測: 2. 間違えた場合,パラメータの更新 3. 予測を正解に修正し,次の語を処理 Oct. 19 review of SH
  48. 48. SH Dynamic oracle ‣ 訓練方法を工夫する ‣ これまでの訓練方法 - 正解の係り受け木から,対応する Shift-reduce のアクションを取り出す - これまでの解析が全て合っている,という前提の訓練事例しか作れない Goldberg and Nivre (2012) 訓練文書 In an Oct. 19 review of ... SH SH SH RA LA LA RA … 変換するためのルールが存在 buffer の先頭と次の単語にリンク があればRA or LAを行う,など In an 訓練の仕方 1. 現在のパラメータで分類 SH SH SH SH SH RA LA LA RA …正解: 予測: 2. 間違えた場合,パラメータの更新 3. 予測を正解に修正し,次の語を処理 19 review ofOct.
  49. 49. Dynamic oracle ‣ 訓練方法を工夫する ‣ これまでの訓練方法 - 正解の係り受け木から,対応する Shift-reduce のアクションを取り出す - これまでの解析が全て合っている,という前提の訓練事例しか作れない ‣ 実際にはデコード中に間違えてしまう - 途中で間違えた場合,そのエラーをなるべく伝搬させたくない - 間違えることも想定して,訓練事例を動的に生成 - Searn (Daumé 06) などと似た考え方 Goldberg and Nivre (2012) Jubatus is a processing platform for analyzing ... is Jubatus processing a platform ... 間違えた! けど訓練中にこんな状況になってないので, 今後の最適解か分からない…
  50. 50. Dynamic oracle ‣ 基本的なアイデア - 訓練データに対する分類の正解 (SH, RA, LA, RE) を,現在の予測器の状態に 応じて動的に変えたい ‣ 学習アルゴリズム Goldberg and Nivre (2012) Algorithm 3 Online training with a dynamic oracle 1: w 0 2: for I = 1 ! ITERATIONS do 3: for sentence x with gold tree Ggold in corpus do 4: c cs(x) 5: while c is not terminal do 6: tp argmaxt w · φ(c, t) 7: ZERO_COST {t|o(t; c, Ggold) = true} 8: to argmaxt2ZERO_COST w · φ(c, t) 9: if tp 62 ZERO_COST then 10: w w + φ(c, to) φ(c, tp) 11: tn CHOOSE_NEXT(I,tp,ZERO_COST) 12: c tn(c) 13: return w Shift-reduce の初期状態 現在の分類器で予測 それまでの遷移から,今後 loss が増えない遷移の仕方を 動的に探す 以外と簡単に探せる 実際の遷移を行う 間違えた場合も(わざと) たまにそちらを選ぶ
  51. 51. Non-monotonic ‣ これまでの遷移は monotonic - 一度決めた係り関係は,途中で変化しない - これによるエラー伝搬を防ぐため,beam-search などを導入した ‣ Non-monotonic な遷移を可能にする - 途中で行った遷移を,後から 修正する という動作を加える - その時点では情報が少なくて間違えても,後から適宜修正する Honnibal, Goldberg and Johnson (2013, CoNLL)
  52. 52. Non-monotonic Left-arc Honnibal, Goldberg and Johnson (2013, CoNLL) I saw Jack and Jill fall saw I Jack and Jill fall さきほど取り扱った例 正解は SH だが… 分類器からは見えない SH LA SH ?
  53. 53. Non-monotonic Left-arc Honnibal, Goldberg and Johnson (2013, CoNLL) I saw Jack and Jill fall saw I Jack and Jill fall さきほど取り扱った例 正解は SH だが… RA を選択 分類器からは見えない SH LA SH RA
  54. 54. Non-monotonic Left-arc Honnibal, Goldberg and Johnson (2013, CoNLL) I saw Jack and Jill fall saw I and Jill fall さきほど取り扱った例 正解は SH だが… RA を選択 SH LA SH RA Jack
  55. 55. Non-monotonic Left-arc Honnibal, Goldberg and Johnson (2013, CoNLL) I saw Jack and Jill fall fall さきほど取り扱った例 正解は SH だが… RA を選択 SH LA SH RA RA RE RA RE saw I Jack and Jill この部分は正解と一致する LA
  56. 56. Non-monotonic Left-arc ‣ 一度間違えて作った係り関係を,後で修正する ‣ Reduce に対しても,似たような動作を定義できる ‣ 難しい部分を,後から修正することで先延ばしにする ‣ 後半のほうが,これまで作った部分木から豊富な素性を抽出できる Honnibal, Goldberg and Johnson (2013, CoNLL) I saw Jack and Jill fall fall さきほど取り扱った例 正解は SH だが… RA を選択 SH LA SH RA RA RE RA RE saw I LA Jack and Jill
  57. 57. Non-monotonic Oracle の作り方 ‣ Dynamic oracle (Goldberg and Nivre 2012) を用いる ‣ Non-monotonic は,途中で発生した間違いをうまく修正することが売り ‣ そのような間違いが訓練中に発生しないと意味がない ‣ ZERO_COST のアクションの探索方法を,今回のシステムに拡張する Honnibal, Goldberg and Johnson (2013, CoNLL)
  58. 58. Dynamic transition ‣ with tears は,write にかかるか,Java にかかるか - write にかかる SH - Java にかかる RA - with tears という部分木はできていない状態で決めないといけない ‣ 本質的に難しい部分は後伸ばしにしたい - Non-monotonic とモチベーションは同じ - 探索範囲を広げるように,スタックの状態を変更する with tears People write Java SH LA SH RA Sartorio, Satta and Nivre (2013, ACL) Arc-eager
  59. 59. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears People write Java with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH
  60. 60. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears write Java with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH People SH
  61. 61. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears Java with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH People SH write LA(0)
  62. 62. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears Java with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH People SH LA(0) write SH
  63. 63. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH SH LA(0) People write SH Java RA(0)
  64. 64. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH SH LA(0) People write SH Java RA(0) SH
  65. 65. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH SH LA(0) SH RA(0) People write Java SH with SH
  66. 66. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH SH LA(0) SH RA(0) People write Java SH with SH RA(0)
  67. 67. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH SH LA(0) SH RA(0) People write Java SH with SH RA(0) RA(0) RA(1) RA(0) この部分木から素性を抽出して予測を行える
  68. 68. Dynamic transition Sartorio, Satta and Nivre (2013, ACL) People write Java with tears Stack Actions Buffer (Input) SH Shift LA(k) LeftArc(k) RA(k) RightArc(k) SH SH LA(0) SH RA(0) People write Java SH SH RA(0) tears with RA(0)
  69. 69. Dynamic transition ‣ 基本的に,単語を stack に移動してから処理をする ‣ 処理単位を単語ではなく木とし,木同士をくっつける ‣ 探索範囲が広がる ‣ 一つの係り関係に り着けるアクションの組み合わせが増える ‣ ここでも Dynamic oracle で最適な oracle を訓練時に選択しながら学習 Sartorio, Satta and Nivre (2013, ACL) Stack Stack RA(0) RA(1) RA(2) RA(3) LA(0) LA(1) LA(2) LA(3)
  70. 70. Tree-based model ‣ 基本となる考えは,既存研究あり - 片方のみ dynamic system(RA(k)のみ) ‣ これを左右に一般化したのが本モデル Kitagawa and Tanaka-Ishii (2010) he telescope nt. ls are ex- ransition, The biped was sold separately by robot his company ti tj mphc ),( ji tt Right-Arc The biped was sold separately by robot his company ti tj Figure 2: Example of the transition Right. 2008). Since the Japanese language has the head- final property, the tournament model itself consti- tutes parsing, whereas for parsing a general pro-
  71. 71. 性能比較 (WSJ) ‣ Dynamic は Arc-eager の 2.8倍程度遅い(分類問題のクラスが多いから) ‣ Non-monotonic はほとんど変わらない ‣ 今回紹介した手法は,state-of-the-art ではなく,完全に一本の探索のみで どこまで性能が出るか,を追求したもの Arc-standard Nivre 04 90.02 Arc-eager Nivre 04 90.18 beam(8) Zhang and Nivre 11 92.4 beam(64) Zhang and Nivre 11 92.9 Non-monotonic Honnibal et al. 13 91.0 Dynamic Sartorio et al. 13 91.3 O(n) O(n) O(n) O(n) O(kn) O(kn)
  72. 72. まとめ ‣ 係り受け解析に対する3つのアプローチ - Transition-based : (基本)線形時間で処理,しかし局所的な探索 - Graph-based : 大域的な探索を行うが,(モデルを複雑にすると)処理が遅い - Hybrid : 色々いいところを組み合わせ.State-of-the-art を目指すならこちら? ‣ Transition-based の枠組みで,どこまで性能を伸ばせるか? - beam search : 有効だが,beam幅に比例した計算がかかる - Dynamic oracle : 訓練例の作り方を工夫.後の研究の基礎に - Non-monotonic : 難しい箇所を後から修正できる - Dynamic system : スタックの構成要素を単語から木にして,探索範囲を広げる
  73. 73. おまけ:cognitive plausibility ‣ 人間の文章理解との類似性 - 人間は,文を読みながら(話を聞きながら),読み返すことなく文の意味を 理解することができる - Transition-based parsing は,単語を一語ずつスタックに入れて処理する ‣ スタック = 人間が文を解釈しているときの記憶状態? ‣ 人間の解釈の仕方に近いような transition system ? ‣ Arc-eager は解釈モデルとして妥当ではない,という考えも - Nivre (2004), Demberg et al. (2013) など ‣ Shift-reduce の枠組みは,係り関係を線形に構築する枠組みを提供する - これを通して人間の文の解釈の仕組みが理解できるかも?
  74. 74. ご清聴ありがとうございました

×