在知识工程(Knowledge Engineering)中,专家系统(Expert System)和知识图谱都属于重要的知识表示与应用方式,但两者关注的重点并不相同。专家系统更强调规则推理,知识图谱更强调知识组织。理解二者之间的关系,一个很合适的教学案例就是“动物识别”。

动物识别案例的优点在于:对象清楚,规则明确,推理过程容易展示,也便于进一步过渡到知识图谱。通过这个案例,可以把规则表示、规则推理、知识组织和图谱查询自然串联起来。

一、先从规则系统理解动物识别

如果把动物识别做成一个最基础的专家系统,首先要做的不是构造复杂图谱,而是写出规则。例如:

• 如果有毛发,那么是哺乳动物;

• 如果有羽毛,那么是鸟类;

• 如果是哺乳动物且吃肉,那么是食肉动物;

• 如果是鸟类且不会飞且会游泳,那么可能是企鹅。

这些规则本质上都是“如果……那么……”的形式,也就是产生式知识表示。系统接收用户输入的特征后,按照规则逐步推出结论。

例如,输入“有毛发、吃肉”,系统就可以先推出“哺乳动物”,再推出“食肉动物”。这说明,规则系统的核心能力在于:根据已知事实匹配规则,并产生新的判断结果。

二、动物识别专家系统的基本组成

一个简化的动物识别专家系统,通常包括以下几个部分。

1、知识库

知识库(Knowledge Base)存放事实和规则,例如“有羽毛→鸟类”“有奶腺→哺乳动物”。它回答的是“系统知道什么”。

2、推理机

推理机(Inference Engine)负责根据输入事实匹配规则,推出结论。它回答的是“系统怎样从已知推出未知”。

3、工作内存

工作内存(Working Memory)用于保存用户输入的事实以及推理过程中产生的中间结论。例如,用户输入“有毛发”后,系统推出“哺乳动物”,这个中间结果也可以继续参与下一步推理。

4、用户界面

用户界面(User Interface)负责接收输入并展示结果。在简化系统中,它可以只是命令行;在更完整的系统中,也可以是图形界面或 Web 页面。

三、Python 实现一个简化示例

下面用 Python 写一个最基础的动物识别专家系统。这个示例主要展示“知识库 + 推理机 + 输入输出”的基本思路。代码写法尽量与教学练习中的形式保持一致。

# 定义知识库knowledge_base = {    "有羽毛": "鸟类",    "下蛋且会飞": "鸟类",    "有奶腺": "哺乳动物",    "哺乳动物且吃肉": "食肉动物"}
# 定义推理机def reason(knowledge_base, animal_features):    results = set(animal_features)
    changed = True    while changed:        changed = False        for feature, category in knowledge_base.items():            if all(f in results for f in feature.split("且")) and category not in results:                results.add(category)                changed = True    return results
# 获取用户输入的动物特征print("请输入动物的特征,多个特征用空格隔开:")user_input = input()animal_features = set(user_input.split())
# 进行动物识别results = reason(knowledge_base, animal_features)
print(f"输入的动物特征:{' '.join(animal_features)}")print(f"推理结果:{'、'.join(results)}")print("推理状态:识别完成")

如果输入:

有奶腺 吃肉

则输出结果通常会包含以下内容(因使用了 set,具体顺序可能不同):

输入的动物特征:有奶腺 吃肉推理结果:食肉动物、有奶腺、哺乳动物、吃肉推理状态:识别完成

这个过程说明,系统并不是直接“猜测”结果,而是先根据“有奶腺→哺乳动物”推出中间结论,再利用“哺乳动物且吃肉→食肉动物”继续推理。

即,系统并不是直接“猜测”结果,而是先根据规则匹配(Rule Matching)推出中间结论(Intermediate Conclusion),再沿着推理链(Reasoning Chain)继续向前推理。

四、规则系统的优势与局限

规则系统的优势比较明显。

第一,规则表达直接。知识可以写成清楚的条件—结论形式。

第二,推理链清楚。系统能够说明“为什么得出这个结果”。

