Facultad de Ingeniería y Arquitectura 2017-II Ingeniería de Sistemas - Sistemas Expertos
De Lenguaje natural a Sistemas Expertos
Oscar Bazán Ch.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Clauses (Facts y Rules): Hechos y reglas.
Básicamente, hay sólo 2 tipos de frases que
utiliza el Visual Prolog: hechos y reglas.Estas
frases son conocidas en Visual Prolog como
clausulas. El corazón de un programa está hecho de cláusulas.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Ejemplo de una regla más extensa:
En lenguaje natural:
Ej7:
Diana es vegetariana y come sólo lo que su doctor
le dice que coma.
Podríamos plantear:
a. Si comida de menú son con vegetales?
b. Si la comida de menú está en la lista del doctor?
c. Conclusión: Si ambas respuestas son SI, Diana
puede ordenar de la comida del menú.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Interesante, ¿Y en Visual Prolog?
¿cómo sería esta regla?
diana_puede_comer(Alimento_de_menu):-
vegetal(Alimento_de_menu),
lista_de_doctor(Alimento_de_menu).
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
La coma es una conjunción y se lee ‘Y’.
Cuando ambos casos son V, entonces la
conclusión es V.
Esto va a depender de las reglas de conjunción
de lógica proposicional.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Ej8:
Una persona puede comprar un auto si a la
persona le gusta el auto y el auto está en venta.
Esto, podemos llevarlo a Visual Prolog con la
siguiente regla:
puede_comprar(Nombre, Modelo):-
persona(Nombre),
auto(Modelo),
le_gusta(Nombre, Modelo),
en_venta(Modelo).
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
PREDICATES:
Todo lo que utilicemos como hecho o regla debemos
declararlos. Esto se realiza en la zona de Predicates.
ESQUEMA:
PREDICATES
CLAUSES
GOAL
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Para el ejemplo anterior, dicha zona se
representaría así:
PREDICATES
nondeterm puede_comprar(symbol, symbol)
nondeterm persona(symbol)
nondeterm auto(symbol)
le_gusta(symbol, symbol)
en_venta(symbol) Nota:los términos nondeterm y symbol se verán más adelante.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
¿QUÉ IRÍA EN ZONA DE CLAUSES?. CLAUSES
puede_comprar(X,Y):-
persona(X), auto(Y), le_gusta(X,Y), en_venta(Y).
persona(kelly).
persona(judy).
persona(hellen).
persona(mark).
auto(amarillo).
auto(rojo).
le_gusta(kelly, rojo).
le_gusta(judy, pizza).
le_gusta(hellen, tennis).
le_gusta(mark, tennis).
en_venta(pizza).
en_venta(amarillo).
en_venta(rojo).
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
GOAL:
En la zona de goal, van la(s) pregunta(s) o
afirmaciones que se desean plantear, para saber
respuestas o deducciones.
Por ejemplo:
puede_comprar(Quien, Que).
puede_comprar(judy, Que).
puede_comprar(kelly, Que).
puede_comprar(Quien, rojo).
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Ejercicios para laboratorio:
Ej9:
Escribir reglas en Visual Prolog que den
significado a estas sentencias de lenguaje natural:
a. Una persona está de hambre si el
estómago de la persona está vacío.
b.A muchas personas les gusta trabajar si es
interesante y pagan bien.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
VARIABLES:
En una simple pregunta, tú puedes usar variables
para preguntarle a Visual Prolog. Siempre con la
primera letra en mayúscula.
Por ejemplo: ¿a quién le gusta el tenis?
le_gusta(X, tenis).
Si consta de varias palabras, separarlas con ’_’.
Por ejemplo:
le_gusta (Quien_sera_a_quien, tenis).
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Si el GOAL es le_gusta(Persona, tennis).
Visual Prolog muestra como respuesta:
Persona=ellen
Persona=mark
2 Solutions
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Puedes almacenar momentáneamente datos en
variables.
Ej10:
PREDICATES
nondeterm le_gusta(symbol,symbol)
CLAUSES
le_gusta(ellen,lectura).
le_gusta(john,computadoras).
le_gusta(john,badminton).
le_gusta(leonard,badminton).
le_gusta(eric,natacion).
le_gusta(eric,lectura).
Veamos a continuación el GOAL.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
le_gusta(Persona, lectura), le_gusta(Persona,
natacion).
Visual Prolog responderá:
Persona=eric
1 Solution
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
VARIABLES ANÓNIMAS:
En algún momento se utilizarán muchas variables y algunas
de las cuales no se desea saber sus resultados, en ese
caso se le debe dar un aviso al Visual Prolog de aquéllas
únicas variables requeridas.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Ej11:
PREDICATES
masculino(symbol)
femenino(symbol)
nondeterm padre_o_madre(symbol, symbol)
CLAUSES
masculino(bill).
masculino(joe).
femenino(sue).
femenino(tammy).
padre_o_madre(bill,joe).
padre_o_madre(sue,joe).
padre_o_madre(joe,tammy).
Estudiemos el GOAL..
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
¿Qué pasa si se usan variables comunes?.
GOAL
padre_o_madre(Padre_o_madre, X).
La respuesta de Visual Prolog sería:
Padre_o_madre=bill, X=joe
Padre_o_madre=sue, X=joe
Padre_o_madre=joe, X=tammy
3 Solutions
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Pero si se usara una variable anónima: GOAL
padre_o_madre(Padre_o_madre,_).
La respuesta de Visual Prolog sería:
Padre_o_madre=bill
Padre_o_madre=sue
Padre_o_madre=joe
3 Solutions
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
COMENTARIOS: /* Este es un ejemplo de comentario */
% Este es también otro
/************************************/
/* y este de 3 líneas */
/************************************/
/*Tú puedes también colocar comentarios dentro
de otros /*dentro de otros*/ como este */
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
NOMBRES DE PREDICADOS: Nombres Legales de
Predicados
Nombres llegales de
Predicados
fact [fact]
is_a *is_a*
has_a has/a
patternCheckList pattern-Check-List
choose_Menu_Item choose Menu Item
predicateName predicate<Name>
first_in_10 >first_in_10
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
ARGUMENTOS DE PREDICADOS: Si tu declaras
PREDICATES
Mi_predicado(symbol, integer)
Ya no necesitas declarar el domini, symbol e
integer existen.
Pero si deseas copiar tus propios tipos de
argumentos, sí deberías declararlos en el
dominio.
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
Ej12:
PREDICATES
mi_predicado(nom, num) Esto quiere decir que previamente se han
declarado, o sea:
DOMAINS
nom = symbol
num = integer
PREDICATES
mi_predicado(nom, num)
Facultad de Ingeniería y Arquitectura De lenguaje natural a Sistemas Expertos
FIN