sábado, 26 de julio de 2014

Tips and Trick that I use with Google


At first Google just made search, without many option to search. Today Google has too many option. Since the simplest search option, that is, the clicking option, to the more complex options, that is, actually programs to do some work.

Here you will find, some tricks that are very useful and in certain way should be intuitive, but I guess intuition is something very hard to define.

Search by etymology of the words


For restaurants the "tip calculator"


Using Google as a calculator instead of open any calculator in your PC


Searching in range using ".." between two numbers


Holidays Date


Get all the pages that has a link to a specific website (very useful to SEO)


Convert currency and units


Search the definition of a word adding the command "define:" in front of the word  you want to define


Set a timer by writing "set time for" subsequently the amount of time


Discovery a band by writing "Songs by" and  then the name of the band


Discovery a book by writing "Books by" and  then the name of an author


Know the sunrise and the sunset in a city

Compare food for diet

Plane information by the flight number


Searching for the exact phrase putting all the terms in quotation mark


Adding the command "intitle:" infront of you terms, google will search only the titles that have some of those terms

Doing more the want search at the time using "or"


Searching a specific type of file adding the command "filetype:" infront of the type file like pdf or gif (for animated images)


If you don't remember the part of the phrase you are searching you can use "*"


Exclude some words to the search by adding the minus sign (-) follow by the word you want to exclude

Cheap flights using "origin" to "destination"


Translate for a language to another


You can look up movie release dates in a jiffy.


You can use it like TV Guide and look up the schedules of all your favorite shows.


It’ll give you info about almost any company.



Get the time of  a City


No too useful but interesting are the next ones:

  • Type in “Google 1998″ for a retro version of the search engine.

  • If you search for “Google gravity” and hit "I'm feeling lucky" then you'll get a rather literal definition of gravity.
  • Ask Google to "do a barrel roll" and it'll do a barrel roll
  • If you Google "zerg rush", you'll have to protect your search results from being eaten by Google's o's. Yes, this is a thing.
  • If you hit 'I'm feeling lucky' without actually typing anything into the search box, you'll get a catalogue of all the Google doodles — all the way back to 1998

Those are my trick on Google, please if you know others, tell me I will be pleasure to add here. :)

martes, 22 de julio de 2014

How to extract rar and zip files with double click on Windows

This is a feature that I always liked in Ubuntu and Mac OS, that is, the option of doing double click to a zip file and the file extract automatically. If you are using windows, or you are a windows user, may be you don't see the difference. But is very annoying that you want to extract a file and you need to choose wich file you will extract. It's true that sometimes you want that, but I think, the most common action is extract all files.

So, How I can do that?


First, Open regedit: To do that you need to press the buttons:

"Windows + r"

and write regedit. Will be something like this:


Then press Ok button.



Second; Go to: HKEY_CLASSES_ROOT\WinRAR\shell\open\command
 and change the (Default) value from "C:\Program Files\WinRAR\WinRAR.exe" "%1"
to "C:\Program Files\WinRAR\WinRAR.exe" x "%1"

and  if you have ZIP files associated with WinRAR too, change the corresponding value under
HKEY_CLASSES_ROOT\WinRAR.ZIP\shell\open\command too.

The result will be something like this:


To edit the (Default) value you need to make double click to the register file.
(Obviously for 32-bit WinRAR the path will be different.)

My computer is 64 bit, so if your computer is 32-bit please comment with the path of winrar and I can update the post for future user of windows 32-bit .




domingo, 1 de junio de 2014

Monografía sobre la traducción automática

Introducción


La traducción automática, con sus siglas en español TA y en inglés MT de Machine Translation,  es el proceso mediante un software traduce de un lenguaje natural (como el Español) a otro  lenguaje (como el Portugués) con o sin ayuda un ser humano.
Cuando se trata de finalizar una traducción, se verifica si la traducción, humana o automática está bien confeccionada, el significado del idioma origen se debe restaurar totalmente en el idioma destino. Para que se considere una traducción completa.  Esta tarea parece algo sencillo, pero es un proceso muy complejo. Como hemos visto en el seminario, la traducción no es una mera sustitución de una palabra por otra. Un traductor debe interpretar y analizar todos los elementos del texto y saber cómo influyen unos a los otros. Debe intentar mantener los atributos del texto y el estilo del escritor, entre muchas otras problemáticas.
Tanto la traducción humana como la automática tienen sus desafíos. Dos traductores traduciendo los mismos textos en el mismo lenguaje origen, al mismo lenguaje destino, de una forma independiente, lo más probable es que generen resultados distintos. Y en muchos casos requerirán revisiones para que tenga una buena producción y así conseguir la satisfacción del cliente final.
En nuestra monografía solo nos enfocaremos en las traducciones automáticas realizadas por computadoras. Y dentro de estas en dos tipos: La traducción por reglas y la traducción estadística.

