Download presentation
Presentation is loading. Please wait.
1
演習3 最終発表 情報科学科4年 山崎孝裕
2
自然言語の意味処理 LiLFeS上でHPSGを使って簡単な英文を構文解析し、文の意味関数を構築する。
3
構文要素の意味関数 構文解析によって得られた構文要素は、関数として扱う。
構文木が構築され新しい構文要素ができることにより、下位の関数が組み合わさって新しい意味関数が組み立てられる。
4
関数の型(1) 関数の型はeとtの基本型とそれらを組み合わせたものからなる。
<α,β>: 型αの引数をとって型βの値を返すような関数の型 <α,β>は、「β/α」・「α→β」のように書くこともある。
5
関数の型(2) 例 ichiro: e (エンティティ) representative: <e, t> (集合を表す1引数述語)
talk: <e, t> (主語を取る1引数述語) attack: <e, <e, t>> (目的語と主語を取る1引数述語)
6
関数の適用 型<α,β>を持つ関数に、型αをもつ関数が適用されることで、型βをもつ関数が構成される。
今回の実装においては、λ計算のように、仮引数の部分を実引数で置き換えるという方法で関数を適用している。
7
関数の意味 関数はλ抽象されている。 例えば前述のtalkやattackの場合、 talk = λx. talk(x)
attack = λx.λy.attack(x, y) のように、述語(イタリック体で表記)に仮引数を渡しλ抽象している。
8
文の意味組成(1) “Ichiro attacks Junichi.”という文を考えると、attack: <e, <e, t>>にjunichiが適用され、 attack junichi: <e, t> = attack(junichi) = (λx.λy.attack(x, y))(junichi) = λy.attack(junichi, y) となる。
9
文の意味組成(2) さらにこれにichiroが適用され、 ichiro attack junichi: t
= (λy.attack(junichi, y))(ichiro) = attack(junichi, ichiro) という意味になる。
10
文の意味組成(3) どの構文要素と構文要素の関数が適用されるかは、構文解析の際の下位範疇化での組み合わせとなる。
どちらがどちらに適用されるか、すなわちどちらが関数として振る舞い、どちらが引数として振舞うかは、両関数の型を見て決定する。
11
量化子(1) としたのではうまく表現できない。 量化子の入った表現“Every representative talks.”を考えてみる。
得たい論理表現は、 ∀x.(representative(x) → talk(x)) である。 これは、前とおなじように talk(every representative) としたのではうまく表現できない。
12
量化子(2) 量化子を型<<e, t>,<e, t>, t>を持つ関数と考える。すなわち、2つの1引数述語を取るような述語と考える。すなわち、everyは、 every = λP.λQ.every(P, Q) = λP.λQ.∀x(P(x) → Q(y)) のように表される。
13
量化子(3) 改めて“Every representative talks.”の意味を考えてみると、どちらが関数として適用されるかが入れ替わり、 every representative talk = (every(representative))(talk) = ∀x.(representative(x) → talk(x)) のように文の意味を考えることができる。
14
目的語につく量化子 前で扱った量化子は主語について量化をするものだった。目的語に量化子がついた場合には、問題が生じる。 型が合わなくなる。
主語と両方に量化子がついた場合、解釈が複数考えられうる。
15
型の不整合(1) 目的語に量化子のついた、“Ichiro attacks every representative.”という文を考える。
自然な解釈としては、 ∀x(representative(x) → attack(x, ichiro)) となるはずである。
16
型の不整合(2) のようになっており、これらを適用させることはできない。
関数の構成を試みてみる。構文解析によって、attackとevery representativeが組み合わさるはずであるが、両者の型を見ると、 attack: <e, <e, t>> every representative: <<e, t>, t> のようになっており、これらを適用させることはできない。
17
型の不整合(3) それぞれの関数を見なおしてみると、
attack = λx.λy.attack(x, y) every representative = λP.∀x(representative(x) → P(x)) である。両者を見比べると、それぞれxで書いた部分が、文の目的語になるべきである。attackをPに代入するのを妨げているのはλyの存在である。
18
型の不整合(4) そこで、適用に加えて、もう一つ関数を組み上げる方法を考える。すなわち、 という形の2つの関数があった場合、
λx.λy.P(x, y): α→β→ t λR.Q(R): (α→ t) → γ という形の2つの関数があった場合、 λy.Q((λx.P(x, y))): β→ γ にするというものである。
19
型の不整合(5) これを用いると、 を組み合わせることができ、 attack = λx.λy.attack(x, y)
every representative = λP.∀x(representative(x) → P(x)) を組み合わせることができ、
20
型の不整合(6) のように意味関数を構成することができる。 attack every representative
= λy.∀x(representative(x)→(λx.attack(x, y))(x)) = λy.∀x(representative(x) → attack(x, y)) ichiro attack every representative = (λy.∀x(representative(x)→attack(x, y)))(ichiro) = ∀x(representative(x) → attack(x, ichiro)) のように意味関数を構成することができる。
21
二つの量化子(1) 主語と目的語の双方に量化子がつくと、文の意味が複数にとれることがある。
たとえば、“Every man likes some women.”のような文があった場合、 ∀y(man(y) → ∃x(woman(x) ∧ like(x, y))) ∃x (woman(x) ∧ ∀y(man(y) → like(x, y))) の二つの解釈が考えられる。
22
二つの量化子(2) 前者の解釈は先に扱った目的語に量化子がつく場合の解釈そのままである。 後者に関して、この関数を構成してみる。
まず、3つの表現は、 every man = λP.∀y(man(y) → P(y)) like = λx.λy.like(x, y) some women = λQ.∃x(woman(x) ∧ Q(x)) となっている。
23
二つの量化子(3) every manを適用すれば先の文の意味関数になるようにsome womenを構成すると、
λR.(∃x (woman(x) ∧ R(λy. like(x, y)))) のようになる。 この二つを見比べると次のような可能性が見えてくる。
24
二つの量化子(4) Q(x)を、二つの関数の合成と考え、 Q(x) = R(P(x)) とし、 some women
= λQ.∃x(woman(x) ∧ Q(x)) = λP.λR.(∃x(woman(x) ∧ R(P(x)))) とすることで、このPにlikeを代入することで、先の表現を手に入れることができる。
25
二つの量化子(5) これを第三の関数組み上げ規則とすることで、目的語に量化子がついたような表現であっても、扱うことができるようになる。
26
参考文献 “Semantics in Generative Grammar” (1997) Irene Heim, Angelika Kratzer Blackwell Pub 『意味論 1 -形式意味論-』 (1998) 杉本孝司 くろしお出版
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.