prototipo de aplicaciÓn para la visualizaciÓn de...

57
PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE RELACIONES DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES DE DATOS NoSQL ANGYE KATHERINE MALAGON TAVERA Trabajo de grado presentado como requisito para optar al título de INGENIERA DE SISTEMAS Director: SONIA ORDOÑEZ SALINAS Ph.D UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA INGENIERÍA DE SISTEMAS BOGOTÁ D.C 2020

Upload: others

Post on 03-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE RELACIONES DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES DE

DATOS NoSQL

ANGYE KATHERINE MALAGON TAVERA

Trabajo de grado presentado como requisito para optar al título de

INGENIERA DE SISTEMAS

Director: SONIA ORDOÑEZ SALINAS Ph.D

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS

FACULTAD DE INGENIERÍA

INGENIERÍA DE SISTEMAS

BOGOTÁ D.C

2020

Page 2: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

TABLA DE CONTENIDO

1. INTRODUCCIÓN ....................................................................................................... 6

2. PLANTEAMIENTO DEL PROBLEMA ........................................................................ 6

3. MARCO TEÓRICO .................................................................................................... 7

3.1 WEB CRAWLER ...................................................................................................... 7

3.2 PROCESAMIENTO DEL LENGUAJE NATURAL ..................................................... 8

3.3 BASES DE DATOS NoSQL ..................................................................................... 8

3.4 HERRAMIENTAS DE BASES DE DATOS NoSQL .................................................. 9

3.5 METODOLOGÍA DE DESARROLLO ..................................................................... 11

3.6 ARQUITECTURA ORIENTADA A SERVICIOS ...................................................... 11

4. MARCO REFERENCIAL .......................................................................................... 12

4.1 HERRAMIENTAS PARA LA EXTRACCIÓN DE DATOS DE SITIOS WEB ............ 12

4.2 TRABAJOS RELACIONADOS ............................................................................... 12

5. ESTADO DEL ARTE ................................................................................................ 14

6. OBJETIVOS ............................................................................................................. 15

6.1 OBJETIVO GENERAL ........................................................................................... 15

6.2 OBJETIVOS ESPECÍFICOS .................................................................................. 15

7. METODOLOGÍA ...................................................................................................... 15

7.1 DEFINICIÓN DE ITERACIONES Y ETAPAS ......................................................... 16

8. DESARROLLO DEL PROTOTIPO ........................................................................... 17

8.1 PRIMERA ITERACIÓN .......................................................................................... 17

8.2 SEGUNDA ITERACIÓN ......................................................................................... 35

8.3 TERCERA ITERACIÓN.......................................................................................... 38

8.4 ARQUITECTURA DEL SISTEMA .......................................................................... 50

9. RESULTADOS ......................................................................................................... 51

10. TRABAJO FUTURO ................................................................................................. 53

11. CONCLUSIONES .................................................................................................... 54

12. REFERENCIAS........................................................................................................ 54

13. ANEXO N° 1 – PRIMERA ITERACIÓN .................................................................... 58

14. ANEXO N° 2 – SEGUNDA ITERACIÓN ................................................................... 60

15. ANEXO N° 3 –TERCERA ITERACIÓN .................................................................... 63

16. ANEXO N° 4 – ANÁLISIS DE FUENTES DE INFORMACIÓN ................................. 68

17. ANEXO N° 5 – CÓDIGOS DE ESTADO HTTP ........................................................ 94

Page 3: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

INDICE DE ILUSTRACIONES

Figura 1. Funcionamiento de un web crawler. diseño propio .................................. 7

Figura 2. Grafo generado por el sitio web de quién es quién [25] ......................... 13

Figura 3. Ejemplo de consulta, imagen tomada del repositorio en Github [26]...... 13

Figura 4. Correlación de fuentes y atributos, elaboración propia .......................... 23

Figura 5. Diseño de almacenamiento para metadatos, diseño propio ................... 24

Figura 6. Esquema de página sencilla, diseño propio ........................................... 25

Figura 7. Esquema de página con contenedores, diseño propio ........................... 26

Figura 8. Esquema de página con patrones en la url, diseño propio ..................... 26

Figura 9. Esquema de página con enlaces a perfiles, diseño propio ............. ¡Error!

Marcador no definido.

Figura 10. Clasificación de servicios del crawler, fuente propia ............................ 27

Figura 11. Pseudocódigo para explotar página sencilla, diseño propio ................. 31

Figura 12. Pseudocódigo para explotar página con patrón numérico en la url, diseño

propio .................................................................................................................... 32

Figura 13. Pseudocódigo para explotar página de contenedores, diseño propio .. 32

Figura 14. Pseudocódigo para explotar página con enlaces, diseño propio.......... 32

Figura 15. Pseudocódigo para explotar subestructuras de la página, diseño propio

.............................................................................................................................. 33

Figura 16. Diseño de almacenamiento de la página en MONGODB, diseño propio

.............................................................................................................................. 33

Figura 17. Diseño de estructura en Redis para personas, diseño propio .............. 34

Figura 18. Diseño de estructura en Redis para enlaces de sitios web, diseño propio

.............................................................................................................................. 34

Figura 19. Servicios alternativos de análisis y explotación, diseño propio ............ 36

Figura 20. Pseudocódigo para unificar versiones, diseño propio .......................... 38

Figura 21. Flujo de creación de nodos y relaciones, diseño propio ....................... 40

Figura 22. Logo Palliri, diseño propio .................................................................... 41

Figura 23. Diseño inicial del grafo, diseño propio .................................................. 42

Figura 24. Componentes Popoto.js:

Grafo(1),Acciones(2),Taxonomía(3),Query(4),Resultados(5)[58] .......................... 44

Figura 25. Vista principal Palliri, diseño propio ...................................................... 45

Figura 26. Búsqueda y lista de resultados, diseño propio ..................................... 45

Figura 27. Visualización de resultados del crawler, diseño propio ........................ 46

Figura 28. Vista inicial del grafo, fuente propia ...................................................... 47

Figura 29. Visualización de resultados, fuente propia ........................................... 48

Figura 30. Visualización de atributos en la relación, fuente propia ........................ 48

Figura 31. Opciones de visualización de resultados, fuente propia ....................... 49

Figura 32. Página web de contacto, diseño propio ................................................ 49

Figura 33. Página web de información del grupo, diseño propio ........................... 50

Figura 34. Arquitectura del proyecto, fuente propia ............................................... 51

Figura 35. Clasificación de fuentes de información, fuente propia ........................ 52

Page 4: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 36. Diagrama de componentes Palliri, fuente propia .................................. 52

INDICE DE TABLAS

Tabla 1. Revisión de trabajos relacionados, elaboración propia ........................... 15

Tabla 2. Plantilla de historias de usuario, diseño con base en [40] ....................... 16

Tabla 3. Plantilla de tareas de ingeniería, diseño con base en [40] ...................... 16

Tabla 4. Plantilla de pruebas de aceptación, diseño con base en [40] .................. 17

Tabla 5. Resumen historias de usuario primera iteración, elaboración propia ...... 17

Tabla 6. Consolidado de fuentes de información, elaboración propia ................... 21

Tabla 7. Tareas de ingeniería de primera iteración, elaboración propia ................ 25

Tabla 8. Identificación de etiquetas HTML por atributo, elaboración propia .......... 25

Tabla 9. Esquema de políticas de servicios del web crawler, elaboración propia . 29

Tabla 10. Herramientas para extracción de información, elaboración propia ........ 29

Tabla 11. Códigos de estado HTTP, elaboración propia ....................................... 30

Tabla 12.Estructura de elementos HTML de interés, elaboración propia .............. 31

Tabla 13. Pruebas de aceptación, primera iteración ............................................. 34

Tabla 14. Historias de usuario, segunda iteración ................................................. 35

Tabla 15. Tareas de ingeniería, segunda iteración ............................................... 36

Tabla 16. Análisis de similitud de texto, elaboración propia .................................. 37

Tabla 17. Pruebas de aceptación, segunda iteración ............................................ 38

Tabla 18. Historias de usuario, tercera iteración ................................................... 39

Tabla 19. Tareas de ingeniería, tercera iteración .................................................. 41

Tabla 20. Nodos del grafo, elaboración propia ...................................................... 42

Tabla 21. Relaciones del grafo, elaboración propia .............................................. 42

Tabla 22. Herramientas de visualización de grafos, elaboración propia ............... 43

Tabla 23. Configuración Popoto.js, fuente propia .................................................. 47

Tabla 24. Pruebas de aceptación, tercera iteración .............................................. 50

Tabla 25. Distribución de fuentes de información, fuente propia ........................... 52

Tabla 26. Historia de usuario 1 .............................................................................. 58

Tabla 27. Tarea de ingeniería 1 ............................................................................ 58

Tabla 28. Tarea de ingeniería 2 ............................................................................ 58

Tabla 29. Prueba de aceptación 1 ......................................................................... 58

Tabla 30. Historia de usuario 2 .............................................................................. 59

Tabla 31. Tarea de ingeniería 3 ............................................................................ 59

Tabla 32. Tarea de ingeniería 4 ............................................................................ 59

Tabla 33. Tarea de ingeniería 5 ............................................................................ 59

Tabla 34. Prueba de aceptación 2 ......................................................................... 59

Tabla 35. Prueba de aceptación 3 ......................................................................... 59

Tabla 36. Historia de usuario 3 .............................................................................. 60

Tabla 37. Tarea de ingeniería 6 ............................................................................ 60

Tabla 38. Tarea de ingeniería 7 ............................................................................ 60

Page 5: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Tabla 39. Prueba de aceptación 4 ......................................................................... 60

Tabla 40. Historia de usuario 4 .............................................................................. 61

Tabla 41. Tarea de ingeniería 8 ............................................................................ 61

Tabla 42. Prueba de aceptación 5 ......................................................................... 61

Tabla 43. Historia de usuario 5 .............................................................................. 61

Tabla 44. Tarea de ingeniería 9 ............................................................................ 61

Tabla 45. Tarea de ingeniería 10 .......................................................................... 62

Tabla 46. Tarea de ingeniería 11 .......................................................................... 62

Tabla 47. Prueba de aceptación 6 ......................................................................... 62

Tabla 48. Prueba de aceptación 7 ......................................................................... 62

Tabla 49. Historia de usuario 6 .............................................................................. 62

Tabla 50. Tarea de ingeniería 12 .......................................................................... 63

Tabla 51. Prueba de aceptación 8 ......................................................................... 63

Tabla 52. Prueba de aceptación 9 ......................................................................... 63

Tabla 53. Historia de usuario 7 .............................................................................. 63

Tabla 54. Tarea de ingeniería 13 .......................................................................... 63

Tabla 55. Tarea de ingeniería 14 .......................................................................... 64

Tabla 56. Tarea de ingeniería 15 .......................................................................... 64

Tabla 57. Prueba de aceptación 10 ....................................................................... 64

Tabla 58. Prueba de aceptación 11 ....................................................................... 64

Tabla 59. Historia de usuario 8 .............................................................................. 64

Tabla 60. Tarea de ingeniería 16 .......................................................................... 65

Tabla 61. Prueba de aceptación 12 ....................................................................... 65

Tabla 62. Historia de usuario 9 .............................................................................. 65

Tabla 63. Tarea de ingeniería 17 .......................................................................... 65

Tabla 64. Tarea de ingeniería 18 .......................................................................... 65

Tabla 65. Prueba de aceptación 13 ....................................................................... 65

Tabla 66. Prueba de aceptación 14 ....................................................................... 66

Tabla 67. Historia de usuario 10 ............................................................................ 66

Tabla 68. Tarea de ingeniería 19 .......................................................................... 66

Tabla 69. Tarea de ingeniería 20 .......................................................................... 66

Tabla 70. Tarea de ingeniería 21 .......................................................................... 66

Tabla 71. Prueba de aceptación 15 ....................................................................... 67

Tabla 72. Prueba de aceptación 16 ....................................................................... 67

