340 likes | 447 Views
英文分析プログラム. 白井英俊 (中京大学情報理工学部). 目的. Schank らによる古典的な 『 物語理解システム 』 の仕組みを理解し、簡単な発展形を考えるための基礎を与える 取り上げるテーマは、 SAM (スクリプト適用機構)と PAM( プラン適用機構) これらは、概念依存構造( Conceptual Dependency) という 『 意味表現 』 を用いている ここでは簡単な英文から概念依存構造による 『 意味表現 』 を求める仕組みを解説する. 文の構造. 例 : Jack went to the store. ( ジャックは店に行った)
E N D
英文分析プログラム 白井英俊 (中京大学情報理工学部)
目的 • Schankらによる古典的な『物語理解システム』の仕組みを理解し、簡単な発展形を考えるための基礎を与える • 取り上げるテーマは、SAM(スクリプト適用機構)とPAM(プラン適用機構) • これらは、概念依存構造(Conceptual Dependency)という『意味表現』を用いている • ここでは簡単な英文から概念依存構造による『意味表現』を求める仕組みを解説する
文の構造 例: Jack went to the store. (ジャックは店に行った) これは次のような『構造』を持つ Jack went to the store Jack went to [ the store ] Jack went [ to [ the store ] ]
「構造」という用語について • 『構造』という語はいろいろなところで用いられるので、馴染みになっておこう • 『構造』のココロは、 1.全体はいろいろな部品から構成されている 2.部品自体が、さらに小さな部品から構成されることがある 3.部品同士が何らかの関係で結ばれて、全体を構成している
範疇 はんちゅう • 範疇:特定の役割を持つ語の並びを分類したもの(英語ではCategory、カテゴリという) • 範疇の例:文、名詞句、動詞句、前置詞句、名詞、動詞、前置詞、限定詞 • ここでは範疇を日本語を使わず、記号で表すとする: S, NP, VP, PP, N, V, P, DET 文: Sentence, 名詞句: Noun Phrase, 動詞句:Verb Phrase、 前置詞句: Prepositional Phrase, 名詞: Noun, 動詞: Verb, 前置詞: Preposition, 限定詞: DETerminer
文の構造 言語学では『文』と「文章」は明確に 区別されるので注意 • Jackwent to the store. という文「全体」は、 • 名詞句(この例では文の主語の役割)のJackと、 • 動詞句(この例では文の述語の役割)の went to the store が、この順に連接してできている。 • 動詞句wentto the storeは、 • 動詞 went と • 前置詞句 to the store が、この順に連接してできている • 前置詞句 tothe store は、 • 前置詞 toと • 名詞句(この例では前置詞の目的語) the store が、この順に連接してできている
文法規則 • 以下のような「文法規則」を用いて文の構造を表す(α、β、β1…βnは範疇の記号) 矢印の左側の範疇(一個に限る)は右側の範疇(の並び)から構成される、と読む α β (矢印の右側は範疇一個でもよい) α β1 …βn (矢印の右側は範疇が複数でもよい) • 具体例 S NPVP例: Jackwent to the store VP V(Jack) left VP VPPwentto the store VP VNP ate an apple PP P NPto the store NP DETNthestore
語彙規則(文法規則の一部) • 語彙規則:単語(もしくは単語の並び)と範疇とを対応付ける 文法規則と同様、 α a という形で書く。 ただし、ここで αは『範疇』の記号、aは単語 • 例: N apple DET an NP Jack 注意:IやyouやJackは、限定詞(aやthe)がつかないから「名詞』ではなく『名詞句』として扱う
文の構造の表示(構文木)の例 文 動詞句 名詞句 名詞句 動詞 限定詞 名詞 an Jack ate apple
文の構造の表示(構文木)の例 おっと、これからは日本語ではなく記号になれよう… S VP NP NP V DET N an Jack ate apple
構文解析とDCG • 構文解析:文の構造を求めること。そのために、文法規則(と語彙規則)を用意する • PrologではDCGという組み込みの文法規則処理機構・構文解析器がある。(使い方には多少の注意が必要) • DCGを用いた文法規則と語彙規則の例 s --> np, vp.% 範疇名は小文字 n --> [ apple ].% 単語はリストにする 語彙規則は範疇と単語とを関連付ける規則で、文法規則に似た形式で書かれる
Prologによる構文解析(DCG)で用いられる「差分リスト」とはPrologによる構文解析(DCG)で用いられる「差分リスト」とは (従来のリスト) (差分リスト) X X ‘.’ ‘.’ ‘.’ ‘.’ 1 1 2 ‘.’ 2 ‘.’ 3 [] 3 Y X=[1,2,3] X=[1,2,3 | Y]
差分リストによる文法規則の記述 • 先の例で X= [1,2,3 | Y] というリストの場合、 XとYの「差分リスト」を X-Yで表すこととする この例では、 X-Y = [1,2,3] • s(X,Y) により、X-Yの単語リストがsであることを表すこととする • 例: s([jack, ate, an, apple],[ ]) np([jack, ate, an, apple],[ate, an, apple]) v([ate, an, apple], [an, apple])
DCGの仕組み 文法規則の場合: s --> np, vp. は、次のPrologプログラムに変換される s(X, Y) :- np(X, Z), vp(Z, Y). そのココロ:X-Yがs(文)であるためには、X-Zがnp(名詞句)で、Z-Yがvp(動詞句)であればよい 語彙規則の場合: n --> [apple]. は、次のPrologプログラムに変換される n(X,Y) :- X = [apple | Y]. apple(=X-Y)は名詞(n)
DCGの例 s(X,Y) :- np(X,Z), vp(Z,Y). np(X,Y) :-det(X,Z), n(Z,Y). vp(X,Y) :- v(X,Z), np(Z,Y). np(X,Y) :- X=[ jack | Y ]. det(X,Y) :- X=[an | Y]. n(X,Y) :- X=[apple |Y ]. v(X,Y) :- X=[ate |Y]. s --> np, vp. np --> det, n. vp --> v, np. np --> [ jack ]. det --> [an]. n --> [ apple ]. v --> [ate]. 変換
DCGによる解析の例 ?-s( [jack, ate, an, apple], [ ]). S(X,Y):-np(X, Z), vp(Z, Y). np(X,Z) :- X=[ jack | Z ]. vp(Z,Y):-v(Z,C), np(C,Y). v(Z,C) :- Z = [ate | C]. np(C,Y) :- det(C,D), n(D,Y) det(C,D):- C=[an | D]. n(D,Y):- D=[apple|Y].
DCGの拡張 • このままだと文が構造をもつ、つまり文法規則に従って分析できる、ということしか分からない。 • そこで、二つの拡張が可能になっている (1) 引数を増やす (2)文法規則にプログラムを追加する • 文法規則にプログラムを追加するには、プログラムの部分を中括弧{と }でくくればよい。 例: s --> np, vp, { write(‘s is processed.’) }.
DCGの拡張: 「引数を増やす」 • 引数を一個付け加えて、文の『構造』を返すようにしよう。 • まずは語彙規則から: det --> [an]. n --> [apple]. an が限定詞aであることを伝える det(det(a)) --> [an]. n(n(apple)) --> [apple]. • 次は、文法規則: • np --> det, n. • vp --> v, np. • s --> np, vp. np は限定詞Aと名詞Bから構成される np(np(A,B)) -->det(A), n(B). vp(vp(A,B)) -->v(A), np(B). s(s(A,B)) -->np(A), vp(B).
DCGの拡張: 「引数を増やす」 s(s(A,B)) --> np(A), vp(B). np(np(A,B)) --> det(A), n(B). vp(vp(A,B) ) --> v(A), np(B). np(np(jack)) --> [ jack ]. det(det(a)) --> [an]. n(n(apple)) --> [ apple ]. v(v(eat)) --> [ate]. s(s(A,B), X,Y) :- np(A,X,Z), vp(B,Z,Y). np(np(A,B),X,Y) :-det(A,X,Z), n(B,Z,Y). vp(vp(A,B),X,Y) :- v(A,X,Z), np(B,Z,Y). np(np(jack),X,Y) :- X=[ jack| Y ]. det(det(a),X,Y) :- X=[an | Y]. n(n(apple),X,Y) :- X=[apple |Y ]. v(v(eat),X,Y) :- X=[ate |Y]. 変換
実行例 | ?- s([jack,ate,an,apple],[ ]). yes % 拡張前の文法規則を使った実行 % 拡張後(引数を加えた)文法規則を使った実行 | ?- s(X,[jack,eat,an,apple],[ ]),draw(X). s | +----------------------+ np vp || | +-----------------+ |vnp | | | | |+----------+ || detn | || | ||| | jackate aapple X = s(np(jack),vp(v(eat),np(det(a),n(apple)))) ? yes | ?- s(X,[jack,ate,an,apple],[ ]). X = s(np(jack),vp(v(eat),np(det(a),n(apple)))) ? yes % さらに構文木表示プログラムを追加
DCGを用いて意味表現を作る • この内容は、「McELI, SAM, PAMの基礎知識 」と関連している • eat (食べる)の意味を以下のようなCD(概念依存)表現で表すことにしよう: ingest(actor(X), object(Y), from(F), to(Z)) ここで、X,Y,F,Zは変数とする. ingestは「Xがその体Zに物YをFから取り込む」ことを意味するものとする。actor, object, from, toはそれぞれingestにおけるX,Y,Z,Fの『役割』を明示したものである。 • 参考: drink (飲む) の意味もこれによって表せる
DCGによって意味表現を作る • 先の拡張規則に加えて、『意味表現』を返すために引数を使う • まずは語彙規則から: det(det(a)) --> [an]. n(n(apple)) --> [apple]. v(v(eat)) --> [ate]. np(np(jack))-->[jack]. 限定詞は意味を考えないことにする det(det(a)) --> [an]. りんご(apple)の意味表現はapple n(n(apple),apple) --> [apple]. 食べる(eat)の意味表現はingest v(v(eat),ingest) --> [ate]. Jackの意味表現はjackという名前の人 np(np(jack),person(name(jack))) --> [jack].
DCGによって意味表現を作る(続) 文法規則: np(np(A,B)) --> det(A), n(B). vp(vp(A,B)) --> v(A), np(B). s(s(A,B)) --> np(A), vp(B). npの意味はnと同じとする np(np(A,B),Sem) -->det(A), n(B,Sem). vpの意味はvとnpを合成 vp(vp(A,B),Sem) -->v(A,V), np(B,Y), {V=..[Pred|L], Sem=..[Pred,object(Y)|L]}. sの意味はnpとvpを合成 s(s(A,B),Sem) -->np(A,X), vp(B,V), {V=..[Pred|L], Sem=..[Pred,actor(X)|L]}.
実行例 | ?- s(A,B,[jack,ate,an,apple],[]). A =s(np(jack),vp(v(eat),np(det(a),n(apple)))), B = ingest(actor(person(name(jack))), object(apple))? yes Jackがappleを「体内に取り込む=食べる」ことを表現する意味記述
当面の目標 • 次の三つの文を解析し、その意味をあらわすような意味表現を作り出す「文法規則と語彙規則」を考えよう。 Jack went to the store. He got a kite. He went home.
概念依存構造(CD) • 概念依存構造(Conceptual Dependency)の役割 1) 文から推論を行う 2) 元の文に依存しない意味の表現を行う つまり、同じ意味を表す複数の文に対して、同一の意味表現を与える • この目的のために、 1) 意味基本要素によってあらゆる動詞の意味を記述(ATRANS, PTRANS, MTRANS,..) 2) 事物を6種類の概念範疇に分類(PP, ACT, PA, ...)
概念依存構造の「基本行為」 • atrans : 所有権の移動. 例: give, take,sell, buy, receive • ptrans : 場所の移動. 例: go, walk, move, fall • mtrans : (心理的)情報の移動. 例:read, tell, forget, teach • ingest : 体内への取り込み. 例: eat, drink, breathe • propel : 力を加える. 例: hit, kick, pat, push • mbuild : (心理的)情報の構築. 例: realize, wonder, think • grasp : 物をつかむような行為. 例: hold, snatch • move : 体の一部の移動. 例: push, kick • speak : 言葉や音声を発する. 例:speak, tell, shout • attend : 感覚情報に注意する. 例: listen, look • expel : 体内から体外へ物を出す. 例: puff, spit, sneeze
基本行為における『役割』 • 『役割』(role):行為における個体(項)の関わり • プログラムを簡単にするため、主語をactor、目的語をobjectとする。fromとtoは行為(運動)の方向を表す • 例: 行為 actor object from to 例文 atrans jack book jack mary Jack gave a book to Mary ptrans jack jack store Jack walked to a store mtrans jack information book jack Jack read a book Ingest jack wine glass jack Jack drank a glass of wine propel jack ball jack Jack threw a ball expel jack tear eyes Jack cried mbuild jack ptrans(jack,_,house,_) Jack decided to leave the house 行為(actor,object,from,to) の形で表すとすると
文の意味表現 ptrans: 物体の移動。actorがobjectを物理的に動かす • Jack went to the store. ptrans(actor(name(jack)), object(name(jack)), to(store)) • He got a kite. atrans(actor(person)),object(kite), to(person)) • He went home. ptrans(actor(person), object(person), to(house)) atrans: 所有権の移動。actorがobjectの所有権をtoに移す
実はちょっと困ったことが… • 「プログラムを簡単にするため、主語をactor、目的語をobjectとする」とした。 • しかし、主語はいつもactor(動作主)とは限らない。 例: It rains. (雨が降る) --- このitは『意味を持たない』 別な例: He got a kite. atrans(actor(person)),object(kite), to(person)) atrans: 所有権の移動。actorがobjectの所有権をtoに移す. だから所有権者がactorになる
修正版 vp(vp(A,B),Sem,Sbj) --> v(A,V,Sbj), np(B,Y), {V=..[Pred|L], Sem=..[Pred,object(Y)|L]}. s(s(A,B),Sem) -->np(A,X), vp(B,Sem,X). v(v(eat),ingest(actor(X)), X) --> [ate]. v(v(get),atrans(to(X)), X) --> [got]. v(v(rain),be(state(rain)), _) --> [rains].
処理対象の他の文 Willa was hungry. 「状態」を表す be(actor(person(name(willa))), state(hunger(val(5)))). She grabbed the Michelin guide. ミシェランガイドは「レストランガイド」の本 grasp(actor(person), object(book(type(restaurant_guide))))
対象の拡大(続き) She got in her car. 『車』は「彼女の所有」であるが、省略しておく これらにより、PAM(Plan Application Mechanism)のプログラムについても議論する準備ができる ptrans(actor(person), object(person), to(car))
練習問題 • 以下の文に対する意味表現を考えよう。 • 次にその文から対応する意味表現を作り出すよう、適切な語彙規則(と必要ならば文法規則)を加えよ。(注意: 時制は無視せよ) • Jack gave Mary a book. • John told Mary a story. • John saw Mary. • John kissed Mary.