关于动物专家系统实现的思考 --------By Grace yan
参考链接:
https://blog.csdn.net/shaguabufadai/article/details/71699372
https://blog.csdn.net/qq_40276310/article/details/80329261
https://www.cnblogs.com/lepeCoder/p/8094136.html
规则如下:(guize.txt)
有毛发 哺乳动物
有奶 哺乳动物
有羽毛 鸟
会飞 下蛋 鸟
吃肉 食肉动物
有犬齿 有爪 眼盯前方 食肉动物
哺乳动物 有蹄 有蹄类动物
哺乳动物 嚼反刍动物 有蹄类动物
哺乳动物 食肉动物 黄褐色 暗斑点 金钱豹
哺乳动物 食肉动物 黄褐色 黑色条纹 虎
有蹄类动物 长脖子 长腿 暗斑点 长颈鹿
有蹄类动物 黑色条纹 斑马
鸟 长脖子 长腿 黑白二色 不飞 鸵鸟
鸟 会游泳 不飞 黑白二色 企鹅
鸟 善飞 信天翁
第一版:用if-else能实现简单的动物识别
1.用一个列表保存所有的动物特征
2.请用户输入特征编号
3.用简单的if-else识别后将动物名称输出,否则输出“识别失败”
第二版:使用类的方法来完成识别工作
p=productionSystem()
p.dowork()
具体实现见代码。
第三版:使用字典来进行特征匹配
1.使用单独的文件来保存所有识别规则
2.从文件中抽出所有的特征和所有可以识别的动物名称分别组成两个列表
3.将特征和对应的动物名称构建字典
4.输出所有特征让用户选择
5.根据用户输入来进行字典中的匹配
6.然后输出识别出的动物名称或者“识别失败”
第四版:使用函数来实现多种功能
def shi_bie_dong_wu():
def xiu_gai_gui_ze():
def zeng_jia_gui_ze():
def shan_chu_gui_ze(animal):
def cha_kan_gui_ze():
好的方面:
对特征进行排序,使得输入的特征不再需要按顺序来。
如有一条规则为:
有羽毛,善飞,信天翁
以前只能输入“有羽毛”,“善飞”,才能输出“信天翁”
现在输入“善飞”,“有羽毛”,也能输出“信天翁”
不好的方面:
还没有实现程序主循环,如期望在增加规则之后,会重新出现右方要求操作的界面。
目前增加规则之后程序就结束了,要重新运行程序才能再次出现右方要求操作的界面。
没有实现精确匹配或者模糊匹配:
比如现在有两条特征:
有羽毛,鸟类
有羽毛,善飞,信天翁
当用户输入“有羽毛”时,选择精确匹配,会输出“鸟类”,
选择模糊匹配,会输出“鸟类”和“信天翁”
希望有时间的话能继续完成的:
第五版:用python操作excel表来实现规则库的增删改查和匹配
第六版:用pyqt5图形界面窗口来实现规则库的增删改查和匹配, 做一个exe文件或者dmg文件
第七版:用flask做成一个基于网页显示的图形界面来实现规则库的增删改查和匹配, 可以连接小型数据库sqlite或者mysql实现