Tabla de Contenidos -...

35
Software Design Document SENTINEL: Analítica sobre percepción de corrupción en Facebook Trabajo de grado 2017-30 Ingeniería de Sistemas Pontificia Universidad Javeriana Manuela Forero Pedreros Jeffrey Torres Arango Sebastián Gracia Valderrama 1

Transcript of Tabla de Contenidos -...

Software Design Document

SENTINEL: Analítica sobre percepción de corrupción en

Facebook

Trabajo de grado 2017-30

Ingeniería de Sistemas

Pontificia Universidad Javeriana

Manuela Forero Pedreros

Jeffrey Torres Arango

Sebastián Gracia Valderrama

Alexandra Pomares Quimbaya Ph.D.

1

Historial de Cambios

Responsable Descripción Fecha Versión

Manuela Forero,

Jeffrey Torres,

Sebastián Gracia

Secciones 5, 6 7 01/10/2017 1.0

Manuela Forero,

Jeffrey Torres,

Sebastián Gracia

Corrección

revisiones

24/10/2017 2.0

2

1. Tabla de Contenidos

Contenido

1. Historial de Cambios..............................................................................................................2

2. Tabla de Contenidos...............................................................................................................3

3. Tabla de Ilustraciones.............................................................................................................4

4. Introducción............................................................................................................................7

5. Arquitectura............................................................................................................................8

5.1. Vista Lógica del Sistema................................................................................................8

5.2. Vista Física del Sistema...............................................................................................10

6. Diseño Detallado..................................................................................................................10

6.1. Estructura del Sistema..................................................................................................11

6.2. Comportamiento del Sistema.......................................................................................16

6.3. Persistencia...................................................................................................................18

6.4. Interfaz de Usuario.......................................................................................................20

7. Referencias...........................................................................................................................30

3

2. Tabla de Ilustraciones Ilustración 1 Vista lógica del sistema...........................................................................................8

Ilustración 2 Vista física del sistema.........................................................................................10

Ilustración 3 Modelo de analítica...............................................................................................11

Ilustración 4 Modulo de análisis de sentimientos con requerimientos........................................12

Ilustración 5 Modulo de agregadas con requerimientos.............................................................13

Ilustración 6 Modulo de sesgo con requerimientos....................................................................14

Ilustración 7 Modulo de correlaciones con requerimientos........................................................14

Ilustración 8 Diagrama de secuencia de análisis de sentimientos...............................................17

Ilustración 9 Diagrama de secuencia de agregadas.....................................................................17

Ilustración 10 Diagrama de secuencia de correlaciones.............................................................18

Ilustración 11 Diagrama de secuencia de sesgo..........................................................................18

Ilustración 12 Modelo de datos..................................................................................................19

Ilustración 13 Proceso de guardado y carga...............................................................................20

Ilustración 14 Visualización del prototipo - descubre (Asociación de palabras)........................20

Ilustración 15 Visualización del prototipo – líder 1 estadísticas de Facebook............................21

Ilustración 16 Visualización del prototipo líderes de opinión – acciones..................................21

Ilustración 17 Visualización del prototipo líderes de opinión - nube de palabras de publicaciones

realizadas por el líder.................................................................................................................21

Ilustración 18 Visualización del prototipo líderes de opinión – tendencias de los comentarios.22

Ilustración 19 Visualización del prototipo líderes de opinión - Reacciones en noticias sobre líder de

opinión.......................................................................................................................................22

Ilustración 20 Visualización del prototipo líderes de opinión - Comentarios populares sobre el líder en

el mes.........................................................................................................................................23

Ilustración 21 Visualización del prototipo Medios - casos de corrupción..................................23

Ilustración 22 Visualización del prototipo Medios - Cantidad de publicaciones sobre líderes de

opinión vs cantidad de publicaciones de corrupción que mencionan a líderes de opinión..........24

Ilustración 23 Visualización del prototipo Medios - Cantidad de publicaciones sobre partido político

vs cantidad de publicaciones de corrupción que mencionan a partido político...........................24

Ilustración 24 Visualización del prototipo Medios - Cantidad de publicaciones sobre la institución vs

cantidad de publicaciones de corrupción que mencionan a la institución...................................25

Ilustración 25 Visualización del prototipo Medios – medios que publican más sobre la institución vs

medios que publican menos sobre la institución.........................................................................25

