1. entendimiento del negociopegasus.javeriana.edu.co/.../archivos/crisp/crisp.docx · web viewa...

101
CRISP-DM 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. Director Trabajo de grado

Upload: nguyencong

Post on 10-Oct-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

CRISP-DM

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.

Director Trabajo de grado

Contenido1. Entendimiento del negocio........................................................................................................................6

1.1 Contexto...............................................................................................................................................6

1.2 Objetivos del negocio utilizando minería de datos..............................................................................9

1.3 Evaluar la situación actual...................................................................................................................9

1.4 Determinar los objetivos de minería..................................................................................................18

1.5 Criterio de éxito de minería...............................................................................................................19

2. Entendimiento de datos............................................................................................................................19

2.1 Recopilar los datos iniciales...............................................................................................................19

2.2 Descripción inicial de datos...............................................................................................................20

2.3 Exploración inicial de datos...............................................................................................................23

2.4 Verificar calidad de los datos.............................................................................................................28

3. Preparación de datos................................................................................................................................29

3.1 Selección de datos..............................................................................................................................29

3.2 Limpieza de datos..............................................................................................................................29

3.3 Construcción de datos........................................................................................................................30

3.4 Integración de datos...........................................................................................................................30

3.5 Adecuación de datos..........................................................................................................................30

4. Modelo.....................................................................................................................................................31

4.1 Seleccionar técnicas de minería.........................................................................................................31

4.1.1 Técnicas Predictivas....................................................................................................................31

4.1.2 Técnicas Descriptivas.................................................................................................................32

4.2 Definir el diseño de pruebas para el modelo......................................................................................37

4.3 Construir el modelo............................................................................................................................38

4.3.1 Análisis de sentimientos.............................................................................................................38

4.3.2 Sesgo...........................................................................................................................................40

4.3.3 Asociación de palabras...............................................................................................................41

4.3.4 Funciones agregadas...................................................................................................................43

4.4 Evaluación de modelos......................................................................................................................47

4.4.1 Evaluación de análisis de sentimiento............................................................................................47

4.4.2 Evaluación de algoritmos descriptivos.......................................................................................55

5. Evaluación................................................................................................................................................56

5.1 Evaluación de resultados....................................................................................................................56

5.2 Encuesta TAM...................................................................................................................................59

5.2 Próximos pasos..................................................................................................................................63

2

6. Despliegue................................................................................................................................................63

6.1 Plan de despliegue..............................................................................................................................63

6.2 Plan de monitoreo y mantenimiento..................................................................................................66

6.3 Reporte final.......................................................................................................................................71

6.4 Revisión del proyecto........................................................................................................................71

6.4.1 Fortalezas....................................................................................................................................71

6.4.2 Debilidades.................................................................................................................................72

6.4.3 Trabajo futuro.............................................................................................................................72

7. Referencias...........................................................................................................................................73

Tabla de ilustraciones Ilustración 1 Logo observatorio.........................................................................................................6

Ilustración 2 Composición del Observatorio.......................................................................................7

Ilustración 3 Modelo de dominio.....................................................................................................15

Ilustración 4 Modelo de datos..........................................................................................................21

Ilustración 5 Publicación de Facebook..............................................................................................22

Ilustración 6 Cantidad de publicaciones que comparten los usuarios por página de noticias...................24

Ilustración 7 Reacciones 'wow'........................................................................................................25

Ilustración 8 Reacciones 'sad'..........................................................................................................25

Ilustración 9 Reacciones 'love'.........................................................................................................26

Ilustración 10 Reacciones 'haha'......................................................................................................26

Ilustración 11 Reacciones 'angry'.....................................................................................................27

Ilustración 12 Reacciones 'like'........................................................................................................27

Ilustración 13 Reacciones vs shares.................................................................................................28

Ilustración 14 Modelo de analítica...................................................................................................31

Ilustración 15 visualización análisis de sentimientos..........................................................................32

Ilustración 16 comparación de los medios.........................................................................................33

Ilustración 17 Visualización de todos los medios...............................................................................34

Ilustración 18 grafo........................................................................................................................35

Ilustración 19 Función agregada – Cantidad de publicaciones que realiza un medio sobre un caso.........36

Ilustración 20 Función agregada – Cantidad de publicaciones que realiza un medio sobre un partido

político..........................................................................................................................................37

Ilustración 21 Función agregada – Reacciones en noticias sobre un caso de corrupción........................37

Ilustración 22 Salida de algoritmo de análisis de sentimientos............................................................38

3

Ilustración 23 Análisis de sentimientos para Álvaro Uribe Vélez........................................................39

Ilustración 24 Noticia sobre Álvaro Uribe Vélez en noviembre 16 del 2016, El Tiempo........................39

Ilustración 25 Visualización del algoritmo de sesgo...........................................................................40

Ilustración 26 Algoritmo de sesgo para publicaciones sobre corrupción de un líder de opinión..............41

Ilustración 27 Grafo (asociación de palabras) para publicaciones........................................................42

Ilustración 28 Grafo (asociación de palabras) para comentarios..........................................................43

Ilustración 29 Función agregada - Reacciones en noticias sobre un caso de corrupción.........................44

Ilustración 30 Función agregada - número total de reacciones que han hecho en la página de un líder de

opinión..........................................................................................................................................44

Ilustración 31 Función agregada - Comentarios populares de un líder.................................................45

Ilustración 32 Función agregadas - Cantidad de publicaciones sobre el partido político vs cantidad de

publicaciones de corrupción que mencionan al partido.......................................................................46

Ilustración 33 Función agregada - Publicaciones de dos medios sobre un caso de corrupción................46

Ilustración 34 Función agregada - Nube de palabras de publicaciones en la página de un líder de opinión

.....................................................................................................................................................47

Ilustración 35 Variables externas: Involucrados................................................................................60

Ilustración 36 Facilidad de uso percibida..........................................................................................60

Ilustración 37 Utilidad percibida......................................................................................................61

Ilustración 38 Actitud hacia el uso...................................................................................................61

Ilustración 39 Nivel satisfacción Sentinel.........................................................................................62

Ilustración 40 Nivel satisfacción objetivo general..............................................................................62

Ilustración 41 Buscar ID de una página de Facebook.........................................................................71

Ilustración 42 ID de página de Facebook..........................................................................................71

Tabla de tablas Tabla 1 Datos del Observatorio Transparencia y Anticorrupción...........................................................9

Tabla 2 Datos de contacto del Observatorio Transparencia y Anticorrupción.........................................9

Tabla 3 Recursos provistos por diferentes entidades..........................................................................11

Tabla 4 Recursos humanos con los que cuenta el proyecto.................................................................12

Tabla 5 Herramientas de desarrollo con los que cuenta el proyecto.....................................................12

Tabla 6 Recursos físicos con los que cuenta el proyecto.....................................................................12

Tabla 7 Restricciones del proyecto en términos de minería de datos....................................................13

Tabla 8 Descripción del vocabulario del negocio...............................................................................14

Tabla 9 Preguntas relacionadas con entidad......................................................................................16

4

Tabla 10 Preguntas relacionadas con casos de corrupción..................................................................17

Tabla 11 Preguntas relacionadas con personas naturales.....................................................................17

Tabla 12 Preguntas relacionadas a publicaciones...............................................................................17

Tabla 13 Preguntas relacionadas con comentarios.............................................................................18

Tabla 14 Preguntas relacionadas con involucrados............................................................................18

Tabla 15 Descripción de elementos de Facebook..............................................................................20

Tabla 16 Publicación de Facebook...................................................................................................23

Tabla 17 Atributos nominales..........................................................................................................23

Tabla 18 Resultados algoritmo de análisis de sentimientos con diccionario político..............................48

Tabla 19 Resultados algoritmo de análisis de sentimientos con diccionario genérico............................48

Tabla 20 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.4.............................................49

Tabla 21 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.2.............................................50

Tabla 22 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.3.............................................51

Tabla 23 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.5.............................................51

Tabla 24 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.6............................................52

Tabla 25 Matriz de confusión Cloud Natural Language API, cutoff = 0.25..........................................53

Tabla 26 Matriz de confusión Cloud Natural Language API, cutoff = 0.2............................................53

Tabla 27 Matriz de confusión Cloud Natural Language API, cutoff = 0.3............................................54

Tabla 28 Matriz de confusión Cloud Natural Language API, cutoff = 0.4............................................55

Tabla 29 Encuesta escala de clasificación.........................................................................................60

Tabla 30 Especificaciones...............................................................................................................63

Tabla 31 Esquema..........................................................................................................................70

1. Entendimiento del negocio Sentinel es el nombre del proyecto cuyo principal objetivo es desarrollar un modelo de analítica que

permita enriquecer la información disponible para el Observatorio de Transparencia y Anticorrupción de

Colombia utilizando como fuente de datos la red social Facebook abierta.

5

Para poder llevar a cabo la realización de dicho proyecto planteado por el grupo de trabajo es necesario

contar con la ayuda de expertos y entidades que sepan de primera mano el problema del negocio y que

permitan proveer lineamientos y objetivos claros, así como un cliente final que pueda ser beneficiado del

producto a entregar.

Por esta razón, el grupo de trabajo contactó al Observatorio Nacional de Transparencia y

Anticorrupción colombiano debido a su iniciativa, su gran interés y alto de nivel de análisis del fenómeno

de la corrupción en Colombia (Observatorio de Transparencia y Anticorrupción, 2017).

Adicionalmente, los integrantes del grupo de trabajo asistieron a múltiples conversatorios los cuales

permitieron dar una vista general de la situación actual de Colombia y su lucha contra la corrupción y

cómo las tecnologías de la información hacen parte de este nuevo movimiento y la revolución tecnológica

en sectores públicos, como lo es el gobierno, y sector privado.

Dentro de los conversatorios se resaltan los siguientes:

1. "Big Data, ciudadanía inteligente y prevención de la corrupción", llevado a cabo el 9 de mayo de

2017 en la Universidad Externado de Colombia.

2. "Primer foro tecnologías para la lucha anticorrupción", llevado a cabo 16 de mayo de 2017 en el

Jockey Club de la Universidad del Rosario.

1.1 Contexto¿Qué es el Observatorio?

Ilustración 1 Logo observatorio

Logo observatorio

"El Observatorio de Transparencia y Anticorrupción es una herramienta para la medición y análisis del

fenómeno de la corrupción, a partir de la interacción entre entidades, ciudadanos, y organizaciones

públicas y privadas del orden nacional y territorial, para contribuir a elevar el nivel de transparencia en la

gestión pública" (Observatorio de Transparencia y Anticorrupción, 2017).

El trabajo del Observatorio gira en torno a tres ejes:

1. Observar: Recopilar, analizar y visibilizar indicadores sobre transparencia y anticorrupción.

6

2. Educar: Brindar herramientas para la promoción de la transparencia y la lucha contra la

corrupción.

3. Dialogar: Facilitar espacios para el diálogo entre ciudadanía, academia y servidores públicos.

¿Cómo opera el Observatorio?

El Observatorio es liderado por la Secretaría de Transparencia de la Presidencia de la República, con

el apoyo del Área de Información y Sistemas de la entidad. Para el proceso de formulación, cálculo,

análisis y presentación de indicadores, el Observatorio cuenta con una Mesa Técnica, convocada por la

Secretaría de Transparencia, en la que participan representantes de las distintas entidades integrantes de la

Comisión Nacional de Moralización. A través de estos encuentros se definen los protocolos para el

intercambio de la información necesaria para alimentar los indicadores, se revisan los resultados arrojados

por los indicadores existentes y se proponen nuevos frentes de trabajo (Observatorio de Transparencia y

Anticorrupción, 2017).

¿Quiénes componen el Observatorio?

El Observatorio fue concebido como una herramienta a disposición de la Comisión Nacional de

Moralización, y como nodo de articulación institucional y punto de convergencia de estas entidades con

la sociedad civil y la comunidad (Observatorio de Transparencia y Anticorrupción, 2017).

Ilustración 2 Composición del Observatorio

Comisión Nacional de Moralización

La Comisión es un organismo especial, creado mediante la Ley 1474 de 2011, encargado, entre otras

funciones, de:

Coordinar el intercambio de información en materia de lucha contra la corrupción.

7

Establecer los indicadores de eficacia, eficiencia y transparencia obligatorios para la

administración pública y los mecanismos de divulgación.

Orientar y coordinar la realización de actividades pedagógicas e informativas sobre temas

asociados con la ética y la moral públicas, los deberes y las responsabilidades en la función

pública.

La Comisión es liderada por el presidente de la República, y hacen parte de la misma el Procurador

General de la Nación, el Contralor General de la República, la Auditora General de la República, el Fiscal

General de la Nación, el Defensor del Pueblo, los presidentes del Senado de la República y la Cámara de

Representantes, los presidentes de la Corte Suprema de Justicia y del Consejo de Estado, el Ministro del

Interior, el Ministro de Justicia, y el Secretario de Transparencia (Observatorio de Transparencia y

Anticorrupción, 2017).

Misión del Observatorio

Generar insumos para que tanto las entidades del Estado, en lo nacional y territorial, como instancias

de la sociedad civil, el sector privado, el mundo académico, la comunidad internacional y la ciudadanía en

general, tengan mayores y mejores elementos para la toma de decisiones en materia de lucha contra la

corrupción y promoción de la transparencia.

Visión del Observatorio

El Observatorio Transparencia y Anticorrupción será reconocido a nivel territorial, a nivel nacional e

internacional como referente en la lucha contra la corrupción y promoción de la transparencia, además de

constituirse en la herramienta por excelencia para alimentar la toma de decisiones y el monitoreo de las

acciones de las entidades integrantes de la Comisión Nacional de Moralización, las Comisiones

Regionales de Moralización y la Comisión Nacional Ciudadana para la lucha contra la corrupción

(Observatorio de Transparencia y Anticorrupción, 2017).

Datos de la entidadNombre Observatorio de Transparencia y Anticorrupción

