知识图谱 06:从专家系统到知识图谱(以动物识别为例)
在知识工程(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》
📘 小结
动物识别案例的意义,不在于识别某一种动物,而在于展示知识系统如何从规则组织走向图谱组织。专家系统强调规则推理,知识图谱强调对象、关系和语义结构的整体组织。理解这条过渡路径,有助于进一步学习知识图谱的建模、查询与应用。

“点赞有美意,赞赏是鼓励”
更多推荐
所有评论(0)