Slide 1

Slide 1 text

CCGに基づいて論理構造を 自動検証する日本語エディタ 筑波大学 システム情報工学研究科 D3 田尻

Slide 2

Slide 2 text

自己紹介 ➢ 名前 ⭗ 田尻健斗(@denjiry) ➢ 所属 ⭗ 筑波大学大学院システム情報工学研究科D3 ⭗ 全脳アーキテクチャ若手の会 ⭗ (株)科学計算総合研究所 ➢ 研究分野 ⭗ FPGA・SVM ➢ ライフワーク (今日の話) ⭗ 組合せ範疇文法・依存型意味論 2

Slide 3

Slide 3 text

この発表で話すこと 1. タイトルになっている、ソフトウェアの説明 ⭗ CCGに基づいて ⭗ 論理構造を自動検証する ⭗ 日本語エディタ 2. このソフトウェアをつかって何がしたいのか? 3

Slide 4

Slide 4 text

「CCGに基づいて論理構造を 自動検証する日本語エディタ」 とはなにか? 4

Slide 5

Slide 5 text

既存の日本語用エディタ ➢ Microsoft Word ➢ Grammaly ➢ 一太郎 ◎ 文法的な間違いがないか、を検証してくれる ✘  文章の内容の正しさは検証できない 5

Slide 6

Slide 6 text

このエディタで何をできるようにしたいか? 書いた文章の内容を検証して欲しい ➢ 論理構造の自動検証 ➢ 論理構造の可視化 どんな文章を処理したいか? 6

Slide 7

Slide 7 text

「全員にPCR検査すべき」は適切ではない(サブタイトル) (中略) 新型コロナウイルス肺炎は、今のところ抗ウイルス薬など特定の治療薬 はなく、対症療法を行うだけであり、無症状や軽症例に特別な治療は必 要がない。 「検査を行っても治療法や対処法が変わらない場合、その検査は行う意 味がない」と考えるのが医学の原則なのだ。 7 “新型コロナで「情報汚染」されたメディアが報じない「 5つの真実」 ”https://gendai.ismedia.jp/articles/amp/70709?page=2 サンプル文章

Slide 8

Slide 8 text

サンプル文章の話の整理 帰結 ➢ 症状のある人全員にはPCR検査は必要ない 根拠 ➢ PCR検査によって新型コロナウイルスを検出できる可能性がある ➢ 新コロにかかっても、無症状・軽症例に特別な治療は必要ない ➢ 検査を行っても治療法が変わらない場合、その検査を行う必要はな い 「根拠から帰結を導けるか」を自動で検証したい 8

Slide 9

Slide 9 text

論理構造の自動検証(お気持ち) ➢ 「まず人間がなんとなく正しそうな文章を書く」とする ➢ 文章の内容(論理的な真偽)を確かめたい ➢ 確かめ方をアルゴリズムとして規定したい ➢ そのアルゴリズムを計算機で自動化したい 9

Slide 10

Slide 10 text

論理構造の可視化(お気持ち) ➢ 係り受けの可視化 ➢ 短い文のつながり方の可視化 可視化の例: 人工言語(ロジバン)の構文解析ソフトウェアの出力 10 https://lojban.github.io/ilmentufa/glosser/glosser.htm

Slide 11

Slide 11 text

タイトルを分解する 「CCGに基づいて論理構造を自動検証する日本語エディタ」 ➢ 「CCGに基づいて」 ⭗ CCGとはなにか? ➢ 「論理構造を自動検証する」 ⭗ (文章の)論理構造の検証とは? ⭗ 検証の自動化 ➢ 「日本語エディタ」 ⭗ 日本語のエディタである必要性 11

Slide 12

Slide 12 text

タイトルを分解する 「CCGに基づいて論理構造を自動検証する日本語エディタ」 ➢ 「CCGに基づいて」 ⭗ CCGとはなにか? ➢ 「論理構造を自動検証する」 ⭗ (文章の)論理構造の検証とは? ⭗ 検証の自動化 ➢ 「日本語エディタ」 ⭗ 日本語のエディタである必要性 12