Ubicación Carrera 8 # 12B - 61 Piso 10 Edificio BIC - Bogotá D.C

Tabla 1 Datos del Observatorio Transparencia y Anticorrupción

Punto de contactoPaula Castañeda [email protected]

Tabla 2 Datos de contacto del Observatorio Transparencia y Anticorrupción

8

1.2 Objetivos del negocio utilizando minería de datos Los objetivos principales de negocio del observatorio con el análisis que se va a realizar son:

Objetivo general

Crear un instrumento capaz de monitorear los casos de corrupción, la actividad de los medios y de los

usuarios de Facebook frente a estos sucesos, donde se ven involucradas diferentes entidades, para brindar

los insumos necesarios que permitan hacer un diagnóstico de la corrupción en esta red social.

Objetivos específicos

El instrumento debe permitir mejorar la forma de hacer monitoreo de medios en la red social

Facebook.

El instrumento debe permitir contrastar la percepción de la corrupción en la red social Facebook

contra las encuestas realizadas en Colombia (LAPOP) para poder determinar si se debe tratar cada

una de forma diferente.

1.3 Evaluar la situación actual El Observatorio Nacional de Transparencia y Anticorrupción cuenta con una caja de herramientas que

consolida los instrumentos que se deben tener en cuenta para luchar la corrupción y promover la

transparencia. A continuación, se mencionan algunas de esos instrumentos y cómo estos llegan a

diferentes regiones del país (Observatorio de Transparencia y Anticorrupción, 2017):

1. Mejorar el acceso y la calidad de la información para los ciudadanos

a. Departamento Nacional de planeación (Programa Nacional de Servicio al Ciudadano).

b. Función pública (Política Anti trámites).

c. Ley 1712 de 2014 (Ley de Transparencia).

2. Fortalecer las herramientas de gestión pública para la prevención de la corrupción

a. Procuraduría General de la Nación (Índice de Gobierno Abierto IGA).

b. Guía de Auditoria para Entidades Públicas (Departamento Administrativo de la Función

Pública).

3. Incrementar la incidencia del control social

a. Elefantes Blancos.

b. CiudadanosActivos.com

c. Termómetro de precios de medicamentos.

4. Promover la cultura de la integridad en los sectores público, privado y en la sociedad civil.

a. Rutas pedagógicas para una Cultura de Integridad.

5. Desarrollar herramientas para luchar contra la impunidad en actos de corrupción

9

a. Observatorio Nacional de Transparencia y Anticorrupción.

b. Ley 1778 de 2016 (Ley anti soborno).

Una vez evaluada la situación actual del Observatorio Nacional de Transparencia y Anticorrupción el

grupo de trabajo identificó la oportunidad de proveer una percepción social frente a la corrupción y de

esta manera apoyar la toma de decisiones para poder crear propuestas, alternativas y ser agentes de

cambio en un ambiente virtual y social frente a la corrupción en Colombia.

El Observatorio Nacional de Transparencia y Anticorrupción decide entonces apoyar al grupo de

trabajo con información y lineamentos para llevar a cabo un trabajo de calidad y con impacto social, con

ánimos de enriquecer y fortalecer su valor, para así poder contar con una perspectiva social y directa con

la ciudadanía.

A continuación, se listarán los recursos humanos y físicos con los que cuenta el proyecto para su

elaboración y ejecución.

NOTA: Algunos recursos listados a continuación provienen de diferentes fuentes, por esta razón se

especifica el nombre del recurso, la descripción y el dueño.

RecursosNombre Descripción Dueño

Lexicones de sentimientos (CAOBA, 2017)

Desarrollado por la Alianza CAOBA.

Alianza CAOBA

Casos representativos de corrupción (2000-2015) (Ortiz,

2017)

Es una colección de los casos más representativos de corrupción colombianos identificado por el Observatorio Nacional de Transparencia y Anticorrupción.

Observatorio Nacional de Transparencia y Anticorrupción – Secretaria de Transparencia

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 (Caicedo, Carrillo, Forero, & Ureña, 2017)

Fue un trabajo de grado realizado por estudiantes de Ingeniería industrial bajo la asesoría de Jorge Alvarado. En este trabajo se desarrolla un análisis de sentimiento enfocado a las redes sociales y enfocado a la política.

Luis Eduardo Caicedo Ortiz, Angie Carrillo Chappe, Catalina

Forero Arévalo, Julián David Urueña García, Juan Camilo

Urueña.Director TG: Alvarado Valencia, Jorge Andrés

RART 2.0 (Facebook Extractor) Basado en el trabajo de grado RART desarrollado por el grupo de trabajo, este extractor de datos está desarrollado e implementado en Python y

Grupo de trabajo.

10

permite extraer constantemente los datos de Facebook (Calambás Marin & Mendoza, 2016).

Tabla 3 Recursos provistos por diferentes entidades

Recurso HumanoNombre Descripción Rol Institución

Jeffrey Torres Integrante del equipo de trabajo de grado

SENTINEL

Desarrollador del proyecto SENTINEL.

Grupo de trabajo de grado Sentinel.

Pontificia Universidad Javeriana

Manuela Forero Integrante del equipo de trabajo de grado

SENTINEL

Desarrollador del proyecto SENTINEL.

Grupo de trabajo de grado Sentinel.

Pontificia Universidad Javeriana

Sebastián Gracia Integrante del equipo de trabajo de grado

SENTINEL

Desarrollador del proyecto SENTINEL.

Grupo de trabajo de grado Sentinel.

Pontificia Universidad Javeriana

Mauricio Ortiz Coronado

Politólogo y Abogado. Profesional del Observatorio de Transparencia y Anticorrupción –

Secretaria de Transparencia

Colaborador y asesor. Observatorio Nacional de Transparencia y Anticorrupción –

Secretaría de Transparencia

Paula Andrea Castañeda Aldana

Politóloga. Profesional especializada de la

línea de innovación. Secretaria

de Transparencia.

Colaborador y asesor. Observatorio Nacional de Transparencia y Anticorrupción –

Secretaría de Transparencia

Sebastián Pérez Mora Filósofo y magister en política pública.

Asesor del Observatorio de Transparencia y Anticorrupción –

Secretaria de Transparencia

Colaborador y asesor. Observatorio Nacional de Transparencia y Anticorrupción –

Secretaría de Transparencia

Alexandra Pomares Profesora Asociada.Ingeniera de Sistemas.

PhD en Ingeniería, Universidad de los Andes. Doctora en

Informática, Universidad de

Grenoble

Directora del trabajo de grado y asesor.

Departamento de Ingeniería de Sistemas - Pontificia Universidad

Javeriana

Tabla 4 Recursos humanos con los que cuenta el proyecto.

Herramientas

11

Para llevar a cabo el desarrollo de la plataforma y su correspondiente implementación y despliegue, se

necesitan de una serie de herramientas para llevar a cabo dicha tarea.

HerramientasNombre RazónPython Debido a su gran variedad de

librerías y paquetes, Python será usado para la implementación y desarrollo del módulo de analítica.

Ubuntu Será utilizado para ejecutar scripts, programas y desarrollos del grupo de trabajo, ya sea para el módulo de analítica o la extracción de datos.

R Por su facilidad y potencia, es el lenguaje de programación preferido para desarrollar proyectos de analítica y minería de datos y hará parte del desarrollo de módulo de analítica.

Tabla 5 Herramientas de desarrollo con los que cuenta el proyecto.

Marca Sistema operativo

Procesador RAM HDD

Apple Sierra Core i5 8 GB 1 TBDell Windows 10 Core i7 16 GB 2 TB

Apple El Capitán Core i5 8 GB 256 GB SSDHP Windows 10 Core i7 8 GB 1 TB

Custom Windows 10 Core i7 24 GB 2 TBIBM Ubuntu 16.04 Xeon 64 GB 512 GB

Tabla 6 Recursos físicos con los que cuenta el proyecto.

Restricciones

Con ánimos de garantizar calidad y cumplimiento en el desarrollo del proyecto, se identifican

restricciones y limitaciones por parte del equipo y del problema del negocio.

Razón RestricciónDatos Se extraerán datos desde el 1 de

enero de 2016 hasta el 30 de septiembre de 2017.

Herramientas Se utilizarán herramientas open source para el desarrollo de la plataforma.

Datos Se extraerán datos en el idioma

12

español.Datos Se extraerán datos única y

exclusivamente de los perfiles y páginas públicas de Facebook.

Herramientas Se utilizará R, Python para el desarrollo del módulo de analítica.

Herramientas/Datos Se utilizará una base de datos no relacional para modelar los datos extraídos de Facebook.

Herramientas Se utilizarán los siguientes sistemas operativos: Windows 10.Ubuntu 14.04.macOS Sierra.

Tabla 7 Restricciones del proyecto en términos de minería de datos.

Vocabulario

Basándose en los lineamientos, información recopilada por el grupo de trabajo y con la asistencia del

Observatorio Nacional de Transparencia y anticorrupción, fue posible identificar un vocabulario propio

del negocio en donde se describen entidades y su detalle, esto con el objetivo propio de poder diagramar y

representar por medio de un modelo de dominio el mundo de la corrupción sobre el cual el trabajo de

grado desarrollará el proyecto.

Vocabulario (Concepto) DescripciónReacción Identifica las reacciones que los diferentes tipos

de cuenta, perfil o página, de Facebook pueden dar a una publicación o comentario; Like, Love, Angry, Sad.

Opinión Representa el punto de vista propuesto por una persona sobre una publicación. En Sentinel, la opinión puede ser positiva, negativa o neutral.

Comentario Representa una cadena de caracteres la cual contiene el comentario hecho por un perfil o página.

Persona Natural Representa a aquella persona que no es una entidad.

Caso de Corrupción Representa los casos de corrupción más notables en el país; estos casos de corrupción fueron propuestos por el Observatorio Nacional de Transparencia y Anticorrupción y deben poder ser configurables.

Entidad Representa la asociación de personas de cualquier tipo; mayor nivel de abstracción.

Página Representa una posible herencia del concepto Cuenta; identifica una Fan Page en Facebook.

Publicación Representa la publicación de una página o perfil;

13

puede ser un texto, imagen, link, entre otros.Partido Representa una posible herencia del concepto

Entidad; esta identifica a los partidos políticos Pública Representa una posible categorización del

concepto Entidad; instituciones públicas o del estado.

Privada Representa una posible categorización del concepto Entidad; instituciones privadas o compañías.

Tiempo Representa el tiempo; periodos de tiempo, momentos puntuales en un año, meses, semanas, días. Este concepto se ve involucrado y relacionado en todo el modelo y es de vital importancia.

Involucrado Representa el involucrado en uno o varios casos de corrupción. Este involucrado se representa como una Entidad.

Cuenta Representa el tipo de cuenta en Facebook, puede ser Perfil o Página.

Perfil Representa una posible herencia del concepto Cuenta; identifica un perfil de una persona natural.

Tabla 8 Descripción del vocabulario del negocio.

Modelo de dominio

Una vez identificado y descrito el vocabulario se procede a realizar por medio de un diagrama de

clases el modelo de dominio, en donde se identifican los conceptos clave en el dominio de la corrupción

en el ámbito colombiano, su rol y su comportamiento entre ellos. El grupo de trabajo hace un mapeo de

los conceptos propios del negocio y los componentes de la red social Facebook que Sentinel va a utilizar.

14

Ilustración 3 Modelo de dominio.

El modelo de dominio fue revisado por la Secretaría de Transparencia, la cual recalcó que la entidad

Partido se debería considerar diferente a una entidad privada y/o pública (antes el grupo la consideraba

como una entidad pública). Esto debido a que los partidos políticos se financian de manera privada, pero

ejercen una función pública. La ilustración 3 representa el modelo de dominio final.

En el modelo de dominio se visualiza la relación entre las diferentes entidades (privadas, públicas,

partidos), personas, casos de corrupción y usuarios de Facebook, así como toda su actividad (comentarios,

publicaciones, reacciones). El tiempo es algo transversal al modelo, razón por la cual se extiende a lo

largo del modelo de dominio. Por organización del modelo no se muestran las asociaciones de Tiempo

con todas las entidades. El concepto de tiempo es de especial importancia debido a que al Observatorio le

15

interesa ver tendencias sobre las diferentes entendidas, para así ver en qué períodos hay más actividad de

los usuarios o publicaciones por parte de medios.

Gracias a la construcción del modelo de dominio, fue posible identificar con los expertos del negocio,

las preguntas a nivel de negocio que concretan el cumplimiento de los objetivos del proyecto (ver sección

1.2). Estas preguntas fueron validadas por el Observatorio Nacional de Transparencia y Anticorrupción y

el grupo de trabajo. A continuación, se listan las preguntas que cuales fueron categorizadas por concepto

del modelo de dominio:

Entidad

1. ¿Cuáles son las entidades asociadas a un caso de corrupción?2. ¿Cuántas son las entidades asociadas a un caso de corrupción? 3. ¿Cuántas entidades privadas están asociadas a un caso de corrupción? 4. ¿Cuáles entidades privadas están asociadas a un caso de corrupción?5. ¿Cuántas entidades públicas están asociadas a un caso de corrupción?6. ¿Cuáles entidades públicas están asociadas a un caso de corrupción?7. ¿Cuál es el porcentaje por reacción de una publicación hecha por un tipo de entidad

Privada/Publica?8. ¿Qué tipo de entidades publican más sobre casos de corrupción?9. ¿Cuál es el sector (privado-publico) más involucrado en casos de corrupción? 10. ¿Cuál es la entidad con más seguidores?11. ¿Cuál es la entidad que más ha tenido actividad (Publicaciones, opinión) durante un periodo de

tiempo sobre un caso de corrupción?12. ¿Cuál es la entidad más ha se ha visto involucrada en publicaciones durante un periodo de

tiempo? 13. ¿Cuál es la entidad más ha se ha visto involucrada en publicaciones respecto a un caso de