Tabla 73. Historia de usuario 11 ............................................................................ 67

Tabla 74. Tarea de ingeniería 22 .......................................................................... 67

Tabla 75. Tarea de ingeniería 23 .......................................................................... 67

Tabla 76. Prueba de aceptación 17 ....................................................................... 68

Page 6: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

1. INTRODUCCIÓN

El contenido que reside en la web se ha considerado como fuente principal de

información y por lo tanto se ha utilizado en distintas áreas como la lingüística

computacional, bioinformática y en ámbitos comerciales con la analítica de datos.

Sin embargo, en la exploración realizada no se encontraron herramientas que

utilicen esta información con el objetivo de fomentar el fortalecimiento de la cultura

política, menos aún que pongan a disposición de la ciudadanía información

consolidada que ayude a entender el entorno de la política.

Por lo anterior, en este trabajo se presenta la conceptualización de las herramientas

utilizadas y documenta el desarrollo de un prototipo de software que permite

relacionar los actores de la política frente a la experiencia profesional y académica;

para lo cual se utilizaron datos libres de la web como fuente principal de información

y la presentación de la información de manera gráfica y amigable al usuario por

medio de una aplicación web y el uso de un motor de bases de datos NoSQL.

2. PLANTEAMIENTO DEL PROBLEMA

Los colombianos asocian la política a la corrupción y malas prácticas institucionales;

adicionalmente la fuente principal de información política y construcción de la esfera

de lo público se da a través de canales de televisión y comunicación popular [1].

La cultura política colombiana está enmarcada por variables históricas y socio-

políticas como la violencia, la cultura religiosa y el bipartidismo [2]. Algunos autores

indican que la privatización de los medios de comunicación supone la edición y

contextualización de mensajes, evitando que los ciudadanos consoliden su

capacidad de creación y circulación de mensajes propios [3]. Lo anterior implica el

deterioro progresivo de la participación y confianza política, afectando la percepción

e impacto de la democracia y la ética pública existente.

Por otro lado, las conclusiones del ciudadano común generalmente obedecen a las

noticias que circulan por redes sociales y obtener conclusiones propias frente al

gran cúmulo de información que se publica a diario a través de la Web se hace

complicado, dado que se requiere conocimiento previo sobre política, tecnología,

uso de técnicas propias de la minería de datos y de procesamiento de lenguaje

natural.

Por lo anterior se plantea la pregunta: ¿Es posible que a través de una herramienta

gráfica se sinteticen relaciones académicas y laborales de los funcionarios públicos

colombianos, con el objetivo de brindar información a la población, y apoyar la toma

Page 7: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

de decisiones formando un criterio propio y fortaleciendo la cultura política,

utilizando una base de datos no relacional?

3. MARCO TEÓRICO

En este capítulo se da a conocer la conceptualización de los temas relevantes del

proyecto desarrollado, como son: los web crawler, sus características y tipos; el

procesamiento de lenguaje natural y las bases de datos NoSQL.

3.1 WEB CRAWLER

Un web crawler (también conocido como un robot o spider) es un sistema que

permite descargar información masiva de páginas web, siguiendo hipervínculos de

una página a otra; son usados con una gran variedad de propósitos, siendo el más

destacado el crawling o rastreo en los motores de búsqueda [4].

El procedimiento general que sigue un web crawler consiste en descargar las

páginas semilla (URLs de exploración inicial), indexarlas, extraer los hipervínculos

que contienen y para cada uno de ellos repetir el proceso [3]. A continuación, se

muestra un esquema que profundiza y aclara el proceso.

Figura 1. Funcionamiento de un web crawler. diseño propio

A partir de una página inicial (semilla) se hace una petición web, el servidor resuelve

y retorna el contenido HTML del sitio, se continua con la búsqueda de los enlaces a

partir de un filtro predefinido, en caso de que existan duplicados se eliminan de lo

contrario se continua con la priorización de los resultados encontrados y se anexan

a una cola donde a cada uno se le aplica recursivamente el proceso descrito, ver

figura 1.

Los web crawler pueden clasificarse en focalizados y dispersos; los primeros

obtienen, indexan y mantienen páginas que satisfacen algunas propiedades

Page 8: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

particulares relacionadas con un conjunto específico de temas [4] y los dispersos

intentan abarcar todo el contenido de la web.

3.1.1 CRAWLERS DISTRIBUIDOS

A diferencia de los crawler centralizados, es decir que un nodo se encarga del

proceso de rastreo y extracción de enlaces, en los crawlers distribuidos las URLs

semilla se distribuyen a otros nodos (el criterio que se recomienda es que cada nodo

se encargue de un dominio específico); posteriormente al eliminar duplicados, las

URLs deben estar en memoria principal para que todos los nodos puedan visualizar

el conjunto de enlaces en su totalidad. Esta arquitectura a pesar de utilizar más

recursos computacionales disminuye el tiempo de respuesta [5].

3.2 PROCESAMIENTO DEL LENGUAJE NATURAL

El procesamiento del lenguaje natural (PLN) se puede definir como el

procesamiento automático (o semi-automático) del lenguaje humano. Es un área

multidisciplinar, sin embargo se vincula esencialmente con la inteligencia artificial

(IA) y la lingüística computacional [6]. Se ocupa de la interacción entre el lenguaje

natural y la computadora; permitiendo analizar, comprender y generar lenguaje

natural escrito o hablado con objetivos prácticos como la extracción y recuperación

de Información [7].

Las aplicaciones del PLN pueden subdividirse en aplicaciones basadas en texto y

voz: las primeras abarcan objetivos como buscar temas, palabras clave, extraer

datos, traducir, identificar emociones y resumir texto mientras que las aplicaciones

de voz están enfocadas al reconocimiento de voz para el control de máquinas,

mejora de los motores de búsqueda, traducción de voz a voz y sistemas de diálogo

[8].

La recuperación de información generalmente se dedica a detectar entidades referidas en textos no estructurados o semiestructurados, las relaciones entre ellos y los eventos en los que participa. Informalmente, podría decirse la identificación de los elementos "qué”, "quién", "cuándo" y "dónde” [9].

3.3 BASES DE DATOS NoSQL

El término NoSQL (Interpretado como “No sólo SQL”) fue utilizado por primera vez

en 1998 por Carlo Strozzi. NoSQL hace referencia a los motores de bases de datos

que no siguen el modelo relacional tradicional [10], es decir no están focalizadas en

transacciones y por lo tanto no buscan satisfacer las propiedades ACID [11]:

• Atomicidad: Se ejecutan todas las operaciones que hagan parte de una

transacción o ninguna, de tal forma que sea exitosa o falle completamente.

• Consistencia: Los datos no persisten si se viola alguna regla predefinida o

deja la base de datos en un estado inconsistente.

Page 9: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

• Aislamiento: Una transacción no puede interferir con otra.

• Durabilidad: Si una transacción es confirmada se asegura su persistencia.

Por su parte, este tipo de motores de bases de datos están orientados a satisfacer

las propiedades BASE acuñadas por Eric Brewer [12]:

• Básicamente disponible: Se garantiza a cada solicitud una respuesta

satisfactoria o fallo de ejecución.

• Estado flexible: El estado del sistema puede cambiar con el tiempo, a veces

sin ninguna entrada (para una eventual consistencia).

• Eventualmente consistente: La base de datos puede ser

momentáneamente inconsistente pero será consistente eventualmente.

Algunas características comunes de los motores de bases de datos NoSQL son: no

requieren de un esquema para almacenar información, mejoran la velocidad de

respuesta a consultas dado que no existen restricciones entre estructuras, tienen

fácil adaptación en entornos distribuidos y generalmente no requieren de hardware

costoso [12].

A continuación se brinda una visión general de las características de algunos

modelos de base de datos NoSQL [13]:

Orientadas a documentos: Cada clave está vinculada a una estructura de datos

compleja conocida como documento, no se soportan relaciones entre documentos

lo que mejora el rendimiento en entornos distribuidos.

Orientadas a grafos: Representan la información en términos de nodos y

relaciones lo cual facilita la ejecución de consultas complejas.

Clave-valor: Cada elemento en la base de datos tiene una clave, la cual es

asociada a un valor; las búsquedas se realizan sobre la clave lo que permite

optimizar la velocidad y mejorar el rendimiento en entornos distribuidos.

Orientadas a columnas: Soportan un número variable de conjuntos o familias de

columnas, son optimizadas para consultas en grandes volúmenes de datos,

especialmente sobre columnas específicas.

3.4 HERRAMIENTAS DE BASES DE DATOS NoSQL

3.4.1 NEO4J

Neo4j es una base de datos orientada a grafos altamente escalable, diseñada para

utilizar datos y sus relaciones. Cuenta con el lenguaje de consulta Cypher, que

además de ser declarativo, es muy descriptivo y su sintaxis se basa en el nodo, sus

propiedades y relaciones.

El motor de procesamiento y almacenamiento nativo de Neo4j proporciona

rendimiento constante en tiempo real; algunos ejemplos de compañías que utilizan

Page 10: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

este motor de bases de datos son: Walmart para el análisis de tendencias de

producto y necesidades del cliente, eBay que aseguran mejoras en tiempos de

respuesta y Cisco.1

Algunas características destacables de Neo4j son [14]:

• El procesamiento nativo de grafos de Neo4j (también conocido como

"adyacencia libre de índices") hace referencia a la conexión entre nodos en

la base de datos; que proporciona rendimiento en tiempo

independientemente del tamaño del conjunto de datos.

• A diferencia de otras bases de datos NoSQL Neo4j conserva las propiedades

ACID dando garantía de la consistencia de los datos.

• Libre de esquema, lo que permite que se ajuste a diferentes contextos,

apoyando además las iteraciones ágiles disminuyendo los tiempos de

diseño.

3.4.2 MONGODB

Es una base de datos NoSQL de software libre que inició su desarrollo en el año

2007 por la compañía 10gen que desde el 2013 cambio su nombre a MongoDB Inc. 2 El nombre proviene de “humongous”, que significa enorme en inglés, está

desarrollada en C++ y algunas de las características más importantes de este motor

de bases de datos son [15]:

• Almacenamiento orientado a documentos: A partir de documentos JSON,

contando con un esquema dinámico y flexible.

• Manejo de réplicas.

• Soporte de índices.

• Libertad de esquema.

3.4.3 REDIS

Redis es un almacén de estructura de datos clave-valor en memoria (con licencia

BSD), utilizado como base de datos, caché y agente de mensajes. Soporta

estructuras de datos, tales como strings, hash, listas, entre otros; además

proporciona alta disponibilidad y particionamiento automático.[16]

Redis trabaja con un conjunto de datos en memoria; la persistencia puede estar

opcionalmente deshabilitada o acorde a la necesidad de volcar el conjunto de datos

en el disco o registrar cada comando en un log. A continuación se muestran otras

características de este motor:

• Transacciones: Permiten la ejecución de un grupo de comandos en un solo

paso

1 https://neo4j.com/customers/ 2 https://www.mongodb.com/press/10gen-announces-company-name-change-mongodb-inc

Page 11: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

• Pub/Sub: Implementa el paradigma Publish/Suscribe

• Claves con TTL (Time to Live)

• Expulsión de claves con LRU (Least Recently Used)

3.5 METODOLOGÍA DE DESARROLLO

Dado que el proyecto está orientado a la construcción de un prototipo se optó por la

filosofía de las metodologías ágiles, que se basa en el Manifiesto para el desarrollo

ágil [17], donde se valora:

• Al individuo e interacciones del equipo, sobre el proceso y las

herramientas.

• El software que funciona, en lugar de buena documentación.

• Colaboración con el cliente, en lugar de negociación de un contrato.

• Respuesta a cambios, sobre planes estrictos.

3.5.1 EXTREME PROGRAMMING (XP)

Es una metodología disciplinada y adaptable desarrollada por Kent Beck en el año

1999, fundamentada en cinco valores: Simplicidad (desarrollar lo que sea

necesario), Comunicación (comunicación diaria y personal con el equipo),

