SlideShare una empresa de Scribd logo
Sistema Experto: Detector de Enfermedades Respiratorias
William Castañeda Vilchez
Universidad Nacional de Trujillo
Sede Valle del Jequetepeque
Escuela de Informática
Profesor : Arturo Díaz Pulido
RESUMEN
Vamos a implementar un sistema
expertocuyopropósitoserá ayudarnos en el
diagnóstico de los diferentes tipos de
enfermedades respiratorias, primero
haremos una breve descripción de los
sistemas expertos y luego veremos su
desarrollo.
Palabras Claves
Prolog, sistema experto, enfermedades
respiratorias , etc.
1. INTRODUCCION
Los sistemas expertos se pueden considerar
como el primer producto verdaderamente
operacional de la inteligencia artificial.
Son programas de ordenador diseñados
para actuar como unespecialistahumanoen
un dominio particular o área de
conocimiento. En este sentido, pueden
considerarse como intermediarios entre el
experto humano, que transmite su
conocimientoal sistema,y del usuarioque lo
utiliza para resolver un problema con la
eficacia del especialista.
El sistema experto utilizará para ello el
conocimiento que tenga almacenado y
algunos métodos de inferencia. Para que
un sistema experto sea herramienta
efectiva, los usuarios deben interactuar de
una forma fácil, reuniendo dos capacidades
para poder cumplirlo
Explicar sus razonamientos o base del
conocimiento:
los sistemas expertos se deben realizar
siguiendo ciertas reglas o pasos
comprensibles de manera que se pueda
generarla explicaciónparacada unade estas
reglas, que a la vez se basan en hechos.
Adquisición de nuevos conocimientos o
integrador del sistema:
son mecanismos de razonamiento que
sirven para modificar los conocimientos
anteriores. Sobre labase de lo anterior se
puede decir que los sistemas expertos son
el producto de investigaciones en el campo
de la inteligencia artificial ya que ésta no
intenta sustituir a los expertos humanos,
sino que se desea ayudarlos a realizar con
más rapidez y eficacia todas las tareas que
realiza.
1.1. Usos de un Sistema Experto
a) Un sistema experto es muy eficaz
cuando tiene que analizar una gran
cantidad de información,
interpretándola y proporcionando
una recomendación a partir de la
misma. Un ejemplo es el análisis
financiero, donde se estudian las
oportunidades de inversión,
dependiendo de los datos
financieros de un cliente y de sus
propósitos.
b) Para detectar y reparar fallos en
equipos electrónicos, se utilizan los
sistemas expertos de diagnóstico y
depuración, que formulan listas de
preguntas con las que obtienen
los datos necesarios para llegar a
una conclusión. Entonces
recomiendanlas accionesadecuadas
para corregir los problemas
descubiertos. Este tipo de sistemas
se utilizan también en medicina
(ej. MYCIN y PUFF), y para
localizar problemas en sistemas
informáticos grandes y complejos.
c) Los sistemas expertos son buenos
para predecir resultados futuros a
partir del conocimiento que
tienen. Los sistemasmeteorológicos
y de inversión en bolsa son
ejemplos de utilización en este
sentido. El sistema PROSPECTOR es
de este tipo.
1.2. Arquitectura y funcionamiento
de un sistema experto.
La mayoría de los sistemas
expertos tienen unos componentesbásicos:
base de conocimientos,motorde inferencia,
base de datos e interfaz con el usuario.
Muchos tienen, además, un módulo de
explicación y un módulo de adquisición
del conocimiento.
1.2.1. Base de conocimiento
La base de conocimientos contiene
el conocimiento especializado extraído del
experto en el dominio. El método más
común para representar el conocimiento
es mediante reglas de producción. El
dominio de conocimiento representándose
divide, pues, en pequeñas fracciones de
conocimiento o reglas. Una característica
muy importante es que la base de
conocimientos es independiente del
mecanismo de inferencia que se utiliza
para resolver los problemas. De esta forma,
cuando los conocimientos almacenados se
han quedado obsoletos, o cuando se
dispone de nuevos conocimientos, es
relativamente fácil añadir reglas nuevas,
eliminarlasantiguas o corregir errores enlas
existentes.
1.2.2. Base de datos
La base de datos o base
de hechos es una parte de la memoria
del ordenador que se utiliza para
almacenar los datos recibidos inicialmente
para la resolución de un problema,
contiene conocimiento sobre el caso
concreto en que se trabaja. También se
registrarán en ella las conclusiones
intermedias y los datos generados en el
proceso de inferencia.
1.2.3. Motor de inferencia
El motor de inferencias es un
programa que controla el proceso de
razonamiento que seguirá el sistema
experto. Utilizando los datos que se le
suministran, recorre la base de
conocimientosparaalcanzarunasolución. La
estrategia de control puede ser de
encadenamiento progresivo o de
encadenamiento regresivo. En el primer
caso se comienza con los hechos
disponibles en la base de datos, y se buscan
reglas que satisfagan esos datos.
Normalmente,el sistemasigue lossiguientes
pasos:
1. Evaluar lascondiciones de todas las reglas
respectoa labase de datos, identificando el
conjunto de reglas que se pueden aplicar
2. Si no se puede aplicar ninguna regla, se
terminasinéxito;encaso contrario se elige
cualquiera de las reglas aplicables y se
ejecuta su parte acción (esto último genera
nuevos hechos que se añaden a la base de
datos)
3. Si se llega al objetivo, se ha resuelto
el problema; en caso contrario,se vuelve al
paso 1
1.2.4. Interfaz con el usuario.
El interfaz de usuario permite que
el usuario pueda describir el problema al
sistema experto. Interpreta sus preguntas,
los comandos y la información ofrecida. A la
inversa, formula la información generada
por el sistema incluyendo respuestas a las
preguntas, explicaciones y justificaciones.
1.2.5. Módulo de Explicación
La mayoría de los sistemas
expertos contienen un módulo de
explicación, diseñado para aclarar al
usuario la línea de razonamiento seguida en
el proceso de inferencia. Si el usuario
pregunta al sistema cómo ha alcanzado
una conclusión, éste le presentará la
secuencia completa de reglas usada
1.2.6. Módulo de adquisición
El módulo de adquisición del
conocimientopermite que se puedanañadir,
eliminar o modificar elementos de
conocimiento (en la mayoría de los casos
reglas) en el sistema experto.
1.3. Ventajas e inconvenientes de un
Sistema Experto.
1.3.1. Ventajas
a) Un sistema experto mejora la
productividadal resolverydecidirlos
problemas más rápidamente. Esto
permite ahorrar tiempo y dinero. A
veces sin esa rapidez lassoluciones
obtenidas serían inútiles.
b) Los valiosos conocimientos de un
especialista se guardan y se
difunden, de forma que, no se
pierden aunque desaparezca el
especialista
c) Con un sistema experto se
obtienen soluciones más fiables
gracias al tratamientoautomático de
los datos, y más contrastadas,
debido a que se suele tener
informatizado el conocimiento de
varios expertos.
1.3.2. Desventajas
a) El conocimiento humano es
complejo de extraer y, a veces, es
problemático representarlo. Si un
problemasobrepasa la competencia
de un sistema experto, sus
prestaciones se degradan de forma
notable. Además, las estrategias de
razonamiento de los motores de
inferencia suelen estar
programadas procedimentalmente
y se adaptan mal a las
circunstancias. Están limitados para
tratar problemas con información
incompleta.
b) Un experto humano no estudia
progresivamente unahipótesis, sino
que decide de inmediato cuando
se enfrenta a una situación
análoga a otra ocurrida en el
pasado. Los sistemas expertos no
utilizan este razonamiento por
analogía.
c) Los costes y duración del
desarrollo de un sistema experto
son bastante considerables
(aunque se suelen amortizar
rápidamente) y su campo de
aplicación actual es restringido y
específico.
1.4. Prolog
1.4.1. Introducción a Prolog
La programación lógica es un
paradigmade loslenguajesde programación
enel cual los programas se consideran como
una serie de aserciones lógicas. De esta
forma, el conocimiento se representa
mediante reglas, tratándose de sistemas
declarativos.
1.4.2. Características de Prolog
a) Basado en lógica y programación
declarativa.
b) No se especificacómodebe hacerse,
sino qué debe lograrse.
c) Una característica importante en
ProLog y que lo diferencia de otros
lenguajes de programación, es que
una variable sólo puede tener un
valormientrasse cumple el objetivo.
d) El programador se concentra más en
el conocimiento que en los
algoritmos.
-¿Qué es conocido? (hechos, reglas)
-¿Qué preguntar? (Cómo resolverlo)
2. DIAGNOSTICO DE ENFERMEDADES
RESPIRATORIAS CON PROLOG
2.1. Planteamiento y Diseño
Queremos realizar un sistema
experto que nos ayude a diagnosticar
diferente tipos de enfermedades
respiratorias y que nos dé una justificación
del diagnóstico mostrándonos los síntomas,
así como también en cualquier parte del
sistema podemos preguntar que hipótesis
esta siguiendo.
Para realizar este diseño hemos
partido en dividir al sistema experto en 2
partes:
 Un “shell” del sistema experto, que
