Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guía para Construir Un Sistema Experto
Guía para Construir Un Sistema Experto
Email: kemper@servidor.unam.mx
RESUMEN
Esta guía ha sido diseñada como tutorial para desarrollar de manera rápida un
Sistema Experto y provee principalmente una perspectiva básica del diseño y
desarrollo de la base de conocimiento. Como premisa hay que mencionar que la
aplicación de un sistema experto es más eficiente cuando el dominio de aplicación
es suficientemente específico para poder delimitar con claridad los alcances del
trabajo del sistema experto.
Generalmente, organizaciones como esta han tenido éxito ofreciendo sus servicios
basados en las necesidades de sus miembros. Han disminuido sus costos de
hospitalización y son menores que aquéllos que basan sus servicios en pago por
servicio. Para contener los costos, la HMO debe limitar la capacidad de servicio de
ambulancias. Este servicio es usado más frecuentemente en los planes de
organizaciones de servicios de salud de prepago que en las de planes por cuota.
Para asegurar que los problemas serios de salud tengan prioridad de obtener
tratamiento, el administrador de servicios de salud, en este ejemplo, es necesario
que tenga como asistente personal a un SISTEMA EXPERTO para que haga el
chequeo para decidir al respecto. En esta situación, el criterio pertinente para
diagnosticar el tratamiento puede ser incorporado al SISTEMA EXPERTO.
Estos beneficios son similares a los que tienen muchas organizaciones que han
usado tecnologías de SISTEMA EXPERTO para solucionar sus problemas de
negocios.
1.1.Pasos para desarrollar un primer SISTEMA EXPERTO
Paso Acción
1 Crear un diagrama de bloques sobre el área de estudio. Esto indicará
la subárea (dominio específico) seleccionada para el prototipo inicial
del SISTEMA EXPERTO.
2 Crear un diagrama de bloques de la situación exacta de la que se
decidió hacer el prototipo. Esto deberá indicar los factores críticos
necesarios para hacer la recomendación (ver figura 1.3).
3 Convertir el diagrama final de bloques a un diagrama de dependencia.
Esto deberá indicar todas las preguntas iniciales, reglas, valores y
recomendaciones hechas por el prototipo del SISTEMA EXPERTO (ver
figura 1.4)
4 Crear tablas de decisión para todos los triángulos del diagrama de
dependencias (ver ejemplos en las figuras 1.5, 1.7 y 1.9).
5 Convertir la tabla de decisión reducida a reglas IF-THEN (ver ejemplos
en figuras 1.6, 1.8 y 1.10), creando así la Base de Conocimientos.
6 Construir una interfaz de usuario del SISTEMA EXPERTO. Estas son
partes que el usuario ve cuando corre la consulta. Consiste en un
mensaje inicial, mensaje de término de la sesión de consulta, así como
las preguntas realizadas durante la sesión (ver 2-15).
7 Usar un procesador de palabras o un “editor” en un sistema experto,
para escribir los elementos que constituyen la “base de conocimiento”
en un archivo en la computadora (ver ejemplo en la figura 2-15).
8 Ejecutar una consulta de prueba (ver figura 2-14). Si se encuentran
errores, se revisan paso a paso usando el editor. Este proceso de
seguimiento de errores a menudo toma varias repeticiones para
encontrar todos los defectos. Esto es normal.
Figura 1.1. Pasos para el desarrollo rápido de SISTEMA EXPERTO.
Organización HMO
Funciones de Funciones
Área } servicio administrativas
seleccionada
para el
prototipo
inicial
Servicios de
HMO
Seguimiento de Información
Caso nuevo
caso Otros
Sin membresía
Caso nuevo o
Caso nuevo: seguimiento Seguimiento de caso: Información Atención para personas
No serio de caso: serio No serio Otros servicios sin membresía
(Atención nivel 2) (Atención nivel 2) (Atención nivel 3)
Figura 2-3. Diagrama de bloque de la situación decidida del prototipo inicial: Asistente de
Diagnóstico Médico de la HMO
Atención de nivel 1.
Atención de nivel 2.
Atención de nivel 3.
Información u otros servicios.
Atención a pacientes que no son miembros.
Los requerimientos del ejemplo han sido simplificados para permitir enfocar
situaciones que ilustren aspectos del software desarrollado.
Crear una tabla de decisión, como la que se muestra en la figura 2-5, cada
triángulo en el diagrama de dependencia es el paso principal de este modelado.
La tabla de decisión es necesaria para mostrar las relaciones internas de los
valores de salidas con cualquier fase intermedia o la recomendación final del
SISTEMA EXPERTO.
Preparar la tabla de decisión es el resultado directo de comparar las figuras 2-5, 2-
7 y 2-9. El proceso comienza con la planeación del número de renglones
necesarios en la tabla. Esto puede ser determinado por el listado de todos los
factores, ahora llamados condiciones, que llegan al triángulo bajo consideración.
En la figura 2-5, la planeación de la tabla de decisión surge del conjunto de reglas,
en la que intervienen las tres condiciones, cada una de ellas puede tomar un
número diferente de valores. El estado de membresía, la primera condición sólo
puede tomar dos valores, estos son miembro y no_miembro.
La información proviene del diagrama de dependencia y puede ser llevado a la
tabla de decisión fácilmente.
Cuando los valores y condiciones estén totalmente listadas, puede determinarse el
número de renglones de la tabla de decisión. En este caso hay 12 renglones: dos
posibilidades para el estado de membresía, por tres posibilidades para razones,
por dos opciones para el problema. Este número representa todas las posibles
combinaciones de las condiciones que pueden ocurrir hasta este punto en el
SISTEMA EXPERTO.
Los 12 renglones son organizados como se ve en la tabla completa de decisión de
la figura 2-5. La creación de esta tabla comienza con dibujar una tabla vacía que
consta solo de los renglones que serán las reglas de la base de conocimiento, y
las etiquetas de los renglones. Estas etiquetas son los nombres de las condiciones
y el encabezado es agregado en un renglón extra para identificar las posibles
combinaciones de los valores de salida. Este modelo permite evaluar todos los
valores de las diferentes condiciones.
Para simplificar la inserción de valores en cada casilla de la tabla, es conveniente
dibujar líneas horizontales dividiendo los renglones.
El lugar donde deberá dibujarse una línea divisoria está determinado por el
número de valores de la fase de planeación anterior. Por ejemplo, la primera
condición, estado de membresía, tiene sólo dos valores posibles. Así que la
primera línea divide el renglón en mitades entre el renglón 6 y 7. Cada mitad ahora
está separada y será considerada en la siguiente división de los renglones para la
condición 2.
La segunda condición, razones, tienes tres posibles valores, por lo que se dividirá
en 3 partes. Este corte en tres debe hacerse dos veces, una para la mitad superior
de los renglones y otra para la mitad inferior.
La condición final, problema, requiere dos secciones y tiene que hacerse para
cada una de las seis subdivisiones. Entonces el último corte divide en dos partes
los renglones. Los valores ahora son insertados en las celdas vacías. Como es
evidente el valor miembro de la columna del estado de membresía es repetida en
la mitad de las celdas. La siguiente columna, tiene tres valores para la segunda
condición y se repiten en las dos mitades originalmente construidas en la tabla.
Una columna más a la derecha, se repiten los dos valores para la tercera
condición en cada par de renglones.
Con todas las celdas llenas, sigue evaluando cada combinación de valores y
escribe el valor de salida en la ultima columna. No hay una fórmula sencilla para
hacer esto. Esto requiere analizar cuidadosamente cada renglón, o en este caso,
evaluar todos los valores listados, y tener un experto para determinar que se
puede concluir de la evidencia dada. Una evaluación de los primero cuatro
renglones se lee como sigue:
RULE 6
IF miembro = si AND
identificación_válida = si
THEN estado_membresia = miembro;
RULE evitar
IF miembro = si AND
identificación_válida = si
THEN estado_membresia = miembro
ELSE estado_membresia = no_miembro;
Esta regla expresa la tabla de decisión de la figura 2-7. La regla dice que SI una
persona es miembro con un número de identificación válido ENTONCES el estado
de su membresía es ser miembro, de otro modo no lo es. La cláusula ELSE (SI-
NO) es cuestión de sentido común. Una razón por la cual esta cláusula es
raramente usada en este tutorial es por que hace explícitas las condiciones
alternativas que ya son implícitas. Otra razón es que puede causar una secuencia
ilógica de cuestionamientos en una consulta.
Por ejemplo, las condiciones de la regla anterior son probadas en orden
secuencial y en este caso, asumimos que el usuario esta diagnosticando a alguien
que no es miembro de la HMO. Si la regla no concluye después de un ‘no’ como
respuesta a si es miembro, continúa la evaluación en la siguiente condición y
pregunta si la misma persona tiene un identificador válido. La única manera de
impedir esta situación ilógica es hacer la condición negativa una regla aparte, por
ejemplo:
RULE 8
IF miembro = no
THEN estado_membresia = no_miembro;
Como esta condición negativa es manejada en una regla separada, requiere que
las reglas 6 y 7 sean explícitas, como se muestra en la figura 2-8.
Una buena regla intuitiva o regla de dedo para el primer intento de SISTEMA
EXPERTO es escribir una regla para cada renglón de la tabla reducida de
decisión. Los atajos pueden ser explorados para incrementar la eficiencia de
escribir reglas y consultar la base de conocimiento.
Paso 6: Construir interfaz de usuario.
Una vez escritas las reglas IF-THEN, los elementos de la interfaz de usuario de la
base de conocimiento deben ser construidos, como en la figura 2-14. En este caso
la interfaz se refiere a todas las partes que el usuario verá y con las que
interactuará en una sesión de consulta al SISTEMA EXPERTO. Como mínimo,
consiste en mensajes de inicio y fin, además de las preguntas durante la sesión de
consulta.
Consideraciones al factor humano intervienen en la construcción apropiada de
dependencia. Es un arte delicado plantear preguntas de tal modo que se obtenga
la información deseada. Algunas preguntas se reescriben muchas veces hasta que
parezcan adecuadas. Después de que parecen correctas, deben ser probadas en
sesiones de consulta en persona.
Escribir las preguntas en papel en ocasiones puede ayudarnos a pensar más
claramente el diseño general del SISTEMA EXPERTO. Es común hacer preguntas
sobre los faltantes y sobrantes. Esto lleva al desarrollador a pasos anteriores en el
proceso de desarrollo para reconsiderar el diseño del SISTEMA EXPERTO.
Esencialmente el diseño y desarrollo de un SISTEMA EXPERTO es un proceso
iterativo. El desarrollador salta entre las fases del desarrollo de acuerdo al diseño.
El diseño es la parte creativa del proceso. Convertir el diseño al código de la base
de conocimiento es la parte mecánica.
Por ejemplo, consideremos ¿cuál es la razón por la que se busca el servicio de la
HMO?. El desarrollador prueba el término propósito en lugar de razones y prueba
variaciones como ¿qué razones tiene una persona para venir por el servicio del
HMO? A menudo, no hay otra alternativa más que prueba y error.
Codificar las preguntas en la base de conocimiento requiere usar dos nuevas
palabras clave:
Bloque de Acciones
Bloque de Reglas
Bloque de Preguntas
Paso 1: Planeación
Condiciones: Número de
valores
estado_membresía (miembro, no_miembro) =2
razones (caso_nuevo, seguimiento, info_otros) =3
problema (serio, no_serio) =2
Renglones = 2 x 3 x 2 = 12
Paso 1: Planeación.
Condiciones: Número de valores
Miembros (si,no) =2
identificación_valida (si, no) =2
Renglones = 2x2=4
2 cortes 2 cortes
RULE 8 IF miembro = no
THEN estado_membresía = no_miembro;
Paso 1: Planeación.
Condiciones: Número de
valores
Temperatura (normal, anormal, desconoc) =3
otros_sintomas (si, no) =2
Renglones = 3 x 2 = 6
Paso 2: Tabla de decisión completa.
Reglas Temperatura otros_sintomas Problema
A1 normal Si serio
A2 normal No no_serio
A3 anormal Si serio
A4 anormal No serio
A5 desconoc Si serio
A6 desconoc no serio
3 cortes 2 cortes
RULE 8
IF miembro = no
THEN estado_membresia = no;
Palabras Variables
clave
Nombres de variables:
Deben comenzar con una letra
Cada nombre de variable debe ser única
Nombres de variables y valores se restringen a un máximo de 40
caracteres los cuales pueden incluir letras (mayúsculas o minúsculas),
números y los siguientes caracteres especiales: -, $, |, %.
No se permiten espacios en los nombres de variables o valores. En lugar
de esto, puede usarse el guión bajo entre las palabras (estado_membresia,
por ejemplo).
Palabras clave no pueden ser usadas como nombres de variables. Pueden
presentarse errores rante la ejecución de la consulta si se usan. Se listan
las palabras clave en la figura 2-13.
Los valores que se asignan a variables no pueden ser mayores a 40
caracteres.
Nombres de Reglas:
Los nombres de las reglas (o etiquetas) generalmente siguen las mismas
convenciones que los nombres de variables (arriba), excepto que las
reglas pueden empezar por un número.
Cada nombre de regla debe ser único.
Nota: las palabras clave son usadas en la construcción de la base de conocimiento incluyendo las
palabras que comienzan cada línea, palabras especiales usadas en la construcción de una regla y
otras palabras reservadas para uso específico en la base de conocimiento.
@ABS BUTTON ENDOFF HIPERTEXT PLURAL *THEN
@ACOS CALL EXECUTE *IF POP TMODE
@ASIN CCALL FDISPLAY INDEX PRINTOFF TRACK
@ATAN CHAIN FILL LBUTTON PRINTON TRUTHTHRESH
@COS *CHOICES *FIND LENGTH PSET UNKNOWN
@EXP CHR FIXED LINETO PUT VGAUGE
@LOG CLOSE FOR LOADFACTS PWKS WCLOSE
@SIN CLROFF FORMAT LOCATE RECEIVE WFORMAT
@SQRT CLRON FORMFIELD MENU RECORD_NUM WHENEVER
@TAN CLS GBCOLOR MENU_SIZE RECTANGLE WHILEKNOWN
*ACTIONS COLOR GCLS METER REPORT WHILETRUE
ACTIVE COLUMN GCOLOR MOUSEOFF RESET WKS
ALL COUNT GDISPLAY MOUSEON ROW WOPEN
*AND CURR GET MOUSEX *RULE WORKON
APPEND DBFORM GETCH MOUSEY RUNTIME WORKSHEET
*ASK *DISPLAY GETMOUSE MOVETO SAVEFACTS
AUTOQUERY EJECT GLOCATE MRESET SCI
BCALL ELLIPSE GMODE NAMED SHIP
BECAUSE ELSE HGAUGE *OR SHOWTEXT
BKCOLOR END HOTREGION PDISPLAY SORT
Mensaje
inicial Bienvenido al asistente de diagnóstico de la HMO
Figura 2-15 Estructura de la base de conocimiento y archivo del primer SISTEMA EXPERTO.