290 likes | 399 Views
自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-. 東京工科大学 コンピュータサイエンス学部 亀田弘之. 復習. ( 英文の場合の復習&確認 ) (今日の授業でもさっと眺めるだけにしますが、不安な人は後でじっくり読んでください。). 今日は、復習と日本語 処理の場合の話しです。. NLP のプログラムを書いてみよう!. Prolog のインストール ( www. swi-prolog .org ) プログラム作成手順 (言語データの収集) 言語分析 <= 対象言語の知識が必要 形式文法の設定 <= 形式言語の知識が必要
E N D
自然言語処理2012-平成24年11月26日(No7)- 東京工科大学 コンピュータサイエンス学部 亀田弘之
復習 • (英文の場合の復習&確認) • (今日の授業でもさっと眺めるだけにしますが、不安な人は後でじっくり読んでください。) 今日は、復習と日本語 処理の場合の話しです。 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
NLPのプログラムを書いてみよう! • Prologのインストール(www.swi-prolog.org) • プログラム作成手順 • (言語データの収集) • 言語分析<= 対象言語の知識が必要 • 形式文法の設定 <= 形式言語の知識が必要 • Prolog形式への書き換え <= Prologの知識が必要 • NLPプログラムの実行(英文処理) <=演習 • 構文木を出力するプログラム (draw_term/1) • 動作の理解(自分で実行トレースができる) • NLPプログラムの実行(日本語文処理) <=演習 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
[手順1]:言語データの収集 Tom broke the cup. • 検討事項: 処理対象の文をどのようにして集めればよいのか? • Webから集める? • 文法書の例文を集める? • 語学の教科書(例:中学校3年間の英語の教科書)の例文? • 適切な例文を自分で作成? • それとも... Natural Language Processing 2012 (Tokyo Univ. of Tech.)
[手順2]:言語分析 Tom broke the cup. • 検討事項: 文法の枠組みを決めておく必要がある。 • 伝統的な文法に従うのか? • 日本語の場合、 学校文法(大槻文法・橋本文法)? • 新たに自作? • それとも... Natural Language Processing 2012 (Tokyo Univ. of Tech.)
[手順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 2012 (Tokyo Univ. of Tech.)
例 [手順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 2012 (Tokyo Univ. of Tech.)
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 2012 (Tokyo Univ. of Tech.)
動作確認 • 実際に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 2012 (Tokyo Univ. of Tech.)
今日の内容 • 構文解析プログラムを自作し、作成手法を再確認する。 • 構文解析プログラム(英文)を自力で作成する。 • 構文解析プログラム(和文)を自力で作成する。 • 木構造表示プログラム(draw_term/1)が使える。 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
1.構文解析プログラムを自作し、作成手法を再確認する。1.構文解析プログラムを自作し、作成手法を再確認する。 • まずは一緒に作成してみよう。 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
分析対象英文の決定 • 課題1: John ran fast.(参考) • 名詞(noun), 動詞(verb), 副詞(adverb) • 動詞句( adverbal phrase) • 文(sentence) Natural Language Processing 2012 (Tokyo Univ. of Tech.)
2.構文解析プログラム(英文)を自力で作成する2.構文解析プログラム(英文)を自力で作成する • (やってみよう)(5分) Let’s challenge! Natural Language Processing 2012 (Tokyo Univ. of Tech.)
ソースコードの例(未記入) 自分で書き込んでください。 • 統語規則部分 • 単語辞書部分 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
動作のトレース • (黒板で説明) Natural Language Processing 2012 (Tokyo Univ. of Tech.)
補足問題:他の処理対象文 • Tom went to a park. • Time flies like an arrow. Natural Language Processing 2012 (Tokyo Univ. of Tech.)
英文はまずはここまで • 以下では、日本語処理について考えましょう。 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
日本語処理 • 処理対象例: 衝撃が走る • 言語要素分析衝撃が走る() ()()() ()() Natural Language Processing 2012 (Tokyo Univ. of Tech.)
日本語処理 • 処理対象例: 衝撃が走る • 言語要素分析衝撃が走る(名詞) (助詞)(動詞)(主語) (述語)(文) Natural Language Processing 2012 (Tokyo Univ. of Tech.)
形式文法の設定文法 G = < Vn, Vt, σ, P >ただし、Vn = { 文, 主語, 述語, 名詞, 助詞, 動詞 }Vt = { メロス, が, 走る}σ=文P = { 文→主語+述語, 主語→名詞助詞, 述語→動詞} Natural Language Processing 2012 (Tokyo Univ. of Tech.)
形式文法の設定文法 G = < Vn, Vt, σ, P >ただし、Vn = { 文, 主語, 述語, 名詞, 助詞, 動詞 }Vt = { 衝撃, が, 走る }σ=文P = { 文→主語+述語, 主語→名詞+助詞, 述語→動詞} Natural Language Processing 2012 (Tokyo Univ. of Tech.)
(参考メモ1) • Prolog形式への書き換え文 :- 主語, 述語.主語 :- 名詞, 助詞.述語 :- 動詞.名詞(メロス).助詞(が).動詞(走る). Natural Language Processing 2012 (Tokyo Univ. of Tech.)
(参考メモ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 2012 (Tokyo Univ. of Tech.)
(参考メモ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 2012 (Tokyo Univ. of Tech.)
動作の確認(動作のトレース) -? 文([メロス,が,走る],[],X).文( A ,B, 文(_主部, _述部) Natural Language Processing 2012 (Tokyo Univ. of Tech.)
統語解析+形態素解析の版 • 今までの例は統語解析だけを行うものであった。英文ではまだしも、日本語の場合は形態素解析を避けて通ることはできない。どうすればいいのだろうか? Natural Language Processing 2012 (Tokyo Univ. of Tech.)
形態素解析も合わせてできる版 文(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 2012 (Tokyo Univ. of Tech.)
次回は、ここまでの手法の有効性や限界について考えます次回は、ここまでの手法の有効性や限界について考えます • 次週は、これに関連して未知語処理の話しをします。 Natural Language Processing 2012 (Tokyo Univ. of Tech.)
自宅での課題 • 今日までやった内容を、自分なりにまとめ、「自然言語処理プログラムの書き方」というマニュアルを充実させなさい。 • さし当って、提出は必要ありません。 Natural Language Processing 2012 (Tokyo Univ. of Tech.)