言語プロセッサ2005 -No.2-

形式言語とオートマトン2010
-Formal Languages & Automata東京工科大学
コンピュータサイエンス学部
担当教員:亀田弘之
Copyright© 2010 School of Computer Science, Tokyo University of Technology
イントロダクション
2
Copyright© 2010 School of Computer Science, Tokyo University of Technology
Why we study FL & Atomatoa?
•
•
•
•
ディジタル回路設計・分析ソフトウェア
コンパイラーの字句解析ソフトウェア
大規模テキスト処理ソフトウェア
通信プロトコル等の検証ソフトウェア など
3
Copyright© 2010 School of Computer Science, Tokyo University of Technology
#include <stdio.h>
main( ){
float kingaku;
float teika = 100, shouhizei = 0.05;
kingaku = teika + teika*shouhizei;
printf(“%f\n”, kingaku);
}
4
Copyright© 2010 School of Computer Science, Tokyo University of Technology
イントロダクション
• 東京工科大学CS学部で開講されている
授業「言語プロセッサ」(3年後期)の授業を
ちょっとのぞいてみよう。
5
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の例
• A = B*3.14 + C/A
• Area = 2*3.14*R
6
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
•
kingaku = teika + teika * shouhizei
7
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”,
“shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
8
Copyright© 2010 School of Computer Science, Tokyo University of Technology
ソース言語
読み込み
字句解析
分析
構文解析
中間語生成
合成
コード生成
目的言語
9
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
10
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
11
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
12
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として) 読み込み
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し 字句解析
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析 構文解析
=
kingaku
+
teika
*
teika
shouhizei
13
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み
– ファイルからの入力技法
2. 字句解析
– 有限オートマトンの理論
– 正規文法(正規言語)
– 正規表現
3. 構文解析
– 線形有界オートマトン理論
– 文脈自由文法(文脈自由言語)
14
Copyright© 2010 School of Computer Science, Tokyo University of Technology
前提知識
• 形式言語とオートマトン
– 前期科目「形式言語とオートマトン」
– 抽象的・論理的な思考への慣れ
• プログラミング技法
– 今までいろいろと習ってきましたよね!
– 基本的な知識があれば一応OK
– ファイルの入出力が難しい人もいるかも…
15
Copyright© 2010 School of Computer Science, Tokyo University of Technology
学んで得られるもの
• 言語理論とオートマトン
– 抽象的・論理的な思考への慣れ
– ソフトウェア分野における基本的概念
• 正規表現 etc.
• プログラミング言語へのより深い理解
• プログラミング技法
– プログラミング力(知識)アップ
– 洗練されたアルゴリズムの理解
などなど
16
Copyright© 2010 School of Computer Science, Tokyo University of Technology
• 言語プロセッサ関連は、コンピュータサイエン
スの英知が集積されている!
• この授業を取った人は先見の明がある!
17
Copyright© 2010 School of Computer Science, Tokyo University of Technology
それでは基礎知識の話から
(今日の本題です。)
こんな風に話が続きます…
18
Copyright© 2010 School of Computer Science, Tokyo University of Technology
さて、本授業の内容に戻りましょう。
19
Copyright© 2010 School of Computer Science, Tokyo University of Technology
そもそも言語とはなにか?
オートマトンとは何か?
講義名:
「形式言語とオートマトン」
20
Copyright© 2010 School of Computer Science, Tokyo University of Technology
そもそも言語とはなにか?
オートマトンとは何か?
(CSでは言語をどうとらえるのか?)
=>言語理論
21
Copyright© 2010 School of Computer Science, Tokyo University of Technology
「形式言語とオートマトン」の授業の
概略を一気に眺めてみよう!
22
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式言語とオートマトン
Formal Languages and Automata
平成22年度開講科目
第1部
オートマトンとは
 Automaton (pl. automata)
 Αυτοματον(ギリシア語)
