Diagrama de temas
General
Curso de Sistemas Expertos
General
Los sistemas expertos son sistemas que piensan y razonan como un experto lo haría en una cierta especialidad o campo. Por ejemplo, un sistema experto en diagnóstico médico requeriría como datos los síntomas del paciente, los resultados de análisis clínicos y otros hechos relevantes, y, utilizando éstos, buscaría en una base de datos la información necesaria para poder identificar la correspondiente enfermedad. [. . .] Un Sistema Experto de verdad, no sólo realiza las funciones tradicionales de manejar grandes cantidades de datos, sino que también manipula esos datos de forma tal que el resultado sea inteligible y tenga significado para responder a preguntas incluso no completamente especificadas.
Objetivo del curso: el objetivo de este curso es aprender a desarrollar este tipo de sistemas, conociendo las herramientas y lenguajes de programación más actuales para desarrollar esta tarea.
Dr. Pedro Salcedo LagosTema 1
INTRODUCCION
VIDEOS DEL CURSO POLIMEDIA
Sistemas Expertos Parte I
Sistemas Expertos Ejercicio II
Sistemas Expertos Parte II
Sistemas Expertos Ejercicio II
Sistemas Expertos Ejercicio III
Referencia:
1) "Sistemas Expertos y Modelos de Redes Probabilísticas"
Autores: Enrique Castillo, José Manuel Gutiérrez, y Ali S. Hadi
Este libro es gratis y se puede descargar directo desde la página del autor en:
http://personales.unican.es/gutierjm/papers/BookCGH.pdf
Página personal del Autor, con varios otros libros sin costo relacionados con Redes Neuronales y Sistemas Expertos: http://personales.unican.es/gutierjm/
Tema 2
LENGUAJES DE PROGRAMACION PARA EL DESARROLLO DE SISTEMAS EXPERTOS O SISTEMAS BASADOS EN EL CONOCIMIENTO (SBC)
CLIPS
CLIPS es un entorno para desarrollar sistemas basados en el conocimiento. Su lenguaje incluye caracteristicas de los sistemas de reglas y de frames y permite la programacion funcional
Lenguaje JESS ( http://www.jessrules.com/ )
Jess es un motor de reglas de secuencias de comandos y un medio ambiente escrito completamente en Java, en los Laboratorios Nacionales Sandia , en Livermore, California. Jess es pequeño, liviano, y uno de los motores de reglas más rápidos disponibles. Usando Jess, usted puede construir un software en Java que tenga la capacidad de "razonar" por medio del conocimiento que se le proporciona en forma de reglas declarativas. Su lenguaje de scripting de gran alcance le da acceso a todos los APIs de Java. Jess incluye un entorno de desarrollo completo basado en el ganador del premio Eclipse.
PROLOG y DERIVADOS
El PROLOG, proveniente del francés PROgrammation en LOGique, es un lenguaje de programación lógico e interpretado, bastante conocido en el medio de investigación en Inteligencia Artificial.
Más información e historia del lenguaje en WIKIPEDIA
Direcciones importantes:
- Ciao-prolog compilador/Intérprete eficience distribuido bajo GPL/LGPL.
- Strawberry Prolog, compilador libre de Prolog
- Laboratorio de programación lógica de la Universidad Politécnica de Madrid.
- Tutorial gratuito de programación en Prolog
- Curso intermedio (gratuito) de programación en Prolog
- Learn Prolog Now! (tutorial gratuito)
SWI-Prolog
Home page de la empresa ( http://www.swi-prolog.org/ )
Donde bajar la version portable: ( http://portableapps.com/apps/development/swi-prolog_portable )
AQUI UN BUEN EJEMPLO (CON EL CODIGO FUENTE ) EN SWI-PROLOG
SISTEMA EXPERTO PARA LA DETECCION DE PLAGAS EN SEMBRADIOS
Fuente: Blog de Rolando Palermo "Como hacer SWI-PROLOG Ejecutable
Tema 3
Herramientas para el desarrollo de SE
Es posible realizar Sistemas Expertos de muy buenas prestaciones sin utilizar ninguna herramienta ni entorno específico de ayuda. Sin embargo, el tiempo requerido puede ser tan elevado que imposibilite económicamente su realización. Para estos casos han aparecido los entornos y las herramientas de programación. La elección de la herramienta depende en gran medida del tipo de problema a resolver. Si existe una herramienta que se adapte a él,
convendrá, en caso contrario, deberá realizarse todo el desarrollo en el código base, pero siembre después de haber desechado la posibilidad de hacerlo con alguna herramienta existente.
Hay entornos orientados a lenguajes de representación (PROLOG, OPS5)
que facilitan la implementación si nos limitamos al tipo de representación e
inferencia que soportan. El siguiente nivel (KEE, ART, NEXPERT o GoldWorks) incluye más facilidades de edición, representación e inferencia, junto con la posibilidad de apoyar el diseño del interfaz. Existen después entornos pensados específicamente para automatizar (siempre parcialmente) la adquisición del concoimiento (OPAL, SALT, ...).
UNA EXCELENTE HERRAMIENTA ES Kappa-PC
Kappa es un sistema de desarrollo que permite implementar aplicaciones en un entorno gráfico de alto nivel. Implementa dos paradigmas que son:
POO: (Programación Orientada a Objetos) Los objetos (clases e instancias) se utilizarán para representar el dominio del problema a resolver por la aplicación.
Reglas: El sistema de reglas servirá para representar el conocimiento experto. Cada regla especifica un conjunto de condiciones y un conjunto de conclusiones a las que se llega si las condiciones son ciertas. Las conclusiones pueden representar deducciones lógicas sobre la base de conocimiento o especificaciones de como cambia ésta con el tiempo. Cada regla se puede ver como un módulo independiente, de forma que se pueden construir sistemas de razonamiento de forma gradual.
Se puede descargar con el manual en:
http://www.megaupload.com/?d=5DC9F90O
EXPERTLAB
El siguiente software "Expertlab" es un programa de apoyo a la docencia, que utilizaremos para introducirnos en el tema y para realizar nuestras primeras prácticas. El sistema fue desarrollado en la Escuela Superior de Ingeniería Informática de la Universidad de Vigo, para sus clases en el laboratorio de Sistemas Expertos.
NEXPERT
Nexpert es una herramienta (coraza o shell) de propósito general para el desarrollo de sistemas expertos. Se basa en la combinación de reglas y objetos. En cierta forma es similar a Centaur, ya que los objetos de Nexpert se pueden considerar como un sistema de prototipos. Sin embargo, la forma en que interactuan estas 2 representaciones es diferente, ya que en vez de agrupar reglas dentro de objetos, estas 2 representaciones se ven como dos dimensiones del conocimiento que interactuan (se intersectan) entre si.
Interacción entre objetos y reglas:
- Las reglas operan sobre atributos de objetos.
- Las reglas pueden ser genéricas operando sobre clases o partes de objetos (pattern-matching).
- Al evaluar reglas se pueden heredar atributos de la jerarquía de clases/objetos y se pueden disparar los métodos para obtener valores y demons.
Tema 4
INTELIGENCIA ARTIFICIAL PRACTICA CON JAVA
( Practical Artificial Intelligence Programming With Java )
Este libro nos guía para desarrollar Sistemas Basados en el Conocimiento (SBC) y Sistemas Inteligentes utilizando el lenguaje de programación JAVA.
El libro es totalmente gratis y se puede descargar desde:
http://www.megaupload.com/?d=ZD4SDG9G
Dirección del Autor ( Mark Watson ) con otros libros de GRATIS :)
Recomiendo para este curso .. 'Loving Lisp - the Savy Programmer's Secret Weapon'
( Free for non-commercial and academic use: if you use the free PDF version )Tema 5
Drools - Eclipse
El poder generar a partir de Java un Sistema Experto, utilizando un Plugín que cuente ya con el motor de inferencia y con los principales mecanísmos de búsqueda, permiten disminuir el tiempo de desarrollo y dejar el proyecto abierto para seguir ampliandolo.
El plugin DROOLS esta desarrollado sobre la plataforma RCP Eclipse, utilizando todas las principales features a nivel vista y de interacción que ofrece este framework, además de usar widgets de JFace, las librerías GEF y Draw2D que se utilizan para generar los gráficos de la red RETE que se genera con la creación de las reglas, etc.
Página oficial: ( http://www.jboss.org/drools )
Una completa descripción la podemos encontrar en:
http://lucazamador.wordpress.com/2009/04/24/drools-eclipse-plugin-introduccion/
Pero para la instalación recomiendo
http://www.fuenteperez.es/blog/guia-rapida-de-jboss-drools-brms-40
http://download.jboss.org/jbosstools/updates/JBossTools-3.3.0.M1a/
http://lucazamador.wordpress.com/2010/02/13/como-configurar-el-plugin-de-drools-eclipse/Tema 7
MANEJO DE LA INCERTUDUMBRE EN LOS SISTEMAS EXPERTOS