Deja un comentario

Dentro de la clase de hoy (31 de enero de 2014), hicimos un examen de diagnóstico que contenía las siguientes preguntas:

  1. ¿Qué es un token?
  2. ¿Qué es una “Bolsa de palabras”?
  3. ¿Qué es TFIDF?
  4. ¿Cuál es la fórmula para calcular TFIDF?
  5. ¿Qué es precisión, recall, y exactitud?
  6. ¿Qué algoritmos de clasificación conoces?
  7. ¿Cuál es la diferencia entre clustering y clasificación?
  8. ¿Cómo funciona un motor de búsqueda tradicional?
  9. Si tuviera 1000+ entradas de blogs y quisiera agrupar los que más se parecen, ¿cómo lo haría?
  10. Si quisiera separarlos en “Moda”, “Techies”, “Política”, ¿cómo lo haría?

Este examen tenía trampa. Muchas de esas preguntas no tienen una respuesta válida correcta, sino varias. La idea era comprobar el nivel de conocimientos e intuición que tienen los estudiantes inscritos.
Sin embargo hay algunas respuestas que me gustaría encontrar, estas las pondré en una publicación siguiente.

Después del examen, vimos una brevísima introducción al tema de Análisis y procesamiento inteligente de textos. Discutimos las razones por las que es importante utilizar una computadora que auxilie en la lectura, procesamiento y análisis de grandes volúmenes de información documental. Entre las conlusiones a las que se llegó se encuentran:

  • Existe conocimiento que no es evidente para los humanos. Este conocimiento se puede encontrar esparcido a través de diferentes fuentes. Una computadora puede encontrar los vínculos entre diferentes extractos de información para descubrir el conocimiento. Un humano debe analizar ese conocimiento para determinar si es válido.
  • La cantidad de información documentada y que se genera diariamente no permite que se analice manualmente. Una computadora puede leer mucho más rápido que un ser humano aunque no pueda “entender” humanamente un texto. Sin embargo puede “aprender” un proceso de razonamiento mecánico.
  • A través de procesos de razonamiento mecánico, la computadora es capaz de determinar las diferentes categorías a las que puede pertenecer un texto. También puede clasificar si los textos contienen opiniones dentro de ellos. Puede determinar la polaridad de dichas opiniones. Esto último se llama minería de opiniones.
  • El análisis automático de textos auxilia en las tareas de inteligencia empresarial y militar. Es posible analizar mensajes con fines de encontrar patrones ocultos.
  • Las dificultades para realizar estos análisis son inmensas. Las diferentes lenguas humanas son muy dinámicas. El lenguaje natural es ambiguo por naturaleza. El contexto puede cambiar el significado de una frase. Las palabras tienen significado en sí mismas. Los humanos somos capaces de entender una paradoja, una computadora no. Ejemplo: “Esta aseveración es falsa”.

Se introdujo el tema de reglas de asociación. Se definió lo que se iba a entender por soporte (support) y confianza (confidence).

  • Soporte es la frecuencia con la que ocurre un conjunto de items (términos) en un conjunto de transacciones.
  • Confianza es la frecuencia con la que ocurre un término condicionado a que ocurra antes otro.

Sin describir explícitamente el algoritmo “A priori”, se hizo una ejecución del mismo con unos datos inventados.

Pendientes para la siguiente clase:

  • Definir el algoritmo “A priori”
  • Explicar cada uno de sus pasos
  • Hacer énfasis en la subrutina de generación de candidatos
  • Entregar el plan de semestre definitivo, con fechas de tareas y entregas de trabajo

Aunque esta es una entrada de diario personal queda pública por si alguien encuentra algo de utilidad o quisiera hacer un comentario sobre lo que se dice aquí.

Elige entre las etiquetas más utilizadas

Anuncios

La web semántica, ¿por qué? II

Deja un comentario

Como se había discutido anteriormente, los humanos podemos codificar y decodificar información y conocimiento de diversas formas. Especialmente usamos convenciones de signos elegidos arbitrariamente para esto. Especialmente las palabras, pero también utilizamos símbolos y señales con el fin de transmitir información.

Cuando tratamos de trasladar esos conocimientos a las máquinas es necesario hacerlo explícito. Una máquina no es capaz de entender que una serie de bits forman un video a menos que nosotros se lo marquemos. Lo mismo ocurre con las imágenes o con las palabras.

Es decir una máquina sabe que una serie de bits se pueden desplegar en pantalla de alguna u otra forma gracias a la información proporcionada por el programador. El servidor es incapaz de interpretar la información que contiene, al igual que el cliente no puede saber qué es la información que recibe. Esto, hasta ahora ha sido trabajo de los humanos.

Se confía en que el programador realizará de manera correcta su trabajo y que explicitará cuando existe un entero, un número flotante, una palabra, una imagen, un video, etc. De esta manera, el procesador sabe qué hacer con ese dato y como procesarlo o desplegarlo en pantalla. Sin embargo el contenido de información sigue siendo desconocido para la computadora que genera el proceso.

Es decir, cuando el monitor imprime “¡Hola mundo!”, la máquina que lo proceso no sabe que ese conjunto de caracteres forman dos palabras. Tampoco sabe que es un saludo, o que los signos de exclamación representan algún tipo de emoción. La máquina no conoce el concepto representado por la palabra “mundo”.

Esta carencia de información es relevante porque los seres humanos no comunicamos palabras, comunicamos conceptos, ideas, emociones, intenciones codificados en palabras. Es decir la palabra es usada en lugar del concepto que representa, pero no es una cadena de caracteres.

Si las máquinas pudieran entender los conceptos detrás de las palabras, la comunicación entre máquinas y personas se facilitaría en gran medida. Las máquinas podrían ayudar a entender a los seres humanos conceptos complejos, y les permitiría a estos generar nuevas ideas. La comunicación entre máquinas también se haría más sencilla.

Cuando intentáramos buscar un concepto, podríamos hacerlo con mayor facilidad. Por ejemplo, si quisiéramos encontrar las canciones más tristes de The Smiths, el buscador podría entender el sentido de la búsqueda. Actualmente esa búsqueda arroja listados de canciones que han sido catalogadas como tristes. Una lástima, yo quería la canción, no una lista con títulos de canciones.

Esto ocurre porque actualmente la búsqueda se hace a través de las secuencias de caracteres separadas por espacios. Es decir, el buscador intenta encontrar las páginas que contengan “triste” y “canción”, de preferencia cercanas o en una misma oración. Pero no comprendió que lo que yo buscaba era una canción, no un título.

Otro ejemplo en el que la web semántica puede mejorar el mundo en el que vivimos es la interpretación de discursos políticos. Una máquina podría analizar las promesas realizadas por un determinado político e intentar predecir, de acuerdo a datos históricos, si este político será capaz de cumplir algunas promesas.

¿En qué otros aspectos creen que sea posible que la web semántica ayude a las personas?

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.

Older Entries