(pl. Αυτοματα)
 一般的な意味:自動機械
24
I have a book.
英語だ!
25
Tut mir Leid.
???!
26
記号列
Automaton
Aha!
27
28
一般化
 単語の一般化
I ⇔x1, have ⇔x2, a ⇔ x3, book ⇔ x4,
. ⇔ x5, ・・・, kanete ⇔ xn-1, ;⇔ xn
29
30
言語の形式的定義
 単語w: X1, X2, X3, ・・・, Xn (はじめに単語ありき)
 語彙V (Vocabulary) : 単語の集合
V = { X1, X2, X3, ・・・, Xn } (有限集合)
 文(sentence): 単語の並び(単語の列)
(注)
– Vの要素( X1 や X2 など)は単語
– S1 = Xa Xb Xc Xd など
– でも何でも良いわけではないよね?!
31
例
 語彙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,
…}
(無限個存在する!)
32
考察
 文は無限個存在する。
(単語は有限個)
 英語として意味のあるものとそうでないものと
が混ざっている。
⇒ 英語として意味のある文をすべて集めた集合は、
1つの言語L(今の場合は英語)を定める。
⇒ 意味があるものとないものとを区別したい。
つまり、任意の文に対して、それが言語Lの文か
否かを判定したい。
33
 そんなことできるのだろうか?
でも、人間はやっているよ!
じゃあ、できるんだね!(信念)
自動機械(オートマトン)を作ってみよう!
34
作成のためのアイデア
 はじめに言語Lの文すべてを知っているならば、
下記のような機械ができる。
文S1
オートマトン
S1は言語Lの
文だよ!
S1 S2 S3
… Sn
35
問題点1
 でも、
「言語Lの文すべてを知っている」
なんて、不可能だよ!
 例:「2010年4月20日、形式言語とオートマトン
の授業が、講A303教室で、パワーポイントを用
いて行われた。」 という文をあなたは事前に
知っていましたか?
36
問題点2
 もし何らかの方法により、事前に言語Lのすべての文
を知っていたとしても...
s = get_sentence();
if ( s ∈ Lの文の集合 ) then
s は Lの文である
else
s は Lの文ではない
end if
Lの文の集合が無限集合のときは、このプログラムは
停止しないことがある!!!
37
それではどうしようか?!
38
ここまでのまとめ
• 言語
– 意味のある文の集合
• 文法の必要性
– ある言語(例えば日本語)の文すべてを
あらかじめ知っているなんてことは不可能!
• オートマトン
– ある文が対象としている言語Lの文なのかを自動
判定する装置
39
Copyright© 2010 School of Computer Science, Tokyo University of Technology
どうも文法が大切らしい。
もう少し文法について学んでみよう!
40
Copyright© 2010 School of Computer Science, Tokyo University of Technology
41
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式言語とオートマトン
Formal Languages and Automata
平成22年度開講科目
第2部
文法とは?

その言語を使用する人たちが皆で守り従わな
ければならない言語に関する規則の総体。
43
文法は「言語政策」・「言語教育」のために重
要。
 現在使われている日本語に関する言語規則
はどうなっているのか?
 このような観点から本授業では文法を考える。
 文法は、機械翻訳・電話通訳などの実現のた
めにも重要である。

44



さらにもう一歩考えをすすめて...
「あらゆる言語に共通の言語規則はある
の?」と考えるのが、「一般普遍文法」である。
これについて、少し詳しく話すと...
45
一般普遍文法(1)
前述のオートマトンの説明を思い起こすと…
 すべての子供はやがて言葉を話しはじめる。
 日本人のこどもも、エスキモーのこどもも、
エジプトのこどもも…
 人種・民族にかかわらず話し始める。
 でも、日本人は日本語、エスキモー人はエス
キモー語をしゃべり始める。Why?

46
Because…

その言語をしゃべる環境で育ったから?

環境が習得言語を決める?

