<$BlogRSDUrl$>

Pro·Log·[IR]

Programación Lógica y Recuperación de Información

«Algorithm = Logic + Control» Robert Kowalski (1979)

¡Importante! esta página hace uso de estilos recogidos en la especificación CSS2, no soportados por el navegador que está utilizando. Por favor, lea esta recomendación al respecto.

Archivo

Guardado por meses.

Enlaces

Los siguientes listados son una referencia a partir de la cual ampliar la búsqueda de sitios relacionados (i).

Bitácoras en castellano

Bitácoras en inglés

Directorios, metablogs

Programación lógica, Inteligencia Artificial, Recuperación de Información

Usabilidad, Arquitectura de la Información

Listas, foros, wikis

Matemáticas, ciencias

Miscelánea

Búsquedas

Búsqueda simple en varios de los motores más conocidos. Para mayor precisión, entrar en la página correspondiente e ir al apartado de búsqueda avanzada.

Búsqueda con Google
 

Búsqueda con Yahoo!
 

Búsqueda con AlltheWeb

Varios

Esta página traducida:

Traducción al catalán, internostrum; traducción al portugués, universia.

Reciba un aviso de nuevos comentarios (por Bloglet).


Agregue este sitio a su lector de "feeds" (sindicación mediante el sistema Atom).

Sobre este sitio

Espacio dedicado a la programación lógica y la recuperación de información, con una atención especial al lenguaje Prolog y otros lenguajes afines, pertenecientes al paradigma lógico y declarativo. También se tratará de hablar de estos temas desde la perspectiva de la Biblioteconomía y la Documentación.

En esta página

23.11.03

NLTK: Procesamiento del Lenguaje Natural con Python

Las personas interesadas en la aplicación del lenguaje multiplataforma de script Python [1] [2] [3], al procesamiento del lenguaje natural (PLN o NLP), pueden encontrar en Natural Language Toolkit (NLTK) un conjunto de herramientas de desarrollo, de uso libre, de gran interés y potencial. Este "kit" está formado por varias librerías o módulos, implementados en dicho lenguaje, y orientados a la manipulación de los diversos aspectos involucrados en el PLN: tokenización, parsing, clasificación, gramáticas libres de contexto (CFG), representación y procesamiento de información probabilística, visualización gráfica de estructuras y procesos del lenguaje, expresiones regulares, lenguajes formales y autómatas de estados finitos (FSM, un modelo teórico de representación de estados en número finito o forma simplificada y sencilla de modelar lenguajes naturales; ejemplo de máquina de estados representada en Prolog), etc.

"NLTK [...] is a suite of Python libraries and programs for symbolic and statistical natural language processing. [...] includes graphical demonstrations and sample data. It is accompanied by extensive documentation, including tutorials that explain the underlying concepts behind the language processing tasks supported by the toolkit.

[...] is ideally suited to students who are learning NLP or conducting research in NLP or closely related areas, including empirical linguistics, cognitive science, artificial intelligence, information retrieval, and machine learning. NLTK has been used successfully as a teaching tool, as an individual study tool, and as a platform for prototyping and building research systems."

NLTK forma parte de un conjunto más amplio de proyectos relacionados con el PLN y en general con la lingüística computacional, agrupados bajo la denominación genérica OpenNLP a fin de adquirir una cierta consistencia y coordinación entre ellos (ver al respecto el documento "About"):

"OpenNLP provides the organizational structure for coordinating several different projects which approach some aspect of Natural Language Processing. [...] also defines a set of Java interfaces and implements some basic infrastructure for NLP components."

En la página del proyecto NLTK, de aplicación inicialmente orientada a la labor docente y de investigación llevada a cabo en cursos universitarios relacionados con técnicas de PLN, está disponible numerosa documentación (tutoriales, documentación de la API, informes técnicos, artículos, etc.), existiendo además una lista de correo para estar al tanto de las últimas novedades al respecto, así como otros canales de colaboración y ayuda.

