Compilando y ejecutando el ejemplo básico: Protege-OWL API

octubre 18, 2010

Hacía mucho tiempo que no usaba Java y hoy, al tratar de ejecutar el ejemplo más simple (Tutorial), no me salía. No uso IDEs y uso Linux (Ubuntu) por lo que la configuración del entorno tenía que ser distinta.

No bastaba con agregar el directorio de los JAR por lo que un script solucionó el asunto. A continuación se muestra el archivo .java y el script.

El archivo de ejemplo es OWLAPIDemoApplication.java:

import edu.stanford.smi.protege.exception.OntologyLoadException;
import edu.stanford.smi.protegex.owl.jena.*;
import edu.stanford.smi.protegex.owl.ProtegeOWL;
import edu.stanford.smi.protegex.owl.model.*;

public class OWLAPIDemoApplication {

public static void main(String[] args) {

try {
OWLModel owlModel = ProtegeOWL.createJenaOWLModel();
owlModel.getNamespaceManager().setDefaultNamespace(“http://hello.com#”);
OWLNamedClass worldClass = owlModel.createOWLNamedClass(“World”);
System.out.println(“Class URI: ” + worldClass.getURI());
}
catch (OntologyLoadException oe){
oe.printStackTrace();
}
}
}

El siguiente script agrega los JAR, compila y ejecuta. Estoy suponiendo que el .class está en el mismo directorio del proyecto.

#!/bin/bash

export JAR_HOME=/home/blanca/Protege_3.4.4
export JAR_PLUGINS=/home/blanca/Protege_3.4.4/plugins/edu.stanford.smi.protegex.owl

for f in $JAR_HOME/*.jar

do
A=$A:$f
done

for g in $JAR_PLUGINS/*.jar

do
B=$B:$g
done

JAR_CLASSPATH=$A$B:”/home/blanca/cenidpd/talkprotege”
export JAR_CLASSPATH

#echo the classpath $JAR_CLASSPATH

javac -classpath $JAR_CLASSPATH OWLAPIDemoApplication.java
java -Dprotege.dir=$JAR_HOME -classpath $JAR_CLASSPATH OWLAPIDemoApplication

La salida es:

Class URI: http://hello.com#World

==========

Ajusta paths y ejecuta el script. Aquí no sale identado.

También se encuentra en el github.

Anuncios

Eligiendo herramientas

octubre 13, 2010

Encontrar las herramientas adecuadas para realizar una tarea no siempre es sencillo. Puedes usar lo que ya conoces sin importar si es lo más indicado o no. Con buena suerte, lo que ya conoces es lo adecuado y todo sale bien. Sin embargo, si no es así, el tiempo que ganarías según tú por conocer bien la herramienta en cuestión, se perdería al tener que trabajar más para cubrir sus deficiencias. Recientemente me encontré en una situación semejante.

Perl ha sido mi lenguaje de scripts favorito desde hace varios años. Su flexibilidad hace que puedas obtener resultados rápidamente. Una desventaja es que fácilmente puedes tener un código muy críptico y desordenado que al poco tiempo no entiendas. Mi dilema surgió recientemente: ¿seguiría usando Perl para el proyecto actual?, si era así, ¿era lo indicado?. Así, tratando de evitar aspectos emocionales como “… es que en Perl hice la transformación de datos que más me ha divertido …” y cosas parecidas, decidí buscar lo que luce más conveniente al proyecto.

 

Perl: el hippy, liberal, relajado

Buscaba algo que hiciera énfasis en el análisis estadístico y también que, como Perl, permitiera pegar cosas (Glue Language). Así, después de considerar distintas alternativas, he escogido Python como lenguaje de propósito general y R para la parte estadística. A diferencia de Perl, Python te exige mayor formalidad; es como la dama de La dama y el vagabundo. Por ejemplo, en Perl puedes escribir el código identado o sin identar, es indistinto.  En Python, por el contrario, la identación es un deber, no cuestión de estilo ni de buenas prácticas. Lo ideal sería que se tuvieran buenos hábitos con todos los lenguajes pero sabemos que en la práctica, eso difícilmente se cumple. Después de hacer algunos pininos,  he sentido las ventajas de Python, pero lo admito, Perl sigue siendo mi favorito.

 

Python: el formal, el elegante

En cuanto a R, su fortaleza radica en el análisis estadístico y  lo poco que he probado hasta ahora, me ha convencido. Sobre R ya había leído diversos comentarios, la mayoría positivos; sin embargo, fue un  análisis estadístico muy interesante lo que me hizo volver a poner mis ojos en él.

Pero, ¿cómo usar R desde Python? todo indica que rpy es lo que busco para aprovechar lo mejor de ambos mundos.

La experiencia y los resultados que se logren mostrarán si son buenas elecciones.

===

Imagen hippy, del usuario de flickr gabbahey


Imagen corbata
, del usuario de flickr fhashemi


Sistemas de recomendación: un panorama general

octubre 3, 2010

El mes pasado inicié un postdoc en investigación sobre sistemas de recomendación. La semana pasada hice la primer presentación sobre el tema. Me ha gustado mucho. Anexo la presentación.


¿Cuál sería el soundtrack de tu vida algorítmica?

julio 9, 2010

¿Recuerdas? Cuando tu algoritmo marcó "Out of memory" tenías puesta esta canción. Sigh.

La música forma parte importante de nuestras actividades; tienes canciones favoritas, y otras que aunque no lo son tanto, por alguna razón son muy significativas. A lo largo del tiempo vas haciendo asociaciones música-hechos, como una tabla hash. Cómo olvidar ese examen de cálculo durante el primer año de la licenciatura. El examen se realizó un Sábado y en el exterior, la canción “Lo mejor de tu vida” era puesta de forma continua. Fue una auténtica tortura, tanto, que desde ese día detesté la música de Julio Iglesias.

Durante mi tiempo de mayor intensidad en la aplicación del aprendizaje automático, hubo música que fue determinante en el éxito de las técnicas y el trabajo relacionado. A continuación, una breve selección:

Canción Hechos
Penguins – Earth Angel Gracias a esta canción me salió el protocolo de conexión y el robot por primera vez se movió usando las reglas aprendidas por clonación.
Snow Patrol – Signal Fire Escuchando ésto, pude integrar la parte de localización con las reglas de control (Prolog-C).
Enrique Iglesias – Dímelo Con ella, logré hacer más aprendizaje automático de programas teleo-reactivos. Por azares del destino el hijo de Julio Iglesias aparece en mi soundtrack. Escucharla facilitó también el uso de ALEPH.
Josh Groban – Gira Con Me Para escuchar cuando se usa ALEPH; me ayudó a encontrar errores extraños (¿acaso hay otros?)
RBD – Solo quédate en silencio Golpéenme, si, no sé qué hace aquí pero me facilitó la escritura de scripts con Perl.
Colplay – Viva la vida Útil para la preparación de las presentaciones y escritura de artículos.
Augustana – Boston
Sarah Brightman – Once in a lifetime Cuando las correcciones saturen tu vida, éstas dos son ideales.
Amici Forever – Song to the moon

¿Qué es lo que hace que cierta ilógica música te inspire a realizar algo específico? ¿Acaso Earth Angel debe incluirse en el manual para sockets? Estoy segura de que no, pero al menos en mi caso, sé que Earth Angel fue un ingrediente básico para que la conexión saliera bien.

¿Qué música ha sido especialmente significativa para el desarrollo de tus proyectos?

Photo by Flickr user get directly down licensed under CC2.0


De la novedad a lo común sólo hay un paso: la importancia de una buena búsqueda

junio 25, 2010

A un cocinero neófito le fue encargada la elaboración de un postre basado en calabaza. El cocinero, emocionado, se dio a la tarea de hacer algo que según él, sería muy original. Después de documentarse sobre recetas diversas, elaboró y presentó unos muffins de calabaza usando una receta con una variante propia. Aunque lo felicitaron porque los pastelillos le quedaron deliciosos, nadie le hizo comentario alguno sobre la originalidad de su receta. Su jefe, un chef sudamericano, sabía que los muffins de zapallo con esa variante son algo común, y aunque no por ello poco valorados en la gastronomía, lo que acababa de probar no era una receta nueva. El cocinero no sabía que a la calabaza se le conoce como zapallo en tierras del sur por lo que al revisar recetas de calabaza, no advirtió que su variante ya existía.

Lo mismo pasa con los las técnicas que se usan en diversas áreas de la ciencia. Puede ocurrir que dentro de un área se desarrolle una técnica que no había sido usada antes por lo que se etiqueta como “nueva” pero, si se indaga en otras áreas, podrías encontrar que ya existe, aunque con otro nombre. Aunque lo ideal sería poder identificar la existencia de esa técnica y referenciarla, difícilmente se puede abarcar todo, especialmente si las áreas no son muy relacionadas. Generalmente, lo que se hace es definir el contexto y las condiciones sobre las que se desarrolla y aplica la “nueva” técnica, de ese modo se expresa que dentro de un alcance específico es algo innovador.

Por ejemplo, el caso del aprendizaje por demostración en el que un robot se observa a si mismo en vez de observar a otros,  es básicamente clonación de comportamiento. Sin embargo, en el aprendizaje por demostración a este caso se le conoce como auto-imitación.

No sobra realizar esa búsqueda que has estado postergando.

" También se llama zapallo 😥 " - pensamiento del cocinero quien ya pensaba ponerle su nombre a los muffins -

Photo by Flickr user unk’s dump licensed under CC2.0


¿Cómo se adquiere una habilidad?

junio 18, 2010

Cuando estudiaba la preparatoria me di cuenta de que carezco de habilidad para el dibujo.  Al ver dibujo técnico en mi lista de materias imaginé que sería divertido; no sabía lo que me esperaba. El profesor hizo énfasis en el dibujo de proyecciones isométricas y nuestro trabajo era dibujar el objeto a partir de las vistas que el profesor proporcionaba. Algunos de mis compañeros tenían la habilidad de reconstruir el objeto en la mente al instante y lo plasmaban en el papel de forma veloz y precisa. Yo tardaba horas para tener una aproximación de dudosa exactitud. Así supe que nunca sería arquitecta, ni diseñadora gráfica, ni algo parecido. Estaba en un problema, necesitaba salir bien en la materia. Lo que tenía que hacer era saber cómo hacerlo y practicar. ¿Lograría aprender a hacer los dibujos? ¿Cómo adquirir la habilidad?

Puf, puf, me pregunto: ¿cuándo tendré la habilidad para subir?

Cuando queremos aprender algo, primero aprendemos lo básico, practicamos, adquirimos nuevo conocimiento y a medida que el conocimiento y la práctica aumenta, nuestra habilidad crece y nos hacemos expertos. La adquisición de una habilidad consta de dos componentes: el cognitivo y el subcognitivo. La parte cognitiva es el cómo-hacerlo, es adquirir el conocimiento sobre lo que se quiere aprender. Por ejemplo, si estás aprendiendo un nuevo idioma, primero aprendes la gramática, la pronunciación básica y expresiones simples. Conforme avanzas, vas adquiriendo nuevo conocimiento y practicando, incrementando tu dominio del lenguaje. En el componente cognitivo se te enseña algo nuevo, piensas en ello, lo expresas en tus propias palabras, observas cómo la nueva información se ajusta a otras cosas que ya sabes; estás consciente de lo que aprendes.

Por otro lado, el componente subcognitivo es la modificación de la habilidad que ocurre con la práctica y se da de manera automática. La práctica lleva al perfeccionamiento de la habilidad, a dominarla, a ser un experto. Sin embargo, si el conocimiento recibido fue equivocado, la habilidad se perfeccionará pero siempre con un resultado defectuoso. Por ejemplo, si en el aprendizaje de un nuevo idioma se enseñó mal la pronunciación, la práctica se hace de acuerdo a esa mala pronunciación. Sólo adquiriendo conocimiento nuevo que sustituya al equivocado y practicando se puede corregir el error. En este caso, los órganos que intervienen en la pronunciación tienen que ajustarse gradualmente al nuevo conocimiento adquirido, lo que va más allá del alcance de quien pronuncia. No se le puede ordenar explícitamente a los músculos cómo moverse. Esta es la parte subcognitiva, lo que conscientemente no puede modificarse ni explicarse.

Regresando al dibujo técnico, recuerdo que en ese momento yo no estaba pensando en el proceso de adquirir la habilidad. Traté de entender las clases, cosa que no me dio buen resultado. Consulté material adicional y resolví ejercicios por mi cuenta hasta que logré hacer los trabajos en tiempo razonable. Vaya, al principio la regla T se me movía, me salían líneas dobles y tenía que repetir el trabajo. Poco a poco, el uso de la regla T era automático y no tenía que hacer el dibujo primero a lápiz y luego con el estilógrafo. A falta de una habilidad natural para el dibujo, tuve que dedicarle mucho tiempo a aprender y a practicar. No logré ser una experta, pero pude aprobar decorosamente la materia.

¿Cómo automatizar el proceso de adquisición de una habilidad?

Referencia

Photo by Flickr user dhaneshr, licensed under CC2.0


¿Qué es un modelo?

junio 4, 2010

La palabra modelo tiene múltiples significados que se aplican en diversos contextos. Al mismo tiempo, es una palabra de uso común:  salió un nuevo modelo de notebook, maneja un auto último modelo, el modelo económico no es el adecuado. En ocasiones, el significado puede ser confuso.

Tengo la sensación de estar en el post equivocado

Cuando inicié la maestría, hubo una conferencia en la que los investigadores presentarían los temas de tesis que tenían disponibles. En ese momento, yo estaba en busca de un tema de tesis y asistí. Un tema llamó mi atención: “Tutores Inteligentes” en la cual,  el objetivo era el aprendizaje automático de modelos del estudiante para un problema de control (el péndulo invertido). No me quedaba claro qué significaba obtener modelos del estudiante; lo que me gustó eran las técnicas de aprendizaje automático que se aplicarían. Ya entendería de qué se trataba el asunto de los modelos.

Una vez tomado el tema de tesis, me di cuenta de que el modelo esperado consistía en el conocimiento de cómo funciona el mundo. El mundo era el péndulo, las variables que intervenían en su control. Lo que se esperaba era la descripción explícita del comportamiento de los estudiantes al controlar el péndulo. Por medio de algoritmos de inducción se obtuvieron conjuntos de reglas que describían el desempeño de los estudiantes.

Si vemos la analogía con el perro que aprende a sentarse, el modelo es el conjunto de reglas que hace que se siente: Si mi humano dijo Siéntate y estoy en la sala y mi pata-inferior-derecha = no-flexionada, entonces la flexiono. Las reglas expresan las relaciones entre las variables del problema y asignan una acción para el estado actual de las variables.

De esta manera, a la palabra modelo se le quitó el velo y lo que siguió fue la parte interesante: la inducción.

Photo by Flickr user cleitner, licensed under CC2.0


A %d blogueros les gusta esto: