用Python构建动物产生式识别系统
Posted 是一个小迷糊吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python构建动物产生式识别系统相关的知识,希望对你有一定的参考价值。
#用Python构建动物识别系统
构建动物识别系统需要使用字典、列表和集合,构造间接库和规则库,我的间接库和规则库的构造方法是:将特征语句通过函数转化为一个含所有关键词的集合,然后将这个集合用一个数字作为库字典的键对应值,将这个特征词集合和对应的数字存放在一个列表里,在查询比较时通过集合子集的关系进行动物特征集合的变化,最终求出动物名
Python代码实现如下:
GuiZe=dict()#间接库的字典
ZhiJie=dict()#规则库的字典
li10=[]#存放间接库键的集合和其在字典中对应的数字键
li20=[]#存放规则库键的集合和其在字典中对应的数字键
jj=0#定位间接库字典的键
gz=0#定位规则库字典的键
def changejh(str):#将字符串转化为集合的函数
li0=set()
tr=""
for i in range(0,len(str)):
if (str[i]!=" "):
tr+=str[i]
else:
li0.add(tr)
tr=""
i+=1
return li0#返回集合
def jianjiedata(jj):#构造间接数据库
print("构建规则库:(输入0结束构建)")
gz=input("请输入条件,以空格隔开:")
gz+=" "
while (gz!="0 "):
jg=input("请输入结果:")
GuiZe[jj]=jg#构造字典
li1=changejh(gz)#将条件关键词拆分在一个集合内
li10.append(li1)#将对应字典的键的集合存入列表
li10.append(jj)#将对应字典的键存入列表,位置在集合的后面
jj+=1
gz = input("请输入条件,以空格隔开:")
gz=gz+" "
print("间接数据库构造完成!")
return jj
def zhijiedata(gz):#构造直接数据库,方法同上
print("构建直接数据库:(输入0结束构建)")
tj=input("请输入条件,以空格隔开:")
tj+=" "
while (tj!="0 "):
jg=input("请输入结果:")
ZhiJie[gz]=jg
li2=changejh(tj)
li20.append(li2)
li20.append(gz)
gz+=1
tj=input("请输入条件,以空格隔开:")
tj=tj+" "
print("直接数据库构造完成!")
return gz
def recarchGuiZe(animalset,li10,GuiZe):#循环动物条件,将动物条件的集合在间接库或规则库中查找,当找到相对应的值时,将值加入动物集合,用过的条件删去
for k in range(0,len(animalset)):
for i in range(0, (len(li10) - 1)):
if (type(li10[i])==int):
continue
elif (li10[i].issubset(animalset) or li10[i]==animalset):
m=(i)/2
animalset.add(GuiZe[m])
animalset=animalset-li10[i]
return animalset
def search():#查找动物
animal=input("请输入动物的特征:(中间用空格隔开)")
animal+=" "
animalset=changejh(animal)#将动物的特征化为关键词的集合
animalset=recarchGuiZe(animalset,li10,GuiZe)#返回经过间接库的过滤后的动物特征集合
resout=recarchGuiZe(animalset,li20,ZhiJie)#返回经过规则库过滤后的动物特征集合,此时,如果规则库存在此动物,则集合只剩一个值即动物的名字,否则仍有多个特征值
action=list(resout)#将动物特征集合化为列表,便于取值
if (len(action)==1):
print("这个动物是:"+action[0])
else:
print("查无此动物")
print("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
chose = input()
while (chose!='0'):
#print("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
if (chose=='1'):
jj=jianjiedata(jj)
#print(li10)
chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
elif (chose=='2'):
gz=zhijiedata(gz)
#print(li20)
chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
elif (chose=='3'):
search()
chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
else:
print("输入不合法,请重新输入")
chose = input("请输入接下来操作(1.添加间接数据库 2.添加直接数据库 3.查询动物 0.结束操作):")
以上是关于用Python构建动物产生式识别系统的主要内容,如果未能解决你的问题,请参考以下文章
基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)