资源简介

基于产生式规则建立一个动物识别系统和手机识别系统,主要功能如下: (1)建造规则库,并基于该库进行识别推理; (2)对规则库进行增加、删除和修改操作。 压缩包包括动物识别规则库和手机识别规则库以及产生式系统的python语言程序,用户可根据自己需要导入不同的规则库进行识别,或者自己创建相似的规则库进行识别。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Sun Oct  7 16:03:18 2018

@author: 魅梦
“““

from fuzzywuzzy import fuzz
import pandas as pd
import re
import jieba

‘‘‘定义添加字典函数‘‘‘
def addword(x):
    fl = x.split(‘,‘)
    for j in range(len(fl)):
        jieba.add_word(fl[j])
        
‘‘‘定义特征分类函数‘‘‘
def cut(df):  
    x = 0
    y = 0
    flagnum = ““
    for i in range(df.shape[0]):        
        flag = df.iloc[i 0]
        flagnum = str(flagnum) + ‘,‘ + flag 
    for i in range(df.shape[0]):
        flag = df.iloc[i 0]
        result = df.iloc[i 1]
        if result in flagnum:
            df1.loc[x] = [flag result]
            x = x + 1           
        else:
            df2.loc[y] = [flag result]
            y = y + 1
    return df1 df2
        
‘‘‘定义识别模块‘‘‘
def identify(df1 df2):
    ‘‘‘类别规则库识别‘‘‘
    starttemp = input(“请输入要识别的特征(以,分隔):\n“)
    temp = starttemp
    temp1 = re.sub(r‘[色 物 有 子 会 身]‘ ““ temp)
    for i in range(df1.shape[0]):
        flag = df1.iloc[i 0]
        addword(flag)
        result = df1.iloc[i 1]
        addword(result)
        temp0 = jieba.lcut(temp1)
        for j in range(len(temp0)):
            if temp0[j] in re.sub(‘,‘ ““ flag) and re.sub(‘,‘ ““ result) not in temp:  
                temp = temp + ‘,‘ + re.sub(‘,‘ ““ result)
                print(“类别库规则r“ + str(i) + “:IF “ + flag + “ THEN 为“ + result + “匹配成功,\
                      \n更新事实为:“ + temp + ‘\n‘)
    if temp == starttemp:
        print(“未在类别库中找到这些特征,继续识别的结果可能不准确。“)
    ‘‘‘名称规则库识别‘‘‘    
    while(len(temp.split(‘,‘)) < 4):
        te = input(“特征过少,请继续添加特征:\n“)
        if te in temp:
            print(“特征重复,请重新输入!“)
        else:
            temp = temp + ‘,‘ + te
    temp1 = re.sub(r‘[色 物 有 子 会 身]‘ ““ temp)
    temp0 = jieba.lcut(temp1)
    n = 0
    num = 0
    for i in range(df2.shape[0]):
        flag = df2.iloc[i 0]
        addword(flag)
        result = df2.iloc[i 1]
        addword(result)
        m = 0
        for j in range(len(temp0)):   
            m = m + fuzz.partial_ratio(temp0[j] re.sub(‘,‘ ““ flag))
        if num < m:
            num = m
            n = i   
    flag0 = df2.iloc[n 0]
    result0 = df2.iloc[n 1]
    if num < 400:
        print(“抱歉,识别失败,请等待后续规则库完善。“)
    else:
        print(“名称库规则r“ + str(n) + ‘:IF ‘ + flag0 + “ THEN 为“ + result0 + “匹配成功,“)
        if num < 600:
            print(“结果可能为:“ + result0)
        else:
            print(“推出结果为:“ + result0)
            
‘‘‘定义规则输出模块‘‘‘
def rule(df1 df2):
    starttemp = input(“请输入要输出特征的结果:\n“)
    temp = starttemp
    for i in range(df2.shape[0]):
        flag = df2.iloc[i 0]
        result = df2.iloc[i 1]
        if starttemp in result or result in starttemp:
            print(“名称库规则r“ + str(i) + “:IF “ + flag + “ THEN 为“ + result + “匹配成功,\
                  \n得到结果“ + starttemp + “的特征为:“ + flag)
            temp = starttemp + ‘,‘ + flag
    for i in

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        7561  2020-04-16 00:06  产生式系统.py
     文件        5865  2018-10-11 23:27  动物识别规则库.xlsx
     文件        9653  2018-10-12 00:45  手机识别规则库.xlsx

评论

共有 条评论