Simple almacén de triplas

Deja un comentario

Aquí dejo el código de un sencillísimo almacén de triplas (triplestore) que debe ser muy parecido al que hicimos en la clase, también está la forma para hacer unos queries y cargar y escribir tablas en formato csv.

http://dl.dropbox.com/u/7496693/BuscadoresSemanticos/grafosimple.py

También subo un archivo con un grafo de varias películas obtenido de freebase.com

http://dl.dropbox.com/u/7496693/BuscadoresSemanticos/movies.csv

Estos dos archivos están disponibles públicamente.

La web semántica ¿Por qué? I

Deja un comentario

Aunque no nos demos cuenta, la manera en la que usamos nuestro lenguaje es impresionante. Nosotros no tenemos ningún problema (lingüístico) con preguntarle a algún desconocido cómo encontrar el cajero más próximo. De la misma manera podemos tener alguna idea y gracias al poder del lenguaje natural la podemos compartir, al igual que el conocimiento adquirido a través de la experiencia. No sólo eso, también podemos adquirir conocimiento a partir de las experiencias de otros, incluso de personas que dejaron esos conocimientos plasmados en libros escritos muchos años de que naciéramos. Si no fuera por el lenguaje natural, el lenguaje humano, todos nuestros conocimientos serían difíciles de transmitir y administrar.

Por ejemplo si digo:

  • El árbol cayó de la casa.
  • La casa cayó de el árbol.

La reacción que provoca cada una de las oraciones es diferente. La diferencia reside en el orden en el que se encuentra cada una de las cláusulas, porque las palabras son las mismas, las mismas letras y los mismos sonidos. Lo único que varía es lo que está antes y después de “cayó de”. Por la experiencia que hemos adquirido con el tiempo, sabemos que “cayó” es la palabra que usamos para representar que una entidad, que entendemos con características más materiales, realiza un desplazamiento en un sentido específico (arriba hacia abajo), en un tiempo anterior al momento de la locución. Además agregamos la palabra “de” que nos indica un desprendimiento del objeto de otro que normalmente imaginamos de mayor tamaño. También hemos aprendido que árbol y casa son entidades más materiales y más grandes, por lo que parece anómalo que un árbol caiga de una casa o lo inverso. Pero también tenemos conocimiento del mundo que nos ha enseñado que se pueden construir casas en los árboles así como existen árboles dentro de casas.

El párrafo anterior es un ejemplo de la complejidad que se puede encontrar en una expresión pequeña y sintácticamente simple. Y gracias a ese conocimiento podemos contestar preguntas de mayor complejidad como: “¿Qué estaba arriba de qué?” o “La acción que se describe en el ejemplo, ¿ocurre en el futuro?”.

Por esto podemos decir, sin que sea una definición absoluta, que la semántica es el proceso por el cuál comunicamos información suficiente para que resulte en una acción. Por esta misma razón se puede usar la semántica para representar, combinar y compartir conocimiento entre grupos de máquinas y se pueden crear sistemas computacionales que puedan reaccionar ante tal conocimiento.

La mayoría de los programadores han usado la semántica, por ejemplo cuando le asignan un valor específico a una variable. En los lenguajes que fuerzan la declaración semántica de la variable, la semántica es explícita. Esto permite que otros programas pueden usar los datos arrojados por este programa.

Esa es la importancia de la semántica en los sistemas de cómputo, en el siguiente post hablaremos sobre como ocurren estas transacciones de información en la web.

Off Topic: Oracle está reclutando

Deja un comentario

Bueno, esta entrada es sólo para informarles que la Facultad de Ingeniería de la UNAM está reclutando jóvenes interesados en trabajar para desarrollar la siguiente generación de Bases de Datos, les dejo el cartel para que asistan todos aquellos que estén interesados.

Compartan la imagen con cualquiera de sus compañeros que pueda estar interesado en esto.

Cartel de Oracle

La web semántica ¿Qué es?

Deja un comentario

Logo SW

No es tan sencillo dar una definición de la web semántica, pues ha sido definida de múltiples formas a través del tiempo. Sin embargo algo que se repite constantemente es que es una extensión de la web actual (la WWW o World Wide Web). Esta extensión utiliza la información existente y relaciona los datos entre ellos.