corrupción? 14. ¿Existen relaciones entre los dos sectores respecto a un caso de corrupción?15. ¿Es posible detectar el sesgo de los medios de comunicación respecto a los casos de

corrupción? 16. ¿Es posible detectar el sesgo de los medios de comunicación respecto a las publicaciones que

hacen?

Tabla 9 Preguntas relacionadas con entidad.

Caso de corrupción

1. ¿Cuál es el caso de corrupción que recibe más reacciones (like-dislike) y opiniones?2. ¿Dado un caso de corrupción, es posible comparar dos líderes de opinión basándose en like-

dislike?3. ¿Cuál es el caso de corrupción que más ha tenido actividad (Publicaciones, opinión) durante un

periodo de tiempo? 4. ¿Cuál caso de corrupción genera el mayor malestar (dislike) en los usuarios?5. ¿Cuál es el número promedio de involucrados en un caso de corrupción?6. ¿Cuál es el número promedio de publicaciones respecto a un caso de corrupción en particular?7. ¿Cuánto tiempo toma un caso de corrupción en ser 'olvidado' por los medios de comunicación?8. ¿Cuánto tiempo toma un caso de corrupción en ser viral en un periodo de tiempo?

16

9. ¿Cuántas veces es mencionado un caso de corrupción en un periodo de tiempo?10. ¿Es posible comparar los casos de corrupción? (Basándose en criterios; mas mencionados, más

involucrados, más like-dislike, entre otros.) 11. ¿Es posible comparar los casos de corrupción dado un periodo de tiempo? (Basándose en

criterios; mas mencionados, más involucrados, mas like-dislike, entre otros.)12. ¿Qué palabras se suelen mencionar cuando se habla de casos de corrupción? (Asociación de

palabras)

Tabla 10 Preguntas relacionadas con casos de corrupción.

Personas naturales

1. ¿Cuáles son los líderes de opinión que más comentan sobre corrupción?2. ¿Cuántas reacciones positivas y negativas tienen los usuarios a las publicaciones de los líderes?3. ¿Cuáles líderes de opinión están más involucrados con corrupción?4. ¿En las publicaciones sobre corrupción los comentarios hechos por los usuarios, cuántas

líderes de opinión son nombrados con más frecuencia en esos comentarios? 5. ¿Cuánto tiempo nombran a un líder de opinión política después de ser involucrado en un caso

de corrupción en comentarios y publicaciones?6. ¿Qué tienen en común los comentarios hechos por los usuarios con más likes?7. ¿Cuál es la reacción de los líderes de opinión ante noticias de corrupción?8. ¿Cuáles líderes políticos están nombrados en organizaciones involucradas en corrupción?9. ¿Cuáles líderes están más nombrados en los comentarios sobre noticias de corrupción? 10. ¿Cuáles son los sentimientos de los usuarios sobre los líderes políticos?

Tabla 11 Preguntas relacionadas con personas naturales.

Publicación

1. ¿Cuáles páginas publican más sobre corrupción?2. ¿Cuál es la opinión de las páginas (positivo/negativo/neutral) acerca de los líderes políticos y

entidades?3. ¿Cuáles son las páginas cuyas publicaciones sobre un líder político o entidad se comparten

más?4. ¿Cuáles son las páginas cuyas publicaciones de corrupción se comparten más?5. ¿Cuáles publicaciones de corrupción (ejemplo: Odebrecht, Reficar, etc) generan más

reacciones (like/angry/sad/etc)? 6. ¿Cuáles publicaciones de corrupción generan más comentarios? 7. ¿Cuáles son los casos de corrupción que más se publican? 8. Comportamiento de publicación de casos de corrupción a través del tiempo 9. Del total de publicaciones de una página, ¿cuál es la proporción de noticias de corrupción? 10. ¿Cuántas publicaciones de corrupción son del sector privado/público? 11. ¿Qué palabras se suelen mencionar cuando se habla de corrupción? (Asociación de palabras) 12. ¿Qué región del país está más involucrada en noticias de corrupción? 13. ¿De dónde son los corruptos que se mencionan en noticias?

Tabla 12 Preguntas relacionadas a publicaciones.

17

Comentarios

1. ¿Los comentarios sobre corrupción son un reflejo de la realidad (comparar con encuestas)? 2. ¿Cuáles son las instituciones del Estado más atacadas por corrupción en los comentarios? 3. ¿Cuál es la opinión (positiva/negativa/neutral) de los usuarios sobre líderes políticos y

entidades?

Tabla 13 Preguntas relacionadas con comentarios.

Involucrados

1. ¿Cuáles son las personas o entidades más involucradas en casos de corrupción? 2. ¿Del total de entidades involucradas en un caso de corrupción, cuántas son Entidades públicas

y privadas? 3. ¿Del total de entidades involucradas en un caso de corrupción, cuántas son entidades públicas

reguladoras? 4. ¿Del total de entidades involucradas en un caso de corrupción, cuántas son entidades públicas,

partidos? 5. ¿Del total de entidades involucradas en un caso de corrupción, cuántas son entidades privadas?

Tabla 14 Preguntas relacionadas con involucrados.

Este conjunto de preguntas permitió identificar el tipo de resultado esperado y, por lo tanto, qué

técnica debía ser incorporada al modelo global de analítica. La trazabilidad entre pregunta, resultado y

componente del modelo de analítica se encuentran en el anexo "Trazabilidad.xlsx".

1.4 Determinar los objetivos de mineríaConsiderando los objetivos de negocio se plantearon cuatro objetivos de minería:

Describir el nivel de agrado y desagrado de los usuarios en Facebook por medio de algoritmos de

análisis de sentimientos.

Hacer un monitoreo de los casos de corrupción más relevantes en Colombia por medio sus

publicaciones a lo largo de un periodo de tiempo definido.

Utilizar algoritmos descriptivos (correlación) para encontrar los temas más relacionados a la

corrupción.

Desarrollar un componente de analítica de datos, compuesto por diferentes módulos (algoritmos)

enfocados a aplicar las siguientes técnicas:

o Análisis de sentimientos

o Asociación de palabras

o Funciones agregadas

o Funciones compuestas

18

Desarrollar un componente que permita visualizar e interpretar los resultados obtenidos al aplicar

las técnicas de analítica seleccionadas.

1.5 Criterio de éxito de mineríaSe establecen dos criterios de éxito para considerar que el proyecto Sentinel fue satisfactorio:

1. Se logran responder las preguntas con prioridad 2 y 3 (ver SRS).

3 es la prioridad más alta, y esta prioridad la tienen las preguntas que más les interesa conocer al

Observatorio de Transparencia y Anticorrupción, por lo cual son las primeras en desarrollarse en

los componentes de analítica y visualización.

2. El sistema se valida con las personas que han apoyado al grupo de trabajo en la elaboración del

proyecto. Esta validación se hace con la encuesta TAM. El proyecto se considera exitoso si se

obtiene un promedio mínimo de 3.0 en cada eje evaluado por la encuesta TAM.

2. Entendimiento de datos

2.1 Recopilar los datos iniciales Los datos serán extraídos de la red social Facebook y para esto es necesario llevar a cabo una serie de

procesos para extraer dichos datos.

Para llevar a cabo la extracción es necesario primero entender qué tipo de datos se necesitan, su

relación y naturaleza dentro la red social Facebook.

Inicialmente se requieren de unos pre-requisitos antes de llevar a cabo el proceso de extracción:

1. Creación de una aplicación en Facebook Developer https://developers.facebook.com/

2. Solicitar un Access Token Tool para poder autenticarse con Facebook y validar la identidad.

Una vez cumplidos los requisitos previamente mencionados, se procede entonces a utilizar la

herramienta de extracción seleccionada. Para el caso del proyecto, el grupo de trabajo cuenta con un

código desarrollado en Python que por medio de un protocolo HTTPS/REST consume la API de

Facebook, conocida como Graph API, para obtener estados y publicaciones junto con otro conjunto de

atributos descritos más adelante.

Todos los datos serán extraídos únicamente de Facebook y por esta razón no es necesario realizar

ninguna integración adicional con otros datos u otros recursos. Estos datos son extraídos en formato

JSON (Facebook, 2017) y son posteriormente almacenados en una base de datos no relacional, conocida

como MongoDB (MongoDB, 2017), en donde los documentos, conocidos como datos en formato JSON,

son ubicados en grandes colecciones.

19

A continuación, se describen los elementos generales de Facebook, con ánimos de entender la anatomía

de la red social y su manera de representar los datos que la componen.

Elemento DescripciónFan Page Página pública de Facebook que ha sido diseñada

con ánimos de compartir información sobre un interés mutuo y captan la atención de varios usuarios (Comunitarios, 2014).

Comentario Un comentario es una apreciación sobre cualquier tema puesto en análisis (Comunitarios, 2014).

Publicación Es la idea de hacer que una información se conozca y salga del ámbito de lo privado a lo público (Comunitarios, 2014).

Reacción Es la respuesta a una publicación; se conocen como emociones: positiva, negativa, humor, furor (Comunitarios, 2014).

Like/Dislike Reacción positiva o negativa de publicaciones y/o comentarios (Comunitarios, 2014).

Tabla 15 Descripción de elementos de Facebook.

Por otro lado, el sistema debe tener la capacidad de extraer las publicaciones y comentarios que hablen

de corrupción, por esta razón el grupo de trabajo utilizará expresiones regulares para poder identificar las

publicaciones adecuadas.

Para ver la base de conocimiento, ir a: https://github.com/sentinelanalytics/analytics/tree/master/base-

conocimiento

2.2 Descripción inicial de datos El sistema extraerá publicaciones y comentarios de los medios de comunicación, líderes de opinión y

demás figuras cuya presencia en la red social sea fuerte y se necesite monitorear. Estas entidades fueron

provistas por el Observatorio Nacional de Transparencia y Anticorrupción. Por esta razón, y con ánimos

de garantizar calidad, precisión y exactitud en los resultados, se extraerán los datos hasta el 28 de octubre

de 2017.

Extrayendo publicaciones y comentarios de los 24 medios de comunicación provistos por el

Observatorio y los 8 líderes de opinión que tienen página de Facebook, desde el 1 de enero de 2016 hasta

el 28 de octubre de 2017, el espacio de almacenamiento que ocuparon los datos fue de 14.72 GB. Con

base en esta información, se estima que mensualmente se extraen alrededor de 670 MB de publicaciones

y comentarios, y al año alrededor de unos 8 GB.

20

Para que los datos tengan sentido y sean apropiados para el desarrollo del proyecto, se desea entonces

solo extraer los siguientes elementos de Facebook. A continuación, se muestran en la figura los elementos

necesarios y los atributos que lo componen identificando su nombre y una descripción de cada atributo:

1. Posts

a. _id: representa el ID del post.

b. created_time: representa la fecha de creación de la publicación.

c. message: representa la cadena de caracteres de la publicación.

d. name: representa el nombre de la publicación.

e. description: representa una descripción de la publicación.

f. shares: representa la cantidad de veces que una publicación fue compartida.

g. link: representa la URL de la publicación (ej: URL que comparte un medio de una

noticia).

h. reactions:

i. sad: representa la cantidad de reacciones sad que recibió la publicación.

ii. haha: representa la cantidad de reacciones haha que recibió la publicación.

iii. love: representa la cantidad de reacciones love que recibió la publicación.

iv. like: representa la cantidad de reacciones like que recibió la publicación.

v. wow: representa la cantidad de reacciones wow que recibió la publicación.

vi. angry: representa la cantidad de reacciones angry que recibió la publicación.

2. Comments

a. _id: representa el ID del comentario.

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

21

Ilustración 4 Modelo de datos

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

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

comentario.

Como se puede detallar en el diagrama, todos los elementos tienen un identificador único denominado

"_id", junto con una fecha y los atributos correspondientes a cada elemento.

Debido a que la diferencia entre "message", "name" y "description" de una publicación es difícil de

comprender, a continuación, se muestra una publicación de Facebook y se identifican sus diferentes

partes:

Ilustración 5 Publicación de Facebook.

Vale la pena mencionar que no todas las publicaciones cuentan con estas tres partes. Es decir, no son

obligatorias.

Atributos numéricos

La tabla 16 muestra los atributos numéricos de características de publicaciones

Atributo Mínimo 1er cuartil

Mediana Media 3er cuartil

Máximo Desv. Estánd.

Shares 0 1 6 201.7 34 462640 3400.667Sad 0 0 0 22.18 2 34642 244.037

22

Wow 0 0 0 15.29 4 16902 103.146Love 0 0 1 24.91 5 17263 193.894Like 0 9 43 349.2 184 118635 1841.25Angry 0 0 0 33.2 4 39719 270.592Haha 0 0 0 24.94 3 22472 255.841like_count 0 0 0 1.521 1 9798 18.866

Tabla 16 Publicación de Facebook.

Atributos nominales

Gran parte de los datos que se extrajeron son texto. Esto hace el análisis más complejo y lento debido a

su alta dimensionalidad. En esta descripción inicial de datos, se hizo un conteo de palabras, lo cual nos da

indicios sobre cuáles son las palabras más mencionadas en noticias/comentarios, además de guiarnos en

cuanto a la preparación que se le debe hacer al texto. Por ejemplo: aparecieron signos de puntuación, stop

words1, caracteres ilegibles, URLs; los cuales se deben remover en la preparación de datos para aplicar los

algoritmos.

Atributo Palabras frecuentes Signos de puntuación frecuentes

posts.message http (590)https (494)goo.gl (494)bit.ly (417)colombia (267)años (250)

. (4425), (3378)/ (3328): (1745)" (696)

posts.name photos (219)timeline (217)colombia (161)cali (148)bogotá (106)méxico (101)

, (686). (510)" (425)' (368): (351)

posts.description colombia (20)cali (15)entérese (12)personas (10)ser (9)país (9)

. (246), (187): (37)" (34)/ (27)

comments.message q (57444)si (55094)dios (32115)colombia (24532)mas (23296)ser (18984)

. (574414), (263102)! (126617)? (76714)" (26453)

