Solucionado (ver solução)

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!

Solucionado
(ver solução)
3
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.

3 respostas

Olá, Estudante! Como vai?

Parabéns pela resolução da atividade!

Vi que você explorou o Sistema Especialista para diagnóstico com Python, utilizou muito bem a base de conhecimento para estruturar fatos e ainda compreendeu a importância das regras de inferência para chegar a conclusões lógicas.

Uma dica interessante para o futuro é implementar um mecanismo de explicação, mostrando quais regras foram ativadas para chegar ao diagnóstico. Assim:

def inferir_com_explicacao(self):
    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: {condicoes} -> {conclusao}")

Isso ajuda a entender o raciocínio do sistema e torna o diagnóstico mais transparente.

Se quiser aprofundar ainda mais, algumas boas práticas são:

  • Integrar com dados reais: validar os diagnósticos com casos clínicos.
  • Adicionar pesos às regras: para refletir diferentes níveis de confiança.
  • Explorar bibliotecas específicas: como experta para sistemas especialistas mais robustos.

Ah, uma pergunta: você acha mais interessante evoluir o sistema especialista adicionando explicações detalhadas das regras aplicadas ou prefere mantê-lo simples e direto apenas nos diagnósticos finais?

Abraço e bons estudos!

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

Obrigado pelo feedback e pelas dicas.

Olá, Estudante! Tudo bem?

Imagina! Fico feliz por contribuir na sua jornada.

E continue explorando o fórum, esse nosso espaço fortalece a troca de ideias, incentiva aprendizado contínuo e contribui para evolução conjunta no estudo.

Forte abraço e bons estudos por aí!