JPH0556537B2 - - Google Patents
Info
- Publication number
- JPH0556537B2 JPH0556537B2 JP61140407A JP14040786A JPH0556537B2 JP H0556537 B2 JPH0556537 B2 JP H0556537B2 JP 61140407 A JP61140407 A JP 61140407A JP 14040786 A JP14040786 A JP 14040786A JP H0556537 B2 JPH0556537 B2 JP H0556537B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- rule
- class
- procedure
- attribute
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
Description
【発明の詳細な説明】
A.産業上の利用分野
B 従来技術
B−1 エキスパート・システム対問題解決シス
テム B−2 エキスパート・システムに関する人間 B−3 エンド・ユーザー B−4 専門家 B−5 知識エンジニア B−6 推論ルール B−7 推論方法 B−8 確信度 B−9 既存のエキスパート・システム C 発明が解決しようとする問題点 D 問題点を解決するための手段 E 実施例 E−1 システムの概観 E−2 スーパバイザ E−3 ユーザー・インタフエース E−4 手続きノード・インタフエース E−5 ルール・ベース E−6 推論機構 E−7 単純なルール・ベース構造 E−8 確信度の計算 E−9 属性 E−10 ルール・ベース間での情報の受け渡し E−11 グローバル・リスト E−12 クラス・セクシヨン E−13 パラメータ・セクシヨン E−14 手続きセクシヨン E−15 ルール・セクシヨン E−16 記号セクシヨン E−17 結論された目標のリスト E−18 データ構造の概観 E−19 リンク・リスト E−20 クラス・レコード E−21 手続きリスト・レコード E−22 パラメータ・リスト・レコード E−23 属性リスト E−24 ハツシユ表 E−25 メンバーシツプ・リンク・リスト E−26 パラメータ・リンク・リストの構成 E−27 ルール・リスト E−28 システムの動作 F 発明の効果 A 産業上の利用分野 本発明は一般にエキスパート・システム、特に
ルール・ベースが文脈的ユニツトに分割され、そ
の各々が別個に処理でき、そしてその各々がルー
ル・ベースの他のセグメントを呼び出し且つそれ
から呼び出される事の可能な、改良されたエキス
パート・システムに関する。
テム B−2 エキスパート・システムに関する人間 B−3 エンド・ユーザー B−4 専門家 B−5 知識エンジニア B−6 推論ルール B−7 推論方法 B−8 確信度 B−9 既存のエキスパート・システム C 発明が解決しようとする問題点 D 問題点を解決するための手段 E 実施例 E−1 システムの概観 E−2 スーパバイザ E−3 ユーザー・インタフエース E−4 手続きノード・インタフエース E−5 ルール・ベース E−6 推論機構 E−7 単純なルール・ベース構造 E−8 確信度の計算 E−9 属性 E−10 ルール・ベース間での情報の受け渡し E−11 グローバル・リスト E−12 クラス・セクシヨン E−13 パラメータ・セクシヨン E−14 手続きセクシヨン E−15 ルール・セクシヨン E−16 記号セクシヨン E−17 結論された目標のリスト E−18 データ構造の概観 E−19 リンク・リスト E−20 クラス・レコード E−21 手続きリスト・レコード E−22 パラメータ・リスト・レコード E−23 属性リスト E−24 ハツシユ表 E−25 メンバーシツプ・リンク・リスト E−26 パラメータ・リンク・リストの構成 E−27 ルール・リスト E−28 システムの動作 F 発明の効果 A 産業上の利用分野 本発明は一般にエキスパート・システム、特に
ルール・ベースが文脈的ユニツトに分割され、そ
の各々が別個に処理でき、そしてその各々がルー
ル・ベースの他のセグメントを呼び出し且つそれ
から呼び出される事の可能な、改良されたエキス
パート・システムに関する。
B 従来技術
エキスパート・システムは、ある特殊な種類の
問題解決コンピユータ・プログラムである。エキ
スパート・システムの一般的な機能は、高度の訓
練を受け且つ経験のある専門家によつて通常は解
答されるような問題を解決する(又はその解決を
援助する)事である。これは新規な目標ではな
い。事実、多くの成功したコンピユータ・プログ
ラムは、ある特定の問題領域において専門家レベ
ルの性能を提供するという点で顕著な成功を収め
ている。エキスパート・システム型のプログラム
に関して何が相違しているかというと、それはプ
ログラムの結果物ではなく、取られたアプローチ
である。
問題解決コンピユータ・プログラムである。エキ
スパート・システムの一般的な機能は、高度の訓
練を受け且つ経験のある専門家によつて通常は解
答されるような問題を解決する(又はその解決を
援助する)事である。これは新規な目標ではな
い。事実、多くの成功したコンピユータ・プログ
ラムは、ある特定の問題領域において専門家レベ
ルの性能を提供するという点で顕著な成功を収め
ている。エキスパート・システム型のプログラム
に関して何が相違しているかというと、それはプ
ログラムの結果物ではなく、取られたアプローチ
である。
B−1 エキスパート・システム対問題解決シ
ステム エキスパート・システムと従来の問題解決プ
ログラムとの間の主要な相違点は、その問題に
関係した専門知識がコード化される方式であ
る。従来のアプリケーシヨン・プログラムで
は、問題についての専門知識は、プログラムと
データ構造との両者にコード化された。このよ
うな構造は、いくつかの不幸な結果をもたら
す。即ち、 1 コード化された専門知識は、プログラマで
ない、問題の専門家にとつて、明瞭でない。
ステム エキスパート・システムと従来の問題解決プ
ログラムとの間の主要な相違点は、その問題に
関係した専門知識がコード化される方式であ
る。従来のアプリケーシヨン・プログラムで
は、問題についての専門知識は、プログラムと
データ構造との両者にコード化された。このよ
うな構造は、いくつかの不幸な結果をもたら
す。即ち、 1 コード化された専門知識は、プログラマで
ない、問題の専門家にとつて、明瞭でない。
2 プログラムは変更が難しい。
3 プログラムは他の目的のために使えない。
エキスパート・システムのアプローチにおい
ては、問題に関係した専門知識の全てがデータ
構造の形だけでコード化される。プログラム中
には何も存在しない。この構造から直ちに、い
くつかの利点が得られる。
ては、問題に関係した専門知識の全てがデータ
構造の形だけでコード化される。プログラム中
には何も存在しない。この構造から直ちに、い
くつかの利点が得られる。
従来の問題解決プログラムとエキスパート・
システムのアプローチとを対比するのに、例が
役立つであろう。この例は税金についての助言
の問題である。従来のアプローチでは、データ
構造が納税者及び税金の表を記述し、一方例え
ば納税者に対する税金表の選択についての情報
に関係した記述等の専門家の税金コンサルタン
トの知識を表わす記述はプログラム中に存在す
る。税金の専門家にとつて理解し又は修正する
事が困難なのは、税金専門家の知識についての
この表現である。
システムのアプローチとを対比するのに、例が
役立つであろう。この例は税金についての助言
の問題である。従来のアプローチでは、データ
構造が納税者及び税金の表を記述し、一方例え
ば納税者に対する税金表の選択についての情報
に関係した記述等の専門家の税金コンサルタン
トの知識を表わす記述はプログラム中に存在す
る。税金の専門家にとつて理解し又は修正する
事が困難なのは、税金専門家の知識についての
この表現である。
エキスパート・システムのアプローチでは、
納税者及び税金の計算についての情報は同様に
データ構造中に見い出されるが、それらの間の
関係を記述した知識もまた、ここではデータ構
造中にコード化されている。エキスパート・シ
ステムのプログラムは問題領域(税金)から独
立であり、それらが記述する問題領域の性質に
無関係にデータ構造を処理するのに役立つ。例
えば、ユーザーとの対話を通じてデータ値を取
得するプログラム、記述の特別な構成を表現し
処理するプログラム、そして処理シーケンス及
び焦点を制御するアルゴリズム並びに問題領域
内の意味論的関係を表現する宣言を処理するプ
ログラムが存在する。
納税者及び税金の計算についての情報は同様に
データ構造中に見い出されるが、それらの間の
関係を記述した知識もまた、ここではデータ構
造中にコード化されている。エキスパート・シ
ステムのプログラムは問題領域(税金)から独
立であり、それらが記述する問題領域の性質に
無関係にデータ構造を処理するのに役立つ。例
えば、ユーザーとの対話を通じてデータ値を取
得するプログラム、記述の特別な構成を表現し
処理するプログラム、そして処理シーケンス及
び焦点を制御するアルゴリズム並びに問題領域
内の意味論的関係を表現する宣言を処理するプ
ログラムが存在する。
エキスパート・システムのアプローチの他の
利点を説明する。このプログラムは問題領域に
独立なので、新しい問題領域について記述した
知識宣言を新たに収集し、それらを処理するた
めに古いプログラムを用いた場合、もし新しい
問題領域が古い問題領域で使用したデータ構造
で記述可能であれば、(そのときに限つて)、こ
れはうまく働く。従つて、プログラミング・ベ
ースがすでに存在していれば、システムを構築
するのに必要な時間は大幅に減少される。
利点を説明する。このプログラムは問題領域に
独立なので、新しい問題領域について記述した
知識宣言を新たに収集し、それらを処理するた
めに古いプログラムを用いた場合、もし新しい
問題領域が古い問題領域で使用したデータ構造
で記述可能であれば、(そのときに限つて)、こ
れはうまく働く。従つて、プログラミング・ベ
ースがすでに存在していれば、システムを構築
するのに必要な時間は大幅に減少される。
エキスパート・システムは一般的に、2個の
主要な構成部品からできている。即ち、知識ベ
ース又はルール・ベースと呼ばれる。問題に依
存する、データ宣言の組、そして推論エンジン
と呼ばれる、問題から独立(但しデータ構造に
は高度に依存的な)プログラムである。
主要な構成部品からできている。即ち、知識ベ
ース又はルール・ベースと呼ばれる。問題に依
存する、データ宣言の組、そして推論エンジン
と呼ばれる、問題から独立(但しデータ構造に
は高度に依存的な)プログラムである。
B−2 エキスパート・システムに関係する人
間 一般に、エキスパート・システムに関係する
人間が3人存在する。最初の人物はエンド・ユ
ーザーである。これは問題解決の援助のための
システムを使用する人間である。システムの構
築及び保守において、他の2つの役割が存在す
る。1つは知識ベースを作成する問題領域の専
門家であり、もう1つは知識の表現を決定する
時に専門家を援助し且つ有用な問題解決能力を
得るために必要な推論技術を定義する知識エン
ジニアである。
間 一般に、エキスパート・システムに関係する
人間が3人存在する。最初の人物はエンド・ユ
ーザーである。これは問題解決の援助のための
システムを使用する人間である。システムの構
築及び保守において、他の2つの役割が存在す
る。1つは知識ベースを作成する問題領域の専
門家であり、もう1つは知識の表現を決定する
時に専門家を援助し且つ有用な問題解決能力を
得るために必要な推論技術を定義する知識エン
ジニアである。
B−3 エンド・ユーザー
エンド・ユーザーは、通常、対話式にエキス
パート・システムを使用する。下記にその1例
を示す。
パート・システムを使用する。下記にその1例
を示す。
Q あなたは自分がどこのレストランに行き
たいか知つていますか? A いいえ Q あなたが特に好きな食べ物がありますか? A わかりません Q あなたはスパイスのきいた食べ物が好き
ですか? A いいえ Q あなたは普通、食事と一緒にワインを飲み
ますか? A はい Q あなたがワインを飲む時、それはフラン
スのワインですか? A 何故そのような事を聞くのですか この対話からわかるように、システムは一組
の質問を通じてユーザーを先導する。その目的
は、推薦すべき適当なレストランの組を決定す
る事である。この対話は、ユーザーが既にレス
トランの選択を知つているかどうかをシステム
が尋ねる事から開始する(エキスパート・シス
テムの共通の特徴)。これはエキスパート・シ
ステムの特性を直接的に示している。ユーザー
は質問に応答しないという選択をしてもよい。
エキスパート・システムにおいては、対話は事
前に計画されていず、何の固定的な制御構造も
存在しない。対話は、現在の情報と知識ベース
の内容とから合成される。従つて、特定の質問
に答を与える事ができなくても、コンサルテー
シヨンは停止しない。
たいか知つていますか? A いいえ Q あなたが特に好きな食べ物がありますか? A わかりません Q あなたはスパイスのきいた食べ物が好き
ですか? A いいえ Q あなたは普通、食事と一緒にワインを飲み
ますか? A はい Q あなたがワインを飲む時、それはフラン
スのワインですか? A 何故そのような事を聞くのですか この対話からわかるように、システムは一組
の質問を通じてユーザーを先導する。その目的
は、推薦すべき適当なレストランの組を決定す
る事である。この対話は、ユーザーが既にレス
トランの選択を知つているかどうかをシステム
が尋ねる事から開始する(エキスパート・シス
テムの共通の特徴)。これはエキスパート・シ
ステムの特性を直接的に示している。ユーザー
は質問に応答しないという選択をしてもよい。
エキスパート・システムにおいては、対話は事
前に計画されていず、何の固定的な制御構造も
存在しない。対話は、現在の情報と知識ベース
の内容とから合成される。従つて、特定の質問
に答を与える事ができなくても、コンサルテー
シヨンは停止しない。
エキスパート・システムと従来のシステムと
の間のもう1つの主要な相違点は、上記の例で
行なわれたような質問にユーザーが質問で答え
た時にシステムによつて与えられる下記の答に
よつて示されている。
の間のもう1つの主要な相違点は、上記の例で
行なわれたような質問にユーザーが質問で答え
た時にシステムによつて与えられる下記の答に
よつて示されている。
A 私は提案すべきレストランの種類を決定
しようと試みています。今の所、中華料理は
適当な選択ではありません。フランス料理は
適当な選択である可能性があります。私は、
もし食事をする事がワインを飲むならば、そ
して好きなワインがフランスのものであれ
ば、レストランの選択はフランス料理のレス
トランを含むべきであるという強い証拠があ
る事を知つています。
しようと試みています。今の所、中華料理は
適当な選択ではありません。フランス料理は
適当な選択である可能性があります。私は、
もし食事をする事がワインを飲むならば、そ
して好きなワインがフランスのものであれ
ば、レストランの選択はフランス料理のレス
トランを含むべきであるという強い証拠があ
る事を知つています。
従来のシステムでは、(「何故」とか「どうし
て」とかいう質問に答える)一般的な説明シス
テムを実現する事は非常に困難である。質問
「何故」に対するエキスパート・システムの応
答は、基礎を成す知識構造の開示である。それ
は、もしそれが真であれば結論を出す事を可能
にする先行条件の組;及びルールである。ルー
ルは値を参照し、それらを種々の拘束条件に対
してテストし、又はそれらに対する拘束条件を
出す。これは、事実上、知識構造の重要な部分
である。ある組織化エンテイテイーに関係付け
られる事のできる数値が存在する。例えば、夕
食は、食事をする人がワインを飲むかどうか及
びワインの種類等の種々の属性(値)を有する
エンテイテイーである。また、ある属性の現在
知られている値を、他の属性について行なう事
のできる主張に関係付けるルールも存在する。
対話自体を指令するのは、それらのルールの順
序立つた処理である。
て」とかいう質問に答える)一般的な説明シス
テムを実現する事は非常に困難である。質問
「何故」に対するエキスパート・システムの応
答は、基礎を成す知識構造の開示である。それ
は、もしそれが真であれば結論を出す事を可能
にする先行条件の組;及びルールである。ルー
ルは値を参照し、それらを種々の拘束条件に対
してテストし、又はそれらに対する拘束条件を
出す。これは、事実上、知識構造の重要な部分
である。ある組織化エンテイテイーに関係付け
られる事のできる数値が存在する。例えば、夕
食は、食事をする人がワインを飲むかどうか及
びワインの種類等の種々の属性(値)を有する
エンテイテイーである。また、ある属性の現在
知られている値を、他の属性について行なう事
のできる主張に関係付けるルールも存在する。
対話自体を指令するのは、それらのルールの順
序立つた処理である。
B−4 専門家(エキスパート)
もし先程の対話が1組のレストランの選択で
終了し、それが専門家の推薦と一致しなかつた
とすると、その分野の専門家と仮説的なシステ
ムとの対話を説明できる。この時、専門家は説
明機構を利用して、システムによつて行なわれ
た理由付けを明らかにし、誤つた点を発見す
る。この過程は、部分的には、基礎をなしてい
る知識の宣言(ルール及び値)を理解する専門
家の能力によつて可能になつている。この例で
は、専門家は人が食事をする時にはいくつかの
異なつた場合が存在する事に気付いているがシ
ステムはそうでないという理由で、専門家の選
択がシステムの選択と違つたと仮定する。特
に、専門家は下記の3つの違つた場合を考慮し
ているものとする。
終了し、それが専門家の推薦と一致しなかつた
とすると、その分野の専門家と仮説的なシステ
ムとの対話を説明できる。この時、専門家は説
明機構を利用して、システムによつて行なわれ
た理由付けを明らかにし、誤つた点を発見す
る。この過程は、部分的には、基礎をなしてい
る知識の宣言(ルール及び値)を理解する専門
家の能力によつて可能になつている。この例で
は、専門家は人が食事をする時にはいくつかの
異なつた場合が存在する事に気付いているがシ
ステムはそうでないという理由で、専門家の選
択がシステムの選択と違つたと仮定する。特
に、専門家は下記の3つの違つた場合を考慮し
ているものとする。
1 業務
2 社交
3 私的交際
さらに、専門家はこの情報を利用して、提案
するレストランの選択を改善するのに役立たせ
る。1つのルールは次のようなものであろう。
するレストランの選択を改善するのに役立たせ
る。1つのルールは次のようなものであろう。
もしレストランの選択がフランス料理店を含
み且つ場合が私的交際であれば、レストランの
選択は確定的に「Jacques in le Box」であ
る。
み且つ場合が私的交際であれば、レストランの
選択は確定的に「Jacques in le Box」であ
る。
B−5 知識エンジニア
良い知識表現に関して行なう事のできるいく
つかの観察事項が存在する。
つかの観察事項が存在する。
1 良い知識表現は、数値的知識と共に記号
的知識をおらえなければならない。
的知識をおらえなければならない。
2 良い知識表現は、プログラミングに習熟し
ていない、その分野の専門家にとつても明ら
か(透明)でなければならない。
ていない、その分野の専門家にとつても明ら
か(透明)でなければならない。
3 良い知識表現は、問題分野の完全な記述
を可能にしなければならない。
を可能にしなければならない。
知識エンジニアは、専門家の知識の記述のため
に選択される表現及びその知識を処理するために
使われる推論エンジンに関与する。良い推論技術
に適ている事が知られているいくつかの性質が存
在する。
に選択される表現及びその知識を処理するために
使われる推論エンジンに関与する。良い推論技術
に適ている事が知られているいくつかの性質が存
在する。
1 良い推論技術は問題分野に独立である。
新しい問題分野におけるプログラムの再利
用可能性、知識の透明性、及び説明の利点を
実現するために、推論エンジンは分野に特有
の専門知識を含んではならない。
用可能性、知識の透明性、及び説明の利点を
実現するために、推論エンジンは分野に特有
の専門知識を含んではならない。
2 推論技術は特定のタスク、例えば、ハー
ドウエア構成の診断に特有のものでも良い。
他の技術は、特定の処理技術に対してのみ省
略してもよい。
ドウエア構成の診断に特有のものでも良い。
他の技術は、特定の処理技術に対してのみ省
略してもよい。
3 推論技術は常に、知識構造に特有のもの
である。
である。
4 ルール処理技術の成功した例は下記のも
のを含む: (a) 前向き推論 (b) 後向き推論 B−6 推論ルール 「推論ルール」の概念を理解する事は、エキ
スパート・システムの理解に重要である。推論
ルールとは、if節とthen節との2つの部分を有
する文である。推論ルールの1例は次のもので
ある。
のを含む: (a) 前向き推論 (b) 後向き推論 B−6 推論ルール 「推論ルール」の概念を理解する事は、エキ
スパート・システムの理解に重要である。推論
ルールとは、if節とthen節との2つの部分を有
する文である。推論ルールの1例は次のもので
ある。
if レストランの選択がフランス料理店を含み
且つその場合が私的交際である、 then レストランの選択は確定的に「Paul
Bocuse」である。
且つその場合が私的交際である、 then レストランの選択は確定的に「Paul
Bocuse」である。
エキスパート・システムのルール・ベースは
多くのそのような推論ルールから成立してい
る。それらは別々のルールとして入力され、結
論を引き出すためにそれらを一緒にして用いる
のは推論エンジンである。各々のルールは1単
位なので、ルールは他のルールに影響を与える
事なく削除又は追加することができる。(但し
それは、どの結論が得られるかに影響するであ
ろう。)従来のプログラミングを上回る推論ル
ールの1つの利点は、推論ルールが人間の推論
過程によく似た推論過程を用いる事である。
多くのそのような推論ルールから成立してい
る。それらは別々のルールとして入力され、結
論を引き出すためにそれらを一緒にして用いる
のは推論エンジンである。各々のルールは1単
位なので、ルールは他のルールに影響を与える
事なく削除又は追加することができる。(但し
それは、どの結論が得られるかに影響するであ
ろう。)従来のプログラミングを上回る推論ル
ールの1つの利点は、推論ルールが人間の推論
過程によく似た推論過程を用いる事である。
従つて、結論が導き出された時、いかにして
この結論が得られたかを理解する事が可能であ
る。さらに、エキスパート・システムは専門家
に似た形式で知識を使用するので、この情報を
専門家から得るのがより容易である。
この結論が得られたかを理解する事が可能であ
る。さらに、エキスパート・システムは専門家
に似た形式で知識を使用するので、この情報を
専門家から得るのがより容易である。
B−7 推論方法
推論ルールを用いる時、2つの主要な推論方
法が存在する。後向き推論と前向き推論であ
る。
法が存在する。後向き推論と前向き推論であ
る。
前向き推論は、利用可能なデータから出発
し、所望の目標に到達するまで、推論ルールを
用いてより多くのデータを導き出す。前向き推
論を用いた推論エンジンは、〔if節が真である
事が知られている〕ルールを見い出すまで、推
論ルールを探索する。次に推論エンジンはthen
節を結論とし、この情報をデータに付け加え
る。そして目標に到達するまで、この処理を続
行する。利用可能なデータが、どの推論ルール
が使われるかを決定するので、この方法は「デ
ータ駆動」とも呼ばれる。
し、所望の目標に到達するまで、推論ルールを
用いてより多くのデータを導き出す。前向き推
論を用いた推論エンジンは、〔if節が真である
事が知られている〕ルールを見い出すまで、推
論ルールを探索する。次に推論エンジンはthen
節を結論とし、この情報をデータに付け加え
る。そして目標に到達するまで、この処理を続
行する。利用可能なデータが、どの推論ルール
が使われるかを決定するので、この方法は「デ
ータ駆動」とも呼ばれる。
後向き推論は、目標のリストから出発し、そ
れらの目標のどれかを結論付ける事を可能にす
るデータが存在するかどうかを見るために後向
きに動作する。後向き推論を用いた推論エンジ
ンは、所望の目標と一致するthen節を有するル
ールを見つけるまで、推論ルールを探索する。
もしその推論ルールのif節が真である事が知ら
れていなければ、それは目標のリストに付け加
えられる。例えば、ルール・ベースは下記の2
つのルールを含んであるものと仮定する。
れらの目標のどれかを結論付ける事を可能にす
るデータが存在するかどうかを見るために後向
きに動作する。後向き推論を用いた推論エンジ
ンは、所望の目標と一致するthen節を有するル
ールを見つけるまで、推論ルールを探索する。
もしその推論ルールのif節が真である事が知ら
れていなければ、それは目標のリストに付け加
えられる。例えば、ルール・ベースは下記の2
つのルールを含んであるものと仮定する。
(1) Ifフリツツが縁であるthenフリツツは蛙で
ある。
ある。
(2) Ifフリツツが蛙であるthenフリツツは跳
ぶ。
ぶ。
目標は「フリツツは跳ぶ」事を結論付ける事
であると仮定する。ルール・ベースが探索さ
れ、ルール2が、その結論が目標に一致するの
で、選択される。「フリツツが蛙である」事は
知られていないので、このステートメントが目
標リストに付け加えられる。再びルール・ベー
スが探索され、今度はルール1が選択される。
というのは、そのthen節が、リストにちようど
付け加えられた新しい目標に一致するからであ
る。この時、if節は真である事が知られている
ので、目標の「フリツツは跳ぶ」事が結論付け
られる。どのルールが選択されそして使用され
るかを目標のリストが決定するので、この方法
は「目標駆動」とも呼ばれる。
であると仮定する。ルール・ベースが探索さ
れ、ルール2が、その結論が目標に一致するの
で、選択される。「フリツツが蛙である」事は
知られていないので、このステートメントが目
標リストに付け加えられる。再びルール・ベー
スが探索され、今度はルール1が選択される。
というのは、そのthen節が、リストにちようど
付け加えられた新しい目標に一致するからであ
る。この時、if節は真である事が知られている
ので、目標の「フリツツは跳ぶ」事が結論付け
られる。どのルールが選択されそして使用され
るかを目標のリストが決定するので、この方法
は「目標駆動」とも呼ばれる。
B−8 確信度
従来のプログラミングの方法を上回るエキス
パート・システムの他の利点は、確信度の使用
が可能な事である。人が推論する時、彼は常に
100%の確信度を持つて物事を結論付ける事は
しない。彼はおそらく、「もしフリツツが線な
らば、それは多分、蛙だろう」(結局、それは
カメレオンかもしれない)とか、「もしフリツ
ツが蛙ならば、それは多分、跳ぶだろう」(フ
リツツは足を怪我しているかもしれない)と言
うであろう。この型の推論は、確信度と呼ばれ
る数値を用いる事によつて模倣できる。例え
ば、フリツツが線である事が知られているなら
ば、0 85の確信度で彼は蛙であると結論付け
られ、又彼は蛙である事が知られていれば、0
95の確信度で彼が跳ぶと結論付けられるであ
ろう。それらの数値は、性質が確率に似ている
が、同じものではない。それらは、確率を計算
する時に使われる数学的な定義に従うよりはむ
しろ、推論過程いおいて人間が使う確信度を模
倣しようとしている。
パート・システムの他の利点は、確信度の使用
が可能な事である。人が推論する時、彼は常に
100%の確信度を持つて物事を結論付ける事は
しない。彼はおそらく、「もしフリツツが線な
らば、それは多分、蛙だろう」(結局、それは
カメレオンかもしれない)とか、「もしフリツ
ツが蛙ならば、それは多分、跳ぶだろう」(フ
リツツは足を怪我しているかもしれない)と言
うであろう。この型の推論は、確信度と呼ばれ
る数値を用いる事によつて模倣できる。例え
ば、フリツツが線である事が知られているなら
ば、0 85の確信度で彼は蛙であると結論付け
られ、又彼は蛙である事が知られていれば、0
95の確信度で彼が跳ぶと結論付けられるであ
ろう。それらの数値は、性質が確率に似ている
が、同じものではない。それらは、確率を計算
する時に使われる数学的な定義に従うよりはむ
しろ、推論過程いおいて人間が使う確信度を模
倣しようとしている。
エキスパート・システム及びそのアーキテク
チヤに関する一般的な点について下記に示す。
チヤに関する一般的な点について下記に示す。
1 結論には至るまでに取られるステツプの
系列は、各々の新しいケース毎に動的に合成
される。それは、システムが作成される時に
明示的にプログラムされるのではない。
系列は、各々の新しいケース毎に動的に合成
される。それは、システムが作成される時に
明示的にプログラムされるのではない。
2 エキスパート・システムは、任意の問題
パラメータに関して複数の値を処理できる。
従つて2系統以上の推論過程を追う事がで
き、そして不完全な(完全には決定されてい
ない)推論の結果が提供できる。
パラメータに関して複数の値を処理できる。
従つて2系統以上の推論過程を追う事がで
き、そして不完全な(完全には決定されてい
ない)推論の結果が提供できる。
3 問題解決は、特定の技術ではなく特定の
知識を適用する事によつて行なわれる。これ
はエキスパート・システム技術における最も
重要な考えである。これは人間の専門家は異
なつた知識を持つてはいるが、彼らの知識を
他とは違つたふうに処理しないという信念を
反映している。このフイロソフイーに従え
ば、エキスパート・システムが所望の結果を
出さない事が判明した時には、手続きのプロ
グラムのやり直しではなく知識ベースの拡張
の作業が始まる事になる。
知識を適用する事によつて行なわれる。これ
はエキスパート・システム技術における最も
重要な考えである。これは人間の専門家は異
なつた知識を持つてはいるが、彼らの知識を
他とは違つたふうに処理しないという信念を
反映している。このフイロソフイーに従え
ば、エキスパート・システムが所望の結果を
出さない事が判明した時には、手続きのプロ
グラムのやり直しではなく知識ベースの拡張
の作業が始まる事になる。
B−9 既存のエキスパート・システム
従来技術は、人間の専門家が問題を解析し結
論に到達する時に行なう推論過程を「ルール・
ベース」及び「推論エンジン」が協動してシミ
ユレートする種々のエキスパート・システムを
開示している。これらの従来技術のシステムに
おいて、人間の推論過程をシミユレートするた
めに、知識ベース中に大規模な知識が記憶され
なければならない。一般に、従来のエキスパー
ト・システムの知識ベースは、比較的多数の
「if then」型のステートメントから成つてい
て、それらは人間の推論過程において関与して
いる心的過程の系列に似た(少なくとも理論上
は)方式で相互に関係付けられていた。
論に到達する時に行なう推論過程を「ルール・
ベース」及び「推論エンジン」が協動してシミ
ユレートする種々のエキスパート・システムを
開示している。これらの従来技術のシステムに
おいて、人間の推論過程をシミユレートするた
めに、知識ベース中に大規模な知識が記憶され
なければならない。一般に、従来のエキスパー
ト・システムの知識ベースは、比較的多数の
「if then」型のステートメントから成つてい
て、それらは人間の推論過程において関与して
いる心的過程の系列に似た(少なくとも理論上
は)方式で相互に関係付けられていた。
大きな記憶装置容量の必要性及びルール・ベ
ースを記憶するための関連プログラムの必要性
により、多くのエキスパート・システムは、過
去において、大型の情報処理システム上でしか
動作していなかつた。最近、パーソナル・コン
ピユータの記憶容量は、ある型の単純なエキス
パート・システムをパーソナル・コンピーユタ
上で動作させる事を考慮し得るようになる点に
まで増加してきた。多くのそのようなプログラ
ム及びその応用が、1985年4月16日発行のPC
Magazine誌、第108頁に説明されている。ま
た「Artificial Intelligence」と題する別の記
事が、1984年1月発行のPC World Magazine
誌、第2巻、第1号の第34頁に掲載されてい
る。
ースを記憶するための関連プログラムの必要性
により、多くのエキスパート・システムは、過
去において、大型の情報処理システム上でしか
動作していなかつた。最近、パーソナル・コン
ピユータの記憶容量は、ある型の単純なエキス
パート・システムをパーソナル・コンピーユタ
上で動作させる事を考慮し得るようになる点に
まで増加してきた。多くのそのようなプログラ
ム及びその応用が、1985年4月16日発行のPC
Magazine誌、第108頁に説明されている。ま
た「Artificial Intelligence」と題する別の記
事が、1984年1月発行のPC World Magazine
誌、第2巻、第1号の第34頁に掲載されてい
る。
本発明によつて代表される型のエキスパー
ト・シテムについて説明した刊行物には例えば
下記のものがある。
ト・シテムについて説明した刊行物には例えば
下記のものがある。
1 Paul Nielsen著。これはイリノイ大学
KBPAプロジエクトから入手可能。
KBPAプロジエクトから入手可能。
2 Gordon Robert K 著、「A Rule
Editor for an Expert System
Environment:Towards Automating
Knowledge Acquisition修士論文、イリノ
イ大学、1984年。
Editor for an Expert System
Environment:Towards Automating
Knowledge Acquisition修士論文、イリノ
イ大学、1984年。
3 Harndi Mehdi T 著、「A General
Purpose System for Infevencing」、
Proceedings of the IBM University
Study Confesence Raleigb NC 1983年10
月。
Purpose System for Infevencing」、
Proceedings of the IBM University
Study Confesence Raleigb NC 1983年10
月。
4 Laursen Andrew L 著、「GPSI:An
Expert System to Aid in Program
Debugging」、修士論文、イリノイ大学、
1981年。
Expert System to Aid in Program
Debugging」、修士論文、イリノイ大学、
1981年。
C 発明が解決しようとする問題点
エキスパート・システムのあるアプリケーシヨ
ンにおいては、そのアプリケーシヨンのために人
間の推論の過程をシミユレートするのに必要な記
憶情報の量及びアプリケーシヨンの性質が、コン
ピユータの活性メモリに記憶させるには大きすぎ
るようになつている。エキスパート・システムの
他のアプリケーシヨンでは、推論過程で常に全て
の情報が必要とされるわけではない。この後者の
型のアプリケーシヨンの1例は、多くの別個の構
成要素(その一部はオプシヨン)から成るデータ
処理システムを診断するためのエキスパート・シ
ステムである。この型のエキスパート・システム
が最小のシステム構成のデータ処理システムを診
断するために単一の一体化されたルール・ベース
を用いる時、ルール・ベースの多くは不必要なも
のである。というのはシステムのオプシヨン的な
ユニツトである多くの構成要素はシステムに存在
していないからである。にもかかわらず、従来技
術のエキスパート・システムはルール・ベース全
体が記憶される事を必要としていた。これは全て
のルールが、ルール・ベースの構造によつて事実
上一体的に結合されていたからである。
ンにおいては、そのアプリケーシヨンのために人
間の推論の過程をシミユレートするのに必要な記
憶情報の量及びアプリケーシヨンの性質が、コン
ピユータの活性メモリに記憶させるには大きすぎ
るようになつている。エキスパート・システムの
他のアプリケーシヨンでは、推論過程で常に全て
の情報が必要とされるわけではない。この後者の
型のアプリケーシヨンの1例は、多くの別個の構
成要素(その一部はオプシヨン)から成るデータ
処理システムを診断するためのエキスパート・シ
ステムである。この型のエキスパート・システム
が最小のシステム構成のデータ処理システムを診
断するために単一の一体化されたルール・ベース
を用いる時、ルール・ベースの多くは不必要なも
のである。というのはシステムのオプシヨン的な
ユニツトである多くの構成要素はシステムに存在
していないからである。にもかかわらず、従来技
術のエキスパート・システムはルール・ベース全
体が記憶される事を必要としていた。これは全て
のルールが、ルール・ベースの構造によつて事実
上一体的に結合されていたからである。
D 問題点を解決するための手段
本発明はルール・ベースがセグメント、好まし
くは文脈的セグメントに分割されたエキスパート
システムに係るものである。ルール・ベースがセ
グメント化されると、特定のアプリケーシヨンに
必要のないデータ又は知識を含むルール・ベース
の部分を消去する事が可能になる。ルール・ベー
スのセグメント化を行なえば、ルール・ベースの
各セグメントが必要に応じてシステムにページ・
イン及びページ・アウトできるので、従来技術の
構成で可能であつたよりも小さなメモリ容量を有
するシステムでエキスパート・システムを動作さ
せる事が可能になる。
くは文脈的セグメントに分割されたエキスパート
システムに係るものである。ルール・ベースがセ
グメント化されると、特定のアプリケーシヨンに
必要のないデータ又は知識を含むルール・ベース
の部分を消去する事が可能になる。ルール・ベー
スのセグメント化を行なえば、ルール・ベースの
各セグメントが必要に応じてシステムにページ・
イン及びページ・アウトできるので、従来技術の
構成で可能であつたよりも小さなメモリ容量を有
するシステムでエキスパート・システムを動作さ
せる事が可能になる。
ルール・ベースを文脈的セグメントに分割する
と、プログラムの実行中にセグメントがメモリへ
ページ・イン及びページ・アウトされる時に種々
のセグメント間の関係をエキスパート・システム
が管理する必要が生じる。システムは第1のルー
ル・ベースのセグメントの処理中に任意の時点で
第2のルール・ベースのセグメントが呼び出され
実行される事を許すので、処理中の後の時刻に、
システムが第1のセグメントに戻つた時、処理さ
れていた最後の地点又はルールからシステムが処
理を続行できるため、その時点までに蓄積された
データを記憶する機構が必要である。また、ルー
ル・ベースの第2のセグメントがシステムにペー
ジ・インされた後に、その時点までにシステムに
よつて収集されていたデータを第2のセグメント
に渡すことができ、且つ第2のセグメントの処理
中に収集されたデータを、システムが第1のセグ
メントの処理を終えるために戻つた時に、第1の
セグメントに渡すことのできる機構が設けられな
ければならない。
と、プログラムの実行中にセグメントがメモリへ
ページ・イン及びページ・アウトされる時に種々
のセグメント間の関係をエキスパート・システム
が管理する必要が生じる。システムは第1のルー
ル・ベースのセグメントの処理中に任意の時点で
第2のルール・ベースのセグメントが呼び出され
実行される事を許すので、処理中の後の時刻に、
システムが第1のセグメントに戻つた時、処理さ
れていた最後の地点又はルールからシステムが処
理を続行できるため、その時点までに蓄積された
データを記憶する機構が必要である。また、ルー
ル・ベースの第2のセグメントがシステムにペー
ジ・インされた後に、その時点までにシステムに
よつて収集されていたデータを第2のセグメント
に渡すことができ、且つ第2のセグメントの処理
中に収集されたデータを、システムが第1のセグ
メントの処理を終えるために戻つた時に、第1の
セグメントに渡すことのできる機構が設けられな
ければならない。
複雑なエキスパート・システムを、メモリ容量
が100Kバイト程度の小さなメモリ有するシステ
ムで実行させる事ができるのに加えて、ルール・
ベースを文脈的セグメント又はユニツトに分割す
る事は、ルール・ベースの作成及びデバツグ作業
がより容易になり、且つより理解しやすいルー
ル・ベースが得られるという付加的な利点を有す
る。ルール・ベースはシステムによつて呼び出さ
れる事が可能なので、類似してはいるが異なつた
項目についての目標を結論付けるために同じルー
ル・ベースを何回も重複させる必要はない。
が100Kバイト程度の小さなメモリ有するシステ
ムで実行させる事ができるのに加えて、ルール・
ベースを文脈的セグメント又はユニツトに分割す
る事は、ルール・ベースの作成及びデバツグ作業
がより容易になり、且つより理解しやすいルー
ル・ベースが得られるという付加的な利点を有す
る。ルール・ベースはシステムによつて呼び出さ
れる事が可能なので、類似してはいるが異なつた
項目についての目標を結論付けるために同じルー
ル・ベースを何回も重複させる必要はない。
E 実施例
これから説明する本発明の良好な実施例は、パ
ーソナル・コンピユータ等のデータ処理システム
のハードウエアの故障を診断する事を主な目的と
して作成されたセグメント化ルール・ベースを用
いている。従つて、実施例の全体的な目的は、問
題の原因となつている可能性が最も高い「現場で
取り換え可能なユニツト(FRU)」を識別する事
である。診断のアプリケーシヨンに対して、本発
明に従つてセグメント化されたルール・ベースを
用いたエキスパート・システムのアプリケーシヨ
ンは、この型のエキスパート・システムのアプリ
ケーシヨンの1例でしかない。セグメント化され
たルール・ベースを使用する別のアプリケーシヨ
ンを、下記の説明に基づいて容易に開発できるで
あろう。
ーソナル・コンピユータ等のデータ処理システム
のハードウエアの故障を診断する事を主な目的と
して作成されたセグメント化ルール・ベースを用
いている。従つて、実施例の全体的な目的は、問
題の原因となつている可能性が最も高い「現場で
取り換え可能なユニツト(FRU)」を識別する事
である。診断のアプリケーシヨンに対して、本発
明に従つてセグメント化されたルール・ベースを
用いたエキスパート・システムのアプリケーシヨ
ンは、この型のエキスパート・システムのアプリ
ケーシヨンの1例でしかない。セグメント化され
たルール・ベースを使用する別のアプリケーシヨ
ンを、下記の説明に基づいて容易に開発できるで
あろう。
E−1 システムの概観
第1図に図示されているエキスパート・シス
テムの主な構成要素は、推論エンジンIE10
及びルール・ベース・フアイル11である。推
論エンジン10は、スーパバイザ・プログラム
12、推論機構13、及び手続き呼出し調整機
構14を含んでいる。手続A〜Nは、手続きノ
ード・インタフエース15を経由して調整機構
14をにインタフエースされる。操作者は、ユ
ーザー・インタフエース・ブロツク16を経由
してスーパバイザとインタフエースする。コン
パイルされたルール・ベースによつて表現され
た知識はルール作成者からのルール入力に基き
ルール・コンパイラ17によつて生成される。
テムの主な構成要素は、推論エンジンIE10
及びルール・ベース・フアイル11である。推
論エンジン10は、スーパバイザ・プログラム
12、推論機構13、及び手続き呼出し調整機
構14を含んでいる。手続A〜Nは、手続きノ
ード・インタフエース15を経由して調整機構
14をにインタフエースされる。操作者は、ユ
ーザー・インタフエース・ブロツク16を経由
してスーパバイザとインタフエースする。コン
パイルされたルール・ベースによつて表現され
た知識はルール作成者からのルール入力に基き
ルール・コンパイラ17によつて生成される。
E−2 スーパバイザ
スーパバイザ・プログラム12はルール・ベ
ース呼び出しの流れを制御する。そのジヨブ
は、休止が起きた時に現在のルール・ベースを
記憶する事、呼び出されたルール・ベースを読
み込む事、1つのルール・ベースが使用し尽さ
れた時に次にどのルール・ベースをロードすべ
きかを知る事、及び全てのルール・ベースが使
用し尽された時を認識する事を含む。適当なル
ール・ベースが読み込まれた時、スーパーバイ
ザ12は推論機構13を呼び出してルール・ベ
ースを走査する。ルール・ベース呼び出しによ
り又はルール・ベースが使い尽された事によ
り、走査が休止すると、制御がスーパバイザ1
2に戻される。ここでスーパバイザは取るべき
適当な動作を決定する。ルールベースの読み込
み及び情報を取得すべき場所の決定もスーパバ
イザによつて処理される。
ース呼び出しの流れを制御する。そのジヨブ
は、休止が起きた時に現在のルール・ベースを
記憶する事、呼び出されたルール・ベースを読
み込む事、1つのルール・ベースが使用し尽さ
れた時に次にどのルール・ベースをロードすべ
きかを知る事、及び全てのルール・ベースが使
用し尽された時を認識する事を含む。適当なル
ール・ベースが読み込まれた時、スーパーバイ
ザ12は推論機構13を呼び出してルール・ベ
ースを走査する。ルール・ベース呼び出しによ
り又はルール・ベースが使い尽された事によ
り、走査が休止すると、制御がスーパバイザ1
2に戻される。ここでスーパバイザは取るべき
適当な動作を決定する。ルールベースの読み込
み及び情報を取得すべき場所の決定もスーパバ
イザによつて処理される。
E−3 ユーザー・インタフエース
ユーザー・インタフエース16の機構は、ユ
ーザーに質問及び情報を与え、且つユーザーの
応答を推論エンジン10に伝える事である。
ーザーに質問及び情報を与え、且つユーザーの
応答を推論エンジン10に伝える事である。
エキスパート・システムは、一般に、質問応
答セツシヨン、結論の提示、ヘルプ機能、及び
エラーの表示等を通じてユーザと頻繁な対話を
必要とする。この対話を提供するために使用さ
れる方法は、使用されるシステムの型によつて
変化し得る。ユーザー・インタフエースは一般
に、ホスト計算機の構成で使われているハード
ウエア及びオペレーテイング・システムに依存
する。
答セツシヨン、結論の提示、ヘルプ機能、及び
エラーの表示等を通じてユーザと頻繁な対話を
必要とする。この対話を提供するために使用さ
れる方法は、使用されるシステムの型によつて
変化し得る。ユーザー・インタフエースは一般
に、ホスト計算機の構成で使われているハード
ウエア及びオペレーテイング・システムに依存
する。
全ての、計算機及びアプリケーシヨンを依存
するコードを、異なつた計算機構成又はアプリ
ケーシヨンに関して置き換える事ができる別個
のモジユールの形に分離するために、本発明の
実施例では、従来の技術のエキスパート・シス
テムでは推論エンジン10の中に埋め込まれて
いた入出力ルーチンを全て抽出し、汎用のユー
ザー・インタフエース・モジユール16の中に
組み込んだ。ユーザー・インタフエース16
は、以前に推論エンジン内で処理されていた全
ての入出力機能を実行する能力を有する。それ
らの機能は下記の通りである。
するコードを、異なつた計算機構成又はアプリ
ケーシヨンに関して置き換える事ができる別個
のモジユールの形に分離するために、本発明の
実施例では、従来の技術のエキスパート・シス
テムでは推論エンジン10の中に埋め込まれて
いた入出力ルーチンを全て抽出し、汎用のユー
ザー・インタフエース・モジユール16の中に
組み込んだ。ユーザー・インタフエース16
は、以前に推論エンジン内で処理されていた全
ての入出力機能を実行する能力を有する。それ
らの機能は下記の通りである。
1 キーボードを調べて、操作者が入力したキ
ー・ストロークを返す。
ー・ストロークを返す。
2 エラー・メツセージを表示する。
3 表示スクリーンをクリアする。
4 テキストを提示し、特定の範囲内に入り且
つ特定のデータ型を有しなければならない。
キーボード入力を要求する。
つ特定のデータ型を有しなければならない。
キーボード入力を要求する。
5 テキストを提示し、1組以上の特定の文字
列でなければならないキーボード入力を要求
する。
列でなければならないキーボード入力を要求
する。
6 テキストを提示し、特定のデータ型の任意
の値で良い入力を要求する。
の値で良い入力を要求する。
7 テキストを提示し、即座に推論エンジンに
戻る。(ユーザーからの応答は必要ない。) 8 テキストを提示し、操作者がキーボード上
の「入力」キーを押すまで待機する。
戻る。(ユーザーからの応答は必要ない。) 8 テキストを提示し、操作者がキーボード上
の「入力」キーを押すまで待機する。
ユーザーにより入力されたあらゆる値はユー
ザ・インタフエース16によつて受け取られ解
釈されなければならない。ある種の応答は、1
組の可能な正当な答だけに限定され、他のもの
は不可である。ユーザー・インタフエース16
は、全ての応答を検査し、それらが正しいデー
タ型を持つ事を保証する。正当な1組の答しか
許されない応答は、それらの正当な答の組と比
較される。ユーザーが正当でない答を入力する
と、ユーザー・インタフエース16はユーザー
に彼の答が正当でない旨を告げ、それを訂正す
るように促す。質問に応答して、ユーザーはエ
キスパート・システムからのヘルプを要求して
もよい。これは説明、コンサルテーシヨンのレ
ビユー、又は処理されたルール木のトレースの
形で与えられる。さらに、ユーザーは処理を全
面的に中断するように要求してもよい。この場
合、ユーザー・インタフエース16はこれを認
識してその事実を推論エンジンに伝達しなけれ
ばならない。ユーザー・インタフエース16と
推論エンジン10との間の通信は、両者の間で
伝達されるユーザ・インタフエース制御ブロツ
ク(UICB)を介して行なわれる。
ザ・インタフエース16によつて受け取られ解
釈されなければならない。ある種の応答は、1
組の可能な正当な答だけに限定され、他のもの
は不可である。ユーザー・インタフエース16
は、全ての応答を検査し、それらが正しいデー
タ型を持つ事を保証する。正当な1組の答しか
許されない応答は、それらの正当な答の組と比
較される。ユーザーが正当でない答を入力する
と、ユーザー・インタフエース16はユーザー
に彼の答が正当でない旨を告げ、それを訂正す
るように促す。質問に応答して、ユーザーはエ
キスパート・システムからのヘルプを要求して
もよい。これは説明、コンサルテーシヨンのレ
ビユー、又は処理されたルール木のトレースの
形で与えられる。さらに、ユーザーは処理を全
面的に中断するように要求してもよい。この場
合、ユーザー・インタフエース16はこれを認
識してその事実を推論エンジンに伝達しなけれ
ばならない。ユーザー・インタフエース16と
推論エンジン10との間の通信は、両者の間で
伝達されるユーザ・インタフエース制御ブロツ
ク(UICB)を介して行なわれる。
UICBは下記のフイールドを含んでいる。
A 活動フラグ。このフイールドは、ユーザ・
インタフエースによつて取られるべき活動を
示すために用いられる。
インタフエースによつて取られるべき活動を
示すために用いられる。
B ステータスフラグ。このフイールドは、シ
ステムによつて取られるべき活動を示す。
ステムによつて取られるべき活動を示す。
C 応答番号。これは要求された応答の番号を
示す値である。
示す値である。
D 応答ポインタ。これは可能な正当な答の長
さリストを指す。
さリストを指す。
E高フイールド。これは範囲応答に関する上限
を含む。データ値は応答値活動フラグに依存
する。
を含む。データ値は応答値活動フラグに依存
する。
F 低フイールド。これは範囲応答に関する下
限を含む。データ値は応答値活動フラグに依
存する。
限を含む。データ値は応答値活動フラグに依
存する。
G 答ポインタ。このフイールドはユーザによ
つて与えられる答の長さリストに対するポイ
ンタを含む。
つて与えられる答の長さリストに対するポイ
ンタを含む。
H フアイル名。このフイールドはテキスト及
び文字列値を含むフアイルの名前を含む。
び文字列値を含むフアイルの名前を含む。
I フアイル・インデツクス。これは表示すべ
きレコードのテキスト・フアイル中の論理レ
コード番号を含む。
きレコードのテキスト・フアイル中の論理レ
コード番号を含む。
ユーザ・インタフエース16及び推論エンジ
ン10によつて行なわれる動作を列挙する事に
より、推論エンジン10のコードに影響を与え
ずにユーザ・インタフエース・モジユール16
全体を置き換える事が可能になる。その結果、
ユーザ・インタフエースの方法、オペレーテイ
ング・システムの表示ルーチン、又は表示ハー
ドウエアのいかなる変更も推論エンジンに対し
て透明になる。
ン10によつて行なわれる動作を列挙する事に
より、推論エンジン10のコードに影響を与え
ずにユーザ・インタフエース・モジユール16
全体を置き換える事が可能になる。その結果、
ユーザ・インタフエースの方法、オペレーテイ
ング・システムの表示ルーチン、又は表示ハー
ドウエアのいかなる変更も推論エンジンに対し
て透明になる。
E−4 手続きノード・インタフエース
手続きノード・インタフエース15の機能
は、手続き呼び出し調整機構14から情報を受
け取り、適切な手続き呼び出しを形成する事で
ある。手続きを呼び出しそしてその手続きから
情報を受け取る能力は、単に外部世界からの入
力の一般化とみなす事ができる。ある従来技術
のエキスパート・システムでは、手続きから情
報が得られていたが、その情報は、実際にはあ
る特定の情報しか取得できないような前もつて
定められた方式でしか得られなかつた。本発明
の実施例のエキスパート・システムは、ホス
ト・システム上で許されている任意の手続き
を、知識ベースを経由して、起動する事が可能
である。この方式は直接的なように見えるが、
ルール・ベースのプログラミングの性質は、こ
れがいくらか異質で且つ困難であるようなもの
である。任意の手続きを実行させるためのリン
ケージ機構を作る事は、エキスパート・システ
ムが知識ベースから真に独立的である事を可能
にする。従つてエキスパート・システムは、外
部へのアクセスが存在しないか又は限られた外
部へのアクセスしかできない場合よりも、遥か
に広い類の知識領域で有用になる。
は、手続き呼び出し調整機構14から情報を受
け取り、適切な手続き呼び出しを形成する事で
ある。手続きを呼び出しそしてその手続きから
情報を受け取る能力は、単に外部世界からの入
力の一般化とみなす事ができる。ある従来技術
のエキスパート・システムでは、手続きから情
報が得られていたが、その情報は、実際にはあ
る特定の情報しか取得できないような前もつて
定められた方式でしか得られなかつた。本発明
の実施例のエキスパート・システムは、ホス
ト・システム上で許されている任意の手続き
を、知識ベースを経由して、起動する事が可能
である。この方式は直接的なように見えるが、
ルール・ベースのプログラミングの性質は、こ
れがいくらか異質で且つ困難であるようなもの
である。任意の手続きを実行させるためのリン
ケージ機構を作る事は、エキスパート・システ
ムが知識ベースから真に独立的である事を可能
にする。従つてエキスパート・システムは、外
部へのアクセスが存在しないか又は限られた外
部へのアクセスしかできない場合よりも、遥か
に広い類の知識領域で有用になる。
そのような機能の有用性の1例を次に示す。
航空機を利用する旅行者について最適な巡回路
を決定するという問題を考える。最適な選択を
行なうには、出発地と到着地との間の航空路の
時間表に関するかなりの情報が必要であろう。
操作する人がその情報を入力する事も可能であ
るが、それは全く合理的なやり方ではない。も
しもそうならば、操作する人が自分で決定を行
なう方がより容易であろう。また、情報はエキ
スパート・システムの知識ベースの中にコード
化する事ができる。しかし不幸な事に、運航情
報は急に変化するので、これも実際的ではな
い。その代りに、航空機の運航に関する必要な
情報は、手続きを呼び出す事により、データ・
ベースを参照する事によつて解決すべきであ
る。これは推論過程ではないが、推論過程はこ
の情報なしには行なう事ができない。
航空機を利用する旅行者について最適な巡回路
を決定するという問題を考える。最適な選択を
行なうには、出発地と到着地との間の航空路の
時間表に関するかなりの情報が必要であろう。
操作する人がその情報を入力する事も可能であ
るが、それは全く合理的なやり方ではない。も
しもそうならば、操作する人が自分で決定を行
なう方がより容易であろう。また、情報はエキ
スパート・システムの知識ベースの中にコード
化する事ができる。しかし不幸な事に、運航情
報は急に変化するので、これも実際的ではな
い。その代りに、航空機の運航に関する必要な
情報は、手続きを呼び出す事により、データ・
ベースを参照する事によつて解決すべきであ
る。これは推論過程ではないが、推論過程はこ
の情報なしには行なう事ができない。
同様に、エキスパート・システムを用いた機
械の診断の分野においても、ある種の情報なし
には機械の現在の「健康状態」について結論付
ける事はできない。最良の情報源は機械そのも
のである。というのはそれは、操作する人によ
つて妥当に与えられるよりもずつと詳細な情報
を含んでいるからである。
械の診断の分野においても、ある種の情報なし
には機械の現在の「健康状態」について結論付
ける事はできない。最良の情報源は機械そのも
のである。というのはそれは、操作する人によ
つて妥当に与えられるよりもずつと詳細な情報
を含んでいるからである。
外部の手続きを呼び合す能力は、知識ベース
の制御に下に且つ基本的なエキスパート・シス
テムを特別に修正する事なしに、高度にフオー
マツト化された表示装置にメツセージを送つた
り又は特別な情報を与えるためにも有用であ
る。また、ホスト上で許されたいかなる動作も
引き起こすことができる。特にシステムは、別
の手続きのローデイング及び既存のルーチンに
対するそれらの動的束縛、ハードウエアの練
習、並びにメツセージの表示を可能としてい
る。いかにして手続きを呼び出すかについてイ
ンプリメンテーシヨンの詳細は、本明細書中で
後述する。
の制御に下に且つ基本的なエキスパート・シス
テムを特別に修正する事なしに、高度にフオー
マツト化された表示装置にメツセージを送つた
り又は特別な情報を与えるためにも有用であ
る。また、ホスト上で許されたいかなる動作も
引き起こすことができる。特にシステムは、別
の手続きのローデイング及び既存のルーチンに
対するそれらの動的束縛、ハードウエアの練
習、並びにメツセージの表示を可能としてい
る。いかにして手続きを呼び出すかについてイ
ンプリメンテーシヨンの詳細は、本明細書中で
後述する。
E−5 ルール・ベース
システムの中で表現された知識はルール・ベ
ース11の中に存在する。このエキスパート・
システムのルール・ベース11の中に存在する
関連した情報ともに、基本的には4つの異なつ
た型のオブジエクトが存在する。
ース11の中に存在する。このエキスパート・
システムのルール・ベース11の中に存在する
関連した情報ともに、基本的には4つの異なつ
た型のオブジエクトが存在する。
1 クラス−これはユーザにされる質問であ
る。クラスに関連する情報は、その名前、答
又はユーザが質問に対して与える答、及びそ
の答に伴なう確信度である。確信度は、0と
1との間の数字であつて、答がどの程度正し
いかを示すものである。
る。クラスに関連する情報は、その名前、答
又はユーザが質問に対して与える答、及びそ
の答に伴なう確信度である。確信度は、0と
1との間の数字であつて、答がどの程度正し
いかを示すものである。
2 パラメータ−これは、文字列に関する場所
を保持するものである。これはクラスの質問
中の適当な場所に挿入できる変数でもあり得
る。変数のデータは、ユーザに質問をする事
によつて得る事もできる。例えば、パラメー
タ「User Name」はユーザの名前を表わ
し、ユーザに「あなたの名前は何ですか?」
と質問する事によつて得る事ができる。シス
テムによつて使われる情報はパラメータ名及
び関連する文字列である。ユーザによつて与
えられた応答は、クラスが表示される時にそ
の中に変数として挿入される。
を保持するものである。これはクラスの質問
中の適当な場所に挿入できる変数でもあり得
る。変数のデータは、ユーザに質問をする事
によつて得る事もできる。例えば、パラメー
タ「User Name」はユーザの名前を表わ
し、ユーザに「あなたの名前は何ですか?」
と質問する事によつて得る事ができる。シス
テムによつて使われる情報はパラメータ名及
び関連する文字列である。ユーザによつて与
えられた応答は、クラスが表示される時にそ
の中に変数として挿入される。
3 手続き−これは外部手続きに対する呼び出し
の定義である。手続きに関する情報は、手続
き定義の名前、渡される値、及び返される値
である。ルール・ベースのこの領域は、操作
者以外の外部データ源からデータを収集する
ための基礎を提供する。
の定義である。手続きに関する情報は、手続
き定義の名前、渡される値、及び返される値
である。ルール・ベースのこの領域は、操作
者以外の外部データ源からデータを収集する
ための基礎を提供する。
4 ルール・ノード−システムにおける推論
は、人間の推論過程を模倣するルール又は論
理を示す木構造によつて行なわれる。これら
の木のノードはルール・ノードと呼ばれる。
いくつかの異なつた型のルール・ノードが存
在するが、その詳細は明細書中で後述する。
外部(EXTERNAL)と表示されたノード
は手続き呼び出しを指定するために用いられ
る。
は、人間の推論過程を模倣するルール又は論
理を示す木構造によつて行なわれる。これら
の木のノードはルール・ノードと呼ばれる。
いくつかの異なつた型のルール・ノードが存
在するが、その詳細は明細書中で後述する。
外部(EXTERNAL)と表示されたノード
は手続き呼び出しを指定するために用いられ
る。
第2図は大幅に単純化されたサンプルのルー
ル木を示している。ルール・ベースは多数のそ
のようなn進木の森から成り立つている。木の
一番上のノード21は目標(GOAL)ノード
と呼ばれる。これはそれが結論を含んでいるか
らである。森の中の各々の木は異なつた根ノー
ドを有している。木の葉もまたルール・ノード
又はルール・ノードの型の1つと呼ばれる。葉
は証拠(EVIDENCE)ノード、外部
(EXTERNAL)ノード又は参照
(REFERENCE)ノードである得る。
ル木を示している。ルール・ベースは多数のそ
のようなn進木の森から成り立つている。木の
一番上のノード21は目標(GOAL)ノード
と呼ばれる。これはそれが結論を含んでいるか
らである。森の中の各々の木は異なつた根ノー
ドを有している。木の葉もまたルール・ノード
又はルール・ノードの型の1つと呼ばれる。葉
は証拠(EVIDENCE)ノード、外部
(EXTERNAL)ノード又は参照
(REFERENCE)ノードである得る。
証拠ノードは、証拠ノード22のような特定
の質問をする事によつて操作者から情報を得る
ように機能する。証拠ノードによつて与えられ
る質問に応答して、操作者は一般に、数字の1
及び0によつて表わされる「イエス」又は「ノ
ー」の答をするか、又は「多分」を表現する0
と1との間の数字を与えるように指示される。
操作者からイエスもしくはノー又は0と1との
間の数値以外の応答を必要とする質問は、明細
書中で後述する別の方法によつて取り扱われ
る。ノード23等の外部ノードである葉は、手
続き呼び出しから得られたデータが使われる事
を示す。診断のアプリケーシヨンの良好な実施
例においては、例えば手続き呼び出しは、特定
のデータ・パターンをデイスケツトに書き込
み、そしてエラー検出された否かの表示を与え
るためにそれを読取るという動作を起こさせ
る。ノード24等の参照ノードは別の木又は部
分木を参照するように機能する。また、木は目
標ノードと葉ノードとの間に中間のノードを含
んでいてもよい。中間ノードは第2図のノード
27及び28のような理論演算を表現する事が
できる。
の質問をする事によつて操作者から情報を得る
ように機能する。証拠ノードによつて与えられ
る質問に応答して、操作者は一般に、数字の1
及び0によつて表わされる「イエス」又は「ノ
ー」の答をするか、又は「多分」を表現する0
と1との間の数字を与えるように指示される。
操作者からイエスもしくはノー又は0と1との
間の数値以外の応答を必要とする質問は、明細
書中で後述する別の方法によつて取り扱われ
る。ノード23等の外部ノードである葉は、手
続き呼び出しから得られたデータが使われる事
を示す。診断のアプリケーシヨンの良好な実施
例においては、例えば手続き呼び出しは、特定
のデータ・パターンをデイスケツトに書き込
み、そしてエラー検出された否かの表示を与え
るためにそれを読取るという動作を起こさせ
る。ノード24等の参照ノードは別の木又は部
分木を参照するように機能する。また、木は目
標ノードと葉ノードとの間に中間のノードを含
んでいてもよい。中間ノードは第2図のノード
27及び28のような理論演算を表現する事が
できる。
もしノードBがノードAの直下にあれば、ノ
ードBはAの子であり、ノードAはノードBの
親であると呼ばれる。この場合、Bが1番上の
ノードあるような木はAの部分木と呼ばれる。
部分木は単一のノードだけでもよいので、Aは
2つの子を持つていると言う事は、Aは2つの
部分木を持つていると言う事と等価である。
ードBはAの子であり、ノードAはノードBの
親であると呼ばれる。この場合、Bが1番上の
ノードあるような木はAの部分木と呼ばれる。
部分木は単一のノードだけでもよいので、Aは
2つの子を持つていると言う事は、Aは2つの
部分木を持つていると言う事と等価である。
ルール・コンパイラ17はルール作成者が与
えたルール入力を受け取り、それをコンパイル
してルール・ベース・フアイル11に入れる。
これは推論エンジン10が使用する入力として
役立つ。この入力は手続き呼び出しに関する定
義及びルール論理を含んでいる。
えたルール入力を受け取り、それをコンパイル
してルール・ベース・フアイル11に入れる。
これは推論エンジン10が使用する入力として
役立つ。この入力は手続き呼び出しに関する定
義及びルール論理を含んでいる。
推論機構
第1図の推論機構(CONSUCTと呼ぶ)は
2つの機能を持つている。それはトレースすべ
き木を選択し、次にその木をトレースする。推
論機構がどのようにして木を選択するかは、後
述する。木が選択されると、推論機構はその木
を深さ優先で、左から右へトレースする。
2つの機能を持つている。それはトレースすべ
き木を選択し、次にその木をトレースする。推
論機構がどのようにして木を選択するかは、後
述する。木が選択されると、推論機構はその木
を深さ優先で、左から右へトレースする。
「トレース」という用語は、システムが木を
辿りなから、クラス(質問)を尋ね、手続きを
呼び出し、そして確信度を計算する活動を言
う。例えば、ノードBに関する確信度を得るた
めに、システムはBが一番上になる部分木をト
レースする。種々の型のノードの各々はそれに
関連する確信度を有している。確信度が得られ
る方法は、ノードの型に依存している。外部ノ
ードに関する確信度は、呼び出された手続きに
よつて返された値に依存する。証拠ノードに関
する確信度は、操作者に与えた質問に対する回
答に基いている。また参照ノードは、それが参
照している木の確信度に基く確信度を有する。
辿りなから、クラス(質問)を尋ね、手続きを
呼び出し、そして確信度を計算する活動を言
う。例えば、ノードBに関する確信度を得るた
めに、システムはBが一番上になる部分木をト
レースする。種々の型のノードの各々はそれに
関連する確信度を有している。確信度が得られ
る方法は、ノードの型に依存している。外部ノ
ードに関する確信度は、呼び出された手続きに
よつて返された値に依存する。証拠ノードに関
する確信度は、操作者に与えた質問に対する回
答に基いている。また参照ノードは、それが参
照している木の確信度に基く確信度を有する。
あるノードの確信度が更新されると、推論機
構は全ての木を調べ、更新されたノードを参照
するノード又は更新されたノードによつて得ら
れた証拠に依存しているノードの確信度を変更
する。また推論機構は、評価されていないノー
ドを見つける前にできる限りの木の上方までこ
の新しい確信度を即座に伝播させる。これが終
了すると、推論機構は選択された木のトレース
を続行する。推論機構は、その目標ノードの確
信度が計算されるまで、選択された木をトレー
スし続ける。そしてそれが終ると、次の木を選
択しトレースする。
構は全ての木を調べ、更新されたノードを参照
するノード又は更新されたノードによつて得ら
れた証拠に依存しているノードの確信度を変更
する。また推論機構は、評価されていないノー
ドを見つける前にできる限りの木の上方までこ
の新しい確信度を即座に伝播させる。これが終
了すると、推論機構は選択された木のトレース
を続行する。推論機構は、その目標ノードの確
信度が計算されるまで、選択された木をトレー
スし続ける。そしてそれが終ると、次の木を選
択しトレースする。
木の選択は木の順序に依存する。木の本来の
順序は、それがルール・ベース中に現れる順序
である。しかし、この順序は、証拠ノードに後
述の「初期」属性を割り当てる事によつて変更
可能である。推論機構が行なう最初の動作は、
「初期」属性を割り当てられた全ての証拠ノー
ドの値を得る事である。これらの初期の証拠に
対する答だけを使つて、推論機構は、最も成功
しそうなものが最初に評価されるようにルール
を配列する。これは、これらの初期の証拠だけ
に基いて計算された確信度を木まで伝播させる
事によつて行なわれる。次の目標ノードについ
て計算された確信度を、その木が成功するかど
うかの尺度として用いる。木は、選択された木
がトレースされる毎に更新されるので、さらに
配列しなおす事ができる。
順序は、それがルール・ベース中に現れる順序
である。しかし、この順序は、証拠ノードに後
述の「初期」属性を割り当てる事によつて変更
可能である。推論機構が行なう最初の動作は、
「初期」属性を割り当てられた全ての証拠ノー
ドの値を得る事である。これらの初期の証拠に
対する答だけを使つて、推論機構は、最も成功
しそうなものが最初に評価されるようにルール
を配列する。これは、これらの初期の証拠だけ
に基いて計算された確信度を木まで伝播させる
事によつて行なわれる。次の目標ノードについ
て計算された確信度を、その木が成功するかど
うかの尺度として用いる。木は、選択された木
がトレースされる毎に更新されるので、さらに
配列しなおす事ができる。
E−7 ルール・ベース構成
第1図のルール・コンパイラ17
(CONSTRUCTとも呼ばれる)は、ルール作
成者によつて提供されるフアイルを入力として
受け取る。この入力フアイルからルール・コン
パイラはルールとして使用される木を構成す
る。推論機構はこれらのルール木を辿つて、調
査される問題について生繹を行なう。最初にル
ール・ベースを概観し次に例を見るのが、本発
明の理解に役立つであろう。従つて、ルール・
ベースに関するサンプル入力が下記に、そして
この入力によつて生成されたルール木が第3図
及び第4図に示されている。また、入力の構文
についての簡単な説明も提供する。
(CONSTRUCTとも呼ばれる)は、ルール作
成者によつて提供されるフアイルを入力として
受け取る。この入力フアイルからルール・コン
パイラはルールとして使用される木を構成す
る。推論機構はこれらのルール木を辿つて、調
査される問題について生繹を行なう。最初にル
ール・ベースを概観し次に例を見るのが、本発
明の理解に役立つであろう。従つて、ルール・
ベースに関するサンプル入力が下記に、そして
この入力によつて生成されたルール木が第3図
及び第4図に示されている。また、入力の構文
についての簡単な説明も提供する。
CLASSES
PRINTER
TEXT=‘問題点はプリンタに関係している
ように思いまうか? VALUES=10F(‘YES'‘NO') PREDEFINED WEIGHT=1 IBM5215 TEXT=‘IBM5215プリンタを使用していま
すか? VALUES=10F(‘YES'‘NO') PREDEFINED WEIGHT=1 SYMPTOM TEXT=’次の症状のどれに気付きました
か: (1) 文字が印字されない (2) 文字が間違つて印字される (3) 文字が汚れている (4) 紙が曲つて送られる (5) 上記のどれでもない’ VALUES=10F1:5 PREDEFINED WEIGHT=1 PRINTERLITE TEXT=‘プリンタの前面で灯が明滅してい
ますか?’ VALUES= 10F(‘YES'‘NO') PREDEFINED WEIGHT=1 PROCEDURES PRINTERTEST NAME=PRINTERTU PASS 32767 %SVC NUMBER % RETURN STATUSBIT HEX(1) END PARAMETRS PRINTERNUMBER TEXT=‘あなたのプリンタ番号は何です
か?’ DEFAULT=‘IBM' RULES % RULE TREE1 % 1 GOAL TEXT=’新しい部品又はリボンを取り付
けて下さい’ NAME=GOAL1 2 OR NAME=LEVEL20R 3 AND NAME=RIBBON 4 EVIDENCE NAME=PRINTER1 CLASS=(‘YES')OF PRINTER 4 EVIDENCE NAME=YES5215 CLASS=(‘YES')OF IBM5215 3 EVIDENCE NAME=SYMPTOM1 CLASS=1 OF SYMPTOM % RULE TREE 2% 1 GOAL TEXT=’$PRINTERNUMBERプリンタ
についてサービス要求番号151018を報告し
て下さい’ 2 AND 3 NOT 4 REFERENCE NAME=RIBBON 3 OR 4 EXTERNAL PROC=PRINTERTEST STATUSBIT
NE ‘00' XB 4 EVIDENCE CLASS=(‘YES')OF
PRINTERLITE 3 EGIDENCE CLASS=2 OF SYMPTOM 最初に、「RULES」という語で始まるルー
ル・ベースの部分を見る。テキスト「%
RULE TREE 1 %」は註釈である。ルール
1に関する入力はこの註釈に続いている。ルー
ル1に対応する木は第3図に示されている。
ように思いまうか? VALUES=10F(‘YES'‘NO') PREDEFINED WEIGHT=1 IBM5215 TEXT=‘IBM5215プリンタを使用していま
すか? VALUES=10F(‘YES'‘NO') PREDEFINED WEIGHT=1 SYMPTOM TEXT=’次の症状のどれに気付きました
か: (1) 文字が印字されない (2) 文字が間違つて印字される (3) 文字が汚れている (4) 紙が曲つて送られる (5) 上記のどれでもない’ VALUES=10F1:5 PREDEFINED WEIGHT=1 PRINTERLITE TEXT=‘プリンタの前面で灯が明滅してい
ますか?’ VALUES= 10F(‘YES'‘NO') PREDEFINED WEIGHT=1 PROCEDURES PRINTERTEST NAME=PRINTERTU PASS 32767 %SVC NUMBER % RETURN STATUSBIT HEX(1) END PARAMETRS PRINTERNUMBER TEXT=‘あなたのプリンタ番号は何です
か?’ DEFAULT=‘IBM' RULES % RULE TREE1 % 1 GOAL TEXT=’新しい部品又はリボンを取り付
けて下さい’ NAME=GOAL1 2 OR NAME=LEVEL20R 3 AND NAME=RIBBON 4 EVIDENCE NAME=PRINTER1 CLASS=(‘YES')OF PRINTER 4 EVIDENCE NAME=YES5215 CLASS=(‘YES')OF IBM5215 3 EVIDENCE NAME=SYMPTOM1 CLASS=1 OF SYMPTOM % RULE TREE 2% 1 GOAL TEXT=’$PRINTERNUMBERプリンタ
についてサービス要求番号151018を報告し
て下さい’ 2 AND 3 NOT 4 REFERENCE NAME=RIBBON 3 OR 4 EXTERNAL PROC=PRINTERTEST STATUSBIT
NE ‘00' XB 4 EVIDENCE CLASS=(‘YES')OF
PRINTERLITE 3 EGIDENCE CLASS=2 OF SYMPTOM 最初に、「RULES」という語で始まるルー
ル・ベースの部分を見る。テキスト「%
RULE TREE 1 %」は註釈である。ルール
1に関する入力はこの註釈に続いている。ルー
ル1に対応する木は第3図に示されている。
第3図に示す構造は、上記の入力の順序及び
その左側の数字によつて示されている。これら
の数はノードのレベルを示している。例えば目
標ノードはこの木の1番上のノードであり、こ
の事はテキスト「1 GOAL」によつて示さ
れている。数字に続く語はノードの型、例えば
目標(GOAL)、AND、OR、証拠
(EVIDENCE)等を特定している。ノードは
深さ優先によつて定義される順序、即ち左から
右への木を辿る順序に現れる。この例では、各
ノードは木の構造と入力フアイル中のノードの
配列との間の関係が明瞭になるように名前
(「NAME=」によつて表示)が与えられてい
る。
その左側の数字によつて示されている。これら
の数はノードのレベルを示している。例えば目
標ノードはこの木の1番上のノードであり、こ
の事はテキスト「1 GOAL」によつて示さ
れている。数字に続く語はノードの型、例えば
目標(GOAL)、AND、OR、証拠
(EVIDENCE)等を特定している。ノードは
深さ優先によつて定義される順序、即ち左から
右への木を辿る順序に現れる。この例では、各
ノードは木の構造と入力フアイル中のノードの
配列との間の関係が明瞭になるように名前
(「NAME=」によつて表示)が与えられてい
る。
GOALノードの直後には、もしこの目標が
結論付けられた場合にユーザに提示されるテキ
ストが示されている。これは「TEXT=」に
よつて示されている。テキスト自体は単一引用
符号で囲まれている。
結論付けられた場合にユーザに提示されるテキ
ストが示されている。これは「TEXT=」に
よつて示されている。テキスト自体は単一引用
符号で囲まれている。
第3図に示す木には3つの証拠ノードが存在
している。証拠ノードは、それに関して2つの
ものが定義されていなければならない。即ち、
ユーザに与えられる質問、及びこの証拠を真に
するような答である。この情報は例えば下記の
行に含まれている。
している。証拠ノードは、それに関して2つの
ものが定義されていなければならない。即ち、
ユーザに与えられる質問、及びこの証拠を真に
するような答である。この情報は例えば下記の
行に含まれている。
CLASS=(‘YES')OF PRINTER
「YES」は、この証拠を真にする1つの答
である。質問は、ルール・ベースのクラス
(CLASS)部分の項目の1つを参照する事によ
つて特定される。この場合、クラスは
「PRINTER」と名付けられている。
である。質問は、ルール・ベースのクラス
(CLASS)部分の項目の1つを参照する事によ
つて特定される。この場合、クラスは
「PRINTER」と名付けられている。
この例では、クラスの定義はルール・ベース
入力フアイルの最初の部分に位置している。こ
の部分は語「CLASSES」で始まつている。定
義される最初のクラスは「PRINTER」と名付
けられたクラスである。クラスの名前に続くの
は、このクラスに関係した質問のテキストであ
る。これは「TEXT=」によつて示されてい
る。単一引用符内の文字列がユーザに示され、
ユーザはそれに答える事ができる。
入力フアイルの最初の部分に位置している。こ
の部分は語「CLASSES」で始まつている。定
義される最初のクラスは「PRINTER」と名付
けられたクラスである。クラスの名前に続くの
は、このクラスに関係した質問のテキストであ
る。これは「TEXT=」によつて示されてい
る。単一引用符内の文字列がユーザに示され、
ユーザはそれに答える事ができる。
行:「VALUE=1 OF(‘YES'‘NO')は
2つの情報を与えている。語句「1 OF」は
ユーザからの正確に1つだけの答が受理される
事を示している。また括弧内には、ユーザが応
答し得る全ての可能な答が列挙されている。こ
の場合、「YES」及び「NO」が2つだけの許
された答である。
2つの情報を与えている。語句「1 OF」は
ユーザからの正確に1つだけの答が受理される
事を示している。また括弧内には、ユーザが応
答し得る全ての可能な答が列挙されている。こ
の場合、「YES」及び「NO」が2つだけの許
された答である。
同じ質問をする多数の証拠ノードをルール・
ベースが含む可能性が高いので、クラス項目の
機能は明白である。質問は単にクラス部分に1
回だけ含まれていてその質問をする必要がある
証拠ノードによつて参照できる適当な名前を有
していれば良いのである。
ベースが含む可能性が高いので、クラス項目の
機能は明白である。質問は単にクラス部分に1
回だけ含まれていてその質問をする必要がある
証拠ノードによつて参照できる適当な名前を有
していれば良いのである。
上記「PROCEDURES」と題する部分は手
続き呼び出しを定義している。この例では、
「PRINTERTEST」というIDを有する1つの
手続き呼び出しの定義が存在している。この定
義は、手続きが「PRINTERTU」と呼ばれ、
1つの値(32767)が渡され、そして
「STATUSBIT」と呼ばれる1つの変数が返さ
れる事を特定している。外部ノードは手続き呼
び出しから得られた情報を使用する。第4図に
示す第2のルール木において、ORノードの下
に外部ノードが存在している。これはそのID
が「PRINTERTEST」である手続き呼び出し
を参照する。このノードは、それが指定する比
較が真であれば、即ち返された変数
「STATUSBIT」がゼロでなければ、真と評価
される。
続き呼び出しを定義している。この例では、
「PRINTERTEST」というIDを有する1つの
手続き呼び出しの定義が存在している。この定
義は、手続きが「PRINTERTU」と呼ばれ、
1つの値(32767)が渡され、そして
「STATUSBIT」と呼ばれる1つの変数が返さ
れる事を特定している。外部ノードは手続き呼
び出しから得られた情報を使用する。第4図に
示す第2のルール木において、ORノードの下
に外部ノードが存在している。これはそのID
が「PRINTERTEST」である手続き呼び出し
を参照する。このノードは、それが指定する比
較が真であれば、即ち返された変数
「STATUSBIT」がゼロでなければ、真と評価
される。
このサンプル・ルール・ベースにはもう1つ
の部分が存在する。即ちパラメータ
(PARAMETERS)部分である。この例では、
1つのパラメータ「PRINTERNUMBER」が
存在する。このパラメータは、第4図に示すル
ール木2の目標に関するテキスト中に
「$PRINTERNUMBER」として現れている。
目標テキストがユーザに提示される時、パラメ
ータ名は、ユーザが与えた文字列によつて置き
換えられる。その文字列はユーザに「WHAT
IS THE NUMBER OF YOUR
PRINTER?(あなたのプリンタの番号は何で
すか?)」と質問する事によつて得られる。こ
の質問文はパラメータの定義中に与えられてい
る。もしユーザによつて答が与えられなけれ
ば、デフオールトの答「IBM」が代入される。
の部分が存在する。即ちパラメータ
(PARAMETERS)部分である。この例では、
1つのパラメータ「PRINTERNUMBER」が
存在する。このパラメータは、第4図に示すル
ール木2の目標に関するテキスト中に
「$PRINTERNUMBER」として現れている。
目標テキストがユーザに提示される時、パラメ
ータ名は、ユーザが与えた文字列によつて置き
換えられる。その文字列はユーザに「WHAT
IS THE NUMBER OF YOUR
PRINTER?(あなたのプリンタの番号は何で
すか?)」と質問する事によつて得られる。こ
の質問文はパラメータの定義中に与えられてい
る。もしユーザによつて答が与えられなけれ
ば、デフオールトの答「IBM」が代入される。
簡単に言えば、ルール部分はルール木を記述
している。EVIDENCEノードは、質問及びそ
れに対する可能な答を特定したクラスを参照し
ている。パラメータは、テキストがユーザに示
される前にテキスト中で文字列が置き換えられ
る事を可能にする。ルール・ベースの詳細の多
くは、明細書で後述されている。
している。EVIDENCEノードは、質問及びそ
れに対する可能な答を特定したクラスを参照し
ている。パラメータは、テキストがユーザに示
される前にテキスト中で文字列が置き換えられ
る事を可能にする。ルール・ベースの詳細の多
くは、明細書で後述されている。
E−8 確信度の計算
上述のように、システムは多数の異なつたノ
ード型をサポートしている。これらのノードは
目的及び評価法が異なつている。全てのノード
は、木の葉に見られるものを除いて、その子か
ら渡された確信度を有している。ノードは子ノ
ードの確信度を用いて、それ自信の確信度を計
算する。この確信度を親ノードに渡す前に、計
算された確信度に対してさらに調整を行なう事
もある。確信度及びしきい値の一般的な性質並
びにそれらがいかにして作用するかについて最
初に説明する。次に、ノードが親ノードに渡す
確信度に影響する。ノードに関して特定され得
る属性又は性質について説明する。また種々の
異なつたノード型及びそれらがその確信度をど
のように計算するかについても説明する。
ード型をサポートしている。これらのノードは
目的及び評価法が異なつている。全てのノード
は、木の葉に見られるものを除いて、その子か
ら渡された確信度を有している。ノードは子ノ
ードの確信度を用いて、それ自信の確信度を計
算する。この確信度を親ノードに渡す前に、計
算された確信度に対してさらに調整を行なう事
もある。確信度及びしきい値の一般的な性質並
びにそれらがいかにして作用するかについて最
初に説明する。次に、ノードが親ノードに渡す
確信度に影響する。ノードに関して特定され得
る属性又は性質について説明する。また種々の
異なつたノード型及びそれらがその確信度をど
のように計算するかについても説明する。
ルール木がトレースされる時、各ノードに確
信度が付与される。その値は−1及び1を含め
てその間の値であつて、そのノードが真である
事がどれ位もつともらしいかを表示するもので
ある。
信度が付与される。その値は−1及び1を含め
てその間の値であつて、そのノードが真である
事がどれ位もつともらしいかを表示するもので
ある。
これらの確信度は、人間が行なう1種のヒユ
ーリステイツクな推論を模倣するのに役立つ。
例えば、「…する可能性が高い。」という陳述
は、「…する可能性はいくらかある。」という陳
述よりも高い確信度を伴なつている。異つた証
拠及び推論に異なつた確信度を付随させる事に
よつて、異なつた重みを有する異なつた目標が
結論付けられる。従つて、ルール・ベースがト
レースされる時、丁度1つだけの目標が真であ
るとして結論付けられるのではなくて、種々の
確信度を有するいくつかのルールが結論付けら
れるのであろう。確信度により与えられる柔軟
性及び能力は、従来のプログラムミング方式を
上回るエキスパート・システムの1つの利点で
ある。
ーリステイツクな推論を模倣するのに役立つ。
例えば、「…する可能性が高い。」という陳述
は、「…する可能性はいくらかある。」という陳
述よりも高い確信度を伴なつている。異つた証
拠及び推論に異なつた確信度を付随させる事に
よつて、異なつた重みを有する異なつた目標が
結論付けられる。従つて、ルール・ベースがト
レースされる時、丁度1つだけの目標が真であ
るとして結論付けられるのではなくて、種々の
確信度を有するいくつかのルールが結論付けら
れるのであろう。確信度により与えられる柔軟
性及び能力は、従来のプログラムミング方式を
上回るエキスパート・システムの1つの利点で
ある。
証拠に関する確信度:
証拠ノードには2つの方法で確信度が付与で
きる。ユーザが確信度を与えるか又はルール・
ベースがそれを与えるかのいずれかである。ユ
ーザが確信度を与える場合、ユーザは質問に答
えた後にその答に付随する確信度を与えるよう
に促される。ルール・ベースが確信度を与える
時、ルール・ベース中にはデフオールト値が与
えられている。ユーザが質問に答え、ルール・
ベース中に記述された確信度がその答に付与さ
れる。
きる。ユーザが確信度を与えるか又はルール・
ベースがそれを与えるかのいずれかである。ユ
ーザが確信度を与える場合、ユーザは質問に答
えた後にその答に付随する確信度を与えるよう
に促される。ルール・ベースが確信度を与える
時、ルール・ベース中にはデフオールト値が与
えられている。ユーザが質問に答え、ルール・
ベース中に記述された確信度がその答に付与さ
れる。
外部ノードに関する確信度:
外部ノードに与えられる確信度は、ルール・
ベースによつて与えられる。これは明細書中で
後述する重み属性を用いて行なわれる。
ベースによつて与えられる。これは明細書中で
後述する重み属性を用いて行なわれる。
ルール・フアイルには4つの主要な部分、ク
ラス、手続き、パラメータ及びルールが存在す
るが、必要な部分はルールだけである。
ラス、手続き、パラメータ及びルールが存在す
るが、必要な部分はルールだけである。
しきい値:
各ノードは、多数の属性を含む、ノードに関
するデータを含む特性リストを有している。各
ノードには2つのしきい値属性、即ち高しきい
値及び低しきい値が付随している。もしルー
ル・ベース中に高しきい値及び低しきい値が指
定されていなければ、それらは各々1及び0の
デフオールト値が与えられる。もしあるノード
に関して計算された確信度が高しきい値よりも
高くなれば、そのノードは真即ち結論されたと
考えられる。もしあるノードに関して計算され
た確信度が低しきい値以下になつたとすれば、
そのノードは偽又は排斥されたものと考えられ
る。これらのしきい値はいくつかの目的のため
に有用である。もし目標ノードが結論付けられ
たならば、その目標はユーザに提示される。真
であると結論付けられたか否かを決定するのは
高しきい値である。しきい値はノードに関して
正規化機能を実行するために使用される。この
機能は次に説明する。
するデータを含む特性リストを有している。各
ノードには2つのしきい値属性、即ち高しきい
値及び低しきい値が付随している。もしルー
ル・ベース中に高しきい値及び低しきい値が指
定されていなければ、それらは各々1及び0の
デフオールト値が与えられる。もしあるノード
に関して計算された確信度が高しきい値よりも
高くなれば、そのノードは真即ち結論されたと
考えられる。もしあるノードに関して計算され
た確信度が低しきい値以下になつたとすれば、
そのノードは偽又は排斥されたものと考えられ
る。これらのしきい値はいくつかの目的のため
に有用である。もし目標ノードが結論付けられ
たならば、その目標はユーザに提示される。真
であると結論付けられたか否かを決定するのは
高しきい値である。しきい値はノードに関して
正規化機能を実行するために使用される。この
機能は次に説明する。
正規化機能:
どのノードも「正規」の属性を与える事がで
きる。もしノードがこの属性を持つていると、
その確信度はそれが親のノードに渡される前に
正規化される。もしそのノードに関して定義さ
れた低しきい値がLOWで、そのノードに関し
て定義された高しきい値がHIGHで、且つその
ノードに関して計算された確信度がCならば、
正規化機能は下記の通りである。
きる。もしノードがこの属性を持つていると、
その確信度はそれが親のノードに渡される前に
正規化される。もしそのノードに関して定義さ
れた低しきい値がLOWで、そのノードに関し
て定義された高しきい値がHIGHで、且つその
ノードに関して計算された確信度がCならば、
正規化機能は下記の通りである。
if C>=HIGH
then NORMALIZE(C)=1
else if C<=LOW
then NORMALIZE(C)=0
else
NORMARIZE(C)=(C−LOW)/HIGH−
LOW) 関連因子: ノードは、ルール・ベース中で明示的に設定
されていなければLのデフオールト値を有する
関連因子が割り当てられている。関連因子はノ
ードとその親との間にどの程度強い関連がある
かを示している。あるノードに関して確信度が
計算された後、この確信度は関連因子を乗算さ
れ、その積が親ノードに渡される。例えば、も
しノードが0.9の確信度を有し且つ関連因子が
0.8であれば、0.72が親ノードに渡される。
LOW) 関連因子: ノードは、ルール・ベース中で明示的に設定
されていなければLのデフオールト値を有する
関連因子が割り当てられている。関連因子はノ
ードとその親との間にどの程度強い関連がある
かを示している。あるノードに関して確信度が
計算された後、この確信度は関連因子を乗算さ
れ、その積が親ノードに渡される。例えば、も
しノードが0.9の確信度を有し且つ関連因子が
0.8であれば、0.72が親ノードに渡される。
E−9 属性
一般に、クラス又はノードの定義内の属性の
順序には特に意味はない。各々の型のノードに
関して記述されただけのものが存在できそれら
はどの順序でもよい。以下、属性の使用法及び
機能について説明する。
順序には特に意味はない。各々の型のノードに
関して記述されただけのものが存在できそれら
はどの順序でもよい。以下、属性の使用法及び
機能について説明する。
関連(ASSOCIATION)
使用法:関連属性はどのルール・ノードでも使
用できる。
用できる。
機能:関連属性は上記の関連因子に関する値を
指定するために使われる。ノードに関する確
信度が得られると、確信度は上記のように親
ノードに渡される前に関連因子を乗算され
る。もし関連属性が指定されていなければ、
それは1のデフオールト値を得る。即ちそれ
はそのノードの確信度に影響を与えない。関
連因子は、ノードがその最終的な重みを受け
取つたあとに乗算される。それは受け取つた
親ノードの重みに影響を与えるが、与えられ
たノードの重みには影響を与えない。もし参
照ノードが関連属性を有するノードを参照す
れば、参照ノードに与えられる値は関連因子
による乗算の前の重みである。
指定するために使われる。ノードに関する確
信度が得られると、確信度は上記のように親
ノードに渡される前に関連因子を乗算され
る。もし関連属性が指定されていなければ、
それは1のデフオールト値を得る。即ちそれ
はそのノードの確信度に影響を与えない。関
連因子は、ノードがその最終的な重みを受け
取つたあとに乗算される。それは受け取つた
親ノードの重みに影響を与えるが、与えられ
たノードの重みには影響を与えない。もし参
照ノードが関連属性を有するノードを参照す
れば、参照ノードに与えられる値は関連因子
による乗算の前の重みである。
呼び出し(CALL)
使用法:呼び出し属性はどのルール・ノードで
も使用できる。これは必要なものではない。
も使用できる。これは必要なものではない。
機能:呼び出し属性は「活動」属性である。こ
れは別のルール・ベースが呼び出される原因
になる。この動作は、ノードの重みがそのノ
ードに関する高しきい値に等しいか又はそれ
より大きいと評価された場合にだけ起きる。
もし他のルール・ベースが呼び出されると、
現在トレースされているルール・ベースは記
憶され、新しいルール・ベースの実行が開始
する。呼び出されたルール・ベースは既にコ
ンパイルされているものと仮定する。呼び出
されたルール・ベースが終了すると、制御は
元のルール・ベースに戻り、システムは残さ
れた所からこのルール・ベースの処理を続行
する。
れは別のルール・ベースが呼び出される原因
になる。この動作は、ノードの重みがそのノ
ードに関する高しきい値に等しいか又はそれ
より大きいと評価された場合にだけ起きる。
もし他のルール・ベースが呼び出されると、
現在トレースされているルール・ベースは記
憶され、新しいルール・ベースの実行が開始
する。呼び出されたルール・ベースは既にコ
ンパイルされているものと仮定する。呼び出
されたルール・ベースが終了すると、制御は
元のルール・ベースに戻り、システムは残さ
れた所からこのルール・ベースの処理を続行
する。
クラス(CLASS)
使用法:クラス属性は証拠ノードでしか使用さ
れない。これは必要なものではない。
れない。これは必要なものではない。
機能:クラス属性は証拠ノードによつて参照さ
れるクラスを指定する。これはクラスの名前
を告げ、またそのクラスに対するどの答えが
証拠ノードを真に評価させるかも知らせる。
証拠ノードについては以前に述べた。
れるクラスを指定する。これはクラスの名前
を告げ、またそのクラスに対するどの答えが
証拠ノードを真に評価させるかも知らせる。
証拠ノードについては以前に述べた。
デフオールト(DEFAULT)
使用法:デフオールト属性はパラメータと共に
しか使用されない。
しか使用されない。
機能:デフオールト属性はパラメータに関する
テキスト文字列を指定する。もしユーザによ
つて他の文字列が与えられなければ、このデ
フオールト文字列がパラメータの値として使
用される。
テキスト文字列を指定する。もしユーザによ
つて他の文字列が与えられなければ、このデ
フオールト文字列がパラメータの値として使
用される。
削除(DELETE)
使用法:削除属性は手続き呼び出しの定義と共
にしか使用されない。これは必ずしも必要で
ない。機能(実行、ロード又は削除)がどれ
も指定されていなければ、デフオールトは
「実行」である。
にしか使用されない。これは必ずしも必要で
ない。機能(実行、ロード又は削除)がどれ
も指定されていなければ、デフオールトは
「実行」である。
機能:削除属性は、手続きをメモリから削除す
るために手続きノード定義に関して指定され
る。もし削除属性が指定されれば、PASS及
びRETURN属性は不要である。
るために手続きノード定義に関して指定され
る。もし削除属性が指定されれば、PASS及
びRETURN属性は不要である。
実行(EXECUTE)
使用法:実行属性は手続き呼び出しの定義と共
にしか用いられない。これは必ずしも必要で
ない。もし機能(実行、ロード又は削除)が
指定されていなければ、デフオールトは「実
行」である。削除及びロードの属性も参照さ
れたい。
にしか用いられない。これは必ずしも必要で
ない。もし機能(実行、ロード又は削除)が
指定されていなければ、デフオールトは「実
行」である。削除及びロードの属性も参照さ
れたい。
機能:実行属性は、手続きが(ロード又は削除
ではなく)実行れるべき時に手続きノードの
定義に関して指定される。
ではなく)実行れるべき時に手続きノードの
定義に関して指定される。
説明(EXPLANATION)
使用法:説明属性はクラス、パラメータ又は証
拠ノードと共にしか使用できない。これは必
ずしも必要でない。
拠ノードと共にしか使用できない。これは必
ずしも必要でない。
機能:説明属性はテキスト文字列を指定する。
その目的はユーザを援助するために説明文を
提供する事である。もしユーザが彼に与えら
れた質問を理解できなければ、彼は「?e」
を入力する事によつてさらに説明を要求して
もよい。この時、説明属性によつて与えられ
た説明文がユーザに提供される。もし「?
e」が入力された時にクラスの質問が行なわ
れているならば、ユーザはそのクラスによつ
て与えられる説明文を提示される。もしパラ
メータの質問が行なわれているならば、「?
e」はパラメータの説明文を提示させる。も
し証拠ノードが(クラスを参照せずに)ノー
ドにおいて質問をしていれば、「?e」はそ
のノードに与えられた説明文を提示させる。
いずれの場合も、説明属性が存在しない時に
「?e」ユーザによつて入力されると、シス
テムは「説明文は与えられていません。」と
応答し、質問を繰り返す。
その目的はユーザを援助するために説明文を
提供する事である。もしユーザが彼に与えら
れた質問を理解できなければ、彼は「?e」
を入力する事によつてさらに説明を要求して
もよい。この時、説明属性によつて与えられ
た説明文がユーザに提供される。もし「?
e」が入力された時にクラスの質問が行なわ
れているならば、ユーザはそのクラスによつ
て与えられる説明文を提示される。もしパラ
メータの質問が行なわれているならば、「?
e」はパラメータの説明文を提示させる。も
し証拠ノードが(クラスを参照せずに)ノー
ドにおいて質問をしていれば、「?e」はそ
のノードに与えられた説明文を提示させる。
いずれの場合も、説明属性が存在しない時に
「?e」ユーザによつて入力されると、シス
テムは「説明文は与えられていません。」と
応答し、質問を繰り返す。
グローバル(GLOBAL)
1つのセツシヨンの間に別のセグメント化ル
ール・ベースの間で、又はセツシヨンが中断さ
れた場合同じルール・ベース間で、収集された
データを受け渡すためにこのシステムによつて
用いられている主な手段の1つは、各ノードへ
のグローバル又はローカルの属性の割り当てに
関係している。グローバル属性はルール木の中
のどのノードに割り当ててもよい。例えば、シ
ステムにより実行される最初のルール・ベース
があるテスト・ユニツトを動作させる事によつ
てハードウエア構成を決定するものと仮定す
る。もし操作者がシステムのいくつかの構成要
素、即ちプリンタ、デイスク・ドライブ及びキ
ーボードを診断しようとすると、各構成要素毎
に新しいセツシヨンを行なう事もあり得る。も
ちろん、全てのセツシヨンのために1回だけの
構成テストを行ない次にその情報を種々のセグ
メント化されたルール・ベースに渡す方がより
効率的である。同様に、テストされる各構成要
素が別々のルール・ベースを必要にするなら
ば、構成情報は全てのルール・ベースに渡され
なければならない。以前に述べたように、どの
ノードにもグローバル属性を与える事ができ
る。もし証拠ノードがグローバルであれば、質
問は複数のセツシヨンの間に1回だけしか行な
われない。操作者が与える答は全セツシヨンに
わたつて、その値として保持される。同様に、
手続き又はテスト・ユニツトは複数のセツシヨ
ンの間に1度だけ実行される。パラメータはグ
ローバル証拠ノードと同じように評価される。
グローバル属性を割り当てられたノードは複数
のセツシヨンの間、その重み又は値を保持す
る。もし証拠ノード又は外部ノードがグローバ
ルであれば、それが参照する質問又は手続きは
行なわれ得るが、そのノードは更新又は再評価
されない。もし(「AND/OR」又は「NOT」
等の)中間ノードにグローバル属性が割り当て
られたならば、その下の木は複数のセツシヨン
間に再評価されない。
ール・ベースの間で、又はセツシヨンが中断さ
れた場合同じルール・ベース間で、収集された
データを受け渡すためにこのシステムによつて
用いられている主な手段の1つは、各ノードへ
のグローバル又はローカルの属性の割り当てに
関係している。グローバル属性はルール木の中
のどのノードに割り当ててもよい。例えば、シ
ステムにより実行される最初のルール・ベース
があるテスト・ユニツトを動作させる事によつ
てハードウエア構成を決定するものと仮定す
る。もし操作者がシステムのいくつかの構成要
素、即ちプリンタ、デイスク・ドライブ及びキ
ーボードを診断しようとすると、各構成要素毎
に新しいセツシヨンを行なう事もあり得る。も
ちろん、全てのセツシヨンのために1回だけの
構成テストを行ない次にその情報を種々のセグ
メント化されたルール・ベースに渡す方がより
効率的である。同様に、テストされる各構成要
素が別々のルール・ベースを必要にするなら
ば、構成情報は全てのルール・ベースに渡され
なければならない。以前に述べたように、どの
ノードにもグローバル属性を与える事ができ
る。もし証拠ノードがグローバルであれば、質
問は複数のセツシヨンの間に1回だけしか行な
われない。操作者が与える答は全セツシヨンに
わたつて、その値として保持される。同様に、
手続き又はテスト・ユニツトは複数のセツシヨ
ンの間に1度だけ実行される。パラメータはグ
ローバル証拠ノードと同じように評価される。
グローバル属性を割り当てられたノードは複数
のセツシヨンの間、その重み又は値を保持す
る。もし証拠ノード又は外部ノードがグローバ
ルであれば、それが参照する質問又は手続きは
行なわれ得るが、そのノードは更新又は再評価
されない。もし(「AND/OR」又は「NOT」
等の)中間ノードにグローバル属性が割り当て
られたならば、その下の木は複数のセツシヨン
間に再評価されない。
またグローバル属性は、複数のルール・ベー
スが同じセツシヨン中に実行される時に、ルー
ル・ベース間で値を受け渡すためにも使われ
る。1つのセツシヨンは、1つの問題に対する
解を決定するためのルール・ベースの実行と定
義される。
スが同じセツシヨン中に実行される時に、ルー
ル・ベース間で値を受け渡すためにも使われ
る。1つのセツシヨンは、1つの問題に対する
解を決定するためのルール・ベースの実行と定
義される。
またグローバル属性は、複数のルール・ベー
スが実行される時に、ルール・ベース間で値を
受け渡すためにも使われる。もし証拠ノード、
パラメータ、又はテスト・ユニツトの結果に関
するいずれかの値が複数ルール・ベース間で必
要であれば、その答、テスト・ユニツト、手続
き、又はパラメータは両方のルール・ベース中
でグローバル属性を与えられる。グローバル属
性を有するノードに1つのルール・ベース中で
値が与えられると、その値は両方のルール・ベ
ース中に保持される。グローバル属性を与えら
れた復数のノードは再質問又は再実行されない
が、同じ値を与えられる。
スが実行される時に、ルール・ベース間で値を
受け渡すためにも使われる。もし証拠ノード、
パラメータ、又はテスト・ユニツトの結果に関
するいずれかの値が複数ルール・ベース間で必
要であれば、その答、テスト・ユニツト、手続
き、又はパラメータは両方のルール・ベース中
でグローバル属性を与えられる。グローバル属
性を有するノードに1つのルール・ベース中で
値が与えられると、その値は両方のルール・ベ
ース中に保持される。グローバル属性を与えら
れた復数のノードは再質問又は再実行されない
が、同じ値を与えられる。
ルール木の中のノードは参照ノードを用いれ
ば別の木を参照する事ができる。参照されるノ
ードには、一意的な名前属性が与えられる。参
照する側のノードは、その名前のノードを参照
し、その参照されたノードの値が与えられる。
参照ノード及び参照する側のノードの両者にグ
ローバル属性を与える事によつて別のルール・
ベース中のノードを参照する事が可能である。
ば別の木を参照する事ができる。参照されるノ
ードには、一意的な名前属性が与えられる。参
照する側のノードは、その名前のノードを参照
し、その参照されたノードの値が与えられる。
参照ノード及び参照する側のノードの両者にグ
ローバル属性を与える事によつて別のルール・
ベース中のノードを参照する事が可能である。
要約すると、グローバル属性は、複数のセツ
シヨン間でルール・ノード、パラメータ、手続
き又は質問の値をシステムが保持し、且つルー
ル・ノードに割り当てられた値を複数のルー
ル・ベースの間で受け渡す事を可能にする。こ
れらの能力の両者は、文脈的ユニツトにセグメ
ント化されたルール・ベースを有するエキスパ
ート・システムに必要である。
シヨン間でルール・ノード、パラメータ、手続
き又は質問の値をシステムが保持し、且つルー
ル・ノードに割り当てられた値を複数のルー
ル・ベースの間で受け渡す事を可能にする。こ
れらの能力の両者は、文脈的ユニツトにセグメ
ント化されたルール・ベースを有するエキスパ
ート・システムに必要である。
ローカル(LOCAL)
ローカル属性は、コンサルテーシヨン・セツ
シヨンの間にデータが変化する時、データ及び
証拠ノードをシステムが連続的に更新する事を
可能にする。システムは静的又は動的なデータ
を収集し且つこの2つの型の情報を区別する能
力を有している。
シヨンの間にデータが変化する時、データ及び
証拠ノードをシステムが連続的に更新する事を
可能にする。システムは静的又は動的なデータ
を収集し且つこの2つの型の情報を区別する能
力を有している。
もし証拠ノードにおける質問が毎回行なわれ
るべきであれば、その質問はローカル属性が与
えられなければならない。同様に、もしテス
ト・ユニツトが毎回実行されるならば、それは
外部ノードにおいて参照され且つローカル属性
が与えられなければならない。ローカル属性は
後述する再質問属性とは違つている。再質問属
性は、再質問属性を有するノードが評価される
時にだけクラスが再質問される事を指定する。
一方、ローカル属性は、それが、証拠ノード中
で参照される毎に質問が再び行なわれる事を指
示する。この同じ相違点が、手続きノードに対
するローカル属性と後述する再実行属性の割り
当ての間にも存在する。
るべきであれば、その質問はローカル属性が与
えられなければならない。同様に、もしテス
ト・ユニツトが毎回実行されるならば、それは
外部ノードにおいて参照され且つローカル属性
が与えられなければならない。ローカル属性は
後述する再質問属性とは違つている。再質問属
性は、再質問属性を有するノードが評価される
時にだけクラスが再質問される事を指定する。
一方、ローカル属性は、それが、証拠ノード中
で参照される毎に質問が再び行なわれる事を指
示する。この同じ相違点が、手続きノードに対
するローカル属性と後述する再実行属性の割り
当ての間にも存在する。
もし証拠ノード又は外部ノードにローカル属
性が与えられたならば、そのノードは、それが
参照しているテスト・ユニツト又は質問が別の
ノードから尋ねられるか又は実行された時に、
更新されない。その代りに、そのノードはシス
テムによつて選択された時にだけ更新される。
性が与えられたならば、そのノードは、それが
参照しているテスト・ユニツト又は質問が別の
ノードから尋ねられるか又は実行された時に、
更新されない。その代りに、そのノードはシス
テムによつて選択された時にだけ更新される。
ローカル属性は、例えば、プリンタの診断中
に操作者に多数回質問するために使用される。
もしシステムが連続的にユーザにハードウエア
を調整するように指示する場合、ユーザがハー
ドウエアの調整を終える毎にユーザに同じ質問
「テスト行がプリンタに印字されていますか?」
を行なう必要がある。この時、答はユーザが取
つたステツプにより変化する可能性がある。こ
の場合証拠ノード又は質問がローカル属性を割
り当てられるであろう。
に操作者に多数回質問するために使用される。
もしシステムが連続的にユーザにハードウエア
を調整するように指示する場合、ユーザがハー
ドウエアの調整を終える毎にユーザに同じ質問
「テスト行がプリンタに印字されていますか?」
を行なう必要がある。この時、答はユーザが取
つたステツプにより変化する可能性がある。こ
の場合証拠ノード又は質問がローカル属性を割
り当てられるであろう。
高/低(HIGH/LOW)
使用法:高及び低の属性はルール・ノードに関
して使用される。これらは必ずしも必要なも
のではない。もし指定されていなければ、
各々デフオールト値は1及び0になる。
して使用される。これらは必ずしも必要なも
のではない。もし指定されていなければ、
各々デフオールト値は1及び0になる。
機能:各々、高及び低の属性を用いて、ノード
に関する高しきい値及び低しきい値が指定さ
れる。あるノードに関して計算された確信度
が高しきい値以上であれば、そのノードは頁
であると考えられる。もし確信度が低しきい
値以下であれば、そのノードは偽であると考
えられる。しきい値は、正規属性を適用する
時にも重要である。これらのしきい値及びそ
れらの作用のし方は、以前に説明した。
に関する高しきい値及び低しきい値が指定さ
れる。あるノードに関して計算された確信度
が高しきい値以上であれば、そのノードは頁
であると考えられる。もし確信度が低しきい
値以下であれば、そのノードは偽であると考
えられる。しきい値は、正規属性を適用する
時にも重要である。これらのしきい値及びそ
れらの作用のし方は、以前に説明した。
初期(INITIAL)
使用法:初期属性はクラス、パラメータ、手続
き呼び出し、又は、ルール・ノードに指定で
きる。これは必ずしも必要なものではない。
き呼び出し、又は、ルール・ノードに指定で
きる。これは必ずしも必要なものではない。
機能:通常のルール処理が開始する前に、初期
属性が与えられたオブジエクトが評価され
る。初期属性の与えられた手続きが最初に実
行され、次に初期属性の与えられたルール・
ノードが評価され、3番目に初期属性の与え
られたクラスが評価され、最後に初期属性の
与えられたパラメータが評価される。初期属
性を有する全ての初期オブジエクトが評価さ
れた後、ルール・ベースの残りが処理され
る。
属性が与えられたオブジエクトが評価され
る。初期属性の与えられた手続きが最初に実
行され、次に初期属性の与えられたルール・
ノードが評価され、3番目に初期属性の与え
られたクラスが評価され、最後に初期属性の
与えられたパラメータが評価される。初期属
性を有する全ての初期オブジエクトが評価さ
れた後、ルール・ベースの残りが処理され
る。
ロード(LOAD)
使用法:ロード属性は手続き呼び出しの定義と
共にしか使用されない。これは必ずしも必要
なものではない。機能(実行、ロード又は削
除)が指定されていなければ、デフオールト
は「実行」である。
共にしか使用されない。これは必ずしも必要
なものではない。機能(実行、ロード又は削
除)が指定されていなければ、デフオールト
は「実行」である。
機能:ロード属性は、手続きが(実行又は削除
ではなく)ロードされるべき時に、手続き呼
び出し定義に関して指定される。
ではなく)ロードされるべき時に、手続き呼
び出し定義に関して指定される。
名前(NAME)
使用法:名前属性はルール・ノード又は、手続
き呼び出し定義のいずれかに与える事ができ
る。これは2つの場合に明白に異なつた機能
を有する。ルール・ノードの場合これは必ず
しも必要なものではない。一方手続き呼び出
し定義の場合、これは必要な属性である。
き呼び出し定義のいずれかに与える事ができ
る。これは2つの場合に明白に異なつた機能
を有する。ルール・ノードの場合これは必ず
しも必要なものではない。一方手続き呼び出
し定義の場合、これは必要な属性である。
機能:ルール・ノードの場合、名前属性はノー
ドに名前を与える事を可能にする。この名前
は、その名前を有するノードが頭に来る部分
木を参照ノードによつて参照する事を可能に
する。参照ノードにおける名前属性は、どの
ノードが参照されるかを指定する。ノードに
名前を与える事は、ルール・フアイルをデバ
ツグする時にも有用である。一方、手続き呼
び出し定義における名前属性は呼び出される
手続きの名前を指定する。
ドに名前を与える事を可能にする。この名前
は、その名前を有するノードが頭に来る部分
木を参照ノードによつて参照する事を可能に
する。参照ノードにおける名前属性は、どの
ノードが参照されるかを指定する。ノードに
名前を与える事は、ルール・フアイルをデバ
ツグする時にも有用である。一方、手続き呼
び出し定義における名前属性は呼び出される
手続きの名前を指定する。
正規(NORMAL)
使用法:正規属性はルール・ノードと共にしか
使用できない。これは必ずしも必要なもので
はない。
使用できない。これは必ずしも必要なもので
はない。
機能:正規属性が、あるノードに指定される
と、ノードの確信度はそれがその親ノードに
渡される前に正規化される。正規化機能につ
いては、以前に説明した。正規化機能は必ず
しも高及び低のしきい値を必要としないが、
しきい値に関してデフオールト値が仮定され
た場合そのノードの正規化は何の影響も与え
ない。正規化機能はノードの値を計算する時
の最後のステツプである。もし他のノード
が、正規属性を有するノードを参照すると、
それは正規化された値を受け取る。
と、ノードの確信度はそれがその親ノードに
渡される前に正規化される。正規化機能につ
いては、以前に説明した。正規化機能は必ず
しも高及び低のしきい値を必要としないが、
しきい値に関してデフオールト値が仮定され
た場合そのノードの正規化は何の影響も与え
ない。正規化機能はノードの値を計算する時
の最後のステツプである。もし他のノード
が、正規属性を有するノードを参照すると、
それは正規化された値を受け取る。
伝達(PASS)
使用法:伝達属性は手続き呼び出し定義と共に
しか使用されない。これは必ずしも必要なも
のではない。
しか使用されない。これは必ずしも必要なも
のではない。
機能:伝達属性は、手続きが呼び出された時に
それに渡すべきものを指定する。伝達属性
は、実際に渡される値、クラス名、別の手続
きから返される値、又は渡される値の型を指
定できる。もし型だけが指定されたならば、
値は外部ノード中にセツトされなければなら
ない。渡されるパラメータは、フルワードの
整数、16進数、実数、2進数又は文字列が可
能である。
それに渡すべきものを指定する。伝達属性
は、実際に渡される値、クラス名、別の手続
きから返される値、又は渡される値の型を指
定できる。もし型だけが指定されたならば、
値は外部ノード中にセツトされなければなら
ない。渡されるパラメータは、フルワードの
整数、16進数、実数、2進数又は文字列が可
能である。
電源オフ(POWER OFF)
使用法:電源オフ属性はクラスと共にしか使用
されない。電源オフ属性有するクラスは値属
性を持つべきものではない。
されない。電源オフ属性有するクラスは値属
性を持つべきものではない。
機能:電源オフ属性は、このクラスのテキスト
がユーザに機械の電源オフを要求する事を示
す。この属性は、そのテキストが表示される
前にルール・ベースの状態を保存しなければ
ならない事をエキスパート・システムに知ら
せるために含まれなければならない。電源オ
フ属性を持つクラスは値属性を持つべきでは
ないが、これは機械の電源がオフにされるの
で、ユーザがこのクラスに与えられる答はエ
キスパート・システムによつて保存されない
からである。
がユーザに機械の電源オフを要求する事を示
す。この属性は、そのテキストが表示される
前にルール・ベースの状態を保存しなければ
ならない事をエキスパート・システムに知ら
せるために含まれなければならない。電源オ
フ属性を持つクラスは値属性を持つべきでは
ないが、これは機械の電源がオフにされるの
で、ユーザがこのクラスに与えられる答はエ
キスパート・システムによつて保存されない
からである。
PROC
使用法:PROC属性は外部ノードでしか使用さ
れない。
れない。
機能:外部ノードは手続き呼び出し定義を指定
しなければならない。これはPROC属性を用
いて行なわれる。指定されたIDは、手続自
体の名前に対立するものとして手続き呼び出
し定義の名前である。
しなければならない。これはPROC属性を用
いて行なわれる。指定されたIDは、手続自
体の名前に対立するものとして手続き呼び出
し定義の名前である。
戻り(RETURN)
使用法:戻り属性は手続き呼び出し定義と共に
しか用いられない。これは必ずしも必要もの
ではない。
しか用いられない。これは必ずしも必要もの
ではない。
機能:戻り属性は、手続きが呼び出された時に
返される変数を指定するために使われる。各
変数毎に、名前が指定される。これは外部ノ
ードがこの返られた変数を参照する事を可能
にする。また各変数毎に、フルワード整数、
実数、2進数、16進数、又は文字列等の変数
の型が指定される。
返される変数を指定するために使われる。各
変数毎に、名前が指定される。これは外部ノ
ードがこの返られた変数を参照する事を可能
にする。また各変数毎に、フルワード整数、
実数、2進数、16進数、又は文字列等の変数
の型が指定される。
SECT/STEP
使用法:SECT又はSETP属性はルール・ノー
ドと共に使用できる。これらは必ずしも必要
なものではない。ルール・ノードには複数の
SECT及びSETP属性が存在してもよい。し
かしながら、単一のノードには、与えられた
クラスに関して1つだけのSETC属性が、ま
た与えられたパラメータに関して1つだけの
SETP属性が存在し得る。
ドと共に使用できる。これらは必ずしも必要
なものではない。ルール・ノードには複数の
SECT及びSETP属性が存在してもよい。し
かしながら、単一のノードには、与えられた
クラスに関して1つだけのSETC属性が、ま
た与えられたパラメータに関して1つだけの
SETP属性が存在し得る。
機能:SETC及びSETPの属性は「活動」属性
である。SETC属性はクラスを特定の値にセ
ツトさせ、そしてSETP属性はパラメータを
特定の値にセツトさせる。この動作は、ノー
ドがそのノードに関する高しきい値以上の重
みを有すると評価された場合にだけ起きる。
クラスは定数値にセツトできる。また、
SETC属性が外部ノード中にあれば、クラス
はこの外部ノードによつて起動された手続き
から返された値にセツトできる。パラメータ
は文字列にセツトできる。また、SETP属性
が外部ノード中にあれば、パラメータは、こ
の外部ノードによつて起動された手続きから
返された文字列にセツトできる。
である。SETC属性はクラスを特定の値にセ
ツトさせ、そしてSETP属性はパラメータを
特定の値にセツトさせる。この動作は、ノー
ドがそのノードに関する高しきい値以上の重
みを有すると評価された場合にだけ起きる。
クラスは定数値にセツトできる。また、
SETC属性が外部ノード中にあれば、クラス
はこの外部ノードによつて起動された手続き
から返された値にセツトできる。パラメータ
は文字列にセツトできる。また、SETP属性
が外部ノード中にあれば、パラメータは、こ
の外部ノードによつて起動された手続きから
返された文字列にセツトできる。
テキスト(TEXT)
使用法:テキスト属性はクラス、パラメータ、
手続き呼び出し定義、又は目標、仮説もしく
は証拠のルール・ノードと共に使用できる。
もしクラス又はパラメータがユーザに質問を
する事によつて評価されるならば、そのクラ
ス又はパラメータに関してテキスト属性が必
要である。もしクラス又はパラメータが常に
内部的にセツトされるならばそれは必要な
い。
手続き呼び出し定義、又は目標、仮説もしく
は証拠のルール・ノードと共に使用できる。
もしクラス又はパラメータがユーザに質問を
する事によつて評価されるならば、そのクラ
ス又はパラメータに関してテキスト属性が必
要である。もしクラス又はパラメータが常に
内部的にセツトされるならばそれは必要な
い。
クラス、パラメータ又は証拠ノードに関する機
能:この場合、テキスト属性はユーザに提示
されるべき質問を供給する。クラスに関する
テキストは、そのクラスに関する値を得るた
めに提示される。パラメータに関するテキス
トはパラメータに与えられるテキスト文字列
値を得るために使われる。証拠ノードの場
合、もしノードがクラスを参照しなければ、
それはテキスト属性を用いて質問を与えなれ
ばならない。
能:この場合、テキスト属性はユーザに提示
されるべき質問を供給する。クラスに関する
テキストは、そのクラスに関する値を得るた
めに提示される。パラメータに関するテキス
トはパラメータに与えられるテキスト文字列
値を得るために使われる。証拠ノードの場
合、もしノードがクラスを参照しなければ、
それはテキスト属性を用いて質問を与えなれ
ばならない。
目標ノード、仮説ノード、又は手続き呼び出し
定義に関する機能:この場合、テキスト属性
はユーザのために情報を与えるが、応答は期
待されない。目標ノード又は仮説ノードに関
するテキストはその木に関する結論を述べた
ものである。このテキストは、目標又は仮説
が真と評価された場合、即ちそのノードに関
して計算された確信度が高しきい値以上にな
つた場合に、与えられる。手続き呼び出し定
義のために与えられるテキストは、手続きが
呼び出された時に提示される。これは何が起
きているかをユーザに知らせるものである。
例えば、「デイスケツトのテストが行なわれ
ています。」とか「お待ちください…これは
約5分かかります。」というテキストが表示
される。
定義に関する機能:この場合、テキスト属性
はユーザのために情報を与えるが、応答は期
待されない。目標ノード又は仮説ノードに関
するテキストはその木に関する結論を述べた
ものである。このテキストは、目標又は仮説
が真と評価された場合、即ちそのノードに関
して計算された確信度が高しきい値以上にな
つた場合に、与えられる。手続き呼び出し定
義のために与えられるテキストは、手続きが
呼び出された時に提示される。これは何が起
きているかをユーザに知らせるものである。
例えば、「デイスケツトのテストが行なわれ
ています。」とか「お待ちください…これは
約5分かかります。」というテキストが表示
される。
値(VALUE)
使用法:値属性はクラスと共にしか用いられな
い。多くの目的にとつて、これは必要な属性
であるが、ユーザからの応答が期待されない
ならば、これは省略してもよい。
い。多くの目的にとつて、これは必要な属性
であるが、ユーザからの応答が期待されない
ならば、これは省略してもよい。
機能:値属性はクラスのために2つの型の情報
を提供する。1つはそのクラスに関する許さ
れる答を示し、1つはどれ位多くの答が期待
されるかを示す。
を提供する。1つはそのクラスに関する許さ
れる答を示し、1つはどれ位多くの答が期待
されるかを示す。
特定される値は3つの形式の1つを取り得
る。
る。
1 個別的な文字列値のリスト。
(「Yes」「No」「maybel」)
2 数字の範囲。数字は整数、実数又は2進数
が可能である。
が可能である。
(1:15)
(2.2:4.3)
(‘00'xb:‘FF'xb)
範囲を指定する時、端のない区間は「*」
を用いて示される。
を用いて示される。
(1:*)
(*:10.0)
最初の例は任意の正整数(即ち1以上の任
意の整数)を許す。
意の整数)を許す。
3 型。この形式は、クラスが常に、ルール・
ノード中のSETC属性を用いて内部的にセツ
トされる時に使用される。クラスは内部的に
セツトされるので、ユーザは質問をされな
い。指定する必要のあるのは型だけである。
有効な型は、整数、実数、2進数、16進数、
又は文字列である。
ノード中のSETC属性を用いて内部的にセツ
トされる時に使用される。クラスは内部的に
セツトされるので、ユーザは質問をされな
い。指定する必要のあるのは型だけである。
有効な型は、整数、実数、2進数、16進数、
又は文字列である。
値属性によつて与えられる他の情報は、ク
ラスの質問に関して許された答の数である。
この数は正整数又は「任意(ANY)によつ
て示される。これはユーザに答を入力するよ
うに促す回数をシステムに知らせる。もし
「任意」が指定れると、システムは、ユーザ
が空行を入力するまでユーザに答を入力する
ように促し続ける。もし許された答の数が指
定されていなければ、デフオールトは1にな
る。
ラスの質問に関して許された答の数である。
この数は正整数又は「任意(ANY)によつ
て示される。これはユーザに答を入力するよ
うに促す回数をシステムに知らせる。もし
「任意」が指定れると、システムは、ユーザ
が空行を入力するまでユーザに答を入力する
ように促し続ける。もし許された答の数が指
定されていなければ、デフオールトは1にな
る。
クラスは値属性を全面的に消去してもよ
い。これは特別な値がユーザによつて入力さ
れない事を示す。その代りに、ユーザは単に
入力(ENTER)キーを押す。このオプシヨ
ンは、テキストが表示される必要があるが答
は期待されない時に使われる。例えば、ユー
ザは「プリンタのプラグが入つている事をチ
エツクして下さい。チエツクしたら入力キー
を押して下さい。」という表示を示される事
がある。この場合、ユーザからの答は期待さ
れない。クラスが値属性を持たない時、その
クラスを使用する証拠ノードはクラスの重み
に等しい確信度を受け取る。(即ち、それら
は1−重みは受け取らない。) 重み/定義済み重み(WEIGHT/
PREDEFIND WEIGHT) 使用法:重み又は定義済み重みの属性はクラ
ス、手続き呼び出し定義、又は証拠ノードと
共に使用し得る。これは必ずしも必要ではな
い。これが指定されていなければ、デフオー
ルトは1である。
い。これは特別な値がユーザによつて入力さ
れない事を示す。その代りに、ユーザは単に
入力(ENTER)キーを押す。このオプシヨ
ンは、テキストが表示される必要があるが答
は期待されない時に使われる。例えば、ユー
ザは「プリンタのプラグが入つている事をチ
エツクして下さい。チエツクしたら入力キー
を押して下さい。」という表示を示される事
がある。この場合、ユーザからの答は期待さ
れない。クラスが値属性を持たない時、その
クラスを使用する証拠ノードはクラスの重み
に等しい確信度を受け取る。(即ち、それら
は1−重みは受け取らない。) 重み/定義済み重み(WEIGHT/
PREDEFIND WEIGHT) 使用法:重み又は定義済み重みの属性はクラ
ス、手続き呼び出し定義、又は証拠ノードと
共に使用し得る。これは必ずしも必要ではな
い。これが指定されていなければ、デフオー
ルトは1である。
クラスに関する機能:あらゆるクラスはそれに
付随する重みを有している。この重みは−1
と1との間の数であり、そのクラスに関して
与えられた答にどれ位の確信度が伴うべきか
を示す。重み又は定義済み重みの属性はこの
重みをセツトするために使われる。もし単な
る重み属性がノードに与えられたならば、ユ
ーザは最初に重みを入力するように要求され
る。ユーザがそれを断つた場合に限つて、重
み属性によつて指定された値が使われる。も
し定義済み重みの属性がノードに与えられて
いれば、ユーザは重みについて質問される事
はない。その時は定義済み重みによつて定義
された値が使われる。
付随する重みを有している。この重みは−1
と1との間の数であり、そのクラスに関して
与えられた答にどれ位の確信度が伴うべきか
を示す。重み又は定義済み重みの属性はこの
重みをセツトするために使われる。もし単な
る重み属性がノードに与えられたならば、ユ
ーザは最初に重みを入力するように要求され
る。ユーザがそれを断つた場合に限つて、重
み属性によつて指定された値が使われる。も
し定義済み重みの属性がノードに与えられて
いれば、ユーザは重みについて質問される事
はない。その時は定義済み重みによつて定義
された値が使われる。
手続きに関する機能:各手続き呼び出し定義は
それに付随する重みを有する。この重みは−
1と1との間の数字であつて、返された値に
どの位の確信度を与えるべきかを示す。重み
又は定義済み重みの属性はこの重みをセツト
するために使われる。もしいずれの属性も使
われていなければ、重みのデフオールド値は
1である。ノードに重み又は定義済みの重み
の属性が与えられていれば、この属性によつ
て定義される値が手続き呼び出し定義に与え
られる。ユーザは手続き呼び出し定義のため
の重みを与えられるようには要求されない。
それに付随する重みを有する。この重みは−
1と1との間の数字であつて、返された値に
どの位の確信度を与えるべきかを示す。重み
又は定義済み重みの属性はこの重みをセツト
するために使われる。もしいずれの属性も使
われていなければ、重みのデフオールド値は
1である。ノードに重み又は定義済みの重み
の属性が与えられていれば、この属性によつ
て定義される値が手続き呼び出し定義に与え
られる。ユーザは手続き呼び出し定義のため
の重みを与えられるようには要求されない。
証拠ノードに関する機能:もし証拠ノードがク
ラスを参照せず、それ自身の質問をするなら
ば、それは重み又は定義済み重みのいずれか
の属性を持ち得る。もしどの属性も指定され
ていなければ、ユーザは0.0と1.0との間の数
字が入力するように促される。もし定義済み
重みが使用されると、ユーザは「Yes」又は
「No」を答えるように促される。ユーザが
「Yes」と答えると定義済みの重みがそのノ
ードに与えられる。もしユーザが「No」と
答えると、1から定義済み重みを引いた値が
そのノードに与えられる。もし重み属性が指
定されていれば、ユーザは「Yes」「No」又
は0.0と1.0との間の重みを入力するように促
される。もし「Yes」と入力すれば、ノード
は上記重みを与えられる。「No」と入力すれ
ば、ノードに1−重みが与えられる。もし数
字を入力すれば、ノードはその重みが与えら
れる。
ラスを参照せず、それ自身の質問をするなら
ば、それは重み又は定義済み重みのいずれか
の属性を持ち得る。もしどの属性も指定され
ていなければ、ユーザは0.0と1.0との間の数
字が入力するように促される。もし定義済み
重みが使用されると、ユーザは「Yes」又は
「No」を答えるように促される。ユーザが
「Yes」と答えると定義済みの重みがそのノ
ードに与えられる。もしユーザが「No」と
答えると、1から定義済み重みを引いた値が
そのノードに与えられる。もし重み属性が指
定されていれば、ユーザは「Yes」「No」又
は0.0と1.0との間の重みを入力するように促
される。もし「Yes」と入力すれば、ノード
は上記重みを与えられる。「No」と入力すれ
ば、ノードに1−重みが与えられる。もし数
字を入力すれば、ノードはその重みが与えら
れる。
再質問/再実行(RE−ASK/RE−
EXECUTE) 再質問及び再実行の属性は、操作者又はハー
ドウエアから集めたデータ及び証拠をシステム
が連続的に変更する能力をシステムに提供す
る。例えばハードウエアの診断中に、条件が変
化すると、証拠も変化する可能性がある。従つ
て、目標は最も最近の利用可能な証拠に基いて
到達される。
EXECUTE) 再質問及び再実行の属性は、操作者又はハー
ドウエアから集めたデータ及び証拠をシステム
が連続的に変更する能力をシステムに提供す
る。例えばハードウエアの診断中に、条件が変
化すると、証拠も変化する可能性がある。従つ
て、目標は最も最近の利用可能な証拠に基いて
到達される。
選択的に操作者へ再質問するか又はハードウ
エア上のテスト・ユニツトを選択的に再実行す
る事が必要な事がある。例えば、ケーブル接続
をテストするテスト・ユニツトが実行される事
があるかもしれない。もしテストが最初失敗し
たならば、操作者は新しいケーブルを取り付け
るように要求されるであろう。そして次にテス
ト・ユニツトは接続を確認するために2番目の
テストを実行する。また同様に、システムはユ
ーザに「プリンタのスイツチが入つています
か?」と尋ねる事があるかもしれない。もし入
つていなければ、ユーザはスイツチを入れるよ
うに要求され、質問が繰り返されるであろう。
もし質問が再度行なわれるのであればその質問
への参照を含む証拠ノードに再質問の属性が与
えられる。同様に、テスト・ユニツトが再実行
されるならば、そのテスト・ユニツトへの参照
を含む外部ノードに再実行の属性が与えられ
る。質問が行なわれる最初の時、同じ質問を参
照するが再質問属性を持たない証拠のノードの
みが、答に依存して、評価され「真」又は
「偽」に更新される。システムが再質問属性を
有する証拠ノードを選択した時、たとえば以前
に質問がされていたとしても、質問が再び行な
われる。再実行属性を有する外部ノードは、再
質問属性を有する証拠ノードと同様に評価され
る。
エア上のテスト・ユニツトを選択的に再実行す
る事が必要な事がある。例えば、ケーブル接続
をテストするテスト・ユニツトが実行される事
があるかもしれない。もしテストが最初失敗し
たならば、操作者は新しいケーブルを取り付け
るように要求されるであろう。そして次にテス
ト・ユニツトは接続を確認するために2番目の
テストを実行する。また同様に、システムはユ
ーザに「プリンタのスイツチが入つています
か?」と尋ねる事があるかもしれない。もし入
つていなければ、ユーザはスイツチを入れるよ
うに要求され、質問が繰り返されるであろう。
もし質問が再度行なわれるのであればその質問
への参照を含む証拠ノードに再質問の属性が与
えられる。同様に、テスト・ユニツトが再実行
されるならば、そのテスト・ユニツトへの参照
を含む外部ノードに再実行の属性が与えられ
る。質問が行なわれる最初の時、同じ質問を参
照するが再質問属性を持たない証拠のノードの
みが、答に依存して、評価され「真」又は
「偽」に更新される。システムが再質問属性を
有する証拠ノードを選択した時、たとえば以前
に質問がされていたとしても、質問が再び行な
われる。再実行属性を有する外部ノードは、再
質問属性を有する証拠ノードと同様に評価され
る。
E−10 ルール・ベース間での情報の受け渡し
ルール・ベースがセグメント化されている
時、ルール・ベース間で情報を受け渡す事の必
要性は明白である。例えば、ルール・ベースを
呼び出す時、呼び出されたルール・ベースに、
クラスへの値又はパラメータへの答等の何らか
の初期情報を渡す必要性がある。また、同じ項
目を複数回テストするために、同じルール・ベ
ースを複数回呼び出す事もある。これは、例え
ば、同じシステム上にあるデイスク・ドライブ
を数回テストするために行なわれるであろう。
この時、呼び出されたルール・ベースが正しい
装置を正しい方法でテストするために、ドライ
ブ速度等のあるクラスが最初にセツトされなけ
ればならない。1つのルール・ベースからの結
論が他のルール・ベースの結論に影響を与える
事もある。従つて、1つのルール・ベース中の
ノードが他のルール・ベース中のノードを参照
する事が必要である。ある手続きは1度しか実
行されないが、それらの手続きによつて返され
た値はいくつかのルール・ベースによつて使用
される事がある。従つてルール・ベース間で手
続き情報を受け渡す方法が存在しなければなら
ない。良好な実施例の診断のアプリケーシヨン
の場合、いくらかの情報が、エキスパート・シ
ステムの呼び出される前に、ユーザから集めら
れる。この質問を繰り返さないですむように、
この情報をシステムに渡す方法が必要である。
時、ルール・ベース間で情報を受け渡す事の必
要性は明白である。例えば、ルール・ベースを
呼び出す時、呼び出されたルール・ベースに、
クラスへの値又はパラメータへの答等の何らか
の初期情報を渡す必要性がある。また、同じ項
目を複数回テストするために、同じルール・ベ
ースを複数回呼び出す事もある。これは、例え
ば、同じシステム上にあるデイスク・ドライブ
を数回テストするために行なわれるであろう。
この時、呼び出されたルール・ベースが正しい
装置を正しい方法でテストするために、ドライ
ブ速度等のあるクラスが最初にセツトされなけ
ればならない。1つのルール・ベースからの結
論が他のルール・ベースの結論に影響を与える
事もある。従つて、1つのルール・ベース中の
ノードが他のルール・ベース中のノードを参照
する事が必要である。ある手続きは1度しか実
行されないが、それらの手続きによつて返され
た値はいくつかのルール・ベースによつて使用
される事がある。従つてルール・ベース間で手
続き情報を受け渡す方法が存在しなければなら
ない。良好な実施例の診断のアプリケーシヨン
の場合、いくらかの情報が、エキスパート・シ
ステムの呼び出される前に、ユーザから集めら
れる。この質問を繰り返さないですむように、
この情報をシステムに渡す方法が必要である。
何らかのオブジエクトに付随する情報がルー
ル・ベース間で受け渡される必要がある場合、
そのオブジエクトは「グローバル」の属性が与
えられる。これは、それが1つ以上のルール・
ベースで使用されているかもしれない情報であ
る事をシステムに知らせる。グローバル属性に
ついては以前に説明した。
ル・ベース間で受け渡される必要がある場合、
そのオブジエクトは「グローバル」の属性が与
えられる。これは、それが1つ以上のルール・
ベースで使用されているかもしれない情報であ
る事をシステムに知らせる。グローバル属性に
ついては以前に説明した。
E−11 グローバル・リスト
第1図のスーパバイザ・プログラム12は、グ
ローバル・オブジエクトのリストを保持し、そ
のリストを最新の値を用いて維持し、そしてこ
のリストから得た値を用いてルール・ベースを
更新するように機能する。グローバルであると
定義された任意の型のオブジエクトに関する情
報を記憶する単一リンク・リストが保持され
る。このリストはグローバル・リストと呼ばれ
る。リンク・リストの各レコードは下記の情報
を保持する。
ローバル・オブジエクトのリストを保持し、そ
のリストを最新の値を用いて維持し、そしてこ
のリストから得た値を用いてルール・ベースを
更新するように機能する。グローバルであると
定義された任意の型のオブジエクトに関する情
報を記憶する単一リンク・リストが保持され
る。このリストはグローバル・リストと呼ばれ
る。リンク・リストの各レコードは下記の情報
を保持する。
1 オブジエクトの名前。
2 オブジエクトの型、例えばクラス、手続
き、パラメータ、又はルール・ノード。これ
は正しいオブジエクトが置かれている事を2
重チエツクするために使われ、また異なつた
型のオブジエクトに同じ名前を与える事を可
能にする。
き、パラメータ、又はルール・ノード。これ
は正しいオブジエクトが置かれている事を2
重チエツクするために使われ、また異なつた
型のオブジエクトに同じ名前を与える事を可
能にする。
3 ブール変数IN−CURRENT−
RULEBASE。これは現在のルール・ベース
中にグローバルなオブジエクトが存在すれば
真になる。
RULEBASE。これは現在のルール・ベース
中にグローバルなオブジエクトが存在すれば
真になる。
4 クラス又はパラメータが質問されたか否
か、又は手続きが実行されたか否かを示すた
めに使われるブール変数。
か、又は手続きが実行されたか否かを示すた
めに使われるブール変数。
5 クラス、ルール・ノード又は手続きに付随
する確信度。
する確信度。
6 クラスに関する答、又はパラメータ、又は
手続きに関して返される値を保持する応答リ
ストへのポインタ。
手続きに関して返される値を保持する応答リ
ストへのポインタ。
7 リストをリンクされたリストにする、次の
グローバル・レコードへのポインタ。
グローバル・レコードへのポインタ。
スーパバイザ・プログラム12は下記のよう
にしてグローバル・リストを維持する。ルー
ル・ベースが読み込まれる時、グローバル属性
を有するオブジエクトに出合うと、そのオブジ
エクトがリスト上にあるかどうかを見るために
グローバル・リストのサーチが行なわれる。も
しそれがリスト上にあれば、グローバル・リス
ト上に存在する情報がスーパバイザから得ら
れ、残りの情報がデイスケツトから読み取られ
る。もし、そのオブジエクトがグローバル・リ
スト上になければ、それはデイスケツトからリ
ストに付け加えられる。そのオブジエクトに関
する全ての情報はデイスケツトから読み取られ
る。いずれの場合にも、ブール変数IN−
CURRENT−RULEBASEは真にセツトされ
る。
にしてグローバル・リストを維持する。ルー
ル・ベースが読み込まれる時、グローバル属性
を有するオブジエクトに出合うと、そのオブジ
エクトがリスト上にあるかどうかを見るために
グローバル・リストのサーチが行なわれる。も
しそれがリスト上にあれば、グローバル・リス
ト上に存在する情報がスーパバイザから得ら
れ、残りの情報がデイスケツトから読み取られ
る。もし、そのオブジエクトがグローバル・リ
スト上になければ、それはデイスケツトからリ
ストに付け加えられる。そのオブジエクトに関
する全ての情報はデイスケツトから読み取られ
る。いずれの場合にも、ブール変数IN−
CURRENT−RULEBASEは真にセツトされ
る。
ルール・ベースが読み込まれた後、推論機構
13が起動される。他のルール・ベースが呼び
出されるか又は現在のルール・ベースが使い尽
された時、制御はスーパバイザ12に戻され
る。現在のルール・ベースをデイスケツト・フ
アイルに記憶する前に、そこで得られた情報を
用いてグローバル・リストを更新しなければな
らない。グローバル・リストは、ブール変数
IN−CURRENT−RULEBASEが真にセツト
されたオブジエクトをサーチされる。そのよう
なオブジエクトは、現在の情報を用いて更新さ
れ、上記ブール変数は偽にリセツトされる。
13が起動される。他のルール・ベースが呼び
出されるか又は現在のルール・ベースが使い尽
された時、制御はスーパバイザ12に戻され
る。現在のルール・ベースをデイスケツト・フ
アイルに記憶する前に、そこで得られた情報を
用いてグローバル・リストを更新しなければな
らない。グローバル・リストは、ブール変数
IN−CURRENT−RULEBASEが真にセツト
されたオブジエクトをサーチされる。そのよう
なオブジエクトは、現在の情報を用いて更新さ
れ、上記ブール変数は偽にリセツトされる。
従つて、この時点で、グローバル・リストは
更新され、次のルール・ベースの読み込みは最
新の情報を用いて行なわれる。システムへの情
報の伝達のうち最も複雑なケースの1つは、1
つのルール・ベース中のノードが別のルール・
ベース中のノードを参照する時である。グロー
バル・オブジエクトのリストは、この機能に関
しても使用される。通常の場合、ノードが同じ
ルール・ベース中の別のノードを参照する時、
参照するノードは参照されるノードに対するポ
インタを有している。従つてそれは位置を見い
出す事及び確信度を得る事が可能である。現在
のルール・ベース中のノードが別のルール・ベ
ース中のノードを参照する時、参照されるノー
ドは現行のルール・ベース中はもとよりメモリ
中にも存在しないので、それに対するポインタ
は有りえない。この障害はグローバル・リスト
を用いて克服される。参照するノードにはグロ
ーバル属性が与えられるので、その確信度はグ
ローバル・リスト上に記憶されている。スーパ
バイザは、メモリ中にないノードを参照してい
るルール・ベースが読取られる時を認識確認す
る。その時スーパバイザは現行のルール・ベー
スに関するダミー・ノードを作成し、グローバ
ル・リスト上に記憶された参照ノードの名前及
び確信度をそのダミー・ノードに与える。現行
のルール・ベースにおいて、メモリ外のノード
に対する参照は、このダミー・ノードを現行の
ルール・ベース中のノードであるかのように同
じ方法で指示する。この時推論機構13はグロ
ーバルな参照を通常の参照のように取り扱い、
何の相違も認識しない。
更新され、次のルール・ベースの読み込みは最
新の情報を用いて行なわれる。システムへの情
報の伝達のうち最も複雑なケースの1つは、1
つのルール・ベース中のノードが別のルール・
ベース中のノードを参照する時である。グロー
バル・オブジエクトのリストは、この機能に関
しても使用される。通常の場合、ノードが同じ
ルール・ベース中の別のノードを参照する時、
参照するノードは参照されるノードに対するポ
インタを有している。従つてそれは位置を見い
出す事及び確信度を得る事が可能である。現在
のルール・ベース中のノードが別のルール・ベ
ース中のノードを参照する時、参照されるノー
ドは現行のルール・ベース中はもとよりメモリ
中にも存在しないので、それに対するポインタ
は有りえない。この障害はグローバル・リスト
を用いて克服される。参照するノードにはグロ
ーバル属性が与えられるので、その確信度はグ
ローバル・リスト上に記憶されている。スーパ
バイザは、メモリ中にないノードを参照してい
るルール・ベースが読取られる時を認識確認す
る。その時スーパバイザは現行のルール・ベー
スに関するダミー・ノードを作成し、グローバ
ル・リスト上に記憶された参照ノードの名前及
び確信度をそのダミー・ノードに与える。現行
のルール・ベースにおいて、メモリ外のノード
に対する参照は、このダミー・ノードを現行の
ルール・ベース中のノードであるかのように同
じ方法で指示する。この時推論機構13はグロ
ーバルな参照を通常の参照のように取り扱い、
何の相違も認識しない。
また、グローバル・リストはシステムに値を
渡すためにも使われる。呼び出された時にシス
テムに渡されるパラメータの1つは、グローバ
ル・リストへのポインタである。もし何の情報
も渡されないならば、このポインタは空白であ
る。もし情報が渡される必要があれば、呼び出
し側のプログラムは、エキスパート・システム
が呼び出される前にグローバル・リスト上に情
報を記入する。
渡すためにも使われる。呼び出された時にシス
テムに渡されるパラメータの1つは、グローバ
ル・リストへのポインタである。もし何の情報
も渡されないならば、このポインタは空白であ
る。もし情報が渡される必要があれば、呼び出
し側のプログラムは、エキスパート・システム
が呼び出される前にグローバル・リスト上に情
報を記入する。
グローバル・オブジエクト即ちグローバル属
性を与えられたオブジエクトを使う事はシステ
ムの柔軟性を増大させる。情報は、システムが
起動された時にシステムに渡す事ができる。ク
ラス及びパラメータは1つのルール・ベース中
で評価され、他のルール・ベース中で使用でき
る。手続きは、たとえ2つの異なつたルール・
ベース中で使われていても、1度実行されるだ
けでよい。これは値が記憶され、グローバル・
リストを用いて渡されるからである。また別の
ルール・ベース中のノードを参照する事も可能
である。グローバル・オブジエクトは、単一ル
ール・ベース構造の利点を失なう事なく、セグ
メント化ルール・ベースに多くの利点を提供す
る。
性を与えられたオブジエクトを使う事はシステ
ムの柔軟性を増大させる。情報は、システムが
起動された時にシステムに渡す事ができる。ク
ラス及びパラメータは1つのルール・ベース中
で評価され、他のルール・ベース中で使用でき
る。手続きは、たとえ2つの異なつたルール・
ベース中で使われていても、1度実行されるだ
けでよい。これは値が記憶され、グローバル・
リストを用いて渡されるからである。また別の
ルール・ベース中のノードを参照する事も可能
である。グローバル・オブジエクトは、単一ル
ール・ベース構造の利点を失なう事なく、セグ
メント化ルール・ベースに多くの利点を提供す
る。
以前に説明したように、ルール・ベース11
は4つの主な部分(セクシヨン)、クラス、手
続き、パラメータ及びルールを有している。こ
れらは集合的にオブジエクトとも言う。これら
のセクシヨンの各々の概略説明は以前に行なつ
たが、サンプルを使つた、より詳細な説明を下
記に行なう。
は4つの主な部分(セクシヨン)、クラス、手
続き、パラメータ及びルールを有している。こ
れらは集合的にオブジエクトとも言う。これら
のセクシヨンの各々の概略説明は以前に行なつ
たが、サンプルを使つた、より詳細な説明を下
記に行なう。
E−12 クラス・セクシヨン
クラス・セクシヨンのサンプルは下記の通り
である。
である。
CLASSES
PRINTER
TEXT=‘問題点はプリンタに関係してい
るように思えますか?’ VALUE=10F(‘YES'‘NO') PREDEFINED WEIGHT=0.8 IBM5215 TEXT=‘IBM5215プリンタを使用いてい
ますか?’ EXPLANATION=‘機械の前面の右上の
隅に、IBMロゴの付いた銀色の金属の四
角形があります。この四角形の左下隅に4
桁の数字があります。これが、あなたの使
つているIBMプリンタの番号です。もし
この数字が5215ならば、それはIBM5215
プリンタです。’ VALUE=(‘YES'‘NO) INITIAL WEIGHT=1 GLOBAL SYMPTOM TEXT=‘次の症状のどれに気付きました
か: (1) 文字が印字されない (2) 文字が間違つて印字される (3) 文字が汚れている (4) 紙が曲つて送られる (5) 上記のどれでもない’ VALUE=ANY OF(1:5) PRINTER・LITE TEXT=‘プリンタの前面で灯が明滅して
いますか?’ VALUE=10F(‘YES'‘NO) PREDEFINED WEIGHT=1LOCAL 上記の例はクラス・セクシヨンがどのように
構成されているかを説明している。最初のワー
ドはCLASSESである。この後にクラスが定義
される。クラスの一般的な形式は:識別子(こ
れはクラス名である)及びそのクラスに関する
属性が(例えばTEXT、INITIAL等)続いた
ものである。この例では、クラスは、
PRINTER、IBM5215、SYMPTOM、
PRINTERLITEである。クラスに関する属性
はどの順序で現れてもよい。クラスの定義は次
のクラス名によつて終了する。他のセクシヨン
の開始はクラス・セクシヨンを終了させる。
るように思えますか?’ VALUE=10F(‘YES'‘NO') PREDEFINED WEIGHT=0.8 IBM5215 TEXT=‘IBM5215プリンタを使用いてい
ますか?’ EXPLANATION=‘機械の前面の右上の
隅に、IBMロゴの付いた銀色の金属の四
角形があります。この四角形の左下隅に4
桁の数字があります。これが、あなたの使
つているIBMプリンタの番号です。もし
この数字が5215ならば、それはIBM5215
プリンタです。’ VALUE=(‘YES'‘NO) INITIAL WEIGHT=1 GLOBAL SYMPTOM TEXT=‘次の症状のどれに気付きました
か: (1) 文字が印字されない (2) 文字が間違つて印字される (3) 文字が汚れている (4) 紙が曲つて送られる (5) 上記のどれでもない’ VALUE=ANY OF(1:5) PRINTER・LITE TEXT=‘プリンタの前面で灯が明滅して
いますか?’ VALUE=10F(‘YES'‘NO) PREDEFINED WEIGHT=1LOCAL 上記の例はクラス・セクシヨンがどのように
構成されているかを説明している。最初のワー
ドはCLASSESである。この後にクラスが定義
される。クラスの一般的な形式は:識別子(こ
れはクラス名である)及びそのクラスに関する
属性が(例えばTEXT、INITIAL等)続いた
ものである。この例では、クラスは、
PRINTER、IBM5215、SYMPTOM、
PRINTERLITEである。クラスに関する属性
はどの順序で現れてもよい。クラスの定義は次
のクラス名によつて終了する。他のセクシヨン
の開始はクラス・セクシヨンを終了させる。
E−13 パラメータ・セクシヨン
パラメータは、以前に説明したように、テキ
スト文字列値のための場所を保持するものとし
て使われる。この値はユーザによつて、又は手
続き呼び出しから提供される。パラメータがテ
キスト中で使用される時、パラメータ名は、名
前の始めに「$」記号を付けなければならな
い。これは、それがパラメータ名として認識さ
れる事を可能にする。パラメータは、テキスト
がユーザに表示される前に、それが表わしてい
る文字列によつて置き換えられなければならな
い。パラメータは任意のテキスト文字列内で使
用できる。
スト文字列値のための場所を保持するものとし
て使われる。この値はユーザによつて、又は手
続き呼び出しから提供される。パラメータがテ
キスト中で使用される時、パラメータ名は、名
前の始めに「$」記号を付けなければならな
い。これは、それがパラメータ名として認識さ
れる事を可能にする。パラメータは、テキスト
がユーザに表示される前に、それが表わしてい
る文字列によつて置き換えられなければならな
い。パラメータは任意のテキスト文字列内で使
用できる。
サンプルのパラメータ・セクシヨンは下記の
通りである。但し、パラメータ
PRINTERNUMBERは、クラス
「PRINTER」及びルール木1の目標テキスト
の中では$PRINTERNUMBERを使つて参照
されている事に注意されたい。
通りである。但し、パラメータ
PRINTERNUMBERは、クラス
「PRINTER」及びルール木1の目標テキスト
の中では$PRINTERNUMBERを使つて参照
されている事に注意されたい。
CLASSES
PRINTER
TEXT=‘問題点は、
$PRINTERNUMBERに関係しているよ
うに思いますか?’ VALUE=10F(‘YES'‘NO) PREDEFIND WEIGHT= 1PARAMETERS PRINTERNUMBER TEXT=‘プリンタの番号は何ですか?’ EXPLANATION=‘あなたのプリンタの
番号は4桁の数字です。それは、あなたの
機械の前面の右上隅に見つける事ができま
す。’ RULES % RULE TREE 1% 1GOAL TEXT=‘$PRINTERNUMBERプリンタ
に関してサービス要求番号151018を報告
して下さい’ 2 AND 3 EVIDENCE CLASS=(‘YES')OF
PRINTERLITE 3 EVIDENCE CLASS=2 OF SYMPTOM 上記例はパラメータ・セクシヨンの構成を説
明している。このセクシヨンの最初のワードは
キーワードPARAMETERSである。それはパ
ラメータ名が続く。各はパラメータ名の下に、
そのパラメータに与えられる属性のキーワード
が来る。
$PRINTERNUMBERに関係しているよ
うに思いますか?’ VALUE=10F(‘YES'‘NO) PREDEFIND WEIGHT= 1PARAMETERS PRINTERNUMBER TEXT=‘プリンタの番号は何ですか?’ EXPLANATION=‘あなたのプリンタの
番号は4桁の数字です。それは、あなたの
機械の前面の右上隅に見つける事ができま
す。’ RULES % RULE TREE 1% 1GOAL TEXT=‘$PRINTERNUMBERプリンタ
に関してサービス要求番号151018を報告
して下さい’ 2 AND 3 EVIDENCE CLASS=(‘YES')OF
PRINTERLITE 3 EVIDENCE CLASS=2 OF SYMPTOM 上記例はパラメータ・セクシヨンの構成を説
明している。このセクシヨンの最初のワードは
キーワードPARAMETERSである。それはパ
ラメータ名が続く。各はパラメータ名の下に、
そのパラメータに与えられる属性のキーワード
が来る。
属性には、その属性に関する値が続く。パラ
メータ定義内の属性の配列は特に意味がない。
パラメータ定義は次のパラメータ名によつて終
端する。パラメータ・セクシヨンは別のセクシ
ヨンの開始によつて終端する。
メータ定義内の属性の配列は特に意味がない。
パラメータ定義は次のパラメータ名によつて終
端する。パラメータ・セクシヨンは別のセクシ
ヨンの開始によつて終端する。
E−14 手続きセクシヨン
ルール・ベースの手続きセクシヨンは、手続
き呼び出しの定義を与える。それは、呼び出す
手続き、渡す変数、及び返される変数の名前と
型等の情報を提供する。手続きは外部ノードに
よつて呼び出され、手続きから返される値はそ
のノードで使われる。手続きが呼び出される
時、その手続き呼び出し定義を参照する外部ノ
ードは真又は偽に評価される。この評価は、手
続きから返された値及び外部ノードに与えられ
た比較に依存する。
き呼び出しの定義を与える。それは、呼び出す
手続き、渡す変数、及び返される変数の名前と
型等の情報を提供する。手続きは外部ノードに
よつて呼び出され、手続きから返される値はそ
のノードで使われる。手続きが呼び出される
時、その手続き呼び出し定義を参照する外部ノ
ードは真又は偽に評価される。この評価は、手
続きから返された値及び外部ノードに与えられ
た比較に依存する。
手続きセクシヨンのサンプルは下記の通りで
ある。これは手続き呼び出し定義を有するルー
ル・ベース・フアイルを示している。これはま
た、外部ノードでこの手続き出び出しを参照す
るルール・ノードも含んでいる。
ある。これは手続き呼び出し定義を有するルー
ル・ベース・フアイルを示している。これはま
た、外部ノードでこの手続き出び出しを参照す
るルール・ノードも含んでいる。
CLASS
……
PROCEDURES
PRINTERTEST1
NAME=PRINTERTU
PASS 32767 %SVC NUMBER%
RETURN STATUSBIT HEX(1)
END
PRINTERTEST2
NAME=PRINTERTU
PASS 99999 %SVC NUMBER%
RETURN STATUS HEX(1)ERROR
NUMBERINTEGER END DISKETTETEST NAME=DISKETTETU PASS 666890 RETURN ADDRESS INTEGER STADTUS HEX(1) END RULES 1 GOAL TEXT=‘あなたのプリンタに関してサービ
ス要求番号151018を報告して下さい’ 2 OR 3 EXTERNAL PROC=PRINTERTEST REEXECUTE STATUS NE‘00'XBERROR NUM LE
5 3 EVIDENCE CLASS=‘YES'OF PRENTERLITE 手続きセクシヨンの最初のワードは
PROCEDURESである。その後に、定義され
た手続き呼び出しのID(例えば、
PRINTERTEST1、DISKETTETEST)が続
く。各手続き呼び出しIDの後には、定義され
た手続き呼び出しに関する属性が続く。手続き
呼び出し定義内の属性の配列は特に意味を持た
ない。手続き呼び出し定義はワードENDで終
了する。他のセクシヨンの開始は手続きセクシ
ヨンを終了させる。
NUMBERINTEGER END DISKETTETEST NAME=DISKETTETU PASS 666890 RETURN ADDRESS INTEGER STADTUS HEX(1) END RULES 1 GOAL TEXT=‘あなたのプリンタに関してサービ
ス要求番号151018を報告して下さい’ 2 OR 3 EXTERNAL PROC=PRINTERTEST REEXECUTE STATUS NE‘00'XBERROR NUM LE
5 3 EVIDENCE CLASS=‘YES'OF PRENTERLITE 手続きセクシヨンの最初のワードは
PROCEDURESである。その後に、定義され
た手続き呼び出しのID(例えば、
PRINTERTEST1、DISKETTETEST)が続
く。各手続き呼び出しIDの後には、定義され
た手続き呼び出しに関する属性が続く。手続き
呼び出し定義内の属性の配列は特に意味を持た
ない。手続き呼び出し定義はワードENDで終
了する。他のセクシヨンの開始は手続きセクシ
ヨンを終了させる。
E−15 ルール・セクシヨ
ルールはルール木を定義するルール・ベー
ス・フアイルのセクシヨンである。木毎に、木
の各ノードが定義され、それに関する属性が指
定される。
ス・フアイルのセクシヨンである。木毎に、木
の各ノードが定義され、それに関する属性が指
定される。
ルールホに関する定義は次のルール木の開始
によつて終端する。
によつて終端する。
サンプルのセール・セクシヨンは次の通りで
ある。
ある。
% RULE TREE 1%
1 GOAL
TEXT=‘サービス要求番号151017を報告
して下さい’ HIGH=0.7 NAME=GOAL1 2 AND ASSO=0.8 3 AND NORMALIZE 4 EVIDENCE NAME=PRINTER1 ASSO=0.9 CLASS=(‘YES')OF PRINTER 4 EDVIDENCE NAME=RIBBONS CLASS=(‘NO')OF RIBBON 3 EVIDENCE NAME=SYMPTOM1 CLASS=1 OF SYMPTOM% RULE
TREE 2% 1 GOAL TEXT=‘$PRINTERNUMBER プリン
タに関してサービス要求番号151018を報告
して下さい’ 2 AND 3 NOT 4 REFERENCE NAME=RIBBON 3 EVIDENCE CLASS=(‘YES')OF PRINTER EVIDENCE CLASS=2 OF SYMPTOM 上記の例は、ルール・セクシヨンがどのよう
に構成されているかを説明する。ノードのレベ
ルは、ノード定義の始めの整数によつて示され
ている。ノードの順序は、深さ優先、左から右
への探索によつて定められる。木が現れる順序
は重要である。というのはそれは木がトレース
される順序に影響するからである。
して下さい’ HIGH=0.7 NAME=GOAL1 2 AND ASSO=0.8 3 AND NORMALIZE 4 EVIDENCE NAME=PRINTER1 ASSO=0.9 CLASS=(‘YES')OF PRINTER 4 EDVIDENCE NAME=RIBBONS CLASS=(‘NO')OF RIBBON 3 EVIDENCE NAME=SYMPTOM1 CLASS=1 OF SYMPTOM% RULE
TREE 2% 1 GOAL TEXT=‘$PRINTERNUMBER プリン
タに関してサービス要求番号151018を報告
して下さい’ 2 AND 3 NOT 4 REFERENCE NAME=RIBBON 3 EVIDENCE CLASS=(‘YES')OF PRINTER EVIDENCE CLASS=2 OF SYMPTOM 上記の例は、ルール・セクシヨンがどのよう
に構成されているかを説明する。ノードのレベ
ルは、ノード定義の始めの整数によつて示され
ている。ノードの順序は、深さ優先、左から右
への探索によつて定められる。木が現れる順序
は重要である。というのはそれは木がトレース
される順序に影響するからである。
E−16 記号セクシヨン
記号セクシヨンは、クラス、パラメータ、手
続き、及びルールのテキストの中で使われる記
号を定義するルール・ベースのセクシヨンであ
る。記号はテキスト文字列を表わす。記号は、
記号セクシヨンにおいて、テキスト文字列値を
与えられる。テキスト中の他の場所で、記号名
は、テキスト文字列全体をキー入力する代りに
用いられる。記号は、テキスト文字列が頻繁に
変更されるか又は同じテキスト文字列が多くの
異なつたテキスト中に現れる時に有用である。
また記号は、テキストがルール・ベース間で一
致している事を保証する事をより容易にする。
ルール作成者はルール・ベース中に記号セクシ
ヨンを含ませ、それらの記号をテキスト中で使
う事ができる。1人の人物が記号に関するテキ
スト文字列を書く事について責任を与えられ、
テキストを矛盾のない状態に保ち、且つ変更を
容易にする事ができる。
続き、及びルールのテキストの中で使われる記
号を定義するルール・ベースのセクシヨンであ
る。記号はテキスト文字列を表わす。記号は、
記号セクシヨンにおいて、テキスト文字列値を
与えられる。テキスト中の他の場所で、記号名
は、テキスト文字列全体をキー入力する代りに
用いられる。記号は、テキスト文字列が頻繁に
変更されるか又は同じテキスト文字列が多くの
異なつたテキスト中に現れる時に有用である。
また記号は、テキストがルール・ベース間で一
致している事を保証する事をより容易にする。
ルール作成者はルール・ベース中に記号セクシ
ヨンを含ませ、それらの記号をテキスト中で使
う事ができる。1人の人物が記号に関するテキ
スト文字列を書く事について責任を与えられ、
テキストを矛盾のない状態に保ち、且つ変更を
容易にする事ができる。
テキスト内で記号が使われる時、記号名は名
前の始めに「&」が付けられなければならな
い。これはシステムがそれを記号名として認識
する事を可能にする。記号は、テキストがユー
ザに表示される前に、それが表わしている文字
列で置き換えられる。
前の始めに「&」が付けられなければならな
い。これはシステムがそれを記号名として認識
する事を可能にする。記号は、テキストがユー
ザに表示される前に、それが表わしている文字
列で置き換えられる。
記号セクシヨンのサンプルは下記の通りであ
る。
る。
SYMBOLS
PRINTER=‘IBM5215プリンタ’
PART2=‘電子回路基板の裏側’
FRU13=‘&PRINTER.・リボン’
SRN=‘ ’010234'''
TOOLS=
‘ (1) 電圧計
(2) ねじ回し
(3) はんだ
(4)はんだごて’
RULES
1 GOAL
TEXT=‘&PRINTER は故障していま
す。お客様サービス係に電話して、番号&
SRN.をお知らせ下さい。交換する必要の
ある&PARTは&FRU13.です。’ 2 OR 3 EVIDENCE CLASS=(‘YES')OF BUZZING 3 EXTERNAL PROC=PRINTERTEST RETURN CODE<>‘00'XB 上記の例は記号セクシヨンがどのように構成
されているか説明している。最初のワードは
SYMBOLSである。この後に、定義される記
号名、PRINTER、PART2、FRU13、SRN
及びTOOLSが続く。各記号名には1重引用符
内の文字列が割り当てられる。引用符内に含ま
れる全文字列がテキスト中の記号名と置き換え
られる。もしテキスト内で1重引用符が使われ
るならば、それは逆スラツシユ又はもう1つの
1重引用符が前に付かなければならに。他のセ
クシヨンの開始は記号セクシヨンを終了させ
る。2以上の記号セクシヨンが存在する事も可
能で、それらは任意の順序で他のルール・ベー
スのセクシヨンの間に分散配置できる。もしル
ール作成者によつて使用される記号のあるもの
が共通であれば、共通の「記号含有」フアイル
を使つてもよい。このフアイルは上述のような
記号セクシヨンを含んでいる。このフアイルは
ルール・フアイル開始部に含まれるであろう。
す。お客様サービス係に電話して、番号&
SRN.をお知らせ下さい。交換する必要の
ある&PARTは&FRU13.です。’ 2 OR 3 EVIDENCE CLASS=(‘YES')OF BUZZING 3 EXTERNAL PROC=PRINTERTEST RETURN CODE<>‘00'XB 上記の例は記号セクシヨンがどのように構成
されているか説明している。最初のワードは
SYMBOLSである。この後に、定義される記
号名、PRINTER、PART2、FRU13、SRN
及びTOOLSが続く。各記号名には1重引用符
内の文字列が割り当てられる。引用符内に含ま
れる全文字列がテキスト中の記号名と置き換え
られる。もしテキスト内で1重引用符が使われ
るならば、それは逆スラツシユ又はもう1つの
1重引用符が前に付かなければならに。他のセ
クシヨンの開始は記号セクシヨンを終了させ
る。2以上の記号セクシヨンが存在する事も可
能で、それらは任意の順序で他のルール・ベー
スのセクシヨンの間に分散配置できる。もしル
ール作成者によつて使用される記号のあるもの
が共通であれば、共通の「記号含有」フアイル
を使つてもよい。このフアイルは上述のような
記号セクシヨンを含んでいる。このフアイルは
ルール・フアイル開始部に含まれるであろう。
テキスト中で記号を使うために、記号名の前
には「&」(アンパサンド)が付けられ、テキ
スト中の、置換されるべき場所に挿入される。
「&」は記号の定義の中では使われていないが、
記号が使われる時には存在する事に注意された
い。記号名はブランク又はピリオドで終了す
る。記号名がブランクで終了したならば、ブラ
ンクは正規の入力文字として扱われ、入力行中
に残される。もし記号がピリオドで終了するな
らば、その記号名は次の入力文字と連結され、
ピリオドは除去される。(この特徴は日本語の
テキストの場合は重要でない。)上記例では、
目標テキストは次のように表示される。
には「&」(アンパサンド)が付けられ、テキ
スト中の、置換されるべき場所に挿入される。
「&」は記号の定義の中では使われていないが、
記号が使われる時には存在する事に注意された
い。記号名はブランク又はピリオドで終了す
る。記号名がブランクで終了したならば、ブラ
ンクは正規の入力文字として扱われ、入力行中
に残される。もし記号がピリオドで終了するな
らば、その記号名は次の入力文字と連結され、
ピリオドは除去される。(この特徴は日本語の
テキストの場合は重要でない。)上記例では、
目標テキストは次のように表示される。
IBM5215プリンタは故障しています。お客
様サービス係に電話して、番号‘010234'をお
知らせ下さい。交換する必要のある&PART
はIBM5215プリンタ・リボンです。
様サービス係に電話して、番号‘010234'をお
知らせ下さい。交換する必要のある&PART
はIBM5215プリンタ・リボンです。
記号はSRNは次の文字と連結され、記号
PRINTERは連結されず、ブランクが続く。も
しも記号が定義されていないか又はテキスト中
で使う時につづりが間違つていたならば、置換
は行なわれず、「&」が前に付いた記号名がそ
の代りに表示されるであろう。例えば、
「PART」に関する記号定義は存在しないの
で、文字列で置換させずに「&PART」がそ
のまま表示されている。
PRINTERは連結されず、ブランクが続く。も
しも記号が定義されていないか又はテキスト中
で使う時につづりが間違つていたならば、置換
は行なわれず、「&」が前に付いた記号名がそ
の代りに表示されるであろう。例えば、
「PART」に関する記号定義は存在しないの
で、文字列で置換させずに「&PART」がそ
のまま表示されている。
E−17 結論された目標のリスト
知識を、いくつかの文脈的ユニツトに分割す
ると、1つではなく複数のルール・ベースをト
レースする必要が生じる。また、同じ型の複数
の装置について結論を引き出すためには、同じ
ルール・ベースを何回もトレースする事もあ
る。従つて、最終的な報告のためだけでなく、
ルール・ベースのページ・イン及びページ・ア
ウトのためのスタツクの管理のために、ルー
ル・ベースの名前を追跡しなければならない。
ると、1つではなく複数のルール・ベースをト
レースする必要が生じる。また、同じ型の複数
の装置について結論を引き出すためには、同じ
ルール・ベースを何回もトレースする事もあ
る。従つて、最終的な報告のためだけでなく、
ルール・ベースのページ・イン及びページ・ア
ウトのためのスタツクの管理のために、ルー
ル・ベースの名前を追跡しなければならない。
もう1つの要求は、呼び出された全てのルー
ル・ベースが完全にトレースされ全ての可能な
目標が結論される事であろう。
ル・ベースが完全にトレースされ全ての可能な
目標が結論される事であろう。
また、全ての結論された目標は記憶され、終
了後に組織化された方式でユーザに与えられな
ければならない。これは目標を、内部的にリス
トの形で記憶する事を意味する。この結論され
た目標のリストは呼び出す側のプログラムに戻
されるので、それらを提示する前に結論をソー
ト及び編成する事ができる。
了後に組織化された方式でユーザに与えられな
ければならない。これは目標を、内部的にリス
トの形で記憶する事を意味する。この結論され
た目標のリストは呼び出す側のプログラムに戻
されるので、それらを提示する前に結論をソー
ト及び編成する事ができる。
ルール・ベースは、制御ブロツクのリンクさ
れたリストを用いて追跡される。このリンクさ
れたリストはRBCBリストと呼ばれる。各制御
ブロツクは、下記の5つのフイールドを有する
レコードである。
れたリストを用いて追跡される。このリンクさ
れたリストはRBCBリストと呼ばれる。各制御
ブロツクは、下記の5つのフイールドを有する
レコードである。
フイールドAはルール・ベース名である;
フイールドBはルール・ベースが成功的に実
行された場合にゼロになるリターン・コードで
ある。
行された場合にゼロになるリターン・コードで
ある。
フイールドCはルール・ベースが完全にトレ
ースされた時に真にセツトされるブール変数で
ある; フイールドDは、スーパバイザに戻される、
このルール・ベースに関して結論された目標の
リストに対するポインタである。
ースされた時に真にセツトされるブール変数で
ある; フイールドDは、スーパバイザに戻される、
このルール・ベースに関して結論された目標の
リストに対するポインタである。
フイールドEは、リスト上の次の制御ブロツ
クに対するポインタである。
クに対するポインタである。
スーパバイザ12が呼び出される時、RBCB
リストに対するポインタが渡される。この時点
で、リストは1つだけの制御ブロツクしか持た
ず、この制御ブロツクは処理すべき最初のルー
ル・ベースの名前を含んでいるだけである。ス
ーパバイザはこのリストを保持し、終了時にそ
れを呼び出し側のプログラムに返す。この時ま
でに、リストはいくつかの制御ブロツクを有し
ているであろう。その制御ブロツクの1つ1つ
は呼び出された各ルール・ベースに対応してい
る。もし同じルール・ベースが2回以上呼び出
されたならば、そのルール・ベースに関する制
御ブロツクが複数個存在する事もある。
リストに対するポインタが渡される。この時点
で、リストは1つだけの制御ブロツクしか持た
ず、この制御ブロツクは処理すべき最初のルー
ル・ベースの名前を含んでいるだけである。ス
ーパバイザはこのリストを保持し、終了時にそ
れを呼び出し側のプログラムに返す。この時ま
でに、リストはいくつかの制御ブロツクを有し
ているであろう。その制御ブロツクの1つ1つ
は呼び出された各ルール・ベースに対応してい
る。もし同じルール・ベースが2回以上呼び出
されたならば、そのルール・ベースに関する制
御ブロツクが複数個存在する事もある。
リスト上の各制御ブロツクは、そのルール・
ベースに関して結論された目標のリストに対す
るポインタをフイールドDに有している。個々
の目標リスト中の各目標リスト・レコードは、
下記のフイールドを有する。
ベースに関して結論された目標のリストに対す
るポインタをフイールドDに有している。個々
の目標リスト中の各目標リスト・レコードは、
下記のフイールドを有する。
1 結論された目標に関するテキスト。
2 その目標が結論された確信度。
3 次の目標へのポインタ。
メモリの制約により、システムによつて使用
される多くのテキストはデイスケツト上に記憶
されている。しかしながら、結論された目標リ
ストは目標テキストを内部的に保持しなければ
ならない。同じルール・ベースが2つの別の装
置に関して実行される事があり、どの装置に対
して目標が結論されたかを示すために、目標テ
キストのフイールドAに文字列が代入される。
たとえルール・ベースが複数回呼び出されたと
しても、そのルール・ベースに関しては1つだ
けのテキスト・フアイルしかデイスケツト上に
存在しない。もし置き換えの行なわれた目標テ
キストがそのフアイルに書き戻されるならば、
最終にテストされた装置しか正しい目標情報を
持たないであろう。また、特定のアプリケーシ
ヨンは2枚のデイスケツトが必要な位に大きい
かもしれない。もし目標テキスト・フイールド
が現在ロードされているデイスケツトに書き戻
されると、テキストの一部が1つのデイスケツ
トに書かれ、一部が他のデイスケツトに書かれ
るであろう。システムはそれが呼び出したルー
ル・ベースを記憶しているという事実は、全て
の結論された目標と共に、その有用性を増大さ
せる。これは、エキスパート・システムを呼び
出し、次に処理を続行する必要のあるアプリケ
ーシヨンに関してシステムを有用なものにす
る。システムはそれが取得した知識を記憶し、
プログラムを呼び出すためにそれをアクセス可
能にするので、それは他のエキスパート・シス
テムと違つて、より大きな間隔解決システムの
一部分になる事ができる。
される多くのテキストはデイスケツト上に記憶
されている。しかしながら、結論された目標リ
ストは目標テキストを内部的に保持しなければ
ならない。同じルール・ベースが2つの別の装
置に関して実行される事があり、どの装置に対
して目標が結論されたかを示すために、目標テ
キストのフイールドAに文字列が代入される。
たとえルール・ベースが複数回呼び出されたと
しても、そのルール・ベースに関しては1つだ
けのテキスト・フアイルしかデイスケツト上に
存在しない。もし置き換えの行なわれた目標テ
キストがそのフアイルに書き戻されるならば、
最終にテストされた装置しか正しい目標情報を
持たないであろう。また、特定のアプリケーシ
ヨンは2枚のデイスケツトが必要な位に大きい
かもしれない。もし目標テキスト・フイールド
が現在ロードされているデイスケツトに書き戻
されると、テキストの一部が1つのデイスケツ
トに書かれ、一部が他のデイスケツトに書かれ
るであろう。システムはそれが呼び出したルー
ル・ベースを記憶しているという事実は、全て
の結論された目標と共に、その有用性を増大さ
せる。これは、エキスパート・システムを呼び
出し、次に処理を続行する必要のあるアプリケ
ーシヨンに関してシステムを有用なものにす
る。システムはそれが取得した知識を記憶し、
プログラムを呼び出すためにそれをアクセス可
能にするので、それは他のエキスパート・シス
テムと違つて、より大きな間隔解決システムの
一部分になる事ができる。
E−18 データ構造の概観
ルール、クラス、手続き及びパラメータをメ
モリに記憶する事は、レコードの主リンク・リ
ストを用いて行なわれる。主リンク・リストの
詳細な構成は第9図、及び第12図に示されて
いる。これらの図面はオブジエクトに関するリ
ンク・リストの種々の関係を示している。
モリに記憶する事は、レコードの主リンク・リ
ストを用いて行なわれる。主リンク・リストの
詳細な構成は第9図、及び第12図に示されて
いる。これらの図面はオブジエクトに関するリ
ンク・リストの種々の関係を示している。
最初に、データ構造の一般的な概観を行な
う。第8図に示すような、ハツシユ表へのイン
テツクスが、オブジエクトの名前から計算され
るような通常のハツシユ表が使用される。ハツ
シユ表中の各項目は、ハツシユ・バケツトと呼
ばれる。レコードのリンク・リストへのポイン
タである。その各々はハツシユ表中のその位置
へハツシングされるオブジエクトの名前を含ん
でいる。
う。第8図に示すような、ハツシユ表へのイン
テツクスが、オブジエクトの名前から計算され
るような通常のハツシユ表が使用される。ハツ
シユ表中の各項目は、ハツシユ・バケツトと呼
ばれる。レコードのリンク・リストへのポイン
タである。その各々はハツシユ表中のその位置
へハツシングされるオブジエクトの名前を含ん
でいる。
各ハツシユ・バケツトは、オブジエクトがル
ール・ノード・パラメータ、手続き又はクラス
のいずれであつても、対応するオブジエクトへ
のポインタを有している。各オブジエクトに
は、属性レコードのリンク・リストが付随して
いる。これは、属性の名前とそのオブジエクト
に関する値を保持している。属性ノードに記憶
されたデータの例は、ルール・ノードに関する
高及び低のしきい値、クラスの質問又は目標の
テキストに関するテキスト・フアイルへのイン
デツクス、又はその属性を有するルール・ノー
ドが真であると評価された場合に呼び出される
ルール・ベースの名前を示す属性である。
ール・ノード・パラメータ、手続き又はクラス
のいずれであつても、対応するオブジエクトへ
のポインタを有している。各オブジエクトに
は、属性レコードのリンク・リストが付随して
いる。これは、属性の名前とそのオブジエクト
に関する値を保持している。属性ノードに記憶
されたデータの例は、ルール・ノードに関する
高及び低のしきい値、クラスの質問又は目標の
テキストに関するテキスト・フアイルへのイン
デツクス、又はその属性を有するルール・ノー
ドが真であると評価された場合に呼び出される
ルール・ベースの名前を示す属性である。
各証拠ノードは、あるクラスのメンバーであ
る。ポインタは、ルール・ノードの属性リスト
上に属性名「証拠源(EVID SOURCE)」の下
に記憶されている。証拠源はソース・クラスの
名前を含むハツシユ・バケツトを指す。このハ
ツシユ・バケツトは、対応するクラス・ノード
へのクラス参照(CLASSREF)ポインタも含
んでいる。
る。ポインタは、ルール・ノードの属性リスト
上に属性名「証拠源(EVID SOURCE)」の下
に記憶されている。証拠源はソース・クラスの
名前を含むハツシユ・バケツトを指す。このハ
ツシユ・バケツトは、対応するクラス・ノード
へのクラス参照(CLASSREF)ポインタも含
んでいる。
クラスが評価される時、このクラスの全ての
メンバーが更新される。それらのメンバー(そ
の全てが証拠ノードである)は、次のようにデ
ータ構造中に配置される。クラス・ノードは、
メンバーである最初のルール・ノードへのルー
ル・リンク・ポインタである。このルール・ノ
ードの属性リストには「メンバー
(MEMBER)」という名前の属性が存在してい
る。メバー属性は、考察されているクラスのメ
ンバーである次のルール・ノードを指す。そし
てこの新しいルール・ノードの属性リスト上に
は、クラスの次のメンバーを指すメンバー属性
が存在している。最後のメンバーが見つかつた
時、そのメンバー属性は空白ポインタを有す
る。従つて、クラスのどのメンバーも(証拠源
属性により)クラスへのポインタを有する。ク
ラスの全てのメンバーは(メンバー属性によ
り)メンバーのリンク・リストによつて一緒に
リンクされている。
メンバーが更新される。それらのメンバー(そ
の全てが証拠ノードである)は、次のようにデ
ータ構造中に配置される。クラス・ノードは、
メンバーである最初のルール・ノードへのルー
ル・リンク・ポインタである。このルール・ノ
ードの属性リストには「メンバー
(MEMBER)」という名前の属性が存在してい
る。メバー属性は、考察されているクラスのメ
ンバーである次のルール・ノードを指す。そし
てこの新しいルール・ノードの属性リスト上に
は、クラスの次のメンバーを指すメンバー属性
が存在している。最後のメンバーが見つかつた
時、そのメンバー属性は空白ポインタを有す
る。従つて、クラスのどのメンバーも(証拠源
属性により)クラスへのポインタを有する。ク
ラスの全てのメンバーは(メンバー属性によ
り)メンバーのリンク・リストによつて一緒に
リンクされている。
外部ノード、それらのソース手続きに対する
関係、及び手続きに関するメンバー・リスト
は、証拠ノード及びクラスと同じ方法で扱われ
る。
関係、及び手続きに関するメンバー・リスト
は、証拠ノード及びクラスと同じ方法で扱われ
る。
参照ノードに出会う時、それが参照するノー
ドは、その確信度を得る事が可能な場所になけ
ればならない。参照するノード及び参照される
ノードは同じ名前を持たなければならない。従
つて、それらはハツシユ高の中の同じ場所にハ
ツシングされる。参照ノードは、そのノードの
名前を含むハツシユ・バケツトを指す「名前」
と呼ばれるポインタを有する。このハツシユ・
バケツトは、参照されるルール・ノードを指す
ルール・リンク・ポインタを有する。ノードが
評価されると、それを参照する全てのノードが
更新される。それらはルール・ノード中に「い
とこ」のポインタを用いて、共にリンクされて
いる。いとこポインタは、リストの先端のルー
ル・ノードを参照する次のノードを指す。従つ
て各参照ノードは、(ポインタ「名前」を用い
て)それが参照しているノードを指し示す。与
えられたノードを参照する全てのノードは、ル
ール・ノード中で宣言されたいとこポインタに
よつてリンクされる。システムが参照ノードの
位置を見つける時、それは元のノードに対する
名前ポインタに従う。次にそれはこのノードを
評価し、いとこリンク・リストに従つてこのノ
ードに対する全ての参照を更新する。
ドは、その確信度を得る事が可能な場所になけ
ればならない。参照するノード及び参照される
ノードは同じ名前を持たなければならない。従
つて、それらはハツシユ高の中の同じ場所にハ
ツシングされる。参照ノードは、そのノードの
名前を含むハツシユ・バケツトを指す「名前」
と呼ばれるポインタを有する。このハツシユ・
バケツトは、参照されるルール・ノードを指す
ルール・リンク・ポインタを有する。ノードが
評価されると、それを参照する全てのノードが
更新される。それらはルール・ノード中に「い
とこ」のポインタを用いて、共にリンクされて
いる。いとこポインタは、リストの先端のルー
ル・ノードを参照する次のノードを指す。従つ
て各参照ノードは、(ポインタ「名前」を用い
て)それが参照しているノードを指し示す。与
えられたノードを参照する全てのノードは、ル
ール・ノード中で宣言されたいとこポインタに
よつてリンクされる。システムが参照ノードの
位置を見つける時、それは元のノードに対する
名前ポインタに従う。次にそれはこのノードを
評価し、いとこリンク・リストに従つてこのノ
ードに対する全ての参照を更新する。
E−19 リンク・リスト
ルール・ベースは4つの主要なリンク・リス
ト及び複数の副次的な関連リンク・リストより
構成される。各々の主要なリンク・リストは、
ルール・ベースの4つのオブジエクト型の1つ
に対応している。
ト及び複数の副次的な関連リンク・リストより
構成される。各々の主要なリンク・リストは、
ルール・ベースの4つのオブジエクト型の1つ
に対応している。
第1の主要なリンク・リストはクラス・オブ
ジエクトに関するものであり、ルール・ベース
中に含まれる各クラスに関する個別的なレコー
ドを含んでいる。クラスのレコードは、第5図
及び第6図に示すフイールド形式を有してい
る。
ジエクトに関するものであり、ルール・ベース
中に含まれる各クラスに関する個別的なレコー
ドを含んでいる。クラスのレコードは、第5図
及び第6図に示すフイールド形式を有してい
る。
第5図及び第6図に示したレコードの一般的
な形式は、ある程度、ルール・ベースをコーデ
イングするために用いるプログラム言語に依存
する。クラス・セクシヨン中の各レコードは固
定長のレコードであり、各々は同じ数のフイー
ルドを有している。他のセクシヨンの中のレコ
ードも固定長のレコードであるが、長さは全て
のセクシヨンに関して必ずしも同じではない。
主要なリンク・リストに付随する他の副次的な
リンク・リスト例えば属性リンク・リスト中の
レコードの一般的な形式は、各レコード中のフ
イールド数が可変で、各フイールドの文字数が
可変である事を許すと仮定してもよい。
Pascalプログラム言語は、第7図に例を示す
ような可変レコード構造を有しており、これは
他の付随的リンク・リストに関する本発明の良
好な実施例においても用いられる。下記の説明
中では、副次的リンク・リストに関する全ての
レコードに、特にことわらない限り、可変レコ
ード構造を用いているものと仮定する。
な形式は、ある程度、ルール・ベースをコーデ
イングするために用いるプログラム言語に依存
する。クラス・セクシヨン中の各レコードは固
定長のレコードであり、各々は同じ数のフイー
ルドを有している。他のセクシヨンの中のレコ
ードも固定長のレコードであるが、長さは全て
のセクシヨンに関して必ずしも同じではない。
主要なリンク・リストに付随する他の副次的な
リンク・リスト例えば属性リンク・リスト中の
レコードの一般的な形式は、各レコード中のフ
イールド数が可変で、各フイールドの文字数が
可変である事を許すと仮定してもよい。
Pascalプログラム言語は、第7図に例を示す
ような可変レコード構造を有しており、これは
他の付随的リンク・リストに関する本発明の良
好な実施例においても用いられる。下記の説明
中では、副次的リンク・リストに関する全ての
レコードに、特にことわらない限り、可変レコ
ード構造を用いているものと仮定する。
E−20.クラス・レコード
再び第6図を参照すると、クラス・レコードの
形式は、他のレコードに対するルール・ベース中
のレコードの順次的位置を識別する機能を有する
フアイル・インデツクス(FILE INDEX)・フイ
ールドを含んでいる。その次のフイールドはその
クラスに割り当てられた初期の重み(PRIOR)
であり、3番目のフイールドは、そのクラスに割
り当てられた現在の重み(WT)である。以前に
説明したように、重みは、そのノードに関して確
信度が計算される方式に影響を与える、オブジエ
クトに割り当てられた属性である。クラスに関す
るフラグ(FLAGS)フイールドは、2進数の1
−0で表現される。多数の属性から成つている。
各々の属性はフラグ・フイールド中の所定のビツ
ト位置を割り当てられている。それらの属性に
は、初期(INITIAL)属性、更新
(UPDATED)属性、電源オフ(POWER OFF)
属性、ローカル(LOCAL)属性、グローバル
(GLOBAL)属性、SETC属性、及び再質問
(RE−ASK)属性が含まれている。
形式は、他のレコードに対するルール・ベース中
のレコードの順次的位置を識別する機能を有する
フアイル・インデツクス(FILE INDEX)・フイ
ールドを含んでいる。その次のフイールドはその
クラスに割り当てられた初期の重み(PRIOR)
であり、3番目のフイールドは、そのクラスに割
り当てられた現在の重み(WT)である。以前に
説明したように、重みは、そのノードに関して確
信度が計算される方式に影響を与える、オブジエ
クトに割り当てられた属性である。クラスに関す
るフラグ(FLAGS)フイールドは、2進数の1
−0で表現される。多数の属性から成つている。
各々の属性はフラグ・フイールド中の所定のビツ
ト位置を割り当てられている。それらの属性に
は、初期(INITIAL)属性、更新
(UPDATED)属性、電源オフ(POWER OFF)
属性、ローカル(LOCAL)属性、グローバル
(GLOBAL)属性、SETC属性、及び再質問
(RE−ASK)属性が含まれている。
次のフイールドMLPは、メンバー・リスト・
ポインタを含んでいる。このポインタの機能は、
ルール・ノードのリンク・リスト、即ちこの質問
をする証拠ノードにアクセスする手段を提供する
事である。従つて、質問が最初に行なわれた時、
答は他の全てのノードに利用可能になる。クラス
のメンバー・リンク・リスト(CMLL)がいか
にして構成されるか、及びアクセスを得るために
MLPポインタがいかにして使用されるかの詳細
は、ルール・ノード・オブジエクトに関するハツ
シユ表及び属性リストの説明に関連して後述す
る。
ポインタを含んでいる。このポインタの機能は、
ルール・ノードのリンク・リスト、即ちこの質問
をする証拠ノードにアクセスする手段を提供する
事である。従つて、質問が最初に行なわれた時、
答は他の全てのノードに利用可能になる。クラス
のメンバー・リンク・リスト(CMLL)がいか
にして構成されるか、及びアクセスを得るために
MLPポインタがいかにして使用されるかの詳細
は、ルール・ノード・オブジエクトに関するハツ
シユ表及び属性リストの説明に関連して後述す
る。
クラス・レコード中の次のフリールドは、クラ
スに関する属性のリンク・リストを指す属性リス
ト・ポインタ(PLP)である。以前に示したよ
うに、属性リストはルール・ベース中の各オブジ
エクトに付骨髄しており、各リストは同一ではな
いものの、それらを理解し相違点を対比するため
にそれらを一緒に説明する事を是認するのに充分
な類似性は存在している。その説明は明細書中に
後に行なわれる。
スに関する属性のリンク・リストを指す属性リス
ト・ポインタ(PLP)である。以前に示したよ
うに、属性リストはルール・ベース中の各オブジ
エクトに付骨髄しており、各リストは同一ではな
いものの、それらを理解し相違点を対比するため
にそれらを一緒に説明する事を是認するのに充分
な類似性は存在している。その説明は明細書中に
後に行なわれる。
クラス・レコード中の最後のフイールドは
NCPフイールドである。これは続きのクラスを
指す次クラス・ポインタを含んでいて、個々のレ
コードをリンク・リストの形にリンクする作用を
する。クラス・セクシヨンは、ルール・ベースの
手続きセクシヨン(時に第5図の手続きセクシヨ
ンの最初のレコードPR1)へのポインタを含む、
最後のクラス・レコードのNCPフイールドで終
了する。
NCPフイールドである。これは続きのクラスを
指す次クラス・ポインタを含んでいて、個々のレ
コードをリンク・リストの形にリンクする作用を
する。クラス・セクシヨンは、ルール・ベースの
手続きセクシヨン(時に第5図の手続きセクシヨ
ンの最初のレコードPR1)へのポインタを含む、
最後のクラス・レコードのNCPフイールドで終
了する。
E−21 手続きリスト・レコード
手続きリスト・レコード中のいくつかのフイ
ールドは、クラス・リスト・レコード中の同一
の名前を持つフイールドと同じであり、それに
ついては説明を繰り返さない。PFフイールド
は手続き機能フイールドであり、手続きのデイ
スケツトからシステムへのロード又は実行又は
システムのメモリからの削除の可否について示
すものである。名前(NAME)フイールドは、
この手続に割り当てられた名前を含んでいる。
その次の5つのフイールド、PRIOR、WT、
FLAGS、MPL及びPLPのフイールドはクラ
ス・レコード中のフイールドと同一である。
APフイールドは、呼び出される手続きに渡さ
れる引数のリストへのポインタを含んでいる。
引数の各々は、それが整数か又は文字列か、そ
の大きさ、等のその変数の性質を特徴付けるフ
イールド形式を有する別々のレコード中に含ま
れている。
ールドは、クラス・リスト・レコード中の同一
の名前を持つフイールドと同じであり、それに
ついては説明を繰り返さない。PFフイールド
は手続き機能フイールドであり、手続きのデイ
スケツトからシステムへのロード又は実行又は
システムのメモリからの削除の可否について示
すものである。名前(NAME)フイールドは、
この手続に割り当てられた名前を含んでいる。
その次の5つのフイールド、PRIOR、WT、
FLAGS、MPL及びPLPのフイールドはクラ
ス・レコード中のフイールドと同一である。
APフイールドは、呼び出される手続きに渡さ
れる引数のリストへのポインタを含んでいる。
引数の各々は、それが整数か又は文字列か、そ
の大きさ、等のその変数の性質を特徴付けるフ
イールド形式を有する別々のレコード中に含ま
れている。
さらに、手続きによつて返される値の記憶位
置へのポインタ用のフイールドが与えられてい
る。
置へのポインタ用のフイールドが与えられてい
る。
手続きレコード中の次のフイールドはRPフ
イールドである。これは手続きによつて生成さ
れ返された特定の値を含むレコードのリンク・
リストへのポインタを含んでいる。手続きレコ
ードの最後のフイールドはNPRPフイールドで
あり、リンク・リスト中の次の手続きへのポイ
ンタを含んでいる。
イールドである。これは手続きによつて生成さ
れ返された特定の値を含むレコードのリンク・
リストへのポインタを含んでいる。手続きレコ
ードの最後のフイールドはNPRPフイールドで
あり、リンク・リスト中の次の手続きへのポイ
ンタを含んでいる。
E−22 パラメータ・リスト・レコード
パラメータ・リストは第6図に示す形式を有
するレコードのリンク・リストである。
するレコードのリンク・リストである。
パラメータ・レコードはインデツクス・フイ
ールド、名前フイールド、フラグ・フイール
ド、属性リスト・ポインタ(PLP)フイール
ド及び次パラメータ・ポインタ(NPAP)フ
イールドを含んでいる。これらは前記のレコー
ド中の対応物と同様に機能する。デフオールト
(DEFAULT)フイールドはパラメータ・レコ
ードに特有である。パラメータによつて行なわ
れる質問にユーザが答を与えない場合に、シス
テムによりデフオールトの答が与えられる事を
可能にする。
ールド、名前フイールド、フラグ・フイール
ド、属性リスト・ポインタ(PLP)フイール
ド及び次パラメータ・ポインタ(NPAP)フ
イールドを含んでいる。これらは前記のレコー
ド中の対応物と同様に機能する。デフオールト
(DEFAULT)フイールドはパラメータ・レコ
ードに特有である。パラメータによつて行なわ
れる質問にユーザが答を与えない場合に、シス
テムによりデフオールトの答が与えられる事を
可能にする。
E−23 属性リスト
属性リスト・ポインタ(PLP)は、そのオ
ブジエクトに関する属性のリストを指す。第5
図及び第6図に示すように、PLPフイールド
はクラス・レコード、手続きレコード、パラメ
ータ・レコード、及びルール・レコードに含ま
れている。そのオブジエクトと共に可変なテキ
ストが使用される時は、テキスト・パラメータ
(TEXT PARM)と呼ばれる属性がそのオブ
ジエクトに与えられる。可変なテキストは、例
えば、事前にユーザに「あなたの電話番号は何
番ですか?」といつた質問をする事によつて得
られる。質問は「電話番号」と名付けられたパ
ラメータの形を取り、答は「応答」と名付けら
れた属性の下にパラメータ・オブジエクトの属
性リスト上に記憶される。パラメータの名前
「電話番号」も属性リストの名前フウイールド
中にある。他のオブジエクト例えばクラス、手
続き又はパラメータが、「電話番号」と名付け
られたパラメータによつて与えられた応答を挿
入する必要がある時は、そのオブジエクトの属
性リストにテキスト・パラメータ属性が付加さ
れる。テキスト・パラメータ属性は、可変テキ
スト中でその答が必要なパラメータ「電話番
号」に不随するパラメータ・リストを指す。テ
キスト・パラメータ属性は、関連する属性リス
ト中の最初の名前を指す。最初の名前は、「電
話番号」という名のパラメータへのポインタを
見い出すために(後述の)ハツシユ表へのエン
トリーを与えるためにハツシングされる。「電
話番号」という名前のレコードがパラメータ・
レコードのリスト上に見い出されると、その属
性リストが走査される。そして、以前に質問が
されていると仮定されているので、属性「応
答」が見つけられる。
ブジエクトに関する属性のリストを指す。第5
図及び第6図に示すように、PLPフイールド
はクラス・レコード、手続きレコード、パラメ
ータ・レコード、及びルール・レコードに含ま
れている。そのオブジエクトと共に可変なテキ
ストが使用される時は、テキスト・パラメータ
(TEXT PARM)と呼ばれる属性がそのオブ
ジエクトに与えられる。可変なテキストは、例
えば、事前にユーザに「あなたの電話番号は何
番ですか?」といつた質問をする事によつて得
られる。質問は「電話番号」と名付けられたパ
ラメータの形を取り、答は「応答」と名付けら
れた属性の下にパラメータ・オブジエクトの属
性リスト上に記憶される。パラメータの名前
「電話番号」も属性リストの名前フウイールド
中にある。他のオブジエクト例えばクラス、手
続き又はパラメータが、「電話番号」と名付け
られたパラメータによつて与えられた応答を挿
入する必要がある時は、そのオブジエクトの属
性リストにテキスト・パラメータ属性が付加さ
れる。テキスト・パラメータ属性は、可変テキ
スト中でその答が必要なパラメータ「電話番
号」に不随するパラメータ・リストを指す。テ
キスト・パラメータ属性は、関連する属性リス
ト中の最初の名前を指す。最初の名前は、「電
話番号」という名のパラメータへのポインタを
見い出すために(後述の)ハツシユ表へのエン
トリーを与えるためにハツシングされる。「電
話番号」という名前のレコードがパラメータ・
レコードのリスト上に見い出されると、その属
性リストが走査される。そして、以前に質問が
されていると仮定されているので、属性「応
答」が見つけられる。
以前ユーザによつて与えられたデータ(408
−462−4325)が、応答属性の下に層性リスト
上に記憶されている。記憶された応答、408−
462−4325は次にオブジエクトの可変テキスト
中に挿入される。
−462−4325)が、応答属性の下に層性リスト
上に記憶されている。記憶された応答、408−
462−4325は次にオブジエクトの可変テキスト
中に挿入される。
属性リストの走査中に、システムがまだされ
ていない質問を見つけたとすると、このパラメ
ータに関するテキスト・レコードのリストへの
ポインタを与えるテキスト属性が見つけられ
る。テキスト・レコードは、ルール・ベース中
で使用される全てのテキスト語句を含むレコー
ドのフアイルであるメツセージ・フアイルへの
メツセージ・ポインタを含む。メツセージ・ポ
インタは、ユーザに提示される質問に関する適
当なテキストを指す。
ていない質問を見つけたとすると、このパラメ
ータに関するテキスト・レコードのリストへの
ポインタを与えるテキスト属性が見つけられ
る。テキスト・レコードは、ルール・ベース中
で使用される全てのテキスト語句を含むレコー
ドのフアイルであるメツセージ・フアイルへの
メツセージ・ポインタを含む。メツセージ・ポ
インタは、ユーザに提示される質問に関する適
当なテキストを指す。
E−24 ハツシユ表
以前に言及したハツシユ表の詳細を、第8図
を用いて説明する。ハツシユ表80は、メモリの
所定の領域に記載され、ポインタ82を記憶す
る一連の順次的記憶位置81から成る。各オブ
ジエクト、例えばクラス、手続き、パラメータ
及びルール・ノードは例えば8文字の高さの名
前を有する事に注意されたい。ハツシング・ア
ルゴリズムは、各々の名前を、メモリのハツシ
ユ表部分の中のアドレスに変換するために用い
られる。ハツシユ表例えば100個の異なつたメ
モリ・アドレスを含んでいる。ハツシング・ア
ルゴリズムは例えば1000個の異なつたオブジエ
クト名を上記アドレスに変換するように動作す
る。従つて2つ以上の名前が、与えられたハツ
シユ表の位置に変換される。ハツシユ表中の各
記憶位置は第8図に示すようなフイールド形式
を持つレコードの異なつたリスト83へのポイ
ンタ82を含んでいる。ハツシユ表に不随する
レコードのリンク・リスト84はハツシユ・バ
ケツトと呼ばれ、ハツシユ表80中のポインタ8
2はハツシユ・バスケツト・ポインタ(HBP)
と呼ばれる。レコード84は、ハツシユされた
名前に関するフイールド85、オブジユクトが
記憶されたメモリ中の位置を指すための一連の
フイールド86、及びリスト上の次のハツシ
ユ・バケツトへのポインタを記憶するフイール
ド87を含んでいる。記憶装置を参照するポイ
ンタのフイールド86は、その名前がハツシユ
表中の対応する項目にハツシングされたオブジ
エクトの型に依存して、クラス、手続き、パラ
メタータ又はルールを参照するポインタを含ん
でいる。
を用いて説明する。ハツシユ表80は、メモリの
所定の領域に記載され、ポインタ82を記憶す
る一連の順次的記憶位置81から成る。各オブ
ジエクト、例えばクラス、手続き、パラメータ
及びルール・ノードは例えば8文字の高さの名
前を有する事に注意されたい。ハツシング・ア
ルゴリズムは、各々の名前を、メモリのハツシ
ユ表部分の中のアドレスに変換するために用い
られる。ハツシユ表例えば100個の異なつたメ
モリ・アドレスを含んでいる。ハツシング・ア
ルゴリズムは例えば1000個の異なつたオブジエ
クト名を上記アドレスに変換するように動作す
る。従つて2つ以上の名前が、与えられたハツ
シユ表の位置に変換される。ハツシユ表中の各
記憶位置は第8図に示すようなフイールド形式
を持つレコードの異なつたリスト83へのポイ
ンタ82を含んでいる。ハツシユ表に不随する
レコードのリンク・リスト84はハツシユ・バ
ケツトと呼ばれ、ハツシユ表80中のポインタ8
2はハツシユ・バスケツト・ポインタ(HBP)
と呼ばれる。レコード84は、ハツシユされた
名前に関するフイールド85、オブジユクトが
記憶されたメモリ中の位置を指すための一連の
フイールド86、及びリスト上の次のハツシ
ユ・バケツトへのポインタを記憶するフイール
ド87を含んでいる。記憶装置を参照するポイ
ンタのフイールド86は、その名前がハツシユ
表中の対応する項目にハツシングされたオブジ
エクトの型に依存して、クラス、手続き、パラ
メタータ又はルールを参照するポインタを含ん
でいる。
ハツシユ表80の主な機能は、その目標が結論さ
れるように選択されたルール・ベース中のルール
木上の証拠ノード又は外部ノードに割り当てられ
た名前をポインタに関係付ける事である。ノード
は名前を有しているので、主要リンク・リストの
1つの上にその名前を有しているオブジエクトの
記憶位置は、ハウジング処理を経て、そのオブジ
エクトへの参照ポインタを得る事により得られ
る。ハツシユ表80は、後述する別の理由によりオ
ブジエクト名を用いてオブジエクトを見つけるよ
うにも機能する。
れるように選択されたルール・ベース中のルール
木上の証拠ノード又は外部ノードに割り当てられ
た名前をポインタに関係付ける事である。ノード
は名前を有しているので、主要リンク・リストの
1つの上にその名前を有しているオブジエクトの
記憶位置は、ハウジング処理を経て、そのオブジ
エクトへの参照ポインタを得る事により得られ
る。ハツシユ表80は、後述する別の理由によりオ
ブジエクト名を用いてオブジエクトを見つけるよ
うにも機能する。
E−25 メンバーシツプ・リンク・リスト
第5図及び第6図に示す主要クラス・リスト
及び主要手続きリストに関するレコードは、メ
ンバーシツプ・リスト・ポインタMLPを記憶
するためのフイールドMLPを含んでいる。ル
ール・ベース全体の多くの異なつたルール・ノ
ードにおいて同じ質問(クラス)が現れる事が
あるが、それは証拠ノードで最初に参照された
時に1度だけ質問すればよい事に注意された
い。その後、同じ質問をする他の全てのノード
は、システムによつて自動的に更新される。同
様の状況は手続きに関しても存在する。即ちそ
の手続き名及びグローバル属性を有する全ての
ノードは最初に手続きを実行させた時に得られ
た結果を用いて変更される。
及び主要手続きリストに関するレコードは、メ
ンバーシツプ・リスト・ポインタMLPを記憶
するためのフイールドMLPを含んでいる。ル
ール・ベース全体の多くの異なつたルール・ノ
ードにおいて同じ質問(クラス)が現れる事が
あるが、それは証拠ノードで最初に参照された
時に1度だけ質問すればよい事に注意された
い。その後、同じ質問をする他の全てのノード
は、システムによつて自動的に更新される。同
様の状況は手続きに関しても存在する。即ちそ
の手続き名及びグローバル属性を有する全ての
ノードは最初に手続きを実行させた時に得られ
た結果を用いて変更される。
クラス・オブジエクト又は手続きオブジエク
トを更新するための手段は、クラス・オブジエ
クトに関してはクラスMLPポインタによつて
指される。メンバーシツプ・リンク・リストで
あり、手続きオブジエクトに関しては手続きメ
ンバーシツプ・リンク・リストである。
トを更新するための手段は、クラス・オブジエ
クトに関してはクラスMLPポインタによつて
指される。メンバーシツプ・リンク・リストで
あり、手続きオブジエクトに関しては手続きメ
ンバーシツプ・リンク・リストである。
メンバーシツプ・リスト−クラス
クラス・オブジエクトのメンバーシツプ・リ
ンク・リスト・ポインタ、クラスのメンバーで
あるルール・ノードとの関係は第9図を参照す
ると理解できる。第9図において、主要クラ
ス・リンク・リスト中の最初のレコード90は
MLPフイールド92にメンバーシツプ・リス
ト・ポインタ91を含んでいる。約91で表わさ
れているこのポインタ91は「ルール参照
(RULEREF)」と呼ばれるハツシユ表中のフ
イールド93を指す。ルール参照は、このクラ
スを使用するルール・ベース中の最初のルー
ル・ノードへのポインタ94を含んでいる。そ
のルール・ノードは主要ルール・リンク・リス
ト中にあり、PLPと呼ばれるフイールド96
を有するレコードによつて表わされている。
PLPフイールド96は、ルール・ノード95
に関する属性リスト98を指す属性リスト・ポ
インタ97を含んでいる。ルール・ノード95
に関する属性リスト98は、属性名「メンバー
(MEMBER)」を有するレコード99を含んで
いる。レコード99は「次メンバー・ポインタ
ー(NEXT MEMBER)」と呼ばれるフイー
ルド100及び「次属性ポインタ(NEXT
PROP)」と呼ばれるフイールド101を含ん
でいる。次メンバー・ポインタ102は、クラ
スの2番目のメンバーである主要ルール・ノー
ド・リンク・リスト中の(図示されていない)
ルール・ノードを指す。この2番目のルール・
ノードも属性リストを含み、これはさらに「メ
ンバー」という名のレコードを含み、このレコ
ードは「次メンバー・ポインタ」と呼びれるフ
イールドを含んでいる。同様に、次メンバー・
ポインタ・フイールドは、3番目のルール・ノ
ードへのポインタを含んでいる。
ンク・リスト・ポインタ、クラスのメンバーで
あるルール・ノードとの関係は第9図を参照す
ると理解できる。第9図において、主要クラ
ス・リンク・リスト中の最初のレコード90は
MLPフイールド92にメンバーシツプ・リス
ト・ポインタ91を含んでいる。約91で表わさ
れているこのポインタ91は「ルール参照
(RULEREF)」と呼ばれるハツシユ表中のフ
イールド93を指す。ルール参照は、このクラ
スを使用するルール・ベース中の最初のルー
ル・ノードへのポインタ94を含んでいる。そ
のルール・ノードは主要ルール・リンク・リス
ト中にあり、PLPと呼ばれるフイールド96
を有するレコードによつて表わされている。
PLPフイールド96は、ルール・ノード95
に関する属性リスト98を指す属性リスト・ポ
インタ97を含んでいる。ルール・ノード95
に関する属性リスト98は、属性名「メンバー
(MEMBER)」を有するレコード99を含んで
いる。レコード99は「次メンバー・ポインタ
ー(NEXT MEMBER)」と呼ばれるフイー
ルド100及び「次属性ポインタ(NEXT
PROP)」と呼ばれるフイールド101を含ん
でいる。次メンバー・ポインタ102は、クラ
スの2番目のメンバーである主要ルール・ノー
ド・リンク・リスト中の(図示されていない)
ルール・ノードを指す。この2番目のルール・
ノードも属性リストを含み、これはさらに「メ
ンバー」という名のレコードを含み、このレコ
ードは「次メンバー・ポインタ」と呼びれるフ
イールドを含んでいる。同様に、次メンバー・
ポインタ・フイールドは、3番目のルール・ノ
ードへのポインタを含んでいる。
上述のチエイニング過程は、クラス最後のメ
ンバーに至るまで繰り返される。最後のメンバ
ーは次メンバー属性ポインタがヌル・ポインタ
である事によつて示される。
ンバーに至るまで繰り返される。最後のメンバ
ーは次メンバー属性ポインタがヌル・ポインタ
である事によつて示される。
従つて、クラス・オブジエクトに関するクラ
ス・メンバーシツプ・リンク・リストは主要ル
ール・ノード・リンク・リストからのルール・
ノード・オブジエクトの選択された部分集合で
あつて、部分集合の先頭のルール・ノードはク
ラス・オブジエクト90からのメンバーシツ
プ・リスト・ポインタ91によつてアドレスさ
れるハツシユ表中のルール参照ポインタ94に
よつてその部分集合に付いて選択されたものと
みなすことができる。クラスに属する後続する
ルール・ノードは、「メンバー」という名のレ
コード99の中のルール・ノード95の属性リ
スト98にある次メンバー・ポインタ102に
よつて部分集合から選択される。
ス・メンバーシツプ・リンク・リストは主要ル
ール・ノード・リンク・リストからのルール・
ノード・オブジエクトの選択された部分集合で
あつて、部分集合の先頭のルール・ノードはク
ラス・オブジエクト90からのメンバーシツ
プ・リスト・ポインタ91によつてアドレスさ
れるハツシユ表中のルール参照ポインタ94に
よつてその部分集合に付いて選択されたものと
みなすことができる。クラスに属する後続する
ルール・ノードは、「メンバー」という名のレ
コード99の中のルール・ノード95の属性リ
スト98にある次メンバー・ポインタ102に
よつて部分集合から選択される。
メンバーシツプ・リスト−手続き
手続きオブジエクトに関するメンバーシツ
プ・リンク・リストは、上述のクラスに関する
メンバーシツプ・リンク・リストと同一の方式
で、手続きオブジエクト、ハツシユ表、及びル
ール・ノードに関係している。第10図に示す
ように、手続きオブジエクトの主要リンク・リ
スト中の最初の手続きレコード110は、メン
バーシツプ・リスト・ポインタ・フイールドと
呼ばれるフイールド111を含んでいる。この
フイールドは手続き110に関係したハツシ
ユ・バケツトのルール参照フイールド113へ
のポインタ111を含んでいる。ルール参照フ
イールドは、この手続きを使用する最初のルー
ル・ノード115を指すポインタ114を含ん
でいる。ルール・ノード115は属性リスト・
ポインタ117を含むフイールド116を有す
る。ポインタ117は属性リスト118を指
す。「メンバー(MEMBER)」という名前の属
性119は、この手続きを使用する次の、即ち
2番目のルール・ノードを指すポインタ121
を有する次メンバー・フイールド120を含ん
でいる。上記の連鎖の過程はメンバーである全
てのルール・ノードが識別されてしまうまで反
復される。メンバーシツプ・リストの最後のル
ール・ノードは次メンバー・フイールド120
に空白ポインタを有している。
プ・リンク・リストは、上述のクラスに関する
メンバーシツプ・リンク・リストと同一の方式
で、手続きオブジエクト、ハツシユ表、及びル
ール・ノードに関係している。第10図に示す
ように、手続きオブジエクトの主要リンク・リ
スト中の最初の手続きレコード110は、メン
バーシツプ・リスト・ポインタ・フイールドと
呼ばれるフイールド111を含んでいる。この
フイールドは手続き110に関係したハツシ
ユ・バケツトのルール参照フイールド113へ
のポインタ111を含んでいる。ルール参照フ
イールドは、この手続きを使用する最初のルー
ル・ノード115を指すポインタ114を含ん
でいる。ルール・ノード115は属性リスト・
ポインタ117を含むフイールド116を有す
る。ポインタ117は属性リスト118を指
す。「メンバー(MEMBER)」という名前の属
性119は、この手続きを使用する次の、即ち
2番目のルール・ノードを指すポインタ121
を有する次メンバー・フイールド120を含ん
でいる。上記の連鎖の過程はメンバーである全
てのルール・ノードが識別されてしまうまで反
復される。メンバーシツプ・リストの最後のル
ール・ノードは次メンバー・フイールド120
に空白ポインタを有している。
E−26 パラメータ・リンク・リストの構成
パラメータ・リンク・リストの構成並びにハ
ツシユ表及びルール・ノードへのパラメータの
関係は第11図に示されている。パラメータ・
リスト132へのエントリーは主に2つの異な
つた状況において必要である。その両方共が、
ノード133のような証拠ノード又は外部ノー
ドのいずれかの処理中に生じる。属性リストに
関連して説明したように、パラメータによつて
行なわれた質問に応答してユーザ(又は手続
き)によつて与えられた可変データを含むテキ
ストを使用するオブジエクトには属性「テキス
ト・パラメータ(TXTPARM)」が与えられ
る。パラメータ名は、ルール・ノードに不随す
る手続き又はクラスの属性リスト上に現れる。
処理中のルール・ノード33のテキスト中に挿
入されるべき変数は、「応答」フイールド中の
ポインタによつて指される記憶位置に以前に記
憶されている。応答フイールドは、その答が変
数として挿入されるパラメータの属性リスト上
にある。問題は、現在処理中のノードによつて
表示されるテキスト中にパラメータの答を挿入
できるように、リンク・リスト上のパラメータ
の位置を見つける事である。不随するパラメー
タ・リストは、パラメータからの答を必要とす
るノードに関して形成される。このリストは、
各エントリー毎に、パラメータの名前、パラメ
ータの記憶位置へのポインタ、及び(2以上の
パラメータが必要な事もあるので)次のエント
リーへのポインタを含んでいる。処理中のノー
ドのTXTPARM属性135中のポインタを用
いて、不随するパラメータ・リスト中の最初の
エントリーを指す事によつて、システムは、挿
入されるべきパラメータの位置を見い出す事が
できる。
ツシユ表及びルール・ノードへのパラメータの
関係は第11図に示されている。パラメータ・
リスト132へのエントリーは主に2つの異な
つた状況において必要である。その両方共が、
ノード133のような証拠ノード又は外部ノー
ドのいずれかの処理中に生じる。属性リストに
関連して説明したように、パラメータによつて
行なわれた質問に応答してユーザ(又は手続
き)によつて与えられた可変データを含むテキ
ストを使用するオブジエクトには属性「テキス
ト・パラメータ(TXTPARM)」が与えられ
る。パラメータ名は、ルール・ノードに不随す
る手続き又はクラスの属性リスト上に現れる。
処理中のルール・ノード33のテキスト中に挿
入されるべき変数は、「応答」フイールド中の
ポインタによつて指される記憶位置に以前に記
憶されている。応答フイールドは、その答が変
数として挿入されるパラメータの属性リスト上
にある。問題は、現在処理中のノードによつて
表示されるテキスト中にパラメータの答を挿入
できるように、リンク・リスト上のパラメータ
の位置を見つける事である。不随するパラメー
タ・リストは、パラメータからの答を必要とす
るノードに関して形成される。このリストは、
各エントリー毎に、パラメータの名前、パラメ
ータの記憶位置へのポインタ、及び(2以上の
パラメータが必要な事もあるので)次のエント
リーへのポインタを含んでいる。処理中のノー
ドのTXTPARM属性135中のポインタを用
いて、不随するパラメータ・リスト中の最初の
エントリーを指す事によつて、システムは、挿
入されるべきパラメータの位置を見い出す事が
できる。
もう1つの状況が第11図に示されている。
これは、応答を得るために質問としてユーザに
実際のテキストを与える事のできるように名付
けられたパラメータの位置を見つける事に関係
している。質問のテキストはメツセージ・フア
イル中に存在する。このメツセージ・フアイル
の記憶位置は、TEXTと呼ばれる属性フイー
ルド中のパラメータの属性リスト上にあるメツ
セージ・ポインタによつて指し示される。
これは、応答を得るために質問としてユーザに
実際のテキストを与える事のできるように名付
けられたパラメータの位置を見つける事に関係
している。質問のテキストはメツセージ・フア
イル中に存在する。このメツセージ・フアイル
の記憶位置は、TEXTと呼ばれる属性フイー
ルド中のパラメータの属性リスト上にあるメツ
セージ・ポインタによつて指し示される。
パラメータは、処理中のノード33から得ら
れるパラメータの名前をハツシングする事によ
つて見つけられるハツシユ・バケツト中の
AFRAREFポインタによつて位置が見つけら
れる。
れるパラメータの名前をハツシングする事によ
つて見つけられるハツシユ・バケツト中の
AFRAREFポインタによつて位置が見つけら
れる。
E−27 ルール・リスト
説明すべきルール・ベースの最後の大きな部
分は、第12図に示されるルール・リストであ
る。ルール・リストは基本的には、各ノード又
はレコードが後続のノードを指すという点で、
ルール・ベース中の他のリンク・リストと似て
いる。しかし、各ノードは一般に、リスト中の
1つ以上の他のノードを指すので、第12図に
示すように、木型の構造と見る方が容易であ
る。
分は、第12図に示されるルール・リストであ
る。ルール・リストは基本的には、各ノード又
はレコードが後続のノードを指すという点で、
ルール・ベース中の他のリンク・リストと似て
いる。しかし、各ノードは一般に、リスト中の
1つ以上の他のノードを指すので、第12図に
示すように、木型の構造と見る方が容易であ
る。
第12図に示すように、各ノードはフアイ
ル・インデツクス(FILE INDEX)、ノード型
(NODETYPE)、関連(ASSOC)、重み
(WT)、フラグ(FLAGS)及び名前
(NAME)に加えて、ルール・ベース中の他の
関連ノードへのポインタに関するフイールの数
を含む。これらのポインタは一番上のダミー・
ノード120の次に示されており、「フアミリ
ー木」の規約に従つて、他のノードに対する相
対的関係を示すために、父(FATHER)、兄
弟(BROTHER)、いとこ(COUSIN)、長子
(FIRSTSON)及び末子(LASTSON)等と
名付けられている。兄弟ポインタは、同じ父ノ
ードを有するノードを指し、ルール木の同じレ
ベルに位置する。いとこポインタは、参照され
ているノードを指す。また各ノードは属性リス
トへのポインタも有する。これは前述のよう
な、他のリスク・リストに関連する属性リスト
と同じように機能する。
ル・インデツクス(FILE INDEX)、ノード型
(NODETYPE)、関連(ASSOC)、重み
(WT)、フラグ(FLAGS)及び名前
(NAME)に加えて、ルール・ベース中の他の
関連ノードへのポインタに関するフイールの数
を含む。これらのポインタは一番上のダミー・
ノード120の次に示されており、「フアミリ
ー木」の規約に従つて、他のノードに対する相
対的関係を示すために、父(FATHER)、兄
弟(BROTHER)、いとこ(COUSIN)、長子
(FIRSTSON)及び末子(LASTSON)等と
名付けられている。兄弟ポインタは、同じ父ノ
ードを有するノードを指し、ルール木の同じレ
ベルに位置する。いとこポインタは、参照され
ているノードを指す。また各ノードは属性リス
トへのポインタも有する。これは前述のよう
な、他のリスク・リストに関連する属性リスト
と同じように機能する。
ルール木の各々の葉ノードは、クラス・リス
ト又は手続きリスト中のノードに対して関係を
有する。ノードが処理される時、ノード型が識
別される。証拠ノードが識別されると、属性
「EVIDSOURCE」がノードの属性リスト上に
位置付けられる。この属性はルール・ノードが
関係付けられるクラスの名前を含んでいる。こ
の名前はハツシングされ、ハツシユ表及びハツ
シユ・バケツトへのエントリーを与える。これ
は前述のようにクラスのリンク・リスト上の関
連クラス・オブジエクトの位置を見つけるため
のものである。
ト又は手続きリスト中のノードに対して関係を
有する。ノードが処理される時、ノード型が識
別される。証拠ノードが識別されると、属性
「EVIDSOURCE」がノードの属性リスト上に
位置付けられる。この属性はルール・ノードが
関係付けられるクラスの名前を含んでいる。こ
の名前はハツシングされ、ハツシユ表及びハツ
シユ・バケツトへのエントリーを与える。これ
は前述のようにクラスのリンク・リスト上の関
連クラス・オブジエクトの位置を見つけるため
のものである。
葉ノードが、呼び出すべき手続きを識別する
外部ノードと識別された場合、手続きのリン
ク・リスト上の関連手続き定義の位置を見つけ
るために同様の一連のステツプが取られる。
外部ノードと識別された場合、手続きのリン
ク・リスト上の関連手続き定義の位置を見つけ
るために同様の一連のステツプが取られる。
木の内部のノードは主に、確信度の論理的な
計算及びそれらの計算された確信度を所定のア
ルゴリズムに従つて目標ノードまで伝達する事
に関係している。これらの機能は、推論エンジ
ンの一部である特別なプログラミング・モジユ
ールによつて処理される。
計算及びそれらの計算された確信度を所定のア
ルゴリズムに従つて目標ノードまで伝達する事
に関係している。これらの機能は、推論エンジ
ンの一部である特別なプログラミング・モジユ
ールによつて処理される。
E−28 システムの動作
システムの動作の概要を第13図を参照しな
がら説明する。
がら説明する。
第13図は前述のCONSULT機能に含まれ
る種々のプログラミング・ルーチンの構成を示
している。
る種々のプログラミング・ルーチンの構成を示
している。
CONSULTは、エキスパート・システムを
呼び出すプログラムに対するインタフエースを
提供すると共に、結論された目標のリストを返
すSUPERVISOR(スーパバイザ)ルーチンを
有する。SUPERVISORは、呼び出されたルー
ル・ベースのリストを保持し、且つそれらのル
ール・ベースの各々について結論された目標の
リストを保持する責任を有する。これは初期の
ルール・ベースをロードする。他のルール・ベ
ースが呼び出される時、これは呼び出している
ルール・ベースを、それまでに集められた情報
(例えばクラス質問に対して答、手続きから返
された値、及び目標に関して得られた確信度)
と共に記憶し、呼び出されたルール・ベースを
ロードする。また、これはクラスに対する答又
は手続きから返された値等の情報をルール・ベ
ース間で受け渡す責任も有する。
SUPERVISORは、推論機構を含むルーチン
INFERENCEを呼び出す。INFERENCEは主
要なコンサルテーシヨン・ルーチンを実行す
る。それはテストすべき目標を選択し、次に選
択された目標の下のノードを後向きにたどり、
評価すべき証拠ノード又は外部ノードを見い出
す。INFERENCEは、それが呼び出した手続
きと共に、質問を行なわせ、手続きを実行さ
せ、そしてこの情報に基いて結論を引き出す。
目標が結論され時、ルール・ベースが使い尽さ
れた時、新しいルール・ベースが呼び出された
時、重大なエラーが起きた時、電源が遮断され
かかつた時、又はブレーク・キーが押された時
には、INFERENCEはSUPERVISORに制御
を戻す。
呼び出すプログラムに対するインタフエースを
提供すると共に、結論された目標のリストを返
すSUPERVISOR(スーパバイザ)ルーチンを
有する。SUPERVISORは、呼び出されたルー
ル・ベースのリストを保持し、且つそれらのル
ール・ベースの各々について結論された目標の
リストを保持する責任を有する。これは初期の
ルール・ベースをロードする。他のルール・ベ
ースが呼び出される時、これは呼び出している
ルール・ベースを、それまでに集められた情報
(例えばクラス質問に対して答、手続きから返
された値、及び目標に関して得られた確信度)
と共に記憶し、呼び出されたルール・ベースを
ロードする。また、これはクラスに対する答又
は手続きから返された値等の情報をルール・ベ
ース間で受け渡す責任も有する。
SUPERVISORは、推論機構を含むルーチン
INFERENCEを呼び出す。INFERENCEは主
要なコンサルテーシヨン・ルーチンを実行す
る。それはテストすべき目標を選択し、次に選
択された目標の下のノードを後向きにたどり、
評価すべき証拠ノード又は外部ノードを見い出
す。INFERENCEは、それが呼び出した手続
きと共に、質問を行なわせ、手続きを実行さ
せ、そしてこの情報に基いて結論を引き出す。
目標が結論され時、ルール・ベースが使い尽さ
れた時、新しいルール・ベースが呼び出された
時、重大なエラーが起きた時、電源が遮断され
かかつた時、又はブレーク・キーが押された時
には、INFERENCEはSUPERVISORに制御
を戻す。
INFERENCEはSUPERVISORにより呼び
出される時、その最初の動作は、トレースする
目標を選択するためにルーチン
GOALSELECTORを実行させる事である。そ
の目標が根になつている木は、次に、最初の質
問されていない葉ノードが見つかるまで逆順に
探索される。この探索はBACKCHAINルーチ
ンによつて行なわれる。証拠ノード又は外部ノ
ードが見つかると、ルーチンEVALEVID又は
EVALEXTERNが実行され、属性名「証拠源
(EVIDSOURCE)」が見つかるまで属性リスト
が走査される。この属性はハツシユ表へのポイ
ンタを含む。ハツシユ表は、さらに、
ASKCLASSルーチン又はPNIルーチンを実行
させる事によつてデータが得られる時、クラ
ス・ノード(行なう必要のある質問に関するも
の)又は手続きリスト・エントリ(呼び出す必
要のある手続きに関するもの)のいずれかを指
す。参照ノードが更新されると即座に、その重
みは、それが存在している木を可能な限り上方
に伝達される。ノードに対する全ての参照が変
更され伝達されると、元の証拠又は外部ノード
の重みが伝達される。全ての伝達ルーチンの
間、途中で確立されたノードへの参照は改新さ
れ、再帰的に伝達される。最後に、同じクラス
又は手続き定義のメンバーである任意の他のノ
ードはUPDATEMEMBERルーチンによつて
同様に評価される。
出される時、その最初の動作は、トレースする
目標を選択するためにルーチン
GOALSELECTORを実行させる事である。そ
の目標が根になつている木は、次に、最初の質
問されていない葉ノードが見つかるまで逆順に
探索される。この探索はBACKCHAINルーチ
ンによつて行なわれる。証拠ノード又は外部ノ
ードが見つかると、ルーチンEVALEVID又は
EVALEXTERNが実行され、属性名「証拠源
(EVIDSOURCE)」が見つかるまで属性リスト
が走査される。この属性はハツシユ表へのポイ
ンタを含む。ハツシユ表は、さらに、
ASKCLASSルーチン又はPNIルーチンを実行
させる事によつてデータが得られる時、クラ
ス・ノード(行なう必要のある質問に関するも
の)又は手続きリスト・エントリ(呼び出す必
要のある手続きに関するもの)のいずれかを指
す。参照ノードが更新されると即座に、その重
みは、それが存在している木を可能な限り上方
に伝達される。ノードに対する全ての参照が変
更され伝達されると、元の証拠又は外部ノード
の重みが伝達される。全ての伝達ルーチンの
間、途中で確立されたノードへの参照は改新さ
れ、再帰的に伝達される。最後に、同じクラス
又は手続き定義のメンバーである任意の他のノ
ードはUPDATEMEMBERルーチンによつて
同様に評価される。
この処理の間の任意の時刻に、ルール・ベー
スの呼び出しに出合う可能性がある。呼び出さ
れたルール・ベースを使い尽した後に元のルー
ル・ベースの処理を再開するために、いくつか
の事項を決定する必要がある。最初に、選択さ
れた目標又は木の位置が決定される必要があ
る。第2に、質問又は実行された質問又は手続
きが分離されるべきである。第3に、質問又は
実行された証拠ノード又は外部ノードが分離さ
れるべきである。最後に、そのノードへの全て
の参照が更新され伝達されると、証拠の上のノ
ードが見つけられ調査されるべきである。最終
的には、ルール・ベース呼び出しが開始された
ノードnが見い出される。
スの呼び出しに出合う可能性がある。呼び出さ
れたルール・ベースを使い尽した後に元のルー
ル・ベースの処理を再開するために、いくつか
の事項を決定する必要がある。最初に、選択さ
れた目標又は木の位置が決定される必要があ
る。第2に、質問又は実行された質問又は手続
きが分離されるべきである。第3に、質問又は
実行された証拠ノード又は外部ノードが分離さ
れるべきである。最後に、そのノードへの全て
の参照が更新され伝達されると、証拠の上のノ
ードが見つけられ調査されるべきである。最終
的には、ルール・ベース呼び出しが開始された
ノードnが見い出される。
以前に説明したように、再開のためにノード
にマークを付けるために、各ノードに2つのブ
ール値、「質問」フラグ及び「更新」フラグが
設けられる。各クラス、手続き及びルール・ノ
ードは、それが質問されたか否かを示すフラ
グ、及びそれが更新されたか否かを示すフラグ
を有する。またルール・ノードは、それに関連
するルール・ベース呼び出しが完了したか否か
を示すフラグを有する。クラスは、それがユー
ザに提示されると即座に「質問された」という
マークが付けられる。手続きは、その手続き呼
び出しが実行されると即座に「質問された」と
いうマークが付けられる。ルール・ノードは、
その評価機能が実行されノードに重みが与えら
れると即座に「質問された」というマークが付
けられる。「更新」フラグは進行中のノードを
見つけるために使われる。クラス又は手続は、
このクラス又は手続きのメンバーである全ての
証拠又は外部ルール・ノードが評価され、更新
され、そして伝達されると即座に、「更新され
た」というマークが付けられる。参照ノード
は、その重みが木を可能な限り遠くまで伝達さ
れると、「更新された」というマークが付けら
れる。他の全てのルール・ノードは、それらに
対する全ての参照が更新され伝達されると即座
に「更新された」というマークが付けられる。
ルール・ベースは同じノードから2度以上呼び
出されない事を保証する必要があるので、各ル
ール・ノードは第3のブール・フラグを有して
いる。ルール・ノードは、その呼び出しが見い
出され起動されると即座に「報告された」とい
うマークが付けられる。
にマークを付けるために、各ノードに2つのブ
ール値、「質問」フラグ及び「更新」フラグが
設けられる。各クラス、手続き及びルール・ノ
ードは、それが質問されたか否かを示すフラ
グ、及びそれが更新されたか否かを示すフラグ
を有する。またルール・ノードは、それに関連
するルール・ベース呼び出しが完了したか否か
を示すフラグを有する。クラスは、それがユー
ザに提示されると即座に「質問された」という
マークが付けられる。手続きは、その手続き呼
び出しが実行されると即座に「質問された」と
いうマークが付けられる。ルール・ノードは、
その評価機能が実行されノードに重みが与えら
れると即座に「質問された」というマークが付
けられる。「更新」フラグは進行中のノードを
見つけるために使われる。クラス又は手続は、
このクラス又は手続きのメンバーである全ての
証拠又は外部ルール・ノードが評価され、更新
され、そして伝達されると即座に、「更新され
た」というマークが付けられる。参照ノード
は、その重みが木を可能な限り遠くまで伝達さ
れると、「更新された」というマークが付けら
れる。他の全てのルール・ノードは、それらに
対する全ての参照が更新され伝達されると即座
に「更新された」というマークが付けられる。
ルール・ベースは同じノードから2度以上呼び
出されない事を保証する必要があるので、各ル
ール・ノードは第3のブール・フラグを有して
いる。ルール・ノードは、その呼び出しが見い
出され起動されると即座に「報告された」とい
うマークが付けられる。
機構の電源が遮断された後、又は他のルー
ル・ベースへの呼び出しに続いて、ルール・ベ
ースが再入される時、SUPERVISORプログラ
ムは、このルール・ベースに出会つたのはこれ
が最初ではないという事を示す1つのブール値
をINFERENCEルーチンに渡す。このブール
値が真であれば、クラスのリストを見て、「質
問された」のマークが付けられているが「更新
された」のマークは付けられていないクラスを
探すルーチンが呼び出される。質問されている
が更新されていないクラスが三つかると、その
メンバーは、質問されているが更新されていな
い証拠ノードの位置が見つかるまで調査され
る。この証拠ノードに対する参照は、全てが質
問され更新された事を見るために検査される。
もしそうであれば、その証拠ノードの上のノー
ドが強査される。またそうでなければ、質問さ
れたが更新されていない参照ノードの上のノー
ドが調査される。最後に、質問されたが更新さ
れていないノードが見い出される。これが、ル
ール・ベースのトレースが中断されたノードで
ある。質問されたが更新されていない質問が存
在しなければ、手続き呼び出しのリストが、質
問されたが更新されていない手続き呼び出しを
見つけるため同様の方法で調査される。最後に
は、割り込みの原因となつたノードの位置が分
離され、処理が中断した地点から処理を再開す
る事ができる。
ル・ベースへの呼び出しに続いて、ルール・ベ
ースが再入される時、SUPERVISORプログラ
ムは、このルール・ベースに出会つたのはこれ
が最初ではないという事を示す1つのブール値
をINFERENCEルーチンに渡す。このブール
値が真であれば、クラスのリストを見て、「質
問された」のマークが付けられているが「更新
された」のマークは付けられていないクラスを
探すルーチンが呼び出される。質問されている
が更新されていないクラスが三つかると、その
メンバーは、質問されているが更新されていな
い証拠ノードの位置が見つかるまで調査され
る。この証拠ノードに対する参照は、全てが質
問され更新された事を見るために検査される。
もしそうであれば、その証拠ノードの上のノー
ドが強査される。またそうでなければ、質問さ
れたが更新されていない参照ノードの上のノー
ドが調査される。最後に、質問されたが更新さ
れていないノードが見い出される。これが、ル
ール・ベースのトレースが中断されたノードで
ある。質問されたが更新されていない質問が存
在しなければ、手続き呼び出しのリストが、質
問されたが更新されていない手続き呼び出しを
見つけるため同様の方法で調査される。最後に
は、割り込みの原因となつたノードの位置が分
離され、処理が中断した地点から処理を再開す
る事ができる。
下記に示すのは、偽似コード・プログラミン
グ・ステートメントを含む、第13図に示した
ルーチンの簡単な説明である。
グ・ステートメントを含む、第13図に示した
ルーチンの簡単な説明である。
プログラム:SUPERVISOR
機能:管理プログラム
このプログラムINFERENCEを呼び出す。
これは複数のルール・ベース呼び出し及びルー
ル・ベース呼び出しの間の情報の伝達を取り扱
う。これは初期リンク・リストへのポインタを
受け取る。
これは複数のルール・ベース呼び出し及びルー
ル・ベース呼び出しの間の情報の伝達を取り扱
う。これは初期リンク・リストへのポインタを
受け取る。
偽似コード:
begin program
……初期のルール・ベースを呼び出すために変
数及びポインタを初期設定する; ……loop1:while(処理すべきルール・ベース
がある)do ……loop2:while(現行のルール・ベースに付
き継続する)do ……call INFERENCE: ……case of ……(目標が結論された) ……目標をリストに付加する; ……(ルール・ベースが終了した) ……実行すべきルール・ベースがこれ以上ない ……then loop1を去る ……else ……次のルール・ベースを見つけるためにルー
ル・ベース・スタツクをポツプする; ……loop2を去る; ……(新しいルール・ベースを呼び出す) ……従来使うため現行のルール・ベースを記憶
する; ……スタツクに新しいルール・ベース名をプツ
シユする; ……loop2を去る; ……(電源断) ……従来使うため現行のルール・ベースを記憶
する ……ユーザに機械をオフにするように促す; ……ユーザがそうしない場合、動作を変更す
る; ……end loop2; ……スタツク上の現行の場所から次のルール・ベ
ースに関する変数をセツトする; ……end loop1; end program; 1 力:初期のルール・ベース名を含むシステム
制御ブロツクへのポインタ。
数及びポインタを初期設定する; ……loop1:while(処理すべきルール・ベース
がある)do ……loop2:while(現行のルール・ベースに付
き継続する)do ……call INFERENCE: ……case of ……(目標が結論された) ……目標をリストに付加する; ……(ルール・ベースが終了した) ……実行すべきルール・ベースがこれ以上ない ……then loop1を去る ……else ……次のルール・ベースを見つけるためにルー
ル・ベース・スタツクをポツプする; ……loop2を去る; ……(新しいルール・ベースを呼び出す) ……従来使うため現行のルール・ベースを記憶
する; ……スタツクに新しいルール・ベース名をプツ
シユする; ……loop2を去る; ……(電源断) ……従来使うため現行のルール・ベースを記憶
する ……ユーザに機械をオフにするように促す; ……ユーザがそうしない場合、動作を変更す
る; ……end loop2; ……スタツク上の現行の場所から次のルール・ベ
ースに関する変数をセツトする; ……end loop1; end program; 1 力:初期のルール・ベース名を含むシステム
制御ブロツクへのポインタ。
出力:同じポインタ、但しリストは完備してい
る。
る。
プログラム:INFERENCE
機能:主推論エンジン
この手続きは主コンサルテーシヨン・ルーチ
ンを実行する。これは、テストすべき目標を選
択し、目標のノードから後向き推論により、評
価すべき証拠又は外部ノードを見つけ出す。こ
れは、ユーザからのリセツトの後、又はルー
ル・ベースが使い尽された時、目標リストから
除去すべき目標、ルール・ベースの呼び出し、
結論された目標を持つて、拡張されたスーパバ
イザに戻る。
ンを実行する。これは、テストすべき目標を選
択し、目標のノードから後向き推論により、評
価すべき証拠又は外部ノードを見つけ出す。こ
れは、ユーザからのリセツトの後、又はルー
ル・ベースが使い尽された時、目標リストから
除去すべき目標、ルール・ベースの呼び出し、
結論された目標を持つて、拡張されたスーパバ
イザに戻る。
偽似コード:
firsttime then
……手続き呼び出し、ノード、クラスの重みを
リセツトし、クラスの質問を行ない、初期と
指定された手続きを実行する。
リセツトし、クラスの質問を行ない、初期と
指定された手続きを実行する。
……else if last action was not
goalcancluded then ……CONTINUEPASSINGUP ……whele not timetoreturn then repeat ……GOALSELECTOR(currnentgoal) ……if goal asked then ……timetoreturn=true; ……action=rulebasexhausted ……else ……currentnode=currentgoal ……BACKCHAIN(currnetnode) ……case of currentnode.nodetype of ……evid:EVALEVID(currentnode) ……extern:EVALEXTERN(currentnode) ……until timetoreturn to systemrest end; 入力:ルール・ベース・ポインタ、firsttime (初回)及びresume(再開)に関するフラ
グ、等。
goalcancluded then ……CONTINUEPASSINGUP ……whele not timetoreturn then repeat ……GOALSELECTOR(currnentgoal) ……if goal asked then ……timetoreturn=true; ……action=rulebasexhausted ……else ……currentnode=currentgoal ……BACKCHAIN(currnetnode) ……case of currentnode.nodetype of ……evid:EVALEVID(currentnode) ……extern:EVALEXTERN(currentnode) ……until timetoreturn to systemrest end; 入力:ルール・ベース・ポインタ、firsttime (初回)及びresume(再開)に関するフラ
グ、等。
出力:
動作−スーパバイザにより行なわれる動作
目標情報−結論された目標のテキスト及び確
信度 ルールベース−呼びだすルール・ベースのフ
アイル モジユール名:ASKCLASS 機能:クラスの質問を行なう この手続は、入力として、現在興味のあるク
ラスへのポインタを受け取る。これはクラスの
属性の現在の値に基いて、そのクラスが質問又
は再質問をされるか否かを判定する。これは適
当な時に質問をし、クラスのメンバーであるノ
ードを更新するためにUPDATECLASSESを
呼び出す。
信度 ルールベース−呼びだすルール・ベースのフ
アイル モジユール名:ASKCLASS 機能:クラスの質問を行なう この手続は、入力として、現在興味のあるク
ラスへのポインタを受け取る。これはクラスの
属性の現在の値に基いて、そのクラスが質問又
は再質問をされるか否かを判定する。これは適
当な時に質問をし、クラスのメンバーであるノ
ードを更新するためにUPDATECLASSESを
呼び出す。
偽似コード:
ifクラスが質問されるべきである。(ローカ
ル、グローバル、及び再質問の属性に依存し
て)・then begin ……if テキスト中にパラメータが存在する。
ル、グローバル、及び再質問の属性に依存し
て)・then begin ……if テキスト中にパラメータが存在する。
……thenパラメータ・テキストを得て、質問の
テキストと結合する; ……答の属性を得る ……選択の数の属性を得る ……質問を表示し答を得るためにUIO(ユーザ
ー、インターフエース・ルーチン)を呼び出
す ……ifクラスがローカルでないthen asked=
true; if(クラスがローカル)or(クラスがセツト可
能)or(クラスが変更されるべき) ……thsn UPDATEMEMBER(現行のクラス) ……else UPDATECLASSES(現行のクラ
ス); ……end then; ……else UPDATECLASSES(現行のクラス) 入力:現行のクラスへのポインタ 現行のルール・ノードへのポインタ 出力:スーパーバイザに制御が戻されるべき事を
示すようにtimetoreturnがtrueに変更され、
得る。
テキストと結合する; ……答の属性を得る ……選択の数の属性を得る ……質問を表示し答を得るためにUIO(ユーザ
ー、インターフエース・ルーチン)を呼び出
す ……ifクラスがローカルでないthen asked=
true; if(クラスがローカル)or(クラスがセツト可
能)or(クラスが変更されるべき) ……thsn UPDATEMEMBER(現行のクラス) ……else UPDATECLASSES(現行のクラ
ス); ……end then; ……else UPDATECLASSES(現行のクラス) 入力:現行のクラスへのポインタ 現行のルール・ノードへのポインタ 出力:スーパーバイザに制御が戻されるべき事を
示すようにtimetoreturnがtrueに変更され、
得る。
モジユール名:BACKCHAIN
機能:評価すべき次のノードを得るために木を
逆順にたどる。
逆順にたどる。
この手続は現行のルール木の中の評価すべき
次のノードを返す。このノードは次のいずれか
である。
次のノードを返す。このノードは次のいずれか
である。
(1) マスクされていない証拠ノード
(2) マスクされていないか又は再実行可能な外
部ノード (3) 他のルール・ベースの呼び出しからの再開
後の、質問されているが更新されていないノ
ード 偽似ノード: outoftree:=false; ……while not outoftree and not
foundnodedo ……if nodetype=alternate then
REPORTALT ……else if nodetype=reference then switch
to referrenced node ……else if unasked ……then if firstson=nil ……then runtimerror(4);outoftree=true ……else carrent node=first son ……else if brother=nil ……then runtimerror(12);outoftree=true ……else currentnode:=brother ……end while 入力:GOALSELECTORによつて見つけられ
た木の根へのポインタ 出力:元のノードを立証するために評価すべき
次のノードへのポインタ モジユール名:CONTINUEPASSINGUP 機能:割り込みが発生した地点から重みを上方
へ伝達し続ける。
部ノード (3) 他のルール・ベースの呼び出しからの再開
後の、質問されているが更新されていないノ
ード 偽似ノード: outoftree:=false; ……while not outoftree and not
foundnodedo ……if nodetype=alternate then
REPORTALT ……else if nodetype=reference then switch
to referrenced node ……else if unasked ……then if firstson=nil ……then runtimerror(4);outoftree=true ……else carrent node=first son ……else if brother=nil ……then runtimerror(12);outoftree=true ……else currentnode:=brother ……end while 入力:GOALSELECTORによつて見つけられ
た木の根へのポインタ 出力:元のノードを立証するために評価すべき
次のノードへのポインタ モジユール名:CONTINUEPASSINGUP 機能:割り込みが発生した地点から重みを上方
へ伝達し続ける。
この手順は、新しいルール・ベースへの呼び
出しに引き続いて、スーパーバイザにより推論
ルーチンが起動された後に、推論ルーチンから
呼び出される。これは、ルール・ベースの呼び
出しが行なわれた地点からクラスの更新、手続
き、又は上方ノードへの伝達を再開させる。質
問されたクラス及び手続きノードは更新済又は
未再新のいずれかのマークが付けられている。
出しに引き続いて、スーパーバイザにより推論
ルーチンが起動された後に、推論ルーチンから
呼び出される。これは、ルール・ベースの呼び
出しが行なわれた地点からクラスの更新、手続
き、又は上方ノードへの伝達を再開させる。質
問されたクラス及び手続きノードは更新済又は
未再新のいずれかのマークが付けられている。
もしそれらが変更されていれば、そのクラス
又は手続きの全てのメンバーが評価され重みが
木の上方へ伝達される。もし更新されていなけ
れば、このクラスのメンバーへの通常の更新及
び伝達及び伝達ルーチンへの割り込みが発生す
る。
又は手続きの全てのメンバーが評価され重みが
木の上方へ伝達される。もし更新されていなけ
れば、このクラスのメンバーへの通常の更新及
び伝達及び伝達ルーチンへの割り込みが発生す
る。
処理の割り込みは、特定のノードへの参照を
更新している間に起き得る。これが起きると、
質問中のノードは質問されるが、更新されな
い。もし非参照ノードが更新されると、それに
対する全ての参照が更新され重みは上方へ伝達
される。参照ノードはその重みが上方へ伝達さ
れると即座に更新済とマークされる。
更新している間に起き得る。これが起きると、
質問中のノードは質問されるが、更新されな
い。もし非参照ノードが更新されると、それに
対する全ての参照が更新され重みは上方へ伝達
される。参照ノードはその重みが上方へ伝達さ
れると即座に更新済とマークされる。
偽似コード:
currentclass=classhead
while currentclass〈 〉nil and not
(currentclass asked & not updated
& not settable) ……currentclass=currentclass next if
currentclass〈 〉nil tehn ……UPDATECLASSES(currentclass、
timetoreturn)else ……currentproc=prochead ……while prochead 〈 〉nil and not
(currentproc asked and not updated)do ……carrentproc=currentproc ・next ……if currentproc〈 〉nil then ……UPDATEPROCS(currentproc、
timetoreturn) ……else ……nodeinprogress=currentgoal ……BACKCHAIN(nodeinprogress) ……UPDATEREFS(nodejnprogress、
timetoreturn) ……if not timetoreturn and father〈 〉
toprule then ……PASSINGUP(nodeinprogress、
timetoreturn) 入力:currentgoal、classhead、prochead、
及びtopruleへのポインタ 出力:最後の証拠又は外部ノードを評価した後
に可能な限り更新されたルール・ベース。
timetoreturnは、上方への伝達の間に他のル
ール・ベースへの呼び出しに出会うと、真
(true)になる。
& not settable) ……currentclass=currentclass next if
currentclass〈 〉nil tehn ……UPDATECLASSES(currentclass、
timetoreturn)else ……currentproc=prochead ……while prochead 〈 〉nil and not
(currentproc asked and not updated)do ……carrentproc=currentproc ・next ……if currentproc〈 〉nil then ……UPDATEPROCS(currentproc、
timetoreturn) ……else ……nodeinprogress=currentgoal ……BACKCHAIN(nodeinprogress) ……UPDATEREFS(nodejnprogress、
timetoreturn) ……if not timetoreturn and father〈 〉
toprule then ……PASSINGUP(nodeinprogress、
timetoreturn) 入力:currentgoal、classhead、prochead、
及びtopruleへのポインタ 出力:最後の証拠又は外部ノードを評価した後
に可能な限り更新されたルール・ベース。
timetoreturnは、上方への伝達の間に他のル
ール・ベースへの呼び出しに出会うと、真
(true)になる。
モジユール名:EVALEVID
機能:証拠ノードを評価する:
現在の証拠ノードがクラスのメンバーであれ
ば、EVALEVIDは、質問をするASKCLASS
を呼び出し、そのノードに関する重みをセツト
する。もしテキスト証拠ノード中にあれば、
EVALEVIDは質問を行ない、それ自身の重み
を計算する。もしノードがクラスのメンバーで
ないか又はノードにテキストが存在しないなら
ば、そのノードにはそれが以前に有していた重
みが与えられる。次にEVALEVIDは、ノード
は正規化属性を有していればそのノードを正規
化し、質問された時にノードにマークを付け
る。次にEVALEVIDはPASSINGUPを呼び出
して、可能な限り木の上方へ確信度を伝達す
る。PASSINGUPから戻つた後、戻るべき時
間でなければ、現在のノードに更新済のマーク
を付ける。
ば、EVALEVIDは、質問をするASKCLASS
を呼び出し、そのノードに関する重みをセツト
する。もしテキスト証拠ノード中にあれば、
EVALEVIDは質問を行ない、それ自身の重み
を計算する。もしノードがクラスのメンバーで
ないか又はノードにテキストが存在しないなら
ば、そのノードにはそれが以前に有していた重
みが与えられる。次にEVALEVIDは、ノード
は正規化属性を有していればそのノードを正規
化し、質問された時にノードにマークを付け
る。次にEVALEVIDはPASSINGUPを呼び出
して、可能な限り木の上方へ確信度を伝達す
る。PASSINGUPから戻つた後、戻るべき時
間でなければ、現在のノードに更新済のマーク
を付ける。
偽似コード:
if証拠ノードがクラスメンバーである
……then begin
……ASKCLASS(curntclass、cunntnode、
timetoneturn); ……if systemreset then return; ……and ……else if質問テキストが証拠ノード中にある ……then begin ……証拠ノードで質問を行なう; ……答に応じてそのノードに関する重みを計算
する; ……end ……else curntnode.weight=curntnode.
priorwei glt; if curntnode、normal=true then正規
化; curntnode.asked=true; PASSINGUP(curntnode、timetoreturn); if not thmetoreturn then curntnode、updated=true; 入力: 現在のノード(証拠ノード)へのポインタ 出力: 評価され、重みがセツトされた証拠ノード;
timetoreturnは、さらに評価を行なう事なくス
ーパバイザに制御を戻すべきである事を示すた
めに真(true)に変更される事もある。
timetoneturn); ……if systemreset then return; ……and ……else if質問テキストが証拠ノード中にある ……then begin ……証拠ノードで質問を行なう; ……答に応じてそのノードに関する重みを計算
する; ……end ……else curntnode.weight=curntnode.
priorwei glt; if curntnode、normal=true then正規
化; curntnode.asked=true; PASSINGUP(curntnode、timetoreturn); if not thmetoreturn then curntnode、updated=true; 入力: 現在のノード(証拠ノード)へのポインタ 出力: 評価され、重みがセツトされた証拠ノード;
timetoreturnは、さらに評価を行なう事なくス
ーパバイザに制御を戻すべきである事を示すた
めに真(true)に変更される事もある。
モジュール名:EVALEXTERN
機能:外部ノードを評価する
各外部ノードは名前によつて手続きを参照す
る。その外部ノードはこの手続きのメンバーで
あると言われる。
る。その外部ノードはこの手続きのメンバーで
あると言われる。
外部ノードは手続きに対して間接的な参照を
行なう事ができる。これは、手続きが既に実行
されていなければ、この外部ノードはそれを実
行させない事を意味する。その代りに、それは
その親ノードにminweight(又は偽)を伝達す
る。
行なう事ができる。これは、手続きが既に実行
されていなければ、この外部ノードはそれを実
行させない事を意味する。その代りに、それは
その親ノードにminweight(又は偽)を伝達す
る。
手続きEVALEXTERNの機能は、現在の外
部ノードがメンバーになつている手続きを実行
させる事である。これは、それが間接的参照で
はない事を仮定している。この外部ノードがロ
ーカル又は再実行の属性を持つか又はいずれか
の親がローカルであれば、重みは現在処理中の
木の中だけを伝達される。それ以外の場合は、
この手続きのメンバーである外部ノードが更新
される。外部ノードが手続きに対して間接的参
照を有するならば、手続きは実行されず、ノー
ドには許された最小の重みが与えられ、その重
みが木を上方へ伝達される。
部ノードがメンバーになつている手続きを実行
させる事である。これは、それが間接的参照で
はない事を仮定している。この外部ノードがロ
ーカル又は再実行の属性を持つか又はいずれか
の親がローカルであれば、重みは現在処理中の
木の中だけを伝達される。それ以外の場合は、
この手続きのメンバーである外部ノードが更新
される。外部ノードが手続きに対して間接的参
照を有するならば、手続きは実行されず、ノー
ドには許された最小の重みが与えられ、その重
みが木を上方へ伝達される。
偽似コード:
whichproc=curntnode(現在のノード)がその
メンバーである手続き if curntnodeが手続きへの間接的参照でな
い ……then if whichprocが質問されていない)
or(curnnodeが再実行可能)or(whichproc
がローカル) ……then begin ……関連のテキストを表示する; ……if xtraceがオン ……then入力パラメータを表示する; ……call PNI(whichproc);(即ち手続きノー
ド・インターフエース・ルーチン) ……if xtraceがオン ……thenリターン・パラメータを表示する; ……if(whichprocがローカル)or(curntnode
がローカル) or(curntnodeがローカルの父を有する)
or(curntnodeが再実行された) ……then UPDATEMEMBERPROC
(curntnode、whichproc、timetoreturn) ……else begin ……whichprocに質問済み及び確証済みのマー
クを付ける; ……UPDATEPROCS(whichproc、
timetoreturn) ……end dlse; ……end ……else if (whichprocが質問済)、and
(whichprocがグローバル) ……then UPDATEPROCS(whichproc、
timetoreturn); ……else(curntnodeが手続きへの間接参照であ
る) ……begin ……curntnodeに質問済み及び確証済みのマー
クを付る; ……curntnodeの重み=minweight; ……PASSINGUP(curntnode、
timetoreturn); ……if not timetoreturn ……then curntnodeに更新済みのマークを付
ける; ……end; 入力: 現在のノード(外部ノード)へのポインタ 出力: 評価され且つ重みがセツトされた外部ノー
ド;timetoreturnは、さらに評価する事なしに
スーパバイザに制御が戻されるべき事を示すよ
うに真に変更される事もある。
メンバーである手続き if curntnodeが手続きへの間接的参照でな
い ……then if whichprocが質問されていない)
or(curnnodeが再実行可能)or(whichproc
がローカル) ……then begin ……関連のテキストを表示する; ……if xtraceがオン ……then入力パラメータを表示する; ……call PNI(whichproc);(即ち手続きノー
ド・インターフエース・ルーチン) ……if xtraceがオン ……thenリターン・パラメータを表示する; ……if(whichprocがローカル)or(curntnode
がローカル) or(curntnodeがローカルの父を有する)
or(curntnodeが再実行された) ……then UPDATEMEMBERPROC
(curntnode、whichproc、timetoreturn) ……else begin ……whichprocに質問済み及び確証済みのマー
クを付ける; ……UPDATEPROCS(whichproc、
timetoreturn) ……end dlse; ……end ……else if (whichprocが質問済)、and
(whichprocがグローバル) ……then UPDATEPROCS(whichproc、
timetoreturn); ……else(curntnodeが手続きへの間接参照であ
る) ……begin ……curntnodeに質問済み及び確証済みのマー
クを付る; ……curntnodeの重み=minweight; ……PASSINGUP(curntnode、
timetoreturn); ……if not timetoreturn ……then curntnodeに更新済みのマークを付
ける; ……end; 入力: 現在のノード(外部ノード)へのポインタ 出力: 評価され且つ重みがセツトされた外部ノー
ド;timetoreturnは、さらに評価する事なしに
スーパバイザに制御が戻されるべき事を示すよ
うに真に変更される事もある。
モジユール名:PASSINGUP
機能:
ノードを評価し、重みを木の上方へ伝達する
(1) 現在のノードの値を、以前の値として保存
する。
する。
(2) 新しい現在の重みを得るためにコード名に
付随する関数を評価するために手続きを呼び
出す。
付随する関数を評価するために手続きを呼び
出す。
(3) もしノードが質問されないか又は既に質問
されていて且つその重みが変化せず且つそれ
がグローバルでなくて且つ既に更新されてい
れば、それ以上は継続しない。
されていて且つその重みが変化せず且つそれ
がグローバルでなくて且つ既に更新されてい
れば、それ以上は継続しない。
(4) もし現在のノードが質問され且つまだ報告
されていなければ、そして重みが高しきい値
以上であれば、このノードに関して指定され
たクラス又はパラメータをセツトする。
されていなければ、そして重みが高しきい値
以上であれば、このノードに関して指定され
たクラス又はパラメータをセツトする。
(5) もし現在のノードが質問され且つまだ報告
されていなければ、そして重みが高しきい値
以上であれば、ルール・ベースの呼び出しが
行なわれるべきかどうかを見る。
されていなければ、そして重みが高しきい値
以上であれば、ルール・ベースの呼び出しが
行なわれるべきかどうかを見る。
(6) ルール・ベース呼び出しがなかつたなら
ば、現在のノードに対する参照を更新する。
ば、現在のノードに対する参照を更新する。
(7) ルール・ベース呼び出しに出会わず且つノ
ードが木の頂点でなければ、親の調査を続行
する。
ードが木の頂点でなければ、親の調査を続行
する。
偽似コード:
continu=true;
wasasked=curntnode .asked;
while continu do
……priorweight=curntnode .weight;
……case curntnode .nodetype of
……goal: EVALGOAL
……hypothesis:EVALGOAL
……evidence:if not reported then
wasasked=false ……external:if not reported then
wasasked=false ……and:EVALAND ……or:EVALOR ……not:EVALNOT ……wand: EVALWAND ……reference:EVALREF ……pand:EVALPAND ……alternate:EVALALT ……preepmet:EVALPREM ……end case; ……if node not just updated then contlnu
=false; ……if continu and not reported ……then if weight>threshoid ……then ……set classes; set parameters call rulebases; if rulebase to call then continu=
false; ……if continu ……then UPDATEREFS(curntnode、
timetoreturn); ……if timetoreturn on curntnode at top of
tree ……then continu=false; ……if continu ……then curntnode−curntnode .father; ……end;(*while continu=true*)end
procedure; 入力: 現在のノードへのポインタ 出力: スーパバイザに制御が戻されるべき事を示す
ようにtimetoreturnは真に変更される事があ
る。
wasasked=false ……external:if not reported then
wasasked=false ……and:EVALAND ……or:EVALOR ……not:EVALNOT ……wand: EVALWAND ……reference:EVALREF ……pand:EVALPAND ……alternate:EVALALT ……preepmet:EVALPREM ……end case; ……if node not just updated then contlnu
=false; ……if continu and not reported ……then if weight>threshoid ……then ……set classes; set parameters call rulebases; if rulebase to call then continu=
false; ……if continu ……then UPDATEREFS(curntnode、
timetoreturn); ……if timetoreturn on curntnode at top of
tree ……then continu=false; ……if continu ……then curntnode−curntnode .father; ……end;(*while continu=true*)end
procedure; 入力: 現在のノードへのポインタ 出力: スーパバイザに制御が戻されるべき事を示す
ようにtimetoreturnは真に変更される事があ
る。
モジユール名:UPDATEREFS
機能:現在のノードに対する参照を更新する
このモジユールは現在のノードに対する全て
の参照を更新し、更新された各ノードに
PASSINGUPを呼び出す。ノードに対する参
照は、そのノードのいとこ(cousin)と呼ばれ
る。
の参照を更新し、更新された各ノードに
PASSINGUPを呼び出す。ノードに対する参
照は、そのノードのいとこ(cousin)と呼ばれ
る。
偽似コード:
if curntnodeが参照ノードでない)and
(curntnodeが質問されていない)and
(curntnodeが名付けられている)and
(curntnodeが更新されていない) ……then begin ……curntref=curntnodeのいとこ ……while(curntref〈 〉nil)and(not
timenetoturn)begin ……if[(corntrefが質問されていない)or
(corntref)が質問されているが更新されて
いない)and(どの父もグローバルでない)] ……then begin ……PASSINGUP(Curntref、
temotoreturn); ……if not timetoreturn ……then curntref.updated=true; ……and; ……curntref=curntref.cousin; ……end while; ……if[(not evidence node)and(not
externalnode)and(not timetoreturn)] ……then curntnode.updated=true; ……end then ……else if(curntnodeが参照されていない)
and(curntnodeが質問されている) ……then curntnode.updated=true; 入力: 現在のノードへのポインタ 出力: thmetoreturnは、スーパーバイザーに制御
が戻されるべき事を示すためにtrueに変更され
る事がある。
(curntnodeが質問されていない)and
(curntnodeが名付けられている)and
(curntnodeが更新されていない) ……then begin ……curntref=curntnodeのいとこ ……while(curntref〈 〉nil)and(not
timenetoturn)begin ……if[(corntrefが質問されていない)or
(corntref)が質問されているが更新されて
いない)and(どの父もグローバルでない)] ……then begin ……PASSINGUP(Curntref、
temotoreturn); ……if not timetoreturn ……then curntref.updated=true; ……and; ……curntref=curntref.cousin; ……end while; ……if[(not evidence node)and(not
externalnode)and(not timetoreturn)] ……then curntnode.updated=true; ……end then ……else if(curntnodeが参照されていない)
and(curntnodeが質問されている) ……then curntnode.updated=true; 入力: 現在のノードへのポインタ 出力: thmetoreturnは、スーパーバイザーに制御
が戻されるべき事を示すためにtrueに変更され
る事がある。
第13図に示されており、推論プログラムの
一部である下記のモジユールは、その全体的な
機能と他のモジユールに対する関係だけを説明
する。これらのモジユールに関する偽似コード
は、自明なものと思われる。というのはその機
能を実現するのは平均的なプログラマの技量の
範囲内にあるからである。
一部である下記のモジユールは、その全体的な
機能と他のモジユールに対する関係だけを説明
する。これらのモジユールに関する偽似コード
は、自明なものと思われる。というのはその機
能を実現するのは平均的なプログラマの技量の
範囲内にあるからである。
モジユール名:EVALALT
機能:この手続きは交替ノードを評価する。交
替ノードは2つの部分木を有していて、左側の
部分木は証拠ノードである。EVALALTは、
その証拠ノードに関する質問をユーザーに与え
る。EVALALTは、ユーザに、質問に答える
事ができるか否かを尋ねる。ユーザが「yes」
と応答すると、質問が行なわれ、その答に関し
て得られた確信度が、交替ノードに与えられる
確信度になる。ユーザが「no」と応答すると、
その時に限つて右側の部分木がトレースされ
る。この場合、その部分木に関して計算された
確認度が、交替ノードに与えられる確信度にな
る。
替ノードは2つの部分木を有していて、左側の
部分木は証拠ノードである。EVALALTは、
その証拠ノードに関する質問をユーザーに与え
る。EVALALTは、ユーザに、質問に答える
事ができるか否かを尋ねる。ユーザが「yes」
と応答すると、質問が行なわれ、その答に関し
て得られた確信度が、交替ノードに与えられる
確信度になる。ユーザが「no」と応答すると、
その時に限つて右側の部分木がトレースされ
る。この場合、その部分木に関して計算された
確認度が、交替ノードに与えられる確信度にな
る。
モジユール名:EVALAND
機能:ANDノードを評価する。
この手続きはANDノードを評価する。これ
は、その子ノードの確信度を検索し、それらの
値から自分自身の確信度を計算する。ANDノ
ードは、子ノードの最小の確信度を取る。
は、その子ノードの確信度を検索し、それらの
値から自分自身の確信度を計算する。ANDノ
ードは、子ノードの最小の確信度を取る。
モジーユル名:EVALGOAL
機能:目標ノードを評価する
この手続きは目標ノードを評価する。これ
は、その子ノードの確信度を検索し、それから
自分自身の確信度を計算する。目標ノードは、
その単一の子の重みを有し、もしかそれが目標
ノードの上側のしきい値を越えれば、目標は真
であると結論され、その結果が目標リストに付
加される。
は、その子ノードの確信度を検索し、それから
自分自身の確信度を計算する。目標ノードは、
その単一の子の重みを有し、もしかそれが目標
ノードの上側のしきい値を越えれば、目標は真
であると結論され、その結果が目標リストに付
加される。
モジユール名:EVALOR
機能:ORノードを評価する;
この手続きはORノードを評価する。これ
は、この子ノードの確信度を検索し、それらか
らそれ自身の確信度を計算する。ORノード
は、その子ノードの確信度のうち最大値を取
る。
は、この子ノードの確信度を検索し、それらか
らそれ自身の確信度を計算する。ORノード
は、その子ノードの確信度のうち最大値を取
る。
モジユール名:EVALNOT
機能:NOTノードを評価する;
この手続きはNOTノードを評価する。これ
はその子ノードの確信度を検索し、それからそ
れ自身の確信度を計算する。NOTノードは、
1からその子ノードの重みを引いた値を取る。
はその子ノードの確信度を検索し、それからそ
れ自身の確信度を計算する。NOTノードは、
1からその子ノードの重みを引いた値を取る。
モジユール名:EVALPAND
機能:PANDノードを評価する;
この手続きはPANDノードを評価する。こ
れは、その子ノードの確信度を検索し、それか
ら自分自身の確信度を計算する。PANDノー
ドは、その子ノードの重みの総和値を取る。
れは、その子ノードの確信度を検索し、それか
ら自分自身の確信度を計算する。PANDノー
ドは、その子ノードの重みの総和値を取る。
モジユール名:EVALPREM
機能:PREEMPTノードを評価する;
この手続きはPREEMPTノードを評価する。
PREEMPTノードは2つの部分本並びに上側
及び下側のしきい値を有している。左側部分木
に関する確信度が最初に得られる。それが上側
しきい値以上か又は下側しきい値以下であれ
ば、右側の部分木はトレースされず、
PREEMPTノードには左側部分木の確信度の
値が与えられる。一方、左側部分木の確信度が
上側と下側のしきい値の間の値であれば右側部
分木に関する確信度がPRZZMPTノードに与
えられる。
PREEMPTノードは2つの部分本並びに上側
及び下側のしきい値を有している。左側部分木
に関する確信度が最初に得られる。それが上側
しきい値以上か又は下側しきい値以下であれ
ば、右側の部分木はトレースされず、
PREEMPTノードには左側部分木の確信度の
値が与えられる。一方、左側部分木の確信度が
上側と下側のしきい値の間の値であれば右側部
分木に関する確信度がPRZZMPTノードに与
えられる。
モジユール名:EVALREF
機能:参照ノードを評価する;
この手続きは参照ノードを評価する。参照ノ
ードは木の葉においてしか存在しない。参照ノ
ードはそれが参照するノードの確信度の値を取
る。
ードは木の葉においてしか存在しない。参照ノ
ードはそれが参照するノードの確信度の値を取
る。
モジユール名:EVALWAMD
機能:WANDノードを評価する;
この手続きはWANDノードを評価する。こ
れは、その子ノードの確信度を検索して、それ
からそれ自身の確信度を計算する。WANDノ
ードは、その子ノードの重みの平均値を取る。
れは、その子ノードの確信度を検索して、それ
からそれ自身の確信度を計算する。WANDノ
ードは、その子ノードの重みの平均値を取る。
モジユール名:GOALSELECTOR
機能:次の目標を選択する;
この手続き、ルール・ベース中の次の末質問
の目標を選択する。木の頂部にある仮説ノード
又は目標ノードが返される。全ての目標が既に
質問されていれば、返された目標には「質問
済」のマークが付けられている。
の目標を選択する。木の頂部にある仮説ノード
又は目標ノードが返される。全ての目標が既に
質問されていれば、返された目標には「質問
済」のマークが付けられている。
モジユール名:PNI
機能:手続きノード・インタフエース
手続きが実行される時に、その手続ノードに
対するポインタがPNIに渡される。この手続ノ
ードにおける定義から、PNIは、その手続きに
渡すべき値を取得し、手続きに対する呼び出し
を形成する。手続きは、実行以前にはこのシス
テムに束縛されていない。手続きがPNIに制御
を戻した後、PNIはこの手続きから返された値
を取得し、それをこのシステムのデータ構造中
の適切な場所に配置する。
対するポインタがPNIに渡される。この手続ノ
ードにおける定義から、PNIは、その手続きに
渡すべき値を取得し、手続きに対する呼び出し
を形成する。手続きは、実行以前にはこのシス
テムに束縛されていない。手続きがPNIに制御
を戻した後、PNIはこの手続きから返された値
を取得し、それをこのシステムのデータ構造中
の適切な場所に配置する。
モジユール名:REPORTALT
機能:交器ノードを調査し報告する;
この手続きは、後向き推論に関して部分木の
どちらの枝を使用すべきを判定するために、交
替ノードを調査する。その部分木の根であるノ
ードがcurntnodeとして返される。
どちらの枝を使用すべきを判定するために、交
替ノードを調査する。その部分木の根であるノ
ードがcurntnodeとして返される。
このルーチンに渡されるノードは、交替ノー
ドである事が事前に判明していなければならな
い。
ドである事が事前に判明していなければならな
い。
モジユール名:UIO
機能:ユーザ入力/出力 インタフエース;
ユーザ・インタフエース・ルーチンは、シス
テム表示装置との間及びシステムキーボードと
の間の全ての相互作用を取り扱う。これは、質
問を表示し、ユーザ入力を処理し、(終了又は
エスケープ等の)特別なキーが押された時を認
識し、そして結論された目標を表示するために
使用される。
テム表示装置との間及びシステムキーボードと
の間の全ての相互作用を取り扱う。これは、質
問を表示し、ユーザ入力を処理し、(終了又は
エスケープ等の)特別なキーが押された時を認
識し、そして結論された目標を表示するために
使用される。
モジユール名:UPDATECLASSES
機能:現在のクラスのメンバーである全ての証
拠ノードを変更する; この手続きは、クラスが評価された後に呼び
出される。UPDATECLASSESは、このクラ
スのメンバーである全ての証拠ノード(即ち、
このクラスを参照する全ての証拠ノード)を、
UPDATEMEMBERを呼び出す事によつて、
更新する。但し、ノードは、(1)それがローカル
でないか、(2)再質問属性を持たないか、(3)ロー
カルの父を持たないならば、他のメンバーとも
に更新されない。
拠ノードを変更する; この手続きは、クラスが評価された後に呼び
出される。UPDATECLASSESは、このクラ
スのメンバーである全ての証拠ノード(即ち、
このクラスを参照する全ての証拠ノード)を、
UPDATEMEMBERを呼び出す事によつて、
更新する。但し、ノードは、(1)それがローカル
でないか、(2)再質問属性を持たないか、(3)ロー
カルの父を持たないならば、他のメンバーとも
に更新されない。
モジユール名:UPDATEMEMBER
機能:現在のクラスの1つのメンバーを更新す
る; クラスが評価されると、そのクラスの1つの
メンバーを更新するためにこの手続きが呼び出
される。次に手続きPASSINGUPが、そのノ
ードに関して得られた確信度を木の上方に伝達
するために、呼び出される。
る; クラスが評価されると、そのクラスの1つの
メンバーを更新するためにこの手続きが呼び出
される。次に手続きPASSINGUPが、そのノ
ードに関して得られた確信度を木の上方に伝達
するために、呼び出される。
モジユール名:UPDATEMEMBEPROC
機能:現在の手続きの1つのメンバーを更新す
る; ルール・ベースから手続き呼び出しが実行さ
れると、その手続きの1つのメンバーを更新す
るためにこの手続きが呼び出される。次に、そ
のノードに関して得られた確信度を木の上方に
伝達するために手続きPASSINGUPが呼び出
される。
る; ルール・ベースから手続き呼び出しが実行さ
れると、その手続きの1つのメンバーを更新す
るためにこの手続きが呼び出される。次に、そ
のノードに関して得られた確信度を木の上方に
伝達するために手続きPASSINGUPが呼び出
される。
モジユール名:UPDATERPROS
機能:現在の手続きの全てのメンバーを更新す
る; ルール・ベースから手続き呼び出しが実行さ
れると、この手続きのメンバーである全ての外
部ノードが重みを更新され、木の上方へ伝達さ
れる。UPDATEPROCSは、この現在の手続
きのメンバーどある全ての外部ノードの位置を
見つけ、各メンバー毎に、
UPDATEMEMBERPROCが呼び出される。
る; ルール・ベースから手続き呼び出しが実行さ
れると、この手続きのメンバーである全ての外
部ノードが重みを更新され、木の上方へ伝達さ
れる。UPDATEPROCSは、この現在の手続
きのメンバーどある全ての外部ノードの位置を
見つけ、各メンバー毎に、
UPDATEMEMBERPROCが呼び出される。
F 発明の効果
本発明によれば、エキスパート・システムのた
めのホスト上で実行できる任意の処理又は手続き
が、エキスパート・システムによる解析のための
データのソースになり得るので、そのようなデー
タを利用してエキスパート・システムが有意義な
結論を出す可能性が大幅に増大する。
めのホスト上で実行できる任意の処理又は手続き
が、エキスパート・システムによる解析のための
データのソースになり得るので、そのようなデー
タを利用してエキスパート・システムが有意義な
結論を出す可能性が大幅に増大する。
第1図はエキスパート・システムの構成要素の
全体的な機能的関係を示す図。第2図はルール木
の1例を示す図。第3図はルール木の他の例を示
す図。第4図はルール木の他の例を示す図。第5
図及び第6図は主要リンク・リストのレコードを
示す図。第7図は第5図及び第6図に示すレコー
ドの可変フイールドの一般的なフオーマツトを示
す図。第8図はハツシユ表構造に対するリンク・
リストの関係を示す図。第9図はクラスのリン
ク・リスト、メンバー・リスト、ハツシユ表、及
びクラスのメンバーであるルール・ノードの関係
を示す図。第10図は手続きのリンク・リスト、
手続きオブジエクトのメンバー・リスト、ハツシ
ユ表、及び手続きオブジエクトのメンバーである
ルール・ノードの関係を示す図。第11図はパラ
メータ・リンク・リストの構成を示す図。第12
図はルール・ノード・リンク・リストの構成を示
す図。第13A図及び第13B図はエキスパー
ト・システムで用いられる種々のプログラミン
グ・モジユールの構成を示す図である。
全体的な機能的関係を示す図。第2図はルール木
の1例を示す図。第3図はルール木の他の例を示
す図。第4図はルール木の他の例を示す図。第5
図及び第6図は主要リンク・リストのレコードを
示す図。第7図は第5図及び第6図に示すレコー
ドの可変フイールドの一般的なフオーマツトを示
す図。第8図はハツシユ表構造に対するリンク・
リストの関係を示す図。第9図はクラスのリン
ク・リスト、メンバー・リスト、ハツシユ表、及
びクラスのメンバーであるルール・ノードの関係
を示す図。第10図は手続きのリンク・リスト、
手続きオブジエクトのメンバー・リスト、ハツシ
ユ表、及び手続きオブジエクトのメンバーである
ルール・ノードの関係を示す図。第11図はパラ
メータ・リンク・リストの構成を示す図。第12
図はルール・ノード・リンク・リストの構成を示
す図。第13A図及び第13B図はエキスパー
ト・システムで用いられる種々のプログラミン
グ・モジユールの構成を示す図である。
Claims (1)
- 【特許請求の範囲】 1 処理装置、推論機構、ルール・ベースの大き
さよりも小さな記憶容量を有する主記憶装置、及
びルール・ベース全体を記憶できる記憶容量を有
する記憶媒体を具備し、該ルール・ベースを、そ
れぞれが該主記憶装置よりも小さな大きさを有し
且つ複数のノードで構成されるルール木を含む複
数のセグメントに分割して管理するエキスパー
ト・システムであつて、 上記ルール・ベース・セグメント内のルール木
の所定のノードについて、該ノードに関連する情
報が他の1以上のルール・ベース・セグメントと
授受される必要がある場合に該ノードにグローバ
ル属性を割当てるとともに、該グローバル属性の
割当てられたノードに関連する情報を保持するグ
ローバル・リストを上記推論機構内に設け、 上記記憶媒体から上記主記憶装置に転送された
第1のルール・ベース・セグメントの処理中又は
処理後に、上記記憶媒体中の第2のルール・ベー
ス・セグメントを呼び出す場合、該第2のルー
ル・ベース・セグメント内のグローバル属性を有
するノードを判断し、該ノードの情報を上記第1
のルール・ベース・セグメントの処理中に収集さ
れた上記グローバル・リスト内の対応する情報で
更新する、 エキスパート・システム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/749,076 US4809219A (en) | 1985-06-26 | 1985-06-26 | Method for processing an expert system rulebase on a system having limited memory |
| US749076 | 1985-06-26 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS622319A JPS622319A (ja) | 1987-01-08 |
| JPH0556537B2 true JPH0556537B2 (ja) | 1993-08-19 |
Family
ID=25012146
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP61140407A Granted JPS622319A (ja) | 1985-06-26 | 1986-06-18 | エキスパート・システム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US4809219A (ja) |
| EP (1) | EP0205873A3 (ja) |
| JP (1) | JPS622319A (ja) |
| CA (1) | CA1252214A (ja) |
Families Citing this family (91)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4754409A (en) * | 1985-06-26 | 1988-06-28 | International Business Machines Corporation | Method for dynamically collecting current data from specified external processes and procedures for use in an expert system |
| EP0298078A4 (en) * | 1987-01-20 | 1989-12-12 | Ultimate Media Entpr Inc | TOOL FOR DEVELOPING AN EXPERT KNOWLEDGE SYSTEM. |
| JPS63282530A (ja) * | 1987-05-13 | 1988-11-18 | Nec Corp | エキスパ−トシステムにおける分割処理制御方式 |
| JPH01134628A (ja) * | 1987-11-20 | 1989-05-26 | Hitachi Ltd | データベースの知識化利用方式 |
| JPH01147628A (ja) * | 1987-12-03 | 1989-06-09 | Sharp Corp | 質問応答装置 |
| JPH01237729A (ja) * | 1988-03-18 | 1989-09-22 | Hitachi Ltd | 推論処理装置 |
| US5274801A (en) * | 1988-04-29 | 1993-12-28 | International Business Machines Corp. | Artifical intelligence delivery system |
| US5121496A (en) * | 1988-07-25 | 1992-06-09 | Westinghouse Electric Corp. | Method for creating, maintaining and using an expert system by recursively modifying calibration file and merging with standard file |
| US4964125A (en) * | 1988-08-19 | 1990-10-16 | Hughes Aircraft Company | Method and apparatus for diagnosing faults |
| US4941102A (en) * | 1988-09-16 | 1990-07-10 | International Business Machines Corporation | Two-step debugger for expert systems |
| US5165011A (en) * | 1988-09-22 | 1992-11-17 | Omron Tateisi Electronics Co. | System for switching a rule group |
| JP2786209B2 (ja) * | 1988-10-07 | 1998-08-13 | 株式会社日立製作所 | 忘却機能を有する知識データ管理方法 |
| BG49592A1 (en) * | 1988-11-17 | 1991-12-16 | Inst Mikroelektronika | Electronic scheme for processing knowledge |
| CN1059981A (zh) * | 1988-12-30 | 1992-04-01 | 惠普公司 | 为容纳进一对象管理设备环境的应用程序的封装 |
| US4975865A (en) * | 1989-05-31 | 1990-12-04 | Mitech Corporation | Method and apparatus for real-time control |
| JPH03116237A (ja) * | 1989-09-29 | 1991-05-17 | Hitachi Ltd | 知識処理方法 |
| EP0453160A3 (en) * | 1990-04-20 | 1993-09-15 | Digital Equipment Corporation | A method and apparatus for analyzing the flow of data through a complex information exchange system |
| JPH0410047A (ja) * | 1990-04-26 | 1992-01-14 | Canon Inc | 情報処理システム |
| JP3049561B2 (ja) * | 1990-05-21 | 2000-06-05 | 東洋通信機株式会社 | プロダクションシステムとプロダクションシステムの変換装置 |
| US5222197A (en) * | 1990-06-28 | 1993-06-22 | Digital Equipment Corporation | Rule invocation mechanism for inductive learning engine |
| US5179633A (en) * | 1990-06-29 | 1993-01-12 | Digital Equipment Corporation | Method and apparatus for efficiently implementing read-type procedural attachments in rete-like pattern matching environment |
| US5303332A (en) * | 1990-07-30 | 1994-04-12 | Digital Equipment Corporation | Language for economically building complex, large-scale, efficient, rule-based systems and sub-systems |
| US5226110A (en) * | 1991-03-29 | 1993-07-06 | The United States Of America As Represened By The Administrator Of The National Aeronautics And Space Administration | Parallel inferencing method and apparatus for rule-based expert systems |
| EP0529130A1 (en) * | 1991-08-28 | 1993-03-03 | International Business Machines Corporation | Expert system with explanation system |
| US5283856A (en) * | 1991-10-04 | 1994-02-01 | Beyond, Inc. | Event-driven rule-based messaging system |
| US5555346A (en) * | 1991-10-04 | 1996-09-10 | Beyond Corporated | Event-driven rule-based messaging system |
| US5627764A (en) * | 1991-10-04 | 1997-05-06 | Banyan Systems, Inc. | Automatic electronic messaging system with feedback and work flow administration |
| US5379366A (en) * | 1993-01-29 | 1995-01-03 | Noyes; Dallas B. | Method for representation of knowledge in a computer as a network database system |
| US5369732A (en) * | 1993-03-29 | 1994-11-29 | Trilogy Development Group | Method and apparatus for goal processing memory management |
| CA2148029A1 (en) * | 1994-05-25 | 1995-11-26 | Deborah L. Mcguinness | Knowledge base management system with enhanced explanation of derived information and of error objects |
| US5623664A (en) * | 1994-07-25 | 1997-04-22 | Motorola, Inc. | Interactive memory organization system and method therefor |
| US5613119A (en) * | 1994-07-25 | 1997-03-18 | Motorola Inc. | Data processor initialization program and method therefor |
| US6161101A (en) * | 1994-12-08 | 2000-12-12 | Tech-Metrics International, Inc. | Computer-aided methods and apparatus for assessing an organization process or system |
| US20010002851A1 (en) * | 1995-04-14 | 2001-06-07 | Takao Shimada | Multimedia data processing system in network |
| US8229844B2 (en) | 1996-06-05 | 2012-07-24 | Fraud Control Systems.Com Corporation | Method of billing a purchase made over a computer network |
| US7555458B1 (en) * | 1996-06-05 | 2009-06-30 | Fraud Control System.Com Corporation | Method of billing a purchase made over a computer network |
| US20030195848A1 (en) * | 1996-06-05 | 2003-10-16 | David Felger | Method of billing a purchase made over a computer network |
| US5862319A (en) * | 1996-06-21 | 1999-01-19 | Mci Communications Corporation | Dynamic data tool for testing record processing systems |
| US5958050A (en) * | 1996-09-24 | 1999-09-28 | Electric Communities | Trusted delegation system |
| US6601034B1 (en) | 1998-03-05 | 2003-07-29 | American Management Systems, Inc. | Decision management system which is cross-function, cross-industry and cross-platform |
| US6546545B1 (en) | 1998-03-05 | 2003-04-08 | American Management Systems, Inc. | Versioning in a rules based decision management system |
| US6609120B1 (en) | 1998-03-05 | 2003-08-19 | American Management Systems, Inc. | Decision management system which automatically searches for strategy components in a strategy |
| US8364578B1 (en) | 1998-03-05 | 2013-01-29 | Cgi Technologies And Solutions Inc. | Simultaneous customer/account strategy execution in a decision management system |
| US6421655B1 (en) * | 1999-06-04 | 2002-07-16 | Microsoft Corporation | Computer-based representations and reasoning methods for engaging users in goal-oriented conversations |
| US6708155B1 (en) | 1999-07-07 | 2004-03-16 | American Management Systems, Inc. | Decision management system with automated strategy optimization |
| US6876991B1 (en) | 1999-11-08 | 2005-04-05 | Collaborative Decision Platforms, Llc. | System, method and computer program product for a collaborative decision platform |
| EP1402336A2 (en) * | 2000-09-07 | 2004-03-31 | Fair Isaac Corporation | Mechanism and method for dynamic question handling through an electronic interface |
| GB2384580A (en) * | 2001-12-14 | 2003-07-30 | Empiricom Technologies Ltd | Knowledge acquisition in expert systems |
| US8082186B2 (en) * | 2008-09-08 | 2011-12-20 | Moshe Shuchman | Method and a system for generating a custom itinerary according to user specifications |
| US10387969B1 (en) | 2014-03-12 | 2019-08-20 | Intuit Inc. | Computer implemented methods systems and articles of manufacture for suggestion-based interview engine for tax return preparation application |
| US9760953B1 (en) | 2014-03-12 | 2017-09-12 | Intuit Inc. | Computer implemented methods systems and articles of manufacture for identifying tax return preparation application questions based on semantic dependency |
| US10915970B1 (en) | 2014-03-12 | 2021-02-09 | Intuit Inc. | Computer implemented methods systems and articles of manufacture for communicating and resolving electronic tax return errors and inconsistent data |
| US11430072B1 (en) | 2014-07-31 | 2022-08-30 | Intuit Inc. | System and method of generating estimates used to calculate taxes |
| US9916628B1 (en) | 2014-07-31 | 2018-03-13 | Intuit Inc. | Interview question modification during preparation of electronic tax return |
| US10867355B1 (en) | 2014-07-31 | 2020-12-15 | Intuit Inc. | Computer implemented methods systems and articles of manufacture for preparing electronic tax return with assumption data |
| US10540725B1 (en) | 2014-08-18 | 2020-01-21 | Intuit Inc. | Methods systems and articles of manufacture for handling non-standard screen changes in preparing an electronic tax return |
| US11861734B1 (en) | 2014-08-18 | 2024-01-02 | Intuit Inc. | Methods systems and articles of manufacture for efficiently calculating a tax return in a tax return preparation application |
| US10970793B1 (en) | 2014-08-18 | 2021-04-06 | Intuit Inc. | Methods systems and articles of manufacture for tailoring a user experience in preparing an electronic tax return |
| US10977743B1 (en) | 2014-08-18 | 2021-04-13 | Intuit Inc. | Computer implemented methods systems and articles of manufacture for instance and suggestion differentiation during preparation of electronic tax return |
| US10796381B1 (en) | 2014-10-31 | 2020-10-06 | Intuit Inc. | Systems and methods for determining impact correlations from a tax calculation graph of a tax preparation system |
| US10169826B1 (en) | 2014-10-31 | 2019-01-01 | Intuit Inc. | System and method for generating explanations for tax calculations |
| US9922376B1 (en) | 2014-10-31 | 2018-03-20 | Intuit Inc. | Systems and methods for determining impact chains from a tax calculation graph of a tax preparation system |
| US10387970B1 (en) | 2014-11-25 | 2019-08-20 | Intuit Inc. | Systems and methods for analyzing and generating explanations for changes in tax return results |
| US10235721B1 (en) | 2014-11-26 | 2019-03-19 | Intuit Inc. | System and method for automated data gathering for tax preparation |
| US10296984B1 (en) | 2014-11-26 | 2019-05-21 | Intuit Inc. | Systems, methods and articles of manufacture for determining relevancy of tax topics in a tax preparation system |
| US10235722B1 (en) | 2014-11-26 | 2019-03-19 | Intuit Inc. | Systems and methods for analyzing and determining estimated taxes |
| US11222384B1 (en) | 2014-11-26 | 2022-01-11 | Intuit Inc. | System and method for automated data estimation for tax preparation |
| US10157426B1 (en) | 2014-11-28 | 2018-12-18 | Intuit Inc. | Dynamic pagination of tax return questions during preparation of electronic tax return |
| US10572952B1 (en) | 2014-12-01 | 2020-02-25 | Intuit Inc. | Computer implemented methods systems and articles of manufacture for cross-field validation during preparation of electronic tax return |
| US10872384B1 (en) | 2015-03-30 | 2020-12-22 | Intuit Inc. | System and method for generating explanations for year-over-year tax changes |
| US10140666B1 (en) | 2015-03-30 | 2018-11-27 | Intuit Inc. | System and method for targeted data gathering for tax preparation |
| US10796382B1 (en) | 2015-03-30 | 2020-10-06 | Intuit Inc. | Computer-implemented method for generating a customized tax preparation experience |
| US9990678B1 (en) | 2015-03-31 | 2018-06-05 | Intuit Inc. | Systems methods and articles of manufacture for assessing trustworthiness of electronic tax return data |
| US11113771B1 (en) | 2015-04-28 | 2021-09-07 | Intuit Inc. | Systems, methods and articles for generating sub-graphs of a tax calculation graph of a tax preparation system |
| US10685407B1 (en) | 2015-04-30 | 2020-06-16 | Intuit Inc. | Computer-implemented methods, systems and articles of manufacture for tax topic prediction utilizing prior tax returns |
| US10664924B1 (en) | 2015-04-30 | 2020-05-26 | Intuit Inc. | Computer-implemented methods, systems and articles of manufacture for processing sensitive electronic tax return data |
| US10664925B2 (en) | 2015-06-30 | 2020-05-26 | Intuit Inc. | Systems, methods and articles for determining tax recommendations |
| US20170004584A1 (en) * | 2015-06-30 | 2017-01-05 | Intuit Inc. | Systems, methods and articles for providing tax recommendations |
| US10402913B2 (en) | 2015-07-30 | 2019-09-03 | Intuit Inc. | Generation of personalized and hybrid responses to queries submitted from within tax return preparation system during preparation of electronic tax return |
| US10607298B1 (en) | 2015-07-30 | 2020-03-31 | Intuit Inc. | System and method for indicating sections of electronic tax forms for which narrative explanations can be presented |
| US11176620B1 (en) | 2016-06-28 | 2021-11-16 | Intuit Inc. | Systems and methods for generating an error report listing errors in the preparation of a payroll tax form |
| CN107645403B (zh) * | 2016-07-22 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 终端规则引擎装置、终端规则运行方法 |
| US10796231B2 (en) | 2016-07-26 | 2020-10-06 | Intuit Inc. | Computer-implemented systems and methods for preparing compliance forms to meet regulatory requirements |
| US11055794B1 (en) | 2016-07-27 | 2021-07-06 | Intuit Inc. | Methods, systems and computer program products for estimating likelihood of qualifying for benefit |
| US10769592B1 (en) | 2016-07-27 | 2020-09-08 | Intuit Inc. | Methods, systems and computer program products for generating explanations for a benefit qualification change |
| US11087411B2 (en) | 2016-07-27 | 2021-08-10 | Intuit Inc. | Computerized tax return preparation system and computer generated user interfaces for tax topic completion status modifications |
| US10872315B1 (en) | 2016-07-27 | 2020-12-22 | Intuit Inc. | Methods, systems and computer program products for prioritization of benefit qualification questions |
| US10762472B1 (en) | 2016-07-27 | 2020-09-01 | Intuit Inc. | Methods, systems and computer program products for generating notifications of benefit qualification change |
| US10664926B2 (en) | 2016-10-26 | 2020-05-26 | Intuit Inc. | Methods, systems and computer program products for generating and presenting explanations for tax questions |
| US12020334B2 (en) | 2016-10-26 | 2024-06-25 | Intuit Inc. | Methods, systems and computer program products for generating and presenting explanations for tax questions |
| US11138676B2 (en) | 2016-11-29 | 2021-10-05 | Intuit Inc. | Methods, systems and computer program products for collecting tax data |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3670310A (en) * | 1970-09-16 | 1972-06-13 | Infodata Systems Inc | Method for information storage and retrieval |
| US4590557A (en) * | 1983-09-12 | 1986-05-20 | Pitney Bowes Inc. | Method and apparatus for controlling software configurations in data processing systems |
| US4558413A (en) * | 1983-11-21 | 1985-12-10 | Xerox Corporation | Software version management system |
| US4648044A (en) * | 1984-06-06 | 1987-03-03 | Teknowledge, Inc. | Basic expert system tool |
| US4658370A (en) * | 1984-06-07 | 1987-04-14 | Teknowledge, Inc. | Knowledge engineering tool |
| US4642782A (en) * | 1984-07-31 | 1987-02-10 | Westinghouse Electric Corp. | Rule based diagnostic system with dynamic alteration capability |
| US4670848A (en) * | 1985-04-10 | 1987-06-02 | Standard Systems Corporation | Artificial intelligence system |
| US4754409A (en) * | 1985-06-26 | 1988-06-28 | International Business Machines Corporation | Method for dynamically collecting current data from specified external processes and procedures for use in an expert system |
-
1985
- 1985-06-26 US US06/749,076 patent/US4809219A/en not_active Expired - Fee Related
-
1986
- 1986-04-23 CA CA000507322A patent/CA1252214A/en not_active Expired
- 1986-05-13 EP EP86106445A patent/EP0205873A3/en not_active Withdrawn
- 1986-06-18 JP JP61140407A patent/JPS622319A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| CA1252214A (en) | 1989-04-04 |
| US4809219A (en) | 1989-02-28 |
| JPS622319A (ja) | 1987-01-08 |
| EP0205873A3 (en) | 1988-07-27 |
| EP0205873A2 (en) | 1986-12-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0556537B2 (ja) | ||
| US4754409A (en) | Method for dynamically collecting current data from specified external processes and procedures for use in an expert system | |
| US4763277A (en) | Method for obtaining information in an expert system | |
| US6256627B1 (en) | System and method for maintaining a knowledge base and evidence set | |
| Croft et al. | I3R: A new approach to the design of document retrieval systems | |
| US5418888A (en) | System for revelance criteria management of actions and values in a rete network | |
| De Raedt | Logical and relational learning | |
| Nguyen et al. | Knowledge base verification | |
| US5255386A (en) | Method and apparatus for intelligent help that matches the semantic similarity of the inferred intent of query or command to a best-fit predefined command intent | |
| EP0541712B1 (en) | Intelligent help system | |
| US5974405A (en) | Knowledge base management system with enhanced explanation of derived information and error objects | |
| EP0182882A1 (en) | Basic expert system tool | |
| USRE37431E1 (en) | Intelligent help system | |
| Sneiders | Automated faq answering: Continued experience with shallow language understanding | |
| Virvou | Automatic reasoning and help about human errors in using an operating system | |
| PERKINS et al. | Knowledge base verification | |
| Saini et al. | Domobot: An ai-empowered bot for automated and interactive domain modelling | |
| Cimino et al. | UMLS as knowledge base-a rule-based expert system approach to controlled medical vocabulary management | |
| Domanski | A PROLOG-based expert system for tuning MVS/XA | |
| CA1267223A (en) | Method for obtaining information in an expert system | |
| Woods | Knowledge base retrieval | |
| Peruma | Supporting the Maintenance of Identifier Names: a Holistic Approach to High-Quality Automated Identifier Naming | |
| van der Pol | Dipe-R: a knowledge representation language | |
| Wasserman et al. | A specification method for interactive medical information systems | |
| Watson | A methodology for knowledge analysis |