SlideShare a Scribd company logo
1 of 74
Download to read offline
最近の Transition-based Parsing
PFI セミナー 2013/8/5
自己紹介
‣ 能地宏 / @nozyh
‣ 2011年夏インターン∼アルバイト
‣ 専門:自然言語処理・計算言語学
- 言語獲得
- 構文解析
‣ - 2013/3 : 東大・情報理工
‣ 2013/4 - : 総合研究大学院大学・情報学専攻 (D1)
- 普段は NII にいます
今日の話
‣ 自然言語の構文解析
- 構文解析とは何か?
- 係り受け解析の現状
‣ transition-based parsing
- Arc-standard,Arc-eager
- 様々な亜種 (dynamic oracle, dynamic transition, non-monotonic, etc)
対象者と聞き方
‣ 自然言語処理の研究をしていない人(構文解析に失望している人?)
- 現在自然言語処理で最高精度の構文解析がどういう仕組みで動いているのか
雰囲気を掴んでもらえれば…
- 難しい数学はほとんど出てきません
‣ 自然言語処理の研究者
- Transition-based の様々な亜種・工夫について,今年の ACL, CoNLL
(ただいま開催中@ブルガリア)まで
- State-of-the-art の網羅というより,考え方中心です
- 最新手法までのまとめとして
構文解析(係り受け解析)入門
‣ 海野さんの分かりやすいスライドがあります
‣ こちらは主に Chart-based の手法を説明
‣ 今回は,それと対になる Transition-based の手法を主に説明
http://www.slideshare.net/unnonouno/ss-5724050
係り受け = 依存文法
‣ 例により説明がすくない…(英語は充実)
解析してみよう
1. (日本語の場合)形態素解析
2. 文節に区切る(チャンキング)
3. 文節間に係り関係を付与
構造は語と従属部との関係として定義される
構造 は 語 と 従属 部 と の 関係 として 定義 さ れる
名 助 名 助 名 名 助 助 名 助 名 動 動
※ 日本語は普通、矢印の向きがこれと逆ですが、
他の言語に合わせます
head と dependent
‣ head: 主辞
‣ dependent: head にかかる句
‣ dependent は head を修飾する
‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ
‣ 動詞が一番重要 => 文全体の head は動詞
名 助
構造 は
名 助
語 と
名 名 助 助
従属 部 と の
名 助
関係 として
名 動 動
定義 さ れる
head と dependent
‣ head: 主辞
‣ dependent: head にかかる句
‣ dependent は head を修飾する
‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ
‣ 動詞が一番重要 => 文全体の head は動詞
名 助
構造 は
名 名 助 助
従属 部 と の
名 助
関係 として
名 動 動
定義 さ れる
head
名 助
語 と
dependent
head と dependent
‣ head: 主辞
‣ dependent: head にかかる句
‣ dependent は head を修飾する
‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ
‣ 動詞が一番重要 => 文全体の head は動詞
名 助
構造 は
名 助
関係 として
名 動 動
定義 さ れる
名 助
語 と
名 名 助 助
従属 部 と の
dependent
head
英語では、単語単位で木をつくる
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
・・・
そもそも定義が曖昧な部分も
‣ 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)
なぜ構文解析するのか
‣ 構文木は、(浅い意味で)文の意味関係を捉えている
‣ そこから様々な情報を抽出して利用
- 機械翻訳:現在主流の Tree-to-string は,source 側の構文解析が必要
     構文解析を間違えると翻訳も間違える
