1.03k likes | 1.12k Views
言語プロセッサ 2006 -No.2( 平成 19 年 10 月 3 日 )-. 東京工科大学 コンピュータサイエンス学部 亀田弘之. 数式の例. A = B*3.14 + C/A Area = 2*3.14*R*R. 数式の解析. kingaku = teika + teika * shouhizei. =. kingaku. +. teika. *. teika. shouhizei. 数式の解析. 読み込み(文字列として) “ kingaku = teika + teika * shouhizei”
E N D
言語プロセッサ2006-No.2(平成19年10月3日)- 東京工科大学 コンピュータサイエンス学部 亀田弘之
数式の例 • A = B*3.14 + C/A • Area = 2*3.14*R*R
数式の解析 • kingaku = teika + teika * shouhizei
= kingaku + teika * teika shouhizei 数式の解析 • 読み込み(文字列として)“kingaku = teika + teika * shouhizei” • 要素(token)の切り出し“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” • 要素の相互関係の分析
ソース言語 読み込み 字句解析 分析 構文解析 中間語生成 合成 コード生成 目的言語
= kingaku + teika * teika shouhizei 数式の解析 • 読み込み(文字列として)“kingaku = teika + teika * shouhizei” • 要素(token)の切り出し“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” • 要素の相互関係の分析
= kingaku + teika * teika shouhizei 数式の解析 • 読み込み(文字列として)“kingaku = teika + teika * shouhizei” • 要素(token)の切り出し“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” • 要素の相互関係の分析
= kingaku + teika * teika shouhizei 数式の解析 • 読み込み(文字列として)“kingaku = teika + teika * shouhizei” • 要素(token)の切り出し“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” • 要素の相互関係の分析
= kingaku + teika * teika shouhizei 数式の解析 • 読み込み(文字列として) 読み込み“kingaku = teika + teika * shouhizei” • 要素(token)の切り出し 語句解析“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei” • 要素の相互関係の分析 構文解析
数式の解析 • 読み込み • ファイルからの入力技法 • 語句解析 • 有限オートマトンの理論 • 正規文法 • 正規表現 • 構文解析 • 線形有界オートマトン理論 • 文脈自由文法
前提知識 • 言語理論とオートマトン • 前期科目「言語理論とオートマトン」(横井教授) • 抽象的・論理的な思考への慣れ • プログラミング技法 • 今までいろいろと習ってきましたよね! • 基本的な知識があれば一応OK • ファイルの入出力が難しい人もいるかも…
学んで得られるもの • 言語理論とオートマトン • 抽象的・論理的な思考への慣れ • ソフトウェア分野における基本的概念 • 正規表現 etc. • プログラミング言語へのより深い理解 • プログラミング技法 • プログラミング力(知識)アップ • 洗練されたアルゴリズムの理解 などなど
言語プロセッサ関連は、コンピュータサイエンスの英知が集積されている!言語プロセッサ関連は、コンピュータサイエンスの英知が集積されている! • この授業を取った人は先見の明がある!
それでは基礎知識の話から (今日の本題です。)
そもそも言語とはなにか?(CSでは言語をどうとらえるのか?)=>言語理論そもそも言語とはなにか?(CSでは言語をどうとらえるのか?)=>言語理論
言語理論とオートマトンの授業を覗いてみよう言語理論とオートマトンの授業を覗いてみよう
オートマトンと言語Automaton & Languages 平成16年度開講科目
オートマトンとは • 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は言語Lの文だよ! 文S1 オートマトン S1S2S3 … Sn
問題点1 • でも、 「言語Lの文すべてを知っている」 なんて、不可能だよ! • 例:「2006年10月4日は、言語プロセッサの授業が、講A202教室で、パワーポイントを用いて行われた。」 という文をあなたは事前に知っていましたか?
問題点2 • もし何らかの方法により、事前に言語Lのすべての文を知っていたとしても... Lの文の集合が無限集合のときは、このプログラムは 停止しないことがある!!! s = get_sentence(); if ( s ∈ Lの文の集合 ) then s は Lの文である else s は Lの文ではない end if
ここまでのまとめ • 言語 • 意味のある文の集合 • 文法の必要性 • ある言語(例えば日本語)の文すべてをあらかじめ知っているなんてことは不可能! • オートマトン • ある文が対象としている言語Lの文なのかを自動判定する装置
どうも文法が大切らしい。もう少し文法について学んでみよう!どうも文法が大切らしい。もう少し文法について学んでみよう!
オートマトンと言語Automaton & Languages 平成16年度開講科目 2回目
文法とは? • 一般的な定義: • 規範としての文法 • 言語現象記述のための文法
規範としての文法(1) • 「何々でなければならない」規則集 • 「ら抜きことば」は間違っている • 若者語はけしからん! • この考え方の根底には、「言語とは社会的なものであり、みながその規約を守らなければ、言語は適切に機能しない。」という思想がある。 • 従って、「この事実と言語(文法)そのものを、規範として学校で教えるべきである。」という具合になる。
規範としての文法(2) • 規範文法とは: • その言語を使用する人たちが皆で守り従わなければならない言語に関する規則の総体。
規範文法への批判(1) • でも、ら抜き言葉は多くの人に使われていますよ! • これって、もう“日本語”ではないの? • 今の日本語の中には、かつての日本語では使われていないものもありますよね。 • 言語は変化しますよね。
規範文法への批判(2) • 言語変化の実例: • 「進歩する」(100年ほど前は「進歩をする」) • 「更なる進化」(20年ぐらい前は「更に進歩する」) • It’s bad! It’s cool. など
規範文法も「言語政策」・「言語教育」のために重要だが、現在使われている日本語に関する言語規則はどうなっているのか?規範文法も「言語政策」・「言語教育」のために重要だが、現在使われている日本語に関する言語規則はどうなっているのか? • このような観点からのものが、「言語現象記述のための文法」である。 • このような文法は、機械翻訳・電話通訳などの実現のために重要である。
さらにもう一歩考えをすすめて... • 「あらゆる言語に共通の言語規則はあるの?」と考えるのが、「一般普遍文法」である。 • これについて、少し詳しく話すと...
一般普遍文法(1) • 前回のオートマトンの説明を思い起こすと… • すべての子供はやがて言葉を話しはじめる。 • 日本人のこどもも、エスキモーのこどもも、 エジプトのこどもも… • 人種・民族にかかわらず話し始める。 • でも、日本人は日本語、エスキモー人はエスキモー語をしゃべり始める。Why?
Because… • その言語をしゃべる環境で育ったから? • 環境が習得言語を決める? • でも、なぜ基本的に人は皆しゃべり始めるの? • ミミズはしゃべらないのに?(ホント?) • それは、...
ホントにしゃべれるようになるのかなぁ これが私の基本的考えです。 僕にもこんな装置がほしいなぁ… • すべてのヒトは、 • 言語に依存しない普遍的な処理能力をもった装置(device)を生得的に持っており、 • 個別言語に関する知識は後天的に獲得されるからだ。
その知識は、「文法」という形で獲得される。その知識は、「文法」という形で獲得される。 • Chomskyはそのように考えた。 • それでは彼の考えを見てみよう。
文法の定義 • 文法G=( Vn, Vt, P, S ): • ただし、 • Vn: 非終端記号の集合 • Vt: 終端記号の集合 • P: 書き換え規則の集合 • S: 開始記号
文法 • 文法G=( Vn, Vt, P, S ): • ただし、 • Vn: 非終端記号の集合 <= 構文木構成要素の集合 • Vt: 終端記号の集合 <= 単語の集合 • P: 書き換え規則の集合 • S: 開始記号