Slide 13

Slide 13 text

ざっくり組合せ範疇文法(CCG) ➢ 自然言語の文法の理論 ➢ 自然言語→論理式という変換ができる ➢ 2つの構成要素からなる ⭗ 単語の辞書 ⭗ 組合せの規則 13

Slide 14

Slide 14 text

この発表で出てくる論理式 ➢ 誰にとっても明快なルールを定める ➢ 定めたルールだけから生成できたものを論理式とする ➢ このように定めることで、証明がやりやすくなる ルールの定め方の例: 1. a,b,c,…, A(x), B(x),…を論理式とする 2. (論理式)&(論理式), ¬(論理式)も論理式とする 3. 上記以外は論理式ではない 14

Slide 15

Slide 15 text

この発表の世界観 現実(言語化されてない知識) ↓↑人間が気合で変換・再変換 文章(いつもみんなが書くやつ) ↓CCGで自動で変換 論理式(文章の意味) 15 りんごは赤い

Slide 16

Slide 16 text

組合せ範疇文法(CCG)の辞書の例 辞書は{単語, 統語範疇, 論理式}の三つ組 ➢ 統語範疇: 「品詞」のCCGでの呼び方 ➢ 論理式: 単語に与える意味 16

Slide 17

Slide 17 text

組合せ範疇文法(CCG)の組合せ規則 ➢ 「統語範疇:論理式」を一つの単位として適用できる ➢ 2つの単語・文節を組合せ、1つにする 例: 17 規則名 組合せ後 組合せ前

Slide 18

Slide 18 text

組合せ範疇文法(Combinatory Categorial Grammer) ➢ 文法の理論のひとつ ➢ 辞書は{単語, 統語範疇, 論理式}の三つ組の集合 ➢ 単語毎の統語範疇へ、組合せ規則を適用して構文木を算出する ➢ 構文木と組合せ規則から、文の意味として論理式を算出する 18

Slide 19

Slide 19 text

CCGで日本語→論理式の変換 1. まず辞書によって単語から統語範疇と論理式を追加する 2. 組合せ規則と統語範疇をつかって構文木をつくる 3. 構文木にしたがって論理式も組合せる 例:「小さな犬が吠えた」の構文木と論理式 19

Slide 20

Slide 20 text

まとめ: CCGとは ➢ 自然言語の文法の理論 ➢ 辞書は{単語, 統語範疇, 論理式}の三つ組の集合 ➢ 構文木から、形式的な操作のみで論理式に変換できる ➢ 出力された論理式は元の文の意味を表す 20

Slide 21

Slide 21 text

タイトルを分解する 「CCGに基づいて論理構造を自動検証する日本語エディタ」 ➢ 「CCGに基づいて」 ⭗ CCGとはなにか? ➢ 「論理構造を自動検証する」 ⭗ (文章の)論理構造の検証とは? ⭗ 検証の自動化 ➢ 「日本語エディタ」 ⭗ 日本語のエディタである必要性 21

Slide 22

Slide 22 text

(再掲)この発表の世界観 現実(言語化されてない知識) ↓↑人間が気合で変換・再変換 文章(いつもみんなが書くやつ) ↓CCGで自動で変換 論理式(文章の意味) 22 りんごは赤い

Slide 23

Slide 23 text

文章の論理構造の検証とは Question: ➢ (文章の)論理構造の検証とはどんなもの? Answer: ➢ 常識や前提知識に対して、含意が成り立っているかどうか調べるこ と ⭗ 文章の主張に必要な常識や前提知識を列挙 ⭗ 列挙した文章が、主張を含意しているか検証する 23

Slide 24

Slide 24 text

含意関係認識 ➢ 「前提Piとしたn文(n≧1)が、結論Cの1文の意味を含むかどうか 予測する」という問題 ➢ 論理構造の検証の一部分 例 (n = 2): P1: ソクラテスは人間である。 P2: 人間は死ぬ。 C: ソクラテスは死ぬ。   こたえ→Yes 24

Slide 25

Slide 25 text

