資源簡介
基于產生式規則建立一個動物識別系統和手機識別系統,主要功能如下:
(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?????????????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
- 上一篇:矩陣相似度度量
- 下一篇:python 2.7中文手冊chm版
評論
共有 條評論