1
resposta

Resposta Sistema Especialista

class BaseDeConhecimento:

def __init__(self):
    self.fatos = []
    self.regras = []

def adicionar_fato(self, fato):
    self.fatos.append(fato)
    
def adicionar_regra (self, condicao, conclusao):
    self.regras.append((condicao, conclusao))
    
    

class SistemaEspecialista:

def __init__ (self, base_conhecimento):
    self.base_conhecimento = base_conhecimento
    
def  inferir (self):
    novos_fatos = True
    while novos_fatos:
        novos_fatos = False
        for condicao, conclusao in self.base_conhecimento.regras:
            if all (fato in self.base_conhecimento.fatos for fato in condicao):
                if conclusao not in self.base_conhecimento.fatos:
                    self.base_conhecimento.fatos.append(conclusao)
                    novos_fatos =  True
                

base = BaseDeConhecimento()

add fatos

base.adicionar_fato("Coriza")
base.adicionar_fato("dificuldade para respirar")

Add regras

base.adicionar_regra(["febre alta", "tosse"], "infecção respiratória")
base.adicionar_regra(
["infecção respiratória", "dificuldade para respirar"], "pneumonia"
)
base.adicionar_regra(
['Coriza', 'dificuldade para respirar'], 'Rinite'
)

Criando o sistema

sistema = SistemaEspecialista(base)

Executando a inferência

sistema.inferir()

Exibindo os fatos atualizados

print("Fatos inferidos:")
print(base.fatos)

1 resposta

Olá, Estudante! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de classes para estruturar uma base de conhecimento com Python, utilizou muito bem o método de inferência para aplicar regras sobre fatos e ainda compreendeu a importância da lista de fatos para armazenar e atualizar informações dinamicamente.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!