miércoles, 21 de mayo de 2014

Una guia practica de como fui realizando mi tesis usando Protege y Ontologias parte 3

En este articulo ya empezamos con la modelacion de las actividades y la forma de razonamiento. Supongamos que tenemos estos ejemplos para intentar generalizar las actividades.

Propuestas:
(1) Vamos al cine el sábado
(2) Vamos de vacaciones
(3) Vamos a pescar
(4) Vamos dar un paseo por el campus
(5) Vamos al restaurante de mariscos

Respuestas:
· Mañana me voy a Barcelona
· No tengo tiempo
· Estoy ocupado
· Tengo mucho que hacer
· Quería ver esta película desde hace mucho
· No sé pescar
· No tengo caña de pescar
· No tengo dinero
· Tengo sólo 5 euros
· Tengo alergia a mariscos.
· Mi médico me prohíbe el pescado
· Mi hermana ha venido a verme
· Hará mal tiempo
· Tengo que prepararme al examen
· Tengo que examinarme dentro de 2 días

Abrimos Protege, Creamos una nueva ontologia y la denominamos upper-dialogontology.


Tenemos que modelar los diálogos, por lo tanto tenemos que de alguna manera describir las restricciones, luego hemos creado estas clases:



Tenemos una clase RestrictedClass que dentro están definidas Action, Agent y Location; Esto se debe a las restricciones, ya que como Action y Location va a tener requisitos que Agent debe cumplir para poder aceptar la invitación. O sea:

Mauricio: ¿Vamos al cine?
Cristina: No tengo tiempo

Como sabemos el cine (un Place) tiene unos requisitos: tener dinero, tener tiempo, etc. Lo que quiere decir que para ir al cine se necesitan x horas libres, se necesita t cantidad de dinero, etc. Luego en este caso Cristina, tiene la propiedad de tiempo 0, ya que no tiene tiempo, luego no podría ir al cine. Luego la propiedad tener dinero, o hasMoney tiene que tener como dominio las clases restrictivas, estas son Action, Location o Agent. Ya que al cine se va a hacer una Acción, en este caso ver una película. 

Un razonamiento que puede ponerse activo es que, Si voy al cine necesito dinero, por lo cuál ya el lugar (Location) me da las restricciones que necesito. ¿Para que se los pongo a Action? Pues para ver una pelicula en 3D, hacen falta gafas de 3D. Luego la accion tambien requiere sus restricciones.

Tenemos la clase Object que son objetos que se debe tener para realizar una actividad en un lugar, si el agente no tiene el objeto requerido para realizar la acción, no podrá realizarla, luego si se modela que no lo tiene entonces la respuesta seria no. En este caso esta propiedad es hasObject dominio restrictedClass y Imagen o Rango (Range) Object.
 Por ejemplo:

Mauricio: ¿Vamos a jugar tenis?
Abel: No tengo raqueta de tenis

Podemos interpretar que la respuesta de Abel es rechazar la oferta porque no cumple el requisito para ir a jugar tenis que es, tener una raqueta de tenis.

Tenemos la clase Location que es los lugares donde se realizaran las actividades, estos Location tendrán una propiedad defaultAction, que dirá la acción que se realiza generalmente en ese lugar.Claro está que un lugar puede tener varios defaultAction, o sea, que las actividades comunes que se podrían realizar en un lugar sean varias.

Tenemos la clase Food para modelar Alimentos y algunas consecuencias. Como alergia.

En OWL se asume que las clases se solapan. Por lo que, no se puede asumir que una instancia no es miembro de una clase en particular porque no se lo ha especificado que pertenece a esta clase. Para separar un grupo de clases es necesario hacerlos disjuntas unas con las otras.

Para hacerlo bastaría con seleccionar la clase y seleccionar la opción Disjoint with. Y después selecciona las clases que son disjuntas. Por ejemplo: Las clases  Day, Object, Response, RestrictedClass son disjuntas dos a dos, o sea, todas contra todas, ya que un objeto nunca va ser un Dia, una respuesta o un RestrictedClass.

Luego después de especificar la disjuncion entres las clases principales, también se debería especificar entre las clases que pertenecen a un mismo subconjunto y así sucesivamente.

Por ultimo falta especificar la clase enumerativa (enumarated classes), estas clases son las que tienen un conjunto de individuos y solo ese conjunto de individuos. El caso mas clásico es la clase fin de semana (Weekend) que solo contiene a los individuos: Viernes, Sábado y Domingo.

Para especificar una clase enumerativa en Protege, se define usando el editor "Class Description View" y se escribe los individuos separados por comas y entre corchetes. Por ejemplo: {Viernes, Sábado, Domingo}. Los individuos deben ser creados primero en la ontologia. Las clases enumerativas describen en esta manera las clases anónimas. 

En principio estas son las únicas clases que harían falta, al continuar el paso vamos viendo si hacen falta nuevas o no. En el proximo articulo empezaremos definiendo las propiedades.

Una guia practica de como fui realizando mi tesis usando Protege y Ontologias parte 2