Retroalimentación (entregas pequeñas y frecuentes), Coraje (sinceridad sobre el

progreso y adaptación al cambio) y Respeto (al equipo de desarrollo) [18].

Los requerimientos del software se especifican a través de las historias de usuario,

su tratamiento es flexible por lo cual pueden reemplazarse, añadirse o modificarse;

con base en los registros de las historias de usuario se planifica la siguiente

iteración. Los roles de esta metodología son los siguientes: programador, cliente,

encargado de pruebas, encargado de seguimiento, director, consultor (miembro

externo al equipo con conocimiento en temas relacionados al proyecto) y gestor

(vínculo entre clientes y programadores) [19].

3.6 ARQUITECTURA ORIENTADA A SERVICIOS

La extracción y manejo de la información es fundamental para el proyecto, puede

que durante el desarrollo puedan extenderse o ajustarse algunos procesos; en la

perspectiva de orientación a servicios se dejan de lado las estructuras complejas y

en cambio se utilizan servicios que son recursos que agrupan la lógica de los

procesos y soportan su ejecución [20].

Algunas de las características principales de los servicios son su reusabilidad, bajo

acoplamiento, y especificaciones donde se define el contrato, el esquema de

políticas del servicio, los mensajes de entrada y salida, tipos de dato y demás que

permitan que otros servicios lo descubran y faciliten su composición [21].

Page 12: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

4. MARCO REFERENCIAL

En este ítem se incluirán algunas de las herramientas existentes que permiten la

extracción de datos de sitios web y trabajos que utilizan crawlers y facilitan la

visualización de información relacionada con la política.

4.1 HERRAMIENTAS PARA LA EXTRACCIÓN DE DATOS DE SITIOS WEB

4.1.1 BEAUTIFULSOUP

Es una librería de Python que permite extraer datos de documentos HTML y XML,

las siguientes tres características la destacan [22]:

1. Proporciona métodos sencillos en Python para navegar, buscar y modificar

un árbol de análisis (no se necesita mucho código para escribir una

aplicación).

2. Convierte automáticamente los documentos entrantes a Unicode y

documentos salientes a UTF-8.

3. Se encuentra en el top de los analizadores populares de Python como lxml y

html5lib, lo que le permite probar diferentes estrategias de análisis o

velocidad de cambio para flexibilidad.

4.1.2 SCRAPY

Scrapy es un framework con licencia BSD utilizado para rastrear sitios web y extraer

datos estructurados que pueden utilizarse para una amplia gama de aplicaciones,

como minería de datos y procesamiento de información; funciona bajo Linux,

MacOS o Windows. A pesar de que Scrapy fue diseñado originalmente para el web

scraping, también se puede utilizar para extraer datos mediante APIs o como web

crawler de propósito general [23].

4.2 TRABAJOS RELACIONADOS

4.2.1 QUIÉN ES QUIÉN, LA SILLA VACÍA

La silla vacía es un medio digital que comunica información referente al poder

público en Colombia. En el año 2014 lanzaron la versión gráfica de Quién es Quién,

un módulo que permite visualizar por medio de un grafo relaciones personales,

familiares, de rivalidad y alianza de los personajes que hacen parte de la élite del

poder del país [24].

Page 13: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 2. Grafo generado por el sitio web de quién es quién [25]

4.2.2 GRAPH-POLITICS

A partir de información de fuentes oficiales como la Comisión Federal de Elecciones

(FEC), el Centro para la Política Responsable (CRP), la iniciativa de datos abiertos

es EEUU; entre otras el proyecto procesa grandes cantidades de datos relacionados

con la política estadounidense y construye una red utilizando Neo4j que representa

las conexiones entre los legisladores estadounidenses [26].

Figura 3. Ejemplo de consulta, imagen tomada del repositorio en Github [26]

Page 14: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

4.2.3 THE FRAMEWORK OF INTERNET PUBLIC OPINION MONITORING &

ANALYSIS SYSTEM

Este framework está compuesto por un web crawler que recolecta información de la

web incluyendo blogs y noticias, un módulo de pre-procesamiento de información,

un módulo de análisis y minería para finalmente presentar un análisis de información

de la opinión pública. Además utiliza una arquitectura orientada a servicios y ESB

(Enterprise-service-Bus) [27].

5. ESTADO DEL ARTE

Los crawler focalizados se han vuelto indispensables para los motores de búsqueda

verticales que proveen un servicio de consulta para conjuntos de datos

especializados [28]. Por otra parte también se han integrado con ontologías para

mejorar la precisión semántica de las búsquedas [29][30] y también se han utilizado

técnicas de inteligencia artificial como el aprendizaje automático para construir

bases de conocimiento a partir de palabras clave y URLs [31].

Con el objetivo de mejorar las búsquedas, los tiempos de respuesta y la eliminación

de duplicados se han utilizado técnicas como el aprendizaje supervisado, linked

data, paralelismo y filtros de Bloom [32][33][34], por otra parte en el área del

procesamiento del lenguaje natural recientemente se han explorado aplicaciones

como la identificación biométrica, la minería en redes sociales [5], el uso de la teoría

de grafos como apoyo cualitativo de investigación [6] y la nominalización en la

especificación de requerimientos [7].

En la Tabla 1 se muestra una descripción de trabajos relacionados con el uso de

información en redes sociales y otras fuentes para el análisis de tendencias

políticas:

Titulo Descripción

Analysis and Visualization of Social Media Networks [35]

Analiza una red de libros relacionados con la política estadounidense, utilizando el conjunto de datos “polbooks” de la UCI (University of California, Irvine) y mostrando sus resultados mediante un grafo donde los nodos están representados por letras para denotar el partido político (liberal, neutral o conservador).

Characterizing Communication Networks Associated with Political Hashtags [36]

Se analiza la actividad en twitter definida por hashtags en temas políticos; se recopiló información acorde a un evento específico y se analizaron factores como clustering, reciprocidad y longitud de caminos mediante grafos.

Page 15: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Discovering Political Tendency in Bulletin Board Discussions by Social Community Analysis [37]

Analiza comunidades sociales que participan en tableros de discusión (BBS) para encontrar tendencias políticas sin análisis lingüístico utilizando técnicas propias de grafos como particionamiento, clustering y coloreado.

Aplicación del análisis de redes sociales al estudio de la estructura y desarrollo de una red de blogs económicos políticos en Argentina [38]

Con base a un grupo de blogs de debates sobre actualidad, economía y política en Argentina, se propone realizar un mapeo de la red y realizar análisis con medidas de centralidad.

Graph Theory Algorithms for Analysing Political Blogs [39]

Muestra cómo utilizar la teoría de grafos para el análisis de texto de blogs de política y resaltar las ideas principales, temas sobresalientes y su interrelación.

Tabla 1. Revisión de trabajos relacionados, elaboración propia

6. OBJETIVOS

6.1 OBJETIVO GENERAL

Desarrollar un prototipo de software que permita representar relaciones académicas

y laborales de funcionarios públicos en Colombia utilizando datos abiertos.

6.2 OBJETIVOS ESPECÍFICOS

• Definir y/o desarrollar el crawler, que permita visitar y obtener la información

de los funcionarios públicos.

• Definir los requerimientos funcionales y no funcionales que permitan el

desarrollo de un prototipo de software que permita representar las relaciones

académicas y laborales de los funcionarios públicos.

• Definir, diseñar y desarrollar los componentes necesarios para la

implementación y validación del prototipo de software que permita

representar las relaciones académicas y laborales de los funcionarios

públicos.

7. METODOLOGÍA

Para el desarrollo del proyecto se utilizó la metodología ágil XP (Extreme

Programming) dado que el prototipo de software es de índole experimental y se

requiere una revisión continúa considerando que pueden surgir nuevas historias de

usuario, modificarse o eliminarse en las diferentes etapas o iteraciones de desarrollo

del proyecto.

Page 16: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

7.1 DEFINICIÓN DE ITERACIONES Y ETAPAS

Cada una de las iteraciones que se definieron para el desarrollo del prototipo cuenta

con las etapas de análisis, diseño, codificación y pruebas. A continuación se

describen los artefactos que se generan en cada una de estas.

• Análisis: Se definen las historias de usuario acorde al formato que se muestra

en la tabla 2. El identificador consta de las siglas HU seguido de un número

consecutivo.

Nombre N° Iteración

Nombre de la historia de usuario Identificador de la

historia de usuario, por ejemplo, HU1

Número de la iteración en que se

desarrolla

Descripción Descripción corta y concisa de la historia de usuario

Prioridad Riesgo

Puede ser Alta, Media o Baja

Rango de 1 (riesgo bajo) a 5 (riesgo

alto)

Observaciones Consideraciones, notas o aclaraciones para la historia de usuario

Puntos Estimados

Número de horas estimado

Tabla 2. Plantilla de historias de usuario, diseño con base en [40]

• Diseño: Se realizan los modelos de bases de datos, arquitecturales o diagramas

relacionados según lo requiera la historia de usuario y tareas de ingeniería cuyo

identificador consta de las siglas TI seguido de un número consecutivo, el

formato a utilizar se detalla en la tabla 3.

N° Historia de usuario Etapa Horas

Identificador de la tarea, ejemplo TI1

Identificador de la historia de usuario

relacionada

Etapa de desarrollo en la que se efectuó

la tarea

Número de horas empleadas en

desarrollar la tarea

Nombre

Descripción

Tabla 3. Plantilla de tareas de ingeniería, diseño con base en [40]

• Codificación: Se elaboran los métodos, clases, funciones u otros elementos

que permitan el desarrollo de las tareas de ingeniería.

• Pruebas: Se realizan pruebas de aceptación por cada historia de usuario, el

identificador consta de las siglas PA seguido de un número consecutivo; se sigue

el formato de la tabla 4 para su documentación.

Page 17: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

N° Historia de usuario Evaluación

Identificador de la prueba, ejemplo PA1

Identificador de la historia de usuario relacionada

Aceptada/Rechazada

Nombre

Condición

Entrada

Salida esperada

Tabla 4. Plantilla de pruebas de aceptación, diseño con base en [40]

8. DESARROLLO DEL PROTOTIPO

En este apartado se presenta la arquitectura diseñada para el sistema y el desarrollo

siguiendo la metodología XP con la documentación de cada una de las iteraciones

con base en los lineamientos descritos en el capítulo 7.

8.1 PRIMERA ITERACIÓN

La primera iteración comprende el hallazgo de fuentes de interés, su respectivo

análisis y la extracción de información de los perfiles de personas de cada uno de

los sitos.

8.1.1 HISTORIAS DE USUARIO

En la tabla 5 se muestran las historias de usuario que se definieron para la primera

iteración.

N° Nombre

historia de usuario

Descripción Estado

HU1

Exploración y análisis de las fuentes de información

Identificación de los sitios web que contienen información de interés y su respectivo análisis estructural de contenido.

Aprobada

HU2 Extracción de información de las fuentes

El sistema debe analizar cada una de las fuentes y acorde a su estructura extraer la información que corresponda

Aprobada

HU3

Almacenamiento de información obtenida de la extracción

Se define el o los motores de base de datos y diseño que permitan almacenar y manejar la información que se obtiene del web crawler

Aprobada

Tabla 5. Resumen historias de usuario primera iteración, elaboración propia

Page 18: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.1.1.1 Exploración y análisis de las fuentes de información

En la tabla 6 se muestra un consolidado de los enlaces que contienen información

relevante para el propósito del proyecto; dado que la veracidad de la información

relacionada con las personas que ocupan cargos públicos es crítica, se decide

tomar como fuente principal las páginas oficiales de las entidades que hacen parte

de las tres ramas del poder público que son: la ejecutiva, legislativa y judicial, y

como segunda instancia otras fuentes oficiales que contienen hojas de vida de

funcionarios públicos.

Entidad N° Enlace

Ram

a l

eg

isla

tiva y

ju

dic

ial

Senado 1 http://www.senado.gov.co/el-senado/senadores

Cámara 2 www.camara.gov.co/representantes

