人工智能基础 | Python实现-产生式系统-文字动物识别系统
参考资料: 《人工智能通识教程》——王万良文章目录一、实现效果二、运行环境三、相关知识3.1 产生式系统3.2 控制系统(程序)的工作3.3 规则库总结四、程序4.1 流程图4.2 编写程序一、实现效果二、运行环境Pycharm 社区版 +Anaconda3三、相关知识3.1 产生式系统规则库:用于描述相应领域内知识的产生式集合综合数据库:用于存放问题求解过程中各种当前信息的数据结构控制系统:由程
参考资料: 《人工智能通识教程》——王万良
一、实现效果

二、运行环境
Pycharm 社区版 + Anaconda3
三、相关知识
3.1 产生式系统

规则库:用于描述相应领域内知识的产生式集合综合数据库:用于存放问题求解过程中各种当前信息的数据结构控制系统:由程序组成,负责整个产生式系统的运行,实现对问题的求解
3.2 控制系统(程序)的工作
- 从
规则库中选择与综合数据库中的已知事实进行匹配 - 匹配成功的规则可能不止一条,进行冲突消解
- 执行规则时,若右部是一或多个(1) 结论,则把这些结论加入到
综合数据库中,(2) 操作,则执行 - 对于不确定知识,执行规则时,根据算法计算结论的不确定性
- 检查
综合数据库中是否包含了最终结论,决定是否停止系统的运行
本次实验是实现识别虎、金钱豹、斑马、长颈鹿、鸵鸟、且、信天翁共七种动物的产生式系统
3.3 规则库总结
1有毛发 2有奶 3 有羽毛 4会飞 5会下蛋
6吃肉 7犬齿 8有爪 9眼盯前方 10有蹄
11反刍动物 12黄褐色 13暗斑点 14黑色条纹 15长脖子
16有长腿 17不会飞 18有黑白二色 19会游泳 20善飞
21哺乳类 22鸟类 23食肉类 24有蹄类 25金钱豹
26虎 27长颈鹿 28斑马 29鸵鸟 30企鹅 31信天翁
【R1】1 =>21 【R2】2 => 21 【R3】3 => 22 【R4】4 + 5 => 22 【R5】6 => 23
【R6】7 + 8 + 9 => 23 【R7】10+ 21 => 24 【R8】11 + 21 => 24
【R9】6 + 12 + 13 +21 => 25 【R10】12 + 14 + 21 + 23 => 26
【R11】15 + 16 + 13 + 24 => 27 【R12】 14 + 10 => 28
【R13】15 + 16 + 17 + 18 + 22 => 29 【R14】 17 + 18 + 19 + 22 => 30
【R15】20 + 22 => 31
四、程序
4.1 流程图

4.2 编写程序
测试数据:
已知初始事实(综合数据库):
暗斑点、长脖子、长腿、奶、蹄
rule.txt
[有毛发, 有奶,有羽毛,会飞, 会下蛋,吃肉,犬齿,有爪,眼盯前方,有蹄,反刍动物,黄褐色,暗斑点,黑色条纹,长脖子,有长腿,不会飞,有黑白二色,会游泳,善飞,哺乳类,鸟类,食肉类,有蹄类,金钱豹,虎,长颈鹿, 斑马,鸵鸟,企鹅,信天翁]
(1>21)
(2>21)
(3>22)
(4,5>22)
(6>23)
(7,8,9>23)
(10,21>24)
(11,21>24)
(21,23,12,13>25)
(21,23,12,14>26)
(24,15,16,13,2>27)
(24,14>28)
(22,15,16,17,18>29)
(22,19,17,18>30)
(22,20>31)
Animal.py
import re
# 读取数据
with open('rule.txt', encoding="utf8") as fp: rule = fp.read()
# 数据处理
res = re.findall("\[+(.+)\]", rule)[0].split(",")
ruleBase = dict([[i, res[i-1]] for i in range(1, len(res) + 1)])
integratedBase = [[y[0].split(','), y[1]]
for y in [x.split('>')
for x in re.findall("\((.+)\)", rule)]]
_rule = set()
def showRule():
for i in range(1, len(ruleBase) + 1):
print(str(i) + ':' + str(ruleBase[i]), end='\n' if i % 5 == 0 else ' ')
def judge():
for i in range(1, len(integratedBase) + 1):
target = integratedBase[i-1][1]
ib = integratedBase[i-1][0]
if ((set(ib)).issubset(_rule) and target not in _rule):
print('根据:[ ', end='')
for x in ib:
print(ruleBase[int(x)], end=' ')
_rule.add(target)
print('] => ' + ruleBase[int(target)])
def getRule():
global _rule
print("\n请输入特征(多个特征 以空格隔开)")
_rule = set([x for x in input().split(' ')])
if __name__ == '__main__':
showRule()
getRule()
print('正向推导:')
judge()
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)