Este documento describe el desarrollo de un sistema experto llamado JBDiagnostic que utilizará Java y MySQL para diagnosticar enfermedades y recomendar medicamentos. El sistema funcionará mediante la introducción de síntomas del paciente y utilizará una base de conocimientos en forma de red con nodos de entrada (síntomas) y salida (enfermedad y medicamentos). El objetivo es ayudar a los profesionales médicos a diagnosticar de manera más eficiente basándose en la experiencia almacenada.
1. Sistema Experto: Diagnóstico de Enfermedades
“JBDiagnostic”
Malca Díaz, Bryan O.
Estudiante Informática
Universidad Nacional De Trujillo
bryanmalca@hotmail.com
Yengle Cosamalón, Jorwin A.
Estudiante Informática
Universidad Nacional De Trujillo
anjhel.urbano@outlook.com
Asesor:
Díaz Pulido, Arturo
Ingeniero Informático
Universidad Nacional de Trujillo
ing.delphi@gmail.com
RESUMEN
Vamos a implementar un sistema experto con Java y
MYSQL, cuyo propósito será diagnosticar la enfermedad y los
medicamentos que lo solucionen; no es posible realizar el este
proceso sin una previa inicialización, con los síntomas del
paciente a atender. Esto ayudara a tomar decisiones a una
persona especialista en el tema, para ver qué es lo que tiene el
cliente y que debe tomar.
Pero no se puede empezar a usar y entender esto sin conocer
los orígenes y el tema en general, por estas razones haremos
un breve repaso de los sistemas expertos y de su importancia,
para luego pasar a desarrollar el problema,ya orientado más al
software con Java y MYSQL, este un sistema experto de gran
importancia y una potente arma utilizada o necesitada con
frecuencia en los hospitales y/o instituciones médicas.
Palabras Claves:
Sistema Experto, MYSQL, JAVA, JBDiagnostic,Base de Datos,
Inteligencia Artificial.
1.INTRODUCCIÓN.
Antes de la aparición del ordenador, el hombre ya se
preguntaba si se le arrebataría el privilegio de razonar y pensar.
En la actualidad existe un campo dentro de la inteligencia
artificial al que se le atribuye esa facultad: el de los sistemas
expertos (SE). Estos sistemas también son conocidos como
Sistemas Basados en Conocimiento, los cuales permiten la
creación de máquinas que razonan como el hombre,
restringiéndose a un espacio de conocimientos limitado. En
teoría pueden razonar siguiendo los pasos que seguiría un
experto humano (médico, analista, empresario, etc.) para
resolver un problema concreto.
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 un
especialista humano en un dominio particular o área de
conocimiento.
En este sentido,pueden considerarsecomointermediarios entre
el experto humano,que transmite su conocimiento al sistema,y
el usuario que lo utiliza para resolver un problemacon 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 su
razonamiento y adquiriendo nuevos conocimientos.
1.1. Usos de un SE.
Un Sistema Experto se puede utilizar -actualmente- en casi
todas las áreas, así tenemos en las áreas militar, química,
geología, electrónica, medicina, informática, derecho,
arqueología, transporte, industria, telecomunicaciones,
aeronáutica, agricultura, educación, finanzas y gestión.
Sus principales aplicaciones se dan en las gestiones
empresariales debido a que:
a) Casi todas las empresas disponen de un ordenador
que realiza las funciones básicas de tratamiento de la
información: contabilidad general, decisiones
financieras, gestión de la tesorería, planificación, etc.
b) Muchos trabajos implican manejar grandes volúmenes
de información y realizar operaciones numéricas para
después tomar decisiones. Esto crea un terreno ideal
para la implantación de los SE.
2. Además los SE también se aplican en la contabilidad en
apartados como: Auditoría (es el campo en el que más
aplicaciones de SE se está realizando) Fiscalidad,planificación,
análisis financiero y la contabilidad financiera.
1.2. Arquitectura de un SE
1.2.1. Base de conocimientos.
Es la parte del sistema experto que contiene el
conocimiento sobre el dominio.Hayque obtener el conocimiento
del experto y codificarlo en la base de conocimientos.Una forma
clásica de representar el conocimiento en un sistema experto
son las reglas. Una regla es una estructura condicional que
relaciona lógicamente la información contenida en la parte del
antecedente con otra información contenida en la parte del
consecuente.
1.2.2. Base de datos (Memoria de trabajo).
También conocida como Base de Hechos.Contiene los
hechos sobre un problema que se han descubierto durante una
consulta. Durante una consulta con el sistema experto, el
usuario introduce la información del problema actual en la base
de hechos. El sistema empareja esta información con el
conocimiento disponible en la base de conocimientos para
deducir nuevos hechos.
1.2.3. Motor de inferencia.
El sistema experto modelael proceso de razonamiento
humano con un módulo conocido como el motor de inferencia.
Dicho motor de inferencia trabaja con la información contenida
en la base de conocimientos y la base de hechos para deducir
nuevos hechos.Contrasta los hechos particulares de la base de
hechos con el conocimiento contenido en la base de
conocimientos para obtener conclusiones acerca del problema.
1.2.4. Interfaz de usuario.
La interacción entre un sistema experto y un usuario se
realiza en lenguaje natural. También es altamente interactiva y
sigue el patrón de la conversación entre seres humanos. Para
conducir este proceso de manera aceptable para el usuario es
especialmente importante el diseño del interfaz de usuario. Un
requerimiento básico del interfaz es la habilidad de hacer
preguntas. Para obtener información fiable del usuario hay que
poner especial cuidado en el diseño de las cuestiones. Esto
puede requerir diseñar el interfaz usando menús o gráficos.
1.2.5. Subsistema de explicación (Módulo de
explicación).
Una característica de los sistemas expertos es su
habilidad para explicar su razonamiento. Usando el módulo del
subsistema de explicación, un sistema experto puede
proporcionar una explicación al usuario de por qué está
haciendo una pregunta ycómo ha llegado a unaconclusión.Este
módulo proporciona beneficios tanto al diseñador del sistema
como al usuario.El diseñador puede usarlopara detectar errores
y el usuario se beneficia de la transparencia del sistema.
1.2.6. Módulo de adquisición.
Interfaz para la adquisición del conocimiento del
dominio, puede incluir mecanismos para facilitar su adquisición
y depuramiento interactivo y para automatizar la adquisición
(aprendizaje). El módulo de adquisición del conocimiento
permite que se puedan añ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 SE.
1.3.1. Ventajas.
Estos programas proporcionan la capacidad de trabajar
con grandes cantidades de información, que son uno de los
grandes problemas que enfrenta el analista humano que puede
afectar negativamente a la toma de decisiones pues el analista
humano puede depurar datos que no considere relevantes,
mientras un SE debido a su gran velocidad de proceso analiza
toda la información incluyendo las no útiles para de esta manera
aportar una decisión más sólida.
1.3.2. Inconvenientes (limitaciones).
a) Es evidente que para actualizar se necesita de
reprogramación de estos (tal vez este sea una de sus
limitaciones más acentuadas) otra de sus limitaciones
puede ser el elevado costo en dinero y tiempo,además
que estos programas son poco flexibles a cambios yde
difícil acceso a información no estructurada.
b) Debido a la escasez de expertos humanos en
determinadas áreas, los SE pueden almacenar su
conocimiento para cuando sea necesario poder
aplicarlo. Así mismo los SE pueden ser utilizados por
personas no especializadas para resolver problemas.
Además si una persona utiliza con frecuencia un SE
aprenderá de él.
c) Por otra parte la inteligencia artificial no ha podido
desarrollar sistemas que sean capaces de resolver
problemas de manera general, de aplicar el sentido
común para resolver situaciones complejas ni de
controlar situaciones ambiguas.
d) El futuro de los SE da vueltas por la cabeza de cada
persona, siempre que el campo elegido tenga la
necesidad y/o presencia de un experto para la
obtención de cualquier tipo de beneficio.
1.4. JAVA.
1.4.1. Introducción.
JAVA es un lenguaje de programación de propósito general,
concurrente, orientado a objetos y basado en clases que fue
diseñado específicamente para tener tan pocas dependencias
de implementación como fuera posible.Su intención es permitir
que los desarrolladores de aplicaciones escriban el programa
una vez y lo ejecuten en cualquier dispositivo (conocido en inglés
como WORA, o "write once, run anywhere"), lo que quiere decir
que el código que es ejecutado en una plataforma no tiene que
ser recompilado para correr en otra.
3. 1.4.2. Características.
1.4.2.1. Lenguaje Simple: Se lo conoce como lenguaje simple
porque viene de la misma estructura de C y C++; ya
que C++ fue un referente para la creación de java por
eso utiliza determinadas características de C++ y se
han eliminado otras.
1.4.2.2. Orientado a Objeto: Toda la programación en java en
su mayoría está orientada a objeto, ya que al estar
agrupados en estructuras encapsuladas es más fácil su
manipulación.
1.4.2.3. Distribuido: Permite abrir sockets, establecer y
aceptar conexiones con los servidores o clientes
remotos;facilita la creaciónde aplicaciones distribuidas
ya que proporciona una colección de clases para
aplicaciones en red.
1.4.2.4. Robusto: Es altamente fiable en comparación con
C, se han eliminado muchas características con la
aritmética de punteros, proporciona numerosas
comprobaciones en compilación y en tiempo de
ejecución.
1.4.2.5. Seguro: La seguridad es una característica muy
importante en java ya que se han implementado
barreras de seguridad en el lenguaje yen el sistemade
ejecución de tiempo real.
1.4.2.6. Indiferente a la arquitectura: Java es compatible con
los más variados entornos de red, cualesquiera sean
estos desde Windows 95, Unix a Windows Nt y Mac,
para poder trabajar con diferentes sistemas operativos.
Java es muy versátil ya que utiliza byte-codes que es
un formato intermedio que sirve para transportar el
código eficientemente o de diferentes plataformas
(Hardware - Software).
1.4.2.7. Portable: Por ser indiferente a la arquitectura sobre la
cual está trabajando,esto hace que su portabilidadsea
muyeficiente,sus programas son iguales en cualquiera
de las plataformas, ya que java especifica tamaños
básicos, esto se conoce como la máquina virtual de
java.
1.4.2.8. Interpretado y compilado a la vez: Java puede ser
compilado e interpretado en tiempo real, ya
que cuando se construye el código fuente este se
transforma en una especie de código de máquina.
1.4.2.9. Multihebra o Multihilos:Java tiene una facilidad
decumplir varias funciones al mismo tiempo,gracias a
su función de multihilos ya que por cada hilo que el
programa tenga,se ejecutarán en tiempo real muchas
funciones al mismo tiempo.
1.4.2.10.Dinámico: El lenguaje java es muydinámicoen la fase
de enlazado,sus clases solamente actuarán en medida
en que sean requeridas o necesitadas con esto
permitirá que los enlaces se puedan incluir incluso
desde fuentes muy variadas o desde la red.
1.4.2.11.Produce Applets: En java se pueden crear
aplicaciones independientes y applets.Independientes
porque se pueden comportar como cualquier programa
escrito en cualquier lenguaje. Por otra parte los applets
considerados pequeños programas, tienen la
capacidad de ejecutar funciones muy complejas.
1.4.2.12.Alto rendimiento: Java es considerado de alto
rendimiento por ser tan veloz en el momento de correr
los programas y por ahorrarse muchas líneas de
código.
2.JBDIAGNOSTIC
2.1. Planteamiento y Diseño
Lo que queremos lograr es un sistemaque permita a un
doctor, enfermero, farmacéutico u cualquier persona que tenga
relación con ciencias de la salud,encontrar de una forma menos
laboriosa, en un tiempo menor, de diagnosticar la enfermedad
de un cliente basándose en los síntomas que este presenta.
Para realizar esto hemos partido del diseño de los síntomas y
los medicamentos uniéndolos a una enfermedad que los
contenga, formando tipo estrella, con una variación al modelo
que utilizado en el tema de REDES.
Los nodos de las estrellas pueden ser de 2 tipos, Entrada y
Salida, los de entrada son los síntomas, que se pedirán en el
diagnóstico,se tendrá que recorrer dichas puntas ycomparando
los valores de entrada que se proporcionó y una vez llegado el
final se podrá obtiene la respuesta que seria las salidas, cabe
mencionar que son los medicamentos y el nombre de la
enfermedad a la que más se relaciona, dichos resultados se
imprimían en pantalla con una detallada información del mismo.
Hemos planteadoque el diseñotenga mínimo3 nodos ymáximo
6 en los datos de entrada,siendo diferente en los datos de salida
que mínimo es 1 y máximo solo 3.
A continuación le mostramos una imagen de la estrella y sus
nodos, con unas posibles respuestas y opciones para su
correcto funcionamiento, cabe mencionar que pueden existir
muchas estrellas con centros totalmente diferentes, pero
síntomas y/o medicamentos parecidos o iguales por asídecirlos.
En la siguiente imagen tendremos 1 centro (Gripe) con 3
entradas y 2 salidas.
Figura 1
4. Si en el diagnóstico, la persona atendida muestra los datos de
verde presentados en la Figura 1, entonces el sistema derivara
y compara que el centro es Gripe, siendo esta la enfermedad,y
por defecto para curar esta enfermedad muestra 2 opciones,
CLORFENAMINA, PARACETAMOL, o las 2 opciones según la
designación que se le dé a la enfermedad llenada en la base del
conocimiento.
Figura 2
Los gráficos cambian en la abstracción que demos al ejecutar y
como se muestra en la Figura 2 vemos que en la parte superior
están los datos de entrada(síntomas), derivando de losmismos,
la Enfermedad, y ultimo los Medicamentos, como hojas
terminales.
Como mencioné anteriormente se puede tener 1 respuesta final,
o las 2, como en la Figura 2, Figura 3, Figura 4.
Figura 3
Figura 4
Es necesario la abstracción,para poder entender cómofunciona
internamente nuestro sistema,pues al comienzo se mostró en la
Figura 1, una forma estrella,yen las siguientes figuras,entrando
en una especie de idea de arborización.
2.2. Implementación
Para llevar un buen desarrollo óptimo y con velocidad
optimizada, para una funcionalidad correcta la dividimos en las
siguientes partes.
2.2.1. Definición de Variables
Estas variables son importantes para la ejecución,
servirán en las funcionalidades y acciones determinantes para
la extracción de Enfermedades y sus Medicamentos.
2.2.2. Sentencias
Las sentencias nos servirán para poder analizar y comparar los
datos ingresados yobtener la enfermedad y los datos de salida,
adecuados al caso.
5. 2.2.3. Bucles de Control
3.Ejecución
En esta ejecución lo que se va a realizar es el ejemplo de
ingresar síntomas, que ya están asignadas en la base de
conocimiento del sistema, con la finalidad de obtener como
respuesta gripe, como esta enfermedad es la más conocida y
más frecuentada por los humanos, decidimos agregar los
síntomas iniciales del mismo, y esperamos así obtener como
resultado gripe.
Vale rescatar que estos datos son ingresados al sistema por
medio de un especialista, que informa que síntomas y que
medicamentos puede tener una enfermedad.
Figura 5
Como se puede ver en la Figura 5 se ha ingresado 3 síntomas
básicos, que en teoría pertenecen a gripe o cualquier
enfermedad que se acercan a ellas.
Figura 6
En la Figura 6 se puede apreciar ya diagnosticada las posibles
enfermedades,con una cantidad de coincidencias,y elegida así
gripe como la más óptima, con un medicamento de
CLORFENAMINA en pastillas.
Lo que se dedujo que si se dio la respuesta que esperábamos
con los síntomas ingresados.
4.Referencias
[1] http://www.monografias.com/trabajos16/sistemas-
expertos/sistemas-expertos.shtml#ARQUIT
[2] http://ccc.inaoep.mx/~emorales/Cursos/Representa/
node16.html
[3] http://es.wikipedia.org/wiki/Java_(lenguaje_de_progr
amación)
[4] http://www.uaeh.edu.mx/docencia/Tesis/icbi/licencia
tura/documentos/Sistemas%20expertos%20y%20su
s%20aplicaciones.pdf
[5] http://sheyla88.blogspot.es/