4

Ilustración 26 Visualización del prototipo Medios – cantidad de publicaciones hecha por un medio de

comunicación vs otro medio de comunicación...........................................................................25

Ilustración 27 Visualización del prototipo Medios – cantidad de publicaciones sobre un caso de

corrupción hecho por dos medios...............................................................................................26

Ilustración 28 Visualización del prototipo Medios – cantidad de publicaciones sobre un líder de

opinión hecho por dos medios....................................................................................................26

Ilustración 29 Visualización del prototipo Medios – cantidad de publicaciones sobre un partido

político hecho por dos medios..................................................................................................27

Ilustración 30 Visualización del prototipo Medios – cantidad de publicaciones sobre una institución

hecho por dos medios.................................................................................................................27

Ilustración 31 Visualización del prototipo Medios - Publicaciones sobre corrupción por cada medio

...................................................................................................................................................28

Ilustración 32 Visualización del prototipo partidos políticos - Sentimientos expresados en los

comentarios................................................................................................................................28

Ilustración 33 Visualización del prototipo partidos políticos – actividad...................................28

Ilustración 34 Visualización del prototipo partidos políticos - reacciones en noticias sobre este partido

político.......................................................................................................................................29

Ilustración 35 Visualización del prototipo casos de corrupción – cantidad de publicaciones sobre el

caso vs cantidad de comentarios sobre el caso...........................................................................29

Ilustración 36 Visualización del prototipo casos de corrupción – reacciones en noticias sobre este

carro de corrupción....................................................................................................................29

5

3. Índice de tablas Tabla 1 Algoritmo nucleo.............................................................................................................16

6

4. IntroducciónEste documento conocido como SDD (por sus siglas en inglés Software Design Document),

contiene la descripción detallada del diseño del SENTINEL. Este proyecto es realizado como trabajo

de grado de la carrera de ingeniería de sistemas de la Pontificia Universidad Javeriana. Este

documento permite identificar los principales componentes que construyen al sistema, su relación y

principal medio de comunicación.

7

5. Arquitectura

5.1. Vista Lógica del SistemaA continuación, en la ilustración 1 se presenta el diagrama de arquitectura de componentes;

identificando capas, controladores e interfaces propuestas y requeridas [1][2].

Ilustración 1 Vista lógica del sistema

A continuación, se detallan las capas y sus componentes:

1. Fuente de datos – Facebook

a. Datos: Representa la fuente principal de datos a extraer: el origen y forma inicial

provendrá de la red social Facebook, el sistema accede constantemente a los datos

abiertos de Facebook y por medio de HTTPS/REST se extraen los datos al sistema.

2. RART 2.0

a. Extracción de datos: Es el componente encargado de extraer datos de Facebook, es

un código desarrollado e implementado en Python que permite por medio de métodos

POST y GET extraer los datos de Facebook y los deja a disposición del sistema de

manera local.

3. Base de datos no relacional: Debido a la forma y estructura de los datos, junto con la

naturaleza del proyecto, los datos extraídos no cumplen con una forma estándar para

almacenarlos en una base de datos relacional, por el contrario, los datos deben ser tratados y

almacenados en base de datos no relacionales, una de las razones principales es que el

formato de intercambio de datos está en formato JSON.

4. Componente de analítica

8

Todos los módulos del componente de analítica fueron desarrollados e implementados en

Python 3.5+ y R 3.1+

a. Módulo de análisis de sentimientos

i. Algoritmos de sentimientos: es una colección de algoritmos enfocados a

realizar análisis de sentimientos sobre los datos extraídos.

b. Módulo de sesgos

i. Algoritmos de sesgos: es una colección de algoritmos enfocados y

desarrollados a realizar sesgos de los datos extraídos.

Bajo este contexto, el sesgo se mide por medio del rango intercuartil, en

donde los valores atípicos son aquellos medios que publican menos sobre un

caso de corrupción.

c. Módulo de agregadas

i. Algoritmos de agregadas: es una colección de algoritmos enfocados y

desarrollados a realizar funciones básicas de agregados, tales como suma,

restar, contar, entre otros.

d. Módulo de correlaciones

i. Algoritmos de correlaciones: es una colección de algoritmos enfocados a

realizar correlaciones sobre los datos extraídos.

5. Componente de visualización

