12. 12
文脈自由文法
(Context-free grammar ;CFG)
• ルールから文を再帰的に導出する生成モデル
• 単語の前後関係に依存せず導出 → 文脈自由
• Time flies like an arrow
をCFGで生成した時のイメージ
(これから説明します)
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
VP
S
N V
Time flies
P
like
DET
an
N
arrow
PP
NP
14. 文脈自由文法
(Context-free grammar ;CFG)
• ルールから文を再帰的に導出する生成モデル
• 書き換え規則(チョムスキー標準形)
• NT → NT, NT
• NT → T
非終端記号(non-terminal; NT)
… 名詞とか動詞とか
終端記号(terminal; T)
… 単語
文
名詞句動詞句
名詞句
前置詞名詞
名詞動詞
Coffee drink
14
15. 文脈自由文法
(Context-free grammar ;CFG)
• Time flies like an arrowという文の生成をしてみる
S
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
15
16. 文脈自由文法
(Context-free grammar ;CFG)
• Time flies like an arrowという文の生成をしてみる
VP
S
N
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
16
17. 文脈自由文法
(Context-free grammar ;CFG)
• Time flies like an arrowという文の生成をしてみる
VP
S
N V
Time
PP
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
17
18. 18
文脈自由文法
(Context-free grammar ;CFG)
• Time flies like an arrowという文の生成をしてみる
VP
S
N V
Time flies
P
PP
NP
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
19. 19
文脈自由文法
(Context-free grammar ;CFG)
• Time flies like an arrowという文の生成をしてみる
VP
S
N V
Time flies
P
like
PP
NP
DET N
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
20. S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP この文の文法構造
20
文脈自由文法
(Context-free grammar ;CFG)
• Time flies like an arrowという文の生成をしてみる
VP
S
N V
Time flies
P
like
DET
an
N
arrow
PP
NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
(構文木)
21. N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
DET→an
N→arrow
S→NP / VP
S→N / VP
NP→ADJ / N
NP→DET / N
VP→V / NP
VP→V / PP
PP→P / NP
Time flies time an time
Time flies time an flies
Time flies time an arrow
Time flies flies an time
Time flies flies an flies
Time flies flies an arrow
Time flies like an time
Time flies like an flies
Time flies like an arrow
Time flies time time time
Time flies flies time flies
Time flies like time arrow
Time flies time like an time
Time flies time like an flies
Time flies time like an arrow
Time flies flies like an time
Time flies flies like an flies
Time flies flies like an arrow
Time flies like like an time
Time flies like like an flies
Time flies like like an arrow
Time flies time like time arrow
Time flies time like time time
Time flies time like time flies
Time flies flies like time arrow
Time flies flies like time time
Time flies flies like time flies
Time flies like like time arrow
Time flies like like time flies
Time flies like like time flies
Time arrow time an time
Time arrow time an flies
Time arrow time an arrow
Time arrow flies an time
Time arrow flies an flies
Time arrow flies an arrow
Time arrow like an time
Time arrow like an flies
Time arrow like an arrow
Time arrow time time time
Time arrow flies time flies
Time arrow like time arrow
Time arrow time like an time
Time arrow time like an flies
Time arrow time like an arrow
Time arrow flies like an time
Time arrow flies like an flies
Time arrow flies like an arrow
Time arrow like like an time
Time arrow like like an flies
Time arrow like like an arrow
Time arrow time like time arrow
Time arrow time like time time
Time arrow time like time flies
Time arrow flies like time arrow
Time arrow flies like time time
Time arrow flies like time flies
Time arrow like like time arrow
Time arrow like like time flies
Time arrow like like time flies
Time time time an time
Time time time an flies
Time time time an arrow
Time time flies an time
Time time flies an flies
Time time flies an arrow
Time time like an time
Time time like an flies
Time time like an arrow
Time time time time time
Time time flies time flies
Time time like time arrow
Time time time like an time
Time time time like an flies
Time time time like an arrow
Time time flies like an time
Time time flies like an flies
Time time flies like an arrow
Time time like like an time
Time time like like an flies
Time time like like an arrow
Time time time like time arrow
Time time time like time time
Time time time like time flies
Time time flies like time arrow
Time time flies like time time
Time time flies like time flies
Time time like like time arrow
Time time like like time flies
Time time like like time flies
Time time an time
Time time an flies
Time time an arrow
Time flies an time
Time flies an flies
Time flies an arrow
Time like an time
Time like an flies
Time like an arrow
Time time time time
Time flies time flies
Time like time arrow
Time time like an time
Time time like an flies
Time time like an arrow
Time flies like an time
Time flies like an flies
Time flies like an arrow
Time like like an time
Time like like an flies
Time like like an arrow
Time time like time arrow
Time time like time time
Time time like time flies
Time flies like time arrow
Time flies like time time
Time flies like time flies
Time like like time arrow
Time like like time flies
Time like like time flies
flies time an time
flies time an flies
flies time an arrow
flies flies an time
flies flies an flies
flies flies an arrow
flies like an time
flies like an flies
flies like an arrow
flies time time time
flies flies time flies
flies like time arrow
flies time like an time
flies time like an flies
flies time like an arrow
flies flies like an time
flies flies like an flies
flies flies like an arrow
flies like like an time
flies like like an flies
flies like like an arrow
flies time like time arrow
flies time like time time
flies time like time flies
flies flies like time arrow
flies flies like time time
flies flies like time flies
flies like like time arrow
flies like like time flies
flies like like time flies
arrow time an time
arrow time an flies
arrow time an arrow
arrow flies an time
arrow flies an flies
arrow flies an arrow
arrow like an time
arrow like an flies
arrow like an arrow
arrow time time time
arrow flies time flies
arrow like time arrow
arrow time like an time
arrow time like an flies
arrow time like an arrow
arrow flies like an time
arrow flies like an flies
arrow flies like an arrow
arrow like like an time
arrow like like an flies
arrow like like an arrow
arrow time like time arrow
arrow time like time time
arrow time like time flies
arrow flies like time arrow
arrow flies like time time
arrow flies like time flies
arrow like like time arrow
arrow like like time flies
arrow like like time flies
文脈自由文法
(Context-free grammar ;CFG)
• 可能な全ての文
• 複数のプロセスで同じ文が生成されることも
26. N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
CYKアルゴリズム
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
NP→ADJ / N φ φ NP→D / N
N
V
ADJ
N
V
P
V
D N
Time flies like an arrow
27. CYKアルゴリズム
NTペアのとり方
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
φ φ
三角形が重ならないように
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
Time flies like an arrow
28. CYKアルゴリズム
NTペアのとり方
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
φ φ
三角形が重ならないように
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
Time flies like an arrow
29. CYKアルゴリズム
NTペアのとり方
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
φ φ
三角形が重ならないように
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
Time flies like an arrow
30. N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
CYKアルゴリズム
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
VP→V / NP
φ φ PP→P / NP
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
Time flies like an arrow
31. N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
CYKアルゴリズム
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
φ
φ φ
S→N / VP
VP→V / PP
VP
PP
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
Time flies like an arrow
36. N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
CYKアルゴリズム
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
S→NP / VP
S→N / VP
φ S
φ φ
VP
VP
PP
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
Time flies like an arrow
37. CYKアルゴリズム
S→NP / VP
S→N / VP
Sのあるセルをルートとする
文は文法的に正しい
(文法から生成可能)
Time flies like an arrow
flies like an arrow
は文法的に正しい
(与えられた文法の枠内では)
φ
φ φ
S
VP
VP
PP
NP φ φ NP
N
V
ADJ
N
V
P
V
D N
Time flies like an arrow
38. CYKアルゴリズム
S→NP / VP
S→N / VP
構文木を求めるには完成した
表をバックトラック
φ
複数の木が得られることもある
→曖昧な文
φ φ
S→N / VP
VP→V / PP
VP→V / NP
PP→P / NP
NP→ADJ / N φ φ NP→D / N
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an N→arrow
Time flies like an arrow
39. NP
VP
S
ADJ N
Time flies
V
like
DET
an
N
arrow
NP
VP
S
N V
Time flies
P
like
DET
an
N
arrow
PP
NP
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
CYKアルゴリズム
• この文法で得られた Time flies like an arrowに対
応する構文木
40. 40
文脈自由文法
(Context-free grammar ;CFG)
• 複数の導出が考えられるのが普通
• どれが正しい導出なのかわからない
→ 各ルールに確率を導入
NP
VP
S
ADJ N
Time flies
V
like
DET
an
N
arrow
NP
VP
S
N V
Time flies
P
like
DET
an
N
arrow
PP
NP
N→time
V→time
ADJ→time
N→flies
V→flies
P→like
V→like
D→an
N→arrow
S→NP / VP
S→N / VP
NP→ADJ / N
NP→D / N
VP→V / NP
VP→V / PP
PP→P / NP
44. NP
VP
S
ADJ N
Time flies
V
like
DET
an
0.001008 0.003024
N
arrow
NP
VP
S
N V
Time flies
P
like
DET
an
N
arrow
PP
NP
確率的文脈自由文法
(Probabilistic Context-free Grammar; PCFG)
• 構文木の生成確率が得られる
• 適用されているルールの確率の掛け算
S→NP / VP [0.4]
S→N / VP [0.6]
NP→ADJ / N [0.3]
NP→DET / N [0.7]
VP→V / NP [0.8]
VP→V / PP [0.2]
PP→P / NP [1.0]
N→time [0.6]
N→flies [0.1]
N→arrow[0.3]
V→time [0.3]
V→flies [0.2]
V→like [0.5]
ADJ→time [1.0]
P→like [1.0]
DET→an [1.0]