- 情報抽出:主語と目的語の関係を見つけたい
‣ 今は色々なアプリケーションで構文解析の精度がボトルネック
- 歴史は古いが重要( 90)
- 本当に重要な問題を解いているかは疑問(?)
基本の枠組み
‣ ツリーバンク : 言語学者が作った,構文 木 の集合
- 訓練データとして用いる
- 非常に高コスト
- 英語のデータは Penn Treebank (Marcus et al., 1993) をずっと使っている (5万文程度)
ツリーバンク
モデル(分類器)
教師あり学習
Jubatus is a processing platform ...
未知のデータを解析
head が予測出来た単語の割合で評価する
(文毎の正解率ではない)
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 は遅い
係り受け解析に対する二つの手法
‣ 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
)
係り受け解析に対する二つの手法
‣ 今日はこちらをメインに話します
‣ 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)
(余談)最近の流行は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
以降は 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)
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
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)
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)
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)
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)
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)
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)
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)
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)
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)
Arc-standard はボトムアップ
‣ write → with というリンクは存在するが…
- ここで R を選ぶと,with → tears というリンクは作られない
tears
SH SH L SH R
People
write
Java
SH
with
?
Stack Buffer (Input)
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)
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
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
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
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
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
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
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
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
Arc-standard との違い
‣ Arc-standard は,右も左もボトムアップ
‣ Arc-eager は,左はボトムアップ,右はボトムダウン
‣ ボトムダウン:親から子へどんどん繋げていく
‣ ボトムアップ:子が全て出来てから,親に繋げる
with tears
Stack Buffer (Input)
SH LA SH
People
write
RA
Java
RE RA?
Arc-standard との違い
‣ Arc-standard は,右も左もボトムアップ
‣ Arc-eager は,左はボトムアップ,右はボトムダウン
‣ ボトムダウン:親から子へどんどん繋げていく
‣ ボトムアップ:子が全て出来てから,親に繋げる
tears
Stack Buffer (Input)
SH LA SH RA RE
People
write
Java
RA
with
その他:構造上の違い
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
このリンクは作れない このリンクは作れない
ここが確定してしまう
その他:構造上の違い
‣ 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 では利用不可能
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 が正解
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
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. 予測を正解に修正し,次の語を処理
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
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.
Dynamic oracle
‣ 訓練方法を工夫する
‣ これまでの訓練方法
- 正解の係り受け木から,対応する Shift-reduce のアクションを取り出す
- これまでの解析が全て合っている,という前提の訓練事例しか作れない
‣ 実際にはデコード中に間違えてしまう
- 途中で間違えた場合,そのエラーをなるべく伝搬させたくない
- 間違えることも想定して,訓練事例を動的に生成
- Searn (Daumé 06) などと似た考え方
Goldberg and Nivre (2012)
Jubatus is a processing platform for analyzing ...
is
Jubatus
processing
a
platform ...
間違えた!
けど訓練中にこんな状況になってないので,
今後の最適解か分からない…
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 が増えない遷移の仕方を
動的に探す
以外と簡単に探せる
実際の遷移を行う
間違えた場合も(わざと)
たまにそちらを選ぶ
Non-monotonic
‣ これまでの遷移は monotonic
- 一度決めた係り関係は,途中で変化しない
- これによるエラー伝搬を防ぐため,beam-search などを導入した
‣ Non-monotonic な遷移を可能にする
- 途中で行った遷移を,後から 修正する という動作を加える
- その時点では情報が少なくて間違えても,後から適宜修正する
Honnibal, Goldberg and Johnson (2013, CoNLL)
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 ?
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
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
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
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
Non-monotonic Oracle の作り方
‣ Dynamic oracle (Goldberg and Nivre 2012) を用いる
‣ Non-monotonic は,途中で発生した間違いをうまく修正することが売り
‣ そのような間違いが訓練中に発生しないと意味がない
‣ ZERO_COST のアクションの探索方法を,今回のシステムに拡張する
Honnibal, Goldberg and Johnson (2013, CoNLL)
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
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
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
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)
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
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)
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
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
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)
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)
この部分木から素性を抽出して予測を行える
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)
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)
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-
性能比較 (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)
まとめ
‣ 係り受け解析に対する3つのアプローチ
- Transition-based : (基本)線形時間で処理,しかし局所的な探索
- Graph-based : 大域的な探索を行うが,(モデルを複雑にすると)処理が遅い
- Hybrid : 色々いいところを組み合わせ.State-of-the-art を目指すならこちら?
‣ Transition-based の枠組みで,どこまで性能を伸ばせるか?
- beam search : 有効だが,beam幅に比例した計算がかかる
- Dynamic oracle : 訓練例の作り方を工夫.後の研究の基礎に
- Non-monotonic : 難しい箇所を後から修正できる
- Dynamic system : スタックの構成要素を単語から木にして,探索範囲を広げる
おまけ:cognitive plausibility
‣ 人間の文章理解との類似性
- 人間は,文を読みながら(話を聞きながら),読み返すことなく文の意味を
理解することができる
- Transition-based parsing は,単語を一語ずつスタックに入れて処理する
‣ スタック = 人間が文を解釈しているときの記憶状態?
‣ 人間の解釈の仕方に近いような transition system ?
‣ Arc-eager は解釈モデルとして妥当ではない,という考えも
- Nivre (2004), Demberg et al. (2013) など
‣ Shift-reduce の枠組みは,係り関係を線形に構築する枠組みを提供する
- これを通して人間の文の解釈の仕組みが理解できるかも?
ご清聴ありがとうございました