Corte Suprema de Justicia

3 http://www.cortesuprema.gov.co/corte/index.php/directorio-telefonico/

Consejo de estado

4 https://www.ramajudicial.gov.co/portal/sobre-la-rama/magistrados-de-las-altas-cortes/consejo-de-estado

Consejo superior de la judicatura

5 http://www.despachospublicos.com/tipos-de-entidad/24/administraci%C3%B3n-judicial/consejo-superior-de-la-judicatura

Fiscalía General de la Nación

6 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/vicefiscal-general-de-la-nacion/

7 http://www.fiscalia.gov.co/colombia/la-entidad/el-fiscal/

8 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/director-nacional-de-politicas-y-planeacion/

9 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/director-de-planeacion-y-desarrollo/

10 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/jefe-de-la-oficina-de-divulgacion-y-prensa/

11 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/director-de-asuntos-internacionales/

12 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/director-de-control-interno/

13 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/jefe-oficina-de-veeduria-y-control-disciplinario-interno/

14 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/director-nacional-del-cuerpo-tecnico-de-investigacion-cti/

15 http://www.fiscalia.gov.co/colombia/la-entidad/el-fiscal/director-nacional-de-proteccion-y-asistencia/

16 http://www.fiscalia.gov.co/colombia/director-de-altos-estudios/

17 http://www.fiscalia.gov.co/colombia/la-entidad/equipo-de-trabajo/jefe-oficina-juridica/

Ram

a e

jecu

tiva Superintendencia

de salud

18 https://www.supersalud.gov.co/es-co/superintendencia/nuestra-entidad/directorio-de-funcionarios

19 https://www.supersalud.gov.co/es-co/superintendencia/nuestra-entidad/el-superintendente

Superintendencia financiera

20 https://www.superfinanciera.gov.co/jsp/publicaciones.jsf?id=20480

Superintendencia de vigilancia

21 https://www.supervigilancia.gov.co/publicaciones/537/el-secretario-general/

22 http://www.ssf.gov.co/wps/portal/ES/superintendencia/contratacion/directorio-contratistas/

Page 19: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Superintendencia de subsidio familiar

23

http://www.ssf.gov.co/wps/portal/ES/Inicio/mapa-sitio?1dmy&page=superintendencia&urile=wcm%3apath%3a%2Fsupersubsidio-est-org%2Festructuraorganicaytalentohumano%2Fdirectorio-de-funcionarios

24 http://www.ssf.gov.co/wps/portal/ES/Inicio/mapa-sitio?1dmy&page=superintendencia&urile=wcm%3apath%3a%2Fsupersubsidio-est-org%2Festructuraorganicaytalentohumano%2Fdirectivos

Superintendencia de sociedades

25 http://www.supersociedades.gov.co/nuestra_entidad/despacho_superintendente/Paginas/perfil_directivos.aspx

26 http://www.supersociedades.gov.co/nuestra_entidad/despacho_superintendente/Paginas/default.aspx

Superintendencia de servicios públicos domiciliarios

27 http://www.superservicios.gov.co/Institucional/Talento-Humano/Perfiles-de-nivel-directivo

Superintendencia de transporte

28 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/superintendente-delegada-de-puertos

29 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/superintendente-delegado-de-concesiones-e-infraestructura

30 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/superintendente-delegado-de-transito-y-transporte-terrestre-automotor

31 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/jefe-oficina-juridica

32 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/jefe-oficina-asesora-de-planeacion

33 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/jefe-control-interno

34 http://www.supertransporte.gov.co/index.php/la-entidad/perfiles-directivos/secretaria-general

Superintendencia solidaria

35 http://www.supersolidaria.gov.co/es/nuestra-entidad/1funcionarios

Superintendencia de industria y comercio

36 http://www.sic.gov.co/despacho-superintendente-de-industria-y-comercio

37

38 http://www.sic.gov.co/asesores-despacho

39 http://www.sic.gov.co/secretaria-general

40 http://www.sic.gov.co/delegatura-para-la-proteccion-del-consumidor

41 http://www.sic.gov.co/delegatura-para-la-proteccion-de-la-competencia

42 http://www.sic.gov.co/delegatura-para-la-propiedad-industrial

43 http://www.sic.gov.co/delegatura-para-la-proteccion-de-datos-personales

44 http://www.sic.gov.co/delegatura-reglamentos-tecnicos-y-metrologia-legal

45 http://www.sic.gov.co/delegatura-de-asuntos-jurisdiccionales

Ministerio de ambiente

46 http://www.minambiente.gov.co/index.php/ministerio/directorio

Ministerio de agricultura

47 https://www.minagricultura.gov.co/ministerio/Paginas/Directorio.aspx

48 https://www.minagricultura.gov.co/ministerio/Paginas/Viceministro-de-Desarrollo-Rural.aspx

49 https://www.minagricultura.gov.co/ministerio/Paginas/Viceministro-de-Asuntos-Agropecuarios.aspx

50 https://www.minagricultura.gov.co/ministerio/Paginas/Secretario-General.aspx

51 https://www.minagricultura.gov.co/contrataciones/Lists/Contratistas/default.aspx

52 https://www.minagricultura.gov.co/ministro/Paginas/Ministro.aspx

Page 20: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Ministerio de comercio industria y turismo

53 http://www.mincit.gov.co/publicaciones/79/funcionarios_principales_del_ministerio_de_comercio_industria_y_turismo

Ministerio de cultura

54 http://www.mincultura.gov.co/ministerio/quienes-somos/directorio-principal/Paginas/default.aspx

55 http://www.mincultura.gov.co/ministra/Paginas/default.aspx

Ministerio de transporte

56 https://www.mintransporte.gov.co/Publicaciones/Ministerio/Dependencias/viceministro_de_transporte

57 https://www.mintransporte.gov.co/Publicaciones/grupo_de_coordinacion_sectorial/viceministro_de_infraestructura

58 https://www.mintransporte.gov.co/Publicaciones/Ministerio/Dependencias/secretaria_general

Ministerio de vivienda

59 http://www.minvivienda.gov.co/sobre-el-ministerio/funcionarios

60 http://www.minvivienda.gov.co/el-ministro/hoja-de-vida

Ministerio de tecnología y comunicaciones

61 http://www.mintic.gov.co/portal/604/w3-propertyvalue-541.html#

62 http://www.mintic.gov.co/portal/604/w3-propertyvalue-542.html#

63 http://www.mintic.gov.co/portal/604/w3-propertyvalue-543.html#

64 http://www.mintic.gov.co/portal/604/w3-propertyvalue-6149.html#

Ministerio de trabajo

65 http://www.mintrabajo.gov.co/web/guest/el-ministerio/ministra-del-trabajo

66 http://www.mintrabajo.gov.co/web/guest/empleo-y-pensiones/viceministro

67 http://www.mintrabajo.gov.co/web/guest/relaciones-laborales/viceministra

Cancillería

68 http://www.cancilleria.gov.co/ministerio/viceministra-relaciones-exteriores

69 http://www.cancilleria.gov.co/ministra

70 http://www.cancilleria.gov.co/ministerio/viceministro-asuntos-multilaterales

71 http://www.cancilleria.gov.co/ministerio/secretario-general

Ministerio de minas

72 https://www.minminas.gov.co/el-ministro

73 https://www.minminas.gov.co/oficina-asesora-juridica

74 https://www.minminas.gov.co/oficina-de-control-interno

75 https://www.minminas.gov.co/oficina-de-planeacion-y-gestion-internacional

76 https://www.minminas.gov.co/oficina-de-asuntos-ambientales-y-sociales

77 https://www.minminas.gov.co/oficina-de-asuntos-regulatorios-y-empresariales

78 https://www.minminas.gov.co/viceministros

79 https://www.minminas.gov.co/viceministros

80 https://www.minminas.gov.co/secretaria-general

81 https://www.minminas.gov.co/direccion-mineria-empresarial

82 https://www.minminas.gov.co/direccion-de-formalizacion-minera

83 https://www.minminas.gov.co/direccion-de-energia-electrica

84 https://www.minminas.gov.co/direccion-de-hidrocarburos

85 https://www.minminas.gov.co/subdireccion-administrativa-y-financiera

86 https://www.minminas.gov.co/subdireccion-de-talento-humano

Page 21: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Ministerio de educación

87 https://www.mineducacion.gov.co/portal/Ministerio/Informacion-Institucional/355837:La-Ministra

Ministerio de hacienda

88 http://www.minhacienda.gov.co/HomeMinhacienda/faces/Ministerio/AcercaMinisterio/EstructuraTalentoHumano/ServidoresPublicos/DirJefeOfic?

89 http://www.minhacienda.gov.co/HomeMinhacienda/faces/PerfilMinistro

90 http://www.minhacienda.gov.co/HomeMinhacienda/faces/Menus/menuo/perfilvicegeneral

91 http://www.minhacienda.gov.co/HomeMinhacienda/faces/Menus/menuo/perfilvicetecnico

92 http://www.minhacienda.gov.co/HomeMinhacienda/faces/Menus/menuo/perfilsecretariogeneral

Presidencia 93 http://es.presidencia.gov.co/presidencia/Paginas/presidente.aspx

Vicepresidencia 94 http://www.vicepresidencia.gov.co/vicepresidencia/Paginas/vicepresidente.aspx

Departamento nacional de planeación

95 https://www.dnp.gov.co/direccion-general/Paginas/Perfil.aspx

Departamento de prosperidad social

96 http://www.dps.gov.co/ent/gen/SitePages/Perfil_directivos.aspx

Departamento administrativo de la función pública

97 http://www.funcionpublica.gov.co/equipo-directivo;jsessionid=2113330124EF5F85262591BED67D29C1

Unidad Administrativa Especial de Organizaciones Solidarias

98 http://www.orgsolidarias.gov.co/la-entidad/qui%C3%A9nes-somos/perfil-del-director

Otr

as f

uen

tes

gu

bern

am

en

tale

s Sistema de

Información y Gestión del Empleo Público (SIGEP)

99 http://www.sigep.gov.co/directorio

Sistema de publicación de hojas de vida

100 https://aspirantes.presidencia.gov.co/

Tabla 6. Consolidado de fuentes de información, elaboración propia

Page 22: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

En la figura 4 se representa el análisis realizado de los atributos que contiene cada

una de las páginas para los funcionarios públicos, el número asociado corresponde

al que se asignó en la Tabla 6:

fech

a d

e ac

tual

izac

ión

No

mb

re c

om

ple

to

Foto

Per

fil

Co

rreo

Telé

fon

os

Ofi

cin

a

Co

mis

ión

Luga

r d

e n

acim

ien

to

Par

tid

o p

olít

ico

Dep

arta

men

to

Red

es s

oci

ales

Siti

o w

eb

Per

iod

o c

on

stit

ucio

nal

Legi

slat

ura

Vo

tos

ob

ten

ido

s

Car

go

Gra

do

/Ord

en

Dep

end

enci

a

Tip

o d

e vi

ncu

laci

ón

Enla

ce a

SIG

EP

Do

cum

ento

de

iden

tid

ad

iden

tifi

caci

ón

Exp

erie

nci

a la

bor

al

Form

ació

n a

cadé

mic

a

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

Page 23: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

Figura 4. Correlación de fuentes y atributos, elaboración propia

Page 24: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.1.1.2 Extracción de información de las fuentes

Para la extracción automática de la información de las páginas de la tabla 6, se

requiere de una herramienta que permita interactuar con los elementos de un sitio

web, como por ejemplo dar clic a un botón o enlace, volver a la página anterior y

buscar elementos por XPATH, id, clase u otros atributos; por otra parte se requiere

que los componentes a desarrollar sean altamente reutilizables y autónomos por lo

tanto se decide utilizar orientación a servicios, definiendo los procesos de negocio

a partir del análisis realizado a las fuentes y los tipos de página definidos.

8.1.1.3 Almacenamiento de información obtenida de la extracción

Las fuentes de información son variadas en estructura e información contenida por

