Prolog编程中的知识库与推理机制深入解析
1. CONMAN知识库概述
在构建知识库时,需要明确用户可以直接被询问的假设。这些假设通过谓词 kb_can_ask
的子句进行枚举。以MDC知识库为例,其中包含了关于患者症状、病情和病史等方面的假设。需要注意的是,一个假设不会同时出现在 kb_hypothesis
和 kb_can_ask
的子句中。这是因为如果用户能够自行判断某个假设的真假,就无需专家系统的帮助来调查该假设。专家系统会利用用户能够独立调查的假设信息,得出用户较难独立得出的结论。
在CONMAN知识库的末尾,如果Prolog实现允许,会放置起始查询 :- conman.
,这样在加载知识库时就会开始咨询。但在某些Prolog中,这可能无法按预期工作,此时分布式版本的知识库会打印消息 “Type conman. to start.”。
1.1 构建和调试建议
在构建和调试CONMAN知识库时,大部分关于构建和调试XSHELL知识库的建议同样适用。特别要注意的是,CONMAN知识库中的假设以完整的英语句子表示,且每个假设的句子在每次出现时必须形式完全相同,否则会导致系统运行不稳定。为避免重复输入长句子,建议在构建和调试知识库时,为每个假设使用简短、独特的单词或音节作为标记,之后使用文字处理器的全局替换功能将这些标记替换为相应的句子。同时,保留带有短标记的知识库版本,以便后续扩展或修改知识库时使用。另外,也可以修改CONMAN,使其在内部使用短名称,并维护一个查找表,用于在屏幕上显示假设时使用较长的短语。