Tabla 17 Atributos nominales.

1 stop words o palabras vacías son todas aquellas palabras que carecen de un significado por si solas (Wilbur & Sirotkin, 1992).

23

2.3 Exploración inicial de datos En la exploración inicial de los datos (realizada en R), se generaron varios gráficos para mostrar

propiedades generales de los atributos numéricos (ej: varianza, asimetría, etc.). A continuación, se

muestran algunas gráficas que permiten describir los datos:

Ilustración 6 Cantidad de publicaciones que comparten los usuarios por página de noticias

Para cada medio de comunicación (por legibilidad se muestran cuatro medios), se muestra la cantidad

de veces que se comparten sus publicaciones. Se nota un alto número de publicaciones outliers, debido a

que se encuentra por fuera de los "bigotes" de las cajas.

El tamaño pequeño de las cajas indica una baja varianza, existen muchos puntos cercanos a 0. Esto nos

dice que, en general, los usuarios comparten poco las publicaciones de una página de noticias.

A continuación, se muestran boxplots para cada tipo de reacción. Cada punto es la cantidad de

reacciones que recibió una publicación de cada medio.

24

Ilustración 7 Reacciones 'wow'

Ilustración 8 Reacciones 'sad'

25

Ilustración 9 Reacciones 'love'

Ilustración 10 Reacciones 'haha'

26

Ilustración 11 Reacciones 'angry'

Ilustración 12 Reacciones 'like'

27

En términos generales, todas las reacciones presentan baja varianza y muchos outliers. La reacción

que presenta un comportamiento diferente es la de 'likes'. Los likes presentan una mayor varianza (cajas

de longitud mayor), y el hecho de que los bigotes estén posicionados más altos comparado al resto, indica

que los likes son más comunes que cualquier otra reacción.

Se hizo un diagrama de dispersión para encontrar la relación entre la cantidad de reacciones que recibe

una publicación y la cantidad de veces que se comparte. Se encuentra una correlación positiva entre estas

dos variables.

Ilustración 13 Reacciones vs shares

2.4 Verificar calidad de los datos En cuanto a la calidad de los datos se pueden resaltar los siguientes elementos:

1. Completitud de los datos: Al momento de revisar los datos y su completitud no se encontraron

errores o elementos faltantes, debido a que desde el inicio de la extracción de los datos ningún

atributo está incompleto.

28

2. Errores en los datos: Los datos no contienen errores, sin embargo, cada algoritmo del

componente de analítica cuenta con su propio procesamiento de datos debido a que cada

algoritmo requiere una preparación faltante

3. Valores faltantes: Ningún atributo cuenta con valores faltantes, pero es necesario aclarar que

algunos campos pueden estar vacíos, sin embargo, no se tomarán acciones debido a que sería

manipular los datos reales.

3. Preparación de datos

3.1 Selección de datos Se mantienen todas las variables que contengan texto, debido a que es la fuente principal de datos para

el análisis. En todos los análisis que se van a realizar, el atributo created_time es necesario, debido a que,

en la mayoría de casos, la visualización se realiza dentro de un rango de tiempo específico. Por ejemplo:

el usuario puede ver los sentimientos hacia un líder político a través del tiempo.

Se excluyen los siguientes atributos para aplicar las técnicas seleccionadas debido a que no aportan

ningún valor:

_id: no tiene sentido aplicar análisis sobre el _id de un comentario o una publicación

link: no se va a analizar el texto de las URLs

3.2 Limpieza de datos La limpieza y normalización de datos se divide en dos partes: básica y avanzada. Se tomó como base

la preparación y limpieza de texto detallada en el artículo "A Sentiment Analysis System of Spanish

Tweets and Its Application in Colombia 2014 Presidential Election" (Cerón-Guzmán & León-Guzmán,

2016).

Pre procesamiento básico:

Eliminación de direcciones URL.

Los caracteres desconocidos se asignan a su variante ASCII más cercana, utilizando el módulo

Python Unidecode.

Se remueven los stopwords utilizando el módulo Python NLTK.

Eliminación de signos de puntuación

Eliminación de acentos (tildes, virgulillas, diéresis, etc.)

Preprocesamiento avanzado:

29

Se hace stemming utilizando el módulo Python NLTK. Específicamente se utiliza el Snowball

Stemmer para el idioma español.

3.3 Construcción de datos Se genera un nuevo atributo llamado "stemmed" para la colección de "comments" y "posts". En

ese atributo guarda la versión stemmed de los mensajes (ya sean comentarios o publicaciones)

Esto evita recalcular de manera innecesaria cada algoritmo.

Se genera un nuevo atributo llamado "whole_sentence", donde se guarda la versión reprocesado

del texto (sin stop words, acentos, signos de puntuación, etc.), pero sin aplicar el stemming. En

este atributo, se concatenan los atributos originales "message", "name" y "description" (de las

publicaciones), para que quede todo en un solo atributo. El atributo "whole_sentence" se utiliza

en el algoritmo de asociación de palabras.

3.4 Integración de datos

No se realiza ninguna integración de datos Debido a que la fuente de información es

Facebook.

3.5 Adecuación de datos

Las modificaciones sintácticas que se le hacen a los datos se describen con mayor detalle en

la Sección 3.2 Limpieza de datos.

30

4. Modelo Basándose en el modelo de dominio, las preguntas generadas en la fase "Entendimiento del negocio" y

la disponibilidad de datos se procede a generar el modelo de analítica. A continuación, por medio de un

diagrama de clases se visualizan las técnicas y los algoritmos a utilizar.

Ilustración 14 Modelo de analítica

4.1 Seleccionar técnicas de minería A continuación, se presenta la salida de los algoritmos aplicados en términos de negocio, mostrando

su descripción, flujo principal y salida de manera gráfica:

4.1.1 Técnicas Predictivas

4.1.1.1 Análisis de sentimiento

Objetivo: Determinar de los comentarios sobre líderes de opinión, partidos políticos e

instituciones a través del tiempo

Algoritmo núcleo: Bag-of-words

Entrada: cadena de caracteres

Salida del algoritmo: -1 (sentimiento negativo), 0 (sentimiento neutral), 1 (sentimiento positivo)

31

Pese a que la salida del algoritmo de bag-of-words es negativo, neutral o positivo; en Sentinel se

muestran los resultados como un gráfico de los sentimientos a través del tiempo, ya sean sentimientos de

un líder de opinión, un partido político o una institución. A continuación, se muestra una captura de

pantalla del resultado de análisis de sentimiento:

Ilustración 15 visualización análisis de sentimientos

En rojo se muestran los sentimientos negativos, en verde los positivos y en azul los neutrales. Para este

caso, se desactivó la línea de tiempo de sentimientos neutrales.

Se utiliza un diccionario político de sentimientos creado en un trabajo de grado anterior (Caicedo,

Carrillo, Forero, & Ureña, 2017), debido a que un sistema de análisis de sentimiento es altamente

sensible al dominio en el que se utiliza, y, por lo tanto, se pueden obtener resultados pobres si se utiliza un

diccionario de sentimientos de un dominio diferente para el cual fue creado (Cerón-Guzmán & León-

Guzmán, 2016).

4.1.2 Técnicas Descriptivas

4.1.2.1 Sesgo

Objetivo: medir la inclinación de los medios en base a la cantidad de publicaciones que hacen

respecto a casos de corrupción, líderes de opinión y entidades.

Algoritmo núcleo: rango intercuartil

Entrada: cantidad de publicaciones que han hecho todos los medios sobre un caso de corrupción

o alguna una entidad particular, ya sea líder de opinión, partido político o institución. Esta entrada

se espera que sea un arreglo, donde cada elemento contiene un medio y la cantidad de

publicaciones que hizo ese medio sobre la entidad específica.

Salida: valores atípicos (outliers) identificados, ya sea porque publican considerablemente más

respecto a una entidad específica comparado al resto de medios o porque publican menos.

32

Ilustración 16 comparación de los medios

En Sentinel, al comparar los medios, se muestra una descripción si pública más o menos sobre

corrupción (utilizando las palabras otorgadas por el Observatorio), los casos de corrupción concretos,

líderes de opinión, partidos políticos e instituciones. En la imagen anterior el usuario está comparando

"Noticias Caracol" con "El País (Cali)". Se observa que El País publica considerablemente más sobre el

caso de Odebrecht comparado a los demás medios, mientras que Noticias Caracol pública en una cantidad

considerada "normal" (no es un atípico).

Existe la opción de ver todos los medios al tiempo, como se muestra a continuación:

33

Ilustración 17 Visualización de todos los medios

Aparte de mostrar la cantidad de publicaciones sobre una entidad, se muestra también la cantidad de

noticias de corrupción que mencionan a esa entidad (en la imagen son las barras rojas), igualmente

detectando datos atípicos.

4.1.2.2 Asociación de palabras

Objetivo: encontrar los temas más relacionados a las diferentes entidades y líderes de opinión

Algoritmo núcleo: matriz de correlación.

Proceso:

o Se construye una matriz de documento-palabra (Document-Feature Matrix).

o En la matriz documento-palabra, en las columnas se tienen todas las palabras (sin stop

words ni signos de puntuación), y en las filas se tienen todos los documentos (ej: cada

publicación es un documento, igual con los comentarios).

o Se normaliza la matriz basado en TF-IDF, de tal manera que cada celda de la matriz tiene

un valor entre 0 y 1 (según su peso TF-IDF).

Entrada: publicaciones y comentarios, además de las palabras que son de interés para el

Observatorio, para poder encontrar la asociación de esas palabras claves dentro de las

publicaciones/comentarios. Estas palabras son: los líderes de opinión, las instituciones, los casos

de corrupción, los partidos políticos y las palabras de corrupción (diccionario de corrupción).

Salida: para cada palabra clave, se obtiene una lista de palabras asociadas, con un valor de 0 (no

hay ninguna asociación) a un valor de 1 (asociación muy fuerte).

34

El algoritmo de asociación de palabras se aplica a dos tipos de documentos:

1. Publicaciones: se busca dentro de las publicaciones de los medios, las palabras claves y su

asociación. Esto con fines de determinar qué dicen los medios al respecto de una entidad

específica.

2. Comentarios: se busca dentro de los comentarios de los usuarios, las palabras claves y su

asociación. Se aplica sobre comentarios para saber cuáles son las palabras que más asocian los

usuarios a entidades.

Se aplica el algoritmo tanto a publicaciones como a comentarios de manera separada, debido a que al

Observatorio le interesa saber qué opinan los usuarios las entidades y contrastarlo con lo que reflejan los

medios.

En Sentinel, se toma la salida del algoritmo de asociación y se construye un grafo para visualizar la

asociación de las palabras encontradas. A continuación, se muestra el grafo:

Ilustración 18 grafo

En este caso, se muestran las asociaciones para los comentarios de los usuarios, en un mes específico.

Los nodos que representan las palabras claves tienen un color específico, basado en la categorización que

hizo el Observatorio. La codificación de colores para palabras claves es la siguiente:

Rojo: palabras de corrupción

Verde: líderes de opinión

Amarillo: partidos políticos

Rosado: casos de corrupción

35

Morado: Instituciones

En azul se muestran las palabras asociadas a las palabras claves.

4.1.2.3 Funciones agregadas

Objetivo: realizar cálculos sobre los datos extraídos para realizar mediciones básicas.

Algoritmos núcleo: Suma, Resta, Min, Max, Promedio

Entradas: conjunto de datos a ser resumido. En el caso de Sentinel, estos datos pueden ser:

publicaciones, comentarios y reacciones.

Salidas del algoritmo: un valor que resuma los datos de entrada. Este valor puede ser la suma,

resta, promedio, etc.; dependiendo de lo que se intenta visualizar.

Salidas en el componente de visualización: gráficos de barras, líneas de tiempo.

Las funciones agregadas son todas aquellas que toman un grupo de datos y retornan un solo valor,

efectivamente resumiendo los datos (Oracle, s/f). Para el caso de Sentinel, estas funciones son sumas,

promedios, min, max, etc. En Sentinel, las funciones agregadas se utilizan para mostrar tendencias sobre

las diferentes entidades que se están monitoreando (ej: cantidad de publicaciones sobre un partido político

a través del tiempo).

A continuación, se muestran algunas salidas de estas funciones agregadas:

Ilustración 19 Función agregada – Cantidad de publicaciones que realiza un medio sobre un caso

36

Ilustración 20 Función agregada – Cantidad de publicaciones que realiza un medio sobre un partido político

Ilustración 21 Función agregada – Reacciones en noticias sobre un caso de corrupción

4.2 Definir el diseño de pruebas para el modelo Se definen los mecanismos para probar la calidad y validez de los datos. Se busca apoyar esta tarea

con el Observatorio Nacional de Transparencia y Anticorrupción junto con medidas de error.

Técnicas Predictivas (Análisis de sentimientos)

Para validar el algoritmo de análisis de sentimientos, se hace un muestreo aleatorio de los

comentarios de usuarios y se clasificará su polaridad manualmente por los integrantes del grupo.

Se comparan los resultados esperados (comentarios clasificados por los integrantes) con los

resultados reales del algoritmo de análisis de sentimientos.

Basado en los resultados del algoritmo y la clasificación manual, se genera una matriz de

confusión, con la cual se procede a sacar las medidas de precisión, exhaustividad y exactitud.

37

Técnicas Descriptivas

Se realiza un procedimiento parecido para las técnicas descriptivas. Se toma un muestreo

aleatorio de comentarios y publicaciones en Facebook utilizando las expresiones regulares que

creó el grupo de trabajo que contienen las entidades y palabras de corrupción.

Manualmente, se determina a cuál entidad y palabra de corrupción están haciendo referencia las

publicaciones y comentarios.

Se aplican los algoritmos descriptivos desarrollados sobre la muestra tomada y se comparan los

resultados esperados contra los resultados reales del algoritmo.

Se evalúa qué tan precisa está siendo la extracción de comentarios y publicaciones sobre

