1 / 34

英文分析プログラム

英文分析プログラム. 白井英俊 (中京大学情報理工学部). 目的. Schank らによる古典的な 『 物語理解システム 』 の仕組みを理解し、簡単な発展形を考えるための基礎を与える 取り上げるテーマは、 SAM (スクリプト適用機構)と PAM( プラン適用機構) これらは、概念依存構造( Conceptual Dependency) という 『 意味表現 』 を用いている ここでは簡単な英文から概念依存構造による 『 意味表現 』 を求める仕組みを解説する. 文の構造. 例 : Jack went to the store. ( ジャックは店に行った)

duard
Download Presentation

英文分析プログラム

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 英文分析プログラム 白井英俊 (中京大学情報理工学部)

  2. 目的 • Schankらによる古典的な『物語理解システム』の仕組みを理解し、簡単な発展形を考えるための基礎を与える • 取り上げるテーマは、SAM(スクリプト適用機構)とPAM(プラン適用機構) • これらは、概念依存構造(Conceptual Dependency)という『意味表現』を用いている • ここでは簡単な英文から概念依存構造による『意味表現』を求める仕組みを解説する

  3. 文の構造 例: Jack went to the store. (ジャックは店に行った) これは次のような『構造』を持つ Jack went to the store Jack went to [ the store ] Jack went [ to [ the store ] ]

  4. 「構造」という用語について • 『構造』という語はいろいろなところで用いられるので、馴染みになっておこう • 『構造』のココロは、  1.全体はいろいろな部品から構成されている  2.部品自体が、さらに小さな部品から構成されることがある  3.部品同士が何らかの関係で結ばれて、全体を構成している

  5. 範疇 はんちゅう • 範疇:特定の役割を持つ語の並びを分類したもの(英語ではCategory、カテゴリという) • 範疇の例:文、名詞句、動詞句、前置詞句、名詞、動詞、前置詞、限定詞 • ここでは範疇を日本語を使わず、記号で表すとする: S, NP, VP, PP, N, V, P, DET 文: Sentence, 名詞句: Noun Phrase, 動詞句:Verb Phrase、 前置詞句: Prepositional Phrase, 名詞: Noun, 動詞: Verb, 前置詞: Preposition, 限定詞: DETerminer

  6. 文の構造 言語学では『文』と「文章」は明確に 区別されるので注意 • Jackwent to the store.   という文「全体」は、 • 名詞句(この例では文の主語の役割)のJackと、 • 動詞句(この例では文の述語の役割)の went to the store が、この順に連接してできている。 • 動詞句wentto the storeは、 • 動詞 went と • 前置詞句 to the store が、この順に連接してできている • 前置詞句 tothe store は、 • 前置詞 toと • 名詞句(この例では前置詞の目的語) the store が、この順に連接してできている

  7. 文法規則 • 以下のような「文法規則」を用いて文の構造を表す(α、β、β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

  8. 語彙規則(文法規則の一部) • 語彙規則:単語(もしくは単語の並び)と範疇とを対応付ける  文法規則と同様、 α a という形で書く。  ただし、ここで αは『範疇』の記号、aは単語 • 例: N apple DET an NP  Jack 注意:IやyouやJackは、限定詞(aやthe)がつかないから「名詞』ではなく『名詞句』として扱う

  9. 文の構造の表示(構文木)の例 文 動詞句 名詞句 名詞句 動詞 限定詞 名詞 an Jack ate apple

  10. 文の構造の表示(構文木)の例 おっと、これからは日本語ではなく記号になれよう… S VP NP NP V DET N an Jack ate apple

  11. 構文解析とDCG • 構文解析:文の構造を求めること。そのために、文法規則(と語彙規則)を用意する • PrologではDCGという組み込みの文法規則処理機構・構文解析器がある。(使い方には多少の注意が必要) • DCGを用いた文法規則と語彙規則の例 s --> np, vp.% 範疇名は小文字 n --> [ apple ].% 単語はリストにする 語彙規則は範疇と単語とを関連付ける規則で、文法規則に似た形式で書かれる

  12. Prologによる構文解析(DCG)で用いられる「差分リスト」とはPrologによる構文解析(DCG)で用いられる「差分リスト」とは (従来のリスト) (差分リスト) X X ‘.’ ‘.’ ‘.’ ‘.’ 1 1 2 ‘.’ 2 ‘.’ 3 [] 3 Y X=[1,2,3] X=[1,2,3 | Y]

  13. 差分リストによる文法規則の記述 • 先の例で 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])

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

  15. 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]. 変換

  16. 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].

  17. DCGの拡張 • このままだと文が構造をもつ、つまり文法規則に従って分析できる、ということしか分からない。 • そこで、二つの拡張が可能になっている (1) 引数を増やす (2)文法規則にプログラムを追加する • 文法規則にプログラムを追加するには、プログラムの部分を中括弧{と }でくくればよい。 例: s --> np, vp, { write(‘s is processed.’) }.

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

  19. 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]. 変換

  20. 実行例 | ?- 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 % さらに構文木表示プログラムを追加

  21. 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 (飲む) の意味もこれによって表せる

  22. 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].

  23. 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]}.

  24. 実行例 | ?- 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を「体内に取り込む=食べる」ことを表現する意味記述

  25. 当面の目標 • 次の三つの文を解析し、その意味をあらわすような意味表現を作り出す「文法規則と語彙規則」を考えよう。 Jack went to the store. He got a kite. He went home.

  26. 概念依存構造(CD) • 概念依存構造(Conceptual Dependency)の役割 1) 文から推論を行う 2) 元の文に依存しない意味の表現を行う つまり、同じ意味を表す複数の文に対して、同一の意味表現を与える • この目的のために、 1) 意味基本要素によってあらゆる動詞の意味を記述(ATRANS, PTRANS, MTRANS,..) 2) 事物を6種類の概念範疇に分類(PP, ACT, PA, ...)

  27. 概念依存構造の「基本行為」 • 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

  28. 基本行為における『役割』 • 『役割』(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) の形で表すとすると

  29. 文の意味表現 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に移す

  30. 実はちょっと困ったことが… • 「プログラムを簡単にするため、主語をactor、目的語をobjectとする」とした。 • しかし、主語はいつもactor(動作主)とは限らない。  例: It rains. (雨が降る) --- このitは『意味を持たない』  別な例: He got a kite. atrans(actor(person)),object(kite), to(person)) atrans: 所有権の移動。actorがobjectの所有権をtoに移す. だから所有権者がactorになる

  31. 修正版 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].

  32. 処理対象の他の文 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))))

  33. 対象の拡大(続き) She got in her car. 『車』は「彼女の所有」であるが、省略しておく これらにより、PAM(Plan Application Mechanism)のプログラムについても議論する準備ができる ptrans(actor(person), object(person), to(car))

  34. 練習問題 • 以下の文に対する意味表現を考えよう。 • 次にその文から対応する意味表現を作り出すよう、適切な語彙規則(と必要ならば文法規則)を加えよ。(注意: 時制は無視せよ) • Jack gave Mary a book. • John told Mary a story. • John saw Mary. • John kissed Mary.

More Related