講義資料

Download Report

Transcript 講義資料

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