論理構造の検証の自動化 どうやって論理構造の検証を自動化するのか? 1. CCGに基づき、文章を論理式に変換 ⭗ ccg2lambdaで論理式への変換を自動化 2. 論理式の形式的な変形で、関係を検証(証明)する ⭗ 定理証明支援系で論理式の変形を自動化 25

Slide 26

Slide 26 text

ccg2lambda CCGに基づいて、文章を論理式に変換するソフトウェア ➢ CCGに基づくパーサーの出力から論理式を導く ➢ 定理証明支援系によって論理式同士の含意関係を出力 ➢ 実装 https://github.com/mynlp/ccg2lambda ➢ 含意関係認識のデータセットJSeMにおいて高い適合率を達成 26 “ccg2lambda: A Compositional Semantics System”, Martinez-Gomez,Pascual; Mineshima,Koji; Miyao,Yusuke;Bekki,Daisuke; (2016). In Proceedings of the 54st Annual Meeting of the Association for Computational Linguistics (ACL2016), System Demonstrations, pp.85-90, August 7-12, Berlin, Germany.

Slide 27

Slide 27 text

ccg2lambdaによる変換例(スクショ) 27

Slide 28

Slide 28 text

ccg2lambdaによる変換例 ➢ 例文 ⭗ 日本人研究者は誰もノーベル賞を受賞しなかった。 ➢ 出力 ⭗ all y.(exists x.(_日本人(x) & _者(x) & _研究(x) & (x = y)) -> -(_賞(_ノーベル) & True & exists e.(_受賞(e) & _する(e) & Past(e) & (Nom(e) = y) & (Acc(e) = _ノーベル)))) 28

Slide 29

Slide 29 text

論理式での含意関係認識 含意関係認識とは、 「前提Piとしたn文(n≧1)が、結論Cの1文の意味を含む」 論理式に言い換えると、 「P1 ∧ P2 ∧ … → C という論理式が証明可能である」 29

Slide 30

Slide 30 text

定理証明支援系 定理証明支援系とは: ➢ 論理式の形式的な変形・証明を支援するソフトウェア ➢ 変形をプログラムしたり、ある程度自動で証明させたりできる ※ ccg2lambdaにも組み込まれている 30

Slide 31

Slide 31 text

まとめ: 論理構造の自動検証 ➢ 論理構造の検証 ≒ 「前提に対して、含意してるか調べる」 ➢ ccg2lambdaをつかって、以下を自動で行う a. CCGに基づき、文章を論理式に変換 b. 論理式の形式的な変形で、含意を検証(証明)する ccg2lambdaを使えば、論理構造の自動検証が可能! 31

Slide 32

Slide 32 text

タイトルを分解する 「CCGに基づいて論理構造を自動検証する日本語エディタ」 ➢ 「CCGに基づいて」 ⭗ CCGとはなにか? ➢ 「論理構造を自動検証する」 ⭗ (文章の)論理構造の検証とは? ⭗ 検証の自動化 ➢ 「日本語エディタ」 ⭗ 日本語のエディタである必要性 32

Slide 33

Slide 33 text

なぜエディタを作るのか Question: ➢ なぜccg2lambdaをエディタにする必要があるのか? Answer: ➢ インタラクティブな修正がほぼ必須であるため a. 構文木の修正 b. 文章の修正 33

Slide 34

Slide 34 text

ccg2lambdaの使用に関する懸念点 ➢ 係り受けの曖昧さ ➢ 元の文と論理式の直感的意味の剥離 ➢ 自明な前提知識の埋め込み 34

Slide 35

Slide 35 text

係り受けの曖昧さ 係り受けの曖昧さによって、意味も曖昧になる場合がある → 意味が通る構文木が、一つとは限らない 35 ((赤い魚)をくわえる)猫 (赤い(魚をくわえる猫))

Slide 36

Slide 36 text

元の文と論理式の直感的意味の剥離 論理式は読みづらく、日本語に再翻訳すると元の文とかなり異なる 例: 「ソクラテスは人間である。」 exists x, (and (_人間 x) (exists e, (and ((Nom e) = x) ((Nom e) = _ソ クラテス)))) 「あるxがあって、xは人間であり、かつxはソクラテスである。」 36 変換 翻訳