se encarga de interactuar con el
usuario y manipular la Base de
Conocimientos del sistema.
 Una base de conocimientos, con
reglas del tipo: (situación1,
[condicion1, condicion2, ...,
condicionN]). Este sistema experto
como se dijo anteriormente puede
justificar su diagnóstico y explicar
por qué hace ciertas preguntas.
A continuaciónle mostramos una imagen de
como dividimos al sistema en 2
Figura 1
2.2. Implementación
Nuestrocódigofue implementado en prolog
y dividimos nuestro código en2 grandes
bloques.
2.2.1. Shell
Un “shell” del sistema experto, que
se encarga de interactuar con el usuario y
manipular la Base de Conocimientos del
sistema.
:- dynamic conocido/1.
consulta:-
haz_diagnostico(X),
escribe_diagnostico(X),
ofrece_explicacion_diagnostico(X),
clean_scratchpad.
consulta:-
write('No hay suficiente
conocimiento para elaborar un
diagnostico.'),
clean_scratchpad.
haz_diagnostico(Diagnosis):-
obten_hipotesis_y_sintomas(Diagnos
is, ListaDeSintomas),
prueba_presencia_de(Diagnosis,
ListaDeSintomas).
obten_hipotesis_y_sintomas(Diagnosis,
ListaDeSintomas):-
conocimiento(Diagnosis,ListaDeSinto
mas).
prueba_presencia_de(Diagnosis, []).
prueba_presencia_de(Diagnosis, [Head |
Tail]):-
prueba_verdad_de(Diagnosis,Head),
prueba_presencia_de(Diagnosis,
Tail).
prueba_verdad_de(Diagnosis, Sintoma):-
conocido(Sintoma).
prueba_verdad_de(Diagnosis, Sintoma):-
not(conocido(is_false(Sintoma))),
pregunta_sobre(Diagnosis,Sintoma,R
eply),Reply=si.
pregunta_sobre(Diagnosis,Sintoma,Reply):-
write('Es verdad que '),
write(Sintoma),write('? '),
read(Respuesta),
process(Diagnosis,Sintoma, Respuesta,Reply
).
process(Diagnosis,Sintoma,si,si):-
asserta(conocido(Sintoma)).
process(Diagnosis,Sintoma,no,no):-
asserta(conocido(is_false(Sintoma))).
process(Diagnosis,Sintoma,porque,Reply):-
nl,
write('Estoyinvestigandolahipotesis
siguiente: '),
write(Diagnosis), write( '.'),
nl,write('Para esto necesito saber si'),
write(Sintoma),write('.'), nl,
pregunta_sobre(Diagnosis, Sintoma, Reply ).
SISTEMA
EXPERTO
SHELL BASE DE
CONOCIMIENTO
process(Diagnosis,Sintoma,Respuesta,Reply):
-
Respuesta == no,
Respuesta == si,
Respuesta == porque,
nl,
write('Debes contestar si, no o
porque.'), nl,
pregunta_sobre(Diagnosis,Sintoma,
Reply) .
escribe_diagnostico(Diagnosis):-
write('El diagnostico es '),
write(Diagnosis), write( '.'), nl.
ofrece_explicacion_diagnostico(Diagnosis):-
pregunta_si_necesita_explicacion(Re
spuesta),
actua_consecuentemente(Diagnosis,
Respuesta).
pregunta_si_necesita_explicacion(Respuesta
):-
write('Quieres que justifique este
diagnostico? '),
read(RespuestaUsuario),
asegura_respuesta_si_o_no(Respues
taUsuario,Respuesta).
asegura_respuesta_si_o_no(si,si).
asegura_respuesta_si_o_no(no,no).
asegura_respuesta_si_o_no(_,Respuesta):-
write('Debes conte star si o no.'),
pregunta_si_necesita_explicacion(Re
spuesta).
actua_consecuentemente(Diagnosis,no).
actua_consecuentemente(Diagnosis,si):-
conocimiento(Diagnosis,ListaDeSinto
mas),
write('Se determinoeste diagnostico
porque se encontraron los siguentes
sintomas: '),
nl,
escribe_lista_de_sintomas(ListaDeSin
tomas).
escribe_lista_de_sintomas([]).
escribe_lista_de_sintomas([Head|Tail] ):-
write(Head),
nl,
escribe_lista_de_sintomas(Tail).
clean_scratchpad:-
retract(conocido(X)), fail.
clean_scratchpad.
conocido(_):-fail.
not(X):-
X,
!,
fail.
not(_ ).
2.2.2. Base de conocimiento
La base conocimiento es la que
contiene todaslasreglas y datos que
se usaran, usando la forma de
situación[condicion1,condición2,…]
conocimiento('influenza',
['el paciente tiene escurrimiento
nasal ',
'el paciente tiene dolor de
articulaciones',
'el paciente tiene dolor
muscular',
'el paciente tiene decaimiento',
'el paciente tiene dolor de
estomago',
'el paciente tiene diarrea']).
conocimiento('amigdalitis',
['el paciente tiene inflamacion en
las amigdalas',
'el paciente tiene manchas
blancas o amarillas en las amigdalas',
'el paciente tiene inflamacionenlos
glangios',
'el paciente tiene dolor de
garganta',
'el paciente tiene dificultad al
tragar']).
conocimiento('tos',
['el paciente tiene dolor de
cabeza ',
'el paciente tiene dolor en los
ojos',
'el paciente tiene dolor en el
cuerpo',
'el paciente tiene dolor de oido',
'el paciente tiene fiebre',
'el paciente tiene escalofrios']).
conocimiento('rinofaringitis',
['el paciente tiene dolor de
garganta ',
'el paciente tiene goteo nasal',
'el paciente tiene congestion
nasal',
'el paciente tiene estornudo',
'el paciente tiene talvez el ojo
rojo']).
conocimiento('asma',
['el paciente tiene dificultad al
respirar',
'el paciente tiene espasmos
bronquiales',
'el paciente tiene secreciones
mucosas',
'el paciente tiene respiracion
sibilante',
'el paciente tiene rigidez
toracica']).
conocimiento('pulmonia',
['el paciente tiene tos aguda',
'el paciente tiene tos con
mucosidad',
'el paciente tiene fiebre y
escalofrios',
'el paciente tiene debilidad',
'el paciente tiene fatiga',
'el paciente tiene dolor de
pecho']).
conocimiento('tuberculosis',
['el paciente tiene cansancio
intenso',
'el paciente tiene malestar
general',
'el paciente tiene sudoracion
abundante',
'el paciente tiene perdida de peso',
'el paciente tiene sangre en los
esputos',
'el paciente tiene tos seca']).
3. EJECUCION
Para poderutilizarel sistemaexperto
con estabase de conocimientos,dentrode
Prologdebemosteclear:
consult('shell.pl').
consult('BaseConocimientos1.pl').
Para poder determinar una enfermedad, se
teclea consulta.<enter> y se contestan las
preguntas que va haciendo el sistema. En
cualquier momento se puede contestar con
un porque en lugar de sí o no. Entonces el
sistema explicará cuál es el diagnóstico que
trata de probar. Al proporcionar un
diagnóstico, el sistema preguntará si se
quiere una justificación para su diagnóstico.
Si se contesta afirmativamente el sistema
mostrará los hechos que lo llevaron al
diagnóstico presentado.
En este ejemplo vemos que he dado si a los
siguientes síntomas
4. REFERENCIAS
[1]
http://es.wikipedia.org/wiki/Sistema_exper
to
[2] http://es.wikipedia.org/wiki/Prolog
[3]
www.dccia.ua.es/logica/prolog/docs/ProgG
UI.pdf
[4] es.scribd.com/doc/.../002-Manual-SWI-
Prolog-Interfaces-Graficas
[5] Apuntes de la Asignatura

Más contenido relacionado

La actualidad más candente

Aspectos más importantes del trabajo de una analista
Aspectos más importantes del trabajo de una analistaAspectos más importantes del trabajo de una analista
Aspectos más importantes del trabajo de una analista
myle22
 
Diseño de salidas - Joseph Vizueta
Diseño de salidas - Joseph VizuetaDiseño de salidas - Joseph Vizueta
Diseño de salidas - Joseph Vizueta
JosephVizueta
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
Alvaro Enrique Ruano
 
Opc unidad iv- tema 6
Opc unidad iv- tema 6Opc unidad iv- tema 6
Opc unidad iv- tema 6
UDO Monagas
 
Auditoria en sistemas
Auditoria en sistemasAuditoria en sistemas
Auditoria en sistemas
VeronicaTriana1
 
Sistemas expertos
Sistemas expertosSistemas expertos
Sistemas expertos
Gateando con el Raton
 
Tema 1 TeoríA De Sistemas. Sistemas Inteligentes
Tema 1 TeoríA De Sistemas. Sistemas InteligentesTema 1 TeoríA De Sistemas. Sistemas Inteligentes
Tema 1 TeoríA De Sistemas. Sistemas Inteligentes
ESCOM
 
Aspectos más importantes de un analista
Aspectos más importantes  de un analistaAspectos más importantes  de un analista
Aspectos más importantes de un analista
juan198
 
Auditoria de sistemas presen. 1
Auditoria de sistemas presen. 1Auditoria de sistemas presen. 1
Auditoria de sistemas presen. 1
isakatime
 
Ciclo de vida de desarrollo de sistemas tarea correo
Ciclo de vida de desarrollo de sistemas tarea correoCiclo de vida de desarrollo de sistemas tarea correo
Ciclo de vida de desarrollo de sistemas tarea correo
Gerard DV
 
Opc tema 6-unidad iv
Opc tema 6-unidad ivOpc tema 6-unidad iv
Opc tema 6-unidad iv
UDO Monagas
 

La actualidad más candente (11)

Aspectos más importantes del trabajo de una analista
Aspectos más importantes del trabajo de una analistaAspectos más importantes del trabajo de una analista
Aspectos más importantes del trabajo de una analista
 
Diseño de salidas - Joseph Vizueta
Diseño de salidas - Joseph VizuetaDiseño de salidas - Joseph Vizueta
Diseño de salidas - Joseph Vizueta
 
Solución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de softwareSolución de problemas y ciclo de vida del desarrollo de software
Solución de problemas y ciclo de vida del desarrollo de software
 
Opc unidad iv- tema 6
Opc unidad iv- tema 6Opc unidad iv- tema 6
Opc unidad iv- tema 6
 
Auditoria en sistemas
Auditoria en sistemasAuditoria en sistemas
Auditoria en sistemas
 
Sistemas expertos
Sistemas expertosSistemas expertos
Sistemas expertos
 
Tema 1 TeoríA De Sistemas. Sistemas Inteligentes
Tema 1 TeoríA De Sistemas. Sistemas InteligentesTema 1 TeoríA De Sistemas. Sistemas Inteligentes
Tema 1 TeoríA De Sistemas. Sistemas Inteligentes
 
Aspectos más importantes de un analista
Aspectos más importantes  de un analistaAspectos más importantes  de un analista
Aspectos más importantes de un analista
 
Auditoria de sistemas presen. 1
Auditoria de sistemas presen. 1Auditoria de sistemas presen. 1
Auditoria de sistemas presen. 1
 
Ciclo de vida de desarrollo de sistemas tarea correo
Ciclo de vida de desarrollo de sistemas tarea correoCiclo de vida de desarrollo de sistemas tarea correo
Ciclo de vida de desarrollo de sistemas tarea correo
 
Opc tema 6-unidad iv
Opc tema 6-unidad ivOpc tema 6-unidad iv
Opc tema 6-unidad iv
 

Similar a Enfermedades respiratorias

Sistema de Ventas de Muebles en Prolog
Sistema de Ventas de Muebles en PrologSistema de Ventas de Muebles en Prolog
Sistema de Ventas de Muebles en Prolog
culquinet
 
Lady informe ia
Lady informe iaLady informe ia
Lady informe ia
ladyespino
 
Lady informe ia
Lady informe iaLady informe ia
Lady informe ia
ladyespino
 
Sistema_experto de_licuados_nutritivos
Sistema_experto de_licuados_nutritivosSistema_experto de_licuados_nutritivos
Sistema_experto de_licuados_nutritivos
Nils Gálvez Alcalde
 
U4-T6: DIAGNOSTICO Y DECISIÓN 2-EAI
U4-T6: DIAGNOSTICO Y DECISIÓN 2-EAIU4-T6: DIAGNOSTICO Y DECISIÓN 2-EAI
U4-T6: DIAGNOSTICO Y DECISIÓN 2-EAI
PLC AREA DE GRADO
 
Informe inteligencia artificial
Informe inteligencia artificialInforme inteligencia artificial
Informe inteligencia artificial
Roan Malca Leon
 
Trabajo de sistemas expertos
Trabajo de sistemas expertosTrabajo de sistemas expertos
Trabajo de sistemas expertos
FabYola ArAnibar Valdivia
 
David, Mario Ignacio
David, Mario IgnacioDavid, Mario Ignacio
David, Mario Ignacio
mario_david03
 
Sistema experto
Sistema expertoSistema experto
Sistema experto
jerialcenter
 
Sistemas experto
Sistemas expertoSistemas experto
Sistemas experto
Jimmy Añ@zco
 
TAREA 2.pdf
TAREA 2.pdfTAREA 2.pdf
TAREA 2.pdf
ECU911ARENILLAS
 
Sistema experto para determinar la personalidad de un individuo
Sistema experto para determinar la personalidad de un individuoSistema experto para determinar la personalidad de un individuo
Sistema experto para determinar la personalidad de un individuo
Bndy Quilcate
 
INTRODUCCION A LOS SISTEMAS EXPERTOS
INTRODUCCION A LOS SISTEMAS EXPERTOSINTRODUCCION A LOS SISTEMAS EXPERTOS
INTRODUCCION A LOS SISTEMAS EXPERTOS
Richard Rios
 
Romina Altuna Que Es
Romina Altuna Que EsRomina Altuna Que Es
Romina Altuna Que Es
romi825
 
Se
SeSe
Luis y german robotica
Luis y german roboticaLuis y german robotica
Luis y german robotica
Lauraperla18RuizValian
 
Sistemas expertos jm
Sistemas expertos  jmSistemas expertos  jm
Sistemas expertos jm
juanmiguel431
 
Sistema experto para la deteccion y control de plagas en sembrios de tara
Sistema experto para la deteccion y control de plagas en sembrios de taraSistema experto para la deteccion y control de plagas en sembrios de tara
Sistema experto para la deteccion y control de plagas en sembrios de tara
Rolando Palermo Rodríguez Cruz
 
Tópicos 20-10-15
Tópicos 20-10-15Tópicos 20-10-15
Tópicos 20-10-15
anxelito
 
Sistemasexpertos
SistemasexpertosSistemasexpertos
Sistemasexpertos
Edwards Ardila
 

Similar a Enfermedades respiratorias (20)

Sistema de Ventas de Muebles en Prolog
Sistema de Ventas de Muebles en PrologSistema de Ventas de Muebles en Prolog
Sistema de Ventas de Muebles en Prolog
 
Lady informe ia
Lady informe iaLady informe ia
Lady informe ia
 
Lady informe ia
Lady informe iaLady informe ia
Lady informe ia
 
Sistema_experto de_licuados_nutritivos
Sistema_experto de_licuados_nutritivosSistema_experto de_licuados_nutritivos
Sistema_experto de_licuados_nutritivos
 
U4-T6: DIAGNOSTICO Y DECISIÓN 2-EAI
U4-T6: DIAGNOSTICO Y DECISIÓN 2-EAIU4-T6: DIAGNOSTICO Y DECISIÓN 2-EAI
U4-T6: DIAGNOSTICO Y DECISIÓN 2-EAI
 
Informe inteligencia artificial
Informe inteligencia artificialInforme inteligencia artificial
Informe inteligencia artificial
 
Trabajo de sistemas expertos
Trabajo de sistemas expertosTrabajo de sistemas expertos
Trabajo de sistemas expertos
 
David, Mario Ignacio
David, Mario IgnacioDavid, Mario Ignacio
David, Mario Ignacio
 
Sistema experto
Sistema expertoSistema experto
Sistema experto
 
Sistemas experto
Sistemas expertoSistemas experto
Sistemas experto
 
TAREA 2.pdf
TAREA 2.pdfTAREA 2.pdf
TAREA 2.pdf
 
Sistema experto para determinar la personalidad de un individuo
Sistema experto para determinar la personalidad de un individuoSistema experto para determinar la personalidad de un individuo
Sistema experto para determinar la personalidad de un individuo
 
INTRODUCCION A LOS SISTEMAS EXPERTOS
INTRODUCCION A LOS SISTEMAS EXPERTOSINTRODUCCION A LOS SISTEMAS EXPERTOS
INTRODUCCION A LOS SISTEMAS EXPERTOS
 
Romina Altuna Que Es
Romina Altuna Que EsRomina Altuna Que Es
Romina Altuna Que Es
 
Se
SeSe
Se
 
Luis y german robotica
Luis y german roboticaLuis y german robotica
Luis y german robotica
 
Sistemas expertos jm
Sistemas expertos  jmSistemas expertos  jm
Sistemas expertos jm
 
Sistema experto para la deteccion y control de plagas en sembrios de tara
Sistema experto para la deteccion y control de plagas en sembrios de taraSistema experto para la deteccion y control de plagas en sembrios de tara
Sistema experto para la deteccion y control de plagas en sembrios de tara
 
Tópicos 20-10-15
Tópicos 20-10-15Tópicos 20-10-15
Tópicos 20-10-15
 
Sistemasexpertos
SistemasexpertosSistemasexpertos
Sistemasexpertos
 

Enfermedades respiratorias

  • 1. Sistema Experto: Detector de Enfermedades Respiratorias William Castañeda Vilchez Universidad Nacional de Trujillo Sede Valle del Jequetepeque Escuela de Informática Profesor : Arturo Díaz Pulido RESUMEN Vamos a implementar un sistema expertocuyopropósitoserá ayudarnos en el diagnóstico de los diferentes tipos de enfermedades respiratorias, primero haremos una breve descripción de los sistemas expertos y luego veremos su desarrollo. Palabras Claves Prolog, sistema experto, enfermedades respiratorias , etc. 1. INTRODUCCION Los sistemas expertos se pueden considerar como el primer producto verdaderamente operacional de la inteligencia artificial. Son programas de ordenador diseñados para actuar como unespecialistahumanoen un dominio particular o área de conocimiento. En este sentido, pueden considerarse como intermediarios entre el experto humano, que transmite su conocimientoal sistema,y del usuarioque lo utiliza para resolver un problema con la eficacia del especialista. El sistema experto utilizará para ello el conocimiento que tenga almacenado y algunos métodos de inferencia. Para que un sistema experto sea herramienta efectiva, los usuarios deben interactuar de una forma fácil, reuniendo dos capacidades para poder cumplirlo Explicar sus razonamientos o base del conocimiento: los sistemas expertos se deben realizar siguiendo ciertas reglas o pasos comprensibles de manera que se pueda generarla explicaciónparacada unade estas reglas, que a la vez se basan en hechos. Adquisición de nuevos conocimientos o integrador del sistema: son mecanismos de razonamiento que sirven para modificar los conocimientos anteriores. Sobre labase de lo anterior se puede decir que los sistemas expertos son el producto de investigaciones en el campo de la inteligencia artificial ya que ésta no intenta sustituir a los expertos humanos, sino que se desea ayudarlos a realizar con más rapidez y eficacia todas las tareas que realiza. 1.1. Usos de un Sistema Experto a) Un sistema experto es muy eficaz cuando tiene que analizar una gran cantidad de información, interpretándola y proporcionando una recomendación a partir de la misma. Un ejemplo es el análisis
  • 2. financiero, donde se estudian las oportunidades de inversión, dependiendo de los datos financieros de un cliente y de sus propósitos. b) Para detectar y reparar fallos en equipos electrónicos, se utilizan los sistemas expertos de diagnóstico y depuración, que formulan listas de preguntas con las que obtienen los datos necesarios para llegar a una conclusión. Entonces recomiendanlas accionesadecuadas para corregir los problemas descubiertos. Este tipo de sistemas se utilizan también en medicina (ej. MYCIN y PUFF), y para localizar problemas en sistemas informáticos grandes y complejos. c) Los sistemas expertos son buenos para predecir resultados futuros a partir del conocimiento que tienen. Los sistemasmeteorológicos y de inversión en bolsa son ejemplos de utilización en este sentido. El sistema PROSPECTOR es de este tipo. 1.2. Arquitectura y funcionamiento de un sistema experto. La mayoría de los sistemas expertos tienen unos componentesbásicos: base de conocimientos,motorde inferencia, base de datos e interfaz con el usuario. Muchos tienen, además, un módulo de explicación y un módulo de adquisición del conocimiento. 1.2.1. Base de conocimiento La base de conocimientos contiene el conocimiento especializado extraído del experto en el dominio. El método más común para representar el conocimiento es mediante reglas de producción. El dominio de conocimiento representándose divide, pues, en pequeñas fracciones de conocimiento o reglas. Una característica muy importante es que la base de conocimientos es independiente del mecanismo de inferencia que se utiliza para resolver los problemas. De esta forma, cuando los conocimientos almacenados se han quedado obsoletos, o cuando se dispone de nuevos conocimientos, es relativamente fácil añadir reglas nuevas, eliminarlasantiguas o corregir errores enlas existentes. 1.2.2. Base de datos La base de datos o base de hechos es una parte de la memoria del ordenador que se utiliza para almacenar los datos recibidos inicialmente para la resolución de un problema, contiene conocimiento sobre el caso concreto en que se trabaja. También se registrarán en ella las conclusiones intermedias y los datos generados en el proceso de inferencia. 1.2.3. Motor de inferencia El motor de inferencias es un programa que controla el proceso de razonamiento que seguirá el sistema experto. Utilizando los datos que se le suministran, recorre la base de conocimientosparaalcanzarunasolución. La estrategia de control puede ser de encadenamiento progresivo o de encadenamiento regresivo. En el primer
  • 3. caso se comienza con los hechos disponibles en la base de datos, y se buscan reglas que satisfagan esos datos. Normalmente,el sistemasigue lossiguientes pasos: 1. Evaluar lascondiciones de todas las reglas respectoa labase de datos, identificando el conjunto de reglas que se pueden aplicar 2. Si no se puede aplicar ninguna regla, se terminasinéxito;encaso contrario se elige cualquiera de las reglas aplicables y se ejecuta su parte acción (esto último genera nuevos hechos que se añaden a la base de datos) 3. Si se llega al objetivo, se ha resuelto el problema; en caso contrario,se vuelve al paso 1 1.2.4. Interfaz con el usuario. El interfaz de usuario permite que el usuario pueda describir el problema al sistema experto. Interpreta sus preguntas, los comandos y la información ofrecida. A la inversa, formula la información generada por el sistema incluyendo respuestas a las preguntas, explicaciones y justificaciones. 1.2.5. Módulo de Explicación La mayoría de los sistemas expertos contienen un módulo de explicación, diseñado para aclarar al usuario la línea de razonamiento seguida en el proceso de inferencia. Si el usuario pregunta al sistema cómo ha alcanzado una conclusión, éste le presentará la secuencia completa de reglas usada 1.2.6. Módulo de adquisición El módulo de adquisición del conocimientopermite que se puedanañadir, eliminar o modificar elementos de conocimiento (en la mayoría de los casos reglas) en el sistema experto. 1.3. Ventajas e inconvenientes de un Sistema Experto. 1.3.1. Ventajas a) Un sistema experto mejora la productividadal resolverydecidirlos problemas más rápidamente. Esto permite ahorrar tiempo y dinero. A veces sin esa rapidez lassoluciones obtenidas serían inútiles. b) Los valiosos conocimientos de un especialista se guardan y se difunden, de forma que, no se pierden aunque desaparezca el especialista c) Con un sistema experto se obtienen soluciones más fiables gracias al tratamientoautomático de los datos, y más contrastadas, debido a que se suele tener informatizado el conocimiento de varios expertos. 1.3.2. Desventajas a) El conocimiento humano es complejo de extraer y, a veces, es problemático representarlo. Si un problemasobrepasa la competencia de un sistema experto, sus prestaciones se degradan de forma
  • 4. notable. Además, las estrategias de razonamiento de los motores de inferencia suelen estar programadas procedimentalmente y se adaptan mal a las circunstancias. Están limitados para tratar problemas con información incompleta. b) Un experto humano no estudia progresivamente unahipótesis, sino que decide de inmediato cuando se enfrenta a una situación análoga a otra ocurrida en el pasado. Los sistemas expertos no utilizan este razonamiento por analogía. c) Los costes y duración del desarrollo de un sistema experto son bastante considerables (aunque se suelen amortizar rápidamente) y su campo de aplicación actual es restringido y específico. 1.4. Prolog 1.4.1. Introducción a Prolog La programación lógica es un paradigmade loslenguajesde programación enel cual los programas se consideran como una serie de aserciones lógicas. De esta forma, el conocimiento se representa mediante reglas, tratándose de sistemas declarativos. 1.4.2. Características de Prolog a) Basado en lógica y programación declarativa. b) No se especificacómodebe hacerse, sino qué debe lograrse. c) Una característica importante en ProLog y que lo diferencia de otros lenguajes de programación, es que una variable sólo puede tener un valormientrasse cumple el objetivo. d) El programador se concentra más en el conocimiento que en los algoritmos. -¿Qué es conocido? (hechos, reglas) -¿Qué preguntar? (Cómo resolverlo) 2. DIAGNOSTICO DE ENFERMEDADES RESPIRATORIAS CON PROLOG 2.1. Planteamiento y Diseño Queremos realizar un sistema experto que nos ayude a diagnosticar diferente tipos de enfermedades respiratorias y que nos dé una justificación del diagnóstico mostrándonos los síntomas, así como también en cualquier parte del sistema podemos preguntar que hipótesis esta siguiendo. Para realizar este diseño hemos partido en dividir al sistema experto en 2 partes:  Un “shell” del sistema experto, que se encarga de interactuar con el usuario y manipular la Base de Conocimientos del sistema.  Una base de conocimientos, con reglas del tipo: (situación1, [condicion1, condicion2, ..., condicionN]). Este sistema experto como se dijo anteriormente puede justificar su diagnóstico y explicar por qué hace ciertas preguntas.
  • 5. A continuaciónle mostramos una imagen de como dividimos al sistema en 2 Figura 1 2.2. Implementación Nuestrocódigofue implementado en prolog y dividimos nuestro código en2 grandes bloques. 2.2.1. Shell Un “shell” del sistema experto, que se encarga de interactuar con el usuario y manipular la Base de Conocimientos del sistema. :- dynamic conocido/1. consulta:- haz_diagnostico(X), escribe_diagnostico(X), ofrece_explicacion_diagnostico(X), clean_scratchpad. consulta:- write('No hay suficiente conocimiento para elaborar un diagnostico.'), clean_scratchpad. haz_diagnostico(Diagnosis):- obten_hipotesis_y_sintomas(Diagnos is, ListaDeSintomas), prueba_presencia_de(Diagnosis, ListaDeSintomas). obten_hipotesis_y_sintomas(Diagnosis, ListaDeSintomas):- conocimiento(Diagnosis,ListaDeSinto mas). prueba_presencia_de(Diagnosis, []). prueba_presencia_de(Diagnosis, [Head | Tail]):- prueba_verdad_de(Diagnosis,Head), prueba_presencia_de(Diagnosis, Tail). prueba_verdad_de(Diagnosis, Sintoma):- conocido(Sintoma). prueba_verdad_de(Diagnosis, Sintoma):- not(conocido(is_false(Sintoma))), pregunta_sobre(Diagnosis,Sintoma,R eply),Reply=si. pregunta_sobre(Diagnosis,Sintoma,Reply):- write('Es verdad que '), write(Sintoma),write('? '), read(Respuesta), process(Diagnosis,Sintoma, Respuesta,Reply ). process(Diagnosis,Sintoma,si,si):- asserta(conocido(Sintoma)). process(Diagnosis,Sintoma,no,no):- asserta(conocido(is_false(Sintoma))). process(Diagnosis,Sintoma,porque,Reply):- nl, write('Estoyinvestigandolahipotesis siguiente: '), write(Diagnosis), write( '.'), nl,write('Para esto necesito saber si'), write(Sintoma),write('.'), nl, pregunta_sobre(Diagnosis, Sintoma, Reply ). SISTEMA EXPERTO SHELL BASE DE CONOCIMIENTO
  • 6. process(Diagnosis,Sintoma,Respuesta,Reply): - Respuesta == no, Respuesta == si, Respuesta == porque, nl, write('Debes contestar si, no o porque.'), nl, pregunta_sobre(Diagnosis,Sintoma, Reply) . escribe_diagnostico(Diagnosis):- write('El diagnostico es '), write(Diagnosis), write( '.'), nl. ofrece_explicacion_diagnostico(Diagnosis):- pregunta_si_necesita_explicacion(Re spuesta), actua_consecuentemente(Diagnosis, Respuesta). pregunta_si_necesita_explicacion(Respuesta ):- write('Quieres que justifique este diagnostico? '), read(RespuestaUsuario), asegura_respuesta_si_o_no(Respues taUsuario,Respuesta). asegura_respuesta_si_o_no(si,si). asegura_respuesta_si_o_no(no,no). asegura_respuesta_si_o_no(_,Respuesta):- write('Debes conte star si o no.'), pregunta_si_necesita_explicacion(Re spuesta). actua_consecuentemente(Diagnosis,no). actua_consecuentemente(Diagnosis,si):- conocimiento(Diagnosis,ListaDeSinto mas), write('Se determinoeste diagnostico porque se encontraron los siguentes sintomas: '), nl, escribe_lista_de_sintomas(ListaDeSin tomas). escribe_lista_de_sintomas([]). escribe_lista_de_sintomas([Head|Tail] ):- write(Head), nl, escribe_lista_de_sintomas(Tail). clean_scratchpad:- retract(conocido(X)), fail. clean_scratchpad. conocido(_):-fail. not(X):- X, !, fail. not(_ ). 2.2.2. Base de conocimiento La base conocimiento es la que contiene todaslasreglas y datos que se usaran, usando la forma de situación[condicion1,condición2,…] conocimiento('influenza', ['el paciente tiene escurrimiento nasal ', 'el paciente tiene dolor de articulaciones', 'el paciente tiene dolor muscular', 'el paciente tiene decaimiento', 'el paciente tiene dolor de estomago', 'el paciente tiene diarrea']). conocimiento('amigdalitis', ['el paciente tiene inflamacion en las amigdalas', 'el paciente tiene manchas
  • 7. blancas o amarillas en las amigdalas', 'el paciente tiene inflamacionenlos glangios', 'el paciente tiene dolor de garganta', 'el paciente tiene dificultad al tragar']). conocimiento('tos', ['el paciente tiene dolor de cabeza ', 'el paciente tiene dolor en los ojos', 'el paciente tiene dolor en el cuerpo', 'el paciente tiene dolor de oido', 'el paciente tiene fiebre', 'el paciente tiene escalofrios']). conocimiento('rinofaringitis', ['el paciente tiene dolor de garganta ', 'el paciente tiene goteo nasal', 'el paciente tiene congestion nasal', 'el paciente tiene estornudo', 'el paciente tiene talvez el ojo rojo']). conocimiento('asma', ['el paciente tiene dificultad al respirar', 'el paciente tiene espasmos bronquiales', 'el paciente tiene secreciones mucosas', 'el paciente tiene respiracion sibilante', 'el paciente tiene rigidez toracica']). conocimiento('pulmonia', ['el paciente tiene tos aguda', 'el paciente tiene tos con mucosidad', 'el paciente tiene fiebre y escalofrios', 'el paciente tiene debilidad', 'el paciente tiene fatiga', 'el paciente tiene dolor de pecho']). conocimiento('tuberculosis', ['el paciente tiene cansancio intenso', 'el paciente tiene malestar general', 'el paciente tiene sudoracion abundante', 'el paciente tiene perdida de peso', 'el paciente tiene sangre en los esputos', 'el paciente tiene tos seca']). 3. EJECUCION Para poderutilizarel sistemaexperto con estabase de conocimientos,dentrode Prologdebemosteclear: consult('shell.pl'). consult('BaseConocimientos1.pl'). Para poder determinar una enfermedad, se teclea consulta.<enter> y se contestan las preguntas que va haciendo el sistema. En cualquier momento se puede contestar con un porque en lugar de sí o no. Entonces el sistema explicará cuál es el diagnóstico que trata de probar. Al proporcionar un diagnóstico, el sistema preguntará si se quiere una justificación para su diagnóstico. Si se contesta afirmativamente el sistema mostrará los hechos que lo llevaron al diagnóstico presentado. En este ejemplo vemos que he dado si a los siguientes síntomas