• 検索結果がありません。

自然言語処理

N/A
N/A
Protected

Academic year: 2021

シェア "自然言語処理"

Copied!
39
0
0

読み込み中.... (全文を見る)

全文

(1)

自然言語処理 2012

- 平成 24 年 11 月 12 日 (No6)-

東京工科大学

コンピュータサイエンス学部 亀田弘之

(2)

復習

• (

英文の場合の復習&確認

)

(授業ではさっと眺めるだけにしますが

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

2

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

今日は日本語処理の話 も始めたいので...

(3)

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

1. Prolog

のインストール

(www.swi-prolog.org)

2.

プログラム作成手順

1. 言語要素分析 <= 対象言語に関する知識が必要 2. 形式文法の設定 <= 形式言語に関する知識が必要 3. Prolog 形式への書き換え <= Prolog に関する知識が

必要

4. NLP プログラムの実行 ( その1 )

5. 構文木を出力するプログラムへの拡張

6. NLP プログラムの実行 ( その2 )

3

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

(4)

[ 手順 0] :処理対象の収集

Tom broke the cup.

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

問題: 処理対象の文をどのようにして集めればよいのか?

•Web から集める?

文法書の例文を集める?

語学の教科書(例:中学校3年間の英語の教科書)の例 文?適切な例文を自分で作成?

それとも...

問題: 処理対象の文をどのようにして集めればよいのか?

•Web から集める?

文法書の例文を集める?

語学の教科書(例:中学校3年間の英語の教科書)の例 文?適切な例文を自分で作成?

それとも...

(5)

[ 手順2 ]: 文法の設定

文法 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.) 5

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

6

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

Version1 ( Prog1.pl )

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

7

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

問題: 前頁の version1 との     違いは何?

問題: 前頁の version1 との     違いは何?

(8)

動作確認

実際に

swi-Prolog

で実行してみよう!

• drawterm.pl