lo tanto se hace necesario que los metadatos que fueron resultado del análisis

realizado en la historia de usuario HU2 se guarden para que se facilite y automatice

la extracción de información. Como un hecho particular fueron encontrados casos

en los que más de un enlace tiene los mismos metadatos, debido a que pertenecían

a la misma entidad y dominio (se presenta un caso claro en el análisis de los sitios

con número de 6 al 10, ver anexo 1). En la figura 5 se esboza el modelo general de

la colección de MongoDB donde se almacena esta información (se debe tener en

cuenta que las relaciones en dicha representación no indican documentos

diferentes sino subestructuras del mismo).

8.1.1.4 Optimización para el acceso a la información

Una base de datos en memoria reduce el tiempo de respuesta significativamente, y

dado que el número de fuentes puede ir en aumento se decide utilizar el sistema

manejador de bases de datos REDIS para almacenar información clave de las

fuentes y su estado de procesamiento, asimismo las personas con el conjunto de

fuentes en donde puede encontrarse.

8.1.2 TAREAS DE INGENIERÍA

En la tabla 7 se encuentra el listado de tareas de ingeniería necesarias para la

primera iteración, los detalles de cada tarea se encuentran en el anexo 1.

Figura 5. Diseño de almacenamiento para metadatos, diseño propio

Page 25: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Tarea Historia de

usuario Nombre Estado

TI1 HU1 Búsqueda de patrones en la estructura de las fuentes de información

Aprobada

TI2 HU1 Identificación de elementos HTML de interés

Aprobada

TI3 HU2 Diseño del web Crawler Aprobada

TI4 HU2 Esquema de políticas de servicios Aprobada

TI5 HU2 Elección de herramienta para extraer información

Aprobada

TI6 HU2 Codificación de los componentes del web crawler

Aprobada

TI7 HU3 Diseño de estructura de almacenamiento del sitio web

Aprobada

TI8 HU3 Diseño de estructura en REDIS Aprobada Tabla 7. Tareas de ingeniería de primera iteración, elaboración propia

8.1.2.1 Búsqueda de patrones en la estructura de las fuentes de información

En primer lugar, se realizó un análisis de tipos de etiquetas para cada uno de los

sitios, dado que los tipos de documento son HTML se identificaron las etiquetas

acordes a los atributos del perfil de los funcionarios públicos, ver tabla 8.

Etiquetas HTML Atributos del funcionario

Texto

<span> <h1>,<h2>,<h3> … <p> <div>

Nombre Perfil Cargo Teléfonos Oficina Lugar de nacimiento

Imagen <img> Foto

Enlace <a> Correo electrónico Redes sociales Enlace a SIGEP

Tabla 8. Identificación de etiquetas HTML por atributo, elaboración propia

A pesar de que la estructura de la página web es variable para cada uno de los

sitios, se logró generalizar la estructura a partir del análisis realizado en los casos

que se describen a continuación:

• Página con estructura sencilla: desde la vista principal se tiene acceso a la

información o perfil de una sola persona (ver figura 6).

Figura 6. Esquema de página sencilla, diseño propio

Page 26: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

• Página con contenedores internos: en la vista principal existen contenedores

(pueden ser de tipo <div> o <table>) y en cada una de las subdivisiones existe una

estructura “SENCILLA” (ver figura 7).

• Página con enlaces a perfiles: en la vista principal existen enlaces a páginas

de estructura sencilla (ver figura 8).

• Patrones en el enlace de búsqueda para un sitio: se encuentra una sección

fija en la url seguida de un consecutivo numérico que tiene límites superior e inferior,

al completar la ruta con estos números se accede directamente a una página de

estructura sencilla (ver figura 9).

Los sitios web se pudieron clasificar en estas categorías a excepción de los dos

pertenecientes al apartado “Otras fuentes gubernamentales” (ver tabla 6) que tienen

un comportamiento distintivo y propio.

Figura 7. Esquema de página con contenedores, diseño propio

Figura 9. Esquema de página con patrones en la url, diseño propio

Figura 8. Esquema de página con enlaces a perfiles, diseño propio

Page 27: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.1.2.2 Identificación de elementos HTML de interés

El lenguaje XPATH permite acceder a secciones específicas de un documento3

mediante el uso de atributos de estilo como la clase o el id; algunos complementos

para los navegadores facilitan la edición o construcción de las expresiones XPATH,

como por ejemplo Firepath4 para Firefox o XPath Helper para Chrome. Dado que

para cada sitio la estructura es variable, en el anexo 4 se muestra un análisis

estructural que se realizó para cada uno.

8.1.2.3 Diseño del web Crawler

Con base en la clasificación de los servicios de SOA (Service Oriented Architecture)

[41] se plantean los servicios de tarea, entidad y utilidad. Los servicios de tarea

están alineados con el proceso de negocio, en este caso corresponde al análisis del

sitio web, los servicios de entidad tienen una dinámica y comportamientos

independientes y según los resultados de la tarea de ingeniería 1 TI1 se propone un

servicio de entidad para cada tipo de página adicionando el sitio web del SIGEP y

el repositorio de hojas de vida de la presidencia de la república fuentes 99 y 100 de

la tabla 6; finalmente los servicios de utilidad tienen naturaleza genérica y son de

fácil reutilización, en este caso son transversales a la extracción de información de

los sitios. El esquema con la clasificación de los tipos de servicios descritos

anteriormente se muestra en la figura 10.

Figura 10. Clasificación de servicios del crawler, fuente propia

3 https://www.w3.org/TR/1999/REC-xpath-19991116/

4 https://addons.mozilla.org/en-US/firefox/addon/firepath/

Page 28: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.1.2.4 Esquema de políticas de servicios

En la tabla 9 se visualiza el esquema de políticas o SLA (Service level

agreement)[41] donde se describe información de las entradas, salidas y

funcionalidad de cada uno de los servicios:

Nombre Descripción Entrada Salida

Tare

a

Extraer

información

de sitio web

Analiza la metadata del sitio web

y retorna la información de la/las

persona(s) que se encuentren en

formato JSON y sus respectivos

campos de auditoría.

Json con los

metadatos de la

página

Json con

información

encontrada, fecha

y hora del análisis.

En

tid

ad

En

tid

ad

Explotar

página de

estructura

sencilla

Obtiene la información de la

persona

Json con los

metadatos de la

página

Json con

información

encontrada

Explotar

página con

estructura de

contenedores

Obtiene la información de cada

perfil alojado en elementos como

<div>, <table>, <list>.

Json con los

metadatos de la

página, incluyendo

el elemento a iterar

Json con

información

encontrada

Explotar

página con

enlaces de

redirección a

perfiles.

Obtiene la información del perfil

alojado en cada una de las

páginas anidadas en formato

JSON

Json con los

metadatos de la

página

Json con

información

encontrada

Explotar

página con

patrones en

la url

Obtiene la información del perfil

alojado en cada una de las

páginas en formato JSON

JSON con los

metadatos de la

página, incluyendo

los límites superior

e inferior del patrón.

JSON con

información

encontrada

Explotar

SIGEP

Obtiene la información del perfil

del funcionario en formato JSON,

también permite búsqueda de

perfiles por nombre

JSON con los

metadatos de la

página, nombre (no

requerido)

JSON con

información

encontrada

Explotar

repositorio

HV

presidencia

Obtiene la información del perfil

del funcionario en formato JSON,

también permite búsqueda de

perfiles por nombre

JSON con los

metadatos de la

página, nombre (no

requerido)

JSON con

información

encontrada

Page 29: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Uti

lid

ad

Estado de

disponibilidad

de URL

Verifica si el enlace responde

correctamente a una petición http

URL 1 si está

disponible, 0 en

caso contrario

Identificar

elemento

HTML

Utilizando expresiones regulares

identifica si el elemento contiene

texto, imagen, enlace o es

desconocido.

Elemento HTML retorna en un

String el tipo de

dato que contiene

la etiqueta (text,

img, url)

Obtener

información

Obtiene el texto, fuente de la

imagen o enlace de un elemento

HTML.

XPATH del

elemento HTML

String con la

información

obtenida.

Generar

campos de

auditoría

Obtiene la fecha y hora en el

momento de la solicitud y los

retorna.

Ninguna String con fecha y

hora actual

Tabla 9. Esquema de políticas de servicios del web crawler, elaboración propia

8.1.2.5 Elección de herramienta para extraer información

En la tabla 10 se consolidan las herramientas que podrían apoyar la extracción de

información de los sitios web y sus características a nivel general en cuanto a las

facilidades en navegación e interacción con el contenido.

Navegación Contenido

BeautifulSoup

Tipos de etiquetas, propiedades de clase y expresiones regulares

Descarga el contenido XML o HTML y se trabaja sobre este

Scrapy Etiquetas de estilo, expresiones regulares, XPATH

Se parte de una semilla (sitio web inicial) posteriormente se define a partir de selectores cual es la siguiente petición HTTP para continuar el ciclo de descarga de contenido.

Selenium

XPATH, etiquetas de estilo, id, clase, nombre del elemento, texto en los enlaces

Utiliza un driver de navegador y a través de este se pueden utilizar todas sus funcionalidades.

Tabla 10. Herramientas para extracción de información, elaboración propia

De las fuentes consolidadas en la Tabla 6, algunas requieren interacción con

componentes JavaScript como por ejemplo volver a la página anterior, acciones en

botones y ventanas emergentes; este tipo de acciones no es posible manejarlas con

el contenido estático HTML, Selenium permite automatizar estas interacciones en

el navegador utilizando un driver de navegador; los más comunes son: Edge[42],

Firefox[43], Chrome[44] y Safari[45]; estos mantienen un componente gráfico por lo

Page 30: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

tanto puede visualizarse todo el flujo de la interacción; sin embargo, para esta

implementación es preferible mantener este proceso en segundo plano, esto lo

permite el driver de PhantomJS[46] (navegador sin interfaz gráfica).

Se decide utilizar Selenium con PhantomJS como driver para la exploración de los

sitios web apoyándose cuando se requiera con Beautiful Soup para los elementos

estáticos.

8.1.2.6 Codificación de los componentes del web crawler

Se realiza la codificación de cada uno de los componentes que se definieron en la

arquitectura siguiendo los principios de la orientación a servicios utilizando el

lenguaje de programación Python.

8.1.2.6.1 Codificación de servicios de utilidad

La disponibilidad del enlace se verifica a partir de los códigos de estado HTTP

descritos en el anexo 5, en la tabla 11 se sintetiza cada tipo de respuesta, el primer

digito determina la clasificación general de la respuesta de la petición por ende este

servicio retornará 1 si la respuesta de la petición fue exitosa (2XX) y 0 en cualquier

otro caso.

Digito inicial Clasificación Tipo de

respuesta

1

Informativa (respuesta provisional que requiere aceptación del usuario)

1XX

2 Petición correcta 2XX 3 Redirección 3XX 4 Error del cliente 4XX 5 Error del servidor 5XX

Tabla 11. Códigos de estado HTTP, elaboración propia

En el momento de identificar los elementos HTML se utilizaron expresiones

regulares para identificar etiquetas de imagen, enlaces y texto, esto permite que al

momento de obtener la información se puedan extraer los atributos que

correspondan a partir del XPATH del elemento. En la tabla 12 se presenta un

ejemplo concreto del análisis e identificación de información.

Page 31: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Sitio Web

Nombre

HTML <td class="ms-cellstyle ms-vb2">Jonathan Malagón González</td>

XPATH .//td[3][text()]

REGEX ^.*text\(\)\]$

Foto

HTML <img src="/ImagenesContenido/ministro_JonathanMalagon_mini.JPG" alt="Ministro de Vivienda - Jonathan Malagón González">

XPATH .//td[2]/img

REGEX ^.*img$ Tabla 12.Estructura de elementos HTML de interés, elaboración propia

8.1.2.6.2 Codificación de servicios de entidad

El esquema de políticas de servicios de la tabla 9, brinda los lineamientos

