Visual Prolog 的 Web 专家系统 (2)

Web 专家系统 WWWGENI

在目录<VIP_root>\WWW\Programs\GENI中,有个例程,展示如何创建在WEB服务器支持下,以CGI脚本方式在因特网上工作的小型专家系统。

GENI 使用极为简单的规则表示知识,当满足某些条件时,适用这些规则。

rule(1,"carnivore","cheetah",[1,2],"")

rule(2,"carnivore","tiger",[1,3],"")

rule(3,"ungulate","giraffe",[5,2,4],"")

cond(1,"it has tawny color","")

cond(2,"it has dark spots","")

cond(3,"it has black stripes","")

GENI主要用于事物分类。它的目标是描述事物,而非实现高级的演绎引擎。但是,凭借它的工作原理,也能构建复杂的专家系统外壳,功能就像Visual Prolog自有的工具ESTA。

GENI有3个知识库(*.GNI文件),涉及动物、汽车启动、轮胎等问题。

非网络版的GENI,问题的问答,以递归方式进行。在使用CGI脚本的网络版中,不能这样做。因为,在问答咨询过程中,CGI脚本的工作是断续不连贯的。最大的问题,是如何保存咨询过程的中间数据

现有的解决办法,是把用户的每次回答,保存在网页form的hidden类型变量中。这些中间数据,是逐页向后传递的。这个CGI程序GENI.EXE,每次收到用户回答再次启动时,必须用hidden变量保存的数据,重新初始化。这些中间数据,由谓词cgi_GetString检索,并由谓词assert_conditions,把做出的yes/no回答,加入到事实库。事实库中保存着先前回答过的结论,即进行下一步推理的前提条件。

最初的hidden变量,指定知识库.GNI文件的名称。这是咨询过程必须的文件。

Web版GENI执行以下操作任务(可参见程序源码):

  1. 用谓词cgi_GetString,得到相关的CGI变量字符串。
  2. 把该字符串转换成由“名称,值”结构数据构成的列表。
  3. 查询知识库。知识库名称,由首个hidden变量指定。
  4. 把相关hidden变量值存入事实库,作为进一步推理的前提条件。
  5. 重新启动推理引擎。

推理机运行的结果,产生一个HTML网页,内含一个FORM,FORM里有hedden变量,和关于下一个推理前提条件的询问。

若得到推理结论,GENI会生成终结网页,给出咨询结果。

根据推理前提条件,会用HTML文件或部分代码,构建新的询问。

专家系统的一个特点,用户有权了解系统为什么提出某个询问。这种WHY问题,GENI的对策是显示它正在使用的推理规则,和用户以前回答所形成的推理前提条件。

Visual Prolog 的 Web 专家系统 (2)

时间: 2024-10-09 14:01:58

Visual Prolog 的 Web 专家系统 (2)的相关文章

Visual Prolog 的 Web 专家系统 (10)

GENI的核心 -- 推理机(4)求证过程分析 1.GENI知识库结构 专家系统推理机的设计运行,与其知识库结构紧密相关. GENI知识库结构是一棵逻辑推理树.根节点是animal,即求证的目标. Animal有2个子节点,即求证的子目标.节点或子目标,用rule表示.例如: rule(8,"animal","mammal",[12,13],"") rule(9,"animal","bird",[9,14]

Visual Prolog 的 Web 专家系统 (7)

GENI的核心 -- 推理机(1)知识表示 GOAL段最后一句是子句infer(),它的含意是"推理". 由此,进入GENI的核心,察看推理机的运行. infer() infer():- topic(Maingoal,_), go([],MainGoal,""),!. infer():- errorexit. topic(Maingoal,_) topic现存于事实库geni中,取出的Maingoal = "animal", 详见<Visu

Visual Prolog 的 Web 专家系统 (5)

使用现成网页 再说个小伎俩. 在VIP开发环境中,可以随时测试代码,不必编译成exe文件. 比如,想看看VIP内建谓词filenameext的执行结果,可以在一空白.pro文件中写入: GOAL filenameext("prolog.exe",Name,Ext), filenameext(NewName,"prolog.exe",".err"). 然后点选菜单"Project | Test Goal",就会看到以下结果: N

Visual Prolog 的 Web 专家系统 (6)

保存用户对询问的回答结果,作为进一步推理的条件 还是从GOAL段开始.起始句是write_startform() write_startform():- write("<form action=\"\cgi-bin\geni.exe\"method=\"post\">\n"). 注意!上一句应为write("<form action=\"geni.exe\"method=\"post\&q

Visual Prolog 的 Web 专家系统 (3)

深入探究WEB GENI源程序 折腾WEB GENI的目的,是为了摸清它的结构设计.运行机制,为山寨出自己的专家系统外壳,积累经验,启发思路. 为此,必须深入细致地研读源程序代码. WEBGENI包括2个模块:geni.pro和cgitools.pro.前者是主程序,负责推理.生成网页等:后者负责相对底层的CGI数据处理.本文探究的对象,主要是geni.pro. Visual Prolog(以下简称VIP)程序由几种代码段构成: PREDICATES :谓词段.相当于C语言的函数声明 CLAUS

Visual Prolog 的 Web 专家系统 (4)

知识库操作 先说个小伎俩. 在VIP中打开geni.prj,菜单选Options,打开Application Expert,点击Other Options, 点击Project Directories,点击Output,在Final文本框填入d:\Apache2.2\htdocs\GENI 这个目录是GENI虚拟主机所在之处. 这样做的目的,是编译后geni.exe会自动存入上述目录,省去了人工搬运的麻烦. 开始今天的话题,进行知识库操作. 下一步是执行GOAL段的子句consult_kb(Pa

Visual Prolog 的 Web 专家系统 (8)

GENI的核心 -- 推理机(2)流程控制 1.细说fail."!"与回溯 与其他语言相比,Prolog最大的特点,是它的回溯机制. 回溯机制,主要手段有2个,一是用谓词fail引发回溯,二是用特别谓词"!"(读作cut)取消回溯. Prolog运用fail引发回溯,实现程序的循环,并运用"!"对回溯进行控制. 看一个典型示例: FACTS f(integer) PREDICATES a() b() c() CLAUSES a():- write

Visual Prolog 的 Web 专家系统 (9)

GENI的核心 -- 推理机(3)一些谓词 为了集中注意力,较好地分析GENI推理机核心程序,应该做些准备工作,弄明白一些起辅助作用的谓词功能. is_htmlfile(Rulexpl) is_htmlfile(FILE):- filenameext(File,_Name,Mask), Mask = ".htm",!. is_htmlfile(FILE):- filenameext(File,_Name,Mask), Mask = ".html",!. 如果FILE

Visual Prolog 的 Web 专家系统 (11)

GENI的核心 -- 推理机(5)处理why问题 1.why问题由客户从浏览器提出 专家系统工作时,需要向用户提出问题,收集推理求证用的事实根据. 用户有时想知道,系统为什么提出这样的问题,要求系统给出解释.这就是所谓的why问题. why问题的提出,是按动网页按钮"why"的结果. 2.why功能的设置 GENI的第一个页面default.htm并没有按钮"why".它的设置过程是这样的: 从上一节的谓词check第3子句说起. check( RNO, HISTO