言言 言言言言言言言言 体 言7言
Jan 03, 2016
言語体系とコンピュータ
第 7 回
2
本日の内容• 前回のおさらい
– 文がどんな構造をしているか決める• 文脈自由文法を使った文構造の解析
• アルゴリズムをちゃんと考えた解析– CKY法– チャート法
3
前回のおさらい• 文がどんな構造をしているか決める
– 文の構造は曖昧なので,複数あることが多い– ただし,候補の中でありえないものは排除し
たい
– どんな構造があるかを見つける必要がある
→ 文として「あり」か,「なし」か を見極める作業ともいえる
4
前回のおさらい( 2 )• ある文字列が文か文でないか?
– どうやって決める?– 確実なのは母語話者の直感!
• 母語話者でも判定が難しいこともあるけど...「まじありえなくなくない?」
どちらにせよ.毎回母語話者が必要だとしたら不便だし, コンピュータでの処理は無理...
• それを克服するには,文法が必要
5
前回のおさらい( 3 )-文法( 1 )
• 文脈自由文法( CFG: Context Free Grammar ) G = < VT , VX , VC , PD , PP , σ
>– VT :終端記号– VX :非終端記号– VC :前終端記号 ←終端記号の 1 つ前の状態– PD :辞書規則の集合– PP :句構造規則の集合– σ :初期記号 σ V∈ N
というような記号を使って表現
6
前回のおさらい( 4 ) ー文法( 2 )
• 文脈自由文法の例– PP :句構造規則の集合
– PD :辞書規則の集合
( 1 ) S→NP VP
( 4 ) NP→DET N
( 7 ) VP→VP NP
( 2 ) NP→N ( 5 ) VP→V ( 8 ) VP→VP PP
( 3 ) NP→NP PP
( 6 ) VP→V NP
( 9 ) PP→Prep NPN→ I, apples, garden V→ eat
Det → the Prep→ in
7
前回のおさらい( 5 )• 手順は気にせず文の構造を決める作業 S
I eat the apples in the garden.
↑
ボトムアップ
8
前回のおさらい( 6 )• 手順は気にせず作業
NP NP
N V Det N Prep Det N
I eat the apples in the garden.
PP :句構造規則を調べて,句をつくる以降も最後まで続けた!
9
前回のおさらい( 7 )• トップダウンも説明 S
I eat the apples in the garden.
トップダウン
↓
10
前回のおさらい( 8 ) S
NP VP
I eat the apples in the garden.
11
前回のおさらい( 9 ) S
NP VP
I VP
I V I V NP
I eat I eat NP
I eat the apples in the garden.
最後まで 続ける
12
アルゴリズムを考えた解析• ボトムアップとトップダウン
– すでに体験済み– トップダウンS →NP VP規則は左から右へ
S
13
アルゴリズムを考えた解析• ボトムアップとトップダウン
– すでに体験済み– ボトムアップS →NP VP規則は右から左へ
S
14
アルゴリズムを考えた解析• 深さ優先(縦型)探索と幅優先(横型)
探索– 競合する規則をどのように採用していくかの
違い
15
アルゴリズムを考えた解析• 深さ優先(縦型)探索
– とりあえず1つの結果が出るまで探索を進める– 複数の結果を得るためには,後戻りして結果を
探す 1
2158
3
4
5
6 7
9 10
11
14
12
13
17
16
16
アルゴリズムを考えた解析• 幅優先(横型)探索
– 最初の頂点から到達可能な頂点を順に探す 1
2 3 4
5 6 7 109
11 14 15
16
17
アルゴリズムを考えた解析
• 比較的枝分かれが少ない場合– 深さ優先 × 幅優先○
• 枝分かれが多い場合– 深さ優先○ 幅優先 ×
18
CKY法( Cocke-Kasami-Younger 法)
• 制約:– ボトムアップ型...右辺から左辺への書き換え– 文法はチョムスキー標準形(結構きつい制約)
• チョムスキー標準形 (右辺が必ず非終端か前終端記号 2 つ) A→B C A Vx∈ , B , C∈ ( Vc Vx∪ ) Vx 非終端記号, Vc 前終端記号
19
CKY法( 2 )• 文法句構造規則 PP
辞書規則 PD
NP, VP はチョムスキー標準形への対応
( 1 ) S→NP VP
( 5 ) VP→VP NP
( 2 ) NP→NP PP
( 6 ) VP→VP PP
( 3 ) NP→DET N
( 7 ) PP→Prep NP
( 4 ) VP→V NP
N → I, apples, garden V → eat
NP→ I, apples, garden VP→ eat
Det → the Prep→ in
20
CKY法( 3 )• アルゴリズム 1 .単語 数分の マスを 書く
21
CKY法( 3b )• アルゴリズム 1 2 3 4 5
6 7
1 .単語 1
数分の 2
マスを 3
書く 4
5
6
7
22
CKY法( 3c )• アルゴリズム 1 2 3 4 5
6 7
1 .単語 1
数分の 2
マスを 3
書く 4
5
6
7
マスの番号 ai,j
a1,1
a7,7
a1,7
23
CKY法( 4 )2. 辞書規則を元に a1,1 から a7,7 まで記入
1
23
45
67
1 2 3 4 5 6 7
for (i=1 to n) { i を 1 から始めて, n まで以下を繰り返す
ai,i ={A|A→wi P∈ D}}
24
CKY法( 4b )2. 辞書規則を元に a1,1 から a7,7 まで記入
1
23
45
67
1 2 3 4 5 6 7
ai,i = a1,1
ai,i = a2,2
ai,i = a3,3
ai,i = a4,4
ai,i = a5,5
ai,i = a6,6
ai,i = a7,7
for (i=1 to n) { i を 1 から始めて, n まで以下を繰り返す
ai,i ={A|A→wi P∈ D}}
25
CKY法( 4c )2. 辞書規則を元に a1,1 から a7,7 まで記入
1
2
3
4
5
6
7
1 2 3 4 5 6 7for i=1 to n do (i を 1 から始めて, n まで以下を繰り返す ) ai,i ={A|A→wi P∈ D}
I
eat
the
apples
a1,1
a3,3 in
the
gardena7,7
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
a2,2
a5,5
a4,4
a6,6
i=1
i=2
i=3
i=7
26
CKY法( 5 )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
27
CKY法( 5b )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
ai,j=a1,2U(A|A→BC P∈ p,B∈a1,1, C∈a2,2)
ai,j=a2,3U(A|A→BC∈Pp,B∈a2,2, C∈a3,3)
ai,j=a3,4U(A|A→BC∈Pp,B∈a3,3, C∈a4,4)
ai,j=a4,5U(A|A→BC∈Pp,B∈a4,4, C∈a5,5)
ai,j=a5,6U(A|A→BC∈Pp,B∈a5,5, C∈a6,6)
ai,j=a6,7U(A|A→BC∈Pp,B∈a6,6, C∈a7,7)
28
CKY法( 5c )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
ai,j=a1,2U(A|A→BC P∈ p,B∈a1,1, C∈a2,2)
29
CKY法( 5d )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
ai,j=a1,2U(A|A→BC P∈ p,B∈a1,1, C∈a2,2)
( 1 ) S→NP VP
S1(NP1 VP1)
30
CKY法( 5e )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
ai,j=a2,3U(A|A→BC∈Pp,B∈a2,2, C∈a3,3)
なし
S1(NP1 VP1)
31
CKY法( 5f )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
ai,j=a3,4U(A|A→BC∈Pp,B∈a3,3, C∈a4,4)
( 3 ) NP→DET N
S1(NP1 VP1)
NP4(Det1 N2)
32
CKY法( 5g )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
つづけます
S1(NP1 VP1)
NP4(Det1 N2)
33
CKY法( 5h )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=1
ai,j=a6,7U(A|A→BC∈Pp,B∈a6,6, C∈a7,7)
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
( 3 ) NP→DET N
34
CKY法( 5i )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
d=2ai,j=a1,3U(A|A→BC P∈ p,B∈a1,1,C∈a2,3)
ai,j=a1,3U(A|A→BC∈Pp,B∈a1,2, C∈a3,3)
ai,j=a2,4U(A|A→BC∈Pp,B∈a2,2, C∈a3,4)
ai,j=a2,4U(A|A→BC∈Pp,B∈a2,3, C∈a4,4)
ai,j=a3,5U(A|A→BC∈Pp,B∈a3,3, C∈a4,5)
ai,j=a3,5U(A|A→BC∈Pp,B∈a3,4, C∈a5,5)
ai,j=a4,6U(A|A→BC∈Pp,B∈a4,4, C∈a5,6)
ai,j=a4,6U(A|A→BC∈Pp,B∈a4,5, C∈a6,6)
ai,j=a5,7U(A|A→BC∈Pp,B∈a5,5, C∈a6,7)
ai,j=a5,7U(A|A→BC∈Pp,B∈a5,6, C∈a7,7)
35
CKY法( 5j )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=2
ai,j=a1,3U(A|A→BC P∈ p,B∈a1,1,C∈a2,3)
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
なし
36
CKY法( 5k )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=2ai,j=a1,3U(A|A→BC∈Pp,B∈a1,2, C∈a3,3)
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
なし
37
CKY法( 5l )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=2ai,j=a3,4U(A|A→BC∈Pp,B∈a3,3, C∈a4,4)
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
( 5 ) VP→VP NPVP2(VP1 NP4)
38
CKY法( 5m )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
d=3
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
VP2(VP1 NP4)
d=4
d=5
d=n-1=6
39
CKY法( 5n )3. 句構造規則を適用
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
I
for (d=1 to n-1) { for (i=1 to n-d) { j = i + d for (k=i to j-1) { ai,j= ai,j∪ {A|A→BC P∈ D, B∈ai,k, C∈ak+i,j}
}}
S1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
VP2(VP1 NP4)
(1)S → NP VP
がここで適合するはず
40
CKY法( 6 )4. できあがった状態から構文木を作る
1
23
45
67
1 2 3 4 5 6 7I
eat
the
apples
in
the
garden
N1,NP1
V1,VP1
Det1
N2,NP2
Prep1
Det2
N3,NP3
IS1(NP1 VP1)
NP4(Det1 N2)
NP5(Det2 N3)
VP2(VP1 NP4)
Sx(NPy VPz)
NPy(? ?) VPz(? ?)
41
一応ここまで• CKY法を学習した.• もっと有名なアルゴリズムに
– チャート法– LR法などがある
42
言語に関する基本概念( 1 )• 文字...言語を構成する基本単位
(ここで意味は考えない)• ある言語(例:英語)で使用される文字の
集合:– アルファベットと呼び S で表す
SE ={ a, b, c, …, z, A, B, C,…,Z}+{‘,’, ‘.’, , …} などの記号
– このアルファベットは有限の集合である. (日,中は微妙...でも一応有限とする)
43
言語に関する基本概念( 2 )• ...アルファベット1個の集合,
• ..アルファベット2個の集合,
• ..アルファベット3個の集合
• ..アルファベット 0 個(空語,空列)
,...},...,,...,,,{2 zzbbacabaaS
,...},...,,,{3 zzzaacaabaaaS
S
2S
3S
,...},...,,,{ zcbaS
0S}{0 S
44
言語に関する基本概念( 3 )
• もし, S に英語の全ての文字を含めれば– S* は世の中の全英語のテキストを含む集合
→S* はあまり意味がない(でたらめな文字列も含む)
• ある文字列 α が言語 L の意味のある文字列である時,– α ∈ L と表す.で, L⊂S*
集合の要素 部分集合
n
i
nn SSSSSSS0
320* ...
n
i
nn SSSSSS1
32 ...
45
言語に関する基本概念( 4 )• ある文字列 α が言語 L の要素かどうか?
– 言語Lのネイティブに聞く
代わりに:言語Lの文法を用意する– 文法に照らして,構造の解析ができる →文字列 α が文であるとわかる = α が α L∈ と言える– 文法から構造が解析できない(文法に合わな
い) →文字列 α は文でない(非文) = α が α L∈ でないと言える