形式言語とオートマトン2008 ー第4日目?ー

形式言語とオートマトン2008
ー第10日目ー
東京工科大学
コンピュータサイエンス学部
亀田弘之
この資料は暫定的なものです!
確認(1)
• 有限オートマトン(FA)
– FAの定義と記述法
テープ上を一方向に動くヘッド
(テープ上の記号を順次読みながら内部状態を遷移)
M = <K, Σ, δ, q0, F> (5つ組)
状態遷移図
様相(configuration)
– FAの種類
決定性FA(DFA)
非決定性FA(ε遷移のあるものとないもの)
– 言語認識能力はどのFAでも同じ。
正規言語(正規表現)を認識
確認(2)
•
正規表現を認識するFAの存在とその構成法
1.
2.
3.
4.
5.
正規表現αが与えられる。
正規表現αに対して、ε-NFA を構成する。
ε-NFA をDFAに書き換える。
DFAを状態数最少のDFA(Min-DFA)に書き換える。
Min-DFAをシミュレートするプログラムを作成する。
(上記5はまだ説明していません!)
確認(3)
• プッシュダウンオートマトン(PDA)
– スタックの定義
データ構造:
・配列(またはアレイ)
・リスト
・スタック
・キュー など
スタックの構造と動作(pop-up と push-down)
LIFO (Last-In First-Out) 型のメモリ
– PDAの定義と記述法
テープ上を一方向に動くヘッド+スタックメモリ
(テープの記号を順次読み、スタック上の記号を準じ読
み書きしながら内部状態を遷移)
M = < K, Σ, Γ,δ, q0, Z0, F > (7つ組)
状態遷移図
様相(configuration)
確認(4)
スタックとPDAのイメージ図
Push down
Pop up
LIFO (Last In First Out)
最後に入れたものが最初に取り出される。
確認(5)
• プッシュダウンオートマトン(PDA)
– PDAの種類
決定性プッシュダウンオートマトン
Deterministic pushdown automaton (DPDA)
非決定性プッシュダウンオートマトン
Nondeterministic pushdown automaton (NPDA)
– 言語認識能力はNPDAの方が高い。
FAは正規言語(正規表現)を認識
NPDAは文脈自由言語を認識
DPDAよりもNPDAの方が言語認識能力大
確認(6)
• チューリングマシン(Turing Machine; TM)
– TMの定義と記述法
 テープ上を左右どちらにも動けるヘッド
(テープ上の記号を順次読み、テープ上に時として記号を書き込み
ながら、そのたびごとに内部状態を遷移)
 M = < K, Γ, Σ, δ, q0, B, F > (7つ組)
 状態遷移図
 様相(configuration)
– TMの種類
 決定性TM(DTM)
 非決定性TM(NTM)
– 言語認識能力はどのTMでも同じ。
 句構造言語(句構造文法に適った文)を認識