第三,适合教学。它便于展示知识表示与自动推理的基本思想。

第四,适合封闭领域。只要规则范围有限,系统就容易工作。

但规则系统也有明显局限。随着知识增多,系统很快会遇到以下问题:

• 哪些动物共享同一特征?

• 哪些特征与鸟类相关?

• 能不能统一查询“所有有羽毛的动物”?

• 能不能把动物、特征、类别、食性组织到同一结构中?

这说明,规则系统擅长“判断”,却不擅长“组织”。它更像一个会推理的判断机,而不是一个完整的知识组织系统。

五、从规则系统到知识图谱

当系统不只需要“推出结论”,还需要“组织知识”时,就要进一步走向知识图谱。

在动物识别案例中,可以把知识重新整理为“实体—关系—实体”的结构。例如:

• 虎 —— 属于 —— 哺乳动物

• 虎 —— 具有特征 —— 有毛发

• 企鹅 —— 属于 —— 鸟类

• 企鹅 —— 具有特征 —— 会游泳

• 鸟类 —— 具有特征 —— 有羽毛

这样一来,系统中的知识不再只是规则链,而开始成为一张由对象和关系构成的网络。

因此,可以这样理解两者的区别:

• 规则系统强调“根据条件推出结论”;

• 知识图谱强调“把对象和关系组织起来”。

二者并不是对立关系。更合理的理解是:图谱负责组织知识,规则负责支持推理。

六、知识图谱比规则系统多了什么能力

把动物识别知识转成图谱后,系统能力会明显增强。它不仅可以支持对象查询、关系查询,还可以支持更灵活的图谱查询(Graph Query)。

第一,可以查对象。

例如:哪些动物属于鸟类?哪些动物具有“有毛发”这一特征?

第二,可以查关系。

例如:企鹅和鸟类之间是什么关系?哺乳动物通常有哪些特征?

第三,可以做连续查询。

例如:哪些鸟类不会飞?哪些不会飞的鸟类会游泳?

第四,可以和规则推理结合。

图谱负责管理对象与关系,规则则在此基础上继续推出新结论。

因此,知识图谱系统不只是“给出答案”,还能够展示知识之间的结构联系。

七、从教学示例走向真实应用

上面的 Python 示例主要用于教学。它适合帮助初学者理解“知识库—规则—推理”的基本过程,但通常并不足以直接支持真实应用。原因在于,真实知识系统往往具有以下特点:

• 对象数量更多;

• 关系类型更复杂;

• 数据来源更多样;

• 查询需求更灵活;

• 系统更新更加频繁。

因此,在真实应用中,知识图谱的价值会更加明显。

例如,在科技史知识服务中,需要把人物、技术、机构、时代背景组织成网络。用户不只想知道某个人是谁,还希望知道他与哪些发明、机构和历史时期相关。

在医疗知识服务中,需要把疾病、症状、检查、药物和治疗方案关联起来。系统不仅要支持查询,还要支持复杂关系的组织与辅助分析。

在教育知识服务中,可以把课程、教师、学生、专业和知识点连接起来,从而支持课程检索、学习路径推荐和知识点关联分析。

在金融关系分析中,则需要组织机构、人物、投资、交易和风险关联,帮助系统发现隐含关系和潜在风险。

这些真实系统与动物识别案例在结构上并没有本质差别,只是对象更多、关系更复杂、数据规模更大。因此,动物识别案例的真正意义,不在于它本身有多复杂,而在于它清楚展示了:一个知识系统如何从规则组织走向图谱组织,再走向查询与应用。

延伸阅读:

知识图谱数据集概览:DBpedia、YAGO、Freebase

知识图谱工具简介:Protégé、Neo4j、Jena

📘 小结

动物识别案例的意义,不在于识别某一种动物,而在于展示知识系统如何从规则组织走向图谱组织。专家系统强调规则推理,知识图谱强调对象、关系和语义结构的整体组织。理解这条过渡路径,有助于进一步学习知识图谱的建模、查询与应用。

图片

“点赞有美意,赞赏是鼓励”

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