Cristalab |
- Sistemas y herramientas para visualizar y extraer datos de Twitter
- Revisar cambios con Debug en Redes Cisco
- HTML5 es más que etiquetas
- Enrutamiento estático en Redes Cisco
- Diseño web para iPhone
Sistemas y herramientas para visualizar y extraer datos de Twitter Posted: 28 Mar 2012 01:45 AM PDT En Twitter se publican muchas cosas, desde las opiniones sobre la polémica política del momento hasta actualizaciones con relación a la vida íntima. Según [1] la taza de publicación de tweets, durante la transmisión del super tazón, fue de 10.000 tweets por segundo. Y por qué habría de resultar esto interesante?Cuánto nos tardaría leer sólo lo publicado en 1 segundo (10.000 tweets), y cuánto nos tardaríamos en encontrar información de interés entre esos 10.000 tweets? Sí, muchísimo tiempo! Ahora imaginemos que no sólo queremos los 10.000 tweets, si no que deseamos tener una idea general de lo que se está comentando leerías todo? y como encontrarías la relación de los tweets entre sí? La Extracción de información es una tarea que consiste en:
A partir de esas listas de eventos, ítems o información, se pueden hacer otros tipos de procesamientos más interesantes, por ejemplo, análisis de sentimientos para intentar determinar la opinión general sobre cierto tema en particular. CorpusA la gran cantidad de información se le llama corpus, un corpus es simplemente una colección de texto, por ejemplo podríamos guardar todos los tweets publicados durante el super tazón, y a esa colección de tweets la podríamos llamar "corpus de tweets publicados durante el super tazón". Voy a intentar aclarar un poco más en qué consiste la extracción de información. Supongamos que hemos recolectado un corpus sobre videojuegos, que está compuesto de artículos de revistas sobre videojuegos, entradas de blog, de foros etc.. Ahora queremos generar, a partir de ese corpus, una lista con la siguiente información: NombreVideoJuego - Compañía - FechaDeSalida Supongamos que en nuestro corpus existe una frase que diga algo como: : " Square Enix ya está trabajando en Final Fantasy X" La extracción agregaría el siguiente registro a nuestra lista:
El resultado final, debería ser una tabla llena con todos los videojuegos y la respectiva compañía desarrolladora. Sin embargo, existen retos, muchos retos. Uno de ellos, por ejemplo, consiste en que alguien puede escribir "Final Fantasy X" o puede referirse al mismo juego escribiendo "FFX". De hecho, si hablamos de juegos, a los gamers les encanta usar acrónimos, y podríamos tener casos en los que dos juegos diferentes tengan acrónimos iguales. ExperimentoAlgunas semanas atrás, leí una entrada sobre Extracción y Visualización de Información en Twitter [2], aunque el experimento resultaba bastante sencillo, y la extracción es bastante ingenua, me pareció un reto interesante para el fin de semana. Corrí mi implementación sobre algunos trends de Colombia, y sobre tweets relacionados con Cristalab, aquí les dejo algunas imágenes. [nota:45df40fbde]click en las imagenes para agrandar[/nota:45df40fbde] El tema en la imagen es "cartoons", y se ven las ramificaciones sobre los diferentes cartoons: El tema en la imagen es "qué aman las mujeres": El tema principal en la imagen es "la liberación de secuestrados en colombia": Sobre los "tweets de cristalab en marzo": Básicamente, la imagen es un árbol donde cada nodo representa una palabra, dos palabras se relacionan entre sí si existieron tweets en los cuales las cuales las palabras se usaron. Los nodos adyacentes a cada palabra representan tweets que incluyeron los términos de la raíz hasta el nodo. Las "estrellas" en el árbol representan los temas más populares. Intentaré explicar algunos de los pasos y la idea en general: ![]() En resumen:
Selección de TweetsEl primer paso es construir el corpus que necesitamos, y para eso podemos usar el API de Twitter. En el API de twitter podemos hacer búsquedas de tweets con respecto a un radio geográfico o también por palabras. Sobre el corpus generado hay que dejar claro que es un corpus lleno de basura. Sí! basura, necesitamos limpiarlo, de muchas formas. Pueden haber tweets que no nos sirvan o que simplemente tengan errores de escritura. Pre-procesamientoCosas que usualmente se hacen en el pre-procesamiento o limpieza:
Similitud de CadenasEste tipo de limpieza implica por ejemplo medir similitud de cadenas. La similitud consiste en si tienes dos strings A y B, identificar qué tan parecidos o diferentes son. Sólo el tema de similitud de cadenas puede ser un tutorial completo. En general existen diferentes estrategias para medir la similitud de cadenas, entre los más conocidos están Jaro, Jaro-Winkler, Soundex y Levenstein. La más conocida es Levenstein, pero a nivel personal no me agrada mucho por dos razones, primero la comparación de cadenas no es normalizada, es decir, el número que arroja depende del largo de las cadenas. Mientras Jaro y Jaro-Winkler son normalizadas, sin importar el largo, si las cadenas son completamente iguales, el resultado es 1. Una de mis favoritas es Soundex, que mide la similitud entre cadenas en base a la fonética, por ejemplo las palabras "rupert" y "robert" serían muy parecidas, dado que fonéticamente son similares. De hecho el pre-procesamiento usualmente incluye también NLP, dependiendo de lo que deseamos realizar. Lo que ocurre usualmente es que deseamos anotar nuestros datos con información extra. En este caso el resultado final será un grafo conectando las palabras clave, así que necesitaba incluir en la limpieza una forma de evitar ramificaciones adicionales por ejemplo: Si los tweets extraídos hablaban sobre el tema "liberación de secuestrados", tendremos tweets donde se mencionará: "liberacion", "liberaran", "liberaron", "liberarian", dado que el español es un idioma con bastantes declinaciones, terminaríamos con un árbol con muchas ramas, todas refiriéndose en esencia al mismo verbo "liberar". Otro ejemplo podría ser con los plurales y singulares. Una forma de evitar este tipo de problemas es usando un POS-tagger. ![]() POS TaggerPOS-tagger (Part of Speech Tagger) es una herramienta cuya entrada es texto, y la salida es texto anotado. A cada palabra le va asignada su función dentro de la oración. Por ejemplo si la oración es: : 'Juan visita Alemania' Entonces la salida será algo como:
Existen POS-taggers ya entrenados para ciertos idiomas, entre ellos el español. Dependiendo de la herramienta podría arrojarnos información adicional, por ejemplo si el sustantivo es plural o singular. El pos-tagger también nos ayuda a limpiar palabras que no tengan significado por sí mismas. Por ejemplo, podemos limpiar posteriormente todas las palabras que sean preposiciones. StopWordsExisten palabras que no tienen significado por sí mismas y otras que sí lo tienen pero que resultan muy comunes. Estas palabras se llaman stopwords. En la visualización del grafo quería evitar este tipo de palabras, ya que resultan ser basura (no en todos los casos lo son). Existen utilidades que ya traen una lista de Stopwords para español. Por ejemplo la librería nltk en python ya trae una lista de stopwords para español. Reconocimiento de EntidadesEs también una herramienta a partir de la cual se reconocen nombres propios, lugares y fechas. No es un diccionario, eso quiere decir que no es una lista definida de nombres, es una herramienta entrenada usando técnicas de inteligencia artificial para reconocer nombres propios. Existen herramientas especializadas para la detección de nombres en dominios particulares. El reconocimiento de nombres propios se resume en 2 tareas:
La desambiguación se refiere por ejemplo a que pueden existir múltiples formas de nombrar a una misma entidad. Si habláramos de "Barack Obama", en los tweets se pueden referir al mismo personaje de muchas formas: "Obama", "B. Obama", "Barack O.", "El presidente de estados unidos"... La segunda tarea puede ser muy complicada, sin embargo la primera es relativamente un problema resuelto. Lo que hice para este extractor ingenuo fue simplemente usar una herramienta ya entrenada para reconocimiento de nombres pero no para la desambiguación. Quería mantener dentro de las palabras claves dibujadas dentro del grafo, aquellos nombres propios y lugares que tuvieran cierta frecuencia dentro del corpus de tweets. Limpieza finalLa última limpieza consiste en reemplazar todas las conjugaciones de verbos por infinitivos y todos los plurales por singulares. Si esta limpieza se hace antes, el reconocimiento de nombres y el POS tagger no funcionarán adecuadamente. Estando el corpus ya limpio, se procede a crear una tabla de frecuencias, es decir, vamos a contar cuántas veces está cada palabra dentro del corpus, de esas palabras seleccionaremos aquellas que tengan una frecuencia más alta, y a partir de ellas, vamos a empezar a crear el grafo. Representación del grafoPara la visualización se usó la herramienta gource [3]. Básicamente los que hice fue iterar sobre la lista de tweets. Sobre cada tweet preguntaba en orden descendente con respecto a la frecuencia si la palabra se encontraba dentro del tweet. Supongamos que nuestra lista de frecuencias era algo como: palabra - frecuencia "secuestro" - 400 "liberacion" - 300 "violencia" - 30 Así, si un tweet contiene las palabras "secuestro" y "liberación", existirá una arista conectando "secuestro" y "liberacion" y, finalmente, "liberacion" tendrá una arista a un nodo que será la representación del tweet. Para terminarEsto fue sólo un experimento de fin de semana y la extracción de información usualmente tiene muchos retos. El objetivo de este post es simplemente dar a conocer un poco de qué trata la extracción de información y las herramientas disponibles. La extracción de información es usada para construir un sistema de preguntas y respuestas que son eficaces para un dominio específico y que al parecer, empieza a ser popular pues algunas compañías están pidiendo sus sistemas automáticos de preguntas y respuestas para sus sitios webs. Adicionalmente dada la cantidad de información que está siendo generada por los usuarios, muchas compañías están interesadas en aplicar procesamiento del lenguaje natural para saber qué quieren sus clientes o qué opinan sus clientes sobre sus productos. Vale mencionar que también lo están implementando las agencias de seguridad. Muchas cosas quedaron sin mencionar y aquellas que se mencionaron se podrían mencionar a un nivel más profundo, pero este post ya es suficientemente largo y aburrido así que decidí acortar la idea inicial. Espero les haya gustado. @dav009 [1] Tweets per second - http://yearinreview.twitter.com/en/tps.html [2] http://highwire-dtc.co.uk/2011/05/real-time-twitter-topic-clustering-and-data-visualisation/ [3] http://code.google.com/p/gource/ |
Revisar cambios con Debug en Redes Cisco Posted: 28 Mar 2012 01:10 AM PDT En este videotutorial vamos a usar el comando Debug en Redes Cisco, para mantener información en todo momento de los cambios que se producen en nuestros dispositivos, como modificaciones y ajustes de configuración del sistema, que se realizarán en respuesta a la introducción de nuestros comandos y que nos ofrecerán información vital del funcionamiento de determinados procesos de envío de actualizaciones de los protocolos de enrutamiento. Saludos. |
Posted: 07 Mar 2012 09:01 AM PST HTML5, CSS3 y Javascript son la nueva columna vertebral de la experiencia de usuario en Internet, acortado como "HTML5", similar a lo que en su tiempo fue la "Web 2.0". "Web 2.0" es un termino desafortunado. Inventado por O'Reilly y desvirtuado por el marketing, nunca significó nada más allá de "AJAX con usabilidad" y terminó como sinonimo de ignorancia tecnologica. Ahora tenemos "HTML5". HTML5 es la nueva versión semántica del lenguaje de etiquetas con el que se construye internet. Pero la W3C, el consorcio encargado del estándar, también ha tomado HTML5 como el término sombrilla que engloba las nuevas tecnologías del futuro de la web. A diferencia de "web 2.0", esta vez HTML5 tiene un norte definido, un grupo de empresas y fundaciones apoyando y una visión. ![]() "¡¡Pero HTML5 no es CSS3 y Javascript!!"HTML5 es un lenguaje de modelado de información por etiquetas. CSS3 es un lenguaje de estilos en cascada. Javascript es un lenguaje de programación. Y todos, todos, se engloban alrededor del concepto HTML5. Flash es una herramienta vectorial, un formato de animación y un contenedor de Actionscript 3, así como el player de varios formatos de video y del sistema de RIAs Flex. ¿Y saben qué? Sigue llamandose Flash todo eso. La W3C oficialmente aceptó "HTML5" como el concepto sombrilla, al punto que creo un logo principal y una página de marca explicando claramente que HTML5 es HTML y más que HTML. Los geeks fanaticos no entienden de marcasLa discusión de que HTML5 no es CSS3 que se dio en Cristalab la semana pasada me recuerda la discusión de si "Linux" es "GNU/Linux" o no. La realidad es que a nadie le importa. Sí es importante definir qué cosa es qué al programar, pero cualquier persona inteligente puede diferenciar el uso de HTML5 en cada contexto. ¿Por qué el odio a usar HTML5 como concepto? No lo sé ¿Elitismo? No encuentro el menor sentido en atacar un concepto que ayuda a entender mejor una nueva tecnología y por extensión a vender más, mejor y más avanzados proyectos a los clientes y usuarios. El artículo de la semana pasada dice que Web Storage, la capacidad de guardar en disco con Javascript, no es HTML5. Y publica esta URL: http://dev.w3.org/html5/webstorage/ Donde parte de la URL dice HTML5!! ¿Quieren más ejemplos? Entren a: http://dev.w3.org/html5/ Donde encontrarán Canvas (Bitmaps Javascript), Device (cámaras, microfonos), Websockets (Mensajes realtime), Web Workers (JS multitarea) entre muchos otros ejemplos bajo HTML5. ![]() "HTML5 estará listo en el 2014"El último y más famoso recurso de los detractores de HTML5 es que "no está listo". ¿Ustedes creen que HTML5 es un software que una empresa "termina"? HTML5 es un spec vivo, cuya implementación depende de los navegadores y del cual gran parte se puede usar ya mismo sin problemas. Eso incluye CSS3. Es posible usar CSS3 en Internet Explorer viejos. Es posible usar HTML5 desde ya. El draft HTML5 de la W3C no se cerrará hasta dentro de unos años, pero para entonces nuestros navegadores tendrán nuevas tecnologías, porque no es Flash o Visual Basic, es una tecnología viva que crece con su uso. Sean profesionales, usen HTML5 y no teman llamarle a las cosas por su marca. |
Enrutamiento estático en Redes Cisco Posted: 07 Mar 2012 12:21 AM PST Después de haber estudiado toda la teoría del sistema de direcciones IPv4, por fin aprenderemos el uso del enrutamiento estático para conectar y generar rutas entre diferentes redes a través de los dispositivos intermedios, trabajando sobre una topología simple que usaremos para configurar todos los pasos y seleccionar los comandos correctos para generar nuestro camino bidireccional en cada segmento de la red y testeándolo finalmente para comprobar la conectividad entre ambos extremos. Saludos. |
Posted: 28 Jul 2009 05:00 PM PDT |
You are subscribed to email updates from Cristalab To stop receiving these emails, you may unsubscribe now. | Email delivery powered by Google |
Google Inc., 20 West Kinzie, Chicago IL USA 60610 |
No hay comentarios:
Publicar un comentario