Este documento presenta una guía para desarrollar sistemas expertos usando la herramienta ESTA. Explica cómo crear parámetros, secciones y reglas para estructurar un árbol de conocimiento. También cubre temas como el uso de imágenes interactivas, evaluación de múltiples parámetros y encadenamiento entre secciones. El objetivo es complementar la elaboración de un sistema experto experto maximizando las funcionalidades de ESTA.
1. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
Asignatura: Inteligencia Artificial.
Guía de laboratorio para desarrollar sistemas expertos usando E. S. T. A.
Elaborado por: Ing. Ariel Chávez Toruño.
Introducción.
Un sistema experto es un sistema computacional que imita la conducta de un experto humano en algún
área específica. La idea detrás de crear un sistema experto es que puede permitirles a muchas personas que
se beneficien del conocimiento de una persona - el experto. Y puede dejar al experto para los problemas
más difíciles.
Proporcionándole una base de conocimiento para un cierto problema o contexto, ESTA permite crear un
sistema especialista para ese asunto.
ESTA posee todos los medios para escribir las reglas que constituyen la base del conocimiento y permite
realizar inferencias que aconsejen sobre la base de su conocimiento.
ESTA hace uso de parámetros como variables para determinar el flujo de mando entre las secciones.
Cualquier parámetro consiste en un campo de la declaración y un campo del tipo. Más allá pueden usarse
varios campos optativos, dependiendo del tipo del parámetro, para describir el parámetro. Un parámetro
puede ser uno de lo siguiente cuatro tipos:
boolean parameter
text parameter
number parameter
category parameter
Cualquier parámetro puede obtener un valor en uno de las maneras siguientes:
Por una respuesta a una pregunta.
Como resultado de seguir algunas reglas.
Una asignación que resulta de un asigne acción.
Sintaxis básica de ESTA.
parameter name 'El nombre del usuario'
type text
question '¿Cómo te llamas?'
parameter pc_colour 'El color favorite del usuario'
type category
options
red,
blue,
green.
question '¿Cuál de los siguientes colores prefieres?'
picture 'colour_screen_picture'
2. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
parameter colour 'Unas palabras que describen el color'
type text
explanation
'Los humanos normalemte usan los nombres de los colores para describer la frecuencia específica de la
onda de luz correspondiente. Este parámetro representa colores como el rojo, azul, etc'
rules
'blue' if frequency < 1000,
'red' if frequency > 2000 and frequency < 3000,
'invisible'.
Luego la acción del consejo es ejecutada por un Advice estableciendo los valores de todos los parámetros
involucrados en la expresión del texto y entonces escribiendo el texto resultante en una ventana en la
pantalla. Los cuadros pueden ser incluidos en cualquier parte en el consejo y por eso se mostrado en la
pantalla como parte del consejo. Su sintaxis es:
<advice> ::= advice <specification>
<specification> ::= <advice-item> {<specification>}
<advice-item> ::= text-expression | picture <picture-name>
Luego la asignación se realize mediante los valores de los parámetros, de la siguiente manera: <assign>
::= assign <parameter-name> := <expression>
El siguiente ejemplo ilustra la asignación.
section start 'Una sección muy corta para ilustrar la asignación'
assign n := 7 + 8 / 2
advice 'la evaluación de 7 + 8 / 2 resulta en ' n
assign n := (7 + 8) / 2
advice 'la evaluación de (7 + 8) / 2 resulta en ' n
'porque / tiene mayor prioridad que +.' &
'Observer que el parámetro cambia su valor'
parameter n 'n'
type number
El comando Chain Action permite consultar distintas bases de conocimientos, en el caso que el
conocimiento este estructurado en varias bases. La sintaxis es <chain> ::= chain <filename>
Además pueden transferirse valores de parámetros entre dos BC usando save_values y restaurar el valor
en la nueva BC usando restore_values, pero se pierden las definiciones de los valores, y la nueva BC
desplaza a la antes cargada en la memoria de la PC.
El comando do action transfiere el mando a una nueva sección, conocido esto como encadenamiento
hacia delante. Su sintaxis es:
section start 'primera sección a ejecutarse'
3. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
if answer = 'yes' (do positive_section, do next_section)
if answer = 'no' do negative_section
Dependiendo del valor de anwer, se ejecutara la parte positiva o negativa.
El comando do_section_of toma un argumento o un parámetro de la categoría tipo; y la acción
correspondiente es una alternativa a las frases a menudo usadas en declaraciones de la sección:
if <category parameter name> = <option1> do <option1>
if <category parameter name> = <option2> do <option2>
En lugar de listar todos los si-declaración que corresponden a las posibles opciones, puede escribir
simplemente: do_section_of <el nombre de parámetro de categoría>
En una sesión de la consultación el valor del parámetro determinará a que sección se transferirá el control.
Si el parámetro tiene no consiguió un valor, ESTA evalúa el parámetro primero y el valor obtenido es una
referencia a la sección correspondiente. La funcionalidad del do_section_of y el do_action es exactamente
el mismo. La diferencia es que usted no tiene que escribir todas las frases iguales con los hacer-
declaración, pero en cambio sólo una frase. Recuerde que que la opción nombra del parámetro de la
categoría debe corresponder a los nombres de la sección en la base de conocimiento.
Ejemplo
section start 'sección principal'
do_section_of problem
parameter problem : 'el problema con su carro'
type category
explanation
'Identifique el problema con su carro.'
options
starting_problems - 'Problema de arranque'
overheating - 'Motor sobrecalentado'
smell_of_gasoline - 'Olor a gasolina'
bad_running - 'El motor funciona mal'
brakes - 'Las llaves'
vibration - 'Vibración excesiva'
wiper_motor - 'ruido del motor'
light_problem - 'las luces'
horn_problem - 'calentamiento'.
question
'¿Cuál es el problema con su carro ' car ' ?'
picture 'car'
La function <exit> ::= exit simplemente termina la consulta a la actual base de conocimientos. En cambio
<stop> ::= stop realiza una parada para que no se realicen más acciones o ejecuten expresiones sobre la
BC.
section start1 'seccion start sin stop'
4. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
if p1 and p2 and p3 and p4 and p5 and p6 and p7
advice 'realizando p1 - p7 es verdadero , se muestra este mensaje'
if not (p1 and p2 and p3 and p4 and p5 and p6 and p7)
advice 'el segundo mensaje se muestra una vez que p1 - p7 es falso'
section start2 'seccion start con stop'
if p1 and p2 and p3 and p4 and p5 and p6 and p7
(advice 'verificando p1 - p7 es verdadero , es mostrado el mensaje',
stop)
advice 'el Segundo mensaje es mostrao si p1 - p7 es falso'
La llamada call permite ejecutar procedimientos definidos anteriormente. La sintaxis para la acción de la
llamada es como sigue, ilustró con el construir-en procedimientos:
<call> ::= call clear_all() |
call clear_value(<parameter_name>) |
call display(<filename>) |
call
hyperadvice(<filename>,<name>) |
call restore_values(<filename>) |
call save_values(<filename>) |
call showpic(<picture_name>) |
call
sound(<Duration>,<Frequency>) |
call system(<string>)
Procedimientos:
Se creará un árbol para definir el
problema o conocimiento que seguirá
la aplicación experto y poder ayudar al
usuario a resolver su problema o
necesidad. Esto se desarrollará usando
la aplicación ESTA (Expert Shell
System for Text Animation.)
1. Al ejecutar la aplicación ESTA
aparece el mensaje de la figura,
si se está trabajando con la
versión educacional y para
todas las aplicaciones de
conocimientos creadas a partir
de ella.
2. Luego de la ventana de bienvenida puede empezar a crearse la base de conocimiento que servirá
para el funcionamiento del sistema experto, como se indica a continuación.
5. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
3. Como se mencionó anteriormente, las bases
de conocimiento (BC) de ESTA (*.kb)
trabajan mediante árboles de búsquedas
donde sus nodos se llaman secciones y éstos
se comunican entre ellos, mediante
parámetros. Como práctica se creará el
siguiente árbol de sistema experto.
4. La primera sección (nodo inicial) debe
llamarse Star, y se crea así:
5. A continuación debe crearse el parámetro
inicial del problema, tipo categoría; es decir
opción múltiple. Y modifique el parámetro
de acuerdo con el siguiente código. Después
se guarda el parámetro pulsando Sí,
sobre la ventana de “Update problema
before closing”. Si desea modificar el
parámetro creado puede escogerse
Parámetros Editar Parámetros, y
seleccionarlo de la lista.
6. Para verificar el progreso de la base de
conocimiento puede hacerse clic en
Consultar Iniciar.
6. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
Observe que la sección start incluye en la pregunta Nombre; el
cual es un parámetro tipo texto. Y debe contener lo siguiente.
7. Al volver a la sección Star creada
inicialmente (Sección Editar Sección),
debe escribirse lo siguiente:
8. Al definir por cada opción la sección a
ejecutar (do), automáticamente se crea la sección así nombrada (crear_libro, crear_pag, crear_bg.)
Lo que puede observarse desde :
parameter problema : 'Problema a resolver con ToolBook Instructor II'
type category
explanation 'Identificar en cual categoría se encuentra la situación a resolver a nivel de autor.'
options
libro - 'Crear un libro electrónico',
pagina - 'Crear o modificar página(s) en un libro existente',
fondo - 'Agregar o modificar un fondo de página'.
/* rules field */
question '' Nombre ' ¿Qué es lo que desea realizar? '
picture ' '
section start : 'Sección principal del programa '
if problema = 'libro' do crear_libro
if problema = 'pagina' do crear_pag
if problema = 'fondo' do crear_bg
parameter Nombre : ' '
type text
explanation ' '
/* rules field */
question '¿Cuál es su nombre? '
picture ' '
7. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
9. Posteriormente deberá crearse cada una de la secciones del árbol, lo cual puede hacerse pulsando
doble clic desde el árbol.
10. La siguiente sección a crear (crear_libro), mostrará en pantalla un mensaje., usando advice
indicando los pasos a seguir por el usuario.
11. La sección crear_fondo se
define mediante un parámetro
fondo tipo boolean, de la
siguiente manera:
12. La sección crear_fondo deberá
evaluar si el usuario responde
Si / No a la pregunta del
parámetro.
Asignación:
1. Realice las actividades
anteriores.
2. Completar los comentarios de
las secciones y parámetros anteriores.
3. Crear la sección crear_pag, la cual debe preguntar al usuario, para que él elija las opciones de
crear una nueva página, usar una existente, o aplicar una plantilla de diseño.
4. Por cada una de estas opciones deberá existir otra sección que indique al usuario como realizar
cada actividad.
5. Crear un nuevo árbol para un problema determinado:
a. Con cuatro opciones iniciales.
b. Con cinco niveles de profundidad
c. Explicando cada uno de los pasos llevados a cabo tomando como referencia esta guía.
d. Usando parámetros tipo:
i. Boleanos.
ii. Categoría.
iii. Texto.
section crear_libro : 'Indica al usuario como crear un libro electrónico '
advice
'' Nombre ' Los libros que crea Instructor pueden ser desde plantillas prediseñadas, libros DHTML,
hasta evaluaciones diversas; y se trabajará con Blank Native ToolBook Book.'
parameter fondo : ' '
type boolean
explanation ' '
/* rules field */
question '¿El libro electrónico ya tiene un fondo de página? '
picture ' '
section crear_bg : ' '
if (fondo) do elige_bg
if not(fondo) advice ''Nombre 'Pulse la función F4 para
trabajar en el fondo de la aplicación como si fuera una
página más del libro, y regrese a la página pulsando
nuevamente F4 cuando haya terminado '
8. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
Asignatura: Inteligencia Artificial.
Guía de laboratorio 6 para desarrollar sistemas expertos usando E. S. T. A.
Elaborado por: Ing. Ariel Chávez Toruño.
Introducción.
Cuando se trabaja con ESTA, también existe la posibilidad de incluir el uso de interfaz gráfica, así como
el uso de imágenes como zonas sensibles que se combinan con los parámetros definidos de las secciones
en la base de conocimientos.
Además puede evaluarse múltiples parámetros, de manera que pueda realizarse una acción (llamar una
sección) dependiendo si más de uno de ellos es verdadero, falso, o tiene un valor específico.
Objetivos.
Complementar la elaboración de un Shell experto, maximizando la herramienta ESTA para la creación y
uso de la base de conocimiento.
Procedimientos
Inicialmente complementaremos el árbol anteriormente creado, agregando la opción programar en el
parámetro problema de la sección start (inicial).
1. Editar el parámetro problema,
agregando la siguiente línea de
código y observando que la última
opción debe terminar en (.).
2. Insertar la siguiente condición en la sección start: if problema = 'programar' do sprogramar
3. La sección sprogramar debe preguntar independientemente si se desea programar en OpenScript o con
el Editor de Acciones, validando que ambas no pueden usarse a la vez. Para lo cual se definirán dos
parámetros: openscript y accionedit como tipo boléanos.
fondo - 'Agregar o modificar un fondo de página',
programar - 'Programar usando ToolBook Instructor II'.
section sprogramar : ' '
if (openscript) and (accionedit)
advice 'No es posible'
if (openscript) do sopenscript
if (accionedit) do saccionedit
if not(openscript) do
saccionedit
if not (accionedit) do
sopenscript
section sopenscript : ' '
if (openscript) advice 'OpenScript permite iniciar, mostrar, detener,
etc; las animaciones por trayectoria enviando mensajes a la
aplicación para indicar movimiento a través de la trayectoria o por
pasos a través de la misma, por medio de los mensajes'
parameter openscript : ' '
type boolean
explanation ' '
/* rules field */
question '¿Desea programar usando OpenScript para ToolBook?'
picture ' '
9. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
4. Otra opción es diseñar una pantalla
de bienvenida que incluya una
imagen alusiva al tema del sistema
experto. Lo cual se elige desde el
menú Imágenes BD de imágenes,
y en la ventana emergente se pulsa
sobre el botón Importar… con la
salvedad que solo pueden agregarse imágenes en formato BMP y WMF, y se guarda dicha imagen con
un nombre en la base de datos de imágenes.
5. Importada la imagen, se elige Título Nuevo título y se escribe *<nombreimagen>*. Únicamente
puede existir un título, por tanto al crear uno nuevo se remplazará el existente en caso que este exista.
6. También pueden definirse zonas sensibles asociadas a parámetros tipo categoría, lo que permite al
usuario utilizarlas en vez de elegir el texto de la opción. Esto se realiza de la siguiente manera:
6.1. Se importa una nueva imagen desde Imágenes BD imágenes Importar…
section saccionedit : ' '
if (accionedit) advice 'Es la herramienta de programación visual que permite crear o editar una serie de
comportamientos llamados secuencias de accciones. Éste incluye menús y barras de herramientas de
protocolos estándares y permiten responder a eventos, reproducir multimedia, mostrar cuadros de
entrada, modificar la apariencia y comportamiento de objetos, controlar la navegación, crear variables y
ciclos, etc'
parameter accionedit : ' '
type boolean
explanation ' '
/* rules field */
question '¿Desea utilizar el asistente para editar acciones?'
picture ' '
10. Inteligencia Artificial.
Universidad Nacional de Ingeniería.
Facultad de Ciencias y Sistemas.
6.2. Se guarda con un nombre. Si por accidente importó una
imagen incorrecta y pulsa el botón Eliminar, la imagen se
borrará de la base de imágenes y también se borrará de su
ubicación original.
6.3. La imagen importada se
selecciona y se pulsa la
pestaña Hotspot para definir
las zonas sensibles y los
parámetros correspondientes.
6.4. Se elige el parámetro, en este
caso problema, por que es el
parámetro inicial de start; y la
opción correspondiente para el
mismo.
6.5. Se activa la opción del atributo
visible / invisible y se dibuja
un rectángulo sobre la
imagen. Se repiten los pasos
6.4 y 6.5 por cada valor del
parámetro; y luego se pulsa
aceptar.
6.6. Para reflejar los cambios, debe
modificarse el parámetro
problema, y escribir picture
'menuesta'.
6.7. Al reiniciar la consulta se
observan los cambios
realizados.
Actividades.
1. Realizar las actividades de esta
guía.
2. Aplicar los nuevos
conocimientos en su propio
árbol de problema creado en el
laboratorio anterior.