今日もPCを使います. 用意してください. 自然言語処理2013 -平成24年11月18日(No7)東京工科大学 コンピュータサイエンス学部 亀田弘之 まずは復習(15分) • (英文の場合の復習&確認) • (今日の授業でもさっと眺めるだけにしますが、 不安な人は後でじっくり読んでください。) 今日は、復習と日本語 処理の場合の話しです。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 2 NLPのプログラムを書いてみよう! 1. Prologのインストール(www.swi-prolog.org) 2. プログラム作成手順 1. 2. 3. 4. 5. 6. 7. 8. (言語データの収集) 言語分析 <= 対象言語の知識が必要 形式文法の設定 <= 形式言語の知識が必要 Prolog形式への書き換え <= Prologの知識が必要 NLPプログラムの実行(英文処理) <=演習 構文木を出力するプログラム (draw_term/1) 動作の理解(自分で実行トレースができる) NLPプログラムの実行(日本語文処理) <=演習 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 3 [手順1]:言語データの収集 Tom broke the cup. 検討事項: 処理対象の文をどのようにして集めればよいのか? •Webから集める? •文法書の例文を集める? •語学の教科書(例:中学校3年間の英語の教科書)の例文? •適切な例文を自分で作成? •それとも... Natural Language Processing 2013 (Tokyo Univ. of Tech.) 4 [手順2]:言語分析 Tom broke the cup. 検討事項: 文法の枠組みを決めておく必要がある。 •伝統的な文法に従うのか? •日本語の場合、 学校文法(橋本文法),大槻文法・? •新たに自作? •それとも... Natural Language Processing 2013 (Tokyo Univ. of Tech.) 5 [手順3]:文法の設定 文法G=<Vn, Vt, σ, P> ここで、 ・非終端記号の集合: Vt={s, vp, np, n, v, d} ・終端記号の集合: Vn={tom, cup, broke,the} ・開始記号σ=s ・書き換え規則群P:右記の通り。 例 { s → n,vp. vp → v,np. np → d,n. n → tom. n → cup. v → broke. d → the. } Natural Language Processing 2013 (Tokyo Univ. of Tech.) 統 語 規 則 単 語 辞 書 6 例 [手順3]:Prolog形式へ変換 s(A,C):-n(A,B),vp(B,C). vp(A,C):-v(A,B),np(B,C). np(A,C):-d(A,B),n(B,C). n([tom|T],T). n([cup|T],T). v([broke|T],T). d([the|T],T). Version1(Prog1.pl) Natural Language Processing 2013 (Tokyo Univ. of Tech.) 7 Version2(Prog2.pl) 例 s(A,C,s(_n,_vp)):- n(A,B,_n),vp(B,C,_vp). vp(A,C,vp(_v,_np)):- v(A,B,_v),np(B,C,_np). np(A,C,np(_d,_n)):- d(A,B,_d),n(B,C,_n). n([tom|T],T,n(tom)). n([cup|T],T,n(cup)). v([broke|T],T,v(broke)). d([the|T],T,d(the)). 確認: 前頁のversion1との 違いは何? Natural Language Processing 2013 (Tokyo Univ. of Tech.) 8 動作確認 • 実際にswi-Prologで実行してみよう! • drawterm.pl を使うと、木構造(構文構造)を 図として表示することができる。 ?- s([tom,broke,the,cup],[],P),draw_term(P). P = s(n(tom), vp(v(broke), np(d(the), n(cup)))) http://www.swi-prolog.org/ Natural Language Processing 2013 (Tokyo Univ. of Tech.) 9 今日の授業内容 1. 2. 3. 4. 5. 構文解析プログラム作成手順を再確認する。 構文解析プログラム(英文)を自力で作成する。 構文解析プログラム(和文)を自力で作成する。 木構造表示プログラム(draw_term/1)を使う。 構文解析プログラムの動作をトレースする。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 10 今日の学習目標 1. 構文解析プログラムを自作し、 作成手法を再確認する。 2. 構文解析プログラム(英文)を自力で作成できる。 3. 構文解析プログラム(和文)を自力で作成できる。 4. 木構造表示プログラム(draw_term/1)が使える。 5. 構文解析プログラムの動作を理解できる。 (注)ユニフィケーション(同一視可能)の可否を 具体的に判断できる。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 11 1.構文解析プログラムを自作し、 作成手法を再確認する。 • まずは一緒に作成してみよう。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 12 分析対象英文の決定 • 課題1: John ran fast. (参考) • 名詞(noun), 動詞(verb), 副詞(adverb) • 動詞句( adverbal phrase) • 文(sentence) Natural Language Processing 2013 (Tokyo Univ. of Tech.) 13 2.構文解析プログラム(英文)を 自力で作成する • (やってみよう)(5分) • 友人と相談してもOK。 Let’s challenge! Natural Language Processing 2013 (Tokyo Univ. of Tech.) 14 ソースコードの例(未記入) このページは自分で完成させてください。 – 統語規則部分 – 単語辞書部分 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 15 動作のトレース • (黒板で説明) Natural Language Processing 2013 (Tokyo Univ. of Tech.) 16 補足問題:他の処理対象文 • 練習課題: –Tom went to a park. –Time flies like an arrow. Natural Language Processing 2013 (Tokyo Univ. of Tech.) 17 英文はまずはここまで • 以下では、日本語処理について考えましょう。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 18 日本語処理 • 処理対象 例: メロスが走る • 言語要素分析 メロス が 走る ( ) ( ) ( ) ( ) ( ) ( ) Natural Language Processing 2013 (Tokyo Univ. of Tech.) 19 日本語処理 • 処理対象 例: メロスが走る • 言語要素分析 メロス が (名詞) (助詞) (主語) (文) 走る (動詞) (述語) Natural Language Processing 2013 (Tokyo Univ. of Tech.) 20 • 形式文法の設定 文法 G = < Vn, Vt, σ, P > ただし、 Vn = { 文, 主語, 述語, 名詞, 助詞, 動詞 } Vt = { メロス, が, 走る } σ=文 P = { 文→主語+述語, 主語→名詞助詞, 述語→動詞} Natural Language Processing 2013 (Tokyo Univ. of Tech.) 21 • 形式文法の設定 文法 G = < Vn, Vt, σ, P > ただし、 Vn = { 文, 主語, 述語, 名詞, 助詞, 動詞 } Vt = { メロス, が, 走る } σ=文 P = { 文→主語+述語, 主語→名詞+助詞, 述語→動詞} Natural Language Processing 2013 (Tokyo Univ. of Tech.) 22 (参考メモ1) • Prolog形式への書き換え(1) 文 :- 主語, 述語. 主語 :- 名詞, 助詞. 述語 :- 動詞. 名詞(メロス). 助詞(が). 動詞(走る). (注)このページはメモ。Prologとしては不完全。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 23 (参考メモ2) • Prolog形式への書き換え(2) 文(A,C) :- 主語(A,B), 述語(B,C). 主語(A,C) :- 名詞(A,B), 助詞(B,C). 述語(A,B) :- 動詞(A,B). 名詞([メロス|T],T). 助詞([が|T],T). 動詞([走る|T],T). Natural Language Processing 2013 (Tokyo Univ. of Tech.) 24 (参考メモ3) • Prolog形式への書き換え(3) 文(A,C,文(_主語,_述語)) :主語(A,B,_主語), 述語(B,C,_述語). 主語(A,C,主語(_名詞,_助詞)) :名詞(A,B,_名詞), 助詞(B,C,_助詞). 述語(A,B,述語(_動詞)) :- 動詞(A,B,_動詞). 名詞([メロス|T],T,名詞(メロス)). 助詞([が|T],T,助詞(が)). 動詞([走る|T],T,動詞(走る)). Natural Language Processing 2013 (Tokyo Univ. of Tech.) 25 One Point Advice 文字コードはUTF8を使おう。 なぜ sjis ではなく utf8 なのか? Natural Language Processing 2013 (Tokyo Univ. of Tech.) 26 動作の確認(動作のトレース) -? 文([メロス,が,走る],[],X). 文( A ,B, 文(_主部, _述部) Natural Language Processing 2013 (Tokyo Univ. of Tech.) 27 統語解析+形態素解析の版 • 今までの例は統語解析だけを行うものであっ た。英文ではまだしも、日本語の場合は形態 素解析を避けて通ることはできない。 どうすればいいのだろうか? Natural Language Processing 2013 (Tokyo Univ. of Tech.) 28 形態素解析も合わせてできる版 文(A,C,文(_主語,_述語)) :主語(A,B,_主語), 述語(B,C,_述語). 主語(A,C,主語(_名詞,_助詞)) :名詞(A,B,_名詞), 助詞(B,C,_助詞). 述語(A,B,述語(_動詞)) :- 動詞(A,B,_動詞). 名詞([メ,ロ,ス|T],T,名詞(メロス)). 助詞([が|T],T,助詞(が)). 動詞([走,る|T],T,動詞(走る)). Natural Language Processing 2013 (Tokyo Univ. of Tech.) 29 今日の議論 1. 構文解析における文法の役割は何? – 文法なしで構文解析できるのか? 2. 形態素解析における単語辞書の役割は何? – 単語辞書なしで単位切りはできるのか? 3. ここまでの構文解析手法の利点と限界は何か? – 単語辞書 – 統語規則辞書(構文規則辞書) – 文字コード,ファイル形式 など Natural Language Processing 2013 (Tokyo Univ. of Tech.) 30 次回は、ここまでの手法の 限界について考えます • 次週は、これに関連して未知語処理の話しを します。その後,感情処理,対話処理,機械 翻訳等の話しをします。 • お楽しみに! (注)未提出のレポートは早く提出すること。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 31 自宅での課題(レポート課題4) • 今日までやった内容を、自分なりにまとめ、 「Prolog言語を用いた自然言語処理プログラ ムの作成手順」 というタイトルのマニュアルを作成しなさい。 – 提出日:平成25年11月25日(月) – 書式: A4用紙,マニュアルの表紙の上に, レポートとしての表紙も付けること。 – 実行例(1つか2つでOK)もマニュアル中に記載 すること。 Natural Language Processing 2013 (Tokyo Univ. of Tech.) 32
© Copyright 2024 ExpyDoc