Desarrollo

La traducción automática ha pasado por varias fases, desde la simple idea de una sustitución simple de las palabras atómicas de un lenguaje natural por las de otro. Por medio de un corpus lingüístico, u otros recursos lingüísticos, se pueden aportar nuevas ideas y extraer nuevo conocimiento, de forma manual o automática. También se puede gestionar las diferentes excepciones como las frases idiomáticas y demás.
En la actualidad la tendencia es a integrar todo tipo de metodologías: lingüísticas, estadísticas, u otras, a la base de datos de un corpus.
Según su aproximación, los sistemas de traducción automática se pueden clasificar entre dos grandes grupos: los que se basan en reglas lingüísticas por una parte, y los que utilizan corpus con textos alineados por otra.

Lenguaje intermedio

La traducción automática a partir de un lenguaje intermedio, según la literatura actual, es un caso particular de la traducción automática basada en reglas. Desde mi punto de vista, podría tomarse desde cualquier aproximación, ya que en los métodos estadísticos, su pueden realizar aproximaciones desde el texto original, o  desde mi punto de vista, podría aplicarse siempre a partir de una fase del lenguaje basado en reglas, como el caso del lenguaje intermedio.  La idea es que cualquier método, de traducción automática se puede parar en una fase de su procesamiento, y a partir de ahí aplicarle un método estadístico.
El lenguaje intermedio proviene de procesar  el lenguaje original, por ejemplo un texto que debe ser traducido, es transformado a un lenguaje intermedio, como UNL, cuya estructura es independiente a la del lenguaje original y a la del lenguaje final. El texto en el lenguaje final se obtiene a partir de la representación del texto en el lenguaje intermedio. En general a esta lengua intermedia se la llama “interlingua”.
Los sistemas interlingua son un caso particular de los sistemas de transferencia en los que se lleva a cabo un análisis mucho más profundo de cada frase, obteniéndose una representación formal interlingua del significado mismo de la frase. Aunque teóricamente se trataría del mejor enfoque,  estos sistemas están en fase de laboratorio o se utilizan para aplicaciones muy restringidas debido a los problemas prácticos que presentan el diseño y la implementación de una interlingua eficaz.

Traducción automática basada en reglas


Traducir es un arte de talento y mucha dedicación. No es solo sustituir una palabra por otra, sino que también  hay que identificar las palabras de la frase y la influencia que tienen unas sobre las otras.  Los lenguajes humanos constan de estructuras lingüísticas, como la morfología (la forma en que se construyen las palabras a partir de pequeñas unidades provistas de significado), sintaxis (la estructura de una frase) y semántica (el significado). Esta información ayuda con las ambigüedades de los textos. Ya que hasta el texto más simple puede estar plagado de ambigüedades muy complejas. También hay que considerar cuestiones de estilo y de discurso o pragmáticas.
La traducción automática basada en reglas, como el propio nombre indica, se basa en muchas reglas lingüísticas integradas y en diccionarios bilingües para cada par de idiomas. Esta consiste en realizar transformaciones a partir del idioma original, reemplazando las palabras por su equivalente más apropiado.  A este tipo de transformaciones del texto original se puede llamar por predicción de texto, transfer, etc.
Las reglas pueden ser desde el trabajo lógico con las palabras, como una propiedad sencilla que es la cantidad de palabras de una oración. Hasta un procesamiento lógico del contenido de la frase como: “Los niños y los hombres de edad media pueden ganar el premio.” Definiendo que “de edad media” se refiere a los hombres.
Algunas reglas comunes para el inglés desde el español son:
  •  Oraciones cortas (no más de 20)
  •  Evitar la coordinación múltiple de oraciones
  •  Insertar determinantes siempre que sea posible
  •  Insertar that, wich, in order to en oraciones subordinadas siempre que sea posible
  •  Evitar pronombres o expresiones anafóricas (it, them,…)
  •  Reescribir when, while, befor y after seguido de –ing.
  •  Reescribir if, where, When seguido de participio pasado.
  •  Evitar el uso de verbos frasales
  • Repetir el nombre/sustantivo cuando vaya modificado por dos o más adjetivos.
  • Repetición de preposiciones en la coordinación de sintagmas proposiciones.
  • Reescribir compuestos nominales de más de tres nombres.
