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)
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)
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 が増えない遷移の仕方を
動的に探す
以外と簡単に探せる
実際の遷移を行う
間違えた場合も(わざと)
たまにそちらを選ぶ
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
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)
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-