Slide 37

Slide 37 text

前提知識の不足 普段なにかの論理構造を考えるとき、無意識に前提知識を考慮してい る → なんらかの形で、前提知識を補完する必要がある 例: 「上手に日本語を話せる」 → 「話すのに時間がかからない」 ● 日本語は言語のひとつである ● 任意の言語について、上手に話せるならば、話すスピードが速い ● 話すスピードが速いと、話すのに時間がかからない 37

Slide 38

Slide 38 text

ccg2lambdaにエディタを実装 すぐに文を修正できて、かつ文の解析結果を表示させられるUI → 日本語のエディタ ➢ 係り受けの曖昧さ ⭗ ユーザーにアノテーションさせる or 候補から選ばせる ➢ 元の文と論理式の直感的意味の剥離 ⭗ 論理構造の可視化によって、論理式を見やすくする ➢ 前提知識の不足 ⭗ 解析結果によって指摘させ、手動で不足分の前提知識を追加 38

Slide 39

Slide 39 text

操作画面(UI)のイメージ 入力欄 症状のある人全員には、PCR検査は必要ない。 39 出力 ● 以下から選んでください 1. (症状の(ある人全員))には、PCR検査は必要ない。 2. ((症状のある人)全員)には、PCR検査は必要ない。

Slide 40

Slide 40 text

操作画面(UI)のイメージ 入力欄 ((症状のある人)全員)には、PCR検査は必要ない。 40 出力

Slide 41

Slide 41 text

操作画面(UI)のイメージ 入力欄 ((症状のある人)全員)には、PCR検査は必要ない。 41 論理構造:Error 出力

Slide 42

Slide 42 text

入力欄 ((症状のある人)全員)には、PCR検査は必要ない。 ● PCR検査によって新型コロナウイルスを検出できる可能性がある ● 新コロにかかっても、無症状・軽症例に特別な治療は必要ない ● 検査を行っても治療法が変わらない場合、その検査を行う必要はない 操作画面(UI)のイメージ 42 論理構造:OK 出力

Slide 43

Slide 43 text

まとめ: このエディタで出来そうなこと 書いた文章の… ➢ 論理構造の自動検証 → 多少の不便を許容すればできそう ⭗ 前提知識をあらかじめ手動で入力 ⭗ 構文木をアノテーションさせる ➢ 論理構造の可視化 → 前例あり・頑張って実装する 43

Slide 44

Slide 44 text

このソフトウェアをつかって何がしたいのか? 44

Slide 45

Slide 45 text

知識の利用と保存 ➢ 知識の利用・保存は、人類の活動において必要不可欠 ⭗ 研究・技術開発 ⭗ 司法・行政 ⭗ 専門技術を要する職業 ➢ 知識を利用・保存するのに必要なこと ⭗ 論理構造を正しく理解する ⭗ 正しい論理構造で文章を書く 45

Slide 46

Slide 46 text

知識を利用することの困難さ ➢ 今存在する知識の量 >>> すぐに理解できる知識の量 ➢ 単語の定義や文章の解釈が人によって異なる → 「論理構造を自動検証する日本語エディタ」で解決!…したい 46

Slide 47

Slide 47 text

日々増えていく知識の例: arXiv.org 47 https://arxiv.org/list/cs/new 1日のCSの論文の投稿数=371本

Slide 48

Slide 48 text

実用的な「言葉の定義」の要件とは? 文章の解釈を揃えたい… → 「言葉の定義」をつくる 実用的な「言葉の定義」の要件とは? ➢ 解釈が一通りに定まる ⭗ 論理式など、形式的に定義されているもの ➢ 習得のしやすさ ⭗ 日本語など、広く普及していて誰でも使えるもの 両方をみたすような「言語の定義」は、定義することが難しい… 48

Slide 49

Slide 49 text

