Open Social Data
Hackaton
26 de sep/embre de 2014
Qué es el BIFI
• Ins/tuto de Biocomputación y Física de Sistemas Complejos de la Universidad de Zaragoza
• Mul/disciplinariedad – Bioquímica – Física – Computación
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 2
Análisis de redes complejas
• Grafo con una serie de caracterís/cas especiales (estructura en comunidades, jerarquía, etc.)
• Las redes sociales (Facebook, Twi[er, …) • Se pueden u/lizar para extraer información sobre la sociedad
• Experimentos dilema del prisionero, análisis del movimiento del 15m, Kampal, etc.
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 3
Escucha ac/va en Aragón • ¿De qué se habla en Aragón? • ¿Qué es importante para los aragoneses? • ¿Qué puede resultar interesante para los aragoneses?
• ¿En qué se diferencian los aragoneses del resto de España?
• …
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 4
Fuentes que se capturan • Eventos: Facebook Events, Spain-‐info • Texto: Twi[er, Facebook, Google+, Blogger, Blogia,
Wordpress • Wiki: Wikipedia • Video: Youtube, Vimeo • Imágenes: Instagram, Flickr, Pinterest • Lugares: Foursquare • Código: Github • Prensa: Heraldo de Aragón, El Periódico de Aragón, Diario
del Alto Aragón, Diario de Teruel
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 5
Qué datos se capturan
• Siempre datos públicos • Que cualquier usuario puede encontrar por sus propios medios
• Se puede controlar el contenido tanto por la URL como por el autor
• Se puede solicitar que un usuario deje de ser escuchado
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 6
Criterios de captura
• Geoposición – Dentro de Aragón – Zonas colindantes – Nombres de municipios
• Palabras/usuarios clave – Temas de interés – Usuarios relevantes para Aragón – Se realimentan y actualizan con los datos geoposicionados
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 7
Criterios de captura II
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 8
Criterios de captura III
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 9
Cómo se captura
• Normalmente el usuario ve la información a través de un navegador
• Necesitamos grandes volúmenes de información
• Filtrado por diferentes criterios • Herramientas que las redes sociales y otras webs proveen
• Límites de las fuentes
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 10
Cómo se captura II
• Robots llamados arañas, web crawlers, scrapers…
• Simulan las visitas que muchos usuarios harían
• Cada uno se ocupa de una tarea – Una red social – Cierta información
• Centralizan la información – Filtran y “uniformizan” -‐> ETL
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 11
Cómo se filtra la información
• Se solicitan sólo los campos que nos interesan, se obvian los demás
• 2 /pos: streaming o periódicas • Las arañas no saben qué contenido es bueno o malo – Se captura mucho ruido, especialmente al buscar por palabra clave
– No se deben de usar palabras demasiado cortas o sin significado (preposiciones, aruculos…)
– Hay que tener cuidado con otros idiomas. Ej: CAI, USJ
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 12
Cómo se almacena
• Todos los datos son guardados en una gran base de datos distribuida
• La can/dad de información capturada es importante
• En torno a 30 GB al mes, que se reducen a unos 3 GBs al filtrar
• Unas 800.000 entradas al mes entre vídeos, fotos, mensajes, etc.
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 13
Procesamiento
• Detección de idioma • Se almacena el criterio que ha hecho que cierto contenido se capture
• Se calculan ciertos parámetros en base a los datos capturados: – Apariciones por cada 1000 palabras de dentro y fuera de Aragón:
• Temas de interés dentro de Aragón • Diferenciales • Acumulados por 30, 60 y 90 días
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 14
Arquitectura
• La base de datos está distribuida en dos nodos para dividir la carga – Nodo maestro: se realizan todas las tareas de recogida y procesamiento de datos, además del panel de administración
– Nodo esclavo: es una réplica de sólo lectura sobre la que se realizan las consultas de la API
• En momentos puntuales, se u/lizan algunas máquinas de cloud por límites en las fuentes
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 15
Arquitectura II
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 16
Arquitectura III
• Nodo maestro – PostgreSQL 9.3: sistema gestor de la base de datos como maestro (+POSTGIS)
– Python 2.7 (pyscopg2, lxml, beau/foulsoup4, json, urllib)
– Django: interfaz de administración – Munin: monitorización de recursos – Celery+Redis: sistema de colas de tareas distribuidas
– Apache: servidor web 26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 17
Arquitectura IV
• Nodo esclavo – PostgreSQL 9.3: sistema gestor de la base de datos como esclavo de sólo lectura
– Python 2.7 (pyscopg2, json, mod-‐wsgi) – Munin: monitorización de recursos – Celery+Redis: sistema de colas de tareas distribuidas
– Apache: servidor web para servir la API con mod-‐python y mod-‐evasive
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 18
Arquitectura V
• Hardware: los dos nodos son iguales, con especificaciones similares a las medium de Amazon: – 1U R1304GZ4GC – 24 procesadores Intel(R) Xeon(R) CPU E5-‐2620 @ 2.00GHz – 4 módulos de 16 GB de RAM DIMM DDR3 Synchronous 1333 MHz
– 2 discos SAS de 7200 RPM y 2 TB cada uno WD2001FYYG-‐01SL3 par/cionados en EXT4
– 4 tarjetas de red Intel I350 Gigabit Network Connec/on – 1 disco SSD Kingston Serie V300 240Gb
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 19
Arquitectura VI
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 20
El sistema
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 21
El sistema II
• Un script en Python por cada scraper – Cada uno se ocupa de una fuente – Código común separado (geolocalización, db, idioma…)
– En la base de datos se guarda información de cada uno:
• Tipo: períodico o streaming • Ruta: dónde se encuentra el script que lo ejecuta • Cada cuánto se ejecuta • Úl/ma ejecución • Resultado de la úl/ma ejecución
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 22
El sistema III
• Proceso /po demonio que consulta esta información y lanza en segundo plano conforme está configurado – Controla el resultado – Registra todo lo que sucede en logs – Manda emails a los administradores si hay errores
• Desde el panel de administración se modifican estos parámetros
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 23
El sistema IV
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 24
El sistema V
• Los scrapers que requieren procesamiento lo llevan integrado en el propio script (cambios en las fuentes)
• Una vez que los datos están descargados – Automá/camente se copian al esclavo -‐> API – Pueden ser monitorizados y controlados desde el panel de administración
• El esclavo es el que soporta la carga de las consultas de los usuarios
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 25
El sistema VI
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 26
Panel de administración
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 27
Panel de administración II
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 28
Panel de administración III
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 29
Panel de administración IV
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 30
Panel de administración V
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 31
Panel de administración VI
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 32
Panel de administración VII
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 33
Panel de administración VIII
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 34
Panel de administración IX
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 35
Qué ofrecemos al público
• Una API (Applica/on Programming Interface) que permite acceder a los datos recogidos y filtrados
• Totalmente pública, sin necesidad de registro (aunque con algún límite)
• Se pueden acceder a los datos an/guos hasta 12 meses (por el momento disponemos desde diciembre de 2013)
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 36
Cómo usar nuestra API
• Pe/ciones HTTP como las que hace cualquier navegador
• El usuario sólo /ene que indicar qué datos desea obtener y cómo los quiere filtrar – Dirección (/trendings o /data) – Parámetros (?source=twi[er)
• Librerías en dis/ntos lenguajes que hacen muy sencillo su uso
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 37
Qué formato /enen los resultados • Actualmente en formato JSON, próximamente en XML, CSV, …
• Los resultados aparecen paginados • Ordenados cronológicamente
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 38
Trendings • h[p://opendata.aragon.es/socialdata/trendings
– {"status": "OK", "results": [result_1, result_2, result_3...]}
– Results: {"name": name, "url": url} • /socialdata/trendings?type=aragon • /socialdata/trendings?type=spain • /socialdata/trendings?type=30days • /socialdata/trendings?type=60days • /socialdata/trendings?type=90days • /socialdata/trendings?type=diff
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 39
Contenido
• h[p://opendata.aragon.es/socialdata/data?parameters – {"status": "NOK", "error_message": message} – {"status": "OK", "on_this_page": on_this_page, "results":[result_1, result_2, result_3...]}
– {"id": id,"descrip/on": descrip/on, "ends_on": ends_on, "lat": la/tude, "lng": longitude, "published_on": published_on, "/tle": /tle, "url": url, "author": author,"starts_on": starts_on, "source": source, "type": type, "thumbnail":thumbnail}
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 40
Contenido II • id: entero iden/fica/vo del elemento. • type: cadena que indica el /po de contenido. • source: cadena de texto que indica a qué fuente pertenece el resultado. • ,tle: cadena con el utulo del contenido en el caso de que lo tenga. • descrip,on: contenido del elemento (texto del tweet, descripción del
evento, descripción del vídeo, etc.) • url: dirección url directa al contenido. • author: cadena de texto con el nombre del autor en caso de que lo haya. • starts_on: para los eventos, si la tuvieran, fecha de comienzo. • ends_on: para los eventos, si la tuvieran, fecha de final. • published_on: fecha de publicación del contenido. • lat: la/tud del contenido en formato real. • lng: longitud del contenido en formato real. • thumbnail: dirección url del thumbnail asociado si lo hubiera.
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 41
Contenido III
• Dos /pos de paginación: – Estándar (máx. 1000) – since_id & max_id
• Todas las fechas /enen el formato: 16/01/14 13:03
• Se puede especificar que la API devuelva los datos en crudo con el parámetro raw_mode – /socialdata/data?source=twi[er&raw_mode=true – Nuevo campo en los resultados llamado raw_data
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 42
Cómo podemos filtrarla
• Por /po de contenido • Por fuente • Por conversación • Por geoposición • Por período • Por palabra clave
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 43
Filtro por /po de contenido • /socialdata/data?type=content_type
– event (Facebook Events, Spain-‐info) – text (Twi[er, Facebook, Google+, Blogger, Blogia, Wordpress)
– wiki (Wikipedia) – video (Youtube, Vimeo) – picture (Instagram, Flickr, Pinterest) – venue (Foursquare) – code (Github) – media (Heraldo de Aragón, El Periódico de Aragón, Diario del Alto Aragón, Diario de Teruel)
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 44
Filtro por fuente • /socialdata/data?source=source_name
– spain_info – facebook_events – twi[er – youtube – instagram – facebook – wikipedia – blogger – wordpress – blogia – vimeo – flickr – foursquare – pinterest – google_plus – github – heraldodearagon – periodicodearagon – diariodelaltoaragon – diariodeteruel
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 45
Filtro por conversación
• /socialdata/data?conversa/on=conversa/on_type – geo: conversación sobre lo que se habla dentro de Aragón
– rel: conversación de temas y usuarios relevantes para Aragón
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 46
Filtro por geoposición • Filtrado por centro y radio
– /socialdata/data?center=coordinates&distance=distance_in_km – /socialdata/data?center=41.35678,-‐0.8148576&distance=5
• Filtrado por cuadrado geográfico – /socialdata/data?bbox=min_lng,min_lat,man_lng,max_lat – /socialdata/data?bbox=-‐0.8148576,41.35678,-‐0.667584,41.78553
• Filtrado por municipio y radio – /socialdata/data?locality=locality&distance=distance_in_km – /socialdata/data?locality=Zaragoza&distance=5
• Sólo datos geolocalizados: – /socialdata/data?source=twi[er&geolocated=true
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 47
Otros filtros
• Por período: – /socialdata/data?start_date=start_date&end_date=end_date
• Por palabra clave: – /socialdata/data?query=query
• Combinaciones!
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 48
Ejemplo de resultados
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 49
Qué puedo hacer con estos datos
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 50
Cómo va a evolucionar
• Se con/nuarán añadiendo nuevas fuentes de datos
• Mayor volumen de datos, mayor precisión, y mayor calidad
• Nuevos formatos de salida • … (Abiertos a sugerencias de los ciudadanos)
26 de sep/embre de 2014 Open Social Data -‐ Escucha Ac/va 51
Top Related