Es decir, en la web semántica podemos seguir encontrando la información que encontramos ahora, hecha principalmente por humanos y dirigida para humanos, pero con la extensión añadida las computadoras podrían saber que tipo de datos son los que se están transmitiendo y podrían comunicarlo a otras computadoras.

Podríamos sugerir que la web semántica es una extensión que envuelve a la WWW donde se define la información y los servicios en la web. Esto hace posible que la misma web entienda y satisfaga las necesidades de las personas y las máquinas para usar el contenido de la web.

Imagen multimediaPor ejemplo, en la web actual yo puedo ver mis fotos, puedo ver mi agenda, encontrar información sobre alguna conferencia en la web semántica, pero ¿qué pasa si le digo al motor de búsqueda tradicional que estoy interesado en encontrar una conferencia sobre web semántica próxima al lugar donde tome las fotos en la fecha X y que además esté (yo) disponible en las fechas de la conferencia?

Bueno, esto ya es muy complejo pero no tendría por que serlo tanto, ¿no? Si de todas formas ya he subido gran parte de mi información en la red y la actualizo cada vez que me conecto, se podrían conectar los datos que contienen la información que busco para que fuera más fácil encontrar la información específica.

De momento esto no es posible porque las aplicaciones para ver mis fotos, buscar en la web, organizar mi agenda, administrar mi dinero, etc. son todas diferentes. Algunas grandes empresas que ofrecen todos estos servicios en línea (por ejemplo Google) se han dado cuenta que es una buena idea relacionar todos estos datos para incrementar su ganancia, y es lo que hará con la nueva política de privacidad.

La web semántica trata de ligar datos más allá de una sola empresa. Y no solo eso, a diferencia de la WWW que fue orientada principalmente para el intercambio de textos, esta nueva web pretende obtener los datos de diferentes fuentes de información: Videos, fotos, audio, texto, etc. con el fin de integrarlos y combinarlos.

concepto LinkedDataLa idea es que los datos tengan sentido entre ellos para poder facilitar diferentes tareas entre diferentes computadoras o diferentes dispositivos. Es decir, se espera que cuando el usuario use un equipo de cómputo, este pueda comunicarse con él y con los otros equipos del mundo, de tal forma en la que ambos entiendan la información que se está transmitiendo.

Para que quede un poco más claro aquí dejo un video (en inglés) que expande y muestra más ejemplos de lo que he dicho hasta ahora:

Sobrecarga de información o entre más, ¿mejor?

Deja un comentario

Sobrecarga de InformaciónYa hemos hablado sobre la recuperación y la extracción de información, sin embargo no sé si queda claro porque este tipo de sistemas se vuelven necesarios. Es decir, suena lógico que deba existir una forma en la que alguien que busca información la pueda encontrar, de la misma manera se pueda determinar en que documentos se encuentran. Pero ¿por que es necesario un sistema digital que haga lo que los bibliotecarios y archivistas han hecho toda la vida?

El problema que existe es que desde que inició la web, la gente empezó a generar contenido. Antiguamente este contenido era principalmente texto y era estático, de esta manera obedecía los estándares del HTML. Originalmente la web era sólo para algunos cuantos que podían encontrar acceso a internet y que entendían, aunque fuera un poco, como se generaban los hipertextos.

Conforme los precios de internet y las computadoras fueron bajando, más gente tuvo acceso a la web, lo que resultó no sólo en una mayor distribución de las páginas estáticas, sino también en una generación mayor de estas.

Como cada vez eran más personas que generaban páginas, cada vez existía mayor información y cada vez era más difícil encontrar lo que se buscaba, aunque bastaba con usar palabras clave y registrarse manualmente en un motor de búsqueda para quedar indizado.

Logo de WordPress

En poco tiempo la gente creaba y consumía información constantemente, surgieron web logs y después logs de fotos e incluso de vídeo, los estándares tuvieron que cambiar para adaptarse a estas nuevas necesidades. Esto trajo el surgimiento de la web 2.0, que como hemos visto es una web dinámica, que cambia constantemente.

Esta web 2.0 se basa en los usuarios de la misma. Se han generado sitios dedicados a almacenar y administrar blogs, han aumentado las redes sociales y en cambio han desaparecido o se han transformado sitios que estaban dedicados a la generación de las antiguas páginas estáticas.

Esto trae como resultado un exceso de información. De hecho la información contenida en las páginas de internet es tanta que ningún ser humano podría leerla toda en toda su vida, aunque la web no creciera más, algo que como se ha visto, resulta inevitable.

En esta nueva web, la información cambia cada segundo, por lo que los sistemas de recuperación de información deben adaptarse a estos cambios tan dinámicos. Esta adaptación es difícil, porque ahora, gracias al incremento de la participación del usuario, la información que se transmite suele ser más significativa.

Logo de WikipediaAhora cada vez encontramos una mayor cantidad de información subjetiva que se distribuye en muchos sitios. Incluso la información objetiva que se comparte se rebate con fines de que sea más precisa.

Los nuevos sistemas tiene que tener en cuenta esta sobrecarga de información y hacer lo posible por ser cada vez más rápidos, más exactos y más precisos. Es decir, cada día tiene más paja el pajar donde se trata de buscar la aguja exacta.

Extracción de Información II

Deja un comentario

En la entrada anterior había explicado qué era la extracción de información y como se iniciaba el proceso para extraer información de un texto completamente sin estructura y uno semi estructurado.

Había usado el ejemplo de extracción de nombres de personas en una nota periodística que, por cierto, es una operación común y requerida por diversos medios de comunicación y otros sistemas relacionados con las tecnologías del lenguaje. El proceso había llegado a detectar y extraer de manera exitosa los nombres.

Una vez extraídos estos nombres se colocan en una plantilla donde existe una lugar específico para nombres. Esta plantilla debe contener todos los campos requeridos para el proceso de extracción de información. Es decir, si además de los nombres me interesa extraer fechas y lugares de esas notas periodísticas, mi plantilla debe contener un campo específico para nombres de lugares y fechas encontradas. De esta manera puedo estructurar la información existente dentro de los documentos analizados.

Arquitectura de E de I

La plantilla con los campos

El diseño de esta plantilla tampoco puede ser un proceso trivial. Se requiere de una decisión específica sobre el tipo de información que se requiere extraer en determinados documentos. La evaluación del éxito o fracaso del sistema de extracción de información depende en gran medida del diseño de la plantilla que debe llenarse. Estas plantillas deben representar la necesidad de información. Es decir deben contener todos los campos que sean de interés, pero sólo los campos que sean de interés. En otras palabras, una plantilla con menos campos de los requeridos dará como resultado una extracción de información que será insuficiente, mientras que una plantilla con más campos de los necesarios tendrá como resultado datos cuya extracción resulta costosa e inútil.

Como puede intuirse, los campos representados en esta plantilla son los que se utilizarán para poblar una base de datos tradicional, de esta manera la información queda estructurada para facilitar su utilización por otros sistemas.

Aplicaciones

Los sistemas que utilicen esta información pueden ser de diferente índole. Por ejemplo, los sistemas de resumen automático pueden utilizar la información para el entendimiento del texto la generación de resumen, los sistemas de pregunta-respuesta pueden usar la información estructurada para devolver una respuesta precisa a una pregunta determinada, los sistemas de traducción automática pueden usar esta información para decidir como traducir determinados fragmentos textuales o incluso no traducir nombres de personas, empresas etc.

Metadatos

Los campos de esta plantilla están otorgando información sobre el tipo de dato que contienen, si esta información se hace explícita forman metadatos. Algo muy interesante de estos, es que también pueden interpretarse como datos que contienen información muy especial y que será de mucha utilidad al momento de desarrollar motores de búsqueda semánticos. Esta información es la que se podría denominar información semántica en el campo de la búsqueda, recuperación y extracción de información.

La llamamos semántica porque contiene el significado específico de nuestros datos, nos define que un nombre siempre será una cadena de caracteres, e incluso se pude pensar que está en representación de una entidad anclada en el mundo real. También podemos saber que una fecha es una entidad de representación de tiempo y que en diferentes lenguas o culturas tiene diferentes formas de expresarse.

Conocer la semántica de nuestros datos permite recuperar mayor cantidad de información relevante con mayor exactitud.