Sistema experto

Transcription

Sistema experto
Sistema experto: KingsHelper 08
David García Sánchez
Javier García Zurdo
María De Lozoya Nombela
Estudiante Ing. Telecomunicación
Universidad Carlos III de Madrid
Av. de la Universidad 30
28911 Leganés (Madrid)
[email protected]
Estudiante Ing. Telecomunicación
Universidad Carlos III de Madrid
Av. de la Universidad 30
28911 Leganés (Madrid)
[email protected]
Estudiante Ing. Telecomunicación
Universidad Carlos III de Madrid
Av. de la Universidad 30
28911 Leganés (Madrid)
[email protected]
RESUMEN
El objetivo de este trabajo es la realización de un sistema experto
basado en CLIPS, que nos aconsejará acerca de cuales son los
mejores regalos que podemos comprar estas Navidades.
Categorías y Descriptores
I.2.1 [Computing Methodologies]: Artificial
Intelligence – Applications and expert systems.
Términos Generales
Design, Human factors
Palabras clave
CLIPS, Sistema experto, regalos, KingsHelper, árbol
1. INTRODUCTION
Se considera a alguien un experto en un problema cuando este
individuo tiene conocimiento especializado sobre dicho problema.
En el área de los (SE) a este tipo de conocimiento se le llama
conocimiento sobre el dominio. La palabra dominio se usa para
enfatizar que el conocimiento pertenece a un problema específico.
[1]
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. Este tipo de
modelos de conocimiento por ordenador ofrece un extenso campo
de posibilidades en resolución de problemas y en aprendizaje. Su
uso se extenderá ampliamente en el futuro, debido a su importante
impacto sobre los negocios y la industria.[2]
Aplicaciones
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) Este trabajo implica 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.
Además los SE también se aplican en la contabilidad en apartados
como: Auditoria(es el campo en el que más aplicaciones de SE se
esta realizando) Fiscalidad, planificación, análisis financiero y la
contabilidad financiera.
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.
Limitaciones
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
y de difícil acceso a información no estructurada. [3]
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 el.
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.
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. [4]
1.1 Tareas que realiza un sistema experto
1.1.1 Monitorización
La monitorización es un caso particular de la interpretación, y
consiste en la comparación continua de los valores de las señales
o datos de entrada y unos valores que actúan como criterios de
normalidad o estándares. En el campo del mantenimiento
predictivo los Sistemas Expertos se utilizan fundamentalmente
como herramientas de diagnóstico. Se trata de que el programa
pueda determinar en cada momento el estado de funcionamiento
de sistemas complejos, anticipándose a los posibles incidentes que
pudieran acontecer. Así, usando un modelo computacional del
razonamiento de un experto humano, proporciona los mismos
resultados que alcanzaría dicho experto.
1.1.2 Diseño
Diseño es el proceso de especificar una descripción de un
artefacto que satisface varias características desde un número de
fuentes de conocimiento.
El diseño se concibe de distintas formas:
- El diseño en ingeniería es el uso de principios científicos,
información técnica e imaginación en la definición de una
estructura mecánica, máquina o sistema que ejecute funciones
específicas con el máximo de economía y eficiencia.
- El diseño industrial busca rectificar las omisiones de la
ingeniería, es un intento consciente de traer forma y orden visual
a la ingeniería de hardware donde la tecnología no provee estas
características.
Los SE en diseño ven este proceso como un problema de
búsqueda de una solución óptima o adecuada. Las soluciones
alternas pueden ser conocidas de antemano o se pueden generar
automáticamente probándose distintos diseños para verificar
cuáles de ellos cumplen los requerimientos solicitados por el
usuario, ésta técnica es llamada “generación y prueba”, por lo
tanto estos SE son llamados de selección. En áreas de aplicación,
la prueba se termina cuando se encuentra la primera solución; sin
embargo, existen problemas más complejos en los que el objetivo
es encontrar la solución óptima.
1.1.3 Planificación
La planificación es la realización de planes o secuencias de
acciones y es un caso particular de la simulación. Está compuesto
por un simulador y un sistema de control. El efecto final es la
ordenación de un conjunto de acciones con el fin de conseguir un
objetivo global.
Los problemas que presentan la planificación mediante SE son los
siguientes:
- Existen consecuencias no previsibles, de forma que hay que
explorar y explicar varios planes.
- Suelen existir interacciones entre planes de subobjetivos
diversos, por lo que deben elegirse soluciones de compromiso.
- Trabajo frecuente con incertidumbre, pues la mayoría de los
datos con los que se trabaja son más o menos probables pero no
seguros.
- Es necesario hacer uso de fuentes diversas tales como bases de
datos.
1.1.4 Control
Un sistema de control participa en la realización de las tareas de
interpretación, diagnóstico y reparación de forma secuencial. Con
ello se consigue conducir o guiar un proceso o sistema. Los
sistemas de control son complejos debido al número de funciones
que deben manejar y el gran número de factores que deben
considerar; esta complejidad creciente es otra de las razones que
apuntan al uso del conocimiento, y por tanto de los SE.
Cabe aclarar que los sistemas de control pueden ser en lazo
abierto, si en el mismo la realimentación o el paso de un proceso a
otro lo realiza el operador, o en lazo cerrado si no tiene que
intervenir el operador en ninguna parte del mismo. Reparación,
correcta o terapia.
La reparación, corrección, terapia o tratamiento consiste en la
proposición de las acciones correctoras necesarias para la
resolución de un problema. Los SE en reparación tienen que
cumplir diversos objetivos, como son: Reparación lo más rápida y
económicamente posible. Orden de las reparaciones cuando hay
que realizar varias. Evitar los efectos secundarios de la
reparación, es decir la aparición de nuevas averías por la
reparación.
1.1.5 Simulación
La simulación es una técnica consistente en crear modelos
basados en hechos, observaciones e interpretaciones, sobre la
computadora, a fin de estudiar el comportamiento de los mismos
mediante la observación de las salidas para un conjunto de
entradas. Las técnicas tradicionales de simulación requieren
modelos matemáticos y lógicos que describen el comportamiento
del sistema bajo estudio.
El empleo de los SE para la simulación viene motivado por la
principal característica de los SE, que es su capacidad para la
simulación del comportamiento de un experto humano, que es un
proceso complejo.
En la aplicación de los SE para simulación hay que diferenciar
cinco configuraciones posibles:
1.
Un SE puede disponer de un simulador con el fin de
comprobar las soluciones y en su caso rectificar el
proceso que sigue.
2.
Un sistema de simulación puede contener como parte
del mismo a un SE y por lo tanto el SE no tiene que ser
necesariamente de simulación.
3.
Un SE puede controlar un proceso de simulación, es
decir que el modelo está en la base de conocimiento del
- Existen muchas consideraciones que deben ser valoradas o
incluirles un factor de peso.
SE y su evolución es función de la base de hechos, la
base de conocimientos y el motor de inferencia, y no de
un conjunto de ecuaciones aritmético – lógicas.
4.
Un SE puede utilizarse como consejero del usuario y
del sistema de simulación.
5.
Un SE puede utilizarse como máscara o sistema frontal
de un simulador con el fin de que el usuario reciba
explicación y justificación de los procesos.
1.1.6 Instrucción
Un sistema de instrucción realizara un seguimiento del proceso de
aprendizaje. El sistema detecta errores ya sea de una persona con
conocimientos e identifica el remedio adecuado, es decir,
desarrolla un plan de enseñanza que facilita el proceso de
aprendizaje y la corrección de errores.
1.1.7 Recuperación de información
Los Sistemas Expertos, con su capacidad para combinar
información y reglas de actuación, han sido vistos como una de
las posibles soluciones al tratamiento y recuperación de
información, no sólo documental. La década de 1980 fue prolija
en investigación y publicaciones sobre experimentos de este
orden, interés que continua en la actualidad.
Lo que diferencia a estos sistemas de un sistema tradicional de
recuperación de información es que éstos últimos sólo son
capaces de recuperar lo que existe explícitamente, mientras que
un Sistema Experto debe ser capaz de generar información no
explícita, razonando con los elementos que se le dan. Pero la
capacidad de los SE en el ámbito de la recuperación de la
información no se limita a la recuperación. Pueden utilizarse para
ayudar al usuario, en selección de recursos de información, en
filtrado de respuestas, etc. Un SE puede actuar como un
intermediario inteligente que guía y apoya el trabajo del usuario
final. [6]
2. DESCRIPCION DEL PROBLEMA
Se acerca la Navidad, y nos guste o no, son fechas en las que las
compras están a la orden del día. Estas compras se intensifican
cuanto más se aproxima el día de Reyes. Es un día que gusta tanto
a niños como a mayores, si bien resulta obvio que son los más
pequeños los que viven este día con más ilusión. La ilusión de
recibir regalos es muy grande, pero a la mayoría también nos hace
ilusión que las cosas que regalamos sean del agrado de quien lo
recibe.
Lo mencionado anteriormente es muy bonito, pero, ¿Cuántos
quebraderos de cabeza nos llevamos a la hora de las compras?
¿Cuántos días hemos perdido dando vueltas por los centros
comerciales sin saber que comprar? En resumen, es muy difícil
saber que regalar, a tus padres, hermanos, la novia… Para
solucionar este problema (a priori trivial) pero que nos afecta a la
mayoría, hemos decidido desarrollar el “KingsHelper 08” Esta
herramienta, será nuestro ayudante particular en la búsqueda de
regalos.
“KingsHelper 08” será un sistema experto basado en CLIPS, que
mediante la realización de sencillas preguntas, nos indicará cuales
son los regalos más adecuados que podemos hacer.
3. KingsHelper 08
En esta sección pasaremos a detallar algunos aspectos del diseño
y su posterior implementación en el código de CLIPS.
3.1 Diseño
Lo primero a tener en cuenta a la hora de diseñar KingsHelper
08, es que este está diseñado a partir de un diagrama de árbol en
el que cada nodo tiene asociada una pregunta y todos sus nodos
descendentes están ligados al valor de la respuesta de esta. En el
extremo final, están las hojas, y es aquí donde nuestro sistema
encuentra el resultado final a la búsqueda del regalo.
En un principio el diseño del árbol se realizo de forma que cada
nodo solo tuviese como máximo dos nodos descendientes, es
decir, que cada pregunta sólo tuviese dos respuestas (si y no).
Ante la ineficiencia y la dificultad que suponía la formulación de
preguntas de respuesta si o no que diesen una sensación de
inteligencia, este primer diseño en forma de árbol binario fue
reestructurado de forma que las preguntas pudiesen ser
respondidas por dos más palabras diferentes.
A continuación se muestra una pequeña parte de la versión
definitiva del árbol seguido para el diseño de KingsHelper 08.
Concretamente las pertenecientes a las respuestas de un regalo
para niños, educativo y que potencie su imaginación (figura 1) y
regalo, juguete que pueda ser usado en la calle (figura 2)
3.
DEFFACTS KNOWLEDGE
conocimiento)
BASE
(base
de
3.2.1 DEFTEMPLATE DEFINITIONS
imaginacion
¿le
En este bloque definimos un constructor deftemplate creando
una plantilla de forma similar a las estructuras en C.
En nuestro caso definimos una plantilla para regla, la cual estará
formada por dos elementos multislot.
gust a pintar,
colorear etc.?
(deftemplate regla
si
(multislot if)
no
(multislot then))
¿cuadernos par a
¿
colore a r u ot ra c osa ?
Medi terrane o?¿o prefiere algo
ti po mecan o?
3.2.2 INFERENCE ENGINE RULES
que le parecen los j uegos de
Este bloque será el encargado de controlar la ejecución global
de las reglas, decidiendo qué regalas deben ejecutarse y cuándo.
otro
cuadern os
mecano
mediterraneo
- Aprende a
colorear como si
estuvieses en primero
- Pinturas Di sney
-Pin to Yo
-
Rot ul adores Carioca
Joy
- Est uche de t emp eras
y acuarelas
- Mini Nova
- As tronova
-Choconova
-Tetris
blocks
EDUCA
-M ECANO
En él, definimos ocho reglas. Las ocho reglas son las necesarias
para: realizar las preguntas, obtener el valor de las respuestas,
decidir cual es el siguiente nodo en función del nodo en el que
se está y la respuesta obtenida, evaluar si la respuesta es dada
por teclado es válida o no, y las correspondientes a la
introducción del inicio del programa y el final.
Ejemplos:
Figura 1
(defrule ask-question-no-legalvalues ""
(declare (salience 10))
calle
(not (legalanswers $?))
?f1 <- (goal es ?variable)
¿que deporte l e
gusta mas?
?f2 <- (question ?variable ? ?text)
futbol
balo ncesto
tenis
=>
otros
(retract ?f1 ?f2)
- Bal on
- Balon
-equi pacio
n de t u
equipo
fav orit o
-equipacio
n de tu
equipo
favorit o
-Raqueta
de
tenis /pade
l/badminto
n
(format t "%s " ?text)
-Bici/equipa
miendo bici
-cometa
-patines
(assert (variable ?variable (read))))
(defrule ask-question-legalvalues ""
Figura 2
(declare (salience 10))
?f1 <- (goal es ?variable)
Como podemos ver, en las hojas encontramos los regalos que se
darán como solución al camino seguido por el usuario según vaya
respondiendo a las diferentes preguntas que le aparecerán en cada
nodo. Notar como a diferencia de la primera versión encontramos
preguntas con mas de dos respuestas y cada respuesta no se ve
limitada a un si o un no.
?f2
$?answers)
<-
(question
?variable
?
?text
=>
(retract ?f1)
(assert (legalanswers son ?answers))
(format t "%s " ?text)
3.2 Implementación
(printout t ?answers crlf)
Como ya hemos comentado la implementación del KingsHelper
08 ha sido realizada en CLIPS un leguaje ideal para la realización
de sistemas expertos. El código está formado por tres bloques:
(bind ?reply (read))
1.
DEFTEMPLATE DEFINITIONS
2.
INFERENCE ENGINE RULES (motor de inferencia)
(if (member (lowcase ?reply) ?answers)
then
(assert
?reply))
(retract ?f2)
(variable
?variable
else (assert (goal es ?variable))))
Que pertenece al fragmento del árbol:
¿que c la se de re ga l o
Tanto ask-question-no-legalvalues como ask-questionlegalvalues son las encargadas de imprimir las preguntas y a la
vez comprobar si los valores escritos por teclado son los
correctos para esa pregunta.
3.2.3 DEFFACTS KNOWLEDGE
e sta s bus ca ndo?
educativo
¿
Este bloque es el que contiene todas las preguntas escritas en
función de las reglas definidas en los boques anteriores.
que pote ncie sus
c onoci mi ento so su
i ma gina cion?
juguete
¿para que pue da j uga r
e n c a sa o e n l a c a lle ?
De acuerdo con las reglas anteriores la escritura de una pregunta
junto con su “situación” en el árbol es muy simple
4. Ejecución
;si inicio es si
(regla (if inicio es si and para_quien es nino)
(then edad es nino))
(regla (if inicio es si and para_quien es joven)
(then edad es joven))
(regla (if
adulto)
inicio
es
si
and
para_quien
es
(then edad es adulto))
(question para_quien es "¿para
regalo?" nino joven adulto)
quien
es
En esta sección vamos a realizar algunas simulaciones del
programa, a modo de ejemplos, para mostrar la funcionalidad del
mismo para un par de casos diferentes.
4.1 Simulación 1
Vamos a imaginar que queremos comprar un regalo para nuestra
novia, entonces, en base a los gustos que conocemos de ella,
pediríamos ayuda al “KingsHelper 08” y nos haría las siguientes
preguntas
el
El código anterior es el encargado de realizar la pregunta ¿Para
quién es el regalo? una vez se ha pulsado si para responder a la
pregunta ¿ha sido bueno este año? Y se corresponde con el
trozo del árbol siguiente
¿para quién es
el
regalo?
niños
¿que c la se de re ga lo
jovenes
a dult
os
¿qu e clas e de regalo
estás bus cando?
e st as busc a ndo?
¿qué
t e pa rece al go d e ropa
que p ueda usar a di ari o?
De esta forma si suponemos que el usuario escribe por teclado
“nino” se cumpliría la primera de las tres reglas pasando a
crearse la variable edad con el valor nino (subrayado). Una vez
esto se pasaría a la parte del código que cumpliese la condición
de “edad es nino” y volvería a formularse otra pregunta. En este
caso el bloque de código que se ejecutaría sería:
;si edad es nino
(regla (if edad es nino and clase_regalo
es educativo)
Como el programa es un ayudante de los Reyes Magos, la primera
pregunta para obtener regalos es evidente, y es haber sido bueno
durante el año.
(then tipo es educativo))
(regla (if edad es nino and clase_regalo
es juguete)
(then tipo es juguete))
(question clase_regalo es "¿que clase de
regalo estas buscando?" educativo juguete)
Posteriormente nos pregunta sobre la edad de la persona a regalar,
gustos, tipo de regalo que queremos hacer etc.
Así recorriendo las ramas del árbol, el ayudante nos indica que un
fular o un bolso serían buenos regalos.
4.2 Simulación 2
En esta segunda simulación vamos a imaginar que queremos
comprar un regalo para nuestro hermano pequeño. Sabemos que
le gustan los juegos de mesa, en los que jugar con sus amigos,
pero no le gustan los juegos de preguntas. Así una posible
ejecución del programa sería la siguiente:
CLIPS distingue mayúsculas y minúsculas (case-sensitive), igual
que el lenguaje C
.
5.2 Representación del conocimiento
CLIPS ofrece paradigmas heurísticos y procedurales para
representar el conocimiento.
5.2.1 Conocimiento heurístico: reglas
5. CLIPS
5.1 Qué es CLIPS
CLIPS (C Language Integrated Production System) es una
herramienta para el desarrollo de sistemas expertos (SE) creada
por la Software Technology Branch (STB), NASA/Lyndon B.
Johnson Space Center. Los orígenes de CLIPS se remontan a
1984.
Se diseñó para facilitar el desarrollo de software que modele el
conocimiento humano (expertise):
- Con propósitos específicos: alta portabilidad, bajo coste, y
facilidad de integración.
- CLIPS permite integración completa con otros lenguajes de
programación como C o Ada.
- Puede ser llamado desde un lenguaje procedural, realizando su
función y devolver el control al programa que le llamó.
- También se puede definir código procedural como funciones
externas llamadas desde CLIPS. Cuando el código externo
finaliza su ejecución devuelve el control a CLIPS.
CLIPS es un entorno completo para la construcción de SE
basados en reglas y/o objetos. La versión estándar de CLIPS
proporciona un entorno de desarrollo interactivo orientado a texto,
incluyendo una herramienta de depuración, ayuda on-line y un
editor integrado, aunque se han desarrollado interfaces visuales
para plataformas Macintosh, Windows 3.x y el sistema X
Window.
- Las reglas se utilizan para representar heurísticos que
especifican un conjunto de acciones a realizar para una situación
dada.
- El creador del SE define una colección de reglas que, en
conjunto, resuelven un problema.
- Se puede pensar que las reglas son como sentencias IF-THEN de
lenguajes procedurales como C o Ada. Sin embargo, las reglas
actúan más bien como sentencias SIEMPRE QUE-ENTONCES.
5.2.2 Conocimiento procedural: funciones y objetos.
Este tipo de conocimiento se expresa mediante funciones
definidas por el usuario (deffunctions), funciones genéricas y la
programación orientada a objetos (POO). Ésta en CLIPS soporta
las cinco características generalmente aceptadas: clases, mensajes,
abstracción, encapsulamiento, herencia y polimorfismo.
Es posible desarrollar software utilizando sólo reglas, sólo
objetos, o una mezcla de ambos. [5]
5.3. Características principales
Las características principales de CLIPS son:
- Representación del Conocimiento: CLIPS permite manejar
una amplia variedad de conocimiento, soportando tres paradigmas
de programación: el declarativo, el imperativo, y el orientado a
objetos. La programación lógica basada en reglas permite que el
conocimiento sea representado como reglas heurísticas que
especifican las acciones a ser ejecutadas dada una situación. La
POO permite modelar sistemas complejos como componentes
modulares. La programación imperativa permite ejecutar
algoritmos de la misma manera que en C, Java, LISP y otros
lenguajes.
- Portabilidad: CLIPS fue escrito en C con el fin de hacerlo más
portable y rápido, y ha sido instalado en diversos sistemas
operativos (Windows 95/98/NT, MacOS X, Unix) sin ser
necesario modificar su código fuente. CLIPS puede ser ejecutado
en cualquier sistema con un compilador ANSI de C, o un
compilador de C++. El código fuente de CLIPS puede ser
modificado en caso que el usuario lo considere necesario, con el
fin de agregar o quitar funcionalidades.
- Integrabilidad: CLIPS puede ser embebido en código
imperativo, invocado como una sub-rutina, e integrado con
lenguajes como C, Java, FORTRAN y otros. CLIPS incorpora un
completo lenguaje orientado a objetos (COOL) para la
elaboración de sistemas expertos. Aunque está escrito en C, su
interfaz más próxima se parece a LISP. Pueden escribirse
extensiones a CLIPS sobre C, y al contrario, CLIPS puede ser
llamado desde C. CLIPS puede ser extendido por el usuario
mediante el uso de protocolos definidos.
- Desarrollo Interactivo: La versión estándar de CLIPS provee
un ambiente de desarrollo interactivo y basado en texto; este
incluye herramientas para la depuración, ayuda en línea, y un
editor integrado. Las interfaces de este ambiente tienen menús,
editores y ventanas que han sido desarrollados para MacOS,
Windows 95/98/NT, X Window, entre otros.
- Verificación/Validación: CLIPS contiene funcionalidades que
permiten verificar las reglas incluídas en el sistema experto que
está siendo desarrollado, incluyendo diseño modular y
particionamiento de la base de conocimientos del sistema,
chequeo de restricciones estático y dinámico para funciones y
algunos tipos de datos, y análisis semántico de reglas para
prevenir posibles inconsistencias.
- Documentación: En la página Web oficial de CLIPS se
encuentra una extensa documentación que incluye un Manual de
Referencia y una Guía del Usuario.
- Bajo Costo: CLIPS es un software de dominio público. [6]
5.4 Estructura de un programa en CLIPS
El shell (parte de CLIPS que realiza inferencias o razonamiento)
provee los elementos básicos de un SE:
5.4.1. Memoria global de datos (memoria de trabajo,
MT): conocimiento factual (fact-list e instancelist). Es una parte
de la memoria del ordenador que se utiliza para almacenar los
datos recibidos inicialmente para la resolución de un problema.
Contiene conocimiento sobre el caso concreto en que se trabaja.
También se registrarán en ella las conclusiones intermedias y los
datos generados en el proceso de inferencia. Al memorizar todos
los resultados intermedios, conserva el vestigio de los
razonamientos efectuados; por lo tanto, se puede utilizar explicar
las deducciones y el comportamiento del sistema.
5.4.2. Base de conocimiento (knowledge base): es un
tipo especial de base de datos para la gestión del conocimiento.
Provee los medios para la recolección, organización y
recuperación computarizada de conocimiento.
El más importante aspecto de una base de conocimiento es la
calidad de la información que esta contiene. Las Mejores Bases de
Conocimiento tienen artículos cuidadosamente redactados que se
mantiene al día, un excelente sistema de recuperación
información (Motor de Búsqueda), y un delicado formato
contenido y estructura de clasificación. Una Base
Conocimiento puede usar una ontología para especificar
estructura (tipos de entidades y relaciones) y su esquema
clasificación. Una ontología, junto con un grupo de instancias
sus clases constituyen una Base de Conocimiento.
de
de
de
su
de
de
Determinando que tipo de información es capturada, y donde se
encuentra la información en una base de conocimiento es algo que
es determinado por los procesos que respaldan al sistema. Una
estructura robusta de procesos es la columna vertebral de
cualquier Base de Conocimiento. Algunas Bases de Conocimiento
tienen un componente de inteligencia artificial. Este tipo de Bases
de Conocimiento pueden sugerir soluciones a problemas
esporádicos en la retroalimentación por el usuario, y son capaces
de aprender de la experiencia (sistemas expertos). Representación
de Conocimiento, Razonamiento automatizado y argumentación
son las áreas activas de la investigación de la inteligencia
artificial.
5.4.3. Motor de inferencia (inference engine): es un
programa que controla el proceso de razonamiento que seguirá el
sistema experto. Utilizando los datos que se le suministran,
recorre la base de conocimientos para alcanzar una solución. La
estrategia de control puede ser de encadenamiento progresivo o de
encadenamiento regresivo. En el primer caso se comienza con los
hechos disponibles en la base de datos, y se buscan reglas que
satisfagan esos datos, es decir, reglas que verifiquen la parte SI.
Un programa escrito en CLIPS puede consistir en reglas, hechos y
objetos.
Un SE basado en reglas escrito en CLIPS es un programa dirigido
por los datos (data driven), es decir, hechos y objetos. Las reglas
pueden matchear con objetos y hechos, aunque los objetos
pueden usarse por sí solos (mediante el envío de mensajes) sin
utilizar el motor de inferencia. [7]
5.5 Ejemplo de CLIPS
Como otros lenguajes para sistemas expertos, CLIPS trabaja con
reglas y hechos. Algunos hechos pueden hacer que una regla sea
aplicable. Una regla aplicable se activa. En principio las reglas y
hechos se crean definiéndolos, como se muestra a continuación:
(deffacts personas_empadronadas
(persona (nombre "Manolo”) (edad 54))
(persona (nombre "Ignacio”) (edad 18))
(persona (nombre “Marisa”) (edad 34))
)
En el fragmento de código de arriba se han definido 3 hechos:
- Existe un objeto de la clase persona con nombre "Manolo" y
edad 54.
- Existe un objeto de la clase persona con nombre "Ignacio" y
edad 18.
- Existe un objeto de la clase persona con nombre "Marisa" y edad
34.
(defrule censar
(persona (nombre ?n) (edad ?e))
(test (> ?e 17))
=>
(assert (elector (nombre ?n)))
)
6. REFERENCIAS
[1] Viejo Hernando Diego (2003). Sistemas expertos. Consultado
en
06,
04,
2004
en
http://www.divulgaia.com/cursos/cursos.xml?numero=2&nombre=2003-926a&numLecc=1.
En el fragmento de código de arriba se ha definido una regla:
[2] Samper Márquez Juan José (2004). Introducción a los sistemas
expertos.
Consultado
en
06,
03,
2004
en
http://www.redcientifica.com/doc/doc199908210001.html.
- Para todo objeto de la clase persona con nombre n y edad e, si e
es mayor que 17, existe un objeto de la clase elector con nombre
n. [6]
[3] Félix Justo (2004). Aplicaciones, ventajas y limitaciones de
los sistemas expertos. Consultado en 06, 04, 2004 en
http://efelix.iespana.es/efelix/expertaplicaciones.htm.
5.6 Derivados de CLIPS
[4] Montes Cerra Maria Clara (2003). Sistemas expertos.
Consultado
en
06,
05,
2004
en
http://dis.eafit.edu.co/labs/labgic/ARTICULOS_%20PUBLICAR/
Sistemas%20expertos.doc.
Una de las razones del amplio uso de CLIPS está en sus derivados
e interfaces con otros lenguajes, como:
- JESS: implementación de CLIPS en Java.
- FuzzCLIPS: incorpora a CLIPS la posibilidad de usar
razonamiento difuso.
- CLIPSMM: una interfaz libre de CLIPS con C++.
- PHLIPS: extensión para PHP.
- EHSIS: Implementación del lenguaje CLIPS con APIs
adicionales y documentación en castellano. [6]
[5] http://www.geocities.com/aitorsjs/html/clips.pdf
[6] http://es.wikipedia.org/wiki/CLIPS
[7] http://www.redcientifica.com/doc/doc199908210001.html

Documents pareils

Sistema experto: vendedor de coches

Sistema experto: vendedor de coches Establece una comunicación sencilla entre el usuario y el sistema. El usuario puede consultar con el sistema a través de menús, gráficos, etc., y éste le responde con resultados. También es interes...

Plus en détail