21 lenguajes - Sistemas Expertos

Download Report

Transcript 21 lenguajes - Sistemas Expertos

Lenguajes de Programación para
la construcción de SE
Maneras de Construir un Sistema
Experto
• Usando un lenguaje de programación
• En un Shell
Diseñando un lenguaje
• Una alfabeto (conjunto de símbolos)
• Un léxico (vocabulario)
• Reglas gramaticales
– Las cuales contaran con una semántica
– Una sintaxis
Diseñando un lenguaje
• Este lenguaje debe de ser sencillo de aprender
• Leer y entender.
• La escritura de las reglas y hechos deben ser
sencillas de trasladar desde el lenguaje natural
al nuevo lenguaje
• Sus elementos léxicos y reglas sintácticas
deben de hacer que el nuevo lenguaje resulte
natural (similar al lenguaje hablado)
• El lenguaje debe de servir a las necesidades de
la materia de interés del experto.
• El lenguaje necesita un que lenguaje que imite
la manera en que un experto
– Habla
– Piensa
– Opera
Traductor
Representación A
Lenguaje
Representación B
Lenguaje
Recordemos nuevamente que
• Todos los días usamos representaciones tales
como:
• Letras y números
• Ecuaciones matemáticas
• Señales viales
• Fotografías de personas, lugares y cosas
• Caricaturas y dibujos animados
• Alarmas audibles y señales auditivas
• Etc. [Artificial Intelligence Illuminated, B Chopin]
Todo esto lo podemos representar
formalmente en:
•
•
•
•
Lógica proposicional
Redes semánticas
Arboles de búsqueda
Marcos conceptuales
• Programación Lógica
– PROLOG
– GOLOG
• Programación Funcional
– LISP
– PYTON
– RUBY
• Programación Procedural
– C,JAVA
Programación Lógica
• Básicamente hace uso de la lógica de primer
orden
• Ejemplo de ello es el modus ponems
• Si A entonces B
• A->B
• Programación Declarativa
• Gira en torno a un objeto y la relación entre
este otro.
Programación Lógica
• Permite formalizar hechos del mundo real y
sus reglas
Aplicaciones de la Programación
Lógica
•
•
•
•
•
•
Demostrar hipótesis lógicas.
Bases de datos relacionales
Entender el lenguaje natural
Diseño automático
Análisis de estructuras bioquímicas
Análisis de estructuras macroscópicas como el
medio ambiente.
Programación Funcional
• Paradigma de la computación basado en la
utilización de funciones
• Tiene sus raíces en el calculo lambda
Función
Parámetros
entrada
Valor de retorno
Proceso
salida
Prolog
•
•
•
•
•
Viene del Francés Progammation Logique
Desarrollado en la Universidad Aix-Marseille I
Se basa en la definición de reglas y axiomas
Desarrolla una b
SWI-Prolog,CiaoProlog, GNUProlog,PSharp
GOLOG
• Desarrollado por Hector Levesque
• Acciones que desempeña GOLOG
(if,while,proc)
• Esta dividido en acciones primitivas
• Flujos
• Estados en el que se encuentra
• Mantiene una programación explicita del
mundo dinámico que esta siendo modelado
LISP
•
•
•
•
Su nombre significa List Processor
Desarrollado por John McCarthy en el MIT
Primer Lenguaje de la IA
Lenguajes Populares
– Common LISP y Scheme
• Desarrollo en Tiempo real
Prolog
1.
2.
3.
4.
5.
6.
¿Cuenta con un alfabeto?
¿Reglas gramaticales?
¿Menciona una regla gramatical de Prolog?
¿Es sencillo de aprender?
¿Es fácil de aprender?
¿El código de Prolog se lee de manera
natural?
Shell de un sistema experto
• Hoy en día son la forma mas común para el
desarrollo de Sistemas Expertos
• Un shell de un sistema experto básicamente
es un Sistema experto sin una base de
conocimiento.
• Un shell provee el sistema experto con el
motor de inferencia, la interfaz de usuario y el
sistema de explicación y algunas facilidades
para la adquisición del conocimiento.
Shell
Motor de
Inferencia
Sistema de
Explicación
Interfaz de Usuario
Usuario
Editor de Base de
Conocimiento
Shells vs Lenguajes de Programación
Características
Shell
Lenguaje de
Programación
Facilidad y
velocidad de uso
Alta
Baja
Estructura de la
Base de
Conocimiento y
razonamiento
Restringida por la
herramienta.
Se puede
desarrollar según
las necesidades.
Mantenimiento de
la base de
Conocimiento
Sencilla
De acuerdo a las
características del
software.
Interfaz
No siempre
amigable
Se tiene que
desarrollar
Eficiencia/Desempe Restringida por la
ño de la explicacion herramienta
Se puede
desarrollar según
las necesidades
CLIPS
•
•
•
•
C Language Integrated Production System
Es un Shell gratuito implementado en C
Provee un lenguaje para expresar las reglas
Usa principalmente razonamiento hacia
adelante para derivar conclusiones de un
conjunto de reglas.
• Creado en 1985
Caracteristicas Escenciales de CLIPS
• Representación del conocimiento: Tiene una
herramienta que soporta tres paradigmas de
la programación: orientado a objetos,
procedural y lógica.
• Portable: MACOS-X Windows,Windows
• Integración/extensibilidad: Se puede integrar
con C,Java,Fortran
• Desarrollo Interactivo: Debugger, editor
integrado, Interfaces graficas.
• Verificación/Validación: Con el propósito de la
validación de los SE.
– Soporte de diseño modular
– Particionado de la Base de conocimientos
– Verificación de argumentos de valores y funciones
– Análisis semántico de los patrones de la reglas
para prevenir inconsistencias.[1]
•
•
•
•
•
CLIPS> (assert (hoy es sabado))
<Fact-0>
Los hechos pueden enlistarse
CLISP> (facts)
F-0 (hoy es sabado)
• Los hechos pueden borrarse (retractarse)
• CLISP>(retract 0)
• CLISP> (facts)
• Para definir reglas
(defrule nombre_de_regla “comentarios”
Condicion
=>
accion
)
JESS
•
•
•
•
•
•
•
Java Expert System Shell
Java
Sistemas expertos basados en reglas.
Ernest Friedman Hill
API
Estructura similar a la LISP
Puede ser implementado en Eclipse
Arquitectura de JESS
Memoria Activa
Motor de
Inferencia
Comparador
de Patrones
Base de Reglas
Agenda
Motor de ejecución
Protégé
• Sirve para modelar aplicaciones basadas en
conocimiento
• Es una plataforma que soporta básicamente
dos manera de modelado de ontologías.
– Protege Frames
– Protege-OWL
• Los formatos que soporta son
• RDF (Resource Description Frames), RDFS, OSL
y XML Schema
•
•
•
•
Basado en Java
SWRLJessTab
Puede usar el motor de inferencia Jess
RacerProTG es un plugin que ofrece las
funcionalidades de razonamiento a Protégé
• Para visualizacion, OWLVIz y Jambalaya,etc.
CYC
• Es un proyecto de Inteligencia Artificial que
busca construir una Base de datos de
conocimiento general
• 1984-Cycorp
• CYC es un ejemplo de una sistema de
representación basado en marcos
• CYC hoy tiene mas de 100,000 diferentes
conceptos de todos los diferentes campos del
conocimiento humano.
• Tiene cerca de 400 relaciones diferentes
• CYC pude conocer hechos acerca de Dracula,
sabe que no existe pero incluso razonar acerca
de el.
• CYC entiende analogías, descubre nuevas
analogías examinándolas el mismo por las
similaridades entre estas.
• Sus creadores dicen que descubrió la analogía
entre el concepto familia y el concepto nación.
• 100,000,000 de reglas
• El agua causa humedad
Wolfram Alpha
• Motor de Búsqueda de Conocimiento
• Desarrollado por la empresa Wolfram
Research
• Lanzado en Mayo de 2009
• El usuario realiza consultas vía texto. El
buscado busca las respuesta en su base de
conocimiento
Wolfram Alpha
• Su meta es hacer todo el conocimiento
sistemático, inmediatamente computable y
accesible para todos.
• Dentro de sus propósitos tiene recolectar y
refinar toda la información objetiva. Es decir
sistematizar el conocimiento.
Ingresamos una búsqueda
Actividad
• Realizar un resumen, de los temas expuesto
hoy.
Por ejemplo
Lenguajes de Programación y Shells