entidades y corrupción utilizando las expresiones regulares creadas por el grupo.

4.3 Construir el modelo

4.3.1 Análisis de sentimientos

Esta técnica está desarrollada en Python.

Parámetros

Diccionario: diccionario político elaborado en el trabajo de grado dirigido por el profesor Jorge

Alvarado.

Entidades: líderes de opinión, partidos político e instituciones de las cuales se quieren saber los

sentimientos.

Comentarios: los comentarios a ser analizados con su preparación respectiva (eliminación de stop

words, acentos, signos de puntuación, URLs, etc.)

Resultado de la técnica

Ilustración 22 Salida de algoritmo de análisis de sentimientos

38

En la ilustración anterior se muestra la salida del algoritmo de análisis de sentimientos para la líder de

opinión Claudia López. Se observa un incremento en la popularidad a lo largo del tiempo, probablemente

debido a que se acercan las elecciones presidenciales. En términos generales se observan más comentarios

positivos que negativos para Claudia López, aunque se debe tener en cuenta la exactitud, exhaustividad y

precisión del algoritmo, que se pueden ver en la sección 4.4.1 Evaluación de análisis de sentimiento.

A continuación, se muestra el análisis de sentimientos para Álvaro Uribe Vélez, ex-presidente y actual

senador de la República de Colombia:

Ilustración 23 Análisis de sentimientos para Álvaro Uribe Vélez

Se observa un pico en la cantidad de comentarios sobre Álvaro Uribe en noviembre de 2016,

probablemente debido al proceso de paz. Nuevamente, este tipo de interpretaciones se dejan mejor para la

Secretaría de Transparencia.

Ilustración 24 Noticia sobre Álvaro Uribe Vélez en noviembre 16 del 2016, El Tiempo

Los resultados para los demás líderes de opinión se pueden observar en la página de Sentinel.

39

4.3.2 Sesgo

Esta técnica está desarrollada en Python.

Parámetros

Medios y líderes de opinión: páginas de Facebook de los medios y líderes de opinión de los

cuales se quiere saber el sesgo (publican más o menos acerca de una entidad o caso de

corrupción).

Expresiones regulares (entidades y palabras/casos de corrupción) para identificar las

publicaciones realizadas por los medios y líderes de opinión.

Publicaciones realizadas por los medios y líderes de opinión.

Resultado de la técnica

En la siguiente imagen se observa el resultado del algoritmo de sesgo, cuando el usuario compara dos

medios: "Noticias Caracol" y "El País (Cali)". Noticias Caracol es el medio con más publicaciones que

incluyen las palabras claves de corrupción, con un total de 3.515 publicaciones, comparado a las 748

publicaciones realizadas por El País. Por ende, el algoritmo de sesgo detecta que la cantidad de

publicaciones que realiza Noticias Caracol es atípica comparado a la cantidad de publicaciones que hacen

el resto de medios.

Ilustración 25 Visualización del algoritmo de sesgo

El mismo algoritmo para determinar el sesgo de los medios, se utiliza para identificar cuáles líderes de

opinión publican más o menos sobre corrupción (incluyendo casos de corrupción) en su página de

Facebook. Por ejemplo, en la siguiente imagen se puede observar que Claudia López publica sobre

corrupción considerablemente más comparado al resto de líderes de opinión:

40

Ilustración 26 Algoritmo de sesgo para publicaciones sobre corrupción de un líder de opinión

Es bien sabido que Claudia López habla bastante sobre la lucha contra la corrupción, por lo cual no es extraño

encontrar que publique más sobre corrupción comparado al resto de líderes de opinión. Esto se ve evidenciado

también por los resultados de las funciones agregadas (sección 4.3.4), en donde se crea una nube de palabras con las

publicaciones que realizan los líderes de opinión en su página de Facebook, y deja en evidencia que Claudia López

es una de las personas que más habla sobre corrupción.

4.3.3 Asociación de palabras

Esta técnica está desarrollada en R.

Parámetros

Expresiones regulares para identificar las entidades y palabras/casos de corrupción de los cuales

se quieren encontrar las asociaciones,

Nivel de asociación mínimo: mayor a 0

En este algoritmo se buscan las 5 palabras con una correlación más fuerte a las palabras de interés

(entidades, casos de corrupción, etc.) con fines de no saturar el grafo con tantos nodos y que se garantice

una velocidad de carga aceptable en equipos que no tengan alto nivel de procesamiento o memoria.

Resultado de la técnica

La técnica de asociación de palabras se aplica a publicaciones con fines de saber en qué tipo de

noticias se ha visto más involucrado recientemente un líder de opinión o cualquier otro tipo de entidad.

De igual manera, se busca qué temas o qué tipo de entidades han estado más asociadas a noticias de

corrupción, al buscar asociaciones con las palabras de corrupción que provisionó el Observatorio. En la

41

siguiente imagen, se muestra el resultado de aplicar esta técnica en publicaciones de los 24 medios de

comunicación provistos por el Observatorio. Este grafo se construye a partir de un resumen mensual de

publicaciones. Por lo tanto, al momento de realizar este informe, se cuenta con 22 grafos para

publicaciones (desde enero de 2016 hasta octubre de 2017)

Ilustración 27 Grafo (asociación de palabras) para publicaciones

En la imagen anterior, aparte de las asociaciones obvias, como, por ejemplo, "Partido Verde" está

asociado con "Claudia López", también se pueden descubrir otras asociaciones interesantes. Por ejemplo,

la palabra "SIC" (Superintendencia de Industria y Comercio) está asociada con "cementos" y

"cartelizaron", por lo cual el grupo de trabajo buscó noticias que incluyan estas dos palabras en Google, y

se encontró que la Superintendencia de Industria y Comercio está adelantando investigaciones contra

Cementos Argos por "acusaciones de prácticas restrictivas de la competencia desde agosto del 2013"

(Dinero, 2017).

La técnica de asociación de palabras se aplica también a los comentarios de usuarios, para conocer

cuáles temas/palabras los usuarios asocian más con las entidades o palabras de corrupción. Esta es otra

manera de conocer los sentimientos de los usuarios, debido a que permite identificar si algún líder de

opinión, por ejemplo, tiene asociadas más palabras negativas o positivas según los comentarios de los

usuarios.

42

Ilustración 28 Grafo (asociación de palabras) para comentarios

En la imagen anterior, se observa el resultado del algoritmo de asociación de palabras para

comentarios de usuarios, esta imagen deja en evidencia que los usuarios asocian la palabra "serrucho" con

"congreso", lo cual da un indicio de que los usuarios hablan negativamente acerca del congreso. También

se observa, que, en el mes de octubre de 2017, los comentarios que mencionan a "Saludcoop", también

mencionan la palabra "abuso" y "burla", nuevamente reflejando una percepción negativa sobre la

institución.

Vale la pena aclarar que esta técnica -y las demás- no permiten descubrir a personas o entidades

corruptas.

Cabe mencionar que, gracias a este algoritmo, se identificaron nuevas palabras relacionadas a

corrupción, que posteriormente se agregaron a la base de conocimiento. Por ejemplo: las palabras

"coimas" y "peculado", no estaban dentro de las palabras iniciales de corrupción provistas por la

Secretaría de Transparencia. Este algoritmo permite la realimentación del sistema.

4.3.4 Funciones agregadas

Esta técnica está desarrollada en Python.

Parámetros

Expresiones regulares para identificar publicaciones y comentarios con las palabras de interés.

Resultado de la técnica

43

Las funciones agregadas se aplican tanto a comentarios como a publicaciones de medios y líderes de

opinión. Se utilizan para contar el número de reacciones que recibió una entidad o un caso de corrupción

en un período de tiempo, o para identificar la cantidad de reacciones que ha recibido un líder de opinión

en las publicaciones que realiza. También se utilizan para determinar cuáles son los comentarios más

populares sobre un líder de opinión (utilizando una función max). A continuación, se muestran varios

usos de las funciones agregadas en Sentinel.

Ilustración 29 Función agregada - Reacciones en noticias sobre un caso de corrupción

Ilustración 30 Función agregada - número total de reacciones que han hecho en la página de un líder de opinión

44

Ilustración 31 Función agregada - Comentarios populares de un líder

45

Ilustración 32 Función agregadas - Cantidad de publicaciones sobre el partido político vs cantidad de publicaciones de corrupción que mencionan al partido

Ilustración 33 Función agregada - Publicaciones de dos medios sobre un caso de corrupción

46

Ilustración 34 Función agregada - Nube de palabras de publicaciones en la página de un líder de opinión

Vale la pena mencionar que las salidas de este algoritmo también se pueden utilizar en otros

algoritmos. Por ejemplo, al sumar todas las publicaciones que un medio ha realizado sobre cierta entidad,

se puede determinar si un medio está sesgado a hacer más publicaciones sobre esa entidad o a publicar

noticias de corrupción que mencionen a esa entidad.

4.4 Evaluación de modelos

4.4.1 Evaluación de análisis de sentimiento Se realiza un muestreo aleatorio de 200 comentarios sobre líderes de opinión

Los tres integrantes del grupo clasifican los comentarios manualmente de manera independiente.

El criterio para decidir la clasificación final del sentimiento es el siguiente:

o Si al menos dos personas clasificaron el sentimiento con la misma clase, se deja ese

sentimiento

o Si cada persona lo considera como un sentimiento diferente, se deja neutral

Luego de clasificar los comentarios manualmente, se comparan con los resultados del algoritmo

de análisis de sentimientos utilizando una matriz de confusión y se determina la precisión,

exhaustividad y exactitud lograda con el algoritmo.

Esperado (manual):

Esperado (manual):

Esperado (manual):

47

negativo neutral positivoPredicho (algoritmo): negativo

1 4 0 5

Predicho (algoritmo): neutral

47 82 54 183

Predicho (algoritmo): positivo

0 6 6 12

48 92 60Tabla 18 Resultados algoritmo de análisis de sentimientos con diccionario político

Exactitud: 44.5%

Precisión Negativo: 20.0%

Precisión Neutral: 44.8%

Precisión Positivo: 50%

Exhaustividad Negativo: 2.08%

Exhaustividad Neutral: 89%

Exhaustividad Positivo: 10%

Debido a la exactitud pobre del análisis de sentimiento, se prueba con otro diccionario diferente al

político para revisar si la exactitud aumenta. De manera sorpresiva, al utilizar un diccionario que no es

específico para política se logra obtener una exactitud de 48%. A continuación, se muestran los

resultados:

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

1 2 1 4

Predicho (algoritmo): neutral

47 85 49 181

Predicho (algoritmo): positivo

0 5 10 15

48 92 60Tabla 19 Resultados algoritmo de análisis de sentimientos con diccionario genérico

Exactitud: 48.0%

Precisión Negativo: 25.0%

Precisión Neutral: 47.0%

Precisión Positivo: 66.7%

48

Exhaustividad Negativo: 2.08%

Exhaustividad Neutral: 92.4%

Exhaustividad Positivo: 16.7%

Se decide, entonces, probar con la solución de análisis de sentimientos de IBM: Watson Tone Analyzer

(IBM, 2017). Esta herramienta es un poco más robusta, y no retorna "negativo", "neutral" y/o "positivo",

sino que retorna un ranking de emociones. Las 5 emociones que mide Watson Tone Analyzer, son:

enfado, asco, miedo, alegría y tristeza. Para poder comparar directamente los resultados de Tone Analyzer

con las clasificaciones manuales que el grupo de trabajo hizo sobre los comentarios, se debe hacer un

mapeo de cuáles emociones se consideran negativas y positivas. En este caso, el grupo decide que las

emociones negativas son: enfado, asco, miedo y tristeza; y la emoción positiva es alegría.

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

26 20 19 65

Predicho (algoritmo): neutral

21 20 28 69

Predicho (algoritmo): positivo

9 12 45 66

56 52 92Tabla 20 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.4

Exactitud: 45.5%

Precisión Negativo: 33.8%

Precisión Neutral: 44.9%

Precisión Positivo: 45.4%

Exhaustividad Negativo: 45.8%

Exhaustividad Neutral: 33.6%

Exhaustividad Positivo: 50%

Vale la pena mencionar que, para utilizar IBM Watson Tone Analyzer, fue necesario traducir los

comentarios a inglés, debido a que actualmente no cuenta con soporte para el idioma español. Además de

esto, es necesario definir un cutoff, para saber cuándo se debe considerar un comentario como positivo,

negativo o neutral. En este caso, el grupo de trabajo definió inicialmente un cutoff de 0.4. Tone Analyzer

asigna un puntaje a cada emoción entre 0 y 1. Si alguna emoción tiene un valor mayor o igual al cutoff

(por definición del grupo, si es mayor a 0.4), entonces se considera que esa es la emoción más fuerte.

49

Existe un problema, y es que las puntuaciones no son complementarias. Es decir, si se suma el puntaje

de todas estas emociones, puede que la suma no dé un total de 1. Esto representa un problema para

evaluar el algoritmo porque pueden existir, por ejemplo, valores para tristeza y alegría mayores a 0.4 en

un mismo mensaje, lo cual hace más difícil definir qué polaridad tiene finalmente un comentario.

Comparando los resultados obtenidos con IBM Watson Tone Analyzer y los demás diccionarios de

sentimientos, se nota que con Tone Analyzer se pierde un poco de precisión y exactitud, a cambio de más

exhaustividad (en la polaridad negativa y positiva).

En busca de mejores niveles de exactitud, precisión y exhaustividad, se prueba con diferentes valores

para el cutoff y se vuelven a tomar las medidas. A continuación, se muestran las matrices de confusión

para diferentes cutoffs:

Cutoff = 0.2

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

37 27 37 101

Predicho (algoritmo): neutral

4 9 7 20

Predicho (algoritmo): positivo

15 16 48 79

56 52 92Tabla 21 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.2

Exactitud: 47.0%

Precisión Negativo: 36.6%

Precisión Neutral: 45.0%

Precisión Positivo: 60.8%

