演習3 最終発表 情報科学科4年 山崎孝裕.

Slides:



Advertisements
Similar presentations
メモリとポインタ. プログラムの前提 コンピュータは、0と1で計算をし、 0と1でデータを保存している。 メモリを学ぶのに必要な知識である。
Advertisements

プログラミング言語論 第3回 BNF 記法について(演習付き) 篠埜 功. 構文の記述 プログラミング言語の構文はどのように定式化できるか? 例1 : for ループの中に for ループが書ける。 for (i=0; i
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
国内線で新千歳空港を利用している航空会社はどこですか?
重回帰分析入門 経済データ解析 2009年度.
プログラム理論特論 第2回 亀山幸義
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
プログラミング入門2 第10回 構造体 情報工学科 篠埜 功.
スペクトル法による数値計算の原理 -一次元線形・非線形移流問題の場合-
日本語統語論:構造構築と意味 No.1 統語論とは
重回帰分析入門 経済データ解析 2011年度.
実験 関数・記号付き文型パターンを用いた機械翻訳の試作と評価 石上真理子 水田理夫 徳久雅人 村上仁一 池原悟 (鳥取大) ◎評価方法1
東京工科大学 コンピュータサイエンス学部 亀田弘之
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
統率・束縛理論2.
プログラミング言語論 第4回 式の構文、式の評価
論理式の表現を数学的に取り扱いやすくするために代数学の助けを借りる.
C言語講座 第4回 ポインタ.
第6章 ユニフィケーション解析 ユニフィケーション解析とは?
プログラミング言語論 第4回 手続きの引数機構 変数の有効範囲
ランダムウォークに関するいくつかの話題 ・ランダムウォークの破産問題 ・ランダムウォークの鏡像原理 1 小暮研究会Ⅰ 11月12日
「データ学習アルゴリズム」 第2章 学習と統計的推測 報告者 佐々木 稔 2003年5月21日 2.1 データと学習
言語処理系(8) 金子敬一.
コンパイラ 2012年10月22日
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
Solving Shape-Analysis Problems in Languages with Destructive Updating
コンパイラ 2011年10月24日
C言語講座 第3回 ポインタ、配列.
PROGRAMMING IN HASKELL
プログラミング言語論 第3回 BNF記法について(演習付き)
人工知能特論II 第2回 二宮 崇.
正則言語 2011/6/27.
述語論理と∀(全称)∃(存在) 3回の講義の概観: 命題論理 (真理値) (公理と推論規則) 述語論理 (モデルと解釈)
述語論理と∀(全称)∃(存在) 3回の講義の概観: 命題論理 (真理値) (公理と推論規則) 述語論理 (モデルと解釈)
暗黙的に型付けされる構造体の Java言語への導入
プログラミング言語論 第9回 Hoare論理の練習問題 手続きの引数機構 変数の有効範囲
第10回関数 Ⅱ (ローカル変数とスコープ).
6.2.4 辞書項目(1) 辞書項目にも、語に対するDAGを与える。
計算の理論 II 帰納的関数2 月曜4校時 大月美佳.
Macro Tree Transducer の 型検査アルゴリズム
第9回関数Ⅰ (簡単な関数の定義と利用) 戻り値.
 型推論1(単相型) 2007.
東京工科大学 コンピュータサイエンス学部 亀田弘之
日本の高校における英語の授業は 英語がベストか?
第2回課題 配布した通り.氏名・学生番号を忘れないこと.
プログラミング言語論 第5回 手続きの引数機構 変数の有効範囲
プログラミング言語論 第9回 情報工学科 木村昌臣 篠埜 功.
コンパイラ 2011年10月20日
 型推論3(MLの多相型).
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
プログラミング入門 電卓を作ろう・パートI!!.
第14回 前半:ラムダ計算(演習付) 後半:小テスト
数理論理学 第9回 茨城大学工学部情報工学科 佐々木 稔.
プログラミング言語論 第10回 情報工学科 篠埜 功.
述語論理式の構文と意味 一階述語論理式の構文 一階述語論理式の意味 述語,限量記号 自然言語文の述語論理式表現 解釈 妥当,充足不能
重回帰分析入門 経済データ解析 2008年度.
4.プッシュダウンオートマトンと 文脈自由文法の等価性
ロールを基にした構造進化の表現 Role based Evolution Dependency Structure Matrix
関数型言語の基礎 型なしl計算 型理論 構成的プログラミング GUIにあらわれる関数概念 PBD VL
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
回帰分析入門 経済データ解析 2011年度.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
情報処理Ⅱ 2005年11月25日(金).
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
プログラミング言語論 プログラミング言語論 演習7 解答と解説 演習7 解答と解説 1.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
Presentation transcript:

演習3 最終発表 情報科学科4年 山崎孝裕

自然言語の意味処理 LiLFeS上でHPSGを使って簡単な英文を構文解析し、文の意味関数を構築する。

構文要素の意味関数 構文解析によって得られた構文要素は、関数として扱う。 構文木が構築され新しい構文要素ができることにより、下位の関数が組み合わさって新しい意味関数が組み立てられる。

関数の型(1) 関数の型はeとtの基本型とそれらを組み合わせたものからなる。 <α,β>: 型αの引数をとって型βの値を返すような関数の型 <α,β>は、「β/α」・「α→β」のように書くこともある。

関数の型(2) 例 ichiro: e (エンティティ) representative: <e, t> (集合を表す1引数述語) talk: <e, t> (主語を取る1引数述語) attack: <e, <e, t>> (目的語と主語を取る1引数述語)

関数の適用 型<α,β>を持つ関数に、型αをもつ関数が適用されることで、型βをもつ関数が構成される。 今回の実装においては、λ計算のように、仮引数の部分を実引数で置き換えるという方法で関数を適用している。

関数の意味 関数はλ抽象されている。 例えば前述のtalkやattackの場合、 talk = λx. talk(x) attack = λx.λy.attack(x, y) のように、述語(イタリック体で表記)に仮引数を渡しλ抽象している。

文の意味組成(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) となる。

文の意味組成(2) さらにこれにichiroが適用され、 ichiro attack junichi: t = (λy.attack(junichi, y))(ichiro) = attack(junichi, ichiro) という意味になる。

文の意味組成(3) どの構文要素と構文要素の関数が適用されるかは、構文解析の際の下位範疇化での組み合わせとなる。 どちらがどちらに適用されるか、すなわちどちらが関数として振る舞い、どちらが引数として振舞うかは、両関数の型を見て決定する。

量化子(1) としたのではうまく表現できない。 量化子の入った表現“Every representative talks.”を考えてみる。 得たい論理表現は、 ∀x.(representative(x) → talk(x)) である。 これは、前とおなじように talk(every representative) としたのではうまく表現できない。

量化子(2) 量化子を型<<e, t>,<e, t>, t>を持つ関数と考える。すなわち、2つの1引数述語を取るような述語と考える。すなわち、everyは、 every = λP.λQ.every(P, Q) = λP.λQ.∀x(P(x) → Q(y)) のように表される。

量化子(3) 改めて“Every representative talks.”の意味を考えてみると、どちらが関数として適用されるかが入れ替わり、 every representative talk = (every(representative))(talk) = ∀x.(representative(x) → talk(x)) のように文の意味を考えることができる。

目的語につく量化子 前で扱った量化子は主語について量化をするものだった。目的語に量化子がついた場合には、問題が生じる。 型が合わなくなる。 主語と両方に量化子がついた場合、解釈が複数考えられうる。

型の不整合(1) 目的語に量化子のついた、“Ichiro attacks every representative.”という文を考える。 自然な解釈としては、 ∀x(representative(x) → attack(x, ichiro)) となるはずである。

型の不整合(2) のようになっており、これらを適用させることはできない。 関数の構成を試みてみる。構文解析によって、attackとevery representativeが組み合わさるはずであるが、両者の型を見ると、 attack: <e, <e, t>> every representative: <<e, t>, t> のようになっており、これらを適用させることはできない。

型の不整合(3) それぞれの関数を見なおしてみると、 attack = λx.λy.attack(x, y) every representative = λP.∀x(representative(x) → P(x)) である。両者を見比べると、それぞれxで書いた部分が、文の目的語になるべきである。attackをPに代入するのを妨げているのはλyの存在である。

型の不整合(4) そこで、適用に加えて、もう一つ関数を組み上げる方法を考える。すなわち、 という形の2つの関数があった場合、 λx.λy.P(x, y): α→β→ t λR.Q(R): (α→ t) → γ という形の2つの関数があった場合、 λy.Q((λx.P(x, y))): β→ γ にするというものである。

型の不整合(5) これを用いると、 を組み合わせることができ、 attack = λx.λy.attack(x, y) every representative = λP.∀x(representative(x) → P(x)) を組み合わせることができ、

型の不整合(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)) のように意味関数を構成することができる。