でも、なぜ基本的に人は皆しゃべり始めるの?
ミミズはしゃべらないのに?(ホント?)

それは、...

47
ホントにしゃべれるよ
うになるのかなぁ

すべてのヒトは、
言語に依存しない普遍的な処理能力をもった装
置(device)を生得的に持っており、
 個別言語に関する知識は後天的に獲得されるか
らだ。

僕にもこん
な装置がほ
しいなぁ…
これが私の基
本的考えです。
48

その知識は、「文法」という形で獲得される。

Chomskyはそのように考えた。

それでは彼の考えを見てみよう。
49
ここからが大切
50
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法の定義

文法G=( Vn, Vt, P, S ):

ただし、




Vn:
Vt:
P:
S:
非終端記号の集合
終端記号の集合
書き換え規則の集合
開始記号
51
文法

文法G=( Vn, Vt, P, S ):

ただし、




Vn:
Vt:
P:
S:
非終端記号の集合 <= 構文木構成要素の集合
終端記号の集合
<= 単語の集合
書き換え規則の集合
開始記号
52
例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 }

53
言語の定義


言語Lとは、文法Gにより生成されるあらゆる
文の集合のこと。
つまり、L=L(G)。
54
文法の分類
文法にはいくつかの種類がある。
 それに応じて、処理装置・処理方法が異なっ
てくる。