Exhaustividad Negativo: 66.1%

Exhaustividad Neutral: 17.3%

Exhaustividad Positivo: 52.2%

Cutoff = 0.3

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

50

Predicho (algoritmo): negativo

30 22 25 77

Predicho (algoritmo): neutral

12 15 17 44

Predicho (algoritmo): positivo

14 15 50 79

56 52 92Tabla 22 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.3

Exactitud: 47.5%

Precisión Negativo: 39.0%

Precisión Neutral: 34.1%

Precisión Positivo: 63.3%

Exhaustividad Negativo: 53.6%

Exhaustividad Neutral: 28.9%

Exhaustividad Positivo: 54.3%

Cutoff = 0.5

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

20 14 12 46

Predicho (algoritmo): neutral

31 28 41 100

Predicho (algoritmo): positivo

5 10 39 54

56 52 92Tabla 23 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.5

Exactitud: 43.5%

Precisión Negativo: 43.4%

Precisión Neutral: 28.0%

Precisión Positivo: 72.2%

Exhaustividad Negativo: 35.7%

Exhaustividad Neutral: 53.8%

Exhaustividad Positivo: 42%

51

Cutoff = 0.6

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

11 4 2 17

Predicho (algoritmo): neutral

44 41 62 147

Predicho (algoritmo): positivo

1 7 28 36

56 52 92Tabla 24 Matriz de confusión IBM Watson Tone Analyzer, cutoff = 0.6

Exactitud: 40.0%

Precisión Negativo: 64.7%

Precisión Neutral: 27.9%

Precisión Positivo: 77.7%

Exhaustividad Negativo: 19.6%

Exhaustividad Neutral: 78.8%

Exhaustividad Positivo: 30.4%

La decisión final sobre cuál cutoff es el adecuado, debe ser algo que decida el Observatorio, debido a

que ellos son los que pueden determinar si es más importante para ellos tener mayor exhaustividad o

mayor precisión. De igual manera, se debe tener en cuenta el costo de utilizar el servicio de IBM Watson

Tone Analyzer.

Con fines de hacer una comparación más justa, se decide utilizar también Google Cloud Natural

Language API que tiene soporte nativo para español. Por esta razón, no es necesario traducir el texto a

inglés antes de analizar el sentimiento. A diferencia de Watson Tone Analyzer, la herramienta de Google

retorna un único valor entre –1 y 1 (no retorna valores para diferentes emociones) que indica el

sentimiento general del documento; -1 siendo muy negativo y 1 siendo muy positivo. Google recomienda

un cutoff de 0.25: si el puntaje final del documento es mayor o igual a 0.25 es positivo, y si es menor o

igual a –0.25 es negativo, de lo contrario se considera neutral.

Los resultados con el API de Google en general fueron mejores que bag-of-words y IBM Watson Tone

Analyzer. A continuación, se muestran las matrices de confusión obtenidas junto con su respectivo cutoff:

Cutoff = 0.25 (cutoff por defecto recomendado por Google)

52

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

27 18 6 51

Predicho (algoritmo): neutral

18 24 21 63

Predicho (algoritmo): positivo

11 10 65 86

56 52 92Tabla 25 Matriz de confusión Cloud Natural Language API, cutoff = 0.25

Exactitud: 58.0%

Precisión Negativo: 52.9%

Precisión Neutral: 38.1%

Precisión Positivo: 75.6%

Exhaustividad Negativo: 48.2%

Exhaustividad Neutral: 46.2%

Exhaustividad Positivo: 70.7%

Cutoff = 0.2

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

29 21 7 57

Predicho (algoritmo): neutral

9 15 17 41

Predicho (algoritmo): positivo

18 16 68 102

56 52 92Tabla 26 Matriz de confusión Cloud Natural Language API, cutoff = 0.2

Exactitud: 56.0%

Precisión Negativo: 50.9%

Precisión Neutral: 36.6%

Precisión Positivo: 66.7%

Exhaustividad Negativo: 51.8%

Exhaustividad Neutral: 28.8%

53

Exhaustividad Positivo: 73.9%

Cutoff = 0.3

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

27 18 6 51

Predicho (algoritmo): neutral

18 24 21 63

Predicho (algoritmo): positivo

11 10 65 86

56 52 92Tabla 27 Matriz de confusión Cloud Natural Language API, cutoff = 0.3

Exactitud: 58.0%

Precisión Negativo: 52.9%

Precisión Neutral: 38.1%

Precisión Positivo: 75.6%

Exhaustividad Negativo: 48.2%

Exhaustividad Neutral: 46.2%

Exhaustividad Positivo: 70.7%

Cutoff = 0.4

Esperado (manual): negativo

Esperado (manual): neutral

Esperado (manual): positivo

Predicho (algoritmo): negativo

19 16 5 40

Predicho (algoritmo): neutral

29 27 34 90

Predicho (algoritmo): positivo

8 9 53 70

56 52 92Tabla 28 Matriz de confusión Cloud Natural Language API, cutoff = 0.4

Exactitud: 49.5%

Precisión Negativo: 47.5%

Precisión Neutral: 30.0%

54

Precisión Positivo: 75.7%

Exhaustividad Negativo: 33.9%

Exhaustividad Neutral: 51.9%

Exhaustividad Positivo: 57.6%

Al observar estos resultados, se concluye que la mejor herramienta de análisis de sentimientos para el

caso específico de Sentinel es Google Cloud Natural Language API. Sin embargo, estas soluciones eran

bastante costosas, por lo cual se recurrió a utilizar un algoritmo de análisis de sentimientos desarrollado

por CAOBA en el artículo "CSL: A Combined Spanish Lexicon - Resource for Polarity Classification and

Sentiment Analysis" (Moreno-Sandoval et al., 2017). Para el desarrollo de Sentinel se terminó utilizando

el algoritmo de bag-of-words, debido al alto costo de las herramientas comerciales considerando que se

analizan más de 100 mil comentarios.

4.4.2 Evaluación de algoritmos descriptivos

Se realiza un muestreo aleatorio de 300 comentarios y publicaciones sobre entidades (líderes de

opinión, instituciones, partidos políticos) y palabras de corrupción (incluyendo casos de

corrupción), haciendo una búsqueda con las expresiones regulares creadas por el grupo.

150 comentarios y publicaciones son sobre entidades y los otros 150 son sobre palabras y casos

de corrupción.

Se verifica que en realidad las publicaciones y comentarios extraídos correspondan a entidades y

palabras/casos de corrupción, con fines de evaluar qué tan bien desarrolladas están las

expresiones regulares. Se obtienen los siguientes resultados:

o Publicaciones y comentarios sobre entidades extraídas por el algoritmo: 150

o Publicaciones y comentarios con palabras y casos de corrupción extraídas por el

algoritmo: 150

o Publicaciones y comentarios que realmente mencionaban entidades: 139

o Publicaciones y comentarios que realmente mencionaban palabras y casos de

corrupción: 150

Con esto se obtiene una exactitud de 96.3% en la extracción de entidades y palabras/casos de

corrupción mencionados. Las expresiones regulares que tienen error son las que buscan entidades. Al

indagar un poco más a fondo cuáles son las expresiones regulares que están generando errores, el grupo

observa que son las del Partido Mira (porque comúnmente se refiere a este partido simplemente por

Mira). Esta expresión regular disminuye la precisión debido a que los usuarios comentan seguido la

palabra "mira" (del verbo mirar), por lo cual el grupo decide modificar la expresión regular para que

55

busque "Partido Mira" en vez de "Mira". El resto de expresiones regulares se dejan como estaban

inicialmente. Habiendo garantizado la calidad de las expresiones regulares generadas, se aplicaron los

algoritmos descriptivos y funciones agregadas sobre la muestra realizada para verificar el correcto

funcionamiento de los mismos.

5. Evaluación

5.1 Evaluación de resultados

Evaluación del Observatorio de Transparencia y Anticorrupción

La Secretaría de Trasparencia realizó un documento donde expresan algunas recomendaciones y

conclusiones sobre Sentinel, además expresan que existe un potencial enorme en la iniciativa y que así

mismo hay amplio espacio para la mejora. A continuación, se presenta la evaluación del trabajo realizada

por la secretaría de transparencia:

Conclusiones y recomendaciones herramienta SENTINEL

Actualmente, la Secretaría enfoca sus esfuerzos en analizar los indicadores de percepción, única aproximación existente a la medición del fenómeno de la corrupción. El indicador más conocido es el calculado por Transparencia Internacional, en el que Colombia está en el puesto 90 de 176 países partícipes de la medición. Cabe destacar que la percepción es una medición subjetiva, y es necesario analizar los factores que la afectan, sus manifestaciones y si es un medio efectivo de medir la corrupción en un país.

Sentinel podría ser entonces una herramienta útil para observar, desde las redes sociales, cómo los medios de comunicación, los líderes de opinión y las instituciones, pueden alterar a través de sus publicaciones la percepción de corrupción en los ciudadanos y generar reacciones de apoyo o indignación.

Este mapeo de los factores que más alteran la percepción y la participación de los ciudadanos en las discusiones relacionadas con corrupción, nos permite entrever los focos a los que debe dirigirse la formulación de política pública, conforme a las necesidades y demandas de la ciudadanía. A su vez, se genera un desafío importante para lograr que las noticias no procuren solamente un aumento en la percepción de corrupción, sino que incrementen las acciones concretas de vigilancia y control social.

A continuación, esbozamos algunas conclusiones y recomendaciones sobre las secciones del

56

aplicativo

1. Descubre: Esta sesión nos fue útil para conocer a profundidad el discurso que se genera en redes sociales alrededor del fenómeno de la corrupción. Esta sección del aplicativo podría mejorar si:

Se filtran aquellas palabras que no son relevantes para el análisis. El grafo se despliega más claramente para una mejor interpretación de las relaciones

entre palabras y fuentes. Es posible filtrar por categoría para verlas de forma aislada; e.g. si se puede tomar el

nodo de líderes de opinión y filtrar por líder cuáles son las palabras más asociadas a cada uno. Si bien ya es posible entrever algunas de estas cosas en el grafo general, limitar la visión a determinadas características puede hacer que su interpretación sea más ágil.

Se pueden ver estadísticas sobre la cantidad de veces que se usa una determinada palabra por cada publicación; e.g. si al colocar el puntero sobre una de las palabras (círculos azul claro) se puede ver el número de menciones.

2. Medios: Esta sección nos permitió reconocer la visibilidad por caso en medios regionales y nacionales, y sacar datos relevantes sobre la permanencia de una noticia de corrupción luego de que es publicado el caso por primera vez. Esta sección del aplicativo podría mejorar si:

Es posible obtener estadísticas por año o por mes. Se puede identificar cuál es la proporción de las publicaciones que están directamente

relacionadas con casos de corrupción frente al total de publicaciones que genera un determinado medio, líder de opinión, u otros; e.g. “de X número de noticias generales que publica Y medio, Z noticias se asocian a temas de corrupción”.

Se puede identificar cuál es la proporción de las publicaciones sobre un caso de corrupción en particular frente al total de publicaciones de actos de corrupción que genera un determinado medio, líder de opinión, u otros; e.g. “de X número de noticias sobre casos de corrupción en general que publica Y medio, Z noticias son sobre un determinado caso en particular”.

3. Casos de corrupción: Esta sección nos permitió concluir que efectivamente existe, en la mayoría de los casos, una relación directamente proporcional entre las publicaciones relacionadas con corrupción y los comentarios de los individuos en redes sociales. Cabe destacar que esto confirma la hipótesis de que la actividad ciudadana en redes tiende a ser exclusivamente reaccionaria; esto es, que difícilmente se sigue comentando sobre un determinado caso de corrupción si se dejan de publicar noticias sobre el mismo en páginas de medios, líderes de opinión, u otros (entre otros). Esta sección del aplicativo podría mejorar si:

Se genera una gráfica que compare los datos de varios casos de corrupción a la vez; esto es, una gráfica donde se pueda observar cuál caso de corrupción fue el que tuvo más publicaciones y cómo se compara con los demás (lo mismo se puede hacer en materia de comentarios).

4. Instituciones: Esta sección provee información valiosa para realizar estudios comparados con otras encuestas tales como el Barómetro de las Américas. Es aconsejable, sin embargo, mejorar la forma en que se presenta la información; esto, como en otros casos anteriores, se puede lograr si:

Se genera una gráfica que compare los datos de varias instituciones a la vez; esto es, una gráfica donde se pueda observar cuál institución tuvo el mayor número de publicaciones sobre corrupción y cómo se compara con los demás (lo mismo se puede hacer en materia

57

de comentarios).5. Partidos políticos:

Esta sección permite a la Secretaría hacer un diagnóstico sobre cuáles son las fuerzas políticas que mayor actividad tienen en términos de publicaciones y comentarios acerca del fenómeno de la corrupción. Para proyectos posteriores, esta información podrá servir para analizar si una mayor o menor actividad en esta materia se correlaciona con un mayor número de iniciativas o proyectos presentados para luchar contra la corrupción, o si de hecho se relaciona con un mayor o menor número de investigaciones sobre sus miembros sobre casos de corrupción. Tal como en otras secciones, ese aspecto se puede mejorar si:

Se genera una gráfica que compare los datos de varios partidos políticos a la vez; esto es, una gráfica donde se pueda observar cuál partido político tuvo el mayor número de publicaciones sobre corrupción y cómo se compara con los demás (lo mismo se puede hacer en materia de comentarios).

6. Líderes de opinión: En este apartado pudimos observar la importancia del tema de la corrupción para los líderes de opinión, y el apoyo o reprobación de los ciudadanos a sus posturas. Esta sección del aplicativo podría mejorar si:

Es posible realizar cruces entre las publicaciones y comentarios de los líderes de opinión con el resto de categorías.

Además del informe realizado por la Secretaría de Transparencia, en la reunión que se tuvo para

presentar el sistema en funcionamiento, se pudieron derivar las siguientes conclusiones:

