Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

0
respostas

Faça como eu fiz: construindo um sistema especialista

Para esta atividade, criei um sistema especialista simples em Python para auxiliar no diagnóstico de condições respiratórias com base nos sintomas informados pelo paciente.

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_diagnosticos = True

        while novos_diagnosticos:
            novos_diagnosticos = 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"Diagnóstico inferido: {conclusao}")
                        novos_diagnosticos = True


# Criando a base de conhecimento
base = BaseDeConhecimento()

# Adicionando fatos informados pelo paciente
base.adicionar_fato("febre alta")
base.adicionar_fato("tosse")
base.adicionar_fato("dificuldade para respirar")

# Adicionando regras
base.adicionar_regra(
    ["febre alta", "tosse"],
    "infecção respiratória"
)

base.adicionar_regra(
    ["infecção respiratória", "dificuldade para respirar"],
    "pneumonia"
)

# Criando e executando o sistema especialista
sistema = SistemaEspecialista(base)
sistema.inferir()

print("\nFatos finais:")
for fato in base.fatos:
    print("-", fato)

Nesse exemplo, o paciente informou febre alta, tosse e dificuldade para respirar. Primeiro, o sistema identifica uma possível infecção respiratória. Depois, como também existe dificuldade para respirar, ele conclui que pode haver pneumonia.

Assim, o sistema usa fatos e regras para chegar a diagnósticos de forma lógica.