More Related Content

What's hot

不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
Shintaro Fukushima
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
shima o
 

What's hot (20)

最適輸送の解き方
最適輸送の解き方最適輸送の解き方
最適輸送の解き方
 
不均衡データのクラス分類
不均衡データのクラス分類不均衡データのクラス分類
不均衡データのクラス分類
 
ドメイン適応の原理と応用
ドメイン適応の原理と応用ドメイン適応の原理と応用
ドメイン適応の原理と応用
 
Optimizer入門&最新動向
Optimizer入門&最新動向Optimizer入門&最新動向
Optimizer入門&最新動向
 
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -深層学習の不確実性 - Uncertainty in Deep Neural Networks -
深層学習の不確実性 - Uncertainty in Deep Neural Networks -
 
トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?トピックモデルの評価指標 Perplexity とは何なのか?
トピックモデルの評価指標 Perplexity とは何なのか?
 
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
Word Tour: One-dimensional Word Embeddings via the Traveling Salesman Problem...
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
正準相関分析
正準相関分析正準相関分析
正準相関分析
 
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
『機械学習による故障予測・異常検知 事例紹介とデータ分析プロジェクト推進ポイント』
 
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
SSII2020TS: 機械学習モデルの判断根拠の説明​ 〜 Explainable AI 研究の近年の展開 〜​
 
Stochastic Gradient MCMC
Stochastic Gradient MCMCStochastic Gradient MCMC
Stochastic Gradient MCMC
 
階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門階層ベイズによるワンToワンマーケティング入門
階層ベイズによるワンToワンマーケティング入門
 
【DL輪読会】WIRE: Wavelet Implicit Neural Representations
【DL輪読会】WIRE: Wavelet Implicit Neural Representations【DL輪読会】WIRE: Wavelet Implicit Neural Representations
【DL輪読会】WIRE: Wavelet Implicit Neural Representations
 
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
SSII2022 [SS2] 少ないデータやラベルを効率的に活用する機械学習技術 〜 足りない情報をどのように補うか?〜
 
機械学習モデルの列挙
機械学習モデルの列挙機械学習モデルの列挙
機械学習モデルの列挙
 
BERT入門
BERT入門BERT入門
BERT入門
 
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
[DL輪読会]Reward Augmented Maximum Likelihood for Neural Structured Prediction
 
大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理大規模データ時代に求められる自然言語処理
大規模データ時代に求められる自然言語処理
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
 

Recently uploaded

Recently uploaded (11)

論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

