用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构建动物产生式识别系统的主要内容,如果未能解决你的问题,请参考以下文章

动物识别专家系统课程设计

Python小实验2—产生式系统实验

基于深度学习的动物识别系统(YOLOv5清新界面版,Python代码)

这份最全指南,帮你学会用栅格系统构建响应式设计

TensorFlow2 实现动物识别(90类)MobileNetV2算法(内附源码与数据)

毕业设计 题目:基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别