Mencionaremos por último, a modo de ejemplo de aplicaciones referidas al PLN, otra interesante herramienta, HDRUG (Gertjan van Noord, Universidad de Groningen, Holanda), entorno gráfico de usuario para el desarrollo de gramáticas lógicas, parser y generadores para el manejo del lenguaje natural. Este paquete de herramientas está escrito para su ejecución en el entorno Sicstus Prolog (básicamente una implementación de ISO Prolog, con extensiones adicionales; no es de uso gratuito, aunque se puede obtener una copia de evaluación, previa petición) y si bien parece un proyecto algo desactualizado, tiene el interés de mostrar la materialización práctica de una plataforma de PLN, utilizando el lenguaje Prolog en la parte referida al motor lógico y de inferencia y la base de conocimientos.

Por otro lado, Gertjan van Noord es también autor de otros interesantes programas, la mayor parte relacionados con diversos aspectos del PLN, entre otros:

La interfaz gráfica de las herramientas HDRUG y FSA Utilities está resuelta mediante Tcl/Tk (ver los enlaces que sobre este paquete para el desarrollo de GUI's, soportado por la implementación Sicstus Prolog, se referenciaron en una anterior anotación).

[0] comentarios | # | lista |

17.11.03

The Prolog Dictionary y otras referencias terminológicas

Como su propio nombre indica, "The Prolog Dictionary" es un diccionario elaborado por Bill Wilson (profesor del Grupo de Inteligencia Artificial, UNSW), en el que se recogen términos, conceptos y definiciones relacionadas con este lenguaje de programación lógica. Los conceptos analizados (aridad, recursión, corte, cláusula, backtracking, etc.), si bien no son muchos, vienen acompañados de una breve pero clarificadora explicación, perfecta para entender, de forma esquemática, los principios esenciales que le sirven de fundamento. Sería interesante retomar esta iniciativa, realizando una traducción al castellano, con entradas adicionales, no referidas únicamente a Prolog, sino en general a la programación lógica y sus lenguajes, en aquellos aspectos comunes con aquel. Por ejemplo, se podrían añadir, entre otros muchos, los siguientes términos y conceptos:

boundary condition
Condición límite; se refiere al establecimiento de un mecanismo de parada en la implementación de algoritmos recursivos, de forma que estos no entren en un bucle infinito en un punto determinado de su proceso de ejecución.
DCG
Definitive Clause Grammar o Gramática de Cláusulas Definidas. Tipo de notación especial, extensión sintáctica de la sintáxis ordinaria de Prolog, cuyo objeto es la creación de gramáticas formales en forma abreviada, y en consecuencia simplificar y hacer más legibles los analizadores sintácticos. Por ejemplo, la siguiente regla gramatical:
oracion(S0,S):- sintagma_nominal(S0,S1), sintagma_verbal(S1,S).

se escribiría, atendiendo a este tipo de notación, como sigue:

oracion --> sintagma_nominal, sintagma_verbal.
fact
Hecho de la base de datos (o "base de conocimientos"), e.g.
es_de_color(cielo,azul).
autor(nombre(robert), apellidos([kowalski])).
to fail
Fracaso de un objetivo. El predicado predefinido (built-in predicate) "fail/0" hace fracasar siempre un objetivo, y se utiliza en combinación con el predicado "repeat/0" para forzar procesos recursivos en tanto no se cumpla determinada condición.
infix operator
Operador en posición infija, e.g. "\=" en "X \= Y". El operador "\=" comprueba si dos variables X e Y cualesquiera son números distintos, fallando en caso contrario, es decir, si son iguales; para realizar la comparación entre cadenas de caracteres alfanuméricos o "átomos", se utilizan los operadores "==" y "\==".
leashed event
Evento con sujección; esta expresión se refiere a las cuatro clases de eventos que permiten describir la ejecución de programas en Prolog en modo de traza: CALL (llamada), EXIT (salida), REDO (reevaluación) y FAIL (fracaso), cuando están asociados a puntos de sujección mediante puntos espía (spy points) decididos previamente por el programador. Cuando se cumple un evento con sujección, el intérprete permite modificar la ejecución posterior del proceso de depuración del programa cuyo funcionamiento está siendo analizado.

Por otra parte, la asociación de los eventos con objetivos, en este proceso, se realiza asociando a estos últimos un número entero que funciona como identificador unívoco. El funcionamiento por defecto del proceso de seguimiento de la ejecución de objetivos, muestra en pantalla la sucesión de los eventos sin sujección alguna, y por tanto sin posibilidad de modificación de dicho proceso.

to match
Hacer coincidir, corresponder con; este significado se contextualiza en los procesos de unificación de variables y consecución de objetivos en las consultas.
parser, parsing
Analizador sintáctico, análisis sintáctico; un analizador sintáctico se encarga de la construcción de árboles de análisis de las oraciones de una lengua, capaces de representar la estructura sintagmática de las mismas, e.g. para la oración "John likes Mary":
s(np(john),vp(v(likes),np(mary)))

Mediante el programa adecuado, es posible visualizar esta estructura gramatical en forma de árbol descendente:

               s
               |
      +-------------+
      np            vp
      |             |
      |        +-------+
      |        v       np
      |        |       |
      |        |       |
     john    likes    mary
pattern matching:
Mecanismo de comparación de patrones; tiene lugar cuando un objetivo coincide con la cabeza de una regla, que es la parte que se sitúa antes del operador infijo ":-".
postfix operator
Operador en posición sufija, aquel que se coloca después de su argumento. Se entiende por tanto, en contraposición, que el operador prefijo (prefix operator) se sitúa delante del argumento. Así por ejemplo, el operador infijo "+" puede también funcionar en Prolog como operador prefijo, ya que "2+9" es equivalente a "+(2,9)".
satisfaction flow
Flujo de resolución; representación gráfica de la resolución de objetivos mediante cajas distribuidas de arriba a abajo, unidas mediante flechas descendentes cuando los objetivos parciales representados por esas cajas ya han sido satisfechos.
shared variables
Variables compartidas; dos variables, sin instanciar, están compartidas cuando se hacen coincidir una con otra, de forma que cuanto una de ellas queda instanciada, también lo hace la otra.
to sort, sorting
Ordenar, ordenación; la ordenación se lleva a cabo mediante diversos procedimientos algorítmicos: Bubble Sort, Selection Sort, Insertion Sort, Quicksort, Tree Sort, Merge Sort, etc. Estos procedimientos tratan de resolver el problema planteado por la búsqueda de los caminos más cortos (es decir, más eficientes en términos de tiempo y recursos de computación) entre los nodos de un grafo.
sorted-tree
Árbol (de búsqueda) ordenado. Los árboles de búsqueda o decisión adoptan la estructura gráfica de un grafo (dirigido o no), y son una representación de los procesos inherentes a las tareas de clasificación de datos.
spy point
Punto espía; referido a los procesos de depuración (debugging) del código.
trace, tracing
Seguir, seguimiento; hace referencia a un modo de ejecución en el que se visualiza gráficamente la traza o forma en que se resuelven los objetivos y se computan internamente las consultas por parte del intérprete. Una vez que se lanza la orden "trace/0", el resto de la resolución de objetivos sigue este modo gráfico de ejecución, en tanto no se detenga con el predicado "notrace/0".

Parte de esta lista de conceptos se ha tomado de la obra de C.S. Clocksin y W.F. Mellish, ya mencionada en otras ocasiones, "Programming in Prolog" (Springer-Verlag, 1981), y por supuesto son una mínima parte de los que podrían ser añadidos a una versión ampliada del diccionario que venimos comentando.

Por otro lado, "The Prolog Dictionary" forma parte de una serie formada por otros tres diccionarios del mismo autor, referidos a la IA en general y a dos de sus áreas particulares de aplicación:

Destacan por la gran cantidad de conceptos definidos, y la inclusión de numerosas referencias cruzadas entre términos, que sin duda enriquecen su utilidad práctica. Desafortunadamente parecen llevar un cierto tiempo sin ser actualizados. En cualquier caso contienen un bagaje de conceptos que hace más que recomendable su consulta, y por otra parte, al menos en lo que se refiere al lenguaje Prolog, se trata de una iniciativa poco frecuente, la elaboración de un glosario electrónico unificado de términos referidos a este lenguaje, salvo indicación contraria por parte de algún lector que tenga conocimiento de otro trabajo de similares fines y características. Así por ejemplo, FOLDOC, siendo un diccionario de temática muy relacionada, tiene sin embargo un carácter más introductorio y genérico (no se incluye código explicativo, como si encontramos en "The Prolog Dictionary"). En todo caso se trata de una referencia de consulta también más que recomendable:

"[...] is a searchable dictionary of acronyms, jargon, programming languages, tools, architecture, operating systems, networking, theory, conventions, standards, mathematics, telecoms, electronics, institutions, companies, projects, products, history, in fact anything to do with computing."

La iniciativa está abierta a la colaboración de cualquier usuario, mediante la aportación de definiciones no recogidas en el índice, o la ampliación de aquellas no suficientemente aclaradas o extensas. Además, el conjunto del diccionario se puede descargar comprimido en un único archivo.

Sin pretensión alguna de exhaustividad, se pueden mencionar otros diccionarios, glosarios y recopilaciones terminológicas referidas al área de la computación, la programación, la RI, etc., a saber:

En castellano:

Un proyecto bastante más ambicioso, en tanto que pretende convertirse en una encliclopedia general del conocimiento humano, fundamentada sobre la base de una filosofía abierta, es la Wikipedia: la versión original, y más completa, está en inglés; también existe una versión en castellano, entre otros idiomas. La entrada de la versión inglesa dedicada al lenguaje Prolog es bastante decente. Todas las referencias proporcionadas son en cualquier caso un limitado reflejo de lo que seguramente se puede localizar buscando con un poco de paciencia.

Volviendo al comentario de los diccionarios elaborados por Bill Wilson, en la sección "Lecture Notes" -otras ubicaciones: [1] [2]- enlazada desde los mismos, correspondiente a uno de los cursos impartidos por dicho profesor, se localizan una serie de notas de curso e introducciones relacionadas con la representación del conocimiento, el aprendizaje de máquina (machine learning), el procesamiento del lenguaje natural (NLP), la visión computerizada (computer vision) y la programación en Prolog, destacando, en este último caso, como referencia de consulta, el "iProlog Programmer's Manual". Si bien referido a una implementación particular de Prolog (iProlog, que incluye extensiones del lenguaje orientadas fundamentalmente hacia procesos de data mining), el manual contiene varias partes introductorias dedicadas a los fundamentos básicos de este lenguaje, bajo el epígrafe "Introduction to Prolog Programming".

Nótese que el enlace al "iProlog Programmer's Manual" desde "The Prolog Dictionary" es incorrecto, y que las figuras de algunas partes del manual aparecen deformadas, seguramente por algún problema a la hora de trasladar el formato del documento original a HTML. Las figuras correctas se pueden ver en una ubicación alternativa del manual (si bien no incluye la parte referida a las extensiones de iProlog). Las siguientes introducciones están basadas en partes del mismo: [1] [2] [3].

Algunas de las disertaciones o "lecture notes" a las que hacíamos referencia, están en formato PS. Por otro lado, muchas de ellas contienen en su cabecera o parte inicial un campo de palabras clave que remiten, mediante hiperenlaces, a definiciones del diccionario correspondiente, según la materia tratada.

PD: Demian, en GuebEstudio, ha venido publicando desde hace bastantes días un bloque de anotaciones referidas a la IA (ver la categoría Introducción a la informática), en el que podemos encontrar apuntes sobre generalidades de este área de la ciencia cognitiva y computacional, sistemas expertos y representación del conocimiento, RNA, principales lenguajes de programación de aplicación específica a la IA (Lisp, Prolog, Smalltalk, ...), etc. No dejen de leerlos.

[0] comentarios | # | lista |

9.11.03

AI Meeting at Internet (AIMAI), 12-13 noviembre 2003

Mediante un aviso publicado en la lista de distribución INT-ARTIF de RedIris, nos enteramos de la celebración los próximos días 12 y 13 de noviembre del evento AIMAI, "Artificial Intelligence Meeting at Internet". Como su nombre indica se trata de un ciclo de charlas que versará sobre diversos aspectos de la IA, estando previsto su desarrollo a través del canal de IRC "#aimai" (servidor "irc.icodsi.biz"). Los temas que se abordarán son los siguientes:

Para obtener más detalles (ponentes, horarios, "abstracts" de las ponencias, etc.), existe una página específica, desde la que además es posible enlazar con los sitios web de varios departamentos, grupos de trabajo universitarios, y miembros participantes, cuyo ámbito de investigación son las temáticas que centrarán el desarrollo de las charlas, ya que éstas estarán a cargo, en calidad de ponentes, de personal docente e investigador de dichos departamentos (Universidad Carlos III de Madrid, Universidad de Málaga, Universidad Politécnica de Valencia).

A diferencia de las conferencias y actos de otra índole enmarcados en la III Semana de la Ciencia, de la que se daba cuenta en la anterior anotación, en este caso la participación, si el horario no es un impedimento, no requiere una presencia física, así que no hay excusa para no dejarse caer... por otra parte no se exige ningún requisito especial para intervenir en las charlas, más allá de tener interés por los temas tratados.

(*) Las técnicas de "scheduling" se ocupan de la generación, mediante técnicas heurísticas, de algoritmos matemáticos que resuelvan la satisfacción del problema general de la restricción de recursos en un tiempo dado, de cara a la planificación y resolución de un número determinado de tareas (referidas por ejemplo a procesos de contabilidad, control de inventarios, administración de personal, control de producción en la industria, etc.). Superando los métodos algorítmicos tradicionales, en la actualidad se están ensayando aplicaciones basadas en algoritmos genéticos y RNA orientadas a la resolución de problemas de "scheduling". A nivel más general estas técnicas pueden ser consideradas como un proceso de toma de decisiones.

[0] comentarios | # | lista |

3.11.03

III Semana de la Ciencia: Madrid, noviembre 2003

Dentro del amplio conjunto de conferencias, cursos, talleres, exposiciones, jornadas de puertas abiertas, etc., que del 3 al 16 de noviembre se van a celebrar en el marco de la III Semana de la Ciencia, organizada en la región de Madrid por la Consejería de Educación de la Comunidad Autónoma, queremos destacar, por su temática, los siguientes eventos (se citan textualmente las convocatorias):

"Nuevas tendencias de la Matemática: Caos y Fractales" (jueves 6, 18:00h)
Conferencia cuyo objetivo es presentar a personas interesadas nuevas tendencias de la Matemática y especialmente cómo se pueden utilizar los Fractales para modelizar aspectos muy distintos de la Biología, Medicina, Economía, etc. Así como la relación de éstos con los Sistema Dinámicos Discretos y Continuos no lineales que producen Caos.
  • Lugar: Paraninfo. Rectorado A de la UPM - Avda. Ramiro de Maeztu, 7 - Madrid.
  • Ponentes: Adela Salvador Alcaide; Luis Garmendia Salvador; Mariló López González.
  • Información y reserva: Secretaría del Adjunto al Vicerrector de Investigación y Relaciones Institucionales de la UPM / Tel. 91 336 60 88 - Fax. 91 535 27 56 / email: meneses@vi.upm.es.
  • Organiza: Universidad Politécnica de Madrid.

"Nuevas tendencias de la Matemática: Lógica Borrosa e IA" (jueves 6, 19:00h)
Conferencia cuyo objetivo es presentar a personas interesadas una introducción a la Inteligencia Artificial y especialmente a la aplicación de la Lógica Borrosa para hacer razonamiento aproximado del sentido común.

  • Lugar: Paraninfo. Rectorado A de la UPM - Avda. Ramiro de Maeztu, 7 - Madrid.
  • Ponentes: Adela Salvador Alcaide; Luis Garmendia Salvador; Mariló López González.
  • Información y reserva: Secretaría del Adjunto al Vicerrector de Investigación y Relaciones Institucionales de la UPM / Tel. 91 336 60 88 - Fax. 91 535 27 56 / email: meneses@vi.upm.es.
  • Organiza: Universidad Politécnica de Madrid.

"Minería de Datos" (martes 11, 12:30h a 14:30h)
La Minería de Datos permite extraer conocimiento implícito en almacenes de datos. Se explicará la metodología de implantación y sus aplicaciones para el apoyo de toma de decisiones de negocio y mejora de procesos existentes.

  • Lugar: Universidad Europea de Madrid. Auditorio Edificio B - C/ Tajo, s/n - Villaviciosa de Odón.
  • Ponente: Dr. Ignacio Giráldez.
  • Información: Dr. Ignacio Giráldez / Tel. 91 211 56 71 - Fax. 91 616 82 65 / email: giraldez@uem.es.
  • Organiza: Universidad Europea de Madrid - OTRI. Oficina de Transferencia de Resultados de Investigación.

"Inteligencia artificial conexionista" (miércoles 12, 12:00h a 14:30h)
Conferencia sobre Inteligencia Artificial.

  • Lugar: Escuela Politécnica Superior - Urb. Montepríncipe. Ctra. Boadilla del Monte, km. 5,300 - Boadilla del Monte.
  • Ponentes: Mariano Fernández; Daniel Manrique Gamo.
  • Información y reserva: Jezabel Pavón / Tel. 91 372 40 27 - Fax. 91 372 40 49 / email: jpavon.eps@ceu.es.
  • Organiza: Universidad San Pablo-CEU - Vicerrectorado de Investigación. OTRI / Escuela Politécnica Superior.

"La Razón Áurea en las ciencias y el arte" (jueves 13, 11:30h a 12:30h)
Se pretende de un modo sencillo ilustrar cómo aparece el número áureo a lo largo de la historia, desde las sucesiones de Fibonacci hasta la espiral logarítmica. Desde el número áureo en el mundo griego hasta las proporciones de Oro en el arte.

  • Lugar: Universidad Europea de Madrid. Sala de Grados. Edificio A - C/ Tajo, s/n - Villaviciosa de Odón.
  • Ponentes: Susana López; Joaquín Tomas Valderrama.
  • Información: Susana López / Tel. 91 211 56 58 - Fax. 91 616 82 65 / email: susana.lopez@mat.ind.uem.es.
  • Organiza: Universidad Europea de Madrid - OTRI. Oficina de Transferencia de Resultados de Investigación.

Si se accede al buscador de actividades de esta Semana de la Ciencia (bajo el epígrafe "Actividades") y se selecciona "Mesas redondas y conferencias" en el campo "Tipo de actividad", y "Otros" o bien "Historia, Arte y Arqueología" en el campo "Área temática", se pueden localizar bastantes conferencias relacionadas con el ámbito de la Biblioteconomía, la Documentación y la Infometría/Bibliometría:

Se omite la descripción detallada de cada una de las ponencias ya que se extendería en exceso este comentario. No se queden solo con estas referencias: hay muchísimo donde elegir y seguramente más interesante que lo recogido en estas líneas. Así por ejemplo, en "Cursos y Talleres" se encuentran también actividades muy interesantes, referidas a muchas áreas del conocimiento, tanto de las ciencias "exactas" y aplicadas, como de las humanidades y las ciencias sociales.

[0] comentarios | # | lista |


Pro·Log·[IR],

Publicación: Blogger | Estadísticas: eXTReMe Tracking

Se recomienda ver este sitio con Mozilla 1+, Firefox 0.8+ ó Netscape 7+. Si no queda más remedio, con IE 6+. Si lo desea, comunique cualquier problema al respecto. También será bien recibida cualquier sugerencia sobre el contenido. La fuente de letra preferente es Georgia. Se prohibe la utilización del diseño de la página salvo autorización expresa del autor. Los contenidos escritos son de uso libre, siempre que se cite la fuente.