En general, en una primera fase se analizará un texto, normalmente creando una representación simbólica interna. Dependiendo de la abstracción de esta representación, también podemos encontrar diferentes grados: desde los directos, que básicamente hacen traducciones palabras por palabras, hasta interlingua, que utiliza una representación intermedia completa.
Se analiza sintácticamente el texto y crea esta representación transitoria a partir de la cual se genera el texto en el idioma de destino. Este proceso requiere léxicos amplios con información morfológica, sintáctica y semántica, además de grandes conjuntos de reglas. Se utiliza esos conjuntos de reglas complejas y, a continuación, transfiere la estructura gramatical del idioma de origen al idioma de destino.
Las traducciones se construyen con diccionarios enormes y reglas lingüísticas sofisticadas. Los usuarios pueden mejorar la calidad de la traducción instantánea añadiendo su terminología al proceso de traducción. Para ello crean diccionarios definidos por el usuario que invalidan la configuración predeterminada del sistema o extienden la misma.
En la mayoría de los casos, hay dos pasos: una inversión inicial que aumenta de forma significativa la calidad con un costo limitado, y una inversión acumulable que aumenta la calidad de forma incremental. Aunque la TA basada en reglas proporciona a las empresas el umbral de calidad que necesitan e incluso más, el proceso de mejora de calidad puede ser largo y costoso.

Traducción automática estadística


El objetivo de la traducción automática estadística es generar traducciones a partir de métodos estadísticos basados en corpus de texto bilingües, como por ejemplo las actas del parlamento europeo, que se encuentran traducidas en todos los idiomas oficiales de la UE. Estés también tienen, en lo general, un formato de escritura. Si la existencia de estos corpus fuese mayor, se podrían conseguir resultados excelentes al traducir textos de ámbitos similares.
Los sistemas actuales son incapaces de producir resultados de la misma calidad que un traductor humano, particularmente cuando el texto a traducir usa lenguaje coloquial o familiar.
En esta dirección, recientemente están cobrando especial interés las técnicas estadísticas de traducción asistida basadas en una aproximación interactiva predictiva, en la que el computador y el traductor humano trabajan en estrecha colaboración mutua. Tomando como base el texto fuente a traducir, el sistema ofrece sugerencias sobre posibles traducciones a la lengua destino. Si alguna de estas sugerencias es aceptable, el usuario la selecciona y, en caso contrario, corrige lo necesario hasta obtener un fragmento correcto. A partir de este fragmento, el sistema produce mejores predicciones. El proceso continua de esta manera hasta obtener una traducción completamente aceptable.
La traducción automática estadística utiliza modelos de traducción estadísticos cuyos parámetros emanan del análisis de corpus monolingües y bilingües. La creación de modelos de traducción estadísticos es un proceso rápido, pero la tecnología depende enormemente de los corpus multilingües existentes. Se necesitan un mínimo de 2 millones de palabras para un dominio específico y más incluso para el idioma en general. Teóricamente es posible alcanzar el umbral de calidad, pero la mayoría de las compañías no tienen cantidades tan grandes de corpus multilingües para crear los modelos de traducción necesarios. Además, la traducción automática estadística consume mucha CPU y requiere una configuración de hardware amplia para ejecutar los modelos de traducción que permiten obtener niveles de rendimiento promedio.
La traducción automática a partir de corpus lingüístico se basa en el análisis de muestra reales con sus respectivas traducciones. En ellos se encuentran las métodos estadísticos y los basados en ejemplos.
Google translate usa SYSTRAN, aunque se encuentra desarrollando un método de estadística para sus traducciones automáticas.  Recientemente han mejorado sus capacidades traductoras al añadir 200 billones de palabras de las Naciones Unidas, que permitirán entrenar el sistema.
Según la literatura existe un método de traducción automática denominado, basada en ejemplos desde mi punto de vista, este método también es un método estadístico, ya que la traducción automática basada en ejemplos, se caracteriza por el uso de un corpus bilingüe como principal fuente de conocimiento en tiempo real. Es esencial una traducción por analogía y puede ser interpretada como una implementación del razonamiento por casos base empleado en el aprendizaje automático, que este aprendizaje automático podría ser estadístico o no.
Formalizando conceptos, la traducción automática estadística, a veces denominadas como Stat MT o SMT (Statistical Machine Translation), segund la literatura, es el paradigma de traducción automática donde se generan traducciones basadas en modelos estadísticos y de teoría de la información cuyo parámetros se obtienen del análisis de corpues de texto bilingües. Yo me atrevería a extender esta definición con la siguiente definición, es el paradigma de traducción automática donde se genera traducciones basadas en modelos estadísticos y de teoría de la información cuyos parámetros se obtienen de recursos externos. Con esta definición, incluimos los métodos de aprendizaje automático basados en modelos estadísticos como métodos de traducción automática de estadísticas. Donde los métodos de aprendizaje automático se podrían manipular para aproximar reglas del idioma y crear nuevos.
De manera básica un documento se traduce con la probabilidad de p (e| f ) donde e es una cadena de lengua nativa (por ejemplo Alemán)  sea la traducción de una cadena f en una lengua diferente (por ejemplo francés). Donde los parámetros se calculan con diferentes métodos de estimación de parámetros.