En la sección Casos de Corrupción, los usuarios manifiestan su indignación por medio de la

reacción "Me divierte" indicando una postura sarcástica frente a los casos de corrupción que se

presentan.

La reacción "Me gusta" no es muy diciente sobre la actitud de las personas hacia casos de

corrupción. Es decir, los usuarios le dan "Me gusta" a una publicación más que cualquier otra

reacción cuando se espera que generen más reacciones de "Me enfada" y "Me divierte".

Algunos de los líderes de opinión monitoreados no tienen página en Facebook y por lo tanto no se

puede obtener información más detallada sobre estos.

Se observa un pico en la actividad de los líderes de opinión Álvaro Uribe y Juan Manuel Santos

en el mes de noviembre de 2016, debido al proceso de paz.

Para el caso de los partidos políticos, los comentarios negativos por lo general prevalecen sobre

los comentarios positivos. Esto se puede contrastar con los resultados obtenidos en la encuesta

LAPOP 2015, donde los partidos políticos cuentan el nivel de desconfianza más alto entre los

encuestados.

Desde un punto de vista general, se observa que la negatividad que los usuarios manifiestan es

mayor a los comentarios o reacciones positivas. En la entrevista inicial con la Secretaría de

58

Transparencia, Mauricio Ortiz tenía la hipótesis que en redes sociales hay mayor indignación

(Castañeda, Ortiz, & Pérez, 2017). A partir de los resultados obtenidos, todo parece indicar que

hay un mayor nivel de indignación en Facebook respecto a líderes de opinión, partidos políticos e

instituciones.

Sentinel permite saber quiénes pueden ser aliados de la Secretaría de Transparencia para llevar a

cabo investigaciones e iniciativas anticorrupción, priorizando estrategias dirigidas a ciertas áreas

donde la percepción de corrupción de los usuarios sea más alta. 

Basándose en el informe realizado por la Secretaría de Transparencia y las conclusiones generadas a

partir de la reunión con ellos, se puede afirmar que el sistema cumple con los objetivos planteados al

inicio del proyecto. De igual manera también se resalta la utilidad e importancia del proyecto, puesto que

el sistema desarrollado permite al Observatorio identificar la percepción y la participación de la población

civil en discusiones relacionadas con corrupción y de esta manera poder tomar decisiones que van

enfocadas a la correcta formulación de política pública conforme a las necesidades y demandas de la

nación.

5.2 Encuesta TAM Para validar el sistema con el usuario final, el grupo de trabajo desarrolló una serie de preguntas bajo

los lineamientos de validación TAM (Venkatesh & Hillol, 2008) en donde el principal propósito es

realizar una serie de preguntas en donde se validan cuatro variables principales:

1. Variables externas (Involucramiento): Qué tanto el usuario final estuvo involucrado en el

desarrollo del sistema

2. Utilidad percibida: Qué nivel de utilidad encuentra el usuario final frente al sistema.

3. Percepción de facilidad de uso: Qué tan fácil fue para el usuario final la interacción con el

sistema.

4. Actitud hacia el uso: Qué tan dispuesto está el usuario final al momento de usar el sistema.

Previamente a la realización de la encuesta, a los usuarios finales se les capacitó y mostró el correcto

funcionamiento y uso del sistema desarrollado. La encuesta realizada tiene la siguiente escala de

clasificación:

Valor Descripción

1 Totalmente en desacuerdo

2 Moderadamente en desacuerdo

59

3 Neutral

4 Moderadamente de acuerdo

5 Totalmente de acuerdo

Tabla 29 Encuesta escala de clasificación

ver la encuesta TAM realizada ver el Anexo D Encuesta TAM .

A continuación, se presentan los resultados de la encuesta.

Ilustración 35 Variables externas: Involucrados

Ilustración 36 Facilidad de uso percibida

60

Ilustración 37 Utilidad percibida

Ilustración 38 Actitud hacia el uso

61

Ilustración 39 Nivel satisfacción Sentinel

Ilustración 40 Nivel satisfacción objetivo general

Como se puede observar en los resultados de las encuestas TAM se puede concluir los siguiente:

1. En términos generales, el usuario encuentra el sistema fácil de usar y navegar; se desplaza con

comodidad y fluidez por la interfaz del sistema, sin embargo, hay espacio para la mejora y el

arreglo de ciertas secciones de la interfaz como lo es por el ejemplo el grafo que visualiza la

asociación de palabras.

62

2. El usuario resalta la utilidad y beneficio de usar el sistema en las labores diarias, y además

considera que el sistema puede ayudar en iniciativas anticorrupción.

3. El involucramiento del usuario en el desarrollo del sistema fue productivo y constante.

4. El usuario afirma que el sistema cumple con el objetivo general planteado al incido de la

formulación del trabajo de investigación.

5.2 Próximos pasos Luego de validar el sistema construido con la Secretaría de Transparencia, se procede a hacer el plan

de despliegue. A pesar de que surgen nuevas ideas para mejorar el proyecto, son requerimientos y/o

funcionalidades que no se contemplaban dentro del alcance inicial del proyecto y por ende no estaban

dentro del tiempo estimado por el grupo de trabajo. Por esta razón, las nuevas sugerencias por parte del

Observatorio quedan como trabajo futuro para el proyecto Sentinel.

6. Despliegue

6.1 Plan de despliegue

Requisitos del sistema

El sistema fue desarrollado para Ubuntu 16.04 (64-bits), aunque también debería funcionar

para macOS.

Se recomiendan las siguientes especificaciones para poder ejecutar todos los módulos del

sistema de manera eficiente:

Características Recomendado/MínimoSistema Operativo Ubuntu 16.04 (64-bit), macOS

(64-bit)Procesador Intel Core i5/Intel Core 2 DuoRAM 32 GB/16 GBDisco Duro 128 GB/64 GBBase de datos MongoDB 3.4Python Python 3.5.2/Python 3.x (Python

2 no está soportado)PIP PIP 9+/PIP 8.1.1R R 3.4.1/R 3.1.xNode.js Node.js v6.10.3/Node.js v6.xNPM (Node Package Manager)

NPM v3.10.10

Tabla 30 Especificaciones

63

Además de las especificaciones anteriores, se requiere de una cuenta de Facebook para poder extraer

datos. Para esto es necesario también registrarse en el portal de desarrolladores de Facebook (Facebook

Developers) en https://developers.facebook.com/.

En el portal de Facebook se debe crear una nueva aplicación. La aplicación puede tener cualquier

nombre. Al crear la aplicación, es importante tomar nota del ID de la aplicación creada y del "secret" de

la aplicación. Estos dos datos son importantes y necesarios para poder extraer datos.

Código fuente

El código de los tres módulos: extracción de datos de Facebook, analítica y visualización; se puede

encontrar en el repositorio de Sentinel en Github: https://github.com/sentinelanalytics.

En el repositorio se encontrarán los tres módulos con los siguientes nombres:

facebook-scraper-py: componente de extracción de datos

analytics: componente de analítica

sentinel: componente de visualización

El código fuente se debe descargar y se debe colocar en una carpeta llamada "workspace" (sin

comillas), en la carpeta home del usuario. Cada carpeta (es decir, cada módulo), debe estar dentro de esta

carpeta. Por ejemplo, si el nombre de usuario en una máquina Ubuntu es "sentinel", entonces se debe

descargar el código en las siguientes rutas:

facebook-scraper-py: /home/sentinel/workspace/facebook-scraper-py

analytics: /home/sentinel/workspace/analytics

sentinel: /home/sentinel/workspace/sentinel

Instalación

En esta sección se muestra cómo instalar las herramientas necesarias para ejecutar todo el sistema de

Sentinel. Se muestran las instrucciones para Ubuntu 16.04, pero el procedimiento es parecido para

macOS.

MongoDB

Para ver las instrucciones específicas de cómo instalar MongoDB para su sistema operativo, diríjase a

la página oficial de MongoDB: https://docs.mongodb.com/manual/installation/

MongoDB se puede instalar directamente como un servicio en el sistema operativo que esté

utilizando. Sin embargo, se recomienda instalarlo utilizando contenedores Docker, debido a que es más

64

fácil y rápido de instalar. Si está familiarizado con la tecnología Docker, puede descargar la imagen de

MongoDB en: https://hub.docker.com/_/mongo/. Esta fue la manera en que el grupo de trabajo trabajó con

Mongo durante el desarrollo de Sentinel.

Python 3.5.2

$ sudo apt-get update

$ sudo apt-get install python3.5.2

PIP

$ sudo apt-get install python3-pip

R

Para la instalación de R, seguir las instrucciones en: https://www.r-bloggers.com/download-and-

install-r-in-ubuntu/

Node.js y NPM

No se recomienda ejecutar el instalador oficial de Node.js en Ubuntu y Mac debido a que se instala en

carpetas con permisos restringidos y esto puede presentar problemas al instalar paquetes de Node.js

utilizando NPM.

Por el contrario, se recomienda al usuario instalar NVM (Node Version Manager), que instala Node.js

y NPM en carpetas a las que cualquier usuario puede acceder. Para ver las instrucciones de cómo instalar

NVM (para Ubuntu y para Mac), ir a: https://github.com/creationix/nvm.

Al instalar Node.js con NVM, también se instala NPM. NPM se encarga de descargar las librerías

(paquetes) necesarios para ejecutar una aplicación Node.js.

Sentinel

Al descargar el código fuente de cada componente, estos ya están en capacidad de ejecutarse. El

usuario puede ejecutar cada componente de forma manual. Sin embargo, se recomienda al usuario utilizar

el script provisto por Sentinel y que estará situado en /home/<usuario>/workspace/analytics/util/setup.sh

luego de que el usuario descargue el código fuente de los tres módulos. El script setup.sh programa la

ejecución automática de los componentes de Sentinel.

65

Si el usuario está familiarizado con cron en Linux, puede crear su propio script para programar la

ejecución de los diferentes módulos y personalizar la periodicidad con la que se ejecutan, o puede

modificar el script provisto por Sentinel

6.2 Plan de monitoreo y mantenimientoBases de conocimiento

El primer aspecto de mantenimiento que debe tener en cuenta la Secretaría de Transparencia (o

cualquier otra persona o institución que desee utilizar el sistema) es en cuanto a las palabras claves que se

desean buscar. A medida que se van encontrando nuevas palabras, ya sean entidades, palabras de

corrupción, casos de corrupción, etc.; estas se deben ir agregando a la base de conocimiento, con fines de

enriquecer los términos y entidades para poder llevar a cabo un análisis más completo sobre la

corrupción.

Los archivos que contienen la base de conocimiento, están situados en el código fuente del

componente de analítica, específicamente en la carpeta "base-conocimiento". Por ejemplo, para el usuario

"sentinel", esta carpeta estaría ubicada en: /home/sentinel/workspace/analytics/base-conocimiento.

En esta carpeta encontrará las bases de conocimiento para casos de corrupción, instituciones, líderes de

opinión, palabras de corrupción y partidos políticos. También se provee una lista de stop words que el

usuario puede completar en caso de que encuentre palabras que no aportan ningún significado, por

ejemplo, en el algoritmo de asociación de palabras.

A continuación, se describen las propiedades de cada archivo:

casos-corrupcion.all.txt

Este archivo es un archivo separado por comas, y en él se encuentran las expresiones regulares para

identificar publicaciones y comentarios que mencionan casos de corrupción. El esquema del archivo es el

siguiente (se muestra el significado de cada columna, en orden):

1. Expresión regular para identificar el caso de corrupción: puede incluir acentos, mayúsculas,

signos de puntuación, y cualquier otro carácter permitido en las expresiones regulares de Python.

2. Valor booleano, indicando si se debe hacer un encuentro exacto de la expresión regular: los

valores que puede tomar esta columna son "true" o "false" (sin comillas).

En caso de que el valor sea "true", significa que la expresión regular buscará una palabra

completa que coincida con la expresión regular definida en la primera columna y no buscará, por

ejemplo, que la expresión regular esté dentro de otra palabra. Esto es útil en los casos donde se

tienen acrónimos, que son más susceptibles a aparecer dentro de otras palabras. Por ejemplo: la

66

palabra ONU está dentro de monumental. Por lo cual sería necesario asignar un valor de "true" en

esta columna para que solo busque la palabra ONU (todas las expresiones regulares desarrolladas

ignoran las mayúsculas, y se buscan en el texto luego de haber sido pre-procesado y haber

removido los stop words).

3. Caso de corrupción (todo en minúscula y sin acento): esta columna se utiliza para definir el caso

de corrupción o la categoría a la cual pertenece la expresión.

Es posible que haya más de una manera de referirse a un caso de corrupción (ej: fiscal

anticorrupción y Luis Gustavo Moreno, ambos hacen referencia al mismo caso), por lo cual es

necesario tener la opción de agrupar varios casos de corrupción en uno solo. Al asignar el mismo

valor en esta columna para dos casos de corrupción, se están agrupando en uno solo. Esta

columna no debe tener espacios (se recomienda utilizar un guion en vez de espacio).

4. Nombre del caso de corrupción: este nombre no debe contener sintaxis de expresiones regulares.

En esta columna se pone el nombre "real" del caso de corrupción (con mayúsculas, acentos, etc.).

El valor de esta columna es el que le aparece al usuario final en el componente de visualización

de Sentinel. Igual que con la columna anterior, si existen dos maneras de referirse al mismo caso

de corrupción, esta columna debe tener el mismo valor para los dos. Esta columna puede contener

espacio.

Ejemplo del archivo:

Odebrecht,false,odebrecht,Odebrechtfiscal anticorrupci[óòo]n,false,fiscal-anticorrupcion,Luis Gustavo Moreno (fiscal anticorrupción)Luis Gustavo Moreno,false,fiscal-anticorrupcion,Luis Gustavo Moreno (fiscal anticorrupción)...

Se observa en la primera fila, el caso Odebrecht. En este caso, la expresión regular no requiere de

ninguna sintaxis especial, debido a que Odebrecht no contiene ningún acento o signo de puntuación. Hay

