A ideia é partir dos sintomas informados pelo paciente e, por meio de lógica proposicional, deduzir novas conclusões de forma sequencial.
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):
self.regras.append((condicoes, conclusao))
class SistemaEspecialista:
def __init__(self, base_conhecimento):
self.base = base_conhecimento
def inferir(self):
novos_fatos = True
while novos_fatos:
novos_fatos = False
for condicoes, conclusao in self.base.regras:
if all(condicao in self.base.fatos for condicao in condicoes):
if conclusao not in self.base.fatos:
self.base.adicionar_fato(conclusao)
print(f"Regra aplicada: se {condicoes}, então {conclusao}")
novos_fatos = True
return self.base.fatos
base = BaseDeConhecimento()
base.adicionar_fato("febre alta")
base.adicionar_fato("tosse")
base.adicionar_fato("dificuldade para respirar")
base.adicionar_regra(["febre alta", "tosse"], "infecção respiratória")
base.adicionar_regra(["infecção respiratória", "dificuldade para respirar"], "pneumonia")
sistema = SistemaEspecialista(base)
diagnosticos = sistema.inferir()
print("\nFatos e diagnósticos inferidos:")
for fato in diagnosticos:
print("-", fato)
Nesse exemplo, o sistema parte dos sintomas relatados e chega a diagnósticos de forma sequencial, o que ajuda a entender como a IA pode apoiar decisões em contextos como o da saúde. Mesmo sendo um modelo simples, ele já demonstra bem a lógica de inferência baseada em conhecimento.