URL inicio: http://www.nosolousabilidad.com/hassan/index.htm
URL de este documento: http://www.nosolousabilidad.com/hassan/manualhassie.htm
email: yusef_hassan@yahoo.es


Hassan > Software >

Manual de HasSIE v1.0

Yusef Hassan Montero, 2001

¿Qué es HasSIE?

HasSIE es un SBC (Sistema Basado en Conocimiento) que realiza razonamiento hacia delante sobre una BC (Base de Conocimiento), pudiendo calcular incertidumbre mediante CF(Factores de Certeza). Las BC son un conjunto de reglas de producción y hechos, y HasSIE las representa mediante ficheros de texto (formato ASCII), por defecto con extensión <.ESI>. HasSIE además comparte sintaxis con otro SBC llamado ESIE, por lo que puede trabajar con BCs de ESIE, en cambio es muy probable que ESIE no pueda interpretar la mayoría de las BC escritas con HasSIE.

Que HasSIE sea compatible con ESIE, no significa que estén diseñados para el mismo fin, ni para resolver el mismo tipo de problemas. ESIE realiza razonamiento hacia atrás, por lo que su fin es demostrar una hipótesis, mientras que HasSIE, aunque puede demostrar también una hipótesis, no es este en realidad su fin, sino demostrar todos los hechos posibles en base al conjunto de hechos y reglas de la BC.

Nota:Las BC de HasSIE, como las de ESIE, no son en realidad un conjunto de hechos y reglas, sino únicamente una base de reglas, ya que los hechos deberán ser introducidos por el usuario.

HasSIE es una aplicación informática bajo licencia freeware únicamente para fines educativos y no lucrativos, por lo que para su uso con fines comerciales se consultar con el autor. Todos los derechos reservados.

Requisitos Mínimos

Para el correcto funcionamiento de HasSIE se requiere un PC 486 o superior, con sistema operativo Windows 95/98/Me. Se recomienda una resolución mínima de 800x600 y 256 colores.

Un Paseo por el Programa

Nada más ejecutar HasSIE aparecerá ante nuestros ojos la ventana de presentación y después el programa en sí. En la interfaz de HasSIE podemos diferenciar dos zonas claramente, la ventana de edición y la barra de menús. En la ventana de edición será donde crear y editar la BC. Aunque en la barra de menús no encontraremos las opciones de cortar y pegar, éstas se encuentran accesibles desde teclado:

<CTRL> + X para Cortar ; <CTRL> + C para Copiar ; <MAYÚSCULAS> + Insertar para Pegar

Nota: HasSIE no permite edición de documentos múltiples, por lo que sólo podremos trabajar con una BC al mismo tiempo. Aún así, si se desea trabajar con varias BC al mismo tiempo, la solución es bastante sencilla: únicamente habría que lanzar otra instancia del programa (ejecutar dos o más veces HasSIE, según el número de BC que queramos tener abiertas al mismo tiempo).

Menú Archivo

Desde este menú podremos acceder a las opciones de crear un documento (BC) nuevo, abrir una BC, guardar la BC, y salir de HasSIE.

Menú Ayuda

En este menú se especifica la ubicación de este archivo de ayuda, y el omnipresente Acerca de... (Nota: en acerca de, según la época del año que sea, y a veces según el día, HasSIE hará un comentario, ya sea sobre el tiempo o sobre cualquier otro tema)

Menú Razonamiento
Menú Comenzar

Este es el menú principal de HasSIE. Una vez creada o cargada en memoria la BC, pinchando sobre el menú comenzar, empezará el proceso de razonamiento. Primero aparecerá una ventana, donde deberemos pinchar en Realzar Análisis, entonces HasSIE analizará la BC en busca de errores de sintaxis, deteniendo el proceso y avisando en caso de encontrarse alguno. Una vez finalizado el análisis, podremos pinchar sobre Razonamiento Hacia Delante, con lo que el sistema comenzará a realizarnos las preguntas.

Para responder a las preguntas tan solo tendremos que seleccionar con el ratón la opción deseada, y pinchar en el botón Continuar >>>. Si en el lado derecho de la ventana aparece una barra desplazable, será porque podemos además de responder a las preguntas, indicar el CF de nuestra respuesta (por defecto 1).

Una vez terminado con el razonamiento, aparecerá ante nosotros el informe final, con una descripción de la BC, de lo hechos y reglas, de las reglas utilizadas por HasSIE en el proceso de razonamiento, etc... Si se desea, HasSIE permite salvar el informe en disco.

