Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CCGに基づいて論理構造を自動検証する日本語エディタ

denjiry
March 03, 2020

 CCGに基づいて論理構造を自動検証する日本語エディタ

denjiry

March 03, 2020
Tweet

More Decks by denjiry

Other Decks in Programming

Transcript

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    「根拠から帰結を導けるか」を自動で検証したい 8

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    ⭗ 文章の主張に必要な常識や前提知識を列挙
    ⭗ 列挙した文章が、主張を含意しているか検証する
    23

    View Slide

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

    View Slide

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

    View Slide

  26. 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.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  37. 前提知識の不足
    普段なにかの論理構造を考えるとき、無意識に前提知識を考慮してい

    → なんらかの形で、前提知識を補完する必要がある
    例: 「上手に日本語を話せる」 → 「話すのに時間がかからない」
    ● 日本語は言語のひとつである
    ● 任意の言語について、上手に話せるならば、話すスピードが速い
    ● 話すスピードが速いと、話すのに時間がかからない
    37

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  54. 参考文献
    ➢ 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

    View Slide

  55. おまけ
    55

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  66. 文章とラムダ式による照応の表現
    “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”
    →照応が解決できた!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide