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