Propiedades

Este menú (dentro del menú razonamiento), nos permitirá configurar a nuestro gusto algunas propiedades de HasSIE. La ventana de propiedades se divide en dos zonas, una para propiedades del informe y otra para propiedades del razonamiento. En propiedades del informe podemos configurar las siguientes características del informe:

En propiedades del razonamiento podemos seleccionar una propiedad, por defecto sin marcar, llamada "Invertir valor y CF cuando el usuario introduzca un CF>0".

Esta propiedad será funcional únicamente cuando la BC permita dos respuestas válidas. Así, cuando el usuario seleccione una respuesta con factor de certeza negativo, el sistema en realidad tomará como respuesta la otra respuesta posible, con el mismo CF seleccionado, pero esta vez positivo. La utilidad de tener activada esta opción creo que está bastante clara. Ejemplo: si el usuario selecciona como respuesta "si", con CF= -0.3, en realidad lo que está respondiendo es "no" con CF=0.3.

NOTA IMPORTANTE: Esta "inversión" de valor y CF, el sistema únicamente la realizará cuando sea el usuario quien introduzca el CF en sus respuestas. En ningún otro momento del razonamiento se volverá a realizar esta operación, por lo que si durante el razonamiento, por ejemplo, una regla vuelve a cambiar el CF de algún hecho convirtiéndolo en negativo, el sistema NO realizará la inversión. Al igual que si el CF de una pregunta viene predefinido por la BC, y este es negativo, el sistema TAMPOCO realizará la inversión.

Fundamentos de HasSIE

HasSIE comparte la mayoría de su sintaxis con ESIE, por lo que todo aquel que haya trabajado con ESIE no tendrá ningún problema para adaptarse a HasSIE.

Objetivo

La definición del objetivo de la BC es obligatorio en HasSIE. Si tenemos en cuenta que HasSIE no realiza razonamiento hacia atrás, esto puede parecer confuso, pero así se asegura la compatibilidad con las BC de ESIE. HasSIE, una vez demostrados todos los hechos posibles con las reglas disponibles, busca entre los hechos demostrados el objetivo, y si lo encuentra lo muestra en el informe final. La definición del objetivo se realiza de la siguiente forma:

goal is <atributo>

Respuesta del Sistema

Una vez que HasSIE termina con el proceso de razonamiento y busca y encuentra el objetivo (goal), muestra en el informe final dicho objetivo anteponiéndole un mensaje que podemos especificar con la sentencia answer.

answer is/are "texto" <atributo>

Al igual que el objetivo (goal), la respuesta del sistema también es de obligada definición en HasSIE. Además, el atributo del answer, debe corresponderse obligatoriamente con el atributo del goal. Aun así, si en nuestra BC no nos interesa demostrar ningún objetivo(algo muy probable), podemos indicar un atributo cualquiera para el goal y el answer, aunque sea un hecho indemostrable.

Respuestas válidas

Para especificar qué respuestas son válidas, usaremos la sentencia:

legalanswers is/are <valor> <valor> ... *

Donde <valor> indica una respuesta válida. La definición de Legalanswers, al igual que goal y answer, es de obligatorio cumplimiento. Además, HasSIE no permite más de 10 respuestas válidas. Estas restricciones son debidas a que en HasSIE las preguntas no se responden mediante el teclado, sino mediante el ratón, pinchando en aquellas respuestas que queramos.

Otras restricciones:

Preguntas (Hechos) e Incertidumbre

Las preguntas en HasSIE tienen el siguiente formato:

question <atributo> is/are "<texto de la pregunta>" [CF= valor ]

En nuestra BC, si lo deseamos, podemos indicar el Factor de Certeza que tendrá el hecho (una vez respondida la pregunta), para ello tan solo tendremos que añadírselo a la sentencia question. Ejemplo:

question ejercicio is "¿El ejercicio está bien o mal?" [CF=0.8]

Si nosotros en las preguntas (questions) no indicamos el factor de certeza, lo tendrá que hacer el usuario mediante una barra de desplazamiento que podrá modificar a su gusto mientras responde a las preguntas. Obviamente, si nosotros indicamos el CF en la BC, el usuario no podrá ni visualizar ni modificar el CF cuando responda a la pregunta.