fundamentales para estructurar cada uno de los servicios definidos, en las figuras

11 a 14 se muestra el pseudocódigo de cada uno; además surge un nuevo servicio

(ver figura 15) que es reutilizado para la extracción de los tipos de página de

contenedores, enlaces y enlaces con límites que recibe el driver como parámetro

adicional, esto último con el objetivo de brindar la sección específica que se va a

analizar.

Figura 11. Pseudocódigo para explotar página sencilla, diseño propio

Page 32: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 13. Pseudocódigo para explotar página de contenedores, diseño propio

Figura 14. Pseudocódigo para explotar página con enlaces, diseño propio

Figura 12. Pseudocódigo para explotar página con patrón numérico en la url, diseño propio

Page 33: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.1.2.7 Diseño de estructura de almacenamiento del sitio web

La información que se obtiene de la extracción es semiestructurada en formato

JSON (JavaScript Object Notation) y dado que MongoDB es una base de datos

orientada a documentos de tipo BSON (Binary JSON), es compatible y facilita el

almacenamiento de los datos que se obtienen de los sitios web.

Figura 15. Pseudocódigo para explotar subestructuras de la página, diseño propio

Figura 16. Diseño de almacenamiento de la página en MONGODB, diseño propio

Page 34: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.1.2.8 Diseño de estructura en REDIS

Redis se plantea como un complemento a las estructuras definidas en MongoDB, al

mantener en memoria los datos de mayor relevancia para facilitar las búsquedas y

procedimientos de explotación; para el manejo de enlaces (figura 17) se utilizan

valores de tipo HASH que permiten almacenar pares clave-valor o representar

objetos, en este caso el identificador es la url y los atributos permiten que se

identifique rápidamente cuáles son sus metadatos relacionados y en caso de que el

sitio haya sido explotado cual es el identificador de la versión de la página. Por otra

parte, para las personas (figura 19) se utilizan valores de tipo SET que son conjuntos

de elementos no repetidos que permiten identificar los sitios que tienen relación con

cada persona.

8.1.3 PRUEBAS DE ACEPTACIÓN

El resumen de las pruebas de aceptación para las historias de usuario se presenta

en la tabla 13, los detalles de cada una se pueden ver en el anexo 1.

N° de prueba N° Historia de usuario

Nombre de la prueba Estado

PA1 HU1 Funcionalidad de XPATH Aprobada

PA2 HU2 Obtener información de las fuentes de información

Aprobada

PA3 HU2 Tiempo límite de respuesta de cuatro minutos para la tarea de extracción

Rechazada

PA4 HU3 Almacenamiento completo de la información extraída en MongoDB

Aceptada

Tabla 13. Pruebas de aceptación, primera iteración

Figura 18. Diseño de estructura en Redis para enlaces de sitios web, diseño propio

Figura 17. Diseño de estructura en Redis para personas, diseño propio

Page 35: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

La prueba de aceptación número PA3 cumple con la salida esperada para los tipos

de página sencilla y de contenedores, sin embargo en los casos de enlaces y

patrones numéricos en la url el tiempo de respuesta es directamente proporcional a

la cantidad de enlaces que se deben analizar del sitio, de tal modo que el tiempo de

respuesta no es aceptable; por ende se crea una historia de usuario para codificar

nuevos servicios que permitan analizar estos dos tipos de página en un tiempo

razonable.

8.2 SEGUNDA ITERACIÓN

Esta iteración comprende la historia de usuario que surgió de la iteración anterior y

mejoras funcionales del web crawler.

8.2.1 HISTORIAS DE USUARIO

En la tabla 14 se describen las historias de usuario que se definieron para la

segunda iteración.

N° Nombre

historia de usuario

Descripción Estado

HU4 Codificación de servicios adicionales

Servicios alternativos que permitan explotar páginas de tipo enlaces y patrón numérico en la url optimizando el tiempo de respuesta.

Aprobada

HU5 Unificación de versiones de páginas

Componente que permita unificar la información de versiones del mismo sitio en diferente espacio de tiempo.

Aprobada

HU6

Ejecución de tareas programadas de extracción

Componente que permita la explotación de los diferentes sitios de forma automática y programada.

Aprobada

Tabla 14. Historias de usuario, segunda iteración

8.2.1.1 Codificación de servicios adicionales

Para los subsitios de la página de enlaces o de patrón numérico se realiza el análisis

y explotación proponiendo como alternativa guardar una nueva página sencilla con

estado 0 (Nuevo) para cada uno de estos. Como consecuencia se reduce

drásticamente el tiempo de espera en cada caso, permitiendo así que puedan ser

tratados de forma independiente.

8.2.1.2 Unificación de versiones de páginas

Cada uno de los sitios se actualiza con una frecuencia que se desconoce, sin

embargo, es necesario buscar cada cierto tiempo nueva información en el sitio

relacionada con los funcionarios, nuevos miembros o cambio de personal. Por lo

anterior se requieren controlar los cambios sin perder información previamente

Page 36: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

almacenada, con este objetivo se plantea la construcción de un servicio que permita

unificar las versiones de la página con cada nueva exploración.

8.2.1.3 Ejecución de tareas programadas

Dado el número de fuentes que se deben analizar, y el tiempo de respuesta, se

plantea la ejecución en paralelo para el análisis de los sitios utilizando tareas

programadas, considerando los recursos disponibles de memoria y procesamiento.

8.2.2 TAREAS DE INGENIERÍA

En la tabla 15 se encuentra el listado de tareas de ingeniería necesarias para la

segunda iteración, los detalles de cada tarea se encuentran en el anexo 2

Tarea Historia de

usuario Nombre Estado

TI8 HU4 Codificación de servicios alternativos para análisis y explotación

Aprobada

TI9 HU5 Análisis de similitud de texto Aprobada

TI10 HU5 Criterio de clasificación de contenido nuevo

Aprobada

TI11 HU5 Codificación de componente unificador de versiones

Aprobada

TI12 HU6 Codificación de componente para ejecución de tareas en paralelo

Aprobada

Tabla 15. Tareas de ingeniería, segunda iteración

8.2.2.1 Codificación de servicios alternativos para análisis y explotación

La información de entrada de las páginas de tipo enlaces y patrón numérico en la

URL es suficiente para crear por cada subsitio una nueva página de estructura

sencilla, así se almacenan los metadatos en MongoDB y el estado de nueva página

en Redis (ver figura 19).

Figura 19. Servicios alternativos de análisis y explotación, diseño propio

Page 37: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.2.2.2 Análisis de similitud de texto

Difflib es una librería para Python sin dependencias de sistema operativo que

permite analizar cadenas de texto mediante diferentes métodos [47]. En la tabla 16

se muestra el ejemplo de salida de cada uno de los métodos del componente, los

valores oscilan entre 0 y 1 donde 1 significa que las cadenas de texto son idénticas

y 0 que no tienen nada en común.

Cadena de entrada 1 Cadena de entrada 2 ratio real_quick

_ratio quick_ratio

Presidente Vicepresidente

0.83 0.83 0.83

Dr. Juan Guillermo Zuluaga Cardona

Juan Guillermo Zuluaga Cardona

0.9375 0.9375 0.937

5

Es profesora de cátedra de la Pontificia Universidad Javeriana y de la Universidad Externado de Colombia.

Es profesora de cátedra de la Universidad Externado de Colombia y de la Pontificia Universidad Javeriana.

0.61 1.0 1.0

Aeio eiou 0.75 1.0 0.75 Tabla 16. Análisis de similitud de texto, elaboración propia

El método ratio obtiene bloques de coincidencias en las cadenas de texto lo que

representa un alto costo de procesamiento, real_quick_ratio se basa en la

longitud de las cadenas de texto y halla un límite superior pero no analiza su

contenido, finalmente quick_ratio tiene un tiempo de respuesta inferior dado que

analiza bloques de las cadenas de texto con una segmentación ágil.

8.2.2.3 Criterio de clasificación de contenido nuevo

Se decide utilizar el método quick_ratio con umbral de 0.84 con base en pruebas

realizadas con ejemplos similares a los expuestos en la tabla 16, si es inferior a esta

medida se considera información nueva, de lo contrario significa que ya se cuenta

con esa información y se mantienen los datos previos.

8.2.2.4 Codificación de componente unificador de versiones

En la figura 20 se muestra la estructura del servicio que permite unificar dos

versiones de un sitio, utilizando el criterio definido en la tarea de ingeniería 10.

Page 38: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.2.2.5 Codificación de componente para ejecución de tareas en paralelo

Node.js facilita la ejecución de tareas en paralelo, dado que las tareas de análisis y

extracción están codificadas en Python, se requiere de:

• Child Process: Componente que permite ejecutar scripts y obtener la salida

utilizando spawn() [48].

• Cron: Permite programar las tareas especificando días, horas, minutos y

segundos [49].

• Async: Permite la ejecución en paralelo de las tareas [50].

8.2.3 PRUEBAS DE ACEPTACIÓN

El resumen de las pruebas de aceptación para las historias de usuario se presenta

en la tabla 17, los detalles de cada una se pueden ver en el anexo 2.

N° de prueba N° Historia de usuario

Nombre de la prueba Estado

PA5 HU4 Tiempo límite de respuesta de cuatro minutos para la tarea de extracción

Aprobada

PA6 HU5 Reconocimiento de diferencias significativas Aprobada

PA7 HU5 Unificación correcta de dos páginas Aprobada

PA8 HU6 Extracción en paralelo Aprobada

PA9 HU6 Configuración de tarea programada Aprobada Tabla 17. Pruebas de aceptación, segunda iteración

8.3 TERCERA ITERACIÓN

Esta iteración comprende la construcción e integración del entorno gráfico para el

web crawler que permita al usuario final realizar búsquedas y tenga la posibilidad

Figura 20. Pseudocódigo para unificar versiones, diseño propio

Page 39: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

de ver los resultados tanto en estructura JSON como el grafo con sus respectivos

nodos y relaciones.

8.3.1 HISTORIAS DE USUARIO

En la tabla 18 se describen las historias de usuario que se definieron para la tercera

iteración.

N° Nombre historia

de usuario Descripción Estado

HU7 Reestructuración de

la información

Diseño de estructura para representar la información resultante del crawler en un motor de base de datos orientado a grafos.

Aprobada

HU8 Diseño de vista

principal del sitio web

Definición de nombre, logo y vista principal del sitio web

Aprobada

HU9 Interfaz del web

Crawler Integración de búsqueda y visualización de resultados del crawler

Aprobada

HU10 Interfaz de

visualización del grafo

Visualización del grafo con funcionarios y entidades

Aprobada

HU11 Interfaces

informativas Se construyen e integran las interfaces de información adicional.

Aprobada

Tabla 18. Historias de usuario, tercera iteración

8.3.1.1 Reestructuración de la información

Se realiza un análisis de los objectos serializados JSON que da como resultado el

crawler con la información contenida del sitio web para identificar su

correspondencia estructural para la representación en Neo4j en nodos y relaciones;

el flujo del proceso de construcción se puede ver en la figura 21.

En primer lugar se identifican los atributos propios del funcionario dado que pueden

existir múltiples sitios con información relacionada se mantiene el nombre de la

fuente relacionado con cada atributo; posteriormente se verifica la existencia del

nodo en caso de que no se encuentre se crea y en caso contrario se actualizan los

atributos relacionados al nodo.

Luego se procede a actualizar la información académica y laboral (si se encuentra),

en caso de que la entidad no se especifique la información quedará relacionada con

una entidad de nombre “DESCONOCIDO” de lo contrario se verifica la existencia

de la entidad en la base de datos y se procederá con su creación en caso de que

no se encuentre.

Page 40: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 21. Flujo de creación de nodos y relaciones, diseño propio

8.3.1.2 Diseño de vista principal del sitio web

Dada la relevancia de la extracción de la información en el proyecto se decide

denominar al web crawler “Palliri”, palabra quechua que denomina a la persona

(habitualmente de género femenino) que se dedica a recolectar mineral de las rocas.

