2023年5月4日木曜日

アブダクション

アブダクション~仮説と発見の論理(米盛裕二)を読んだので、内容を整理する。

  • アブダクションとは論理学者のチャールズ・パースが提唱しているもの。
  • 彼によると推論は①演繹、②帰納、③アブダクションの3種類に分類される。それぞれの推論の特色は以下のとおり。
    • 演繹
      • 推論の内容を考慮に入れずに推論の形式(前提と結論の間に成り立つ論理的形式)のみによって真なる前提から必然的に真なる結論が導かれる。
    • 帰納
      • 経験にもとづく蓋然的推論。限られた経験に基づいて一般的言明を行う推論。
    • アブダクション
      • 仮説的推論。仮説を導くための推論。
  • 分析的推論と拡張的推論という分類
    • 分析的推論
      • 演繹推論はこれにあたる。
      • 前提と結論の含意関係の分析のみに関わり、外的な経験的事実の世界には関わらない。そのため経験的事実による反証にさらされない
      • 前提の中に暗々裏に含まれている情報を解明し、それを結論に明確に述べるだけ。
    • 拡張的推論
      • 帰納推論やアブダクションはこれにあたる。
      • 結論は前提の内容以上のことを主張する。
      • 帰納推論の場合は「部分」を述べる前提から「全体」へ知識を拡張する。
      • アブダクションの場合は、前提(事実)からそれを説明するため仮説へ拡張する。
  • 帰納とアブダクションの関係
    • 仮説は帰納を積み重ねるだけでは仮説は生まれない。
    • 例えばリンゴが落ちるのを何回も観察して一般化しても「万有引力」という仮説は生まれない。
    • アブダクションにより仮説を生み、仮説を帰納で推論するという関係。
  • アブダクションの推論の形式は以下のように定式化される。
    1. 驚くべき事実Cがある。
    2. しかしHならば、Cである。
    3. よってHである。
  • アブダクションは、事実Cの観察からそれを説明しうると考えらえる仮説Hを推論するため「遡及推論(retroduction)」とも呼ばれる。



含意(AならばB)の真理値表

 論理学の勉強をしていると最初に躓くのが含意(AならばB, A->B))の真理値表。
教科書には以下のように書いている。


AがTrueの場合は分かるが、AがFalseの時はなぜA→BがTrueになるのだろう?

答えとしては、A→Bは「Aが成り立つ前提が満たされればBが成り立つ(Trueとなる)」ことを示しており、Aが成り立たたないケースのことは何も規定していないことが重要。

なので、前提が満たされない(つまりAがFalseの場合)は、A→BはBが何であろうが成立する。という考え方。

なお、A→B は !A || Bと等価であることがよく使われる。

※なぜ等価なのかは、!A || B の真理値表を自分で書いて確かめてみよう。

2023年3月26日日曜日

PythonでMecabを使う (Unidic辞書編)

日本語の自然言語処理には形態素解析が欠かせない。そこでよく使われるのがMecab。辞書として標準のipadicではなくUnidicを使おうとするといくつか落とし穴がある。
今回はそんな落とし穴に落ちずにインストールからmecabで品詞解析をするまでの手順を書いておく。
  • 落とし穴①:Unidicを指定してmecabを動かそうとすると、`no such file or directory: /usr/local/lib/python3.9/site-packages/unidic/dicdir/mecabrc`のエラーが発生。
  • 落とし穴②:`Mecab.Tagger("-Ochasen")`とするとエラーが発生。
まずpython3-mecabのインストールする。
# pip install mecab-python3
# pip install unidic
ただしUnidicはpipだけでは辞書本体がダウンロードされないため下記コマンドで辞書本体をダウンロードする。
# python -m unidic download

Mecab本家とは違いpython3-mecabはchasen出力のフォーマットがデフォルトでは用意されていないため、そのまま`Mecab.Tagger("-Ochasen")` を実行すると「chasenというようなフォーマットは無い」という趣旨のエラーが発生する。そこで、`/usr/local/lib/python3.9/site-packages/unidic/dicdir/dicrc`のファイル末尾にviなどで以下の`; ChaSen`以下の内容を追記する(参考)。

以上。

参考文献:https://www.teamxeppet.com/python-mecab-unidic-lite_mac/