El componente de visualización está definido bajo una arquitectura Cliente-Servidor,

donde el servidor está implementado en Node.js y el cliente con las tecnologías HTML5,

CSS3 y JavaScript. El servidor se encarga de buscar los resultados del proceso de analítica y

enviarlos al cliente para su posterior visualización.

Para la visualización se utilizaron una serie de librerías web que proveen

herramientas gráficas para poder visualizar los resultados obtenidos del componente de

visualización. A continuación, se listan las librerías utilizadas:

1. Vis.js: Librería dinámica de visualización web (http://visjs.org/ )

2. Chartist.js: Librería desarrollada en JavaScript que permite graficar datos en diferentes tipos

de graficas en cavas HTML5 (https://gionkunz.github.io/chartist-js/ )

3. Chart.js: Librería desarrollada en JavaScript que permite graficar datos en diferentes tipos de

graficas en canvas HTML5 (http://www.chartjs.org/ )

9

4. Word_cloud: Generador de nube de palabras desarrollado en Python.

(https://github.com/amueller/word_cloud )

5.2. Vista Física del Sistema

A continuación, en la ilustración 2 se muestra la vista física del sistema en donde se ubican los

componentes de software y cómo estos se despliegan en diferentes unidades de hardware, mostrando

sus protocolos de comunicación.

Ilustración 2 Vista física del sistema

A continuación, se detallan los nodos:

1. Servidor SENTINEL: Este servidor genérico almacena todos los componentes del sistema

de información Sentinel.

a. Base de datos no relacional.

b. Analítica.

c. RART 2.0.

d. Visualización.

2. Device: representa el dispositivo que podrá visualizar los resultados finales de Sentinel, solo

se necesita de un navegador web para desplegar la interfaz, ya sea desde un dispositivo móvil

o un computador personal.

10

3. Facebook: Es la red social de donde se extraerán los datos. Diseño Detallado.

5.3. Estructura del Sistema

Inicialmente el sistema busca ser una herramienta que permita a los interesados tener una

perspectiva real de los casos de corrupción más populares en ambientes virtuales sociales como lo es

Facebook. Para esto es necesario entender qué es la corrupción y cómo se comporta en ambientes

sociales, para esto el grupo de trabajo se asesoró de expertos en el negocio y el tema principal de la

corrupción en Colombia.

Teniendo en cuenta el orden en que los requerimientos van a ser desarrollados e implementados,

por medio de la priorización, se procede a crear un modelo de analítica el cual se muestra en la

ilustración 3 en donde se ubican los algoritmos a utilizar, identificando la firma del método a

implementar.

Ilustración 3 Modelo de analítica.

Finalmente, con ánimos de llevar una trazabilidad completa se identifican cuatro módulos

generales dentro del componente de analítica del sistema, dentro de cada módulo se identifican los

algoritmos mencionados en el modelo de analítica y las preguntas correspondientes a cada módulo.

11

1. Módulo de análisis de sentimientos.

Para el desarrollo del módulo de análisis de sentimientos se utilizarán las siguientes herramientas

y lenguajes de desarrollo:

1. Python 3.5

2. R Studio 3.3.3 o superior

Adicionalmente se cuenta con un trabajo de grado desarrollado por estudiantes de pregrado de la

Pontificia Universidad Javeriana y liderado por el Ingeniero Jorge Andrés Alvarado Valencia

denominado "Análisis del sentimiento político mediante la aplicación de herramientas de minería de

datos a través del uso de redes sociales" para llevar a cabo el análisis de sentimientos sobre las

publicaciones que el sistema extrae.

A continuación, en la ilustración 4 se presentan los requerimientos correspondientes al módulo de

análisis de sentimientos:

Ilustración 4 Modulo de análisis de sentimientos con requerimientos.

2. Módulo de agregadas

12

Para el desarrollo del módulo de análisis de sentimientos se utilizarán las siguientes

herramientas y lenguajes de desarrollo:

1. Python 3.5

2. R Studio 3.3.3 o superior.

A continuación, en la ilustración 5 se presentan los requerimientos correspondientes al módulo de

agregadas:

Ilustración 5 Modulo de agregadas con requerimientos.

3. Módulo de sesgo

Para el desarrollo del módulo de análisis de sentimientos se utilizarán las siguientes

herramientas y lenguajes de desarrollo:

1. Python 3.5

2. R Studio 3.3.3 o superior.

13

A continuación, en la ilustración 6 se presentan los requerimientos correspondientes al módulo de

agregadas:

Ilustración 6 Modulo de sesgo con requerimientos.

4. Módulo de correlaciones

Para el desarrollo del módulo de análisis de sentimientos se utilizarán las siguientes

herramientas y lenguajes de desarrollo:

1. Python 3.5

2. R Studio 3.3.3 o superior.

A continuación, en la ilustración 7 se presentan los requerimientos correspondientes al módulo de

agregadas:

14

Ilustración 7 Modulo de correlaciones con requerimientos.

Ahora, se detallan los algoritmos a implementar por cada categorización de minería de datos

en la tabla 1, indicado la técnica, nombre del algoritmo núcleo, entrada y salida. Es necesario

mencionar que en este documento solo se detalla la entrada y salida mas no como se utiliza a nivel del

sistema.

Tarea Técnica Algoritmo núcleo

Entrada Salida

Predictiva Análisis de sentimientos

Bag-of-words

Cadena de caracteres

-1 negativo, 0 neutral, 1 positivo

Descriptiva Sesgo Rango Intercuartil

Lista de cada medio.

Lista de medios, la cantidad de publicaciones de cada medio y una descripción indicando si es un outlier o no según la cantidad de publicaciones que ha hecho comparado al resto de medios.

Descriptiva Asociación de palabras

Matriz de correlación

Una matriz M cuyas filas i representan cada documento (ej: comentario o

Una estructura de datos que representa un grafo, con cada nodo representando las palabras y las aristas representan la asociación entre las palabras.

El tamaño del nodo indica qué tan fuerte es la asociación entre las

15

publicación) y las columnas j son cada palabra que aparece en todo el corpus de documentos.

El valor de cada celda M[i, j] de la matriz es el peso TF-IDF del término j para el documento i.

palabras. Entre más grande el nodo significa que la asociación para esa palabra es mayor y si el nodo es de menor tamaño indica que la asociación es más pequeña.

Descriptiva Suma sum Lista de elementos del mismo tipo; enteros, decimales, entre otros.

Descriptiva Promedio avg Lista de elementos del mismo tipo; enteros, decimales, entre otros.

Descriptiva Frecuencia count Lista de elementos del mismo tipo; cadena de caracteres, enteros, decimales, entre otros.

Descriptiva Mínimo min Lista de elementos

16

del mismo tipo; enteros, decimales, entre otros.

Descriptiva Máximo max Lista de elementos del mismo tipo; enteros, decimales, entre otros.

Tabla 1 Algoritmo núcleo

5.4. Comportamiento del Sistema

En esta sección se presentan los diagramas de secuencia, mediante estos diagramas de secuencia

se identifica el flujo general del usuario al momento de usar el sistema para consultar y observar

resultados, es necesario aclarar que la gran mayoría de componentes identificados en estos diagramas

hacen parte de la arquitectura previamente descrita mas no los algoritmos utilizados bajo cada

módulo.

Módulo análisis de sentimientos

Ilustración 8 Diagrama de secuencia de análisis de sentimientos

Módulo agregadas

17

Ilustración 9 Diagrama de secuencia de agregadas.

Módulo de correlaciones

Ilustración 10 Diagrama de secuencia de correlaciones.

Módulo sesgo

18

Ilustración 11 Diagrama de secuencia de sesgo.

5.5. Persistencia

El sistema maneja una base de datos no relacional y se presenta a continuación en la ilustración

12 la manera en que se representan los datos y su relación.

Ilustración 12 Modelo de datos

1. Post

a. _id: representa el ID del post.

b. created_time: representa la fecha de creación del post.

c. message: representa la cadena de caracteres que representa el post.

d. name: representa el nombre del post.

e. description: representa una descripción del post.

f. shares: representa la cantidad de veces que un post fue compartido.

g. link: representa la url del post.

19

h. reactions:

i. sad: representa la reacción Sad.

ii. haha: representa la reacción haha.

iii. love: representa la reacción love.

iv. like: representa la reacción like.

v. wow: representa la reacción wow.

vi. angry: representa la reacción angry.

2. Comments

a. _id: representa el ID del post.

b. created_time: representa la fecha de creación del comentario.

c. message: representa la cadena de caracteres del mensaje.

d. like_count: representa la cantidad de veces que los usuarios le han dado like a ese

comentario.

Para almacenar los resultados los algoritmos en la base de datos y garantizar un

procesamiento adecuado y eficiente de los datos que continuamente se extraen, se deben seguir una

serie de pasos que se muestran en la ilustración 13:

Ilustración 13 Proceso de guardado y carga

1. Recopilar datos de base de datos: En esta parte del proceso, el componente de analítica

consume los datos ya extraídos por parte de RART 2.0.

2. Aplicar algoritmos del componente de analítica: Una vez los datos son consumidos por parte

del componente de analítica, los algoritmos empiezan su propio procesamiento y previamente

entregan los resultados y salidas de los algoritmos.

3. Generar y guardar resumen del día: Este es uno de los pasos más importantes del proceso

debido a que es en esta actividad que el sistema almacena resúmenes del día con ánimos de no

20

repetir los pasos anteriores. El sistema consulta el resumen del día y posteriormente entrega

los resultados acumulados finales hasta la fecha actual.

5.6. Interfaz de Usuario

Ilustración 14 Visualización del prototipo - descubre (Asociación de palabras)

Ilustración 15 Visualización del prototipo – líder 1 estadísticas de Facebook

Ilustración 16 Visualización del prototipo líderes de opinión – acciones

21

Ilustración 17 Visualización del prototipo líderes de opinión - nube de palabras de publicaciones realizadas por el líder

Ilustración 18 Visualización del prototipo líderes de opinión – tendencias de los comentarios

Ilustración 19 Visualización del prototipo líderes de opinión - Reacciones en noticias sobre líder de opinión

22

Ilustración 20 Visualización del prototipo líderes de opinión - Comentarios populares sobre el líder en el mes

Ilustración 21 Visualización del prototipo Medios - casos de corrupción

23

Ilustración 22 Visualización del prototipo Medios - Cantidad de publicaciones sobre líderes de opinión vs cantidad de

publicaciones de corrupción que mencionan a líderes de opinión

Ilustración 23 Visualización del prototipo Medios - Cantidad de publicaciones sobre partido político vs cantidad de

publicaciones de corrupción que mencionan a partido político

24

Ilustración 24 Visualización del prototipo Medios - Cantidad de publicaciones sobre la institución vs cantidad de

publicaciones de corrupción que mencionan a la institución

Ilustración 25 Visualización del prototipo Medios – medios que publican más sobre la institución vs medios que publican

menos sobre la institución

Ilustración 26 Visualización del prototipo Medios – cantidad de publicaciones hecha por un medio de comunicación vs

otro medio de comunicación

25

Ilustración 27 Visualización del prototipo Medios – cantidad de publicaciones sobre un caso de corrupción hecho por dos

medios

Ilustración 28 Visualización del prototipo Medios – cantidad de publicaciones sobre un líder de opinión hecho por dos

medios

26

Ilustración 29 Visualización del prototipo Medios – cantidad de publicaciones sobre un partido político hecho por dos

medios

Ilustración 30 Visualización del prototipo Medios – cantidad de publicaciones sobre una institución hecho por dos

medios

27

Ilustración 31 Visualización del prototipo Medios - Publicaciones sobre corrupción por cada medio

Ilustración 32 Visualización del prototipo partidos políticos - Sentimientos expresados en los comentarios

Ilustración 33 Visualización del prototipo partidos políticos – actividad

28

Ilustración 34 Visualización del prototipo partidos políticos - reacciones en noticias sobre este partido político

Ilustración 35 Visualización del prototipo casos de corrupción – cantidad de publicaciones sobre el caso vs cantidad de

comentarios sobre el caso

Ilustración 36 Visualización del prototipo casos de corrupción – reacciones en noticias sobre este carro de corrupción

29

6. Referencias

[1]. Mendoza, Calambás, (2016). Documento de Diseño de Software, RART, Trabajo de Grado,

recuperado de http://pegasus.javeriana.edu.co/~CIS1630AP06/Documentacion/SDD/RART_SDD.pdf

11 de abril de 2017

[2]. López, Iannini, Forero, Torres, Guerrero, Gracia (2015). Software Design Document, JaveShop,

Ingeniería de Software.

[2] 1016-2009 - IEEE Standard for Information Technology--Systems Design--Software Design

Descriptions

30