Ventajas de los métodos estadísticos sobre la traducción tradicional son:


  • Hay mucho lenguaje natural en formato legible para maquinas
  • Generalmente, los sistemas SMT no están adaptados a ningún par específico de idiomas.


Comparativa de la TA basada en reglas y la  TA estadística


Entre lenguas romance la calidad de traducción es mayor, sin embargo los resultados son peores cuanto más tipológicamente alejadas sean las lenguas entre sí, como es el caso de la traducción entre español e alemán. Desde mi punto de vista debería ser igual para la TA basada en estadística pero  al parecer características más complejas necesitan más ejemplos.
Otro factor muy influyente es el grado de especialización de los sistemas de traducción, que mejoran en la medida en que se adecuan al tipo de texto y vocabulario que se vaya a traducir. Un sistema que se especialice en la traducción de partes meteorológicos conseguirá altas cotas de calidad incluso para traducir textos entre lenguas tipológicamente muy dispares, pero será inservible para abordar temas más amplios como por ejemplo, crónicas deportivas o financieras.
Lo interesante es que, hay métodos estadísticos que realizan traducciones sin reparar en cuestiones gramaticales.
Sin embargo la traducción automática basada en corpus lingüístico se basa en el análisis de muestras reales con sus respectivas traducciones.
La TA basada en reglas proporciona una buena calidad fuera del dominio o ámbito concreto y es previsible por naturaleza. La personalización basada en diccionarios garantiza una calidad mejorada y la conformidad con la terminología corporativa. Pero a los resultados de la traducción les puede faltar la fluidez que esperan los lectores. En términos de inversión, el ciclo de personalización necesario para llegar al umbral de calidad puede ser largo y costoso. El rendimiento es alto incluso con hardware estándar.
La TA estadística proporciona una buena calidad cuando se dispone de corpus grandes y cualificados. La traducción es fluida, lo que significa que se lee bien y, por lo tanto, cumple con las expectativas del usuario. Sin embargo, la traducción no es ni previsible ni coherente. El entrenamiento a partir de corpus buenos es automático y más barato. Pero el entrenamiento sobre corpus del lenguaje general, es decir, sobre textos que no son del dominio especificado, es deficiente. Además, la TA estadística requiere un hardware determinado para crear y administrar modelos de traducción grandes.

Traducción automática basada en reglas
Traducción automática estadística
Desarrollo de reglas manual
Desarrollo de reglas interno al modelo estadístico
Calidad coherente y previsible
Calidad de traducción imprevisible
Reglas que será empleadas en la teoría
No se puede sacar conocimiento para la teoria
En fase de desarrollo son más costosos y requieren más tiempo
Más baratos y poco tiempo de desarrollo
Capacidad de procesamiento aceptable
Alta capacidad de procesamiento necesaria
Buena traducción en cualquier dominio
Mala traducción en cualquier dominio
Se conoce las reglas gramaticales
No se conoce ninguna regla gramatical
Capacidad de almacenamiento aceptable
Alta capacidad de almacenamiento
Coherencia entre versiones
Incoherente entre versiones
Verificación de las reglas con los corpus
-
Falta de fluidez
Buena fluidez
Mal manejo de las excepciones
Buena para tratar las excepciones
Costo elevado de personalización
Costo bajo para personalización


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/