ここまでで分かったこと
• オートマトンとはどういうもので、どんな種類
があり、どんな風に動作するのか?
はわかった。
• さて、オートマトンの意義は何?
オートマトンって結局なんの役に立つの?
学問的意義は?
オートマトンと形式言語
• オートマトンは形式言語と密接な関係がある。
• そこで次に「形式言語」について学ぼう。
でも、形式言語ってのは
役に立つものなの?
第2部 形式言語
• 応用分野:
– 自然言語処理・音声処理
• カナ漢字変換システム
• 機械翻訳システム
• 自動通訳システム
– プログラミング言語とその処理
• コンパイラ設計
• プログラミング言語設計
– その他
ここで第1回目の講義資料を
見返してみよう!
そもそも言語とはなにか?
オートマトンとは何か?
そもそも言語とはなにか?
オートマトンとは何か?
(CSでは言語をどうとらえるのか?)
=>言語理論
「形式言語とオートマトン」の授業の
概略を一気に眺めてみよう!
形式言語とオートマトン
Formal Languages and Automata
平成20年度開講科目
第1部
2008年4月14日に使用した資料(一部改変あり)
オートマトンとは
• Automaton (pl. automata)
• Αυτοματον(ギリシア語)
(pl. Αυτοματα)
• 一般的な意味:自動機械
I have a book.
英語だ!
Tut mir Leid.
???!
記号列
Automaton
Aha!
一般化
• 単語の一般化
I ⇔x1, have ⇔x2, a ⇔ x3, book ⇔ x4,
. ⇔ x5, ・・・, kanete ⇔ xn-1, ;⇔ xn
言語の形式的定義
• 単語w: X1, X2, X3, ・・・, Xn (はじめに単語ありき)
• 語彙V (Vocabulary) : 単語の集合
V = { X1, X2, X3, ・・・, Xn } (有限集合)
• 文(sentence): 単語の並び(単語の列)
(注)
– Vの要素( X1 や X2 など)は単語
– S1 = Xa Xb Xc Xd など
– でも何でも良いわけではない。
例
• 語彙V={ birds, fly }
• 文:={
birds, fly,
birds birds, birds fly, fly birds, fly fly,
birds birds birds, birds birds fly,
birds fly birds, fly birds birds,
birds fly fly, fly birds fly, fly fly birds,
…}
(無限個存在する!)
考察
• 文は無限個存在する。
(単語は有限個)
• 英語として意味のあるものとそうでないものと
が混ざっている。
⇒英語として意味のある文をすべて集めた集合は、
1つの言語L(今の場合は英語)を定める。
⇒ 意味があるものとないものとを区別したい。
つまり、任意の文に対して、それが言語Lの文か
否かを判定したい。
• そんなことできるのだろうか?
でも、人間はやっているよ!
じゃあ、できるんだね!(信念)
自動機械(オートマトン)を作ってみよう!
作成のためのアイデア
• はじめに言語Lの文すべてを知っているなら
ば、下記のような機械ができる。
文S1
オートマトン
S1 S2 S3
… Sn
S1は言語Lの
文だよ!
問題点1
• でも、
「言語Lの文すべてを知っている」
なんて、不可能だよ!
• 例:「2008年6月23日、形式言語とオートマト
ンの授業が、講実403教室で、パワーポイン
トを用いて行われた。」 という文をあなたは
事前に知っていましたか?
問題点2
• もし何らかの方法により、事前に言語Lのすべての文
を知っていたとしても...
s = get_sentence();
if ( s ∈ Lの文の集合 ) then
s は Lの文である
else
s は Lの文ではない
end if
Lの文の集合が無限集合のときは、このプログラムは
停止しないことがある!!!
それではどうしようか?!
ここまでのまとめ
• 言語
– 意味のある文の集合
• 文法の必要性
– ある言語(例えば日本語)の文すべてを
あらかじめ知っているなんてことは不可能!
• オートマトン
– ある文が対象としている言語Lの文なのかを自動
判定する装置
どうも文法が大切らしい。
もう少し文法について学んでみよう!
形式言語とオートマトン
Formal Languages and
Automata
平成20年度開講科目
第2部
文法とは?
• その言語を使用する人たちが皆で守り従わな
ければならない言語に関する規則の総体。
• 文法は「言語政策」・「言語教育」のために重
要。
• 現在使われている日本語に関する言語規則
はどうなっているのか?
• このような観点から本授業では文法を考える。
• 文法は、機械翻訳・電話通訳などの実現のた
めにも重要である。
文法とは?
• 一般的な定義:
– 規範としての文法
– 言語現象記述のための文法
規範としての文法(1)
• 「何々でなければならない」規則集
• 「ら抜きことば」は間違っている
• 若者語はけしからん!
• この考え方の根底には、「言語とは社会的なものであり、
みながその規約を守らなければ、言語は適切に機能し
ない。」という思想がある。
• 従って、「この事実と言語(文法)そのものを、規範とし
て学校で教えるべきである。」という具合になる。
規範としての文法(2)
• 規範文法とは:
– その言語を使用する人たちが皆で守り従わなけ
ればならない言語における規則の総体。
規範文法への批判(1)
• でも、ら抜き言葉は多くの人に使われていま
すよ!
• これって、もう日本語ではないの?
• 今の日本語の中には、かつての日本語では
使われていないものもありますよね。
• 言語は変化しますよね。
規範文法への批判(2)
• 言語変化の実例:
– 「進歩する」(100年ほど前は「進歩をする」)
– 「更なる進化」(20年ぐらい前は「更に進歩する」)
– It’s bad! It’s cool.
など
• 規範文法も「言語政策」・「言語教育」のため
に重要だが、現在使われている日本語に関
する言語規則はどうなっているのか?
• このような観点からのものが、「言語現象記
述のための文法」である。
• このような文法は、機械翻訳・電話通訳など
の実現のために重要である。
• さらにもう一歩考えをすすめて...
• 「あらゆる言語に共通の言語規則はあるのだ
ろうか?」と考えるのが、「一般普遍文法」で
ある。
• これについて、少し詳しく話すと...
一般普遍文法(1)
• 第1回目のオートマトンの説明を思い起こす
と…
• すべての子供はやがて言葉を話しはじめる。
• 日本人のこどもも、エスキモーのこどもも、
エジプトのこどもも…
• 人種・民族・地域等にかかわらず話し始める。
• でも、日本人は日本語、エスキモー人はエス
キモー語をしゃべり始める。Why?
Because…
• その言語をしゃべる環境で育ったから。
• 環境が習得言語を決める。
• でも、なぜ基本的に人は皆しゃべり始めるの?
• ミミズはしゃべらないのに。
• それは、...
ホントにしゃべれるよ
うになるのかなぁ
• すべてのヒトは、
– 言語に依存しない普遍的な処理能力をもった装
置(device)を生得的に持っており、
– 個別言語に関する知識は後天的に獲得されるか
らだ。
僕にもこん
な装置がほ
しいなぁ…
これが私の基
本的考えです。
写真の出典:Wikipediaより
• その知識は、「文法」という形で獲得される。
• Chomskyはそのように考えた。
• それでは彼の考えを見てみよう。
文法の定義
• 文法G=( Vn, Vt, P, S ):
– ただし、
•
•
•
•
Vn:
Vt:
P:
S:
非終端記号の集合
終端記号の集合
書き換え規則の集合
開始記号
重要
文法
• 文法G=( Vn, Vt, P, S ):
– ただし、
• Vn:
合
• Vt:
• P:
• S:
非終端記号の集合
<= 構文木構成要素の集
終端記号の集合
<= 単語の集合
書き換え規則の集合
開始記号
例1-1
• G=(Vn, Vt, P, S)
– Vn = { S, NPs, NPo, VP, PN, DET, N }
– Vt = { I, You, have, throw, a, the, book, ball }
– P = { ①:S → NPs VP,
②:NPs → PN,
③:PN → I,
④:PN → You,
⑤:NPo → DET N,
⑥:VP → V NPo,
⑦:DET → a,
⑧:DET → the,
⑨:N → book,
⑩:N → ball,
⑪:V → have,
⑫:V → throw }
例1-2
• S =>
=>
=>
=>
=>
=>
=>
=>
NPs VP
PN VP
I
VP
I V NPo
I throw NPo
I throw DET N
I throw a N
I throw a ball
①
②
③
⑥
⑫
by ⑤
by ⑦
by ⑩
by
by
by
by
by
開始記号
• S =>
=>
=>
=>
=>
=>
=>
=>
例1-2
非終端記号
NPs VP
PN VP
I
VP
I V NPo
I throw NPo
I throw DET N
I throw a N
I throw a ball
終端記号
適応規則
①
②
③
⑥
⑫
by ⑤
by ⑦
by ⑩
by
by
by
by
by
例1-2
• S =>
=>
=>
=>
=>
=>
=>
=>
文
NPs VP
PN VP
I
VP
I V NPo
I throw NPo
I throw DET N
I throw a N
I throw a ball
①
②
③
⑥
⑫
by ⑤
by ⑦
by ⑩
by
by
by
by
by
終端記号のみの列
例1-2に対する問題
• これは木(tree)として記述せよ。
• この文法Gにより生成される文をすべて列挙
せよ。
言語の定義
• 言語Lとは、文法Gにより生成されるあらゆる
文の集合のこと。
• つまり、L=L(G)。
問題(Palindrome)
• Palindromeのみを生成する文法を示せ。
ただし、
G=( Vn, Vt, P, S )
Vn = { S }, Vt = { a, b, c }
とする。
ヒント
•
Palidromeの性質
1. ε, a, b, c はPalindrome。
2. wがPalindromeならば、
xwx (x ∈ Vt)
もPalindrome。
3. 上記1と2のもののみがPalindrome。
文法の分類
オートマトンと言語
Automaton & Languages
平成16年度開講科目
3回目
ここまでのまとめ
•
•
•
•
人間の頭の中には、言語処理装置がある。
すべての文を記憶しているわけではない。
文法として記憶している。
文法とは何か?
– 規範文法(Prescriptive Grammar)
– 記述文法(Descriptive Grammar)
• 形式文法と形式言語
形式文法と形式言語
• 文法G = ( Vn, Vt, P, S ):
– ただし、
• Vn(非終端記号の集合): 0 < #Vn < +∞
• Vt: 終端記号の集合:
0 < #Vt < +∞
• P: 書き換え規則の集合
{α→β| α, β ∈ (Vn∪Vt)*}
• S:
開始記号(S∈Vn)
• 言語L = L(G) = { x | S =*> x }
– ただし、S => ・・・ => x ∈ Vt
形式文法と形式言語(例)
• 文法G = ( Vn, Vt, P, S ):
– Vn ={S}, Vt={}
– P={ }
• 言語L = L(G) = { x | S =*> x }
言語の階層(重要)
• 言語は文法の種類に応じて、階層構造をなし
ている。
– 句構造言語
– 文脈依存言語
– 文脈自由言語
– 正規言語
⇔
⇔
⇔
⇔
句構造文法
文脈依存文法
文脈自由文法
正規文法
Chomsky階層
(Chomsky Hierarchy)
とも言う。
一般的
特殊的
句構造文法
(Phrase-Structure Grammar; PSG)
• 文法G = ( Vn, Vt, P, S ):
– Vn(非終端記号の集合):
0 < #Vn < +∞
– Vt:
終端記号の集合: 0 < #Vt < +∞
– P:
書き換え規則の集合
{α→β| α, β ∈ (Vn∪Vt)*}
– S:
開始記号(S∈Vn)
句構造文法
(Phrase-Structure Grammar; PSG)
• 文法G = ( Vn, Vt, P, S ):
– Vn(非終端記号の集合):
0 < #Vn < +∞
– Vt:
終端記号の集合: 0 < #Vt < +∞
– P:
書き換え規則の集合
{α→β| α, β ∈ (Vn∪Vt)*}
– S:
開始記号(S∈Vn)
句構造文法
(Phrase-Structure Grammar; PSG)
• 文法G = ( Vn, Vt, P, S ):
– Vn(非終端記号の集合):
0 < #Vn < +∞
– Vt:
終端記号の集合: 0 < #Vt < +∞
– P:
書き換え規則の集合
{α→β| α, β ∈ (Vn∪Vt)*}
– S:
開始記号(S∈Vn)
ここに制限が付くと他の
文法になる。
文脈依存文法
(Context-Sensitive Grammar; CSG)
• 文法G = ( Vn, Vt, P, S ):
– Vn(非終端記号の集合): 0 < #Vn < +∞
– Vt:
終端記号の集合: 0 < #Vt < +∞
– P:
書き換え規則の集合
{αXβ→αγβ| α, β ∈ (Vn∪Vt)*, X∈Vn,
γ∈ (Vn∪Vt)+ }
– S:
開始記号(S∈Vn)
文脈自由文法
(Context-Free Grammar; CFG)
• 文法G = ( Vn, Vt, P, S ):
– Vn(非終端記号の集合):
0 < #Vn < +∞
– Vt:
終端記号の集合: 0 < #Vt < +∞
– P:
書き換え規則の集合
{ X→α| α∈ (Vn∪Vt)*}
– S:
開始記号(S∈Vn)
正規文法
(Regular Grammar; RG)
• 文法G = ( Vn, Vt, P, S ):
– Vn(非終端記号の集合):
0 < #Vn < +∞
– Vt:
終端記号の集合: 0 < #Vt < +∞
– P:
書き換え規則の集合
{X→aY, X→b| X,Y∈Vn, a,b ∈ Vt*}
– S:
開始記号(S∈Vn)
生成規則部分の比較
•
•
•
•
PSG:
CSG:
CFG:
RG:
α→β
αXβ→αγβ
X→α
X→aY, X→b
– ただし、
• α,β∈V*
• X, Y∈Vn
・γ∈V+
・a, b∈Vt
・V=Vn∪Vt
生成規則部分の比較
•
•
•
•
PSG:
CSG:
CFG:
RG:
α→β
αXβ→αγβ
X→α
X→aY, X→b
– ただし、
• α,β∈V*
• X, Y∈Vn
・γ∈V+
・a, b∈Vt
・V=Vn∪Vt
生成規則部分の比較
•
•
•
•
PSG:
CSG:
CFG:
RG:
α→β
αXβ→αγβ
X→α
X→aY, X→b
– ただし、
• α,β∈V*
• X, Y∈Vn
・γ∈V+
・a, b∈Vt
・V=Vn∪Vt
生成規則部分の比較
•
•
•
•
PSG:
CSG:
CFG:
RG:
α→β
αXβ→αγβ
X→α
X→aY, X→b
– ただし、
• α,β∈V*
• X, Y∈Vn
・γ∈V+
・a, b∈Vt
・V=Vn∪Vt
生成規則部分の比較
•
•
•
•
PSG:
CSG:
CFG:
RG:
α→β
αXβ→αγβ
X→α
X→aY, X→b
– ただし、
• α,β∈V*
• X, Y∈Vn
・γ∈V+
・a, b∈Vt
・V=Vn∪Vt
重要
Chomsky階層
PSG
CSG
CFG
RG
言語の包含関係
L(PSG) ⊃ L(CSG) ⊃ L(CFG) ⊃ L(RG)
このうち、大切なのはCFGとRG。
CFGとRG
• CFG(文脈自由文法):
– プログラミング言語設計
– コンパイラの構文解析
– 自然言語処理(機械翻訳・仮名漢字変換)
• RG(正規文法):
– 正規表現(検索・コンパイラの語彙解析)
CFGの特徴
1.
2.
3.
4.
5.
CFGには標準形がある。
導出の過程を木で表現できる(導出木の存在)。
解析手法が豊富に知られている。
自然言語処理に部分的に適用できる。
プログラミング言語設計に利用されている。
1.CFGの標準形
• Chomskyの標準形
• Greibachの標準形
Chomskyの標準形
• 任意のCFGにおける書き換え規則群Pは、
A→BC または A→a という形だけで表現
できる。
Greibachの標準形
• 任意のCFGにおける書き換え規則群Pは、
A→aα という形だけで表現できる。ただし、
X∈Vn, a∈Vt, α∈Vn*。
Chomskyの標準形への変換方法
(次回のお楽しみ。事前に予習すると理解しや
すいですよ。)
2.導出木
• 導出木とは
– 導出の過程を木構造で表現したもの。
S
• 例:
S => SJ VP
=> Tom V ADV
=> Tom ran fast
SJ
Tom
VP
V
ADV
ran
fast
3.解析手法
•
•
•
•
•
•
•
•
•
CKY法(Cocke-Kasami-Younger method)
Early法(Early’s algorithm)
Chart法(Chart algorithm)
優先順位文法法
LK ( R ) 法
LR( k ) 法
LALR( k ) 法
SLR( k ) 法
LL( k ) 法
などなど
解析手法は重要なので後日あらため
て取り上げます。
• 機械翻訳・通訳電話などの自然言語処理
• コンパイラ
などで応用されている。
参考文献
• 文法:
– 英語学概論 -三大文法の流れと特徴-,松井
千枝,朝日出版(1980).
ここまでのまとめ
• 言語には階層がある(Chomsky階層)
• 正規言語(正規文法)は語句解析に深い関係
がある。
• 文脈自由言語(文脈自由文法)は構文解析に
深い関係がある。
もう少し話を進めましょう!
文法と言語とオートマトン
•
•
•
•
句構造文法(PSG)
文脈依存文法(CSG)
文脈自由文法(CFG)
正規文法(RG)
言語の階層(重要)
• 言語は文法の種類に応じて、階層構造をなし
ている。
– 句構造言語
– 文脈依存言語
– 文脈自由言語
– 正規言語
⇔
⇔
⇔
⇔
句構造文法
文脈依存文法
文脈自由文法
正規文法
Chomsky階層
(Chomsky Hierarchy)
とも言う。
一般的
特殊的
重要
Chomsky階層
PSG
CSG
CFG
RG
文法と言語とオートマトン
----------------------------------------------------文 法
処理装置
----------------------------------------------------• 句構造文法(PSG)
⇔ ?
• 文脈依存文法(CSG)
⇔ ?
• 文脈自由文法(CFG)
⇔ ?
• 正規文法(RG)
⇔ ?
-----------------------------------------------------
文法と言語とオートマトン
---------------------------------------------------------------文 法
処理装置
---------------------------------------------------------------• 句構造文法(PSG)
⇔
Turing 機械
• 文脈依存文法(CSG) ⇔
線形有界オートマトン
• 文脈自由文法(CFG) ⇔
プッシュダウンオートマトン
• 正規文法(RG)
⇔
有限オートマトン
----------------------------------------------------------------