swiftで三段論法¶
swift playgrouds での3番目のプログラミング。今回は、三段論法を使用する人工知能っぽい何か。

機械に推論させるのは、難しいと思われるかもしれない。三段論法くらいであれば、結構単純なアルゴリズムで推論が実行できる。
大雑把な解説¶
プログラムは、structが一つ、メソッドは6つ、プロパティが1つ、の単純な構成です。
大きく分けて、2つの部分からなっています。
- 三段論法を実行する部分
プロパティ: "知識集" 三段論法で使用する事実を保持します
メソッド : "デバッグ表示" デバッグ用に "知識集" の内容を出力します。
メソッド : "登録" 知識の登録をします。
メソッド : "検索" 引数で与えられた単語の知識を検索します。
メソッド : "推論" 引数2つで与えられた知識の真偽を推論します。
- 自然言語の解析部分
メソッド : "分ち書き" 文字列を単語に分けます。
メソッド : "入力" 与えられた文字列の内容に従って、知識の登録、知識の真偽を判定します。
データ構造も非常にシンプルです。
var 知識集: [(lhs: String, rhs: String)] = []
タプルの配列です。「lhsはrhsである」との形式で知識を溜め込みます。
例えば、「ソクラテスは人間です」は、タプルとして
(lhs: "ソクラテス", rhs: "人間")
とタプルの形式にして、プロパティ "知識集" に蓄積されてゆきます。
参考文献とソースコード¶
- Logo 人工知能へのアプローチ
https://www.amazon.co.jp/Logo-人工知能へのアプローチ-ラジオ技術選書-150-祐安-重夫/dp/4844301500
Comments
comments powered by Disqus