(再掲)知識を利用することの困難さ つらいこと ➢ 今存在する知識の量 >>> すぐに理解できる知識の量 ⭗ 人間が論理構造を検証するスピードは速くない ➢ 単語の定義や文章の解釈が、人によって異なる ⭗ 実用的な「言葉の定義」が普及していない → 「論理構造を自動検証する日本語エディタ」で解決!…したい 49

Slide 50

Slide 50 text

知識を利用しやすくする このエディタの特徴 ➢ 検証を通した文章ならば、論理構造を機械的に処理できる ➢ 構文木が定まれば、意味(論理式)が一意に定まる 50

Slide 51

Slide 51 text

知識を利用しやすくする このエディタの特徴 ➢ 検証を通した文章ならば、論理構造を機械的に処理できる → 人間が理解しなくても、その文章をソースとして利用できる ➢ 構文木が定まれば、意味(論理式)が一意に定まる → 実質日本語の見た目をした論理式とみなせる 51

Slide 52

Slide 52 text

懸念 結局前提知識どうすんの問題 ➢ 常識的前提知識を実装しないと実用するのはむずかしそう ➢ 全ての常識を手作業で入力するのは到底不可能 ➢ そもそも常識と称してる知識も定義するべきかも? ➢ よくつかう常識的前提知識をなるべく実装したら実用できるかも?? ⭗ 概念・品詞でまとめるなど、効率化をはかる ⭗ 現在はこれを実践しようとしている 52

Slide 53

Slide 53 text

まとめ ➢ 論理構造を自動で検証させたい ➢ ほぼ要求を満たしているccg2lambdaというソフトウェアがある ➢ エディタをくっつけると不便さの一部が解決できる ➢ あらゆる知識の利用が高速化できるといいなぁ 53

Slide 54

Slide 54 text

参考文献 ➢ Bekki,Daisuke; Miho,Sato; (2015).”Calculating Projections via Type Checking”, In Extended abstracts of the ESSLLI 2015 workshop TYTLES: Types Theory and Lexical Semantics, Robin Cooper, Christian Retore (eds.), Aug 2015, Barcelona, Spain. 2015. slide:https://www.slideshare.net/kaleidotheater/bekki-satotytles2015 ➢ Martinez-Gomez,Pascual; Mineshima,Koji; Miyao,Yusuke;Bekki,Daisuke; (2016). “ccg2lambda: A Compositional Semantics System”, In Proceedings of the 54st Annual Meeting of the Association for Computational Linguistics (ACL2016), System Demonstrations, pp.85-90, August 7-12, Berlin, Germany. ➢ 『日本語文法の形式理論』戸次 , 2010 ➢ Koji Mineshima, Ribeka Tanaka, Pascual Martínez-Gómez, Yusuke Miyao, Daisuke Bekki. “Building compositional semantics and higher-order inference system for wide-coverage Japanese CCG parsers”, Proceedings of the 2016 Conference on Empirical Methods in Natural Language Processing, pages 2236-2242, Austin, Texas, 1-5 November 2016. 54

Slide 55

Slide 55 text

おまけ 55

Slide 56

Slide 56 text

ラムベック計算(Lambek Calculus) 「構文木の導出過程と、論理式の証明過程は同型とみなせる」という主張 すなわち以下が対応する ➢ 言語学 ⭗ 辞書と統語計算規則(チョムスキーのmergeとか) ➢ 証明論 ⭗ 公理と推論規則 56

Slide 57

Slide 57 text

型付きラムダ計算(1/2) ラムダ計算 ➢ とてもシンプルな、計算のモデルのひとつ ➢ 計算すすめると、項の組合せが簡約される ➢ 以降ラムダ計算の項や型をラムダ式とも呼ぶ 57 簡約

Slide 58

Slide 58 text

型付きラムダ計算(2/2) 型システム ➢ 項に関するメタな情報(型)をラムダ式に付与することで、実行せずに 計算を検証する仕組み ➢ コロン(” : “)を用いて、項 : 型と書く ➢ 例 ⭗ (一般的な)項 ⭗ 直積型 ⭗ 関数型 58

Slide 59

Slide 59 text

