51
Open Social Data Hackaton 26 de sep/embre de 2014

Open Social Data (Jaca), Gonzalo Ruiz

Embed Size (px)

DESCRIPTION

Open Social Data

Citation preview

Page 1: Open Social Data (Jaca), Gonzalo Ruiz

Open Social Data

Hackaton    

26  de  sep/embre  de  2014  

Page 2: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 3: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 4: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 5: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 6: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 7: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 8: Open Social Data (Jaca), Gonzalo Ruiz

Criterios  de  captura  II  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   8  

Page 9: Open Social Data (Jaca), Gonzalo Ruiz

Criterios  de  captura  III  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   9  

Page 10: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 11: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 12: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 13: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 14: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 15: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 16: Open Social Data (Jaca), Gonzalo Ruiz

Arquitectura  II  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   16  

Page 17: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 18: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 19: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 20: Open Social Data (Jaca), Gonzalo Ruiz

Arquitectura  VI  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   20  

Page 21: Open Social Data (Jaca), Gonzalo Ruiz

El  sistema  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   21  

Page 22: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 23: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 24: Open Social Data (Jaca), Gonzalo Ruiz

El  sistema  IV  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   24  

Page 25: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 26: Open Social Data (Jaca), Gonzalo Ruiz

El  sistema  VI  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   26  

Page 27: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   27  

Page 28: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  II  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   28  

Page 29: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  III  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   29  

Page 30: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  IV  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   30  

Page 31: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  V  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   31  

Page 32: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  VI  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   32  

Page 33: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  VII  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   33  

Page 34: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  VIII  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   34  

Page 35: Open Social Data (Jaca), Gonzalo Ruiz

Panel  de  administración  IX  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   35  

Page 36: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 37: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 38: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 39: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 40: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 41: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 42: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 43: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 44: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 45: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 46: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 47: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 48: Open Social Data (Jaca), Gonzalo Ruiz

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  

Page 49: Open Social Data (Jaca), Gonzalo Ruiz

Ejemplo  de  resultados  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   49  

Page 50: Open Social Data (Jaca), Gonzalo Ruiz

Qué  puedo  hacer  con  estos  datos  

26  de  sep/embre  de  2014   Open  Social  Data  -­‐  Escucha  Ac/va   50  

Page 51: Open Social Data (Jaca), Gonzalo Ruiz

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