を使うと、木構造(構文構造

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

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

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

(9)

今日の内容

1.

構文解析プログラムの作成手順を会得す る

2.

構文解析プログラムが自力で書ける

3.

日本語のプログラムも分かる。

9

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

(10)

1.構文解析プログラムの 作成手順を会得する

説明は終わりました。

実作業を通して会得しましょう。

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

(11)

2.構文解析プログラムを 自力で書ける

11

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

(12)

それでは、構文解析プログラム 自分で書いて見よう! を

例文

– Time flies like an arrow.

( 教科書 p.42-47 参照のこと )

12

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

Let’s challenge!

Let’s challenge!

(13)

作成手順の概要

1.

処理対象を決める

2.

処理対象の各文に対して、統語構造の分 析を行う

3.

上記の分析結果をもとに、文法を書き下 す

4.

上記で得られた文法を、

Prolog

の形式に 書きかえる

5.

動作を確認する

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

(14)

処理対象文

Tom went to a park.

  または

• Time flies like an arrow.

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

(15)

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

自分で作ってみよう!

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

(16)

統語規則部分

sentence(A,C,

stentence(_noun,_verbal_phrase)) :- noun(A,B,_noun),

verbal_phrase(B,C,_verbal_phrase).

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

(17)

verbal_phrase(A,C,

verbal_phrase(_intransitive_verb, _prepositional_phrase)):-

intransitive_verb(A,B,_intransitive_verb),

prepositional_phrase(B,C,_prepositional_phra se).

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

(18)

prepositional_phrase(A,B,

prepositional_phrase(_prepostion, _noun_phrase)):-

prepostion(A,B,_prepostion),

noun_phrase(A,B,_noun_phrase).

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

(19)

noun_phrase(A,C,

noun_phrase(_determiner,_noun)):- determiner(A,B,_determiner),

noun(B,C,_noun).

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

(20)

単語辞書部分

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

(21)

%time

noun([time|T],T,noun(time)).

transitive_verb([time|T],T,transitive_verb(time)).

%flies

intransitive_verb([flies|T],T, intransitive_verb(flies)).

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

(22)

%like

transitive_verb([like|T],T, transitive_verb(like)).

preposition([like|T],T,preposition(like)).

adjective([like|T],T,adjective(like)).

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

(23)

%an

deteminer([an|T],T,determiner(an)).

%arrow

noun([arrow|T],T,noun(arrow)).

noun([flies|T],T,noun(flies)).

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

(24)

英文はまずはここまで

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

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

(25)

日本語処理

処理対象

例: メロスが走る

言語要素分析

 メロス   が   走る

(

   

) (

  

) (

   

) (

   

)

   

(

  

)

(

  

)

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

(26)

日本語処理

処理対象

例: メロスが走る

言語要素分析

 メロス   が   走る

(

名詞

) (

助詞

) (

動詞

)

(

主語

)

   

(

述語

) (

)

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

(27)

形式文法の設定

文法

G = < Vn, Vt, σ, P >

ただし、

Vn = {

,

主語

,

述語

,

名詞

,

助詞

,

動詞

} Vt = {

メロス

,

,

走る

}

σ=

P = {

文→主語

+

述語

,

 主語→名詞助詞

,

   述語→動詞

}

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

(28)

形式文法の設定

文法

G = < Vn, Vt, σ, P >

ただし、

Vn = {

,

主語

,

述語

,

名詞

,

助詞

,

動詞

} Vt = {

メロス

,

,

走る

}

σ=

P = {

文→主語

+

述語

,

 主語→名詞

+

助詞

,

   述語→動詞

}

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

(29)

• Prolog

形式への書き換え 文

:-

主語

,

述語

.

主語

:-

名詞

,

助詞

.

述語

:-

動詞

.

名詞

(

メロス

).

助詞

(

).

動詞

(

走る

).

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

(30)

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

(31)

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

(32)

動作の確認

-?

([

メロス

,

,

走る

],[],X).

( A ,B,

(_

主部

, _

述部

)

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

(33)

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

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

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

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

(34)

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

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

(35)

次回、この続きをやります。

なぜ、形態素解析も合わせてできるのか

、考えてみてください。

次週は未知語処理の話しをします。

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

(36)

レポート課題

今日やった内容を、自分なりにまとめ、

「自然言語処理プログラムの書き方」と いうマニュアルを作成しなさい。

提出日は、26日(月)とします。

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

重要 重要

(37)

意味の処理

来週以降に向けて、少し意味処理につい て話しておきます。詳細は後日あらため てお話します。

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

以下、余 談

以下、余 談

(38)

意味とは

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

(39)

格文法

• Tom broke the cup with a hammer.

動作主格、対象格、経験者格、道具格、

結果格、源泉格、目標格、対抗動作主格

、時間格、場所格 など

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

参照

関連したドキュメント

(2003) A universal approach to self-referential para- doxes, incompleteness and fixed points... (1991) Algebraically

Key words and phrases: Linear system, transfer function, frequency re- sponse, operational calculus, behavior, AR-model, state model, controllabil- ity,

Amount of Remuneration, etc. The Company does not pay to Directors who concurrently serve as Executive Officer the remuneration paid to Directors. Therefore, “Number of Persons”

Guasti, Maria Teresa, and Luigi Rizzi (1996) &#34;Null aux and the acquisition of residual V2,&#34; In Proceedings of the 20th annual Boston University Conference on Language

○   While trying to respond to situations at multiple reactor units due to lack of information about the cooling water injection status of Unit 2 since receiving information about

・ The direct causes leading to the reactor core damage accident of Fukushima Daiichi Units 1 to 3 are, in the case of Unit 1, the total loss of cooling capacity at an early stage

 “ボランティア”と言えば、ラテン語を語源とし、自

自然言語というのは、生得 な文法 があるということです。 生まれつき に、人 に わっている 力を って乳幼児が獲得できる言語だという え です。 語の それ自 も、 から