Location : Home > Languages > Perl > Package
Title : AI::ExpertSystem::Simple
Toolbox Logo

名称

 AI::ExpertSystem::Simple - システムシェルでの簡易なエキスパートシステム


バージョン

 このドキュメントは2003年6月10日にリリースされた AI::ExpertSystem::Simple の verion 1.2 を参照している。


概要

 本クラスは XML ナレッジベース及びユーザからの質問から規則を呼び出し、結論に到達する簡易なエキスパートシステムを実装している。


説明

概略

 本クラスは1つのクラスが全ての処理を行い、残りの3つはこれを支援する。現時点ではできることはわずかであるが、将来のバージョンではログ生成など導入可能なサブクラスを追加する。
 本クラスの使用法については bin ディレクトリにある simple shell またはナレッジベースの例や docs ディレクトリにあるドキュメントを見ればよい。
directory.  興味があれば同じ XML ナレッジベースを読む ruby バージョンがあるのでこれを読みとよい。

コンストラクタと初期化

new( )

 コンストラクタは引数なしでいくつかの基本的変数を初期化する。

パブリックメソッド

reset( )

 実行時に初期状態に戻すためにリセットする。

load( FILENAME )

 本メソッドは XML のナレッジベースである FILENAME を引数に取り、その診断のためにデータ構造のパースを試みる。

process( )

 いったんナレッジベースがロードされると本メソッドを呼び出すたびに診断が実行される。結果は以下の4通りである。

"question"

 システムがユーザの問いへの質問を出す。
 質問と妥当な返答のリストは get_question( ) メソッドで取得可能で、ユーザは answer( ) メソッドで回答する。
 単に process( ) メソッドを再度呼び出せばよい。

"continue"

 システムはデータを計算したが回答が得られず、終了してない。
 これは将来のバージョンでは削除する。
 単に process( ) メソッドを再度呼び出せばよい。

"finished"

 診断が終了し、ユーザへの回答を見つけることができた。answer( ) メソッドで回答を示すことができる。

"failed"

 診断は終了したがシステムはユーザへの回答を見つけることができなかった。ときおり起こる。

get_question( )

 process( ) メソッドが "question" を返した場合、本メソッドは質問とそれへの妥当な回答のリストを返す。

answer( VALUE )

 ユーザが、妥当な返答の中から選択して get_question( ) メソッドからの質問に回答する。

get_answer( )

 process( ) メソッドが "finished" を返した場合、ユーザは本メソッドで回答を得る。

log( )

 行動のリストを返し、ログをクリアする。

explain( )

 どのように回答に達したかを説明する。説明もログに追加される。

プライベートメソッド

_goal

 ナレッジベースから結果データを取得するプライベートメソッド。

_rule

 ナレッジベースから規則データを取得するプライベートメソッド。

_question

 ナレッジベースから質問データを取得するプライベートメソッド。

_add_to_log

 ログにメッセージを追加するプライベートメソッド。

_explain_this

 属性がどのように設定されているかを説明するプライベートメソッド。


環境

 なし。


診断

Simple->new() takes no arguments

 コンストラクタが初期化される際に引数が不要。このメッセージは引数が与えられたときに出る。

Simple->reset() takes no arguments

 メソッドが呼び出される際に引数が不要。このメッセージは引数が与えられたときに出る。

Simple->load() takes 1 argument

 メソッドが呼び出される際に引数が1つだけ必要。このメッセージは引数が過不足したときに出る。

Simple->load() argument 1 (FILENAME) is undefined

 メソッド呼び出しのときに正しい数の引数が渡されたが、最初の引数 FILENAME が未定義。

Simple->load() XML parse failed

 XML Twig が XML ナレッジベースをパース使用としたらエラーが出た。

Simple->load() unable to use file

 load( ) メソッドに渡されたファイルがファイルでないか可読でない。

Simple->process() takes no arguments

 メソッドが呼び出される際に引数が不要。このメッセージは引数が与えられたときに出る。

Simple->get_question() takes no arguments

 メソッドが呼び出される際に引数が不要。このメッセージは引数が与えられたときに出る。

Simple->answer() takes 1 argument

 メソッドが呼び出される際に引数が1つだけ必要。このメッセージは引数が過不足したときに出る。

Simple->answer() argument 1 (VALUE) is undefined

 メソッド呼び出しのときに正しい数の引数が渡されたが、最初の引数 VALUE が未定義。

Simple->get_answer() takes no arguments

 メソッドが呼び出される際に引数が不要。このメッセージは引数が与えられたときに出る。

Simple->log() takes no arguments

 メソッドが呼び出される際に引数が不要。このメッセージは引数が与えられたときに出る。

Simple->explain() takes no arguments

 メソッドが呼び出される際に引数が不要。このメッセージは引数が与えられたときに出る。


バグ

 なし。


ファイル

 test ディレクトリにある Simple.t ファイル及び bin ディレクトリにある simpleshell を見よ。


参考資料


著者

 Peter Hickman (peterhi@ntlworld.com)


著作権

 Copyright (c) 2003, Peter Hickman. All rights reserved.

 本モジュールはフリーソフトウェアであり、Perl 本体と同等の条件で修正/再配布してもよい。

Toolbox Logo
Updated : 2008/10/08