自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

29
自自自自自自 2012 - 自自 24 自 11 自 26 自 (No7)- 自自自自自自 自自自自自自自自自自自自自 自自自自

description

自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-. 東京工科大学 コンピュータサイエンス学部 亀田弘之. 復習. ( 英文の場合の復習&確認 ) (今日の授業でもさっと眺めるだけにしますが、不安な人は後でじっくり読んでください。). 今日は、復習と日本語 処理の場合の話しです。. NLP のプログラムを書いてみよう!. Prolog のインストール ( www. swi-prolog .org ) プログラム作成手順 (言語データの収集) 言語分析

Transcript of 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

Page 1: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

自然言語処理 2012- 平成 24 年 11 月 26 日 (No7)-

東京工科大学コンピュータサイエンス学部

亀田弘之

Page 2: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

復習

• ( 英文の場合の復習&確認 )• (今日の授業でもさっと眺めるだけにし

ますが、不安な人は後でじっくり読んでください。)

2Natural Language Processing 2012 (Tokyo Univ. of Tech.)

今日は、復習と日本語処理の場合の話しです。

Page 3: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

NLP のプログラムを書いてみよう!

1. Prolog のインストール (www.swi-prolog.org)2. プログラム作成手順

1. (言語データの収集)2. 言語分析 <= 対象言語の知識が必要 3. 形式文法の設定 <= 形式言語の知識が必要4. Prolog 形式への書き換え <= Prolog の知識が必要5. NLP プログラムの実行 ( 英文処理 )  <=演習6. 構文木を出力するプログラム (draw_term/1)7. 動作の理解(自分で実行トレースができる)8. NLP プログラムの実行 ( 日本語文処理 )  <=演

習3Natural Language Processing 2012 (Tokyo Univ. of Tech.)

Page 4: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

[ 手順1 ] :言語データの収集

Tom broke the cup.

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 4

検討事項: 処理対象の文をどのようにして集めればよいのか?

•Web から集める?•文法書の例文を集める?•語学の教科書(例:中学校3年間の英語の教科書)の例文?•適切な例文を自分で作成?•それとも...

検討事項: 処理対象の文をどのようにして集めればよいのか?

•Web から集める?•文法書の例文を集める?•語学の教科書(例:中学校3年間の英語の教科書)の例文?•適切な例文を自分で作成?•それとも...

Page 5: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

[ 手順2 ] :言語分析

Tom broke the cup.

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 5

検討事項: 文法の枠組みを決めておく必要がある。•伝統的な文法に従うのか?

•日本語の場合、 学校文法(大槻文法・橋本文法)?

•新たに自作?•それとも...

検討事項: 文法の枠組みを決めておく必要がある。•伝統的な文法に従うのか?

•日本語の場合、 学校文法(大槻文法・橋本文法)?

•新たに自作?•それとも...

Page 6: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

[ 手順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

統語規則

単語辞書

Page 7: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

[ 手順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).

7Natural Language Processing 2012 (Tokyo Univ. of Tech.)

Version1 ( Prog1.pl )

Page 8: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

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)).

8Natural Language Processing 2012 (Tokyo Univ. of Tech.)

確認: 前頁の version1との     違いは何?

確認: 前頁の version1との     違いは何?

Page 9: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

動作確認

• 実際に swi-Prolog で実行してみよう!• drawterm.pl を使うと、木構造(構文構造

)を図として表示することができる。

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 9

http://www.swi-prolog.org/

?- s([tom,broke,the,cup],[],P),draw_term(P).P = s(n(tom), vp(v(broke), np(d(the), n(cup))))

Page 10: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

今日の内容

1. 構文解析プログラムを自作し、作成手法を再確認する。

2. 構文解析プログラム(英文)を自力で作成する。

3. 構文解析プログラム(和文)を自力で作成する。

4. 木構造表示プログラム (draw_term/1) が使える。

10Natural Language Processing 2012 (Tokyo Univ. of Tech.)

Page 11: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

1.構文解析プログラムを自作し、

作成手法を再確認する。• まずは一緒に作成してみよう。

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 11

Page 12: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

分析対象英文の決定

• 課題1:

John ran fast.

( 参考 )• 名詞 (noun), 動詞 (verb), 副詞 (adverb)• 動詞句 ( adverbal phrase)• 文 (sentence)

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 12

Page 13: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

2.構文解析プログラム(英文)を

自力で作成する• (やってみよう)(5分)

13Natural Language Processing 2012 (Tokyo Univ. of Tech.)

Let’s challenge!Let’s challenge!

Page 14: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

ソースコードの例 ( 未記入 )

自分で書き込んでください。– 統語規則部分– 単語辞書部分

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 14

Page 15: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

動作のトレース

• (黒板で説明)

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 15

Page 16: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

補足問題:他の処理対象文

• Tom went to a park.• Time flies like an arrow.

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 16

Page 17: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

英文はまずはここまで

• 以下では、日本語処理について考えましょう。

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 17

Page 18: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

日本語処理

• 処理対象

例: 衝撃が走る• 言語要素分析

  衝撃   が   走る (     ) (    ) (     ) (     )     (    ) (    )

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 18

Page 19: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

日本語処理

• 処理対象例: 衝撃が走る

• 言語要素分析  衝撃   が   走る ( 名詞 ) ( 助詞 ) ( 動詞 ) ( 主語 )     ( 述語 ) ( 文 )

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 19

Page 20: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

• 形式文法の設定文法 G = < Vn, Vt, σ, P >

ただし、Vn = { 文 , 主語 , 述語 , 名詞 , 助詞 , 動詞 }Vt = { メロス , が , 走る }σ= 文P = { 文→主語 + 述語 ,  主語→名詞助詞 ,   述語→動詞 }

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 20

Page 21: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

• 形式文法の設定文法 G = < Vn, Vt, σ, P >

ただし、Vn = { 文 , 主語 , 述語 , 名詞 , 助詞 , 動詞 }Vt = { 衝撃 , が , 走る }σ= 文P = { 文→主語 + 述語 ,  主語→名詞 + 助詞 ,   述語→動詞 }

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 21

Page 22: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

(参考メモ1)

• Prolog 形式への書き換え文 :- 主語 , 述語 .主語 :- 名詞 , 助詞 .述語 :- 動詞 .名詞 ( メロス ).助詞 ( が ).動詞 ( 走る ).

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 22

Page 23: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

(参考メモ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

Page 24: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

(参考メモ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

Page 25: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

動作の確認(動作のトレース)

-? 文 ([ メロス , が , 走る ],[],X).文 ( A ,B, 文 (_ 主部 , _ 述部 )

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 25

Page 26: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

統語解析+形態素解析の版

• 今までの例は統語解析だけを行うものであった。英文ではまだしも、日本語の場合は形態素解析を避けて通ることはできない。

どうすればいいのだろうか?

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 26

Page 27: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

形態素解析も合わせてできる版

文 (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

Page 28: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

次回は、ここまでの手法の有効性や限界について考えます• 次週は、これに関連して未知語処理の話

しをします。

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 28

Page 29: 自然言語処理 2012 - 平成 24 年 11 月 26 日 (No7)-

自宅での課題

• 今日までやった内容を、自分なりにまとめ、「自然言語処理プログラムの書き方」というマニュアルを充実させなさい。

• さし当って、提出は必要ありません。

Natural Language Processing 2012 (Tokyo Univ. of Tech.) 29