interfases hombre maquina

Upload: renzo-giovanni-corzo-aguirre

Post on 10-Apr-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Interfases Hombre Maquina

    1/147

    Interfases Hombre-Mquina:Basadas en elLenguaje Natural

    AAAllleeejjjaaannndddrrrooo PPPeeeaaa AAAyyyaaalllaaa

    INSTITUTO POLITCNICO NACIONAL

  • 8/8/2019 Interfases Hombre Maquina

    2/147

    Alejandro Pe a Ayala

    Curs la licenciatura en Informtica en la UPIICSA del IPN. Posteriormente obtuvo el Diplomado enJava y Aplicaciones Web en el ITAM, la Especialidad y la Maestra en Inteligencia Artificial en laFundacin Arturo Rosenblueth. Actualmente es candidato al grado de Doctor en Ciencias de laComputacin por el Centro de Investigacin en Computacin del IPN, contando para ello del respaldo

    del CONACYT y del IPN a travs de una beca.Entre sus distinciones acadmicas estn: El haberse titulado por la opcin de escolaridad en 1981,conforme al reglamento del IPN. El reconocimiento hecho por el CONCACYT y el Diario de Mxicoen el evento: Los mejores estudiantes de Mxico generacin 1981, como el mejor estudiante en laLicenciatura en Informtica del IPN. Adems de haber obtenido el grado de de Maestra en InteligenciaArtificial con mencin honorfica. A la par de su desarrollo acadmico, Alejandro Pea ha ejercido lacarrera magisterial, profesional, de investigacin y ministerial.

    En 1981 ingres a la planta docente de la UPIICSA, donde actualmente es profesor titular C einvestigador. Durante el lapso 1989-1994 ofreci ctedra en la Maestra en Sistemas Computacionales

    del ITESM-CEM. Adems de haber hecho lo propio en las Maestras en Sistemas de Informacin yCiencias de la Computacin en la Fundacin Arturo Rosenblueth.

    En el mbito profesional de la Informtica, desde 1978 se ha desenvuelto en los sectores privado,pblico, bancario y empresarial, desempeando cargos como: Programador, analista y lder de proyectoen la entonces Secretara de Comercio. Jefe de Soporte Tcnico en el (desaparecido) InstitutoMexicano de Comercio Exterior. Subdirector de Sistemas en la Secretara de Salud. Subgerente deProyectos Especiales en el Banco Nacional de Comercio Exterior. Coordinador de Sistemas enBanamex. Fue fundador y Director General de la empresa Neuralware, dedicada a las Tecnologas de laInformacin.

    Como resultado de sus estudios doctorales orientados al mbito de la Educacin basada en Web, hapublicado: varios Reportes Tcnicos, y presentado diversos trabajos en congresos nacionales einternacionales celebrados en ciudades de cuatro continentes, como por ejemplo: Washington-USA.,Vancouver Canda, Melbourne Australia, Bensaon Francia, Grindelwald Suiza, y Bali Indonesia. Las memorias de sus artculos han sido editadas por organizaciones como IEEE y Springer.As mismo es autor de una coleccin de libros relacionados con la Informtica y la InteligenciaArtificial.

    Actualmente, Alejandro Pea es Apstol y Director General del World Outreach Light to the NationsMinistries (WOLNM), cuya visin es la formacin de discpulos, mediante el uso de las Tecnologasde la Informacin y del Conocimiento, a nivel mundial dedicados a predicar el Evangelio.

    Por sus ocupaciones acadmicas, profesionales y ministeriales, Alejandro Pea ha tenido laoportunidad de visitar diversos pases y regiones del mundo, amn de haber arribado a sitios extremosdel planeta como: La Antrtida, el ocano glaciar rtico, y el centro del desierto de Australia.Tambin ha explorado islas exticas como Hawai, Tahit, y Rarotonga; y otras remotas comoSpitsbergen y Baffin. A raz de tales experiencias, Alejandro Pea ofrece el testimonio de lasmaravillas naturales que Dios ha hecho en el mundo para deleite del ser humano, y en particular de sushijos que son salvos a travs de Jesucristo y llenos de su Espritu Santo, quien les anima a clamar:Abba, Padre!

  • 8/8/2019 Interfases Hombre Maquina

    3/147

    Interfases Hombre-Mquina:

    Basadas en el

    Lenguaje Natural

  • 8/8/2019 Interfases Hombre Maquina

    4/147

  • 8/8/2019 Interfases Hombre Maquina

    5/147

    Interfases Hombre-Mquina:Basadas en el

    Lenguaje Natural

    AAAllleeejjjaaannndddrrrooo PPPeeaaa AAAyyyaaalllaaae

    INSTITUTO POLITCNICO NACIONAL

    - Mxico -

  • 8/8/2019 Interfases Hombre Maquina

    6/147

    PRIMERA EDICIN 2006.

    D.R. 2006, Alejandro Pea Ayala

    INSTITUTO POLITCNICO NACIONALDireccin de PublicacionesRevillagigedo 83, Centro Histrico, 06070, Mxico, D.F.ISBN: 970-94797-2-5Impreso en: Mxico / Printed in Mxico

  • 8/8/2019 Interfases Hombre Maquina

    7/147

    El autor reconoce que esta obra ha sido inspirada de manera especial por su Padre, Hermano

    Jess y Consolador como parte de los proyectos de investigacin de World Outreach Light to the

    Nations Ministries (WOLNM). As mismo, el trabajo es el resultado de su experiencia

    profesional, como investigador y docente en la Unidad Profesional Interdisciplinaria de

    Ingeniera y Ciencias Sociales y Administrativas (UPIICSA) del Instituto Politcnico Nacional

    (IPN) y fruto del desarrollo de su tesis doctoral en el Centro de Investigacin en Computacin del

    Instituto Politcnico Nacional.

  • 8/8/2019 Interfases Hombre Maquina

    8/147

  • 8/8/2019 Interfases Hombre Maquina

    9/147

    P R L O G O

  • 8/8/2019 Interfases Hombre Maquina

    10/147

  • 8/8/2019 Interfases Hombre Maquina

    11/147

    En este material se basa en el estudio de la disciplina denominada Inteligencia Artificial y en el empleo del lenguaje deprogramacin lgica Prolog. Con esta plataforma se procede a la concepcin de interfaces ergonmicas y amigables queusan tcnicas de representacin y manipulacin del Lenguaje Natural. Con este tipo de interfase se enriquece el empleode modelos tradicionales de implementacin de interfaces por medio de texto y grficas. Esto contribuye a que lossistemas de informacin sean ms productivos y los tiempos de capacitacin disminuyan.

  • 8/8/2019 Interfases Hombre Maquina

    12/147

  • 8/8/2019 Interfases Hombre Maquina

    13/147

    TABLA DE CONTENIDO

    INTRODUCCIN...........................................................................................................................................................1. CONTROL EN LA PROGRAMACIN LGICA .......................................................................................................

    1.1 Control mtodos de bsqueda e inferencia ............................................................................................................

    1.2 Recursividad normal y tipo de cola (TAIL)............. .......... ........... .......... ........... .......... ........... .......... ........... ..........1.3 BackTrak uso del corte (CUT) y de falla (FAIL) ..................................................................................................1.4 Aplicaciones: factorial, creacin y bsqueda en listas, etc. .......... .......... ........... .......... ........... .......... ........... ..........1.5 Predicados: declarativos, aritmticos, de comparacin, entrada y salida .......... .......... ........... .......... ........... .......... 11.6 Rastreo.................................................................................................................................................................

    1.6.1 Manipulacin de la base de datos, creacin, borrado y actualizacin ......... ........... ........... .......... ........... ........ 21.6.2 Carga y aplicacin de la base de datos ...........................................................................................................1.6.3 Operaciones especializadas para uso de archivos.. .......... ........... .......... ........... .......... ........... ........... .......... ..... 2

    2. PROCESO DE LENGUAJE NATURAL .....................................................................................................................2.1 Descripcin del proceso de Lenguaje Natural .......................................................................................................2.2 Complejidad en la representacin del Lenguaje Natual .......................................................................................... 3

    2.2.1 Forma de representacin................................................................................................................................2.2.2 Tipo de mapeo..............................................................................................................................................

    2.2.3 Nivel de interaccin entre componentes....... ........... .......... ........... .......... ........... .......... ........... .......... ........... ...3. PROCESO LEXICO ...................................................................................................................................................3.1 Elementos del lenguaje: Alfabeto, Morfologa, Diccionario......... ........... .......... ........... ........... .......... ........... ........ 33.2 Unidades lxicas..................................................................................................................................................3.3 Procedimiento......................................................................................................................................................3.4 Manejo y recuperacin de errores..........................................................................................................................3.5 Implementacin ...................................................................................................................................................

    4. PROCESO DE LA SINTAXIS ....................................................................................................................................4.1 Elementos del anlisis gramticas, redes de trasformacin, Parsers............ ........... ........... .......... ........... .......... ..... 44.2 Teoras de Chomsky sobre estructuras sintcticas y de teora de sintaxis............. .......... .......... ........... .......... .... 54.3 Redes de transicin aumentadas ...........................................................................................................................4.4 Implementacin de un modelo sintctico ..............................................................................................................

    5. PROCESO SEMNTICO............................................................................................................................................5.1 Componentes: contexto, significado y relacin... ........... .......... ........... .......... ........... .......... ........... .......... ........... ...5.2 Estudio de gramticas semnticas .........................................................................................................................5.3 Anlisis de gramticas Case DCGS semnticas ....................................................................................................5.4 Aplicacin de redes semnticas............................................................................................................................5.5 Manejo de dependencia conceptual......................................................................................................................5.6 Implementacin de un esquema de tratamiento semntico.............. ........... .......... ........... .......... ........... .......... ....... 8

    6. PROCESO DE LA INTERPRETACIN ................................................................................................................... 16.1 Descripcin del anlisis pragmtico .................................................................................................................... 16.2 Complejidad en el proceso y entendimiento............ .......... ........... .......... ........... .......... ........... .......... ........... ........ 16.3 Estudio de la tcnica sobre Espacio de enfoques ......... ........... .......... ........... .......... ........... ........... .......... .......... 16.4 Anlisis del mtodo de direccin por metas ........................................................................................................ 16.5 Aplicacin de Scripts...........................................................................................................................................

    6.5.1 Evaluacin de aplicaciones sobre Scripts ..................................................................................................... 16.6 Comprensin de historias PAM....................................................................................................................... 16.7 Aplicacin de Scripts...........................................................................................................................................6.8 Evaluacin de aplicaciones sobre Comprensin de historias PAM ......... ........... ........... .......... ........... .......... ... 116.9 Implementacin de un prototipo interpretador de textos .......... ........... .......... ........... .......... ........... .......... ........... . 11

    7. DESARROLLO DE UNA APLICACIN.................................................................................................................. 17.1 Integracin de la documentacin......................................................................................................................... 17.2 Presentacin de sistemas .....................................................................................................................................7.3 Evaluacin y discusin de propuestas ................................................................................................................. 1

    CONCLUSIONES...........................................................................................................................................................BIBLIOGRAFA.............................................................................................................................................................

  • 8/8/2019 Interfases Hombre Maquina

    14/147

  • 8/8/2019 Interfases Hombre Maquina

    15/147

    TABLA DE FIGURAS

    Figura. 1.1 Imposibilidad de demostracin .....................................................................................................................Figura. 2.1 Composicin del ser humano ........................................................................................................................Figura. 2.2 Mapeo 1 : 1 ..................................................................................................................................................

    Figura. 2.3 Tipos de Mapeo............................................................................................................................................Figura. 2.4 Nivel de interaccin entre componentes, 1 ....................................................................................................Figura. 2.5 Nivel de interaccin entre componentes, 2 ....................................................................................................Figura. 3.1 Aplicacin de Unidades Lxicas....................................................................................................................Figura. 3.2 Procedimiento de entrada del analizador lxico.. ........... .......... ........... .......... ........... .......... ........... .......... .......Figura. 3.3 Procedimiento de salida del analizador lxico ......... ........... .......... ........... .......... ........... ........... .......... ........... .Figura. 4.1 RTEF para una simple gramtica ...............................................................................................................Figura. 4.2 RTEF para una gramtica complicada...... ........... .......... ........... .......... ........... .......... ........... .......... ........... ...Figura. 4.3 RTEF no determinstica.............................................................................................................................Figura 4.4 RTR una sencilla gramtica del ingls. ......................................................................................................Figura. 4.5 rbol de Traduccin para la oracin Juan tom la pelota roja...... ........... ........... .......... ........... .......... ..... 5Figura. 4.6 Oracin y Frase marcada emitida por una gramtica de Estructura de Frase .......... ........... .......... .......... .... 53Figura. 4.7 Desarrollo de etapas y estructuras por una gramtica transformacional ........... .......... .......... ........... .......... .... 5

    Figura. 4.8 Conjugacin de oraciones con gramtica generativa de transformaciones generalizadas......... ........... .......... 55Figura. 4.9 Atributos de los smbolos complejos de una frase marcada.. .......... ........... .......... ........... .......... ........... .......... 5Figura. 4.10 Mecanismo de Funcionamiento de la teora de sintaxis. .......... .......... ........... ........... .......... ........... .......... ..... 5Figura. 4.11 Estructura Ligada para una frase ..................................................................................................................Figura. 4.12 Programa general para gramticas tipo RTA ......... ........... .......... ........... .......... ........... ........... .......... ........... .Figura. 5.1 Ejemplos de contexto en un lenguaje.............................................................................................................Figura. 5.2 Ejemplo de marcadores usados en la teora semntica.......... .......... ........... .......... ........... .......... ........... .......... 6Figura. 5.3 Ejemplo de marcadores semnticos ...............................................................................................................Figura. 5.4 Ejemplo de distinguidores.............................................................................................................................Figura. 5.5 Proceso de Rutas Amalgamadas en la interpretacin de una oracin.......... .......... ........... .......... .......... ...... 7Figura. 5.6 Frases emitidas por una Semntica Generativa............ .......... ........... .......... ........... ........... .......... ........... ........Figura. 5.7 Frases marcadas por una Semntica Generativa ............................................................................................Figura. 5.8 Frases marcadas por una Semntica Generativa, de The sauce thickened.... .......... .......... ........... .......... .... 7Figura. 5.9 Representacin de una oracin por medio de una Gramtica Case............ .......... ........... .......... ........... .......... 7Figura. 5.10 Representacin de oraciones acusativas por medio de Case Frames........... .......... .......... ........... .......... .... 7Figura. 5.11 Representacin de oraciones dativas por medio de Case Frames.......... ........... ........... .......... ........... ........ 7Figura. 5.12 Representacin de oraciones en voz activa ........... .......... ........... .......... ........... .......... ........... .......... ........... ...Figura. 5.13 Representacin de oraciones en voz pasiva .................................................................................................Figura. 5.14 Red semntica binaria..............................................................................................................................Figura. 5.15 Red Semntica n-aria...............................................................................................................................Figura. 5.16 Red semntica relacional .........................................................................................................................Figura. 5.17 Relacin de entidades..................................................................................................................................Figura. 5.18 Representacin de objetos...........................................................................................................................Figura. 5.19 Representacin de comparaciones ...............................................................................................................Figura. 5.20 Herencia Simple..........................................................................................................................................Figura. 5.21 Herencia Mltiple .......................................................................................................................................Figura. 5.22 Representacin de excepciones....................................................................................................................Figura. 5.23 Una sencilla representacin en Dependencia Conceptual .......... .......... ........... .......... ........... .......... ........... ... 8Figura. 5.24 Primitivas de la Dependencia Conceptual (grupo1).......... .......... ........... .......... ........... ........... .......... ........... . 8Figura 5.25 Primitivas de la Dependencia Conceptual (grupo2).......... .......... ........... .......... ........... ........... .......... ........... . 8Figura. 5.26 Uso de los tiempos conceptuales........... .......... ........... .......... ........... .......... ........... .......... ........... ........... ........Figura. 5.27 La representacin en Dependencia Conceptual de una amenaza. .......... ........... .......... ........... .......... ........... . 8Figura. 5.28 Esquema de integracin de un SLN .............................................................................................................Figura. 5.29 Generacin del significado para una frase ...................................................................................................Figura. 6.1 Resultado Del Anlisis Sintctico ................................................................................................................ 1Figura. 6.2 Red semntica particionada que muestra espacios de creencias .......... ........... ........... .......... ........... .......... ... 11Figura 6.3 escena 2, del Scprit del Restaurant................................................................................................................ 1Figura. 6.4 Interpretacin de Textos Fuente.. .......... ........... .......... ........... .......... ........... .......... ........... .......... ........... ........ 1Figura. 6.5 Expresin de Respuestas por el intrprete............. .......... ........... .......... ........... .......... ........... ........... .......... ... 1

  • 8/8/2019 Interfases Hombre Maquina

    16/147

    Figura. 7.1 Esquema de un Sistema de Lenguaje Natural .............................................................................................. 1Figura. 7.2 Evolucin de un SLN...................................................................................................................................Figura. 7.3 Lenguaje natural como medio de comunicacin independiente del tema ........... .......... ........... ........... ......... 12Figura. 7.4 Flujo de conversacin a partir de la expresin del usuario.............. ........... .......... ........... .......... ........... ........ 12Figura. 7.5 Flujo de conversacin a partir del subsistema de conversacin .......... .......... ........... .......... ........... .......... ..... 13

    Figura. 7.6 Procedimiento de la generacin de lenguaje ........... .......... ........... .......... ........... .......... ........... .......... ........... . 1

  • 8/8/2019 Interfases Hombre Maquina

    17/147

    LISTA DE TABLAS

    Tabla. 1.1 Recursividad normal.......................................................................................................................................Tabla. 1.2 Recursividad tail..............................................................................................................................................

    Tabla. 2.1 Limitaciones y ventajas del lenguajes .............................................................................................................Tabla. 3.1 Alfabeto de la lengua castellana......................................................................................................................Tabla. 3.2 Ejemplos de palabras compuestas ...................................................................................................................Tabla. 3.3 Uso de tiempos ...............................................................................................................................................Tabla. 3.4 Derivados irregulares......................................................................................................................................Tabla. 3.5 Opciones en genero y nmero ........................................................................................................................Tabla. 3.6 Comparativos..................................................................................................................................................Tabla. 3.7 Generacin de races incorrectas .....................................................................................................................Tabla. 3.8 Formato de diccionario...................................................................................................................................Tabla. 3.9 Tipos de organizacin y acceso .......................................................................................................................Tabla. 3.10 Formato de la estructura temporal fuente............ .......... ........... .......... ........... .......... ........... .......... ........... ...Tabla. 3.11 Formato de la unidad lxica.......................................................................................................................Tabla. 4.1 Secuencia de recorrido de rboles ...................................................................................................................

  • 8/8/2019 Interfases Hombre Maquina

    18/147

  • 8/8/2019 Interfases Hombre Maquina

    19/147

  • 8/8/2019 Interfases Hombre Maquina

    20/147

  • 8/8/2019 Interfases Hombre Maquina

    21/147

    INTRODUCCIN

  • 8/8/2019 Interfases Hombre Maquina

    22/147

  • 8/8/2019 Interfases Hombre Maquina

    23/147

    INTRODUCCINLos sistemas de cmputo se han convertido en un compaero de labores profesionales, acadmicas, comerciales,sociales, deportivas, culturales y domsticas del ser humano; gracias a los beneficios que brindan en el tratamiento deinformacin de una manera confiable, rpida y precisa. Su popularidad ha crecido aceleradamente gracias a la evolucinde la electrnica y las comunicaciones, que han aportado avances y mejoras significativas en la fabricacin de equipo

    cada da ms poderoso pero a la vez econmico, que acompaado por la robustez y facilidad en el empleo de losprogramas de cmputo, han hecho en conjunto una herramienta muy valiosa para el bienestar de la sociedad.

    Las tendencias mundiales de automatizacin, globalizacin y modernizacin, obligan a los sectores productivos de lospases ha invertir en el desarrollo, generacin, produccin e implementacin de bienes con un alto nivel de contenidotecnolgico, en donde el factor comn es facilitar el uso de los productos e incrementar su utilidad. Un ejemplocontundente es la generalizacin de aplicaciones de cmputo como el uso de un sistema operativo estndar en loscomputadores personales y el intercambio de informacin a travs de internet por medio de un protocolo universal.

    Proveer un vehculo de comunicacin sencillo y natural entre el operador y el sistema ha sido un factor determinante delxito de estas aplicaciones, lo cual ha motivado a profundizar en el uso de instrumentos y tecnologas que tiendan cadavez ms a emular el dilogo natural entre los usuarios sin menoscabo que uno de los parlantes sean una mquina.

    Para crear este tipo de proyectos se requiere la intervencin de varios campos especializados, entre los que destaca elinformtico que aporta un conocimiento valioso, organizado en algunas materias especficas. Una de ellos se conocecomo Lenguaje Natural, disciplina que basa sus fundamentos en las matemticas, la lingstica y la inteligenciaartificial; con ella se aborda el reto de construir sistemas de cmputo orientados al manejo, comprensin y respuesta dellenguaje natural que expresa un usuario y la aplicacin que opera.

    Es por ello, que como parte de la formacin de un especialista en sistemas de informacin se le brindan los elementoslogsticos y experiencias apropiadas para el diseo de aplicaciones basadas en el uso del lenguaje natural, por tal motivo,uno de los temas integrantes de su mapa curricular se concentra a proveer todos los conceptos, tcnicas yprocedimientos necesarios en la concepcin, diseo e implementacin de sistemas para el proceso de lenguaje naturalescrito.

    Para enriquecer y facilitar la imparticin de este tipo de cursos, se ha compilado un material que es el resultado deestudios, investigacin y enseanza (a nivel licenciatura y maestra) por ms de diez aos en el campo del lenguajenatural. Este acervo se presenta a manera de apuntes que respaldan la ctedra del profesor y el estudio a cargo de losalumnos, donde podrn conocer, evaluar y aplicar los temas expuestos, conforme al programa, En ellos se ofrece lasexplicaciones e ilustraciones necesarias para ayudar a comprender y exponer los diversos temas en cuestin.

    En su contenido se aborda un perfil de la naturaleza y alcances del lenguaje natural; para que a partir del tercer captuloal octavo, se concentre en la exposicin detallada de los componentes, funcionamiento y tcnicas para la construccin delos mdulos especializados integrantes de un sistema de lenguaje natural escrito, como son el anlisis lxico,sintctico, semntico, la interpretacin, conversacin y generacin del lenguaje. El material incluye al finalla presentacin de una metodologa basada en Lisp para la implementacin de esta clase de aplicaciones.

    El anhelo del documento es participar en el proceso de enseanza como fuente de consulta, que aunada a los textos yctedras del profesor venga a enriquecer la formacin del profesional informtico. Por tal motivo, sern bienvenidaslas observaciones y sugerencias para corregir y mejorar su contenido, procurando la oportuna actualizacin del

    documento.

    Se agradece el apoyo brindando por las autoridades acadmicas de la U.P.I.I.C.S.A. para facilitar el desarrollo de estetipo de material, as como a los alumnos que participaron en la recoleccin y edicin de varias secciones, pero sobretodoa Dios por hacer del ser humano su obra maestra a travs de su palabra.

  • 8/8/2019 Interfases Hombre Maquina

    24/147

  • 8/8/2019 Interfases Hombre Maquina

    25/147

    CAPTULO 1. CONTROL EN LA PROGRAMACINLGICA

  • 8/8/2019 Interfases Hombre Maquina

    26/147

  • 8/8/2019 Interfases Hombre Maquina

    27/147

    1. CONTROL EN LA PROGRAMACIN LGICA1.1 Control mtodos de bsqueda e inferenciaProlog es un lenguaje orientado a programar aplicaciones para la Inteligencia Artificial que requieren representarconocimiento a travs de predicados en forma de hechos y reglas, procurando encontrar soluciones a problemasmediante el ejercicio de bsquedas ciegas en sentido hacia atrs (backward) y a profundidad, realizando inferencias atravs del mtodo de Resolucin. En suma, Prolog representa una mquina de inferencia que tiene implementadasestas tcnicas de almacenamiento y explotacin del conocimiento para ponerlas al alcance del usuario liberndolo de lacarga de implementar por s mismo estas funciones. De esta manera el programador se puede concentrar en codificar loselementos relacionados con el problema, dejando a Prolog la bsqueda de la solucin.

    Prolog como lenguaje de Programacin Lgicaemplea una sintaxis muy sencilla para codificar las instrucciones queel usuario le proporciona mediante las convenciones del Clculo de Predicados y de las Clusulas de Horn,representa los hechos y reglas conforme a los siguientes postulados:

    Un programa Prolog se compone de clusulasHay dos tipos de clusulas, hechos y reglasLos hechos son afirmaciones compuestas por un predicadoLas reglas son clusulas de Horn

    Las reglas se componen por una conclusin y una condicinLa conclusin consta de un solo predicado que est afirmadoLa condicin se integra por al menos un predicadoCuando la condicin tienen varios predicados, generalmente estos se encuentran unidos por el conjuntivoandPara que sea valida una regla, es necesario que todas las condiciones se prueben como vlidas (en el orden en queaparecen) para que la conclusin tambin as resulte y por lo tanto la regla como un todoLos predicados se componen por un nombre reservado o definido por el usuario (comenzado por una letra enminscula o smbolo especial) y opcionalmente pueden ir acompaados por uno o ms trminos los cuales van entreparntesisLos trminos son variables, constantes o funciones (equivalentes a predicados), separados por comasLas variables utilizan como primer carcter una letra maysculaLas constantes son literales que inician con minscula, pueden ir entre comillas, son nmeros y caracteres especialesLas funciones son equivalentes a los predicados, es decir llevan un nombre que comienza con una letra en minscula y

    pueden ir acompaadas por trminosGeneralmente el punto se utiliza para indicar el trmino de una instruccinNormalmente los smbolos.- separan la conclusin de la(s) condicin(es), la cual aparece primero (de izquierda aderecha)La , (coma) separa a las condiciones de una regla, representando el and, mientras que el; representa al orLos hechos y las reglas terminan con un punto

    Para efectos de ilustracin de la forma en que Prolog representa conocimiento, se muestra a continuacin los siguientesejemplos, basados en la sintaxis, convenciones y elementos de la versin Prolog V-Plus desarrollada por ChalcedonySoftware, Inc; en donde se usa el carcter > para editar una instruccin directamente sobre el ambiente de trabajo y elsmbolo % para identificar un comentario:>!.

    >fail .

    >w ri te (ho la) .

    >p a d r e ( ju a n , m a r i o ) .>p a d r e ( m a r i o , c a r l o s ) .

    >abu e l o (X , Z ) :- pa dre (X , Y ) , pa dre (Y , Z ) .

    La codificacin de un programa Prolog, consta de reglas y hechos esencialmente, representando en conjunto una Basede Conocimientos (otros la denominan Base de Datos), para procesarlas se emplea un predicado que se inserta enforma negada. Esta clusula representa el teorema a demostrar o el problema a resolver conforme a loestipulado por el mtodo de inferencia de reduccin a lo absurdo en donde se introduce una preposicin negadaque se refuta contra las afirmaciones existentes, hasta generar la preposicin nula, momento en el cual se demuestrala veracidad de la afirmacin -.

  • 8/8/2019 Interfases Hombre Maquina

    28/147

    8 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    Debido a que Prolog maneja predicados en lugar de preposiciones, emplea el mtodo de Resolucin propuesto porRobinson - el cual aprovecha los fundamentos delreduccin a lo absurdo -, por lo que su activacin tambin parte dela formulacin de los postulados originales (hechos y reglas) y de un predicado negado (el teorema o problema). Esteltimo se inserta a la Base de Datos para producir nuevas clusulas, que al trabajar con ellas generarn otras, hasta queproduzcan a una vaca conocida en el argot como nil, obteniendo as la demostracin del teorema o la solucin del

    problema.Cuando se desea comprobar un teorema, el predicado que se introduce no lleva trminos o bien todos ellos debenestar instanciados, es decir todas sus variables tienen valores previamente asignados, ninguna de ellas se encuentralibre al ser introducida, como se aprecia en la siguiente resea:

    Teorema: demostrar que: Juan es abuelo de CarlosLa Base de Datos (conocimiento) de postulados iniciales es:

    >p a d r e ( ju a n , m a r i o ) .

    >p a d r e ( m a r i o , c a r lo s ) .

    >abuelo (X, Z) :- padre (X, Y), padre (Y, Z).

    Se introduce el teorema negado con el smbolo ? :

    >abu e l o ( j uan , c ar l os )?

    Se relaciona contra la regla:

    >abu e l o (X , Z ) :- padr e (X , Y ) , pad re (Y , Z ) .

    Se pretende unificar: abuelo(juan, carlos)? == abuelo (X, Z) :- padre (X, Y), padre (Y, Z)Se refuta contra la conclusin (ya que est afirmada) y se propagan los valores de las variables, generando una lista desustitucin: { juan / X, carlos/ Z }La cual al propagarse (sustituir los valores por las variables de la lista) en los predicados restantes de la regla, genera unanueva clusula conocida como Resolvente: padre (juan, Y), padre (Y, carlos)Ahora, se deber probar las condiciones resultantes (recordar que estn negadas), repitiendo el proceso:Al relacionarse con el hecho:

    >p a d r e (j u a n , m a r i o )

    Pretendiendo unificar: padre(juan, mario). == padre (juan, Y), padre (Y, carlos)La nueva lista de sustitucin que se genera: { mario/Y, carlos/Z }Al propagarse a la condicin restante produce como nuevo Resolvente: padre (mario, carlos)Como esta es la ltima condicin restante y tambin est negada, se relaciona con el hecho:

    >p a d r e ( m a r i o , ca r l o s )

    Se trata de unificar: padre (mario, carlos) == padre (mario, carlos)Y como el hecho est afirmado y la condicin es negada, entonces se produce la contradiccin generando as la clusulavaca nil

    Con lo cual queda demostrado el teorema que declara: Juan es abuelo de Carlos

    Si en cambio lo que se desea es resolver un problema, este se plantea como un predicado que se introduce con cuandomenos un trmino no instanciado, es decir, debe tener al menos una variable sin valor previamente asignados, es decirque est libre al ser introducida. El mecanismo de inferencia que se aplica es el mismo que para la demostracin deteoremas por lo que solo se muestra a continuacin el proceso aplicado a las clusulas:Problema: Quin es el nieto de JuanSe emplea la misma Base de Datos

  • 8/8/2019 Interfases Hombre Maquina

    29/147

    Proceso de Lenguaje Natural 9

    >p a d r e ( ju a n , m a r i o ) .

    >p a d r e ( m a r i o , c a r lo s ) .

    >abu e l o (X , Z ) :- pa dre (X , Y ) , pa dre (Y , Z ) .

    Se introduce el problema negado con :>abu e l o ( j uan , K)?

    Al relacionarse con la regla: abuelo(juan, K)? == abuelo (X, Z) :- padre (X, Y), padre (Y, Z)Genera la lista de sustitucin: { juan / X, K/ Z }Emitiendo el Resolvente: padre(juan, Y), padre(Y, K)Al relacionarse con el hecho: padre (juan, mario). == padre (juan, Y), padre (Y, K)Genera una nueva lista de sustitucin: { mario/Y }Emitiendo el Resolvente: padre (mario, K)La condicin restante se relaciona con el hecho: padre (mario, carlos) == padre (mario, K)Genera una nueva lista de sustitucin: { carlos / K }Se produce la contradiccin. nilAl propagarel valor de K hasta el postulado introducido: abuelo(juan, carlos)?Se obtiene la solucin al problema: Carlos es el nieto de Juan

    Cuando en una demostracin de teorema o solucin de problema no se llega a generar la clusula vacanil entonces nose puede afirmar el postulado o bien no existe solucin, como se muestra en la siguiente figura 1.1:

    Demostrar que Juan es abuelo de carlos

    abuelo (juan, carlos)

    1 3 5

    padre(juan, carlos) padre(juan, carlos) abuelo (X, Z) :- padre(X, Y), padre(Y, Z)

    2 4 6XX XX XX

    No es demostrable que Juan es abuelo de carlos, ya que no se gener la clusula NIL

    Figura. 1.1 Imposibilidad de demostracin

    Para que dos clusulas se puedan relacionar, es necesario que exista la Unificacin entre un predicado de cada una deellas. Para ello se aplica el mtodo denominado Unificacin, el cual exige la observancia de una serie de criterios parapermitir una inferencia es decir, la generacin de un nuevo conocimiento a partir de otro representada por la listade sustitucin y el Resolvente. Los requisitos que dos clusulas deben cubrir para ser unificables son:

    Los predicados deben tener el mismo nombreUn predicado debe estar afirmado y el otro negadoDeben tener la misma cantidad de trminosLos trminos de los predicados debern ser correspondientes, es decir, se comparan entre s de acuerdo con la posicinen la que aparecen (el uno contra el primero, el dos contra el segundo, ...)Si los dos son constantes, ambas deben ser las mismasSi son variables instanciadas, sus valores asignados debern ser los mismos

  • 8/8/2019 Interfases Hombre Maquina

    30/147

    10 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    Si un trmino es una variable libre y el otro es una constante o funcin, el primero tomar el valor del segundoSi un trmino es una variable libre y el otro es una variable instanciada, la primera tomar el valor de la segundaSi un trmino es una variable libre y el otro tambin, la primera sustituye a las ocurrencias de la segundaSi un trmino es una funcin el otro deber ser una variable libre o bien otra funcin con el mismo nombre, nmero detrminos y estos debern ser correspondientes como se marca para los predicados (es recursivo)

    Cuando todos estos criterios son observados con xito, por las predicados contendientes de las clusulas que se pretenderelacionar, entonces existir Unificacin entre ellas, procediendo a generar la lista de sustitucin a partir de laasignacin de valores que se deriva de los criterios 7, 8 y 9. Estas sustituciones son propagadas en el resto de predicadosde las dos clusulas que se van a relacionar, procediendo a eliminar a los predicados que se unificaron (por habercontradiccin, ya que uno est afirmado y el otro negado) para generar la clusula resolvente con la unin de lospredicados restantes de las dos partes, los cuales ya tienen los nuevos valores resultantes de las dos sustituciones.

    Al incumplirse cualquiera de los criterios se impide que las dos clusulas se relacionen como ocurri en el ejemplo de lafigura 1.1, en donde por usar distintas constantes (en los primeros dos intentos) y no poder unificar un mismopredicado afirmado contra otro negado (tercer caso) no fue posible demostrar el teorema.

    Por lo que respecta a la bsqueda que Prolog automticamente emplea, esta esciega, ya que no se emplea algn criterioen particular, informacin o conocimiento especializado conocido como heurstica para orientar la direccin de labsqueda, la seleccin de las declaraciones (hechos y reglas); limitndose nicamente a tratar de relacionar las clusulascon base al orden en que aparecen, tal como se ilustr en la figura anterior, al observar los nmeros del proceso seaprecia su correspondencia con respecto a la secuencia de los postulados en la Base de Datos previamente declaradas; esdecir, que primero se compara el teorema negado contra los hechos y al final contra la regla.

    En cuanto a la direccin de la bsqueda que Prolog utiliza esta es backward ya que el procedimiento arranca a partirdel teorema (conclusin) que supuestamente se deriva de los postulados iniciales; lo cual implica que a partir de estos(la Base de Datos) se deduce el teorema (direccin forward). Por ese motivo, el teorema o problema a resolver seintroduce negado para procurar relacionarlo con cualesquiera de las declaraciones iniciales para generar un nuevoresolvente, y con l repetir el proceso hasta producir la clusula vacanil y obtener la respuesta deseada o bien agotartodas las posibilidades sin satisfacer la expectativa inicial.

    Con respecto a la expansin de la bsqueda que Prolog realiza, se emplea el mtodo a Profundidad en donde se

    privilegia desarrollar la primer alternativa en cada nivel de bsqueda hasta llegar al final, alcanzar la solucin o bienllegar a un punto donde no se puede progresar ms, con lo cual se obliga a dar un paso atrs denominado backtrack endonde se regresa al estado en el que se tom la ltima decisin para considerar otra alternativa que no se habancontemplado antes por ser la segunda, tercera, ... opcin. En caso de que en ese nivel no existan ms o bien que todasellas ya fueron exploradas sin haber resultado exitosas, entonces se hace un nuevo retroceso al siguiente nivel inmediatoanterior, para procurar otras rutas. Este proceso se repite hasta encontrar el primer caso de xito o bien agotar todo elposible universo de bsqueda, lo cual ocurre cuando al realizar el backtrack se arriba al estado inicial (primer nivel) yya no hay ms caminos por explorar.

    Prolog se orienta a realizar bsquedas exhaustivas, en donde no conforme con haber encontrado la primer solucin,continua buscando ms, aplicando el mecanismo de backtrack hasta cubrir el universo completo de bsqueda o agotarlos recursos de proceso disponibles. Con este lineamiento, se pueden generar todas las posibles soluciones de unproblema, elegir entre ellas o bien tener la certidumbre de que no existe una solucin satisfactoria o que es necesario

    ampliar los recursos o replantar el problema para hacer viable encontrar una respuesta a satisfaccin. En contraparte, siel usuario solo se interesa en conocer la primer solucin, habr un desgaste de recursos durante la ejecucin de laaplicacin, el cual se podr evitar con el empleo del predicado ! (cut).

    1.2 Recursividad normal y tipo de cola (TAIL)En computacin un proceso recursivo es aquel que se llama as mismo, generando una nueva versin de lasvariables de estado del programa independientes al que tienen al momento de que ocurre el llamado. Este proceso escclico y debe estar controlado por una condicin que limite el trmino de las llamadas de lo contrario se vuelveinfinito. Cuando se alcanza esa condicin que da por terminado el ciclo (despus de n interacciones), se genera unretroceso en el que puede o debe (segn el caso) ocurrir un envo de parmetros hacia arriba para trasladar losvalores de inters que gener el ltimo ciclo al inmediato anterior (n-1, el penltimo) es decir, al ciclo que lo llam .

  • 8/8/2019 Interfases Hombre Maquina

    31/147

    Proceso de Lenguaje Natural 11

    Para que este los procese y genere con ellos un nuevo resultado, o bien simplemente los pase al ciclo inmediato anteriorque le corresponde (n-2 el antepenltimo). Este proceso se hace de manera sucesiva hasta regresar al estado originaldel programa (nivel 0) en el punto en que ocurri la llamada, para que la aplicacin contine a partir de la siguienteinstruccin a la que hizo el llamado.

    Al iniciar el ciclo recursivo se pueden enviar ciertos parmetros con valores previamente definidos y otros libres sininstanciar, cuando se ingresa al primer ciclo recursivo este los recibe, procesa y procede a generar nuevos valores, loscuales pueden perderse, grabarse en el algn dispositivo, enviarse al siguiente ciclo recursivo o bien en el envo deparmetros hacia arriba, trasmitirse al nivel que los llam para asignarse a las variables libres originales. De estamanera ocurre el paso de parmetros hacia abajo (en cada llamada recursiva).

    En Prolog la recursividad ocurre cuando un predicado aparece como la conclusin de una regla y tambin como una delas condiciones de la misma, es decir que la regla se define as misma en trminos de ella. A nivel de implementacin dela recursividad, Prolog emplea estructuras de datos tipo pila para registrar, almacenar y recuperar los valores de lasvariables de estado para cada ciclo.

    La recursividad normal es precisamente la que se ha definido hasta el momento, enfatizando el hecho que una vezconcluida, al volver al estado inicial el resultado final que se obtuvo es recuperado para ser empleado a continuacin porotro predicado que est despus del que hizo el llamado en el mismo cuerpo de condiciones de la regla. Comoejemplo de aparece el clculo del factorial el cual es implementado por medio de las siguientes declaraciones:

    >% P r o g r a m a 1

    >% R e c u r s i v i d a d N o r m a l

    >facto ria l (N , 1) :- 1 >= N. % clu su la 1

    >f ac t or i a l (W , X ) :- W > 1, Y i s W - 1, fac t or i a l (Y , Z ) , X i s W * Z . % c lu su l a 2

    En el programa 1, se aprecian comentarios en las dos primeras lneas, mientras que la tercera es una regla cuyaconclusin se representa por medio del predicado factorial con dos trminos, mientras que la conclusin dispone de unsolo predicado. La ltima instruccin tambin es una regla con el mismo predicado como conclusin y con cuatropredicados en la parte de condicin, en donde el tercero de ellos tambin es el predicado factorial, representando conello una regla recursiva, cuya condicin terminal ocurrir cuando sea satisfecha la primera.

    El programa se activa digitando la instruccin que represente al factorial a calcular, como por ejemplo, si se deseaestimar el factorial del nmero 3, se introduce la clusula negada:

    >f ac t or i a l (3 , X )?

    Con ella se plantea el problema, negando el predicado factorial con el smbolo ? declarando como primer trmino elnmero 3, y la variable libre X como medio para obtener el resultado. El envo de parmetros hacia abajo serealiza a travs de los dos trminos del predicado factor, en cada llamado recursivo el valor del primer de ellos el cualrepresenta el nmero cuyo factorial ha calcularse - se altera debido al decremento que calcula la segunda condicin de lasegunda regla. Mientras que el segundo trmino permanece como una variable libre. Cuando en la primer regla elvalor del primer trmino de la conclusin es 1, entonces se cumple su nica condicin, poniendo fina a las llamadas.

    Una vez satisfecha la condicin que controla la recursividad, la conclusin de la regla 1, devuelve como valor desustitucin para el segundo trmino del predicado factorial el nmero 1 el cual instanciar a la variable libre del

    segundo trmino del predicado que hizo la llamada correspondiente a la tercer condicin de la segunda regla, con ello seobtiene el valor final del ltimo nivel recursivo para dar comienzo al paso de parmetros hacia arriba. Con 1 comoprimer valor retornado al penltimo nivel recursivo.

    Este procede a ejecutar el predicado que sigue al responsable de la llamada recursiva ubicado en la segunda regla, dichacondicin se encarga de calcular el factorial de un nmero ( n! ) al multiplicarlo por el factorial del nmero inmediatoinferior ( n * (n-1)! ). El producto obtenido es propagado a la variable libre del segundo trmino del predicado de laconclusin de la segunda regla, para que se retorne al nivel en que se hizo el llamado recursivo. Este procedimiento serepite tantas veces como ciclos recursivos se hayan realizado hasta alcanzar el estado inicial y reanudar la validacin dela regla que provoc la recursividad, la cual calcular el valor final del factorial para ser devuelto al predicado queplante el problema a travs de la conclusin de la segunda regla.

  • 8/8/2019 Interfases Hombre Maquina

    32/147

    12 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    En la siguiente tabla (1.1) se muestra la cronologa de la transferencia de valores hacia abajo, clculo, envo de valoreshacia arriba, generacin de valores finales y el resultado de la unificacin con fracaso fail o xito true. Para facilitarla interpretacin se abrevi al predicado factorial por f, las celdas que representan a los predicados que no se hanprocesado hasta ese momento por haberse presentado el llamado recursivo aparecen con un fondo oscuro, mientrasque las ya procesadas al retorno recursivo se identifican con una asurado en diagonal.

    En las columnas se muestran los valores de los trminos o bien las variables libres para los predicados de la conclusin yde las condiciones de las dos reglas. En los renglones se muestra los valores que toman los predicados del problema, dela regla 1 y de la 2, segn el orden de operacin que se realiza. Mientras que la columna nivel seala el estado deejecucin del programa (0 el normal, mayor a 0 constituye el nivel de recursividad) y la de resultado indica el fracaso,xito, llamado (lla. rec.) o retorno recursivo (return) de la operacin.

    Nivel

    Problema

    Regla 1conclusi

    n

    Regla 1condici

    n 1

    Regla 2conclusi

    n

    Regla 2condici

    n 1

    Regla 2condici

    n 2

    Regla 2condici

    n 3

    Regla 2condici

    n 4

    Resultado

    0 f(3,X)0 f(3,1) 1 >= 3 fail

    0 f(3, X) 3 > 1 Y = 3 - 1 F(2, Z) lla. rec. 11 f(2,1) 1 >= 2 fail1 f(2, X) 2 > 1 Y = 2 - 1 F(1, Z) lla. rec. 22 f(1,1) 1 >= 1 true,

    return1 F(1, 1) X = 2 * 1 return0 F(2, 2) X = 3 * 2 true0 f(3,3) fin

    Tabla. 1.1 Recursividad normal

    La recursividad tail representa una variante de la normal, procurando que el valor que se calcul en el ltimo nivel derecursividad alcanzado ya no se altere ms durante el retorno de valores hacia arriba y una vez que se ha vuelto al

    nivel original donde ocurri la primer llamada, el predicado responsable sea el ltimo de la condicin de la regla, esdecir la cola, o bien que en caso de haber otros predicados despus, estos no utilicen en lo absoluto ninguno de losvalores retornados por el llamado recursivo. Para ilustrar este concepto se procede a modificar el programa original 1para dar vida a la versin 2:

    >% P r o g r a m a 2

    >% R e c u r s i v i d a d N o r m a l

    >facto ria l (N , 1) :- N =< 1. % clu su la 1

    >fac to r ial (2 , 2) . % c lu su la 2

    >fac to r ial (N, V) : - N > 2, fa (N, 3 , 6 , V) . % c lus u la 3

    >f a (L , L , Va , Va) . % c lu su l a 4

    >f a (L , Na , Va , V f ) :- L > Na , Nn i s Na + 1, Vn i s Nn * Va , f a (L , Nn , Vn , V f ) . % c lu su l a 5

    >f ac t or i a l (4 , X )? % pro b l e m a

    Esta nueva versin computa el factorial en direccin forward, es decir en sentido opuesto al programa original, ya queparte de los valores iniciales 1, 2, 3, .... y as sucesivamente hasta alcanzar el nmero solicitado; su activacin emplea almismo predicado acompaado por el valor del nmero del factorial a calcular y la variable libre donde se almacenar elresultado, tal como aparece en la ltima instruccin (problema).

    La clusula 1 se emplea para el clculo del factorial de nmeros menores o iguales a 1, la segunda ofrece el valor delfactorial para el nmero 2, la tercera se ocupa de generar el factorial para nmeros mayores a 2, invocando al predicadofa por medio de cuatro trminos. El primero corresponde al nmero original cuyo factorial se desea obtener(variable instanciada N), el segundo constituye el nmero actual (valor 3) a partir del cual comenzar la estimacin,acompaado por su factorial (valor 6) como tercer trmino, mientras que como cuarto aparece la variable libre donde sedepositar el factorial producido para el nmero original.

  • 8/8/2019 Interfases Hombre Maquina

    33/147

    Proceso de Lenguaje Natural 13

    La clusula 4 representa un hecho con el propsito de establecer la condicin terminal de la recursin al momento enel que el valor del primer trmino es igual al segundo (es decir, que el nmero original es igual al nmero actual)por lo que el factorial del nmero actual representado por el tercer trmino- instanciar a la variable libre del cuartotrmino, devolviendo este como el resultado final del ciclo recursivo.

    La ltima clusula es una regla recursiva y procede a calcular el factorial del nmero actual inmediato posterior alobtener el producto de este por el factorial del nmero actual, para despus hacer un llamado recursivo con el nmeroactual incrementado en 1, acompaado por su factorial recin calculado. Este ciclo se repite hasta satisfacer lacondicin terminal expresada por el hecho; sin embargo, para evitar que el backtrack impulsado por el espritu debsqueda exhaustiva caracterstico en Prolog, continu procurando encontrar ms soluciones es necesario emplear laprimer condicin de la ltima regla que evita procesar el factorial de nmeros mayores al original. Aplicando lamisma mecnica del ejercicio anterior y las convenciones adoptadas en la representacin de la tabla 1.1; a continuacinse muestra la tabla 1.2 para la ejecucin del segundo programa, con la salvedad de dedicar una columna para laconclusin de las reglas de las clusulas 3 y 5, etiquetndolas con el nombre del predicado.

    Nivel

    Problema

    Clusula 1 / 2

    Clusula 3

    factorial

    Clusula 3

    condicin

    Clusula 4

    Clusula 5fa

    Clusula 5

    condicin 1, 2, 3

    Clusula 5

    condicin 5 (fac)

    Resultado

    0 f(4,X)0 fail fail0 fail fail0 f(4, V) 4 > 2

    fa(4,3,6,V)lla. rec. 1

    1 fa(4,3,6,6) fail1 fa

    (4,3,6,Vf)4 > 34=3+6

    fa (4,4,24, Vf)

    lla. rec. 2

    2 fa (4,4,24,24)

    true,return

    1 fa

    (4,3,6,24)

    fa (4,4,

    24, 24)

    true,

    return0 f(4, 24) 4 > 2fa (4,3,

    6,24)

    true

    0 f (4,24) fin

    Tabla. 1.2 Recursividad tailEl principal atributo de la recursividad tail es evitar el postproceso sobre los valores calculados en cada ciclorecursivo, haciendo gil el retorno de valores hasta el llamado original y menos complicado el rastreo y depuracin delprograma. En suma el modelo de recursividad tail es equivalente a las iteraciones clsicas carentes de recursividadpuesto que esencialmente no requieren del empleo del mecanismo y sobrecarga de trabajo tradicional que exige larecursividad normal.

    1.3 BackTrak uso del corte (CUT) y de falla (FAIL)Por default Prolog se encarga de realizar una bsqueda exhaustiva de soluciones a lo largo (profundidad) y ancho(amplitud) del universo de bsqueda que se genera para el problema. Esto significa que al encontrar la primer solucinactiva su mecanismo de backtrack (retroceso) para optar por otras rutas an no exploradas en bsqueda de nuevassoluciones.

    Cuando la solucin a un problema exige conocer todas las posibles respuestas, el retroceso natural de Prolog las produceen forma automtica siempre y cuando los recursos de proceso y memoria se lo permitan. Sin embargo no siempre elusuario se interesa por enterarse de todas las posibles opciones y se conforma con la primera o con alguna conjunto deellas sin necesidad de ser exhaustivo; o bien se enfrenta a problemas que tienen una sola posible solucin.

  • 8/8/2019 Interfases Hombre Maquina

    34/147

    14 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    Al carecer de una heurstica que facilite encontrar soluciones o bien que las evalu para recomendar la mejor conforme aciertos criterios especficos, Prolog simplemente expondr las respuestas en el orden casual (basado en el estilo deprogramacin y secuencia de las clusulas) conforme las vaya encontrando (si es que existe alguna o la capacidad derecursos se lo permite).

    Al momento en que el diseador de la aplicacin decide ofrecer la primer respuesta que satisfaga al problema o unaparte de este (representado a travs de hechos o condiciones de reglas), el programador entonces podr emplear elpredicado cut mediante el smbolo ! para indicarle a Prolog evitar la activacin del backtrack al momento que regresea buscar nuevas opciones de satisfaccin para las condiciones que se encuentran antes de l en la misma regla y para elpredicado de la conclusin a la que pertenece.

    Para comprender mejor este concepto, es conveniente revisar el primer programa presentado en la seccin anterior,partiendo del ejemplo que se desea calcular el factorial de 1, 0 o de cualquier nmero negativo. La respuesta laproporciona Prolog al momento de unificar el problema negadofactorial(1, X)? con la primer clusula, sin embargo unavez que presenta el resultadox = 1 el programa activa el backtrack para continuar buscando ms soluciones y encuentracomo una nueva ruta a la segunda regla, logrando unificar al predicado de su conclusin, pero fallando en satisfacer a suprimer condicin (w > 1). Como ya no hay mas opciones de bsqueda concluye el proceso.

    Para evitar este sobretrabajo overhead innecesario, bastar con modificar el programa agregando una condicin ms ala primer regla, representada por el predicado cut mediante su smbolo !. Como esta regla es la condicin que controlala recursividad, una vez que satisfaga la primer condicin (1 >= N) ya no habr ms retroceso para satisfacer alpredicado (factorial) tanto a travs de esa regla como de cualquier otra ms que exista en el cdigo (en este casonicamente hay 2). Con estos elementos de edita el programa 3 que se comparte a continuacin:

    >% P r o g r a m a 3

    >% R e c u r s i v i d a d N o r m a l

    >% Em pl e o de l c u t !

    >facto ria l (N , 1) :- 1 >= N, ! . % clu su la 1

    >f ac t or i a l (W , X ) :- W > 1, Y i s W - 1, fac t or i a l (Y , Z ) , X i s W * Z . % c lu su l a 2

    Al aplicar el predicado cut al segundo programa de recursividad tail, se agrega el smbolo ! como ltima condicinde la primer regla; la segunda clusula se transforma de hecho a regla al insertar como nica condicin el!; y deigual forma la cuarta tambin es convertida en regla para emitir la nueva versin del programa denominada 4, la cualconsta de las siguientes instrucciones:

    >% P r o g r a m a 4

    >% Re c ur s i v i dad Ta i l

    >% Em pl e o de l c u t !

    >facto ria l (N , 1) :- N =< 1, ! . % clu su la 1

    >fac to r ial (2 , 2):- ! . % c lus ula 2

    >fac to r ial (N, V) : - N > 2, fa (N, 3 , 6 , V) . % c lus ula 3

    >fa (L, L , Va , Va ):- ! . % c lus ula 4

    >f a (L , Na , Va , V f ) :- L > Na , Nn i s Na + 1, Vn i s Nn * Va , f a (L , Nn , Vn , V f ) . % c l usu l a 5

    Con estos ajustes el cut evita al backtrack de la siguiente forma:Cuando el problema consiste en calcular elfactorial de un nmero igual o menor a 1, el ! de la primer regla impide queel bactrack intente explorar nuevas soluciones a travs de las clusulas restantesSi el objetivo es obtener elfactorial de 2, el ! de la segunda regla evita el retroceso que pretende buscar mas solucionespor medio de las clusulas faltantesY para el resto de casos (factorial de nmeros igual o mayor a 3), el ! es el responsable de evitar mas overhead

    Como recomendacin final al usuario, se observa el cuidado que debe ejercer en el manejo de bsqueda exhaustiva obien limitada, ya sea por el estilo de programacin natural de Prolog aquel que no emplea elcut o bien el contrastadopor el que explota el !, el cual puede generar resultados inesperados e inclusive impedir el descubrimiento de posiblessoluciones por un apropiado manejo, algo que provoca graves problemas al momento de depurar la aplicacin.

  • 8/8/2019 Interfases Hombre Maquina

    35/147

    Proceso de Lenguaje Natural 15

    Debido a que las clusulas que normalmente integran un programa Prolog se componen por hechos y reglas y lanica negacin es la clusula que se introduce para representar el teorema o problema a resolver - propiamente dicho, nohay ms clusulas negadas en una aplicacin el programador se encuentra ocasionalmente con la necesidad deimplementar un hecho negado es decir una aseveracin de la falsedad de una declaracin, como por ejemplo: maraes padre de pedro o inclusive el negar la veracidad de la conclusin resultante de una regla tal que diga:si X es mujer

    entonces X es padre de Y.Para representar estas situaciones Prolog ofrece el predicado fail el cual una vez satisfecho provocar el efecto inverso,es decir negar lo que se est afirmando; como por ejemplo para negar el hecho:

    >p a d r e ( m a r a , p e d r 0 ) . % c l u s u l a 1

    La clusula se convierte en regla y se agrega como nica condicin fail, el cual una vez probado producir el rechazo dela afirmacin, por lo que el proceso aplicar el backtrack para descubrir otra solucin.

    >pa dre (m ar a , pe dr 0 ) :- f a i l . % c lu su l a 1

    De la misma forma se procede a modificar la regla que se preocupa por validar el gnero del trmino que caracteriza lapaternidad y cuya conclusin debe ser rechazada al adicionar el fail como segundo predicado de la condicin.

    >pa dre (X , Y ) : - m uj e r (X ) , f a i l. % c lu su l a 1

    Si esta regla la probamos junto con el hecho de que mara es mujery el problema es determinar la paternidad depedro,tenemos la siguiente secuencia de instrucciones que conforman al programa 5:

    >% P r o g r a m a 5

    >% Ejem plo d e l em pleo d e l fai l

    > m u j e r ( m a r i a ) . % c l u s u l a 1

    >pa dre (X , Y ) : - m uj e r (X ) , f a i l. % c lu su l a 2

    Al plantea el problema mara es padre de pedro ? mediante el hecho negado:

    > p a d r e ( m a r i a , p e d r o ) ? % p r o b l e m a a r e s o lv e r

    Prolog rechazar cualquier intento de instanciar a mara como padre de alguien por la regla cuya primer condicinvalida su genero.

    Finalmente, volviendo a la naturaleza exhaustiva de Prolog, en el caso anterior buscar otras soluciones al problema depaternidad en una mujer pero esto es un absurdo, por lo que si la base de datos de la aplicacin es muy voluminosaentonces habr un gran overhead gastado intilmente en algo que no tiene solucin por ser en este caso inverosmil. Portal motivo se deber emplear la combinacin cut and fail (es decir secuenciar los predicados !, fail ) en el cuerpo de lacondicin para que de esta forma se cancele el intento de backtrack. Al aplicar este concepto al programa, se inserta en

    la segunda regla el cut antes del fail para generar una nueva versin representada por el programa 6:

    >% P r o g r a m a 6

    >% E j e mp l o de l e m pl e o de l c u t - f a i l par a e l m an e j o de absu rdos

    > m u j e r ( m a r i a ) . % c l u s u l a 1

    >pa dre (X , Y ) : - m uj e r (X) , ! , f a i l . % c lu su l a 2

    Esta combinacin es muy til en aplicaciones complejas del campo de la Inteligencia Artificial en donde se puedeintentar prever la exploracin de rutas que representan absurdos o bien en problemas que no son solubles, y que alidentificar estos casos se evita un desgaste intil de recursos de procesamiento, las cuales se denominan escpticos.

  • 8/8/2019 Interfases Hombre Maquina

    36/147

    16 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    1.4 Aplicaciones: factorial, creacin y bsqueda en listas, etc.

    Durante el proceso de aprendizaje del lenguaje de Programacin Lgica Prolog es una prctica comn elimplementar el clculo del factorial como una forma de entender el manejo de la recursividad a travs del empleo declusulas en forma de hechos y reglas. Como ya se ha vista anteriormente a lo largo de las secciones 1.2 y 1.3, existen

    variantes en su diseo, por lo que en este apartado se expresan algunos aspectos destacados.

    En primer lugar por lo que respecta a la representacin de conocimiento, todos los programas usan bases de datoscompuestas por reglas, salvo el segundo que emplea un par de hechosTodos emplean mecanismos de recursividadAplican bsqueda ciega a profundidadLa direccin de bsqueda es hacia atrs para todos los casosSin embargo el clculo del factorial en los programas 3 y 4 es hacia delante a partir del nmero 1, 2, 3 .... y assucesivamente hasta alcanzar el nmero deseado -. Mientras que en el 1 y 2, la orientacin es hacia atrs, debido a quecomienza decrementando el nmero deseado hasta llegar al 1, y a partir de l se computa el factorial respectivo durantelos retornos de cada nivel recursivo hasta llegar al original donde se genera el valor del factorial solicitadoExisten condiciones que evitan el overhead al impedir el calculo de factoriales menores a 1 como sucede con lacondicin (1 >= N) de la primer regla del programa # 1- o la estimacin del factorial de nmeros superiores al requerido

    tal como se encarga la primer condicin (L > Na) de la quinta clusula del cuarto programa En suma, los cuatro ejercicios ofrecen conceptos adicionales al proceso del factorial como es el empleo de los tipos derecursividad, el uso del cut y el manejo del backtrack; los cuales son indispensables aplicar en programas ms complejos

    Por lo que respecta al manejo de listas, en primer lugar es conveniente considerar su naturaleza. Una lista es unaestructura de datos lineal, compuesta por varios, uno o ningn elemento; los cuales pueden ser otras listas o tomos(constantes y variables) y que nicamente puede ser accesada a partir del primero. Como por ejemplo, para representaruna lista de colores en Prolog, se digita la siguiente instruccin:>colores ( [rojo, azu l , ver de] ) . % c lus ula 1

    >colores ( [ ] ) . % c lus ula 2

    En la primer clusula se aprecia que el nico trmino del predicado colores es una lista compuesta por 3 elementosseparados por comas, los cuales aparecen entre los corchetes [ ]. Mientras que la segunda clusula representa un hechocuyo predicado consta de un termino caracterizado por una listavaca es decir nula.

    Para acceder a los elementos de una lista existen varias opciones, la mas elemental es mediante el establecimiento de unacorrespondencia entre dos predicados a unificar, en donde uno de ellos contiene como trmino a una lista con nnmero de elementos y el otro emplea una variable libre que ser sustituida por la lista completa o bien por un elementoespecfico de ella como se muestra en el programa 7, donde a partir del hecho colores que contiene una lista con 3elementos (atmicos) se plantean dos problemas; el primero dedicado a recuperar la lista completa en una sola variable(X) y el otro que emplea tres variables contenidas dentro de los corchetes [A, B, C] con la intencin de obtener el valorindividual de cada uno de ellos:

    >% P r o g r a m a 7

    >% E je m pl o de ac c e so a l i s t as

    >colores ( [rojo, azu l , ver de] ) . % c lus ula 1

    >c ol ore s ( X )? % prob l e m a 1: ac c e so a t oda l a l is t a

    X = [ ro j o , azu l , v e rde ] % so l uc i n a l pro b l e m a 1

    >c ol ore s ( [A , B , C] )? % pro b l e m a 2: ac c e so a c ada e l e me n t o de l a l is t a

    A = ro jo

    B = azu l

    C = v e rd e % so l uc i n a l prob l e m a 2

    Con respecto al ejemplo anterior las lneas que no comienzan con el smbolo > corresponden a la respuesta que Prologgenera al problema que previamente se le plantea mediante la clusula negada (predicado (trminos) ?). Ahora bien, siel usuario solo se interesa en acceder a un elemento especfico bastar con reconocer la posicin que ocupa para que lecorresponda una variable que ser sustituida al momento de la unificacin.

  • 8/8/2019 Interfases Hombre Maquina

    37/147

    Proceso de Lenguaje Natural 17

    Mientras que a los elementos que no son de inters, se podr usar una variable distinta para cada uno de ellos (como enel ejemplo anterior) o bien se podr emplear la variable annima representada por el smbolo _ en el lugarcorrespondiente a los trminos que no importa recuperar, tal como se muestra en el programa 8:

    >% P r o g r a m a 8

    >% E je m pl o de ac c e so a l i s t as

    >colores ( [rojo, azu l , ver de] ) . % c lus ula 1

    >c ol ore s ( [ D , _ , _ )? % pro b l e m a 1 : ac c e so a l p 1e r . e l em e nt o

    D = ro j o % so l uc i n a l pro b l e m a 1

    >c ol ore s ( [ _ , E , _ )? % prob l e m a 2 : ac c e so a l 2do . e l em e nt o

    E = azu l % so l uc i n a l prob l e m a 2

    >c ol ore s ( [F, _ , G )? % prob l e m a 3 : ac c e so a l 1e r y 3 . e l e me n t os

    F = ro j o % so l uc i n a l prob l e m a 3

    G = v e rde

    Por lo que respecta al manejo tradicional de las listas y conforme al estilo que el lenguaje de Proceso de Listas LISPrealiza, la bsqueda de elementos se hace nicamente a travs del primer elemento de ellas conocido como cabeza(CAR en el ambiente LISP) dejando el resto, es decir la cola (denominado CDR en LISP) sin acceder. Para

    representar y ejemplificar el funcionamiento de las dos funciones primitivas de LISP en Prolog se ofrece la siguienteseccin de cdigo del programa 9:

    >% P r o g r a m a 9

    >% Im pl e m e nt a c i n d e l CAR y DR

    >colores ( [rojo, azu l , ver de] ) . % c lus ula 1

    >c ol ore s ( [ A | B ] )? % pro b l e m a 1 : ac c e so a l CAR y CDR de l a l is t a

    A = ro j o % so l uc i n a l pro b l e m a 1: v a l or CAR

    B = [azu l , v e rd e ] % so l uc i n a l prob l e m a 1: v a l or CDR

    >colores ( [ C |_ ] )? % pr oblem a 2 : acceso al CAR

    C = ro j o % so l uc i n a l pro b l e m a 2: v a l or CAR

    >colores ( [ _ | D ] )? % pr oblem a 3 : acceso al CDR

    D =[ azu l , v e rd e ] % so l uc i n a l pro b l e m a 3: v a l or CDR

    En este ejemplo se aprecia el uso del smbolo | para separar la cabeza de la cola, adems que cuando se accede alCAR, Prolog devuelve nicamente al primer elemento (ya se lista o tomo), mientras que tratndose del CDR se obtienecomo respuesta un lista con los elementos restantes despus del primero. Ahora bien, cuando se trata de acceder a loselementos de una lista nula Prolog responde negativamente no, pero al tratar de acceder al CDR de una lista que ya notiene ms elementos mas que el CAR, entonces devuelve una respuesta afirmativa con el valor de una lista vaca, tal ycomo se muestra en el programa 10:>% Progra m a 10

    >% Ac ce so a CDR y l is t a v ac a

    >colores ( [rojo, azu l , ver de] ) . % c lu su la 1

    >c ol ore s ( [ A , _ , B | D ] )? % pro b l e m a 1 : ac c e so a l CAR, a l 3e r el e m e nt o y a l CDR re s t an t e

    A = ro j o % so l uc i n a l pro b l e m a 1: v a l or CAR

    B = v e rde % so l uc i n a l prob l e m a 1: v a l or de l 3e r e l em e nt o D = [ ] % solu c in al pr oblem a 1: va lor de l CDR

    >no m bre s ( [ ] ) . % c lu su l a 2

    >c ol ore s ( [ X | Y ] )? % prob l e m a 2 : ac c e so a l CAR y a l CDR

    N O % n o h a y s o l u c i n a l p r o b l e m a 2

    Por lo que respecta a la creacin de listas, desde el enfoque de LISP hay tres funciones primitivas que se puedenimplementar en su equivalente Prolog tal como se muestra en el programa 11, las cuales se denominan:CONS.- agrega un elemento a la cabeza de una lista, es decir en la posicin CARLIST.- crea una lista a partir de dos elementosAPPEND.- genera una nueva lista a partir de la fusin de dos listas

  • 8/8/2019 Interfases Hombre Maquina

    38/147

    18 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    >% Progra m a 11

    >% Im plem en tac in de CONS, LIST y APPEND

    >con s (A, B , [A | B ] ) . % c lus ula 1

    >c ons (1, [2 , 3] , C )? % pro b l e m a 1: CONS, i nse r t a un e l em e nt o e n l a c abe za de un a l is t a

    C = [1, 2 , 3] % so l uc i n a l prob l e m a 1: e l em e nt o i nse r t a do e n e l CAR de l a l is t a

    >c ons ( [1] , [2 , 3] , C )? % prob l e m a 2: CONS , i nse r t a un a l is t a e n l a c abe za de un a l is t aC = [ [1] , 2 , 3] % so l uc i n a l pro b l e m a 2: l is t a i nse r t a da e n e l CAR de l a l is t a

    >li s t (D, E , [D, E ] ) . % c lus u la 2

    >li s t ([1] , [2, 3] , F )? % pr oblem a 2: LIS T, crea un a l i s ta con do s l i s tas

    F = [ [1] , [2 , 3] ] % so l uc i n a l prob l e m a 2: de v u e l v e un a l is t a c on 2 l is t as c om o e l em e nt os

    >l is t (1, [2 , 3] , G )? % pro b l e m a 3: L IST , c re a un a l is t a c on un t om o y un a l is t a

    G = [1, [2 , 3] ] % so l uc i n a l pro b l e m a 3: de v u e l v e un a l is t a c on un t om o y un a l is t a

    >l is t ( [1] , 2 , H )? % pro b l e m a 4: L IST , c re a un a l is t a c on un a l is t a y un t om o

    H = [ [1] , 2] % so l uc i n a l prob l e m a 4: de v u e l v e un a l is t a c on un a l is t a y un t om o

    >l is t (1, 2 , J )? % pro b l e m a 5: L IST , c re a un a l is t a c on dos t om os

    J = [1, 2] % so l uc i n a l prob l e m a 5: de v u e l v e un a l is t a c on dos t om os

    >ap pe n d ( [ ] , L , L ) . % c lu su l a 3

    >ap pe n d ( [ Car | Cdr] , L2 , [Car | L3] ) :- ap pe n d(Cdr , L2 , L3) . % c lu su l a 4

    >ap pe n d ( [1] , [2 , 3] , K )? % pr ob l e m a 6: APPEND, c re a un a l is t a a pa r t i r de l is t as

    K = [1, 2 , 3] % so l uc i n a l pro b l e m a 6: de v u e l v e un a l is t a con los e l em e nt os de l as l is t as or i g ina l e s

    >a p p e n d (1, [ 2 , 3 ], M )? % p r o b l e m a 7 : A P PE N D , c r ea u n a l is t a a p a r t i r d e u n t o m o y u n a li s t a

    NO % no ha y so l uc i n a l pro b l e m a 7: pu e s e l 1e r . E l em e nt o no e s un a l is t a

    >ap pe n d ( [ ] , [ ] , N )? % prob l e m a 8: APPEND, c re a un a l is t a a par t i r de 2 l is t as v a c as

    N = [ ] % so l uc i n a l pro b l e m a 8: de v u e l v e un a l is t a v ac a

    Finalmente, entre las funciones clsicas de LISP en la manipulacin de listas se encuentra member avocada adeterminar si un elemento es miembro o no de una lista, como se muestra en el programa 12:

    >% Progra m a 12

    >% I m p l e m e n t a c i n d e M e m b e r

    >m e m be r (_ , [ ] ) :- !, f a i l . % c lu su l a 1: No se e nc on t r e l e l e me n t o

    >m e m be r (E , [ E | _ ] ) :- ! . % c lu su l a 2 : S i s e e nc on t r

    >m e m be r (E , [ _ | Cdr ] ) :- m e m be r (E , Cdr ) . % c lu su l a 3 : r e g l a r e c urs i v a de bsq ue d a

    >m e m b e r ( 1, [2 , 1] ) ? % p r o b le m a 1: b s q u e d a d e u n e le m e n t o q u e S I e s m i em b r o d e u n a l is t a

    Y E S % s o lu c i n a l p r o b l e m a 1: s i e s m i em b r o

    >m e m b e r ( 5 , [ 2, 1] ) ? % p r o b le m a 2 : b s q u e d a d e u n e le m e n t o q u e N O e s m i em b r o d e u n a l is t a

    N O % n o h a y s o l u c i n a l p r o b l e m a 2 : y a q u e N O e s m i e m b r o

    En el mbito de la Inteligencia Artificial el uso de listas es ampliamente aprovechado para efectos de representacin deconocimiento y procesamiento simblico, por lo que se sugiere profundizar en su comprensin y aplicacin a efecto de

    estar en condicin de aprovecha mejor la literatura, programas y aplicaciones que forman parte del acervo.

    1.5 Predicados: declarativos, aritmticos, de comparacin, entrada y salidaProlog como cualquier lenguaje de programacin dispone de un repertorio de palabras reservadas para finesespecficos de proceso y declaracin de elementos; en el caso particular, corresponde al conjunto de predicadosreservados representados por palabras o smbolos especiales encargados de probar una condicin particular o ejecutaruna tarea especfica, los cuales pudieran acompaarse de trminos obligatorios u opcionales. En lo que respecta a lospredicados declarativos, prcticamente son mnimos y se orientan a expresar directivas a la mquina de inferencia encuanto a controlar la bsqueda de soluciones, el manejo de predicados y la terminacin del proceso de una aplicacin, taly como se describen e ilustran en el programa 13 presentado a continuacin:

  • 8/8/2019 Interfases Hombre Maquina

    39/147

    Proceso de Lenguaje Natural 19

    Solveone.- instruye a Prolog para que una vez encontrada la primer solucin al problema planteado, concluya laexploracin de adicionalesSolveall.- anima a buscar todas las posibles soluciones

    >% Progra m a 13

    >% I l us t ra c i n de pre d i c ad os de c l ara t i v os

    >color(r ojo) . % c lus ula 1:

    >c ol or (v e rde ) . % c lu su l a 2 :

    >c ol or (azu l ) . % c lu su l a 3 :

    >c ol or (X)? % pro b l e m a 1: bu sc a t oda s l as pos i b l e s so l uc i one s

    X = ro j o % so l uc i n a l prob l e m a 1: o f re c e t oda s l as so l uc i one s

    X = verd e

    X = azu l

    >so l v e one ? . % c lu su l a 4 : s e i n t rod uc e un a d i re c t i v a a Pro l og

    Y ES

    >c o lo r ( X ) ? % p r o b l e m a 2 : b u s c a l a p r i m e r r e s p u e s t a

    X = r o j o % s o l u c i n a l p r o b l e m a 2 : b r i n d a u n a s o l a r e s p u e s t a

    M o re ?>; % a l r e spon de r c on e l s m bol o ? bu sc a o t ra so l uc i n

    X = v e r d e % s o lu c i n a l p r o b l e m a 2 : s e g u n d a r e s p u e s t a e n c o n t r a d a>sol v e a l l ?. % c lu su l a 5 : s e i n t rod uc e un a d i re c t i v a a Pro l og

    Y ES

    >c ol or (X)? % pro b l e m a 3: bu sc a t oda s l as pos i b l e s so l uc i one s

    X = ro j o % so l uc i n a l prob l e m a 3: o f re c e t oda s l as so l uc i one s

    X = verd e

    X = azu l

    El predicado functor (T, F, N) es muy til para el anlisis y construccin de estructuras, se compone de tres trminos; elprimero (T) es una estructura, el segundo (F) es el predicado o funcin de la estructura, mientras que F refleja laaridad (es decir el nmero de trminos que contiene el predicado dentro de la estructura). Los primeros dosargumentos (T, F) no pueden ser listas, ni tampoco se pueden usar variables para definir al segundo y tercer trmino (F,N). Por lo que respecta a su aplicacin es posible aprovecharlo como lo hace el programa 14 de la siguiente forma:

    Descomposicin.- cuando T est instanciado por un tomo o estructura (predicado con trminos), F retorna el nombredel predicado y N la aridadCreacin.- produce una estructura en la variable libre T, formada por el nombre del predicado expresado por F y por elnmero de variables libres (_1, _2, .....) que seala el nmero identificado por N

    >% Progra m a 14

    >% Ej e mp l o de l m an e j o de l pre d i cad o f un c t or

    >f u n c t o r ( a m i g o ( j u a n , p e d r o ) ) , F, N ) ? %p r o b l e m a 1: d e s c o m p o s i ci n d e u n a e s t r u c t u r a

    F = a m i g o % s o l u ci n a l p r o b l e m a 1

    N = 2

    >f u n c t o r ( T , a m i g o , 2 ) ? %p r o b l e m a 2 : d e s c o m p o s i ci n d e u n a e s t r u c t u r a

    T = a m i g o ( _ 1 , _ 2 ) % s o lu c i n a l p r o b l e m a 2

    Sin embargo, antes de mostrar un ejemplo relacionado con su aplicacin en la generacin de cdigo dinmico, esconveniente presentar un par de predicados ms que contribuirn a editar el ejemplo; el primero de ellos es la funcincall (P) orientado a invocar la prueba del predicado contenido en la estructurada almacenada por la variable P, para quepueda tener xito. Es decir, si por ejemplo P = amigo(juan, carlos) se puede probar esta declaracin mediante elpredicado call(P) claro est que antes P debi haber sido instanciada. Esta funcin es equivalente a invocar el examendel predicado amigo(juan, carlos) su ventaja radica en liberar al programador de editar el nombre del predicado antes dela ejecucin del programa, lo que significa hacer cdigo esttico clsico. En complemento a la edicin de cdigodinmico se puede emplear el predicado univ representado por los smbolos concatenados =.. los cuales funcionanacompaados por un par de trminos de acuerdo con el formatoX =.. Y encargndose X de instanciar a un trmino,mientras que Y a una lista. Como por ejemplo, amigo(juan, carlos)=.. Y instanciar a la variable libre Y con el valor[amigo, juan, carlos].

  • 8/8/2019 Interfases Hombre Maquina

    40/147

    20 Interfases Hombre-Mquina: Basadas en el Lenguaje Natural

    En cambio si el planteamiento es X =.. [amigo, pedro, ana] dar vida a una estructura con el predicado amigoacompaado por los trminos pedro, ana es decir: amigo (pedro, ana). Dicho a lo anterior se procede a mostrar elprograma 15 el cual es capaz de responder a diversos tipos de consulta por medio de un predicado nico al momento deplantear la consulta:

    >% Progra m a 15

    >% Co n s u l t a s a d i v e r s o s t i p o s d e c o n c e p t o s d e u n a b a s e d e d a t o s

    >am i go ( rau l , m ar i o ) . % c lu su l a 1: he c ho

    >am i go ( rau l , an a) . % c lu su l a 2 : he c ho

    >e sposo ( rau l , e l ena ) . % c lu su l a 3 : he c ho

    >pa dre s (da v i d , rau l , e l ena ) . % c lu su l a 4 : he c ho

    %c l u s u l a 5 : h a c e c o n s u l t a s c o n p r e d i ca d o s d i n m i co s , d e a c u e r d o c o n l o s s i g u i en t e s r o l e s :

    % R .- n o m b r e d e l p r e d i ca d o a c o n s u l t a r

    % T. - n m e r o d e t r m i n o s q u e t i e n e e l p r e d i c a d o

    % V .- v a r i a b l e li b r e d o n d e s e d e p o s i t a e l r e s u lt a d o d e l a b s q u e d a

    % P. - v a r i a b l e li b r e d o n d e s e d e p o s i t a e l p r e d i c a d o q u e s e g e n e r a d i n m i ca m e n t e

    % V .- v a r i a b le l ib r e d o n d e s e d e p o s i t a u n a l is t a c o n l a c u a l s e r e p r e se n t a a l a c l u s u l a c o n l a q u e s e

    u n i fi c e l p r e d i c a d o P p a r a d e e sa f o r m a g e n e r a r u n a r e s p u e s t a a la c o n s u l t a

    >re lac ion(R , T , V):- fun c tor ( P , R , T) , cal l (P) , P=. .V .>re l ac ion (am i go , 2 , X )? %pro bl e m a 1. c onsu l t a l as r e l ac ione s e n t re am i gos

    X =[ a m i g o , r a u l , m a r i o ] % s o l u c i n a l p r o b l e m a 1

    X = [ a m i g o , r a u l , a n a ]

    >re l ac ion (e sposo , 2 , Y )? %pro bl e m a 2 . c onsu l t a l as r e l ac ion e s e n t r e e sposos

    Y =[e sposo , rau l , e l ena ] % so l uc i n a l pro b l e m a 2

    >re l ac ion (pa dre s , 3 , Z )? % probl e m a 3 . c onsu l t a l as r e l ac ion e s e n t r e pa dre s

    Z =[ pa dre s , da v i d , rau l , e l ena ] % so l uc i n a l pro b l e m a 3

    En complemento al uso de predicados declarativos, el % representa un comentario, exit indicar a Prolog dar porterminada la ejecucin del programa y de la sesin, mientras que halt suspende el proceso que se est realizando sin darpor concluida la sesin.

    Con relacin a los predicados aritmticos Prolog no es un lenguaje orientado al clculo matemtico por lo que el

    usuario deber implementar sus propios predicados o bien de realizar alguna interfaz con otra herramienta msespecializada, sin embargo se pueden hacer cmputos numricos elementales de asignacin mediante el predicado issuma, resta, multiplicacin, divisin y el residuo mediante los smbolos + - * / mod respectivamente, tal como semuestra en el programa 16:

    >% Progra m a 16

    >% Uso de pre d i c ados ar i t m t i c os

    >sum a (E1, E2, R) :- R i s E1 + E2 % c lus u la 1: su m a

    >res ta (E1, E2, R) :- R i s E1 - E2 % c lu su la 2:res ta

    >m u l t ipl ica (E1, E2, R) :- R i s E1 * E2 % c lus u la 3: m ul t ip l icac in

    >div ide (E1, E2, R) :- R i s E1 / E2 % c lus ula 4: div i s in

    >re s i duo (E1, E2 , R ) : - R i s E1 m od E2 % c lu su l a 5 : r e s i du o

    %p r o b l e m a 1. o p e r a c i o n e s a r i t m t ic a s>sum a (1, 2 , R1) , r e s t a (R , 0 , R2) , m ul t i p l i ca (R 2 , 3 , R3) , d i v i de (R3 , 4 , R4) , r e s i duo(R 3 , 4 , R5)?

    R1 = 3 % so l uc i n a l pro b l e m a 1

    R 2 = 3

    R 3 = 9

    R 4 = 2

    R5 = 1

    En lo concerniente a los predicados de comparacin Prolog emplea smbolos convencionales, abreviaturas y palabrasreservadas, los cuales son presentados y ejemplificados por el programa 17 que se muestra a continuacin:= igualdad entre dos trminos: X = Yeq igualdad entre dos trminos: X eq Y

  • 8/8/2019 Interfases Hombre Maquina

    41/147

    Proceso de Lenguaje Natural 21