¿Porque usar OWL en vez de ProLog u otra herramienta?

Conceptos complejos pueden ser construidos desde definiciones mas simples. Además, el modelo lógico permite el uso de un razonador que puede chequear si las declaraciones y definiciones en la ontologia son mutuamente consistentes y puede también reconocer cuales conceptos encajan en cuales definiciones. El razonador puede por lo tanto ayudar al mantenimiento de la jerarquía correcta. Esto es particularmente útil cuando se manejan casos donde las clases puede tener mas de una clase padre. También las ontologias proveen el consenso de conceptos, y la base de conocimiento publica. Lo que permite ser reutilizado con mayor facilidad.

Componentes OWL

Los componentes de OWL son: Los individuos (o instancias), Propiedades (o atributos) y Clases.
Todos los conceptos son muy parecido a los conceptos de cualquier lenguaje de programación orientado a objetos. Una diferencia importante es que OWL, no usa UNA (Unique Name Assumption), lo que quiere decir, que si dos representaciones tienen nombre diferentes pueden referirse al mismo individuo. En OWL se debe especificar concretamente si un individuo es igual a otro o si un individuo es diferente a otro. De lo contrario podrían ser el mismo, o podrían ser diferentes.

Un individuo no es mas que una instancia de una clase, ejemplos serian: Mareike, Estela, Cristina. Estas serian instancias de la clase Agent. Que representará las clases que hacen propuestas.

Las propiedades en OWL son relaciones binarias de Cosas (Cosa o Thing es la clase mas genérica), por ejemplo: Mareike isA Agent, otra propiedad es: Estela hasTime 10. 

Las clases en OWL, son interpretadas como un conjunto que contiene individuos. Estas son descritas usando descripciones formales para especificar precisamente los miembros de la clase. Las clases son organizadas en taxonomías, como orientado a objetos, las subclases especializan las superclases. Por ejemplo: Las clases Agent y Person, Person es una subclase de Agent, luego todas las personas son agentes. Ser Persona implica que eres un Agente. Una de las mejores características de OWL-DL es que la relación entre subclases y superclases pueden ser calculadas automáticamente por un razonador.

En OWL las clases son especificadas por unas condiciones que debe satisfacer una instancia para que pertenezca a la clase. Como formular esta descripción lo explicaré en el siguiente articulo.

Una guia practica de como fui realizando mi tesis usando Protege y Ontologias parte 1

Introducción

En este articulo intentaré no ir profundizar mucho sobre mi tema de tesis en sí, sino de ver como se implementan las cosas en protege, y porque he tomado esa decisión.

El tema de mi tesis es modelar propuestas de actividades y respuesta de la misma, desde un punto vista de oraciones muy simples (lo cuál puede ser ambiguo lo que se define como simple). Pero el objetivo, es modelar una conversación entre dos personas, el cual la primera persona invita a la segunda persona y la segunda persona responde a esta propuesta. Debo desarrollar una base de conocimiento con sentido común, ya que las respuestas, no deben estar explícitamente si se ha aceptado o no la propuesta. Supongamos la siguiente propuesta:

Mauricio: ¿Vamos al cine el Sábado?
Estela: ¿Mañana me voy a Barcelona?

En esta pequeña conversación, podemos deducir que Estela rechazo la invitación, lo que no esta explícitamente, que Estela no puede ir al cine. Luego el sentido común en este caso es que, si Estela va hacia otro lugar, diferente al sitio que esta ahora, entonces no podrá ir al cine, ya que Barcelona queda muy lejos de Madrid.

Luego la forma de asumir el razonamiento en este caso es el siguiente:

Estela esta en una localización "Madrid", que se asume que sea la misma que Mauricio (lo cuál no tiene porque ser cierto, pero como sabemos tan poco de esa conversación, tenemos que asumir valores), o al menos Mauricio está cerca para que la invitación sea aceptable. El cine también, se supone, por sentido común que esta relativamente cerca de donde esta Estela y de donde esta Mauricio. Ademas, se asume que en el cine se va ir a ver una película, porque nuestro sentido común nos dice que al cine, se va a ver una película. Ademas, asumimos que Estela y Mauricio deben tener una cantidad "D" de dinero para entrar al cine, y deben tener un tiempo "T" para ir al cine. Ademas, como yo estoy en Madrid, asumo que Estela no va poder ir, ya que ella va a Barcelona que esta categorizada como lejos (lejos lo podemos definir como el tiempo de dezplasamiento de un lado a otro, y trabajar con esa definicion) de Madrid, lo que implica que no va ir. Todo este razonamiento, lo tenemos en nuestro cerebro, tenemos un sentido común, y este nos da respuesta de que Estela rechazo la oferta.

Como podemos observar las respuestas de Estela pueden ser:

-No tengo dinero
-No tengo tiempo
-Estoy ocupada
-Tengo mucho que hacer
-No puedo gastar dinero, estoy ahorrando
-Me encanta el cine
-Hace tiempo quiero ir al cine
-Voy a llevar mis gafas 3D.