Hay que tener cuidado al indicar el CF, pues como separador de decimales debemos usar el punto, nunca la coma. Las siguientes formas de indicar el CF son erróneas: [CF=0,8] y [CF=0'8]. No creo que haga falta decir que el CF debe estar comprendido entre -1 y 1.

Reglas e Incertidumbre

En HasSIE las reglas se definen de la siguiente manera:

IF <atributo1> IS/ARE <valor> AND <atributo2> IS/ARE <valor> .... THEN <atributo> IS/ARE <valor> [CF= valor ]

Como se puede ver, en las reglas también podemos indicar el factor de certeza de la regla mediante la sentencia [CF= valor ]. Si no le asignamos factor de certeza a una regla, el sistema le asignará el valor 1 por defecto. En HasSIE, cada regla puede tener un máximo de 30 operandos, es decir, un máximo de 30 pares atributo-valor.

Comentarios

En HasSIE se pueden introducir comentarios en la zona de la BC que queramos. Ejemplo:

Aquí escribo lo que quiero...
If a is si and b is no then c is si sigo escribiendo lo que quiero....
y aquí también escribo lo que quiero legalanswers are si no *

Los únicos requisitos que tienen que tener los comentarios es no interferir en ninguna sentencia, y NO usar palabras reservadas (véase apéndice: palabras reservadas). De todos modos, para no tener problemas con el uso de palabras reservadas en los comentarios, se recomienda que se entrecomillen, ejemplo:

"Aquí escribo lo que quiero, hasta uso palabras reservadas como then o if " goal is nota

Aun con todo, se debe tener especial cuidado con símbolos reservados como el asterisco (*), que no se puede introducir en ningún comentario (ni siquiera entrecomillado), y con el cierre correcto de comillas (dejarnos unas comillas abiertas provocará un error en el análisis de la BC).

Indeterminación

Las indeterminaciones se producen cuando estamos totalmente convencidos de que un hecho es, por ejemplo, falso (cf = -1), y por otro lado una regla nos indica que el hecho es cierto sin ninguna duda (cf = 1). HasSIE es capaz de detectar el problema e indicárnoslo. (véase error nº28)

Para comprobarlo se puede ejecutar la BC llamada "indeter.esi", en el directorio de HasSIE.

Un Ejemplo Concreto

A continuación se muestra un ejemplo de BC llamado "notas2.esi" , que se encuentra en el mismo directorio que HasSIE:

Ejemplo de notas adaptado a las características de Hassie
Nota: Para esta BC, se recomienda marcar la propiedad de
razonamiento "Invertir valor y CF cuando el usuario introduzca un CF>0"

goal is nota

answer is "La calificación final es: " nota

Si los dos exámenes han salido bien...
if ejercicio1 is bien
and ejercicio2 is bien
then nota is sobresaliente [cf=0.7]

if ejercicio1 is bien
and ejercicio2 is bien
then nota is notable [cf=0.9]

Si uno ha salido bien y otro mal...
if ejercicio1 is mal
and ejercicio2 is bien
then nota is aprobado [cf=0.5]

if ejercicio1 is mal
and ejercicio2 is bien
then nota is suspenso [cf=0.5]

if ejercicio1 is bien
and ejercicio2 is mal
then nota is aprobado [cf=0.5]

if ejercicio1 is bien
and ejercicio2 is mal
then nota is suspenso [cf=0.5]

Si los dos nos han salido mal....
if ejercicio1 is mal
and ejercicio2 is mal
then nota is suspenso [cf=0.9]

if ejercicio1 is mal
and ejercicio2 is mal
then nota is aprobado [cf=0.1]

Si el profesor es bueno...
if profesor is bien and nota is aprobado then nota is aprobado [cf=1]
if profesor is bien and nota is aprobado then nota is suspenso [cf=-1]
if profesor is bien and nota is sobresaliente then nota is sobresaliente [cf=1]
if profesor is bien and nota is sobresaliente then nota is notable [cf=-1]

Si el profesor es malo...
if profesor is mal and nota is suspenso then nota is aprobado [cf=-1]
if profesor is mal and nota is suspenso then nota is suspenso [cf=1]
if profesor is mal and nota is notable then nota is sobresaliente [cf=-1]
if profesor is mal and nota is notable then nota is notable [cf=1]

question ejercicio1 is " ¿El primer examen lo hiciste bien o mal?"
question ejercicio2 is " ¿El segundo examen lo hiciste bien o mal?"
question profesor is " ¿Cómo crees que es el profesor corrigiendo?"

legalanswers are bien mal *

Apéndice: Aspectos a Considerar

Palabras Reservadas

A Continuación se expone la lista de palabras y símbolos reservados en HasSIE:

legalanswers
answer
goal;
*
is
are
if
and
then
[cf = ..]
question

Manejo de Errores

NOTA IMPORTANTE: HasSIE no permite que ninguna variable, ninguna respuesta válida ni el atributo de goal o answer tengan el mismo nombre que una palabra reservada.

A continuación se exponen los 29 tipos de errores diferentes que puede controlar HasSIE:

1. Error al abrir fichero: Asegúrese de que está en formato ASCII y no excede el tamaño permitido
2. Error al salvar fichero: Motivo desconocido
3. Error: número impar de comillas, asegúrese de cerrar todas las comillas que abra
4. Error: No se ha encontrado GOAL
5. Error: En la BC sólo debe existir un GOAL
6. Error en la definición del Goal
7. Error: No se ha encontrado ANSWER
8. Error: En la BC sólo debe existir un ANSWER
9. Error en la definición del Answer
10. Error en la definición de Legalanswers
11. Error en la definición de Legalanswers: Compruebe que no se repiten legalanswers,que se ha definido más de una legalanswer, y que no ha usado ninguna palabra reservada dentro de las legalanswers.
12. Error en la definición de Legalanswers: El número máximo de legalanswers es 10.Asegurese de cerrar correctamente la definición con *
13. Error en la definición del Question. Recuerde:question <variable> is/are "<text>" [CF=<valor>]
14. Error: No hay ninguna question
15. Error: Uso indebido de el símbolo reservado * (asterisco)
16. Error: El factor de certeza (CF) debe estar comprendido entre -1 y 1
17. Error: Ha usado dos variables con el mismo nombre en dos question diferentes.
18. Error: No existe ninguna Regla en la BC.
19. Error en la definición de la Regla.
20. Error en la definición de la Regla nº <x>
21. Error en la definición del consecuente de la Regla nº <x>
22. Error: El CF debe estar comprendido entre -1 y 1, véase regla nº <x>
23. Error en la definición del CF de la regla. Ejemplos de ayuda:Bien -->[CF=0.4] Mal -->[CF=0,4] ó [CF=0'4]
24. Uso indebido de palabras reservadas: No hay concordancia entre nº de THENs y nº de Reglas
25. Uso indebido de palabras reservadas: Encontrada palabra reservada, del tipo IS ó ARE, fuera de contexto.
26. Error: Todas las reglas que en su antecedente hagan referencia a una variable obtenida por una question, debe trabajar con valores que se encuentren dentro de las legalanswers.
27. Debe seleccionar una respuesta 28. Error: Se ha producido una INDETERMINACIÓN, el CF de la regla contradice totalmente al CF del consecuente antes de disparar la regla.
29. No existe contenido analizable en la Base de Conocimiento

Notas sobre el motor de inferencia de HasSIE

A continuación se darán unos breves apuntes de cómo funciona el motor de inferencia de HasSIE.

Al contrario de lo que se podría suponer, HasSIE no pregunta al usuario todas las questions que tenga la BC, sino solamente aquellas que le sean útiles a la hora de disparar una regla. Esto quiere decir, que si insertamos una question en la BC, y el atributo asignado no se encuentra en ninguna regla (ni en el antecedente ni en el consecuente), HasSIE no preguntará al usuario por el valor de ese atributo. Del mismo modo, si ese atributo se encuentra en el antecedente de una regla que HasSIE ya ha demostrado que no puede disparar, HasSIE tampoco preguntará por el valor de dicho atributo.

HasSIE recorre la base de reglas, primero comprobando si son disparables (unificación), es decir, si sus antecedentes se encuentran en la base de hechos y coinciden los tipos, y después comprobando que ninguno de sus antecedentes tiene un CF menor o igual que cero.

Una vez que HasSIE comprueba que la regla es aplicable, procede al disparo de la regla, y dependiendo de si el consecuente existía en la base de hechos o no, modificará un hecho o añadirá un nuevo hecho a la BC.

HasSIE además va "marcando" aquellas reglas que ya han sido disparadas, y también almacena el orden en el que se han disparado (muy útil para el informe final). HasSIE continuará intentando disparar alguna regla hasta que la base de hechos deje de cambiar (no solo deje de aumentar, sino también hasta que dejen de cambiar los valores y CF de los hechos ya existentes).

De todos modos, la mejor forma de comprobar cómo funciona el motor de inferencia de HasSIE, es poniéndolo a prueba.