型付きラムダ計算の定義(1/2) ➢ 再帰的な定義がなされている ⭗ 規則と定義の簡略化 ➢ 基本型に自然数を導入することで、 任意の数の型が定義可能 59 型τの定義 項eの定義 基本型 関数型 型注釈 変数 関数適用 関数抽象 ※評価後の値の定義は省略

Slide 60

Slide 60 text

型付きラムダ計算の定義(2/2) ➢ 項と型に関する規則 ⭗ ある項の型を推論する規則 ⭗ ある型が定義を満たすか検証する規則 60

Slide 61

Slide 61 text

論理としての型システム 「ラムダ計算の型は論理式として使用可能である」 ➢ 詳しくは→[カリー・ハワード同型対応 証明論] [検索] 61 ラムダ計算の規則 論理式の規則 例)直積型と∧

Slide 62

Slide 62 text

直積型とタプル ➢ 直積型 A×Bはタプル(a, b)を表す型 ⭗ 論理式ではA∧Bに対応 ➢ タプルの中身にアクセスする演算子 ⭗ π1: 1番目の要素をとりだす操作 π1 (a, b) → a ⭗ π2: 2番目の要素をとりだす操作 π2 (a, b) → b 62

Slide 63

Slide 63 text

依存型意味論 依存型を導入した型付きラムダ計算を使った意味論 ➢ 型付きラムダ式の型を論理式として使う ➢ 依存型:ざっくり言うと「値に依存する型」 ➢ 依存型によってラムダ計算の表現力が大きく向上 ⭗ 未指定項@によって文脈にまつわる現象を表現する 63

Slide 64

Slide 64 text

依存型(依存直積型) ➢ 型のペア(論理式の∧)を作る点は直積型と同じである ➢ 直積型とは違い、型だけではなく項もとれる 64 直積型 依存直積型

Slide 65

Slide 65 text

照応 ➢ 言語における現象のひとつ ➢ 代名詞がなにかを指し示している ⭗ 例... A「テーブルのうえにあるそれ取って」 B「(それってどれ…)」 ➢ 機械的に解くのは簡単ではない ⭗ 前提知識をどう使うか?→未指定項@を使う! 65

Slide 66

Slide 66 text

文章とラムダ式による照応の表現 “A man entered. He whistled.” ➢ 「「xはman」かつ「xはenterした」」かつ「(π1 u)は口笛を吹いた」 ➢ π1はpairの第1成分を取り出す演算子なのでπ1 u = x ➢ よって「「xはman」かつ「xはenterした」」かつ「xは口笛を吹いた」 66 π1 u “He”の正体は”A man” →照応が解決できた!

Slide 67

Slide 67 text

代名詞”He”のラムダ式 “A man entered. He whistled.” ➢ 代名詞“He”はこの文以外にも使いたい ➢ 他の文でも使えるような、代名詞自体のラムダ式がない… ➢ 代名詞“He”のラムダ式はどうすれば…? 67 ? 例) “Alice greets John. He whistled.”

Slide 68

Slide 68 text

未指定項 代名詞をラムダ式で表すため、 「未知の意味表示を表す項」 として未指定項@を導入 →未指定項により、代名詞”He”のラムダ式が記述可能 68

Slide 69

Slide 69 text

未指定項の除去(1/2) 照応解決のため、未指定項@について型を推論する(普通のコンパイラ) 型の推論が成功→@の型が得られる 69

Slide 70

Slide 70 text

未指定項の除去(2/2) 得られた@の型をもとに、その型を構成できるラムダ式の項を探す もし探索に成功したら、その項は@と同じ型をもつため、照応が解決 この例では@= ➢ “A man entered. He whistled.” 70 π2 π1

Slide 71

Slide 71 text

未指定項@の機能 ➢ 文脈にまつわる現象の表現 ⭗ 照応: 代名詞が別の部分を指し示す ⭗ 選択的制約: 述語が主語に課す意味的な制約 ⭗ 前提射影:ある文に暗黙的に含まれている意味 ⭗ コアージョン:文脈による意味の強制 ➢ これらの現象は、未指定項をつかうことで表現可能! ⭗ 未指定項@の型情報から自動証明によって解けるかも 71