Estas respuestas se compararían con la modelacion de ¿Estela tiene tiempo mayor o igual del que necesita ir al cine?¿Estela tiene más dinero del que se necesita para ir al cine? etc, etc.

También podemos ver que la respuesta puede o no tener sentido, asumiremos que la respuesta no tiene sentido cuando no encontramos un camino que indique que no se puede o que se pueda realizar la operación.

Por ejemplo: Si Estela responde, "Me da asco los mariscos", esta respuesta no significaría nada, ya que el cine no tiene una relación directa con el marisco. Por lo menos que nosotros sepamos, porque si nosotros modelamos que la película es sobre mariscos, probablemente haga mas sentido. Por lo cual, cuando un suceso no esta modelado en nuestra ontologia, pues diremos que no tiene sentido, ya que nuestro base de conocimiento no lo contempla y por lo tanto no puede responder la pregunta. Sin embargo en el sistema que realizaré sobre esta ontologia, cuando no se sepa como hacer la relación, el sistema sea capaz de preguntar al usuario sobre preguntas claves para que pueda responder a la pregunta. También dando la opción de rechazar totalmente nueva información sobre la actividad. Y decir que no tiene sentido.

Agregaremos unas clases iniciales con una jerarquía, para ir hablando de otras cosas, poco a poco modificaremos estas clases y la jerarquía, según vayamos analisandolo. Las primeras clases son:

Clases

Agente (Persona, Grupo, Institución, etc.): Que puede realizar una invitación.
Action (ver película, pescar, caminar, etc): Actividad que se pretende realizar
Place (Cine, Campus, Hospital, Lake, etc): Lugar donde se realizará la actividad

... Algunas clases las iremos agregando así vaya pasando el tiempo y aumentando las casos, por ahora parece lo que hace falta

Propiedades o métodos

hasTime: el tiempo que requiere la institución para que puedas realizar la actividad, ir al cine requiere de 3h, tambien modelará el tiempo que tiene el agente Estela tiene 5h libres.
hasMoney: Dinero que le hace falta a la institución (al cine hace falta que se lleve 5 euros), dinero que tiene el agente.
isNear (opposite function isFar)
defaultAction : Lo que se supone que se haga en un lugar (En cine es pescar, en un Campus caminar, relajar, etc)
doingAction : Lo que se va realizar en el lugar, porque puede ser que vamos al cine a hablar con alguien, en vez de ir a ver una película.

Modo de razonamiento:

Si agente.hasMoney >= place.hasMoney and agente.hasTime >= place.hasTime and agente.place isNear Barcelona and ...

Si se cumplen todas las restricciones es porque la respuesta será sí, si una sola no se cumple sera no. Si hay alguna propiedad que no se puede encontrar en Agente y que tiene Place como requerimiento, entonces la respuesta es "según el sentido común", se le dará un valor a Estela con esa propiedad o sencillamente sin sentido la respuesta. Ahora si Place no tiene la propiedad de Estela, no importa, ya que no es un requerimiento para ir al lugar. Ademas falta modelar, si dos propiedades implican otra tercera.
Por ejemplo: "Vuelvo temprano de Barcelona", esta frase indica que estará cerca desde temprano, y que estará antes cerca antes de la actividad del cine empiece y por lo tanto podrá ir. Volver temprano-> estar cerca antes que la actividad comience. Ya que volver tarde -> estar cerca pero después de la actividad.

De manera general es como se irán resolviendo las cuestiones, ahora iré modelando estas clases explicándola desde Protege y viendo que cuestiones tenemos que preguntarnos en cada paso. Ademas de después especificar esta manera de razonar desde SPARQL o desde Reglas o desde la propia especificación que hace que el razonador se de cuenta por si solo.

domingo, 18 de mayo de 2014

El Empleo

Un hombre, en su rutina matutina camino al trabajo, se encuentra inmerso en un mundo donde el uso de las personas como objetos es parte de la vida cotidiana. Revelador de la alineación que sufrimos en la sociedad moderna y del escaso espíritu crítico para con aquello que nos viene impuesto, sometiéndonos a fuerza de costumbre a casi todas las reglas. La animación es muy sencilla.
En Portugal, por ejemplo, un asalariado de cada cinco tiene ya un contrato llamado “recibo verde”. Aunque trabaje desde hace años en la misma oficina o la misma fábrica, con horarios fijos, su patrón es un simple cliente al que factura un servicio y quien puede, de la noche a la mañana, sin ninguna indemnización, romper el contrato.
En realidad la conclusión es bastante deprimente dado el panorama actual de degradación constante del mundo laboral, y una no sabe bien si echarse a reír o a llorar.Como sucede hoy, cuando vemos de nuevo aquellas inolvidables escenas de Modern Times, por poner un ejemplo. Significará que algo han aprendido, o tal vez todavía no, quién sabe…
El corto se puede ver aquí:



fuentes:
https://www.facebook.com/photo.php?v=643595152376859&set=vb.139188202817559&type=2&theater
 http://babel36.wordpress.com/2010/04/10/el-empleo-de-santiago-brou-grasso/