形式言語とオートマトン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) ⇔ 有限オートマトン ----------------------------------------------------------------
© Copyright 2024 ExpyDoc