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!
Olá, Alex. Como vai?
Parabéns pelo desenvolvimento do seu sistema especialista! A organização do seu código e a clareza do terminal com o passo a passo da inferência lógica demonstrada no terminal ficaram ótimas. É muito interessante ver os conceitos teóricos de IA simbólica ganhando vida em um script prático de programação.
O seu projeto demonstra uma boa compreensão do mecanismo de Encadeamento para Frente (Forward Chaining). Na inteligência artificial clássica baseada em regras, essa abordagem é caracterizada por partir de um conjunto de dados previamente conhecidos (os fatos iniciais, como "febre alta", "tosse" e "dificuldade para respirar") e aplicar as regras de inferência de maneira sequencial e iterativa até que novas conclusões sejam alcançadas e nenhuma nova informação possa ser deduzida.
Gostaria de destacar um ponto técnico muito positivo na sua implementação em Python:
issubset: A sua escolha de modelar as condições e os fatos utilizando a estrutura de dados set (conjunto) em Python foi muito acertada. Além de evitar dados duplicados nativamente, o método .issubset() permite que a verificação das regras de inferência seja feita de forma rápida e matematicamente elegante. Como na lógica proposicional a ordem das premissas não importa (ter "febre alta e tosse" é logicamente equivalente a ter "tosse e febre alta"), a verificação de subconjuntos resolve o problema de maneira limpa e eficiente.Como sugestão para o seu aprofundamento nos estudos sobre sistemas baseados em conhecimento, você pode futuramente explorar dois novos conceitos:
O seu resultado final mostra que as conclusões foram encadeadas na ordem correta, demonstrando que a sua lógica estrutural em Python está funcionando conforme esperado.
Espero que possa ter lhe ajudado!