Se definen los elementos base para el diseño de la vista principal del sitio web:

• Logo, representación de herramienta de exploración y recolección, ver figura 22.

• Propósito, es importante evidenciar a primera vista la funcionalidad del sitio

web.

• Barra de navegación, debe permitir el acceso a todas las opciones de

navegación de forma sencilla.

• Acceso a información general del sitio, grupo de investigación, contacto.

Page 41: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 22. Logo Palliri, diseño propio

8.3.1.3 Interfaz del web Crawler

Se construyen los métodos de búsqueda de funcionarios y entidades

posteriormente se hace la respectiva integración en el sitio web donde se visualiza

la lista de resultados según los parámetros de la búsqueda y se puede observar y

descargar el resultado del crawler.

8.3.1.4 Interfaz de visualización del grafo

En primer lugar se define cual va a ser la herramienta de apoyo en la visualización

del grafo, posteriormente se hace la respectiva parametrización de la conexión a

Neo4j y los ajustes de integración con el sitio y de visualización necesarios.

8.3.1.5 Interfaces informativas

Se construyen e integran las interfaces graficas de contacto, información del grupo

de investigación, información del proyecto y funcionamiento del aplicativo.

8.3.2 TAREAS DE INGENIERÍA

En la tabla 19 se listan las tareas de ingeniería necesarias para la tercera iteración,

los detalles de cada una se encuentran en el anexo 3.

Tarea Historia de

usuario Nombre Estado

TI13 HU7 Diseño de estructura orientada a grafos Aprobada

TI14 HU7 Construcción de nodos y relaciones Aprobada

TI15 HU7 Elección de herramienta para visualización del grafo

Aprobada

TI16 HU8 Creación del esquema base del sitio web Aprobada

TI17 HU9 Creación de búsquedas por entidad y funcionario

Aprobada

TI18 HU9 Construcción de interfaz del crawler Aprobada

TI19 HU10 Construcción de interfaz del grafo Aprobada

TI20 HU10 Visualización de atributos en la relación Aprobada

TI21 HU10 Integración de resultados con el grafo Aprobada

TI22 HU11 Construcción de página web de contacto Aprobada

TI23 HU12 Construcción de página web con información del grupo

Aprobada

Tabla 19. Tareas de ingeniería, tercera iteración

Page 42: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.3.2.1 Diseño de estructura orientada a grafos

El diseño del modelo orientado a grafos requiere definir en primer lugar las

entidades en el grafo y sus atributos (ver tabla 20), por otra parte, las relaciones que

permitirán conectar las entidades se detallan en la tabla 21, es necesario especificar

el nodo de inicio y fin (nodo adyacente e incidente respectivamente), los atributos

propios de la relación permiten tener información adicional; el esquema general se

puede ver en la figura 23.

Nodo Atributos

Entidad (Entity) Nombre (identificador), fuente

Funcionario (Person) Nombre (identificador), información personal y perfil Tabla 20. Nodos del grafo, elaboración propia

Relación Nodo adyacente

Nodo incidente

Atributos

Trabajo en (WORK_IN)

Funcionario Entidad Fecha de inicio y fin, cargo, fuente

Estudió en (STUDY_IN)

Funcionario Entidad Nivel, estado, título recibido, fuente

Se postuló en (APPLY_TO)

Funcionario Entidad Cargo al que se postula, fecha de inicio y fin

Tabla 21. Relaciones del grafo, elaboración propia

Figura 23. Diseño inicial del grafo, diseño propio

8.3.2.2 Construcción de nodos y relaciones

Para las operaciones relacionadas con la base de datos se construyó un módulo

utilizando py2neo[51] con los métodos para la conexión, registro y consulta en Neo4j

usando como base el lenguaje Cypher con apoyo en las clausulas MERGE y

UNWIND, la primera evita la redundancia en la creación de los nodos y la segunda

permite iterar sobre un objeto para relacionar los atributos ya sea sobre el nodo o la

relación.

Page 43: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.3.2.3 Elección de herramienta para visualización del grafo

En la tabla 22 se sintetizan las herramientas que pueden utilizarse para visualizar

los grafos en Neo4j, y sus características principales.

Herramienta Funcionalidades en visualización de grafos Conexión

directa a Neo4j

Neovis.js[52]

Utiliza vis.js para personalizar propiedades de visualización de nodos y relaciones, este proyecto hace parte de los laboratorios de Neo4j[53]

SI

Popoto.js[54]

Basada en D3.js, permite integrar componentes de visualización como por ejemplo un panel de consultas en Cypher, la taxonomía de nodos, el grafo resultante, además, permite personalizar propiedades de diseño del grafo

SI

D3.js[55] Permite embeber visualización de grafos, requiere una estructura definida de nodos y relaciones

NO

Vis.js[56] Ofrece una variedad de posibilidades para dar estilo a los nodos, etiquetas, animación, color y agrupación de elementos

NO

Sigma.js[57]

Requiere datos en formato JSON o GEXF, permite una visualización básica pero de fácil extensión, facilita la manipulación del grafo y su ajuste en la vista

NO

Tabla 22. Herramientas de visualización de grafos, elaboración propia

Se decide utilizar Popoto.js como apoyo para la visualización del grafo dado que

permite integrar fácilmente componentes de interacción con los datos, es fácilmente

extensible y permite personalizar las propiedades de estilos del grafo.

La aplicación básica de Popoto.js tiene los componentes que se describen a

continuación y se visualizan en la figura 24.

1. Grafo: Se presentan los nodos y relaciones, permiten interacción para

expandir y contraer información.

2. Acciones: Permiten ajustar la visualización del grafo como por ejemplo:

centrar, ver en pantalla completa y ajustar etiquetas al tamaño de los nodos.

3. Taxonomía: Muestra los tipos de nodos presentes en el grafo.

4. Query: Cambia acorde a la interacción con el grafo y muestra la sentencia

Cypher que corresponda a la visualización actual del grafo.

5. Resultados: Muestra los atributos relacionados a los nodos que da como

resultado la visualización actual del grafo.

Page 44: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 24. Componentes Popoto.js: Grafo(1),Acciones(2),Taxonomía(3),Query(4),Resultados(5)[58]

8.3.2.4 Creación del esquema base del sitio web

Se decide utilizar Flask, un framework de Python que permite la creación de

aplicaciones web, para la visualización utiliza Jinja, un motor de plantillas

(templates) que facilita el manejo de los datos en la vista y además permite extender

o incluir otras plantillas para evitar la sobreescritura[59].

Siguiendo los lineamientos de diseño de Jinja[60] se construyen los siguientes

elementos para tener la base del sitio web (ver figura 25), cada uno se encuentra

en un archivo HTML independiente:

• Header, compuesto por el logo y descripción inicial, fijo en la parte superior.

• Navbar, tiene los elementos de navegación dentro del sitio web, se sitúa en

la parte lateral izquierda.

• Footer, contiene información general del sitio, se sitúa de manera estática en

la parte inferior.

Page 45: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 25. Vista principal Palliri, diseño propio

8.3.2.5 Creación de búsquedas por entidad y funcionario

Para agilizar las búsquedas por nombre de funcionario se extiende el módulo de

redis utilizado en el crawler para realizar búsquedas sobre la clave (Nombre de la

persona) y obtener los identificadores de las versiones de las páginas web que tiene

relacionadas.

Por otra parte la búsqueda por entidad se realiza apoyándose en el componente de

consulta de MongoDB.

8.3.2.6 Construcción de interfaz del crawler

Se integra la búsqueda por funcionario y entidad para listar los resultados (ver figura

26) y posteriormente mostrar el JSON que se obtiene del crawler, dando la

posibilidad de realizar una nueva búsqueda y descargar los resultados para facilitar

la reutilización de esta información, ver figura 27.

Figura 26. Búsqueda y lista de resultados, diseño propio

Page 46: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 27. Visualización de resultados del crawler, diseño propio

8.3.2.7 Construcción de interfaz del grafo

Se realiza la parametrización de Popoto.js con los parámetros que se muestran en

la tabla 23.

Parametro Valor

CYPHER_URL Url usada por el API REST de Neo4j para ejecutar queries

AUTHORIZATION Codificación Base64 del usuario y contraseña de Neo4j

node.Provider

Se provee información de los nodos que se van a visualizar en el grafo.

link.Provider Se personalizan los colores y textos a mostrar en las relaciones

Page 47: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Tabla 23. Configuración Popoto.js, fuente propia

Figura 28. Vista inicial del grafo, fuente propia

Page 48: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

La librería provee la facilidad de especificar los atributos que se van a visualizar en

los nodos, pero dado que para este caso los atributos son variables se construye un

método en JavaScript para extender los resultados y permitir la visualización

dinámica de los atributos de los nodos, además se modifica la estructura de

visualización de los resultados como se muestra en la figura 29.

Figura 29. Visualización de resultados, fuente propia

8.3.2.8 Visualización de atributos en la relación

Se construye una modal con los atributos y se posiciona acorde a las coordenadas

de la relación para facilitar su visualización, ver figura 30.

Figura 30. Visualización de atributos en la relación, fuente propia

Page 49: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

8.3.2.9 Integración de resultados con el grafo

Se integra la posibilidad de ver los resultados de la búsqueda para funcionarios en

el grafo manteniendo la opción de ver los resultados del crawler de tal manera que

el grafo se inicialice con la persona seleccionada, ver figura 31.

Figura 31. Opciones de visualización de resultados, fuente propia

8.3.2.10 Construcción de página web de contacto

Se crea un formulario que permite enviar un mensaje a los creadores del proyecto

con el correo electrónico de la persona interesada, el nombre y motivo de contacto

o mensaje (ver figura 32)

Figura 32. Página web de contacto, diseño propio

8.3.2.11 Construcción de página web con información del grupo

Esta página web contiene una reseña histórica del grupo de investigación tomada

de la página oficial del grupo, las áreas de investigación y los participantes del

proyecto, ver figura 33.

Page 50: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 33. Página web de información del grupo, diseño propio

8.3.3 PRUEBAS DE ACEPTACIÓN

Las pruebas de aceptación correspondientes a las historias de usuario de la tercera

iteración se resumen en la tabla 24 y sus detalles pueden revisarse en el anexo 3

N° de prueba N° Historia de usuario

Nombre de la prueba Estado

PA10 HU7 Automatización de registro de información en Neo4j

Aprobada

PA11 HU7 Nodos y relaciones sin información redundante

Aprobada

PA12 HU8 Integración de las plantillas para la base de la vista principal

Aprobada

PA13 HU9 Búsqueda por nombre de funcionario y entidad

Aprobada

PA14 HU9 Descarga y consulta de resultados del crawler

Aprobada

PA15 HU10 Visualización de nodos y relaciones Aprobada

PA16 HU10 Visualización de atributos de los nodos Aprobada

PA17 HU11 El formulario de contacto envía el mensaje Aprobada Tabla 24. Pruebas de aceptación, tercera iteración

8.4 ARQUITECTURA DEL SISTEMA

La figura 34 corresponde a la arquitectura cliente-servidor en 3 capas del proyecto,

cada una se describe a continuación:

• La capa de datos consta de las instancias de las bases de datos: a) Redis, que

sirve de índice para los funcionarios y los sitios web; b) MongoDB, que contiene

los resultados de la extracción de cada uno de los sitios web y c) Neo4j que

Page 51: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

almacena los nodos y relaciones correspondientes a entidades y funcionarios

resultantes en la extracción.

• La capa de proceso se compone de: a) Crawler que extrae información

académica y laboral de los sitios fuente; b) Servicio en NodeJS que permite

ejecutar de manera programada la tarea del crawler y c) el servicio de la

aplicación en Flask que se encarga de realizar las consultas necesarias para

obtener la información resultante del crawler.

• La capa de presentación contiene los flujos de interacción entre el usuario y el

aplicativo por medio de las interfaces de usuario.

Figura 34. Arquitectura del proyecto, fuente propia

9. RESULTADOS

En este apartado se consolidan y explican a grandes rasgos los componentes del