55
ここまでのまとめ
• 文法 : G=( Vn, Vt, P, S ):
– ただし、
•
•
•
•
Vn:
Vt:
P:
S:
非終端記号の集合 <= 構文木構成要素の集合
終端記号の集合
<= 単語の集合
書き換え規則の集合
開始記号
• 言語 :L=L(G)
56
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式言語とオートマトン
Formal Languages and Automata
平成22年度開講科目
第3部
Copyright© 2010 School of Computer Science, Tokyo University of Technology
ここまでの復習
•
•
•
•
人間の頭の中には、言語処理装置がある。
すべての文を記憶しているわけではない。
文法として記憶している。
文法とは何か?
– 規範文法(Prescriptive Grammar)
– 記述文法(Descriptive Grammar)
• 形式文法と形式言語
58
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式文法と形式言語
• 文法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
59
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式文法と形式言語(例)
• 文法G = ( Vn, Vt, P, S ):
– Vn ={S}, Vt={}
– P={ }
• 言語L = L(G) = { x | S =*> x }
60
Copyright© 2010 School of Computer Science, Tokyo University of Technology
言語の階層(重要)
• 言語は文法の種類に応じて、階層構造をなし
ている。
– 句構造言語
– 文脈依存言語
– 文脈自由言語
– 正規言語
⇔
⇔
⇔
⇔
句構造文法
文脈依存文法
文脈自由文法
正規文法
Chomsky階層
(Chomsky Hierarchy)
とも言う。
一般的
特殊的
61
Copyright© 2010 School of Computer Science, Tokyo University of Technology
重要
Chomsky階層
PSG
CSG
CFG
RG
62
Copyright© 2010 School of Computer Science, Tokyo University of Technology
言語の包含関係
L(PSG) ⊃ L(CSG) ⊃ L(CFG) ⊃ L(RG)
このうち、大切なのはCFGとRG。
63
Copyright© 2010 School of Computer Science, Tokyo University of Technology
CFGとRG
• CFG(文脈自由文法):
– プログラミング言語設計
– コンパイラの構文解析
– 自然言語処理(機械翻訳・仮名漢字変換)
• RG(正規文法):
– 正規表現(検索・コンパイラの語彙解析)
64
Copyright© 2010 School of Computer Science, Tokyo University of Technology
解析手法は重要なので
「言語プロセッサ」の授業で取り上げます。
• 機械翻訳・通訳電話などの自然言語処理
• コンパイラ
などで応用されている。
65
Copyright© 2010 School of Computer Science, Tokyo University of Technology
参考文献
• 文法:
– 英語学概論 -三大文法の流れと特徴-,松井
千枝,朝日出版(1980).
66
Copyright© 2010 School of Computer Science, Tokyo University of Technology
ここまでのまとめ
• 言語には階層がある(Chomsky階層)
• 正規言語(正規文法)は語句解析に深い関係
がある。
• 文脈自由言語(文脈自由文法)は構文解析に
深い関係がある。
67
Copyright© 2010 School of Computer Science, Tokyo University of Technology
もう少し話を進めましょう!
68
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法と言語とオートマトン
•
•
•
•
句構造文法(PSG)
文脈依存文法(CSG)
文脈自由文法(CFG)
正規文法(RG)
69
Copyright© 2010 School of Computer Science, Tokyo University of Technology
言語の階層(重要)
• 言語は文法の種類に応じて、階層構造をなし
ている。
– 句構造言語
– 文脈依存言語
– 文脈自由言語
– 正規言語
⇔
⇔
⇔
⇔
句構造文法
文脈依存文法
文脈自由文法
正規文法
Chomsky階層
(Chomsky Hierarchy)
とも言う。
一般的
特殊的
70
Copyright© 2010 School of Computer Science, Tokyo University of Technology
重要
Chomsky階層
PSG
CSG
CFG
RG
71
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法と言語とオートマトン
----------------------------------------------------文 法
処理装置
----------------------------------------------------• 句構造文法(PSG)
⇔ ?
• 文脈依存文法(CSG)
⇔ ?
• 文脈自由文法(CFG)
⇔ ?
• 正規文法(RG)
⇔ ?
----------------------------------------------------72
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法と言語とオートマトン
---------------------------------------------------------------文 法
処理装置
---------------------------------------------------------------• 句構造文法(PSG)
⇔
Turing 機械
• 文脈依存文法(CSG) ⇔
線形有界オートマトン
• 文脈自由文法(CFG) ⇔
プッシュダウンオートマトン
• 正規文法(RG)
⇔
有限オートマトン
---------------------------------------------------------------73
Copyright© 2010 School of Computer Science, Tokyo University of Technology
まずは有限オートマトンから
74
Copyright© 2010 School of Computer Science, Tokyo University of Technology
有限オートマトンのイメージ
• FAの概観
a1 a2
セル
入力記号
・・・
ai-1 ai
・・・
・・・
an
qk
入力テープ
内部状態
ヘッド
75
Copyright© 2010 School of Computer Science, Tokyo University of Technology
有限オートマトンの定義
FA = ( K, Σ, δ, q0, F )
ただし、
K : 状態の集合( Kは有限集合)
Σ : 入力アルファベット(Σは有限集合)
δ : 状態遷移関数
δ: K×Σ∋( a, qi ) → qj ∈ K
q0 : 初期状態
F : 最終状態の集合 ( F ⊆ K )
76
Copyright© 2010 School of Computer Science, Tokyo University of Technology
77
Copyright© 2010 School of Computer Science, Tokyo University of Technology
次回、この続きを話します。
• 有限オートマトン
– 決定性有限オートマトン
– 非決定性有限オートマトン
•
•
•
•
正規表現
正規表現から有限オートマトンの生成
状態数最少有限オートマトン
正規表現→非決定性有限オートマトン→決
定性有限オートマトン→状態数最少有限オー
トマトン
78
Copyright© 2010 School of Computer Science, Tokyo University of Technology
79
Copyright© 2010 School of Computer Science, Tokyo University of Technology
この授業のキーワード
• (形式)言語
• 正規文法(正規表現)
• 文脈自由文法
(文脈自由言語)
•
•
•
•
オートマトン
有限状態オートマトン
線形有界オートマトン
プッシュダウンオートマ
トン
• 決定可能性
• トラクタブル など
80
Copyright© 2010 School of Computer Science, Tokyo University of Technology