que recordar que la búsqueda de las expresiones regulares (en Sentinel) no tiene en cuenta las

mayúsculas, por lo cual daría el mismo resultado si se tiene la expresión regular "Odebrecht" u

"odebrecht".

En la segunda y tercera fila, se tienen dos maneras de referirse al caso del ex-fiscal anticorrupción. En

la segunda fila, se tiene la expresión regular "fiscal anticorrupci[óòo]n". Para este caso no se incluye la

expresión regular "ex-fiscal anticorrupci[óòo]n" debido a que la expresión regular "fiscal

anticorrupci[óòo]n" ya está definida, y como la tercera columna tiene un valor "false", significa que puede

buscar este patrón dentro de otra palabra. Por ende, la expresión regular va a ser capaz de encontrar "ex-

fiscal anticorrupción" porque contiene la expresión "fiscal anticorrupci[óòo]n".

67

Para conocer más sobre la sintaxis de expresiones regulares, se puede dirigir a: https://docs.python.org/3/library/re.html#regular-expression-syntax

instituciones.all.txt

Este archivo tiene el mismo esquema que el de casos de corrupción. La única diferencia es que se

definen expresiones regulares para identificar a instituciones en vez de casos de corrupción. Igualmente,

se conservan las reglas de agrupar varias formas de referirse a una institución.

lideres-opinion .all.txt

Este archivo tiene el mismo esquema que el de casos de corrupción. La única diferencia es que se

definen expresiones regulares para identificar líderes de opinión en vez de casos de corrupción.

Igualmente, se conservan las reglas de agrupar varias formas de referirse a un líder de opinión.

palabras-corrupcion.all.txt

Este archivo tiene el mismo esquema que el de casos de corrupción. La única diferencia es que se

definen expresiones regulares para identificar palabras relacionadas con corrupción en vez de casos de

corrupción.

Para el caso del archivo de palabras de corrupción, se debe colocar el valor "corrupción" (sin tilde y

sin comillas) en la tercera columna para todas las filas, debido a que todas las palabras definidas en este

archivo se agrupan en el concepto de corrupción. La última columna si puede tomar un valor diferente

para cada palabra.

partidos-politicos.all.txt

Este archivo tiene el mismo esquema que el de casos de corrupción. La única diferencia es que se

definen expresiones regulares para identificar partidos políticos en vez de casos de corrupción.

Igualmente, se conservan las reglas de agrupar varias formas de referirse a un partido político.

palabras-corrupcion-assoc.txt

Este archivo tiene un esquema diferente a los demás, y es el que se utiliza para el algoritmo de

asociación de palabras. A continuación, se detalla el significado de cada columna, en orden:

1. Expresiones regulares: al igual que los anteriores archivos, las expresiones regulares de esta

primera columna permiten identificar publicaciones y comentarios que mencionen entidades y

palabras/casos de corrupción.

68

2. Valor booleano, indicando si la(s) palabra(s) de la primera columna NO contienen stop words.

Esta columna puede tomar dos valores: "true" o "false".

Por ejemplo, "Partido de la U" contiene tres stop words: "de", "la" y "u". Por lo tanto, esta

columna tendría el valor de "false". Este valor lo utiliza el algoritmo internamente para

determinar en qué campos de la base de datos debe buscar. Si la expresión regular contiene stop

words, entonces no puede buscar en el texto pre-procesado, y debe buscar en el texto original.

3. Nombre real del concepto/entidad: este es el nombre que se mostrará en el grafo, por lo tanto,

puede tener acentos, espacios y stop words.

4. Identificador del concepto/entidad: esta columna debe tener un valor único para cada fila. Es un

identificador que utiliza internamente el algoritmo de asociación de palabras, para poder

diferenciar cada nodo. En ningún momento se muestra este valor al usuario final. Solo se debe

garantizar que todas las filas de este archivo tengan un valor único en esta columna.

5. Palabras a buscar: estas palabras no deben ser expresiones regulares. Las expresiones regulares se

utilizan para identificar publicaciones y comentarios que mencionen a entidades o casos de

corrupción. Luego de haber identificado esas publicaciones/comentarios, se buscan las palabras

de esta columna. Estas palabras no deben contener acentos ni caracteres especiales, pero si

pueden contener stop words.

6. Color: la última columna indica el color del nodo. Este color se especifica en formato

hexadecimal (ej: el verde es #FFFE4F). Para ver una lista de colores hexadecimales, puede

remitirse a: https://www.w3schools.com/colors/colors_names.asp

A pesar del nombre del archivo (palabras-corrupcion-assoc.txt), este archivo no solo contiene

palabras de corrupción, sino instituciones, partidos políticos, líderes de opinión y casos de corrupción

(también las palabras de corrupción).

Nota:

El único archivo que no termina en ".all.txt" que debe modificar el usuario es palabras-corrupcion-

assoc.txt. Los archivos que no terminan en ".all.txt" (a excepción de palabras-corrupcion-assoc.txt), son

archivos de prueba que se utilizaron para desarrollar Sentinel. Estos archivos pueden servir para otros

usuarios que quieran desarrollar nuevos módulos de Sentinel sin necesidad de cargar información para

todas las entidades o casos de corrupción.

Páginas de Facebook de medios y líderes de opinión

El otro aspecto a tener en cuenta para el mantenimiento, es la lista de páginas que la Secretaría de

Transparencia desea monitorear. En el módulo de extracción de datos ( facebook-scraper-py), se

69

encuentran dos archivos llamados: config. medios. json y config. lideres.json. Estos dos archivos

contienen la lista de páginas de medios y líderes de opinión respectivamente, de las cuales se quieren

extraer publicaciones y comentarios. Estos archivos también se pueden modificar con fines de

eliminar/agregar nuevas páginas de Facebook. Los archivos están en formato JSON, y ambos tienen el

siguiente esquema:

Tabla 31 Esquema

En el objeto "credentials":

appId: en esta propiedad se debe colocar el ID de la aplicación que se creó en el portal de

desarrolladores de Facebook (ver sección 6.1 Plan de Despliegue)

appSecret: en esta propiedad se debe colocar el "secret" de la aplicación que se creó en el portal

de desarrolladores de Facebook.

En el arreglo "pages":

En este arreglo se colocan las páginas de Facebook de las cuales se quieren extraer datos.

Es importante resaltar que no se ponen las URLs de la página de Facebook, sino el ID de la

página.

El ID de una página se puede encontrar ingresando la URL de la página de Facebook en la

siguiente aplicación web: https://findmyfbid.com/

Por ejemplo, para el medio El Tiempo, primero se debe ingresar a la página de Facebook de El Tiempo

y copiar la URL de la página pública (ej: https://www.facebook.com/eltiempo). Luego se debe pegar la

70

URL en la página https://findmyfbid.com, para obtener el ID de la página. Finalmente, se copia el ID de

la página y se pega en el archivo JSON para que la próxima vez que se ejecute el módulo de extracción de

datos, tenga en cuenta la página agregada.

Ilustración 41 Buscar ID de una página de Facebook

Ilustración 42 ID de página de Facebook

6.3 Reporte final Los resultados de Sentinel se presentan en la sustentación final del trabajo de grado y en la

memoria del trabajo de grado.

La Secretaría de Transparencia realizó un informe con algunas conclusiones que pudieron sacar

gracias a Sentinel. Ver informe Conclusiones y recomendaciones herramienta SENTINEL

6.4 Revisión del proyecto6.4.1 Fortalezas

Apoyo de la Secretaría de Transparencia en la formulación y validación del proyecto.

Contacto constante con la directora del Trabajo de Grado y con la Secretaría de Transparencia.

71

Todas las herramientas que se usaron para el desarrollo del proyecto fueron gratuitas y de licencia

publica, por lo cual la Secretaría de Transparencia puede utilizar el sistema sin necesidad de

pagar.

Conocimiento previo de diferentes herramientas para el desarrollo del proyecto lo que incrementó

la agilidad del mismo.

El equipo de trabajo fue capaz de afrontar los contratiempos del proyecto.

6.4.2 Debilidades Apoyo de otras entidades diferentes al Observatorio para el entendimiento del negocio.

Como el grupo de trabajo no tenía 100% de autonomía de los servidores, en ocasiones se

presentaban problemas de disponibilidad y conectividad, los cuales no eran fácilmente

solucionables y por esta razón se presentaron problemas en el calendario del proyecto.

Existen diferentes herramientas que prestan servicios en nube para realizar analítica, sin embargo,

éstas son costosas en términos económicos y el proyecto no contaba con recursos económicos

para adquirir estas herramientas.

6.4.3 Trabajo futuro En la reunión de validación del sistema que se tuvo con la Secretaría de Transparencia, se

propusieron nuevas funcionalidades para el sistema, las cuales quedan como propuestas de

trabajo futuro en Sentinel. Estas sugerencias se pueden ver en la sección de 5. Evaluación.

Se propone crear una ontología de corrupción, con fines de tener una base de conocimiento

mucho más robusta, y tener mayor exhaustividad en la búsqueda de entidades y palabras o casos

relacionados a corrupción.

Mejorar el módulo de análisis de sentimientos. El grupo de trabajo inicialmente pretendía utilizar

una solución comercial (IBM Watson Tone Analyzer), pero no contó con los recursos monetarios

necesarios.

El tema de análisis de sentimientos es algo complicado. Incluso, los mismos integrantes del

grupo, tuvieron problemas para determinar la polaridad de los comentarios. Como trabajo futuro,

se propone probar con diferentes algoritmos y técnicas (ej: redes neuronales, Naive Bayes, etc.),

para medir cuál tiene mejor rendimiento.

Permitir realizar denuncias de casos de corrupción dentro de Sentinel, y aplicar procesos de

analítica a las denuncias en sí para conocer cuáles entidades o cuales son los temas de corrupción

más mencionados en denuncias de casos de corrupción.

El Observatorio reconoció la importancia del sistema desarrollado, pero identificó que sería de

gran utilidad realizar el mismo monitoreo sobre la red social Twitter con ánimos de obtener

conclusiones que abarquen todo el espectro de las redes sociales en la población de país.

72

7. Referencias Observatorio de Transparencia y Anticorrupción. (2017, octubre 1). Quiénes componen el Observatorio.

Recuperado el 1 de octubre de 2017, a partir de http://www.anticorrupcion.gov.co/Paginas/Qui

%C3%A9nes-componen-el-Observatorio.aspx

Observatorio de Transparencia y Anticorrupción. (2017, octubre1). Instituciones para la Lucha Contra la

Corrupción. Recuperado el 1 de octubre de 2017, a partir de

http://www.anticorrupcion.gov.co/Paginas/Instituciones.aspx

Observatorio de Transparencia y Anticorrupción. (2017, octubre 1). Misión y Visión - Observatorio de

Transparencia y Anticorrupción. Recuperado el 1 de octubre de 2017, a partir de

http://www.anticorrupcion.gov.co/Paginas/Misi%C3%B3n-Visi%C3%B3n.aspx

Observatorio de Transparencia y Anticorrupción. (2017, octubre 1). Caja de Herramientas. Recuperado el

2 de octubre de 2017, a partir derom http://www.anticorrupcion.gov.co/Paginas/caja-herramientas.aspx

Caicedo, L., Carrillo, A., Forero, J., & Uruena, J. (2017, octubre 9). 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. Recuperado

el 9 de octubre de 2017, a partir de https://repository.javeriana.edu.co/handle/10554/20516

CAOBA, A. (2017, abril 23). Corpus de sentimientos.

Ortiz, M. (2017, agosto 17). Trabajo de grado: percepción de corrupción en redes sociales.

Cerón-Guzmán, J. A., & León-Guzmán, E. (2016). A Sentiment Analysis System of Spanish Tweets and

Its Application in Colombia 2014 Presidential Election. In 2016 IEEE International Conferences on Big

Data and Cloud Computing (BDCloud), Social Computing and Networking (SocialCom), Sustainable

Computing and Communications (SustainCom) (BDCloud-SocialCom-SustainCom) (pp. 250–257).

https://doi.org/10.1109/BDCloud-SocialCom-SustainCom.2016.47

IBM. (s/f). Tone Analyzer | IBM Watson Developer Cloud. Recuperado el 28 de marzo de 2017, a partir

de https://www.ibm.com/watson/services/tone-analyzer/

73

Garcia, M., Montalvo, J., & Seligson, M. (2015, junio). Cultura política de la democracia en Colombia,

2015: Actitudes democráticas en zonas de consolidación territorial. Vanderbilt University.

Calambás Marin, D. A., & Mendoza, J. A. (2016). RART. Recuperado el 9 de marzo de 2017, a partir de

http://pegasus.javeriana.edu.co/~CIS1630AP06/entregables.html

Facebook. (s/f). Using the Graph API - Documentation. Recuperado el 27 de octubre de 2017, a partir de

https://developers.facebook.com/docs/graph-api/using-graph-api/

MongoDB. (s/f). MongoDB for GIANT Ideas. Recuperado el 5 de noviembre de 2017, a partir de

https://www.mongodb.com/index

Oracle. (s/f). Database SQL Language Reference. Recuperado el 5 de noviembre de 2017, a partir de

https://docs.oracle.com/database/121/SQLRF/functions003.htm#SQLRF20035

Dinero. (2017, octubre 13). Cementos Argos rechaza posibles sanciones de la SIC por cartel del cemento.

Recuperado el 6 de noviembre de 2017, a partir de http://www.dinero.com/empresas/articulo/cementos-

argos-sanciones-de-la-sic-por-cartel-del-cemento/251249

Castañeda, P., Ortiz, M., & Pérez, S. (2017). Entrevista con El Observatorio Nacional de Transparencia

y Anticorrupción. Observatorio Nacional de Transparencia y Anticorrupción

Cloud Natural Language API. (2017). Cloud Natural Language API | Google Cloud Platform.

Recuperado el 15 de noviembre de 2017, a partir de https://cloud.google.com/natural-language/

74