二つの量化子(1) 主語と目的語の双方に量化子がつくと、文の意味が複数にとれることがある。 たとえば、“Every man likes some women.”のような文があった場合、 ∀y(man(y) → ∃x(woman(x) ∧ like(x, y))) ∃x (woman(x) ∧ ∀y(man(y) → like(x, y))) の二つの解釈が考えられる。

二つの量化子(2) 前者の解釈は先に扱った目的語に量化子がつく場合の解釈そのままである。 後者に関して、この関数を構成してみる。 まず、3つの表現は、 every man = λP.∀y(man(y) → P(y)) like = λx.λy.like(x, y) some women = λQ.∃x(woman(x) ∧ Q(x)) となっている。

二つの量化子(3) every manを適用すれば先の文の意味関数になるようにsome womenを構成すると、 λR.(∃x (woman(x) ∧ R(λy. like(x, y)))) のようになる。 この二つを見比べると次のような可能性が見えてくる。

二つの量化子(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を代入することで、先の表現を手に入れることができる。

二つの量化子(5) これを第三の関数組み上げ規則とすることで、目的語に量化子がついたような表現であっても、扱うことができるようになる。

参考文献 “Semantics in Generative Grammar” (1997) Irene Heim, Angelika Kratzer Blackwell Pub 『意味論 1 -形式意味論-』 (1998) 杉本孝司 くろしお出版