最近のTransition based parsing

  • 2. 自己紹介 ‣ 能地宏 / @nozyh ‣ 2011年夏インターン∼アルバイト ‣ 専門:自然言語処理・計算言語学 - 言語獲得 - 構文解析 ‣ - 2013/3 : 東大・情報理工 ‣ 2013/4 - : 総合研究大学院大学・情報学専攻 (D1) - 普段は NII にいます
  • 3. 今日の話 ‣ 自然言語の構文解析 - 構文解析とは何か? - 係り受け解析の現状 ‣ transition-based parsing - Arc-standard,Arc-eager - 様々な亜種 (dynamic oracle, dynamic transition, non-monotonic, etc)
  • 4. 対象者と聞き方 ‣ 自然言語処理の研究をしていない人(構文解析に失望している人?) - 現在自然言語処理で最高精度の構文解析がどういう仕組みで動いているのか 雰囲気を掴んでもらえれば… - 難しい数学はほとんど出てきません ‣ 自然言語処理の研究者 - Transition-based の様々な亜種・工夫について,今年の ACL, CoNLL (ただいま開催中@ブルガリア)まで - State-of-the-art の網羅というより,考え方中心です - 最新手法までのまとめとして
  • 5. 構文解析(係り受け解析)入門 ‣ 海野さんの分かりやすいスライドがあります ‣ こちらは主に Chart-based の手法を説明 ‣ 今回は,それと対になる Transition-based の手法を主に説明 http://www.slideshare.net/unnonouno/ss-5724050
  • 6. 係り受け = 依存文法 ‣ 例により説明がすくない…(英語は充実)
  • 7. 解析してみよう 1. (日本語の場合)形態素解析 2. 文節に区切る(チャンキング) 3. 文節間に係り関係を付与 構造は語と従属部との関係として定義される 構造 は 語 と 従属 部 と の 関係 として 定義 さ れる 名 助 名 助 名 名 助 助 名 助 名 動 動 ※ 日本語は普通、矢印の向きがこれと逆ですが、 他の言語に合わせます
  • 8. head と dependent ‣ head: 主辞 ‣ dependent: head にかかる句 ‣ dependent は head を修飾する ‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ ‣ 動詞が一番重要 => 文全体の head は動詞 名 助 構造 は 名 助 語 と 名 名 助 助 従属 部 と の 名 助 関係 として 名 動 動 定義 さ れる
  • 9. head と dependent ‣ head: 主辞 ‣ dependent: head にかかる句 ‣ dependent は head を修飾する ‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ ‣ 動詞が一番重要 => 文全体の head は動詞 名 助 構造 は 名 名 助 助 従属 部 と の 名 助 関係 として 名 動 動 定義 さ れる head 名 助 語 と dependent
  • 10. head と dependent ‣ head: 主辞 ‣ dependent: head にかかる句 ‣ dependent は head を修飾する ‣ イメージ: head+dependent を head のみに置き換えても文が成り立つ ‣ 動詞が一番重要 => 文全体の head は動詞 名 助 構造 は 名 助 関係 として 名 動 動 定義 さ れる 名 助 語 と 名 名 助 助 従属 部 と の dependent head
  • 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. そもそも定義が曖昧な部分も ‣ 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. なぜ構文解析するのか ‣ 構文木は、(浅い意味で)文の意味関係を捉えている ‣ そこから様々な情報を抽出して利用 - 機械翻訳:現在主流の Tree-to-string は,source 側の構文解析が必要      構文解析を間違えると翻訳も間違える - 情報抽出:主語と目的語の関係を見つけたい ‣ 今は色々なアプリケーションで構文解析の精度がボトルネック - 歴史は古いが重要( 90) - 本当に重要な問題を解いているかは疑問(?)
  • 14. 基本の枠組み ‣ ツリーバンク : 言語学者が作った,構文 木 の集合 - 訓練データとして用いる - 非常に高コスト - 英語のデータは Penn Treebank (Marcus et al., 1993) をずっと使っている (5万文程度) ツリーバンク モデル(分類器) 教師あり学習 Jubatus is a processing platform ... 未知のデータを解析 head が予測出来た単語の割合で評価する (文毎の正解率ではない)
  • 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. 係り受け解析に対する二つの手法 ‣ 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. 係り受け解析に対する二つの手法 ‣ 今日はこちらをメインに話します ‣ 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. (余談)最近の流行は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. 以降は 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Arc-standard はボトムアップ ‣ write → with というリンクは存在するが… - ここで R を選ぶと,with → tears というリンクは作られない tears SH SH L SH R People write Java SH with ? Stack Buffer (Input)
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. Arc-standard との違い ‣ Arc-standard は,右も左もボトムアップ ‣ Arc-eager は,左はボトムアップ,右はボトムダウン ‣ ボトムダウン:親から子へどんどん繋げていく ‣ ボトムアップ:子が全て出来てから,親に繋げる with tears Stack Buffer (Input) SH LA SH People write RA Java RE RA?
  • 41. Arc-standard との違い ‣ Arc-standard は,右も左もボトムアップ ‣ Arc-eager は,左はボトムアップ,右はボトムダウン ‣ ボトムダウン:親から子へどんどん繋げていく ‣ ボトムアップ:子が全て出来てから,親に繋げる tears Stack Buffer (Input) SH LA SH RA RE People write Java RA with
  • 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. その他:構造上の違い ‣ 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. 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. 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. 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. 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. 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. Dynamic oracle ‣ 訓練方法を工夫する ‣ これまでの訓練方法 - 正解の係り受け木から,対応する Shift-reduce のアクションを取り出す - これまでの解析が全て合っている,という前提の訓練事例しか作れない ‣ 実際にはデコード中に間違えてしまう - 途中で間違えた場合,そのエラーをなるべく伝搬させたくない - 間違えることも想定して,訓練事例を動的に生成 - Searn (Daumé 06) などと似た考え方 Goldberg and Nivre (2012) Jubatus is a processing platform for analyzing ... is Jubatus processing a platform ... 間違えた! けど訓練中にこんな状況になってないので, 今後の最適解か分からない…
  • 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. Non-monotonic ‣ これまでの遷移は monotonic - 一度決めた係り関係は,途中で変化しない - これによるエラー伝搬を防ぐため,beam-search などを導入した ‣ Non-monotonic な遷移を可能にする - 途中で行った遷移を,後から 修正する という動作を加える - その時点では情報が少なくて間違えても,後から適宜修正する Honnibal, Goldberg and Johnson (2013, CoNLL)
  • 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. 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. 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. 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. 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. Non-monotonic Oracle の作り方 ‣ Dynamic oracle (Goldberg and Nivre 2012) を用いる ‣ Non-monotonic は,途中で発生した間違いをうまく修正することが売り ‣ そのような間違いが訓練中に発生しないと意味がない ‣ ZERO_COST のアクションの探索方法を,今回のシステムに拡張する Honnibal, Goldberg and Johnson (2013, CoNLL)
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 性能比較 (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. まとめ ‣ 係り受け解析に対する3つのアプローチ - Transition-based : (基本)線形時間で処理,しかし局所的な探索 - Graph-based : 大域的な探索を行うが,(モデルを複雑にすると)処理が遅い - Hybrid : 色々いいところを組み合わせ.State-of-the-art を目指すならこちら? ‣ Transition-based の枠組みで,どこまで性能を伸ばせるか? - beam search : 有効だが,beam幅に比例した計算がかかる - Dynamic oracle : 訓練例の作り方を工夫.後の研究の基礎に - Non-monotonic : 難しい箇所を後から修正できる - Dynamic system : スタックの構成要素を単語から木にして,探索範囲を広げる
  • 73. おまけ:cognitive plausibility ‣ 人間の文章理解との類似性 - 人間は,文を読みながら(話を聞きながら),読み返すことなく文の意味を 理解することができる - Transition-based parsing は,単語を一語ずつスタックに入れて処理する ‣ スタック = 人間が文を解釈しているときの記憶状態? ‣ 人間の解釈の仕方に近いような transition system ? ‣ Arc-eager は解釈モデルとして妥当ではない,という考えも - Nivre (2004), Demberg et al. (2013) など ‣ Shift-reduce の枠組みは,係り関係を線形に構築する枠組みを提供する - これを通して人間の文の解釈の仕組みが理解できるかも?