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!

1
resposta

[Projeto] construindo um sistema especialista

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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:

  • Uso de Conjuntos (Sets) e o método 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:

  • Encadeamento para Trás (Backward Chaining): Trata-se do caminho inverso do que você construiu. Em vez de partir dos sintomas para descobrir a doença, o sistema começa com uma hipótese de objetivo (por exemplo: "O paciente tem pneumonia?") e caminha de trás para frente, verificando se os fatos iniciais disponíveis no sistema sustentam essa afirmação. É uma abordagem muito comum em sistemas de diagnóstico onde se deseja testar hipóteses específicas rapidamente.
  • Fatores de Certeza (Lógica Nebulosa ou Probabilística): No mundo real, diagnósticos raramente são binários (100% de certeza). Adicionar "pesos" ou fatores de certeza às regras de conclusão (por exemplo: se o paciente tem febre alta e tosse, há 80% de probabilidade de infecção respiratória) é um passo clássico para tornar o motor de inferência mais realista e robusto.

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!