Upload
oscar-roberto
View
42
Download
2
Embed Size (px)
Citation preview
Universidad Nacional
De Trujillo
Facultad de Ciencias Físicas y Matemáticas
Escuela Profesional de Informática
CURSO: Programación Lógica
PROFESOR: Ing. Arturo Díaz Pulido
CICLO: VII
Desarrollo de un Sistema Experto
Integrantes:
Poémape Vargas Oscar Roberto
Vásquez Alvarado Mario Fernando
Julio de 2014.
Contenido
1. Título .................................................................................................................................. 3
2. Autores ............................................................................................................................... 3
3. Docente Asesor .................................................................................................................. 3
4. Resumen ............................................................................................................................ 3
5. Palabras Clave .................................................................................................................... 3
6. Ingeniería del Proyecto...................................................................................................... 4
6.1. Introducción ................................................................................................................ 4
6.2. Usos de un Sistema Experto .......................................................................................... 4
6.3. Arquitectura y Funcionamiento de un SE ....................................................................... 6
6.4. Ventajas e Inconvenientes de un SE ............................................................................... 7
7. Sistema experto “DAnimo” ................................................................................................. 9
7.1. Planteamiento y Diseño ................................................................................................ 9
7.1.1. Adquisición del conocimiento ................................................................................. 9
7.1.2. Diseño de la base de conocimientos .......................................................................13
7.1.3. Diseño de la interfaz de usuario .............................................................................19
8. Referencias Bibliográficas ................................................................................................21
DISEÑO E IMPLEMENTACIÓN DE UN SISTEMA EXPERTO
1. Título
“Sistema experto para el diagnóstico de trastornos del estado de ánimo para un
consultorio psicológico”.
2. Autores
● Poémape Vargas Oscar Roberto
● Vásquez Alvarado Mario Fernando
3. Docente Asesor
Ing. Arturo Díaz Pulido.
4. Resumen
El presente trabajo consiste en diseñar e implementar un sistema experto en
Prolog, que permita al usuario de un consultorio psicológico determinar, según síntomas
presentados por el paciente, la enfermedad psicológica que este presenta, para lo cual el
sistema obtendrá la información según la ingrese el usuario para comparar y asociar los
datos con su base de conocimientos y dar como respuesta un diagnóstico.
Se inicia con una breve investigación acerca del tema y sobre aspectos
importantes de un sistema experto, principalmente su arquitectura, para luego pasar al
desarrollo que consiste en diseño, implementación y ejecución.
5. Palabras Clave
Sistema, experto, conocimiento, grafo, trastorno, estado de ánimo.
6. Ingeniería del Proyecto
6.1. Introducción
En la actualidad los trastornos del estado de ánimo afecta a una gran
porcentaje de personas, alterando su normal desenvolvimiento en la vida
diaria. Nuevos aspectos relacionados a los trastornos del estado del ánimo se
han manifestado de forma reciente en países desarrollados y emergentes,
como el nuestro. Actualmente, la depresión (uno de los trastornos del ánimo
más comunes) no sólo ataca a adultos, sino también a niños y adolescentes.
Contar con un buen diagnóstico es una de las mejores formas para
detener y combatir el avance de éstos tipo de trastornos. Uno de los primeros
problemas es la resistencia que pone el paciente para hablar del tema; muchas
veces los especialistas son capaces de ver los primeros indicios del trastorno
por alguna dolencia física.
Por todo ello se plantea desarrollar un software de ayuda para el experto
psicólogo en el dominio del conocimiento que permita hacer un diagnóstico
válido con el que el experto puede prevenir estados más difíciles de manejar.
6.2. Usos de un Sistema Experto
La aplicación de los sistemas expertos es muy amplia. Se puede aplicar en
Medicina, Economía, Psicología (como en el caso del presente trabajo), Finanzas,
Derecho y prácticamente todas las ramas del conocimiento y con ayuda de este,
las personas con poca experiencia pueden resolver problemas que requieren un
"conocimiento formal especializado", así como también pueden obtener
conclusiones y resolver problemas de forma más rápida que los expertos
humanos.
Los Sistemas Expertos razonan pero en base a un conocimiento adquirido y
no tienen sitio para la subjetividad. Se ha comprobado que tienen al menos, la
misma competencia que un especialista humano.
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.
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
recomiendan las acciones adecuadas 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.
Los sistemas expertos son buenos para predecir resultados futuros a partir
del conocimiento que tienen. Los sistemas meteorológicos y de inversión en bolsa
son ejemplos de utilización en este sentido. El sistema PROSPECTOR es de este
tipo.
La planificación es la secuencia de acciones necesaria para lograr una meta.
Conseguir una buena planificación a largo plazo es muy difícil. Por ello, se usan
sistemas expertos para gestionar proyectos de desarrollo, planes de producción
de fábricas, estrategia militar y configuración de complejos sistemas informáticos,
entre otros.
Cuando se necesita controlar un proceso tomando decisiones como
respuesta a su estado y no existe una solución algorítmica adecuada, es necesario
usar un sistema experto. Este campo comprende el supervisar fábricas
automatizadas, factorías químicas o centrales nucleares. Estos sistemas son
extraordinariamente críticos porque normalmente tienen que trabajar a tiempo
real.
El diseño requiere una enorme cantidad de conocimientos debido a que hay
que tener en cuenta muchas especificaciones y restricciones. En este caso, el
sistema experto ayuda al diseñador a completar el diseño de forma competente y
dentro de los límites de costes y de tiempo. Se diseñan circuitos electrónicos,
circuitos integrados, tarjetas de circuito impreso, estructuras arquitectónicas,
coches, piezas mecánicas, etc.
Por último, un sistema experto puede evaluar el nivel de conocimientos y
comprensión de un estudiante, y ajustar el proceso de aprendizaje de acuerdo con
sus necesidades.
En conclusión, el uso de Sistemas Expertos es especialmente recomendado
en las siguientes situaciones:
● Cuando los expertos humanos en una determinada materia son
escasos.
● En situaciones complejas, donde la subjetividad humana puede
llevar a conclusiones erróneas.
● Cuando es muy elevado el volumen de datos que ha de considerarse
para obtener una conclusión.
6.3. Arquitectura y Funcionamiento de un SE
Un sistema experto consta de cinco componentes los cuales están
relacionados como lo muestra la siguiente figura y que se explicarán a
continuación:
Figura 1. Arquitectura de un Sistema Experto
6.3.1. Base de Conocimientos
Es la representación del conocimiento del dominio para la
solución de problemas específicos y contiene conocimiento extraído del
diálogo con el experto. Normalmente dicho conocimiento se estructura
en forma modular o declarativa.
6.3.2. Base de Datos
Llamada también memoria de trabajo. Es la que contiene los
hechos sobre un problema que se ha descubierto durante el análisis, el
lugar donde se almacenan los datos de entrada y conclusiones
intermedias que se van generando durante el proceso de razonamiento.
6.3.3. Motor de Inferencias
Es el que modela el proceso de razonamiento humano, es decir, es
el proceso que efectúa el razonamiento a partir de los datos y utilizando
el conocimiento de la base de conocimientos. Es ``genérico'', osea que se
puede aplicar a diferentes dominios sólo cambiando la Base de
conocimientos.
6.3.4. Interfaz con el Usuario
Es la Entrada/Salida al usuario del sistema. La interacción se
realiza usando lenguaje natural.
6.3.5. Módulo de Explicación
Explica el razonamiento utilizado por el sistema para llegar a la
conclusión. Incluye, normalmente, mecanismos de pregunta (por qué) y
de explicación (cómo).
6.3.6. Módulo de Adquisición
Es la interfaz para la adquisición del conocimiento del dominio,
Permite al experto la construcción de la base de conocimiento de una
forma sencilla, así como facilitar depuramiento interactivo
(actualización de la base de conocimientos) cuando sea necesario y así
automatizar la adquisición (aprendizaje).
6.4. Ventajas e Inconvenientes de un SE
6.4.1 Ventajas
➢ Pueden duplicarse ilimitadamente, y tener tantos de ellos como se
quiera.
➢ Pueden trabajar en entornos hostiles y peligrosos
➢ Están disponibles ininterrumpidamente las 24 horas del dia y los 7
dias de la semana, ofreciendo siempre su máximo desempeño.
➢ Siempre se ajustan a las normas establecidas y son consistentes en
su desempeño además no desarrollan apreciaciones subjetivas,
tendenciosas, irracionales o emocionales. No padece de olvido, fatiga.
dolor o comete errores de cálculo.
➢ No requieren un sueldo, promociones, seguros médicos,
incapacidades.
➢ Siempre están dispuestos a dar explicaciones, asistir o enseñar a la
gente, así como a aprender
➢ Pueden tener una vida de servicio ilimitada.
6.4.2 Inconvenientes
➢ La aproximación de cada experto a la situación evaluada puede ser
diferente.
➢ El conocimiento es difícil de extraer de los expertos humanos.
➢ Tienen una noción muy limitada acerca del contexto del problema y
no pueden percibir todas las cosas que un experto humano puede
apreciar de una situación.
➢ Pueden existir decisiones que solo son de competencia para un ser
humano y no una máquina.
➢ No saben cómo subsanar sus limitaciones y no son capaces de
trabajar en equipos o investigar algo nuevo.
➢ Son muy costosos de desarrollar y mantener.
6.4.3 Lenguaje de Programación Usado
El lenguaje de programación usado para la implementación del
sistema experto es Prolog.
6.4.4 Introducción a Prolog
Prolog es un lenguaje de programación lógica cuya primera versión
fue desarrollada a principios de la década de 1970 por Colmerauer en la
universidad de Marsella. Contrariamente a otros lenguajes de
programación basados en estructuras de control y definición de
funciones para calcular resultados, Prolog está orientado a la
especificación de relaciones para responder consultas. En ese sentido
Prolog es similar a un sistema de base de datos, aunque en el contexto de
la inteligencia artificial se prefiere hablar de bases de conocimiento,
enfatizando la complejidad estructural de los datos y de las deducciones
que se pueden obtener de ellos.
6.4.5 Características de Prolog
Los programas en Prolog se componen de cláusulas de Horn que
constituyen reglas del tipo "modus ponendo ponens", es decir, "Si es
verdad el antecedente, entonces es verdad el consecuente". No obstante,
la forma de escribir las cláusulas de Horn es al contrario de lo habitual.
Primero se escribe el consecuente y luego el antecedente. El antecedente
puede ser una conjunción de condiciones que se denomina secuencia de
objetivos. Cada objetivo se separa con una coma y puede considerarse
similar a una instrucción o llamada a procedimiento de los lenguajes
imperativos. En Prolog no existen instrucciones de control. Su ejecución
se basa en dos conceptos: la unificación y el backtracking.
Gracias a la unificación, cada objetivo determina un subconjunto de
cláusulas susceptibles de ser ejecutadas. Cada una de ellas se denomina
punto de elección. Prolog selecciona el primer punto de elección y sigue
ejecutando el programa hasta determinar si el objetivo es verdadero o
falso.
En caso de ser falso entra en juego el backtracking, que consiste en
deshacer todo lo ejecutado situando el programa en el mismo estado en
el que estaba justo antes de llegar al punto de elección. Entonces se toma
el siguiente punto de elección que estaba pendiente y se repite de nuevo
el proceso. Todos los objetivos terminan su ejecución bien en éxito
("verdadero"), bien en fracaso ("falso").
Prolog es un lenguaje de programación seminterpretado. Su
funcionamiento es muy similar a Java. El código fuente se compila a un
código de byte el cuál se interpreta en una máquina virtual denominada
Warren Abstract Machine (comúnmente denominada WAM).
Por eso, un entorno de desarrollo Prolog se compone de:
■ Un compilador: Transforma el código fuente en código de byte. A
diferencia de Java, no existe un Standard al respecto. Por eso, el
código de byte generado por un entorno de desarrollo no tiene por
qué funcionar en el intérprete de otro entorno.
■ Un intérprete: Ejecuta el código de byte. Un shell o top-level. Se
trata de una utilidad que permite probar los programas, depurarlos,
etc. Su funcionamiento es similar a los interfaces de línea de
comando de los sistemas operativos.
■ Una biblioteca de utilidades: Estas bibliotecas son, en general,
muy amplias. Muchos entornos incluyen (afortunadamente) unas
bibliotecas standard-ISO que permiten funcionalidades básicas
como manipular cadenas, entrada/salida, etc.
Generalmente, los entornos de desarrollo ofrecen extensiones al
lenguaje como pueden ser la programación con restricciones,
concurrente, orientada a objetos, etc. Sería injusto no mencionar aquí el
entorno de desarrollo más popular: SICStus Prolog, si bien, se trata de un
entorno de desarrollo comercial (no gratuito).
7. Sistema experto “DAnimo”
7.1. Planteamiento y Diseño El planteamiento se ha realizado mediante la adquisición del conocimiento. En
este caso, por razones de tiempo, se ha obtenido dicho conocimiento de un libro
especializado en el área cubierta por el sistema. El diseño se ha realizado mediante
árboles and/or, cuya elaboración ha hecho posible que se represente el
conocimiento y a la vez que éste se entienda y se organice mejor.
7.1.1. Adquisición del conocimiento
La sección de los trastornos del estado de ánimo incluye los
trastornos que tienen como característica principal una alteración del
humor. Esta sección se divide en tres partes. La primera describe los
episodios afectivos (episodio depresivo mayor, episodio maníaco, episodio
mixto y episodio hipomaníaco) que han sido incluidos por separado al
principio de esta sección para poder diagnosticar adecuadamente los
diversos trastornos del estado de ánimo. Estos episodios no tienen
asignados códigos diagnósticos y no pueden diagnosticarse como entidades
independientes; sin embargo, sirven como fundamento al diagnóstico de los
trastornos. La segunda parte describe los trastornos del estado de ánimo
(p. ej., trastorno depresivo mayor, trastorno distímico, trastorno bipolar I).
Los criterios de la mayoría de los trastornos del estado de ánimo exigen la
presencia o ausencia de los episodios afectivos descritos en la primera
parte de esta sección.
Los trastornos del estado de ánimo están divididos en trastornos
depresivos («depresión unipolar
»), trastornos bipolares y dos trastornos basados en la etiología:
trastorno del estado de ánimo debido a enfermedad médica y trastorno del
estado de ánimo inducido por sustancias. Los trastornos depresivos (p. ej.,
trastorno depresivo mayor, trastorno distímico y trastorno depresivo no
especificado) se distinguen de los trastornos bipolares por el hecho de no
haber historia previa de episodio maníaco, mixto o hipomaníaco. Los
trastornos bipolares (p. ej., trastorno bipolar I, trastorno bipolar II,
trastorno ciclotímico y trastorno bipolar no especificado) implican la
presencia (o historia) de episodios maníacos, episodios mixtos o episodios
hipomaníacos, normalmente acompañados por la presencia (o historia) de
episodios depresivos mayores.
La sección de los trastornos del estado de ánimo está organizada
como sigue:
• Episodios afectivos
Episodio depresivo mayor
Episodio maníaco
Episodio mixto
Episodio hipomaníaco
• Trastornos depresivos
Trastorno depresivo mayor
Trastorno distímico
Trastorno depresivo no especificado
• Trastornos bipolares
Trastorno bipolar I
Trastorno bipolar II
Trastorno ciclotímico
Trastorno bipolar no especificado
• Otros trastornos del estado de ánimo
Trastorno del estado de ánimo debido a... (indicar
enfermedad médica)
Trastorno del estado de ánimo inducido por sustancias
Trastorno del estado de ánimo no especificado
Desarrollando cada una de las partes de la organización anterior se
obtuvo lo siguiente:
➔ Episodio depresivo mayor, la característica esencial de un episodio
depresivo mayor es un período de al menos 2 semanas durante el
que hay un estado de ánimo deprimido o una pérdida de interés o
placer en casi todas las actividades.
➔ Un episodio maníaco se define por un período concreto durante el
cual el estado de ánimo es anormal y persistentemente elevado,
expansivo o irritable.
➔ Un episodio mixto se caracteriza por un período de tiempo (de al
menos 1 semana de duración) en el que casi cada día se cumplen los
criterios tanto para un episodio maníaco como para un episodio
depresivo mayor
➔ Un episodio hipomaníaco se define como un período delimitado
durante el cual hay un estado de ánimo anormal y persistentemente
elevado, expansivo o irritable que dura al menos 4 días
➔ El trastorno depresivo mayor se caracteriza por uno o más
episodios depresivos mayores (p. ej., al menos 2 semanas de estado
de ánimo depresivo o pérdida de interés acompañados por al menos
otros cuatro síntomas de depresión).
➔ El trastorno distímico se caracteriza por al menos 2 años en los que
ha habido más días con estado de ánimo depresivo que sin él,
acompañado de otros síntomas depresivos que no cumplen los
criterios para un episodio depresivo mayor.
➔ El trastorno depresivo no especificado se incluye para codificar los
trastornos con características depresivas que no cumplen los
criterios para un trastorno depresivo mayor, trastorno distímico,
trastorno adaptativo con estado de ánimo depresivo o trastorno
adaptativo con estado de ánimo mixto ansioso y depresivo (o
síntomas depresivos sobre los que hay una información inadecuada
o contradictoria).
➔ El trastorno bipolar I se caracteriza por uno o más episodios
maníacos o mixtos, habitualmente acompañados por episodios
depresivos mayores.
➔ El trastorno bipolar II se caracteriza por uno o más episodios
depresivos mayores acompañados por al menos un episodio
hipomaníaco.
➔ El trastorno ciclotímico se caracteriza por al menos 2 años de
numerosos períodos de síntomas hipomaníacos que no cumplen los
criterios para un episodio maníaco y numerosos períodos de
síntomas depresivos que no cumplen los criterios para un episodio
depresivo mayor.
➔ El trastorno bipolar no especificado se incluye para codificar
trastornos con características bipolares que no cumplen criterios
para ninguno de los trastornos bipolares específicos definidos en
esta sección (o síntomas bipolares sobre los que se tiene una
información inadecuada o contradictoria).
➔ El trastorno del estado de ánimo debido a enfermedad médica
se caracteriza por una acusada y prolongada alteración del estado de
ánimo que se considera un efecto fisiológico directo de una
enfermedad médica.
➔ El trastorno del estado de ánimo inducido por sustancias se
caracteriza por una acusada y prolongada alteración del estado de
ánimo que se considera un efecto fisiológico directo de una droga, un
medicamento, otro tratamiento somático para la depresión o la
exposición a un tóxico.
➔ El trastorno del estado de ánimo no especificado se incluye para
codificar los trastornos con síntomas afectivos que no cumplen los
criterios para ningún trastorno del estado de ánimo y en los que es
difícil escoger entre un trastorno depresivo no especificado y un
trastorno bipolar no especificado (p. ej., una agitación aguda).
7.1.2. Diseño de la base de conocimientos
Fig. 2. Esquema General.
Fig. 3: Grafos AND/OR: Episodios Afectivos
Fig. 4: Grafos AND/OR: Trastorno Depresivo Mayor
Fig. 5: Grafos AND/OR: Trastorno Depresivo Distímico
Fig. 6: Grafos AND/OR: Trastorno Bipolar I
Fig. 7: Grafos AND/OR: Trastorno Bipolar I A-B
Fig. 8: Grafos AND/OR: Trastorno Bipolar I C
Fig . 9: Grafos AND/OR: Trastorno Bipolar I D-E
Fig. 10: Grafos AND/OR: Trastorno Bipolar I F
Fig. 11: Grafos AND/OR: Trastorno Bipolar II
Fig. 12: Grafos AND/OR: Trastorno Bipolar Ciclotímico
Fig. 13: Grafos AND/OR: TA debido a sustancias
Fig. 14: Grafos AND/OR: TA. Debido a Enfermedad Médica
7.1.3. Diseño de la interfaz de usuario
Ventana de Inicio del Programa
Ventana Principal
Ventana al terminar la consulta
Ventana de explicación
8. Referencias Bibliográficas
Sistemas Expertos, extraído el 19/07/2014 desde:
http://www.informaticaintegral.net/sisexp.html
Arquitectura básica de un sistema experto, extraído el 19/07/2014 desde:
http://ccc.inaoep.mx/~emorales/Cursos/Representa/node16.html
Sistemas Expertos, extraído el 19/07/2014 desde:
http://sistexpertosmalkav.blogspot.com/2012/02/arquitectura-y-funcionasmiento-de-
un.html
Prolog, extraído el 19/07/2014 desde:
http://es.wikipedia.org/wiki/Prolog
Introducción a Prolog, extraído el 19/07/2014 desde:
http://users.dcc.uchile.cl/~abassi/IA/Prolog.html
Prolog (lenguaje de programación), extraído el 19/07/2014 desde:
http://www.ecured.cu/index.php/Prolog_(Lenguaje_de_programaci%C3%B3n)
Árboles and/or, extraído el 19/07/2014 desde:
http://www.andor.8k.com/