1. Base de Conhecimento:
class BaseDeConhecimento:
def __init__(self):
self.fatos = set()
self.regras = []
def adicionar_fato(self, fato):
self.fatos.add(fato)
def adicionar_regra(self, condicoes, conclusao):
# condicoes: lista de fatos necessários
# conclusao: diagnóstico ou novo fato
self.regras.append((condicoes, conclusao))
def obter_fatos(self):
return self.fatos
def obter_regras(self):
return self.regras
2. Inferência:
class SistemaEspecialista:
def __init__(self, base_conhecimento):
self.base = base_conhecimento
self.diagnosticos = []
def inferir(self):
mudou = True
while mudou:
mudou = False
for condicoes, conclusao in self.base.obter_regras():
if all(cond in self.base.obter_fatos() for cond in condicoes):
if conclusao not in self.base.obter_fatos():
self.base.adicionar_fato(conclusao)
self.diagnosticos.append(conclusao)
mudou = True
def mostrar_diagnosticos(self):
return self.diagnosticos
3. Implementação de diagnósticos:
# Criação da base de conhecimento:
base = BaseDeConhecimento()
# Adição dos sintomas relatados pelo paciente:
base.adicionar_fato("febre alta")
base.adicionar_fato("tosse")
base.adicionar_fato("dificuldade para respirar")
# Adição de regras:
base.adicionar_regra(["febre alta", "tosse"], "infecção respiratória")
base.adicionar_regra(["infecção respiratória", "dificuldade para respirar"], "pneumonia")
# Criação do sistema especialista:
sistema = SistemaEspecialista(base)
# Execução de inferência:
sistema.inferir()
# Possíveis diagnósticos:
print("Como diagnósticos possíveis foram encontrados:", sistema.mostrar_diagnosticos())
Como diagnósticos possíveis foram encontrados: ['infecção respiratória', 'pneumonia']