se danimo - prolog.pdf

21
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.

Upload: oscar-roberto

Post on 27-Dec-2015

23 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: SE DANIMO - Prolog.pdf

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.

Page 2: SE DANIMO - Prolog.pdf

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

Page 3: SE DANIMO - Prolog.pdf

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.

Page 4: SE DANIMO - Prolog.pdf

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.

Page 5: SE DANIMO - Prolog.pdf

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.

Page 6: SE DANIMO - Prolog.pdf

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.

Page 7: SE DANIMO - Prolog.pdf

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.

Page 8: SE DANIMO - Prolog.pdf

➢ 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

Page 9: SE DANIMO - Prolog.pdf

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

Page 10: SE DANIMO - Prolog.pdf

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

Page 11: SE DANIMO - Prolog.pdf

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.

Page 12: SE DANIMO - Prolog.pdf

➔ 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).

Page 13: SE DANIMO - Prolog.pdf

7.1.2. Diseño de la base de conocimientos

Fig. 2. Esquema General.

Fig. 3: Grafos AND/OR: Episodios Afectivos

Page 14: SE DANIMO - Prolog.pdf

Fig. 4: Grafos AND/OR: Trastorno Depresivo Mayor

Fig. 5: Grafos AND/OR: Trastorno Depresivo Distímico

Page 15: SE DANIMO - Prolog.pdf

Fig. 6: Grafos AND/OR: Trastorno Bipolar I

Fig. 7: Grafos AND/OR: Trastorno Bipolar I A-B

Page 16: SE DANIMO - Prolog.pdf

Fig. 8: Grafos AND/OR: Trastorno Bipolar I C

Fig . 9: Grafos AND/OR: Trastorno Bipolar I D-E

Page 17: SE DANIMO - Prolog.pdf

Fig. 10: Grafos AND/OR: Trastorno Bipolar I F

Fig. 11: Grafos AND/OR: Trastorno Bipolar II

Page 18: SE DANIMO - Prolog.pdf

Fig. 12: Grafos AND/OR: Trastorno Bipolar Ciclotímico

Fig. 13: Grafos AND/OR: TA debido a sustancias

Page 19: SE DANIMO - Prolog.pdf

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

Page 20: SE DANIMO - Prolog.pdf

Ventana Principal

Ventana al terminar la consulta

Ventana de explicación

Page 21: SE DANIMO - Prolog.pdf

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/