proyecto Palliri y los aspectos más importantes del proyecto. En primer lugar se

analizaron 100 fuentes de información y se clasificaron en las tres ramas del poder

público en Colombia y otras fuentes gubernamentales, su distribución se puede

evidenciar en la tabla 25 y la figura 34.

A pesar de que el apartado de otras fuentes gubernamentales solo cuenta con un

2%, se trata de repositorios de hojas de vida que aportaron un número significativo

en la cantidad de funcionarios públicos a diferencia de las demás fuentes que en su

mayoría contenían perfiles independientes o directorios de funcionarios de cada

entidad.

Page 52: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

Figura 35. Clasificación de fuentes de información, fuente propia

Fuente de información Conteo

Otras Fuentes gubernamentales 2

Rama ejecutiva 81

Rama legislativa y judicial 17

Total 100

Tabla 25. Distribución de fuentes de información, fuente propia

En la figura 36 se presenta el diagrama de componentes del proyecto, cada uno se

describe brevemente a continuación.

Figura 36. Diagrama de componentes Palliri, fuente propia

• Navegador web: Es el medio por el cual el usuario final va a tener acceso al

aplicativo.

• Servidor de aplicaciones: Contiene y sirve la aplicación web usando el framework

Flask.

2%

81%

17% Otras Fuentesgubernamentales

Rama ejecutiva

Rama legislativa yjudicial

Page 53: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

▪ Python: Submódulos para la consulta de información, codificación de los

resultados y envío de emails.

▪ PopotoJS: Librería de javascript que permite la consulta a Neo4j mediante la

transformación de queries de grafo a Cypher y su respectiva visualización.

• Almacenamiento:

▪ Redis: Contiene dos índices, uno que permite la identificación y clasificación

de los sitios web y otro con los funcionarios públicos y su relación con la

información extraída de los sitios.

▪ MongoDB: Contiene dos colecciones, en primera instancia la estructura o

metadatos de cada una de las fuentes de información y por otra parte el

contenido resultante de la extracción o versionamiento de las páginas.

▪ Neo4j: Contiene la estructura tipo grafo de cada uno de los funcionarios

hallados por el crawler con sus respectivas relaciones académicas y

laborales.

• Crawler:

▪ Python: Consta de los submódulos que permiten la inicialización con los

metadatos de los sitios fuente, la extracción de los diferentes tipos de sitios

web, la unificación de versiones y la reestructuración del JSON resultante del

crawler a nodos y relaciones en Neo4j.

▪ NodeJS: Permite la programación y ejecución de la tarea de explotación de

los sitios web, a partir del índice de sitios web de Redis.

10. TRABAJO FUTURO

En este proyecto las propiedades HTML como identificadores y atributos de clase

tienen un papel fundamental para la identificación de los elementos y dado que los

sitios fuente pueden tener actualización en estilo y diseño en la presentación de la

información se propone que una extensión para la administración de los metadatos

le daría sostenimiento y robustez al proyecto.

Es posible extender las búsquedas a redes sociales u otros sitios no

gubernamentales a partir de los resultados que se obtienen actualmente con el

crawler.

Algunas de las fuentes cuentan únicamente con una breve reseña, esta información

no se encuentra estructurada y por lo tanto tiene un uso limitado, podrían utilizarse

técnicas propias de lenguaje natural para procesar el texto y obtener nuevos nodos

y relaciones para asociados a los funcionarios.

Page 54: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

11. CONCLUSIONES

El rendimiento del crawler es dependiente de la conexión a internet y ancho de

banda, dado que el proceso de extracción requiere acceso a los sitios fuente y

descarga de información.

La actualización de los sitios facilita la extensión de la información y gracias al

manejo de versiones es posible mantener los datos previos sin afectar la

consistencia en la base de datos en las próximas extracciones.

La representación de la información en el grafo brinda información de interés sobre

entidades académicas y laborales relacionadas con los funcionarios públicos en

Colombia, esta información podría ser reutilizada en otras áreas de conocimiento

para un mejor análisis.

Dado que la representación en el grafo acepta atributos de forma variable es posible

agregar nuevos sitios fuente realizando el análisis de los metadatos y registrándolos

en la colección de MongoDB.

Es posible utilizar diferentes motores de bases de datos dando provecho a las

características que poseen siempre y cuando se tenga claridad de la necesidad

funcional que pueden suplir.

Las bases de datos en memoria mejoran el desempeño y permiten que las consultas

realizadas en la capa de presentación sean más rápidas y a su vez que el usuario

final tenga una mejor experiencia con la aplicación.

12. REFERENCIAS

[1] J. David, “Una aproximación a la cultura política colombiana desde el debate,” Rev. Fac. Derecho y Ciencias Políticas., vol. 42, no. 117, pp. 393–424, 2012.

[2] M. C. Herrera, A. Pinilla Díaz, R. Infante Acevedo, and C. Díaz Soler, La construcción de cultura política en Colombia: proyectos hegemónicos y resistencias culturales. 2005.

[3] P. Santana Rodríguez, “Opinión pública,culturas políticas y democracia,” 1998, Bogotá, pp. 83–93, Sep-2014.

[4] M. Peshave, “HOW SEARCH ENGINES WORK AND A WEB CRAWLER APPLICATION Advisor : Kamyar Dezhgosha University of Illinois at Springfield.”

[5] S. F. University, “Web Crawling,” 2016.

[6] A. Copestack, “Natural Language Processing,” Nat. Lang. Process., pp. 2003–2004, 2004.

Page 55: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

[7] D. Chopra, N. Joshi, and I. Mathur, Mastering Natural Language Processing with Python. .

[8] H. K. Sumanaweera, “Natural language processing applications,” 1997. [Online]. Available: http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol1/hks/. [Accessed: 20-Jul-2002].

[9] G. Hirst, E. Hovy, and M. Johnson, Theory and Applications of Natural Language Processing. .

[10] A. Fowler, NoSQL for dummies. 2015.

[11] S. Tiwari, Professional NoSQL. 2011.

[12] G. Vaish, Getting Started with NoSQL, no. March. 2013.

[13] Mongodb, “NoSQL databases explained.” [Online]. Available: https://www.mongodb.com/nosql-explained.

[14] R. Van Bruggen, Learning Neo4j. 2014.

[15] M. Viera, “Empezando con Mongo,” 2013. [Online]. Available: http://mviera.io/blog/empezando-con-mongodb/.

[16] Redislab, “Introduction to Redis.” [Online]. Available: https://redis.io/topics/introduction.

[17] “Manifesto for Agile Software Development,” 2001. .

[18] D. Wells, “Extreme Programming: A gentle introduction,” 2013. .

[19] P. Letelier and M. C. Penadés, “Métodologías ágiles para el desarrollo de software: eXtreme Programming (XP).” Valencia, 2006.

[20] G. Schmutz, P. Welkenbach, and D. Liebhart, Service-Oriented Architecture : An Integration Blueprint. 2010.

[21] B. Portier, “SOA terminology overview , Part 1 : Service , architecture , governance , and business terms,” vol. 2007, pp. 1–12, 2007.

[22] L. Richardson, “BeautifulSoup.” [Online]. Available: https://www.crummy.com/software/BeautifulSoup/.

[23] S. Developers, “Scrapy.” [Online]. Available: https://doc.scrapy.org/en/1.3/intro/overview.html.

[24] LASILLAVACIA.COM, “Llega el Quién es Quién en versión gráfica,” 2014. .

[25] LASILLAVACIA.COM, “Quién es quién, la silla vacía.” .

[26] E. Aaron, “Graph-Politics,” 2016. .

[27] X. Li, “The Design and Implementation of an Internet Public Opinion Monitoring and Analyzing System,” pp. 176–180, 2013.

Page 56: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

[28] S. Gupta, Anangpuria institute of education, and M. D. University, “Design of focused crawler based on feature extraction,classification and term extraction,” pp. 3430–3434, 2016.

[29] S. Yang, “Expert Systems with Applications OntoCrawler : A focused crawler with ontology-supported website models for information agents,” Expert Syst. Appl., vol. 37, no. 7, pp. 5381–5389, 2010.

[30] S. Yang, “Expert Systems with Applications OntoPortal : An ontology-supported portal architecture with linguistically enhanced and focused crawler technologies,” Expert Syst. Appl., vol. 36, no. 6, pp. 10148–10157, 2009.

[31] A. Rungsawang and N. Angkawattanawit, “Learnable topic-specific web crawler,” vol. 28, pp. 97–114, 2005.

[32] A. Kapoor, “Application of bloom filter for duplicate URL detection in a web crawler,” 2016.

[33] L. Zhang, Z. Bu, Z. Wu, and J. Cao, “DGWC : Distributed and Generic Web Crawler for Online Information Extraction.”

[34] T. Suebchua, A. Rungsawang, and H. Yamana, “Adaptive Focused Website Segment Crawler,” pp. 3–4, 2016.

[35] A. Malathi, “Analysis and Visualization of Social Media Networks,” pp. 58–63, 2016.

[36] M. Maruyama, D. D. Suthers, and S. P. Robertson, “Characterizing Communication Networks Associated with Political Hashtags,” pp. 1546–1555, 2014.

[37] K. Lee and M. Shan, “Discovering Political Tendency in Bulletin Board Discussions by Social Community Analysis Department of Computer Science National Chengchi University,” pp. 1–5, 2009.

[38] S. Gabriel, G. Universidad, and D. B. Aires, “Aplicación del analisis de redes sociales al estudio de la estructura y desarrollo de una red de blogs económicos políticos en Argentina,” vol. 14, pp. 1–19, 2008.

[39] B. Patrut and M. Patrut, Social Media in Politics. 2014.

[40] D. R. Velandia and Y. D. Ramos, “Prototipo de herramienta de software que permite realizar minería de opinión en español utilizando un motor de bases de datos no relacional.,” 2017.

[41] E. Thomas, Service Oriented Architecture. 2016.

[42] “Microsoft Edge, Web Driver.” [Online]. Available: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/.

[43] Mozilla, “Geckodriver, Firefox web driver.”

[44] “ChromeDriver - WebDriver for Chrome.” [Online]. Available:

Page 57: PROTOTIPO DE APLICACIÓN PARA LA VISUALIZACIÓN DE ...repository.udistrital.edu.co/bitstream/11349/25520/1/MalagonTavera… · DE FUNCIONARIOS PÚBLICOS UTILIZANDO UN MOTOR DE BASES

https://sites.google.com/a/chromium.org/chromedriver/downloads.

[45] B. Burg, “Safari, Web driver.” [Online]. Available: https://webkit.org/blog/6900/webdriver-support-in-safari-10/.

[46] “PhantomJS - Scriptable Headless Browser.” [Online]. Available: https://phantomjs.org/.

[47] pyp, “Difflib,” 2018.

[48] npm, “Child Process,” 2018. .

[49] npm, “Node Cron,” 2018. .

[50] npm, “Async,” 2018.

[51] N. Small, “Py2neo.” [Online]. Available: https://py2neo.org/v4/.

[52] W. Lyon, “Graph visualization whith Neovis.j.” [Online]. Available: https://medium.com/neo4j/graph-visualization-with-neo4j-using-neovis-js-a2ecaaa7c379.

[53] Neo4j, “Neo4j Labs.” [Online]. Available: https://neo4j.com/labs/.

[54] N. Interactive, “Popoto.js.” [Online]. Available: http://www.popotojs.com/.

[55] M. Bostock, “D3.js.” [Online]. Available: https://d3js.org/.

[56] “Vis.js.” [Online]. Available: https://visjs.github.io/vis-network/docs/network/.

[57] A. Jacomy, “Sigmajs.”

[58] N. Interactive, “Popoto wiki.” [Online]. Available: https://github.com/Nhogs/popoto/wiki.

[59] A. Ronacher, “Flask.” [Online]. Available: https://flask.palletsprojects.com/en/1.1.x/.

[60] D. Gaspar and J. Stouffer, Mastering Flask Web Development. 2018.