PROTOTIPO DE HERRAMIENTA DE SOFTWARE...

164
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 DANIEL RUIZ VELANDIA 20111020084 YOHANA DELGADO RAMOS 20101020028 PROGRAMA DE INGENIERÍA DE SISTEMAS FACULTAD DE INGENIERÍA UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS BOGOTÁD.C, 2017

Transcript of PROTOTIPO DE HERRAMIENTA DE SOFTWARE...

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

DANIEL RUIZ VELANDIA 20111020084 YOHANA DELGADO RAMOS 20101020028

PROGRAMA DE INGENIERÍA DE SISTEMAS FACULTAD DE INGENIERÍA

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS BOGOTÁ D.C, 2017

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

DANIEL RUIZ VELANDIA 20111020084 YOHANA DELGADO RAMOS 20101020028

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

Director: SONIA ORDOÑEZ SALINAS Ph.D.

PROGRAMA DE INGENIERÍA DE SISTEMAS FACULTAD DE INGENIERÍA

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS BOGOTÁ D.C, 2017

A mis padres, amigos y familiares quienes me apoyaron durante la carrera universitaria

Yohana Delgado

A mi madre

Daniel Ruiz

AGRADECIMIENTOS

A nuestra directora de tesis la ingeniera Sonia Ordoñez Salinas por el tiempo, conocimiento y enseñanzas brindadas durante el transcurso del desarrollo del proyecto, sin ellos no hubiese sido posible culminar con éxito el desarrollo de la herramienta.

A nuestros profesores de la Universidad Distrital que gracias a su apoyo y enseñanzas pudimos adquirir los conocimientos necesarios para el desarrollo del proyecto.

A nuestros amigos quienes se convirtieron en nuestra segunda familia dentro de la Universidad y con quienes compartimos nuestro tiempo de estudio.

A nuestras familias quienes nos apoyaron durante toda nuestra vida universitaria.

TABLA DE CONTENIDO 1 INTRODUCCIÓN .............................................................................................. 1 2 PLANTEAMIENTO DEL PROBLEMA ............................................................... 2 3 MARCO TEÓRICO Y REFERENCIAL .............................................................. 3

3.1 MARCO TEÓRICO ..................................................................................... 3 3.1.1 Lingüística ............................................................................................ 3 3.1.2 Lenguaje natural................................................................................... 3 3.1.3 Procesamiento de lenguaje natural ...................................................... 5 3.1.4 Análisis de sentimientos ....................................................................... 6 3.1.5 Recursos Lingüísticos .......................................................................... 6 3.1.6 Twitter .................................................................................................. 7 3.1.7 Wordnet ................................................................................................ 9 3.1.8 Python .................................................................................................. 9 3.1.9 JavaScript .......................................................................................... 10 3.1.10 Node.js ............................................................................................ 10 3.1.11 Express ........................................................................................... 10 3.1.12 Modelos de desarrollo de software ................................................. 11 3.1.13 Extreme Programming (XP) ............................................................ 11 3.1.14 Bases de datos No relacionales ...................................................... 13

3.2 MARCO REFERENCIAL .......................................................................... 15 3.2.1 Sentiment viz -Tweet Sentiment Visualization .................................... 16 3.2.2 Linguakit ............................................................................................. 17 3.2.3 Twitrratr .............................................................................................. 18 3.2.4 Twendz ............................................................................................... 19 3.2.5 Socialmention ..................................................................................... 20

4 OBJETIVOS .................................................................................................... 22 4.1 GENERAL ................................................................................................. 22 4.2 ESPECÍFICOS .......................................................................................... 22

5 ALCANCES Y LIMITACIONES ....................................................................... 23 5.1 ALCANCES .............................................................................................. 23 5.2 LIMITACIONES ........................................................................................ 23

6 METODOLOGÍA .............................................................................................. 24 6.1 ARTEFACTOS A GENERAR .................................................................... 24

7 DESARROLLO DE LA PROPUESTA ............................................................. 27 7.1 ARQUITECTURA DEL SISTEMA ............................................................. 27

7.1.1 Capa de Presentación ........................................................................ 28 7.1.2 Capa de Proceso................................................................................ 28 7.1.3 Capa de Datos ................................................................................... 29

7.2 DESARROLLO METODOLÓGICO ........................................................... 30 7.2.1 Definición de Roles ............................................................................ 30 7.2.2 Definición de Usuarios ....................................................................... 30 7.2.3 Primera Iteración ................................................................................ 33 7.2.4 Segunda Iteración .............................................................................. 37 7.2.5 Tercera Iteración ................................................................................ 39 7.2.6 Cuarta Iteración .................................................................................. 42 7.2.7 Quinta Iteración .................................................................................. 47

7.3 FUNCIONAMIENTO DE LA HERRAMIENTA ........................................... 53 7.3.1 Diagramas de actividades .................................................................. 53 7.3.2 Diagramas de secuencia .................................................................... 56

7.4 MODELO DE DATOS ............................................................................... 61 7.4.1 Redis .................................................................................................. 61 7.4.2 Mongo ................................................................................................ 61

8 EXPERIMENTACIÓN ...................................................................................... 63 8.1 COLECCIÓN DE PRUEBA ....................................................................... 63 8.2 PRE-PROCESAMIENTO .......................................................................... 64 8.3 ASIGNACIÓN DE POLARIDAD ................................................................ 65 8.4 ASIGNACIÓN DE FAVORABILIDAD ........................................................ 66 8.5 PRUEBAS Y RESULTADOS .................................................................... 68 8.6 PRUEBAS DE RENDIMIENTO ................................................................. 71

9 TRABAJO FUTURO ........................................................................................ 74 10 CONCLUSIONES ............................................................................................ 75 11 BIBLIOGRAFÍA ............................................................................................... 76 12 ANEXOS ......................................................................................................... 79

LISTA DE FIGURAS

Figura No 1. Ejemplo de visualización de Sentiment viz (Healey & Ramaswamy, 2013) . 17 Figura No 2. Ejemplo de visualización de Linguakit (CILENIS SL) .................................. 18 Figura No 3. Ejemplo de visualización de Twitrratr (Twtbase) .......................................... 18 Figura No 4. Ejemplo de visualización de Twendz (Krasnoff, 2009) ................................. 19 Figura No 5. Ejemplo de visualización de socialmention (socialmention) .......................... 21 Figura No 6. Modelo de arquitectura en tres capas (Diseño propio) ................................... 27 Figura No 7. Diagrama Arquitectural de la herramienta (Diseño propio) ........................... 29 Figura No 8. Ejemplo de la lista de Stopwords (Diseño propio) ......................................... 34 Figura No 9. Ejemplo del lexicón Galeras (Diseño propio) ................................................. 34 Figura No 10. Ejemplo del archivo de descarga .................................................................. 35 Figura No 11. Ejemplo del archivo después de la adecuación y estandarización ................ 35 Figura No 12. Ejemplo del archivo de separación de Tweets en frases ............................... 35 Figura No 13. Ejemplo del archivo de reemplazo de palabras por símbolos ....................... 36 Figura No 14. Ejemplo procesamiento de Tweets (Diseño propio) ..................................... 36 Figura No 15. Ejemplo de adecuación de palabras del Tweet (Diseño propio) ................... 38 Figura No 16. Ejemplo del archivo de asignación de favorabilidad a las frases ................. 40 Figura No 17. Ejemplo resolución de expresiones comunes y asignación de valor de favorabilidad. (Diseño propio) ............................................................................................. 41 Figura No 18. Interfaz de análisis ........................................................................................ 44 Figura No 19. Interfaz de resultados del análisis ................................................................. 44 Figura No 20. Interfaz del historial conjunto de los Hashtags analizados .......................... 45 Figura No 21. Interfaz del historial de análisis anteriores ................................................... 45 Figura No 22. Interfaz de edición del número máximo de Tweets a descargar ................... 46 Figura No 23. Interfaz del menú de gestión de las claves del API de Twitter ..................... 46 Figura No 24. Interfaz de creación de claves del API de Twitter ........................................ 46 Figura No 25. Interfaz de actualización de contraseña ........................................................ 47 Figura No 26. Interfaz de consulta de tendencias de países de habla hispana ..................... 49 Figura No 27. Interfaz de gestión de usuarios para el administrador general ...................... 49 Figura No 28. Interfaz de creación de un nuevo usuario ..................................................... 50 Figura No 29. Interfaz de creación de nuevas versiones del lexicón ................................... 50 Figura No 30. Interfaz de la lista de palabras de la versión del lexicón .............................. 51 Figura No 31. Interfaz para agregar nuevas palabras a la versión del lexicón..................... 51 Figura No 32. Interfaz de actualización de recursos léxicos ................................................ 52 Figura No 33. Listado de Hashtags más analizados ............................................................ 52 Figura No 34. Número de análisis realizados por la aplicación ........................................... 52 Figura No 35. Diagrama de actividades N° 1 (Diseño propio) ............................................ 56 Figura No 36. Diagrama de secuencia N° 1 (Diseño propio) .............................................. 59 Figura No 37. Diagrama de secuencia N° 2 (Diseño propio) .............................................. 60 Figura No 38. Modelo de datos de Redis (Diseño propio) .................................................. 61 Figura No 39. Modelo de Datos de MongoDB (Diseño propio) ......................................... 62 Figura No 40. Ejemplo No 1 compuerta lógica (Diseño propio) ......................................... 70 Figura No 41. Ejemplo No 2 compuerta lógica (Diseño propio) ......................................... 71 Figura No 42. Tiempo de análisis para uno y tres Hashtags (Diseño propio) ..................... 73

Figura No 43. Diagrama de actividades N° 2 (Diseño propio) .......................................... 112 Figura No 44. Diagrama de actividades N° 3 (Diseño propio) .......................................... 113 Figura No 45. Diagrama de actividades N° 4 (Diseño propio) .......................................... 113 Figura No 46. Diagrama de actividades N° 5 (Diseño propio) .......................................... 114 Figura No 47. Diagrama de actividades N° 6 (Diseño propio) .......................................... 114 Figura No 48. Diagrama de actividades N° 7 (Diseño propio) .......................................... 115 Figura No 49. Diagrama de actividades N° 8 (Diseño Propio) .......................................... 115 Figura No 50. Diagrama de actividades N° 9 (Diseño propio) .......................................... 116 Figura No 51. Diagrama de actividades N° 10 (Diseño propio) ........................................ 116 Figura No 52. Diagrama de actividades N° 11 (Diseño propio) ........................................ 117 Figura No 53. Diagrama de actividades N° 12 (Diseño propio) ........................................ 117 Figura No 54. Diagrama de actividades N° 13 (Diseño propio) ........................................ 118 Figura No 55. Diagrama de secuencia N° 3 (Diseño propio) ............................................ 119 Figura No 56. Diagrama de secuencia N° 4 (Diseño propio) ............................................ 119 Figura No 57. Diagrama de secuencia N° 5 (Diseño propio) ............................................ 120 Figura No 58. Diagrama de secuencia N° 6 (Diseño propio) ............................................ 121 Figura No 59. Diagrama de secuencia N° 7 (Diseño propio) ............................................ 121 Figura No 60. Diagrama de secuencia N° 8 (Diseño propio) ............................................ 122 Figura No 61. Diagrama de secuencia N° 9 (Diseño propio) ............................................ 122 Figura No 62. Diagrama de secuencia N° 10 (Diseño propio) .......................................... 123 Figura No 63. Diagrama de secuencia N° 11 (Diseño propio) .......................................... 123 Figura No 64. Diagrama de secuencia N° 12 (Diseño propio) .......................................... 124 Figura No 65. Diagrama de secuencia N° 13 (Diseño propio) .......................................... 124 Figura No 66. Diagrama de secuencia N° 14 (Diseño propio) .......................................... 125 Figura No 67. Diagrama de secuencia N° 15 (Diseño propio) .......................................... 125 Figura No 68. Diagrama de secuencia N° 16 (Diseño propio) .......................................... 126 Figura No 69. Diagrama de secuencia N° 17 (Diseño propio) .......................................... 126 Figura No 70. Diagrama de secuencia N° 18 (Diseño propio) .......................................... 127 Figura No 71. Diagrama de secuencia N° 19 (Diseño propio) .......................................... 127 Figura No 72. Diagrama de secuencia N° 20 (Diseño propio) .......................................... 128 Figura No 73. Resultado N° 1 eliminatoria Rusia 2018 .................................................... 131 Figura No 74. Resultado N° 1 eliminatoria Rusia 2018 .................................................... 131 Figura No 75. Resultado N° 1 juegos olímpicos 2016 ....................................................... 132 Figura No 76. Resultado N° 2 juegos olímpicos 2016 ....................................................... 132 Figura No 77. Resultado N° 3 juegos olímpicos 2016 ....................................................... 133 Figura No 78. Resultado plebiscito por la paz 2016 .......................................................... 133 Figura No 79. Resultado N° 1 vuelta a España 2 de septiembre del 2016 ......................... 133 Figura No 80. Resultado N° 2 vuelta a España 2 de septiembre del 2016 ......................... 134 Figura No 81. Resultado N° 3 vuelta a España 9 de septiembre del 2016 ......................... 134 Figura No 82. Resultado N° 4 vuelta a España 9 de septiembre del 2016 ......................... 134

LISTA DE TABLAS

Tabla No 1. Descripción de las fases de la metodología XP (Diseño propio) ..................... 24 Tabla No 2. Plantilla historia de usuario (Diseño propio) ................................................... 25 Tabla No 3. Plantilla tarea de ingeniería (Diseño propio) ................................................... 25 Tabla No 4. Plantilla caso de prueba (Diseño propio) ......................................................... 25 Tabla No 5. Plantilla tarjetas CRC (Diseño propio) ............................................................ 26 Tabla No 6. Roles para el desarrollo del proyecto (Diseño propio)..................................... 30 Tabla No 7. Usuarios (Diseño propio) ................................................................................. 30 Tabla No 8. Privilegios del administrador general (Diseño propio) .................................... 31 Tabla No 9. Privilegios del administrador lexicón (Diseño propio) .................................... 32 Tabla No 10. Privilegios del administrador (Diseño propio) ............................................... 32 Tabla No 11. Privilegios del usuario final (Diseño propio) ................................................. 32 Tabla No 12. Lista historias de usuario de la primera iteración (Diseño propio) ................ 33 Tabla No 13. Listado de tareas de ingeniería de la primera iteración (Diseño propio) ....... 34 Tabla No 14. Listado pruebas de aceptación de la primera iteración (Diseño propio) ........ 36 Tabla No 15. Lista historias de usuario de la segunda iteración (Diseño propio) ............... 37 Tabla No 16. Historia de usuario N° 8: Cancelada (Diseño propio) .................................... 37 Tabla No 17. Historia de usuario N° 9: Cancelada (Diseño propio) .................................... 37 Tabla No 18. Listado de tareas de ingeniería de la segunda iteración (Diseño propio) ....... 38 Tabla No 19. Listado pruebas de aceptación de la segunda iteración (Diseño propio) ....... 39 Tabla No 20. Lista historias de usuario de la tercera iteración (Diseño propio) .................. 39 Tabla No 21. Listado de tareas de ingeniería de la tercera iteración (Diseño propio) ......... 40 Tabla No 22. Listado pruebas de aceptación de la tercera iteración (Diseño propio) ......... 42 Tabla No 23. Lista historias de usuario de la cuarta iteración (Diseño propio) ................... 42 Tabla No 24. Listado de tareas de ingeniería de la cuarta iteración (Diseño propio). ......... 43 Tabla No 25. Listado pruebas de aceptación de la cuarta iteración (Diseño propio) ........... 47 Tabla No 26. Lista historias de usuario de la quinta iteración (Diseño propio)................... 48 Tabla No 27. Historia de usuario N° 18: Cancelada (Diseño propio) .................................. 48 Tabla No 28. Listado de tareas de ingeniería de la quinta iteración (Diseño propio) .......... 48 Tabla No 29. Listado pruebas de aceptación de la quinta iteración (Diseño propio) .......... 53 Tabla No 30. Cantidad de Tweets descargados por personaje (Diseño Propio)................... 64 Tabla No 31. Ejemplo implementación eliminar letras seguidas (Diseño propio) .............. 65 Tabla No 32. Reglas de adecuación del contenido de Tweets (Diseño propio) ................... 65 Tabla No 33. Reemplazo de símbolos (Diseño propio) ....................................................... 66 Tabla No 34. Métodos para la asignación de favorabilidad (Diseño propio) ...................... 67 Tabla No 35. Tabla de verdad de la compuerta lógica planteada (Diseño propio). ............. 67 Tabla No 36. Pruebas con jugadores de eliminatoria Rusia 2018 (Diseño propio) ............. 68 Tabla No 37. Pruebas con deportistas de los JJ. OO Rio 2016 (Diseño propio) ................. 68 Tabla No 38. Pruebas para el plebiscito por la paz octubre de 2016 (Diseño propio) ......... 69 Tabla No 39. Pruebas para vuelta a España 2 septiembre 2016 (Diseño propio) ................ 69 Tabla No 40. Pruebas para vuelta a España 9 septiembre 2016 (Diseño propio) ................ 69 Tabla No 41. Tiempo de análisis de un Hashtag con diferentes cantidades de Tweets (Diseño propio) .................................................................................................................................. 72

Tabla No 42. Tiempo de análisis de tres hashtags con diferentes cantidades de Tweets (Diseño propio) .................................................................................................................... 72 Tabla No 43. Reunión N° 1 (Diseño propio). ...................................................................... 79 Tabla No 44. Reunión N° 2 (Diseño propio). ...................................................................... 79 Tabla No 45. Reunión N° 3 (Diseño propio). ...................................................................... 79 Tabla No 46. Reunión N° 4 (Diseño propio). ...................................................................... 79 Tabla No 47. Reunión N° 6 (Diseño propio). ...................................................................... 80 Tabla No 48. Reunión N° 7 (Diseño propio). ...................................................................... 80 Tabla No 49. Reunión N° 8 (Diseño propio). ...................................................................... 80 Tabla No 50. Reunión N° 9 (Diseño propio). ...................................................................... 80 Tabla No 51. Reunión N° 10 (Diseño propio). .................................................................... 80 Tabla No 52. Tarjeta CRC N° 1 (Diseño propio) ................................................................ 81 Tabla No 53. Tarjeta CRC N° 2 (Diseño propio) ................................................................ 81 Tabla No 54. Tarjeta CRC N° 3 (Diseño propio) ................................................................ 81 Tabla No 55. Tarjeta CRC N° 4 (Diseño propio). ............................................................... 81 Tabla No 56. Tarjeta CRC N° 5 (Diseño propio) ................................................................ 81 Tabla No 57. Tarjeta CRC N° 6 (Diseño propio) ................................................................ 82 Tabla No 58. Historia de usuario N° 1 (Diseño propio) ...................................................... 82 Tabla No 59. Historia de usuario N° 2 (Diseño propio) ...................................................... 82 Tabla No 60. Historia de usuario N° 3 (Diseño propio) ...................................................... 83 Tabla No 61. Historia de usuario N° 4 (Diseño propio) ...................................................... 83 Tabla No 62. Historia de usuario N° 5 (Diseño propio) ...................................................... 83 Tabla No 63. Tarea de ingeniería N° 1 (Diseño propio) ...................................................... 83 Tabla No 64. Tarea de ingeniería N° 2 (Diseño propio) ...................................................... 84 Tabla No 65. Tarea de ingeniería N° 3 (Diseño propio) ...................................................... 84 Tabla No 66. Tarea de ingeniería N° 4 (Diseño propio) ...................................................... 84 Tabla No 67. Tarea de ingeniería N° 5 (Diseño propio) ...................................................... 84 Tabla No 68. Tarea de ingeniería N° 6 (Diseño propio) ...................................................... 85 Tabla No 69. Tarea de ingeniería N° 7 (Diseño propio) ...................................................... 85 Tabla No 70. Tarea de ingeniería N° 8 (Diseño propio) ...................................................... 85 Tabla No 71. Tarea de ingeniería N° 9 (Diseño propio) ...................................................... 85 Tabla No 72. Caso de prueba N° 1 (Diseño propio) ............................................................ 86 Tabla No 73. Caso de prueba N° 2 (Diseño propio) ............................................................ 86 Tabla No 74. Caso de prueba N° 3 (Diseño propio) ............................................................ 86 Tabla No 75. Caso de prueba N° 4 (Diseño propio) ............................................................ 87 Tabla No 76. Caso de prueba N° 5 (Diseño propio) ............................................................ 87 Tabla No 77. Historia de usuario N° 6 (Diseño propio) ...................................................... 87 Tabla No 78. Historia de usuario N° 7-1 (Diseño propio) ................................................... 88 Tabla No 79. Historia de usuario N° 7-2 (Diseño propio) ................................................... 88 Tabla No 80. Historia de usuario N° 8 (Diseño propio) ...................................................... 88 Tabla No 81. Historia de usuario N° 9 (Diseño propio) ...................................................... 89 Tabla No 82. Tarea de ingeniería N° 10 (Diseño propio) .................................................... 89 Tabla No 83. Tarea de ingeniería N° 11 (Diseño propio) .................................................... 89 Tabla No 84. Tarea de ingeniería N° 12 (Diseño propio) .................................................... 89 Tabla No 85. Tarea de ingeniería N° 13 (Diseño propio) .................................................... 90

Tabla No 86. Tarea de ingeniería N° 14-1 (Diseño propio) ................................................. 90 Tabla No 87. Tarea de ingeniería N° 14-2 (Diseño propio) ................................................. 90 Tabla No 88. Tarea de ingeniería N° 15 (Diseño propio) .................................................... 90 Tabla No 89. Caso de prueba N° 6 (Diseño propio) ............................................................ 91 Tabla No 90. Caso de prueba N° 7 (Diseño propio) ............................................................ 91 Tabla No 91. Historia de usuario N° 10 (Diseño propio) .................................................... 92 Tabla No 92. Historia de usuario N° 11 (Diseño propio) .................................................... 92 Tabla No 93. Tarea de ingeniería N° 16 (Diseño propio) .................................................... 93 Tabla No 94. Tarea de ingeniería N° 17 (Diseño propio) .................................................... 93 Tabla No 95. Tarea de ingeniería N° 18 (Diseño propio) .................................................... 93 Tabla No 96. Tarea de ingeniería N° 19 (Diseño propio) .................................................... 94 Tabla No 97. Tarea de ingeniería N° 20 (Diseño propio) .................................................... 94 Tabla No 98. Tarea de ingeniería N° 21 (Diseño propio) .................................................... 94 Tabla No 99. Tarea de ingeniería N° 22 (Diseño propio) .................................................... 95 Tabla No 100. Caso de prueba N° 8 (Diseño propio) .......................................................... 95 Tabla No 101. Caso de prueba N° 9 (Diseño propio) .......................................................... 95 Tabla No 102. Caso de prueba N° 10 (Diseño propio) ........................................................ 96 Tabla No 103. Historia de usuario N° 12 (Diseño propio) .................................................. 96 Tabla No 104. Historia de usuario N° 13 (Diseño propio) .................................................. 96 Tabla No 105. Historia de usuario N° 14 (Diseño propio) .................................................. 97 Tabla No 106. Historia de usuario N° 15 (Diseño propio) .................................................. 97 Tabla No 107. Tarea de ingeniería N° 23 (Diseño propio) .................................................. 97 Tabla No 108. Tarea de ingeniería N° 24 (Diseño propio) .................................................. 97 Tabla No 109. Tarea de ingeniería N° 25 (Diseño propio) .................................................. 98 Tabla No 110. Tarea de ingeniería N° 26 (Diseño propio) .................................................. 98 Tabla No 111. Tarea de ingeniería N° 27 (Diseño propio) .................................................. 98 Tabla No 112. Tarea de ingeniería N° 28 (Diseño propio) .................................................. 98 Tabla No 113. Tarea de ingeniería N° 29 (Diseño propio) .................................................. 98 Tabla No 114. Tarea de ingeniería N° 30 (Diseño propio) .................................................. 99 Tabla No 115. Tarea de ingeniería N° 31 (Diseño propio) .................................................. 99 Tabla No 116. Tarea de ingeniería N° 32 (Diseño propio) .................................................. 99 Tabla No 117. Tarea de ingeniería N° 33 (Diseño propio) .................................................. 99 Tabla No 118. Tarea de ingeniería N° 34 (Diseño propio) .................................................. 99 Tabla No 119. Tarea de ingeniería N° 35 (Diseño propio) ................................................ 100 Tabla No 120. Tarea de ingeniería N° 36 Diseño propio) ................................................. 100 Tabla No 121. Tarea de ingeniería N° 37 (Diseño propio) ................................................ 100 Tabla No 122. Tarea de ingeniería N° 38 (Diseño propio) ................................................ 100 Tabla No 123. Caso de prueba N° 11 (Diseño propio) ...................................................... 101 Tabla No 124. Caso de prueba N° 12 (Diseño propio) ...................................................... 101 Tabla No 125. Caso de prueba N° 13 (Diseño propio) ...................................................... 101 Tabla No 126. Caso de prueba N° 14 (Diseño propio) ...................................................... 102 Tabla No 127. Caso de prueba N° 15 (Diseño propio) ...................................................... 102 Tabla No 128. Caso de prueba N° 16 (Diseño propio) ...................................................... 102 Tabla No 129. Caso de prueba N° 17 (Diseño propio) ...................................................... 103 Tabla No 130. Caso de prueba N° 18 (Diseño propio) ...................................................... 103

Tabla No 131. Historia de usuario N° 16 (Diseño propio) ................................................ 103 Tabla No 132. Historia de usuario N° 17 (Diseño propio) ................................................ 104 Tabla No 133. Historia de usuario N° 18 (Diseño propio) ................................................ 104 Tabla No 134. Historia de usuario N° 19 (Diseño propio) ................................................ 104 Tabla No 135. Historia de usuario N° 20 (Diseño propio) ................................................ 104 Tabla No 136. Historia de usuario N° 21 (Diseño propio) ................................................ 105 Tabla No 137. Tarea de ingeniería N° 39 (Diseño propio) ................................................ 105 Tabla No 138. Tarea de ingeniería N° 40 (Diseño propio) ................................................ 105 Tabla No 139. Tarea de ingeniería N° 41 (Diseño propio) ................................................ 105 Tabla No 140. Tarea de ingeniería N° 42 (Diseño propio) ................................................ 106 Tabla No 141. Tarea de ingeniería N° 43 (Diseño propio) ................................................ 106 Tabla No 142. Tarea de ingeniería N° 44 (Diseño propio) ................................................ 106 Tabla No 143. Tarea de ingeniería N° 45 (Diseño propio) ................................................ 106 Tabla No 144. Tarea de ingeniería N° 46 (Diseño propio) ................................................ 106 Tabla No 145. Tarea de ingeniería N° 47 (Diseño propio) ................................................ 107 Tabla No 146. Tarea de ingeniería N° 48 (Diseño propio) ................................................ 107 Tabla No 147. Tarea de ingeniería N° 49 (Diseño propio) ................................................ 107 Tabla No 148. Tarea de ingeniería N° 50 (Diseño propio) ................................................ 107 Tabla No 149. Caso de prueba N° 19 (Diseño propio) ...................................................... 108 Tabla No 150. Caso de prueba N° 20 (Diseño propio) ...................................................... 108 Tabla No 151. Caso de prueba N° 21 (Diseño propio) ...................................................... 109 Tabla No 152. Caso de prueba N° 22 (Diseño propio) ...................................................... 109 Tabla No 153. Caso de prueba N° 23 (Diseño propio) ...................................................... 109 Tabla No 154. Caso de prueba N° 24 (Diseño propio) ...................................................... 110 Tabla No 155. Caso de prueba N° 25 (Diseño propio) ...................................................... 110 Tabla No 156. Caso de prueba N° 26 (Diseño propio) ...................................................... 110 Tabla No 157. Caso de prueba N° 27 (Diseño propio) ...................................................... 111 Tabla No 158. Caso de prueba N° 28 (Diseño propio) ...................................................... 111 Tabla No 159. Caso de prueba N° 29 (Diseño propio) ...................................................... 112 Tabla No 160. Colección N° 1: Análisis (Diseño propio) ................................................. 129 Tabla No 161. Colección N° 2: Configuración (Diseño propio) ....................................... 129 Tabla No 162. Colección N° 3: Administrador (Diseño propio) ....................................... 130 Tabla No 163. Colección N° 4: Stopwords (Diseño propio) ............................................. 130 Tabla No 164. Colección N° 5: Lexicón (Diseño propio) ................................................. 130 Tabla No 165. Colección N° 6: Regiones (Diseño propio) ................................................ 131

1

1 INTRODUCCIÓN

Conocer lo que las personas están pensando y sintiendo en cierto momento es uno de los factores claves que ayudan a analizar actitudes y preferencias sobre determinados temas; hoy en día con la aparición de las redes sociales, blogs, foros y diferentes plataformas de mensajería instantánea los individuos pueden interactuar y compartir contenidos sobre múltiples temas en línea de lo que está ocurriendo en un momento determinado. Estas plataformas son utilizadas por la mayoría de personas que tienen acceso a internet, convirtiéndose de esta forma en una fuente de información representativa.

Twitter es una plataforma de comunicación que tiende a ser una red social, permite hacer comentarios o los comúnmente llamados Tweets con una limitación de 140 caracteres, expresando de forma más precisa la opinión o pensamientos sobre un tema o simplemente algo que la gente quiere dar a conocer a los demás (Carballar Falcón, 2011).

Los contenidos compartidos por muchos usuarios en redes como Twitter se han convertido en una fuente de información con mucha relevancia para poder ver tendencias sobre productos, acontecimientos, gustos y opiniones sobre personajes como lo son actores, jugadores, políticos etc.

El análisis de sentimiento o también llamada “Minería de Opinión”, es una disciplina que emplea el procesamiento de lenguaje natural para poder hacer análisis. La Minería de Opinión se enfoca en determinar si un individuo o grupo está expresando o no una opinión, además de la polaridad de la misma que puede ser positiva, negativa o simplemente nula, es decir no hay opinión sobre el tema (Liu, 2012).

Actualmente la mayoría de herramientas empleadas para el análisis de sentimientos en Twitter están en inglés y/o son pagas, además se enfocan en el análisis como tal de una cuenta de usuario en particular y al parecer no hay una herramienta de software libre y de libre acceso que permita realizar este tipo de análisis.

De acuerdo a lo dicho anteriormente se pretende desarrollar una herramienta empleando la Minería de Opinión y la red social Twitter que a través del análisis de conjuntos de Tweets permita estimar la opinión de una a tres tendencias, ver su evolución a través del tiempo y determinar las sensaciones que genera en las personas.

En el presente documento se presentan los conceptos necesarios que introducen el análisis de sentimientos y el desarrollo de una herramienta que permita estimar el sentimiento con relación a una tendencia.

2

2 PLANTEAMIENTO DEL PROBLEMA

El análisis de sentimientos o también llamada Minería de Opiniones (MO), Extracción de Opiniones, Minería de Sentimientos o Análisis Subjetivo se define como el estudio computacional de opiniones, sentimientos y emociones expresadas en textos (Pang & Lee, 2008). Una opinión es una oración subjetiva que describe lo que una persona cree o piensa respecto a algo. El individuo dueño de la opinión se le conoce como portador, el objetivo define el tema relacionado a la opinión tratada y el contenido especifica de qué se trata con exactitud la opinión, las opiniones además tienen un contexto y un sentimiento (Liu, 2012).

Para el análisis de opinión se puede recurrir a la utilización de recursos léxicos, como los lexicones que son un tipo de diccionario que define ya no el significado de las palabras si no su variedad léxica (Lobato Sánchez, 2006); la variación léxica se presenta debido a factores como el espacio, el tiempo, la sociedad, el registro, entre otros. Los lexicones son usados para fines como el análisis de sentimientos, debido a que permiten un mejor estudio del significado de la palabra de acuerdo a lo que esta esté expresando.

La Minería de Opinión utiliza el procesamiento de lenguaje natural que ayuda a identificar la polaridad del texto evaluado, que puede ser positiva, negativa entre otras según la profundidad del análisis.

Hoy en día se cuenta con una gran cantidad de herramientas que permiten realizar análisis de sentimientos en Twitter, la mayoría de ellas están desarrolladas en el idioma inglés y las pocas que están en español son de uso privado, muy dirigidas al mercadeo o analizan específicamente un solo Tweet o una única cuenta de usuario. Si bien existen en el mercado herramientas completas como por ejemplo Socialmention (socialmention, s.f.) , esta se limita a extraer los Tweets publicados de los últimos minutos y permite buscar un único tema a la vez, como se verá más ampliamente en el marco referencial.

Asimismo, los lexicones utilizados para la Minería de Opinión, se encuentran en su mayoría en inglés y son muy pocos los que se encuentran en español, muchos de ellos son de uso privado, pagos o en su defecto no están libres para la descarga.

A pesar de que ya hay muchas herramientas que permiten realizar análisis de opiniones, son pocas las que están libres y para análisis en español, además que permitan realizar análisis en paralelo entre tendencias de Twitter para ver el grado de aceptación de cada una de ellas.

Es por lo anterior que se formula la siguiente pregunta ¿Es posible realizar una herramienta de análisis de sentimientos en software libre, utilizando un lexicón en español y que permita identificar el grado de aceptación y la opinión relativa de un personaje o hecho con relación a otros en Twitter?

3

3 MARCO TEÓRICO Y REFERENCIAL

A continuación se muestra los conceptos que permiten entender con mayor claridad el problema propuesto, entrar en el contexto del problema y mostrar los aportes relacionados con el tema.

3.1 MARCO TEÓRICO

En este ítem se expondrán los tópicos que se deben tener en cuenta para el entendimiento del tema.

3.1.1 Lingüística

La ciencia que estudia el lenguaje humano se llama lingüística (Gelbukh & Sidorov, 2006). El lenguaje se manifiesta solo en los seres humanos a través de las lenguas que les permiten hablar entre sí y consigo mismos. Se dice que se manifiesta solo en los seres humanos puesto que cualquier otra cosa que reciba la denominación de lenguaje lo será solo metafóricamente, es decir por similitud al lenguaje humano (Martínez Celdrán, 1998).

Como tal, la lingüística se puede estudiar tanto en las áreas de las ciencias como en la tecnología, puesto que el estudio del lenguaje humano es una fuente de información muy importante.

La lingüística por tanto se encarga del estudio, descripción y explicación del lenguaje articulado, es decir de las palabras constituidas por sonidos desde sus inicios hasta la actualidad. La Lingüística moderna fue influenciada en los estudios desarrollados por Ferdinand de Saussure en el siglo XIX; estos sostienen que todas las palabras tienen un componente material (una imagen acústica) al que denominó significante y un componente mental referido a la idea o concepto representado por el significante al que denominó significado. Significante y significado conforman un signo, llegando a la relación de la lingüística con un estudio más general que los signos (Coseriu, 1983).

3.1.2 Lenguaje natural

El lenguaje natural tiene muchas definiciones según diferentes autores, como Bloomfield que lo define como “un objeto exterior, la totalidad de las enunciaciones que pueden producirse en la comunidad del habla” (Bloomfield, 1926), Saussure lo define como "un sistema gramatical virtualmente existente en los cerebros de un grupo de individuos" (De Saussure, 1916), Chomsky en cambio dice que el lenguaje natural es "un sistema de conocimiento, el conjunto de representaciones mentales interrelacionadas por el individuo” (Chomsky, 1986), (Reyes, 1990). Dicho de otra forma, el lenguaje natural es aquel que permite la comunicación de uno o varios individuos.

4

Charles Francis Hockett, fue un lingüista estadounidense quien en su libro: “Curso de lingüística moderna” publicado en el año de 1958 define 15 características del lenguaje natural (Jiménez Ruiz, 2013):

• Vía vocal – auditiva: Consiste en comunicarse enviando pautas de sonidos que se reciben a través de los oídos.

• Transmisión irradiada: Se refiere a la vía de comunicación que es utilizada para llegar a un receptor.

• Fading rápido: Esta propiedad se cumple a través del sonido y si las señales no son captadas en el momento justo se pierden de forma irrecuperable.

• Intercambiabilidad: Es la capacidad de transmitir y recibir señales, es la facultad de poder participar en una comunicación como emisor y receptor.

• Retroalimentación total: Esta propiedad abarca las variedades de la comunicación en las cuales el emisor no siempre percibe los principales rasgos de la señal emitida.

• Especialización: Su interpretación depende de las señales que se emitan. Estas señales son estímulos que no necesariamente deben ser sonoros sino también acciones.

• Arbitrariedad: Es el nombre impuesto que se le da a las cosas a partir de una convención que se transmite de generación en generación, que no tiene ninguna relación con el significante y el significado.

• Carácter discreto: Es la relación entre la arbitrariedad de un signo y la semanticidad de este dentro de la comunicación.

• Desplazamiento: Al comunicar algo no necesariamente se tiene que estar en el lugar o en el momento en cual ocurre una comunicación, sino que podemos trasladar esa situación a cualquier tiempo.

• Dualidad: Es la capacidad de identificar mensajes y mantenerlos separados unos de otros. Es fuente de eficiencia y economía para cualquier sistema en el cual se tenga que distinguir diferentes mensajes.

• Productividad: Es poder crear y comprender mensajes nuevos.

• Transmisión cultural: Se lleva a cabo a partir de que se aprende una lengua determinada durante el crecimiento; un niño adquiere la lengua por adquisición.

5

• Prevaricación: Es la propiedad que permite integrar la ficción dentro de un mensaje; esta se da solo en los humanos y depende de la semanticidad, el desplazamiento y la productividad.

• Reflexividad: Permite en una comunicación hablar del lenguaje en sí mismo.

Dado que el lenguaje natural tiene gran variedad léxica, propiedad que determina el significado variable de las palabras en diferentes contextos, espacios y tiempo, es difícil el estudio del mismo, ya que se tiene dificultades al determinar lo que el individuo quiso expresar en determinado momento.

3.1.3 Procesamiento de lenguaje natural

También conocido como lingüística computacional. El Procesamiento de Lenguaje Natural (PLN) es la disciplina que asume como objeto básico el tratamiento automático del lenguaje natural escrito (Moreno & Carredano, 2000).

El procesamiento de lenguaje natural es una disciplina de la Inteligencia artificial que se encarga de construir sistemas y mecanismos que permitan la comunicación entre personas y máquinas mediante el uso de lenguajes naturales. La principal actividad es la creación de software con la capacidad de análisis, entendimiento y generación de lenguajes usados habitualmente por los humanos, con el objeto de permitir a un usuario comunicarse con una máquina de la misma manera en que lo haría con un ser humano (Benavides Cañon & Rodríguez Correa, 2007).

Uno de los principales obstáculos que se presenta en los procedimientos propios del PLN es cuando se utilizan expresiones o palabras que tienen más de una interpretación, las máquinas no tienen la capacidad suficiente para deducir a cuál interpretación se está refiriendo el usuario. Además, como este problema de ambigüedad se presenta en todos los niveles del lenguaje sin excepción, se deben desarrollar programas para solucionarlos en cada caso. Otra desventaja de su utilización es la incapacidad de introducir nuevas palabras (Cortez Vásquez, Vega Huerta, & Pariona Quispe, 2009).

Son muchas las tareas que se pueden solucionar con el PLN (Cortez Vásquez, Vega Huerta, & Pariona Quispe, 2009) (Benavides Cañon & Rodríguez Correa, 2007), entre otras:

• Análisis de sentimiento

• Comprensión del lenguaje

• Corrección de texto

• Traducción automática

6

• Recuperación de información

• Extracción de información y resúmenes

• Búsqueda de documentos

• Sistemas inteligentes para la educación y el entrenamiento

• Reconocimiento de voz

• Generación de discurso

3.1.4 Análisis de sentimientos

El análisis de sentimientos o también llamada Minería de Opinión, se encarga del estudio de las opiniones personales, sentimientos, actitudes, gustos y emociones hacia productos, servicios, individuos, organizaciones, tendencias entre otras. El análisis de opinión se puede hacer a través de métodos supervisados y no supervisados, aun cuando los más utilizados son los primeros por medio de corpus, como en Sentiment Analysis and Subjectivity (Liu, 2012), Análisis de Sentimientos sobre un Corpus en Español: Experimentación con un Caso de Estudio (Dubiau & Ale, 2013) y Técnicas de clasificación de opiniones aplicadas a un corpus en español (Martínez Cámara, Martín Valdivia, Perea Ortega, & Ureña López, 2011).

Para realizar este tipo de análisis se incluyen métodos propios del procesamiento de lenguaje natural y de la minería de texto.

3.1.5 Recursos Lingüísticos

Los recursos lingüísticos son materiales usados en la investigación, educación y desarrollo tecnológico relacionado con el lenguaje (University of Pennsylvania).

Estas herramientas son de gran ayuda para el procesamiento de lenguaje natural, entre las más conocidas se encuentran las ontologías, diccionarios y lexicones.

3.1.5.1 Ontología Una ontología es una representación formal del conocimiento, formada por conceptos, relaciones y restricciones conceptuales explicitas que permiten describir un dominio específico mediante el uso de formalismos (Arano, 2003). Usa la herencia como mecanismo de inferencia, donde los conceptos superiores transmiten sus características a los inferiores. Su aplicación en la lingüística es en Sistemas de Traducción Automática Basada en el Conocimiento y para la práctica de la Terminología (Arano, 2003). La función de una ontología en los sistemas de conocimiento es la de apoyo semántico para las unidades léxicas, donde estas unidades son descritas como objetos lingüísticos en una base de datos léxica y son relacionadas con una jerarquía conceptual situada en una ontología (Arano, 2003).

7

En el Procesamiento de Lenguaje Natural (PLN) la complejidad de las ontologías aumenta debido a la inclusión de conocimiento lingüístico y enciclopédico, y a las relaciones existentes entre palabras y conceptos (Montagna, 2015).

Se clasifican en varios tipos: de nivel más alto, de dominio, de tareas y de aplicaciones. Las ontologías de nivel más alto describen los conceptos generales como el espacio, el tiempo, la materia, la acción, etc. Las de dominio describen un vocabulario relacionado a un dominio genérico o específico. Las de tareas describen actividades, y las de aplicaciones describen conceptos de un campo determinado o de tareas concretas, que suelen ser especializaciones de otras ontologías (García, 2004).

3.1.5.2 Diccionario Un diccionario es un “Repertorio en forma de libro o en soporte electrónico en el que se recogen, según un orden determinado, las palabras o expresiones de una o más lenguas, o de una materia concreta, acompañadas de su definición, equivalencia o explicación” (Real Academia Española, 2016).

3.1.5.3 Lexicón Computacional Es una recopilación electrónica que almacena y caracteriza el conocimiento lingüístico a través de reglas de análisis fonológico, morfológico, sintáctico, semántico y pragmático, con el objetivo de realizar inferencias y brindar información léxica a usuarios no humanos. Los sistemas de procesamiento de lenguaje natural son sus usuarios finales que adoptan un enfoque basado en conocimiento con necesidades de incorporar conocimiento lingüístico explícito y uno general para tareas específicas (Arano, 2003). Los recursos almacenados pueden ser listas de palabras, diccionarios, tesauros, ontologías, bases de datos terminológicos, taxonomías, glosarios y redes de palabras (Montagna, 2015).

También son definidos como repositorios de información léxica, utilizados como soporte representacional a diversas aplicaciones en el ámbito tecnológico del lenguaje humano (Arano, 2003).

3.1.6 Twitter

Twitter tuvo sus orígenes en el año 2006; fue creado por Biz Stone, Evan Williams y Jack Dorsey. Inicialmente su nombre fue Twttr. Es una aplicación de microblogging gratuita en la web, es decir reúne las ventajas de los blogs, las redes sociales y la mensajería instantánea que permite compartir información, pensamientos, opiniones, enlaces con otros usuarios de forma pública o privada (Vela Zancada, 2016).

Una de las características principales de Twitter es que el límite del número caracteres que se pueden escribir en cada Tweet es de 140, aunque en enero de 2016 Twitter comienza a insinuar que se podrán hacer publicaciones que superen

8

este límite; estos mensajes se muestran en la página principal del usuario. Los usuarios pueden suscribirse a los Tweets de otros usuarios, convirtiéndose, según la terminología de Twitter, en seguidores o followers (Ramos, 2013), (Vela Zancada, 2016).

Cuando un usuario ingresa a Twitter muestra un listado cronológico de los Tweets de otros usuarios a los cuales sigue, a su vez el usuario puede retransmitir los Tweets a los usuarios que le siguen.

Es por ello que hoy en día Twitter se ha convertido en la red de microblogging más popular de internet, puesto que permite estar al corriente de casi toda información que se está presentando al instante.

La información de Twitter es por defecto pública, sin embargo, los usuarios pueden restringir su información, esta característica de Twitter hace que sea una de las redes sociales más utilizada para obtener información.

Twitter maneja términos que son propios de esta red social entre ellos están (Collado Vazquez, 2012):

• Tweet: Es el mensaje de 140 caracteres que permite la comunicación con los miembros de la red, es la clave del microblogging.

• RT o retweet: Es la acción por la cual un usuario, seguidor o no, reenvía un Tweet de otro usuario a su Time Line (TL).

• Usuario: Miembro de la red social, gestor de una cuenta. El usuario aparecerá identificado con una @ delante del nombre de usuario elegido.

• Time Line (TL): Es la pista de Tweets, o cronología de mensajes que se envían a la red social. Los mensajes siempre aparecen ordenados por orden cronológico, siendo el que se encuentra más arriba el más reciente.

• Seguidores o followers: Son las personas dueñas de cuentas de usuario que siguen una cuenta.

• Seguidos o following: Son las cuentas de usuario seguidas por otros usuarios. Se podría decir que es como una especie de suscripción a los mensajes o Tweets de un usuario determinado.

• Favorito: Es una acción que permite la aplicación para seleccionar Tweets como favoritos.

• Mención: Es la acción por la cual se nombra a alguien en el TL

9

• DM o direct message: La aplicación permite enviar mensajes privados a aquellos usuarios que sigan una cuenta.

• Hashtag o etiqueta: Sirve para marcar temas, conceptos, términos y se hace con el símbolo “#”. Una vez que se marca una palabra o varias juntas se genera un enlace por el cual se puede acceder vía búsqueda a todos los Tweets que contengan esa palabra o marca. De este modo se puede unir y seguir conversaciones, agrupar temáticas, etc.

3.1.7 Wordnet

Es una base de datos léxica desarrollada por la Universidad de Princeton, diseñada sobre bases de teorías psicolingüísticas relativas a la organización de la información léxica en la mente del hablante (lexicón mental), con el fin de agilizar búsquedas de los diccionarios en línea para el idioma inglés (Arano, 2003).

Sus dos objetivos fundamentales son el de validar las teorías psicolingüistas sobre organización léxica (modelo de memoria léxica basado en redes semánticas, de Collin y Quillian), y el de ser utilizado por diversas aplicaciones que requieran acceso a la información léxica.

Wordnet divide el lexicón en cinco categorías: nombres, verbos, adjetivos, adverbios y elementos funcionales. Los nombres se organizan en jerarquías semánticas, los verbos están estructurados en base a relaciones de vinculación, y los adjetivos y adverbios se organizan como espacios hiperespacios n-dimensionales. Aunque esta organización facilita el análisis de las diferencias de organización semántica entre las categorías, cuando una palabra pertenece a más de una categoría genera redundancia de información (Moreno Ortiz, 2000).

3.1.8 Python

Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”, se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos (Guzdial & Ericson, 2013).

Python tiene muchas de las características de los lenguajes compilados, por lo que se podría decir que es semi interpretado. En Python, el código fuente se traduce a un pseudocódigo de máquina intermedio llamado bytecode la primera vez que se ejecuta, generando archivos .pyc o .pyo (bytecode optimizado), que son los que se ejecutarán en sucesivas ocasiones (González Duque, 2011).

La característica de “Lenguaje tipado dinámico” se refiere a que no es necesario declarar el tipo de dato que va a contener una determinada variable, sino que su tipo se determinará en tiempo de ejecución según el valor al que se asigne, por lo

10

que el tipo de la variable puede cambiar si se le asigna un valor de otro tipo (Fernández Montoro, 2012).

En Python no se permite tratar a una variable como si fuera de un tipo distinto al que tiene, es necesario convertir de forma explícita dicha variable al nuevo tipo previamente. Por ejemplo, si se tiene una variable que contiene un texto (variable de tipo cadena o string) no se podrá tratar como un número (sumar la cadena “9” y el número 8) (González Duque, 2011).

El intérprete de Python está disponible en multitud de plataformas (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.) por lo que si no se utilizan librerías específicas de cada plataforma el programa podrá correr en todos estos sistemas sin grandes cambios. Python también permite la programación imperativa, programación funcional y programación orientada a aspectos (González Duque, 2011).

3.1.9 JavaScript

JavaScript es un lenguaje interpretado orientado a objetos creado por Brendan Eich para Netscape, su nombre oficial es ECMAScript y la versión actual es ECMAScript 6 (Rauschmayer, 2014 ).

JavaScript es comúnmente conocido como el lenguaje de Script para páginas web, es un lenguaje Script de programación multi-paradigma, dinámico, soporta estilos de programación funcional, imperativa y construcción de objetos basado en prototipos (MDN, 2015).

3.1.10 Node.js

Node.js es un entorno de ejecución hecho para JavaScript que fue construido con el motor de JavaScript V8 de Chrome, Node.js usa un modelo de operaciones Entrada/Salida, sin bloqueo y orientado a eventos esto le permite ser más liviano y eficiente (Node.js Foundation., 2017).

Node.js es una plataforma de bajo nivel y alta escalabilidad, hereda algunos principios de JavaScript y de Unix, fue creado por Ryan Dahl, como un experimento para realizar procesos asíncronos, una de las principales características es el uso de Callback (retornos de llamadas) en sus funciones (Casciaro, 2014).

3.1.11 Express

Express es un framework web rápido, minimalista y flexible para Node.js, proporciona un conjunto amplio de características para el desarrollo de aplicaciones web y móviles, además, gracias a la implementación de métodos para http y middleware, la creación de una aplicación bien estructurada es rápida y sencilla (StrongLoop, IBM, expressjs.com, 2016).

11

3.1.12 Modelos de desarrollo de software

Cuando se va a diseñar un software es importante tener en cuenta las metodologías que se van a utilizar, pues estas ayudan a estructurar, planificar y controlar el proceso de desarrollo del sistema.

Un proceso de software es una serie de actividades relacionadas que conduce a la elaboración de un producto de software (Sommerville, 2011).

Los procesos de software, según Sommerville, deben incluir cuatro actividades fundamentales:

• Especificación del software: Tienen que definirse tanto la funcionalidad del software como las restricciones de su operación.

• Diseño e implementación del software: Debe desarrollarse el software para cumplir con las especificaciones.

• Validación del software: Hay que validar el software para asegurarse de que cumple lo que el cliente quiere.

• Evolución del software: El software tiene que evolucionar para satisfacer las necesidades cambiantes del cliente.

Igual que las actividades, también se debe incluir:

• Productos: Son los resultados de una actividad del proceso. Por ejemplo, el resultado de la actividad del diseño arquitectónico es un modelo de la arquitectura de software.

• Roles: Reflejan las responsabilidades de la gente que interviene en el proceso.

• Precondiciones y postcondiciones: Son declaraciones válidas antes y después de que se realice una actividad del proceso o se cree un producto.

En ocasiones, los procesos de software se clasifican como dirigidos por un plan o como procesos ágiles. Los procesos dirigidos por un plan son aquellos donde todas las actividades del proceso se planean por anticipado y el avance se mide contra dicho plan. En los procesos ágiles, la planeación es incremental y es más fácil modificar el proceso para reflejar los requerimientos cambiantes del cliente (Sommerville, 2011).

3.1.13 Extreme Programming (XP)

La metodología de desarrollo de software Extreme Programming (XP) fue formulada por Kent Beck en el año de 1996, es uno de las metodologías ágiles más populares,

12

su filosofía se basa en la satisfacción del cliente, se entrega el software en el momento que el usuario lo necesite y se ajusta a las necesidades del mismo, de tal forma que los desarrolladores puedan, sin ningún inconveniente, responder por los requisitos cambiantes de los clientes (Wells, 2013).

Los principales objetivos de XP son (W3ii, 2017):

• Comunicación

• Sencillez

• Realimentación

• Valor

• El respeto

Las herramientas para el desarrollo de esta metodología son (Universidad Politécnica de Válencia , s.f.), (Meléndez Valladarez, Gaitan, & Pérez Reyes, 2016):

• Historias de Usuario: Las historias de usuario presentan una descripción del comportamiento del sistema, deben estar delimitadas de tal forma que el desarrollador pueda cumplirlas en la mínima cantidad de semanas posibles.

• Tareas de Ingeniería: Son la lista de tareas necesarias hechas por los desarrolladores para cumplir con la historia de usuario.

• Pruebas de Aceptación: Son pruebas realizadas para comprobar si la funcionalidad del sistema cumple con el objetivo esperado, estas marcan el cambio a seguir en cada iteración. Permiten una retroalimentación para el desarrollo de las próximas historias de usuario a ser entregadas.

• Tarjetas CRC (Clase–Responsabilidad–Colaboración): Las tarjetas CRC permiten conocer las clases que componen el sistema y las interacciones que existen entre ellas.

Los roles a tomar en cuenta según XP son (Universidad Politécnica de Válencia , s.f.), (sergioalbertoc, 2015):

• Programador: Escribe las pruebas unitarias y produce el código del sistema. Define las tareas necesarias para cada historia de usuario, y estima el tiempo que requerirá cada una.

• Cliente: Determina las funcionalidades de cada iteración, y les asigna la prioridad.

13

• Encargado de pruebas (Tester): Es el encargado de realizar las pruebas e informar el resultado al equipo.

• Encargado de seguimiento (Tracker): Encargado del seguimiento y realimentación al equipo, es el encargado de revisar las estimaciones dadas por el equipo y compararlas con el tiempo real que tomó el desarrollo, de esta forma se puede brindar soporte de mejoras.

• Entrenador (Coach): Es el encargado de guiar e iniciar a las personas del equipo en poner en marcha cada una de las practicas XP.

• Consultor: Es una persona fuera del equipo que ayuda a resolver problemas en específico.

• Gestor (Big Boss): persona encargada de obtener recursos necesarios y manejar problemas que se generen, experto en tecnología y labores de gestión.

Las actividades fundamentales para XP son las siguientes:

• Planeación: Es un diálogo continuo entre los programadores, el cliente y coordinadores, donde se lleva un seguimiento al desarrollo de la metodología.

• Diseño: Esta metodología hace énfasis en diseños simples y claros.

• Codificación: En XP el cliente debe estar disponible durante el desarrollo del proyecto, no solo como apoyo a los programadores, sino como parte del equipo; la programación se basa en estándares de tal forma que sea entendible por todo el equipo, se realizan pruebas unitarias por parte de los desarrolladores, que a su vez trabajan en pares pues de esta forma se minimiza los errores y logran mejores diseños.

• Pruebas: XP maneja dos tipos de pruebas, las unitarias que son las hechas por los desarrolladores, y las pruebas de aceptación que son las realizadas en base a las historias de usuario, estas deben estar aceptadas para darse por terminadas.

3.1.14 Bases de datos No relacionales

Este tipo de base de datos, también llamadas bases de datos NoSQL (Not Only SQL), son diferentes a las bases de datos relacionales tanto en estructura como en el tipo de relaciones que se establecen y en la forma de interactuar con los datos (Fernández Montoro, 2012). Mientras que en las bases de datos relacionales se utiliza el lenguaje SQL para trabajar con los datos, en las no relacionales no es utilizado. Además la mayoría de bases de datos NoSQL no soportan JOINS, ya que

14

no hay relaciones establecidas como de uno a muchos ni de muchos a muchos (Fernández Montoro, 2012).

Las bases de datos NoSQL son estables, ofrecen menor tiempo de consulta y pueden trabajar con volúmenes muy grandes de datos. Estas características les permitieron ser populares y muy utilizadas para aplicaciones web de alto tráfico como Google, Facebook o Twitter (Fernández Montoro, 2012).

Las principales características de los sistemas NoSQL son (Ruano Vázquez, 2014), (Artavia & Villalobos):

• Capacidad de escalar horizontalmente: Se implementa en nodos de poca capacidad con el fin de utilizar servidores o centros de procesamiento de menos costo.

• Capacidad de replicar y distribuir datos sobre muchos servidores.

• Es posible añadir dinámicamente nuevos atributos a los registros.

• Tolerancia a fallos y redundancia.

• Consistencia eventual: Permita facilitar la comunicación entre las estructuras al existir cambios en su contenido.

Existen varios tipos de bases de datos NoSQL como clave/valor, documentos, objetos, grafos, entre otras (acens, 2014):

• Basadas en clave/valor: Son el modelo de bases de datos más popular, además genera mayor rendimiento por ser la más sencilla y al hecho que almacena la información (valores) asociándola a unas claves. Redis y Riak son de este tipo.

• Basadas en documentos: Son similares al tipo clave/valor, pero en este caso los valores suelen ser documentos, este tipo se usa para facilitar las consultas complejas. MongoDB, Datastore y CouchDB son ejemplos de este tipo de base de datos.

• Basadas en grafos: En este tipo la información se representa como nodos de un grafo y sus relaciones con las aristas del mismo, de manera que se pueda hacer uso de la teoría de grafos para recorrerla. Neo4j responde a un tipo de base de datos basada en grafos.

• Orientadas a objetos: La información se representa mediante objetos de la misma forma que son representados en los lenguajes de programación orientada a objetos (POO). Por ejemplo, Zope y Db4o.

15

• Otras: En este grupo se encuentran las bases de datos basadas en tuplas, multivaluadas, jerárquicas, entre otras que manejan un uso específico y sus implementaciones son escasas.

Entre las principales bases de datos NoSQL más utilizadas hoy en día están:

• Datastore: Google Cloud Datastore es una base de datos NoSQL basada en documentos, es altamente escalable, alto rendimiento y fácil de usar (Google, 2016).

• Cassandra: Es de tipo clave/valor en donde las estructuras que maneja se denominan familias o colecciones para evitar el uso de JOINS. Actualmente utiliza un lenguaje de consulta similar a SQL denominado Cassandra Query Language (CQL), que reduce las funcionalidades que se establecen para obtener información haciéndolo más fácil de usar, fue desarrollada por Apache Software Foundation, (Apache Software Foundation, 2015).

• Redis: Es un motor de base de datos en memoria, basado en clave/valor, pero que opcionalmente puede ser usada como una base de datos durable o persistente. Está escrito en ANSI C por Salvatore Sanfilippo y Nordhuis Pieter (Redis Labs).

• Riak: Basada en clave/valor, cuenta con alta disponibilidad, escalabilidad, tolerancia a fallos y simplicidad operacional (Basho Technologies, 2016).

• MongoDB: Diseñada por 10gen. Es un sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de código abierto. Los datos son almacenados mediante archivos dinámicos de tipo JSON gracias al lenguaje BSON o Binary JSON, permitiendo una mejor integración de los datos y posteriormente una consulta más ágil (MongoDB, Inc., 2016).

• CouchDB: Desarrollado por Apache Software Foundation, dirigida a aplicaciones web, maneja el almacenamiento de datos mediante JSON y utiliza el lenguaje JavaScript para realizar consultas (The Apache Software Foundation, 2016).

3.2 MARCO REFERENCIAL

En este ítem se presenta la información obtenida en la investigación sobre las herramientas para el análisis de sentimientos en redes sociales, especialmente Twitter. Existen varias herramientas que permiten hacer análisis de sentimientos en Twitter. Generalmente la mayoría de estas herramientas utiliza la clasificación positiva, negativa y neutra para estimar el sentimiento de los Tweets. Entre algunas de las herramientas encontradas para el análisis de sentimientos están: Sentiment viz, Linguakit, Twitrratr, Twendz y Socialmention.

16

3.2.1 Sentiment viz -Tweet Sentiment Visualization

Sentiment viz es una aplicación web desarrollada por Christopher Healey y Siddarth Ramaswamy, la cual permite estimar y visualizar el sentimiento de cortos fragmentos de texto incompletos. Según Healey y Ramaswamy, el sentimiento se define como "una actitud, pensamientos, o la sentencia motivada por el sentimiento". El objetivo de esta herramienta es dar una visualización que presente propiedades emocionales básicas incorporadas en el texto, junto con una medida de la confianza en nuestras estimaciones (Healey & Ramaswamy, 2013).

Actualmente Sentiment viz está enfocada en visualizar el sentimiento de los Tweets publicados en Twitter. La restricción de 140 caracteres por Tweet anima a los usuarios a construir actualizaciones periódicas.

Esta herramienta funciona en los navegadores como Firefox, Chrome, IE 9, Safari y Opera.

Los Tweets se visualizan de muchas formas, por ejemplo: por el sentimiento, tema, términos frecuentes, entre otros. Los Tweets individuales se muestran en forma de círculo, el color, el brillo, la transparencia muestran el detalle del sentimiento del Tweet.

Los Tweets se presentan usando varias técnicas de visualización diferentes. Cada técnica está diseñada para poner de relieve diferentes aspectos de los Tweets y su sentimiento (Healey & Ramaswamy, 2013), (Tweet Sentiment Visualization):

• Sentiment: Visualiza dónde se encuentran los Tweets en un diagrama de dispersión emocional: con el placer y la excitación en sus ejes horizontal y vertical, respectivamente.

• Topics: Identifica Tweets que están discutiendo un tema común.

• Heatmap: El mapa de calor visualiza el número de Tweets dentro de las diferentes regiones de sentimiento.

• Tag Cloud: Visualiza los términos más frecuentes en cuatro regiones emocionales: malestar en la parte superior izquierda, feliz en la parte superior derecha, relajado en la parte inferior derecha, e infeliz en la esquina inferior izquierda.

• Timeline: La línea de tiempo se visualiza cuando se publicaron Tweets.

• Map: El mapa muestra donde se publicaron Tweets.

• Affinity: El gráfico afinidad visualiza los Tweets frecuentes, las personas, Hashtags y URL, junto con las relaciones o afinidades entre estos elementos.

17

• Narrative: Visualiza hilos narrativos, conjuntos de Tweets que forman conversaciones sobre un tema en común a través del tiempo.

• Tweets: La ficha de Tweets muestra la fecha, autor, y el cuerpo de cada Tweet.

Figura No 1. Ejemplo de visualización de Sentiment viz (Healey & Ramaswamy, 2013)

3.2.2 Linguakit

Linguakit es un portal con un paquete de herramientas lingüísticas y de extracción textual para que toda persona que posea cierto interés lingüístico pueda explorar, analizar y obtener una mejor información de los textos y documentos escritos.

Linguakit posee varias herramientas entre las cuales se encuentra el Analizador de Sentimientos, o Analizador de Opinión. En la actualidad, es una de las más demandadas para el análisis de gran número de documentos relacionados, por ejemplo, con las redes sociales, se encuentra disponible en inglés, español, portugués y gallego (Cilenis).

El analizador de sentimientos de Linguakit muestra la estadística que determina si un texto escrito es positivo, negativo o neutro.

18

Figura No 2. Ejemplo de visualización de Linguakit (CILENIS SL)

3.2.3 Twitrratr

Twitrratr permitía evaluar la actitud de los usuarios de Twitter en relación a un determinado término. Los Tweets se distribuían en función de una actitud positiva, neutral o negativa. El sistema se basaba en la relación de cada Tweet con el término de contraste y dos listados de palabras que denotan una actitud positiva o negativa (Rodríguez, 2009).

Evidentemente el sistema estaba pensado para usuarios de habla inglesa, pero entre los listados antes mencionados figuran términos comunes y emoticones que se utilizaban también en español y que sin duda dan una idea sobre lo que los usuarios piensan sobre un determinado tema (Rodríguez, 2009).

Actualmente esta herramienta ya no se encuentra disponible.

Figura No 3. Ejemplo de visualización de Twitrratr (Twtbase)

19

3.2.4 Twendz

Era una herramienta para el análisis de las tendencias en Twitter desarrollada por la firma de relaciones públicas WE (anteriormente Waggener Edstrom Communications), la cual tenía la capacidad de determinar en tiempo real la actitud de los usuarios respecto a un tema en específico. La consulta revisaba el historial de Tweets hasta cinco horas en retrospectiva y arrojaba resultados por hora (Erickson, 2009).

Presentaba una interfaz sencilla donde al lado derecho mostraba la lista de Tweets analizados y al izquierdo las estadísticas de los resultados, en el que se presentaba una barra de porcentajes del sentimiento clasificándolo en negativo, neutral y positivo, para el tema principal y para cada uno de los subtemas asociados. También incorporaba una nube de tags con las principales palabras utilizadas junto al tema principal consultado, con el fin de dar un contexto a las variaciones de sentimientos de los usuarios respecto a cuestiones particulares (@cdperiodismo, 2011).

La aplicación actualmente ya no se encuentra disponible, funcionaba extrayendo los Tweets, sacando una lista de las palabras clave y las comparaba con una lista o colección de miles de palabras que tienen asociado un sentimiento de positivo, neutral o negativo. A cada palabra le daba una puntuación y luego realizaba una conjetura sobre la polaridad de ese Tweet (Krasnoff, 2009).

Figura No 4. Ejemplo de visualización de Twendz (Krasnoff, 2009)

20

3.2.5 Socialmention

Es una plataforma de búsqueda y análisis web en medios sociales (no se limita únicamente a Twitter, pero sí tiene la opción de especificar cuál medio social se desea utilizar) que agrega contenido de usuarios respecto a cualquier tema en un único flujo de información en tiempo real (socialmention).

Funciona de acuerdo a cuatro parámetros (Polo, 2014):

• Fuerza: Probabilidad de que el tema esté siendo mencionado en los medios sociales. Se calcula dividiendo el número de menciones en las últimas 24 horas entre el total de posibles menciones.

• Sentimiento: Proporción que existe entre las menciones positivas y las menciones negativas.

• Pasión: Medida de probabilidad de que los autores estén mencionando el tema en varias ocasiones. Es decir, entre más menciones realice un pequeño grupo de autores, más alta será este valor, y si cada mención es escrita por un autor diferente, menor será la pasión.

• Alcance: Medida del rango de influencia.

La plataforma presenta en su interfaz la lista de resultados analizada de acuerdo al tema consultado, en cada uno de estos resultados muestra la procedencia, el hipervínculo del sitio, el usuario y el tiempo transcurrido desde que se hizo la mención.

Los resultados del análisis, además de los parámetros anteriormente mencionados, incluyen (socialmention):

• Cantidad de autores únicos.

• Número de retweets que se han realizado.

• Proporciones de menciones clasificadas en positivas, neutrales y negativas.

• Lista de palabras clave más frecuentes junto con el número de veces que se han mencionado.

• Lista de los usuarios que frecuentemente mencionan el tema consultado junto con el número de menciones que ha realizado cada uno.

• Lista de Hashtags junto con el número de veces que se han mencionado.

• Lista de fuentes junto con el número de menciones realizadas en ese sitio.

21

Además del análisis que realiza la plataforma, también cuenta con las opciones de crear alertas, descargar a un archivo Excel de los resultados, integrarla a blogs y páginas web por medio de Widgets y ofrece un API para desarrolladores (Polo, 2014).

Una de las características de Socialmention es que la búsqueda se limita a extraer los Tweets publicados de los últimos minutos y la herramienta permite buscar un único tema a la vez.

Figura No 5. Ejemplo de visualización de socialmention (socialmention)

22

4 OBJETIVOS

4.1 GENERAL

Desarrollar un prototipo de software que permita hacer análisis de opinión relativa en español basado en la información que reside en el microblogging Twitter de un personaje o hecho con relación a otros, utilizando un motor de base de datos no relacional.

4.2 ESPECÍFICOS

Desarrollar el algoritmo que permita descargar la colección de Tweets empleada para realizar el análisis de opinión relativa.

Definir o desarrollar el algoritmo que permita identificar la opinión relativa de un personaje o hecho con relación a otros.

Almacenar un registro histórico de la opinión acerca de los personajes o hechos analizados.

Diseñar e implementar la arquitectura de la herramienta de tal forma que se incluyan todos los componentes que forman parte del sistema y cumpla con los requisitos de funcionamiento que garanticen un software de calidad.

Realizar las pruebas que permitan generar un producto funcional y de calidad de acuerdo a lo definido en las historias de usuario.

23

5 ALCANCES Y LIMITACIONES

5.1 ALCANCES

Al desarrollar el proyecto se llegará a:

• La herramienta de análisis de sentimientos permitirá:

Registrar usuarios administradores en el sistema.

El análisis de opinión se basará en la información que reside en el microblogging de Twitter.

Permitir realizar análisis de opinión relativa para máximo tres personajes o hechos de la política o del deporte en paralelo.

Para realizar el análisis relativo, se incluirán los conteos de Tweets descargados y de las frases analizadas de cada personaje o hecho.

Guardar los resultados obtenidos con el fin de tener un registro histórico de los temas buscados y analizados.

• Se hará uso de recursos gramaticales en español como lo son lexicones, tesauros, corpus, entre otros, los cuales proveen las clasificaciones necesarias para el debido desarrollo de la herramienta.

• Las pruebas se realizarán para personajes del mundo deportivo o político, sin embargo, la herramienta podrá realizar análisis de cualquier hashtag que este siendo tendencia en Twitter.

• El enfoque de desarrollo de la herramienta es un aporte a la comunidad del software libre.

5.2 LIMITACIONES

• El prototipo para el usuario final funcionará únicamente para información en español.

• Para el desarrollo de este proyecto se hará uso de herramientas de software libre.

• Para desarrollar el prototipo de software se utilizará la metodología Extreme Programming y como base el lenguaje de desarrollo Python.

• Dado que el proyecto incluye una fase experimental, se utilizarán las herramientas y los componentes de software que mejor se ajusten a los resultados y a los conocimientos de los autores.

24

6 METODOLOGÍA

Para el desarrollo del proyecto se plantea la utilización de la metodología de desarrollo de software ágil Extreme Programming (XP), ya que al ser un proyecto de investigación no todos los requerimientos están definidos desde el inicio, sino que estos evolucionan, surgen, o se cancelan según avanza la experimentación del proyecto, además esta metodología permite flexibilidad a la hora de implementar cambios que impactan el desarrollo de los requerimientos, se enfoca más en la codificación que en el diseño y las herramientas tecnológicas se adecuan según las necesidades del proyecto.

En la Tabla No 1 y tomando en cuenta lo propuesto por XP se definen las actividades que se tendrán en cuenta en cada una de las fases.

Tabla No 1. Descripción de las fases de la metodología XP (Diseño propio) FASE DESCRIPCIÓN

PLANEACIÓN

Se iniciará recopilando las historias de usuario, estas serán defin idas en las reuniones , cada una de las historias de usuario serán evaluadas y se les asignará una prioridad, estas serán realizadas en las iteraciones que correspondan y podrán ser modificadas o canceladas según el criterio del equipo de trabajo.

DISEÑO En la fase de diseño de XP se crean diseños simples y entendibles por el usuario , de tal forma que sean fáciles de comprender y que el tiempo requerido para su desarrollo sea menor.

CODIFICACIÓN Se realiza la codificación necesaria para cumplir con el objetivo del proyecto y el desarrollo de las historias de usuario, se realizara en parejas con el motivo de reducir riesgos en el desarrollo .

PRUEBAS Se realizan pruebas de ac eptación y pruebas individuales durante cada itera ción.

6.1 ARTEFACTOS A GENERAR

En este punto se determinan los artefactos a generar durante el desarrollo del proyecto, estos son los entregables del mismo y están determinados en gran medida por la filosofía de la metodología de desarrollo ágil XP, además se entregan diagramas y anexos.

• Historia de usuarios: Se definen por cada iteración y muestran el comportamiento del sistema. La plantilla para realizar las historias de usuario se describe en la Tabla No 2.

25

Tabla No 2. Plantilla historia de usuario (Diseño propio) Historia de usuario

Número Identificador único de la historia de usuario. Usuario Individuo que usará la funcionalidad del sistema.

Nombre Historia Nombre que identificará la historia de usuario.

Prioridad Grado de importancia. Riesgo en el desarrollo

Valor de complejidad que representa para los desarrolladores.

Puntos estimados

Número de semanas necesarias para cumplir con la historia de usuario.

Iteración asignada

Número de la iteración en la que se realizará la historia de usuario.

Programador responsable Desarrollador encargado de realizar la historia de usuario.

Descripción Información detallada de lo que se realizará en la historia de usuario. Observaciones Aclaraciones que se hacen de la historia de usuario, este campo es opcional.

• Tareas de ingeniería: Muestran las tareas necesarias para cumplir con una historia de usuario. En la Tabla No 3 se presenta la plantilla guía para el desarrollo del proyecto y la descripción de cada uno de sus campos.

Tabla No 3. Plantilla tarea de ingeniería (Diseño propio) Tarea de Ingeniería

Número Identificador de la tarea de ingeniería. Número de Historia Identificador de la historia en la que se

realiza la tarea. Nombre Nombre asignado a la tarea.

Tipo Tipo al que corresponde la tarea. Puntos estimados Número de días necesarios para realizar la

tarea. Fecha Inicio Fecha inicio la tarea. Fecha Fin Fecha finalización de la tarea. Responsable Desarrolladores responsables de re alizar la tarea de ingeniería. Descripción Información detallada de la tarea de ingeniería

• Pruebas de aceptación: Muestran las pruebas realizadas en conjunto con el usuario y marcan el fin de la iteración. La Tabla No 4 es la plantilla que será tomada en cuenta para el desarrollo de los casos de prueba.

Tabla No 4. Plantilla caso de prueba (Diseño propio) Caso de prueba

Código Identificador único del caso de prueba. No Historia de usuario Historia de usuario a la que pertenece.

Nombre de la prueba Nombre que identifica el caso de prueba. Condiciones de ejecución Condiciones previas que deben cumplirse para la realización de la prueba de aceptación. Entrada/paso de ejecución Pasos a seguir para realizar la prueba. Resultado Esperado Resultados esperados al realizar la prueba. Evaluación de la prueba Concepto que da por Aprobada y no aprobada la tarea de usuario.

• Tarjetas CRC (Clase–Responsabilidad–Colaboración): Permiten conocer las clases que componen el sistema y las interacciones que existen entre ellas. En la Tabla No 5 se muestra la plantilla a usar para el desarrollo de las tarjetas CRC del proyecto y la descripción de cada uno de sus componentes.

26

Tabla No 5. Plantilla tarjetas CRC (Diseño propio) TARJETA CRC N°: Identificador único de la tarjeta CRC

Nombre de la clase Nombre de la clase a la cual hace referencia la tarjeta CRC.

Responsabilidades Colaboradores

Atributos y operaciones que realiza la clase. Clases que colaboran con la clase a la cual se hace referencia.

• Diagrama de secuencias: Muestra la interacción entre los componentes del sistema y la secuencia de los mensajes que intercambian.

• Diagrama de actividades: Muestra los procesos realizados como un flujo de trabajo a través de una serie de acciones con bifurcaciones y bucles.

• Modelo de Datos: Describe la representación lógica de la estructura de datos que componen la Base de Datos del sistema.

• Manual de usuario: Es un documento donde se explica de forma detallada el funcionamiento del software, de tal forma que al momento de utilizarlo no haya mayor dificultad.

• Producto: El resultado final de la herramienta después de terminar todas las iteraciones con éxito, la herramienta se encuentra disponible en http://186.154.95.101:7474/

27

7 DESARROLLO DE LA PROPUESTA

7.1 ARQUITECTURA DEL SISTEMA

Para el desarrollo de la aplicación se utiliza el modelo cliente/servidor en tres capas.

La arquitectura de diseño de software cliente/servidor en tres capas se define como una organización jerárquica tal que cada capa proporciona servicios a la capa inmediatamente superior y se sirve de las prestaciones que le brinda la inmediatamente inferior. Separa los componentes de la aplicación en tres niveles tal como se muestra en la Figura No 6 (Cárdenas Escalante, 2013):

Capa de presentación: Hace referencia a la interfaz gráfica que se encarga de recoger la información al usuario y enviarla al servidor, envía la información a la capa y recibe resultados desde la capa de proceso y la muestra al usuario (eventos y acciones).

Capa de proceso: se encarga de recibir la entrada de datos de la capa de presentación e interactuar con la capa de datos para realizar operaciones, guardar información o extraerla y procesar los resultados para posteriormente mostrarlos al usuario a través de la capa de presentación.

Capa de datos: Almacena los datos, los recupera, mantiene y asegura su integridad, interactúa únicamente con la capa de proceso.

Figura No 6. Modelo de arquitectura en tres capas (Diseño propio)

Esta arquitectura ofrece una gran ventaja puesto que, al tener sus niveles separados, al presentarse un cambio solo afecta al nivel involucrado y no a los demás, además este patrón simplifica la comprensión, organización, escalabilidad y mantenimiento del sistema, puesto que reduce las dependencias entre capas y también se puede preservar la reutilización.

28

Al permitir la separación de las interfaces con las que interactúa el usuario de la base de datos, se evita que el usuario obtenga datos que no debe recibir. En el desarrollo de la herramienta Zaitania, se implementa el modelo de arquitectura de software en tres capas de la siguiente forma:

7.1.1 Capa de Presentación

En esta capa se usó el Lenguaje de Marcado para Hipertextos (HTML) con el fin de construir las vistas de la página web, además se hizo uso de Hojas de Estilo en Cascada (CSS) para mejorar y personalizar la presentación de las vistas HTML. También se usó el framework front-end Bootstrap v3.3.7, que permite mejorar la presentación del lado del cliente y JavaScript que permite programar del lado del cliente.

Dado que una de las funcionalidades de Zaitania es el mostrar el historial de usuarios y los resultados del análisis usando gráficos, para ello se usó la librería Highcharts v5.0.7 escrita en Javascript, ya que permite crear gráficos interactivos de forma sencilla.

7.1.2 Capa de Proceso

En cuanto a esta capa se usó Node.js v6.0.0 del lado del servidor, este funciona como un intermediario entre la presentación y los datos, permitiendo de esta forma una separación entre ellas, se utilizó Express como framework web para Node.js, ya que este permite que la construcción de la aplicación de forma flexible, rápida y sencilla.

Para el proceso de descarga se usó el API de Twitter, además de Python 2.7, que también fue usado como lenguaje de programación para el procesamiento de los Tweets descargados, ya que este tiene características que permiten que el procesamiento de lenguaje natural sea rápido y sencillo.

Como es necesario que los recursos léxicos usados para el procesamiento de Tweets sean leídos de forma rápida, se hizo uso de la base de datos clave/valor en memoria Redis v3.2, esta se conecta con Python y se gestiona desde Node.js.

Una de las funciones de la herramienta es ver tendencias de Twitter tanto de Colombia como de otros países de habla hispana, para ello se usó el API de Twitter junto con Node.js

Además, se usó Jade que es un preprocesador de código HTML, este se usó para realizar las vistas, puesto que es un motor de plantillas de alto rendimiento implementado por JavaScript para Node.js.

29

Para la comunicación de la capa de proceso con la capa de datos se utilizó mongoose que es una librería que permite la conexión entre Node.js y MongoDB.

7.1.3 Capa de Datos

En esta capa se usó MongoDB v3.2.13 que permite el almacenamiento de los datos en forma de documentos, esta base de datos se usó para almacenar toda la información de la herramienta Zaitania.

En la Figura No 7 se muestra la arquitectura aplicada a la herramienta para el análisis de opinión Zaitania1.

Figura No 7. Diagrama Arquitectural de la herramienta (Diseño propio)

__________________

1 Iconos tomados de: IconExperience profesional icons, fuente: https://www.iconexperience.com/, 2017

30

7.2 DESARROLLO METODOLÓGICO

Siguiendo la metodología XP para el desarrollo de la herramienta de software, se hizo una definición de los roles que se vieron involucrados en el desarrollo de todo el proyecto, además se presenta la documentación de cada una de las iteraciones que se hicieron durante todo el desarrollo.

Durante el desarrollo de las iteraciones se realizaron reuniones para definir historias de usuario, verificar el cumplimiento de tareas realizadas y definir lo que se debía seguir según sea el caso. La especificación de cada una de las reuniones realizadas se encuentra en el Anexo No 1 y de las tarjetas CRC utilizadas en el análisis se encuentra en el Anexo No 2.

7.2.1 Definición de Roles

En la Tabla No 6 se muestran los roles que se vieron involucrados durante el desarrollo del proyecto.

Tabla No 6. Roles para el desarrollo del proyecto (Diseño propio) Rol Encargado

Programador Daniel Ruiz, Yohana Delgado Cliente Sonia Ordoñez , Daniel Rui z, Yohana Delgado Encargado de pruebas (Tester) Yohana Delgado Encargado de seguimiento (Tracker) Daniel Ruiz Entrenador (Coach) Sonia Ordoñez

7.2.2 Definición de Usuarios

Los usuarios que interactúan en las diferentes funciones del sistema son los descritos en la Tabla No 7.

Tabla No 7. Usuarios (Diseño propio) Usuario Descripción Permisos sobre la aplicación

Administrador general

Persona encargada de gestionar recursos del sistema

- Crear, consultar y eliminar usuarios tipo administrador y administrador lexicón.

- Editar y consultar número máximo de Tweets . - Crear, consultar, eliminar y editar claves del API de Twitter . - Generar recursos léxicos. - Cambiar su contraseña.

Administrador lexicón

Será el encargado de la gestión del lexicón.

- Crear, consultar, eliminar y editar palabras de las versiones del lexicón diferentes de la original.

- Consultar versión original del lexicón. - Crear versión de lexicón. - Cambiar contraseña.

Administrador Será el encargado gestionar recursos del sistema excepto usuarios y recursos léxicos.

- Editar y consultar número máximo de Tweets. - Crear, consultar, eliminar y editar claves del API de Twitter . - Cambiar su con traseña.

Usuario final

Este actor representa a la persona que hará uso de las funcionalidades de la herramienta.

- Iniciar la ejecución del análisis de Hashtags. - Consultar historial Hashtags analizados. - Consultar tendencias de otras regiones en Twitter.

31

Los usuarios de administración del sistema son almacenados en una colección de la base de datos, estos cuentan con un nombre, username, contraseña y tipo de usuario. El tipo de usuario indica el rol por el cual se realiza la gestión de permisos sobre la aplicación y privilegios sobre las colecciones de la base de datos.

Los usuarios finales no son almacenados puesto que no es necesario, ya que estos interactúan únicamente con la herramienta para ejecutar el análisis y obtener los resultados. Los usuarios con el rol de administrador y de administrador del lexicón serán creados únicamente por el administrador general.

Cuando un usuario inicia sesión se verifica el tipo de rol que desempeña y accede con los privilegios que le correspondan, al realizar alguna funcionalidad el sistema primero verifica que el rol del usuario tenga los permisos necesarios para poder llevarla a cabo, de lo contrario le mostrará un mensaje de que no tiene los permisos para dicha funcionalidad.

Privilegios

Cada uno de estos usuarios cuenta con una serie de privilegios CRUD, para cada una de sus diferentes colecciones de la base de datos. Estos son descritos desde la Tabla No 8 hasta Tabla No 11.

La notación utilizada es la siguiente:

C: Crear

R: Consultar

U: Actualizar

D: Eliminar

S/P: Sin privilegios

Tabla No 8. Privilegios del administrador general (Diseño propio) No Colección Rol Privilegio Descripción

1 Análisis

Administrado

r gen

eral

S/P El administrador general no tendrá permisos sobre ningún campo de la colección Análisis.

2 Configuración C-R-U-D Solo podrá actualizar y consultar el campo de l número máximo de Tweets y realizar el CRUD a los campos de claves del API de Twitter.

3 Lexicón R El administrador general puede dar la orden de generar el lexicón.

4 Stopwords R El administrador general puede dar la orden de generar la lista de Stopwords.

5 Regiones S/P El administrador general no tendrá ningún privilegio sobre los campos de la colección Regiones.

6 Administrador C-R-U-D El administrador general puede crear y eliminar otros usuarios, además de actualizar su contraseña.

32

Tabla No 9. Privilegios del administrador lexicón (Diseño propio) No Colección Rol Privilegio Descripción

1 Análisis

Administrado

r lexicón

S/P El administrador lexicón no tendrá permisos sobre ningún campo de la colección Análisis.

2 Configuración S/P El administrador lexicón no tendrá permisos sobre ningún campo de la colección Configuración.

3 Lexicón C-R-U-D El administrador del lexicón podrá realizar el CRUD sobre los campos palabra y polaridad de la colección de Lexicón, así mismo podrá crear nuevas versiones del lexicón a partir de una versión anterior.

4 Stopwords S/P El administrador lexicón no tendrá permisos sobre ningún campo de la colección Stopwords.

5 Regiones S/P El administrador lexicón no tendrá permisos sobre ningún campo de la colección Regiones.

6 Administrador R-U El administrador del lexicón podrá actualizar su contraseña.

Tabla No 10. Privilegios del administrador (Diseño propio) No Colección Rol Privilegio Descripción

1 Análisis

Administrado

r

S/P El administrador no tendrá permisos sobre ningún campo de la colección Análisis.

2 Configuración C-R-U-D Solo podrá editar y consultar el campo de número máximo de Tweets y realizar el CRUD a los campos de claves del API de Twitter.

3 Lexicón S/P El administrador no tendrá permisos sobre ningún campo de la colección Lexicón.

4 Stopwords S/P El administrador no tendrá permisos sobre ningún campo de la colección Stopwords.

5 Regiones S/P El administrador no tendrá ningún privilegio sobre los campos de la colección Regiones.

6 Administrador R-U El administrador podrá actualizar su contraseña.

Tabla No 11. Privilegios del usuario final (Diseño propio) No Colección Rol Privilegio Descripción

1 Análisis

Usuario fin

al

R

El usuario final podrá ver únicamente los campos del documento que almacena los resultados del análisis y los campos de número máximo de Tweets descargados, el Hashtag analizado y la fecha en la que se realizó el análisis.

2 Configuración S/P El usuario final no tendrá ningún privilegio sobre la colección Configuración.

3 Lexicón S/P El usuario final no tendrá permisos sobre ningún campo de la colección Lexicón.

4 Stopwords S/P El usuario final no tendrá permisos sobre ningún campo de la colección Stopwords.

5 Regiones R El usuario final podrá ver las re giones al momento de consultar tendencias de otros países.

6 Administrador S/P El usuario final no tendrá ningún privilegio sob re la colección Administrador.

33

7.2.3 Primera Iteración

La primera iteración comprende el inicio del desarrollo de la herramienta, en ella se plantearon las historias de usuario iniciales que fueron el resultado de las reuniones hechas por el equipo y las tareas de ingeniería necesarias para su debido desarrollo, así como las pruebas de aceptación que fueron hechas para esta iteración.

La descripción general de cada una de las historias de usuario, tareas de ingeniería y pruebas de aceptación se especifican en el Anexo No 3.

Historias de usuario

La lista general de historias de usuario definidas para la primera iteración se muestra en la Tabla No 12.

Tabla No 12. Lista historias de usuario de la primera iteración (Diseño propio) N° Nombre historia de usuario Descripción Estado

1 Búsqueda y extracción de Tweets El sistema debe permitir realizar la búsqueda, descarga y almacenamiento de un conjunto de Tweets a partir de un Hashtag ingresado por el usuario final.

Aceptada

2 Estandarización de Tweets: Contenido El sistema debe eliminar los Tweets que hayan quedado repetidos del conjunto descargado . Aceptada

3 Identificación de frases en los Tweets El sistema deberá separar el contenido de los Tweets en frases. Aceptada

4 Eliminación de Stopwords El sistema debe eliminar las palabras vacías del contenido de las frases. Aceptada

5 Asignación de símbolos de polaridad El sistema debe reemplazar las palabras del contenido de las frases por su correspondiente símbolo de polaridad. Las palabras que no están en el lexicón no deben modificarse.

Aceptada

Esta iteración comprende la definición de las historias de usuario que permiten la descarga, pre-procesamiento y procesamiento de Tweets, en las historias se plantearon los pasos a seguir para el proceso de análisis. Una de las historias de usuario donde más se experimentó fue la de la estandarización de Tweets por contenido, pues esta requirió eliminar del contenido todo lo que no era necesario para su posterior procesamiento, tales como emojis, puntuación, URLs y menciones de usuario.

Las palabras vacías o Stopwords, son palabras que tienen un significado gramatical pero que carecen de significado léxico. En su mayoría pertenecen a categorías gramaticales cerradas, como preposiciones, artículos, pronombres, conjunciones y determinantes, aunque no se limitan solo a estos (Navarro Colorado, 2015).

La lista de Stopwords creada y utilizada para el funcionamiento de la herramienta cuenta con 62 palabras almacenadas en un archivo plano. En la Figura No 8 se muestran las primeras diez palabras de la lista de Stopwords creada.

34

Figura No 8. Ejemplo de la lista de Stopwords (Diseño propio)

El lexicón “Galeras” asigna a cada palabra una polaridad que puede ser positiva, negativa o neutral, además contiene adverbios con la clasificación de cuantificador o modificador que afectan la polaridad de la palabra que les sigue. Cuenta con 9797 palabras almacenadas en un archivo plano, al frente de cada palabra aparece su polaridad o tipo de adverbio tal como se observa en la Figura No 9.

Figura No 9. Ejemplo del lexicón Galeras (Diseño propio)

Tareas de ingeniería

El compendio de tareas que se realizaron para llevar a cabo cada una de las historias de usuario de esta iteración se describe en la Tabla No 13.

Tabla No 13. Listado de tareas de ingeniería de la primera iteración (Diseño propio) N° de tarea N° de historia Nombre de la tarea

1 1 Realizar Código de descarga de Tweets 2 2 Eliminar Tweets repetidos por ID 3 2 Eliminar Tweets repetidos por Contenido 4 3 Separar los Tweets en frases 5 4 Elaborar lista de Stopwords 6 4 Eliminar Stopwords de los Tweets 7 5 Reemplazar palabras por polaridad 8 5 Obtener raíz de las palabras 9 5 Probar etiquetador gramatical

35

Con el desarrollo de las tareas realizadas en esta iteración se obtuvieron los siguientes resultados:

• Descarga de los últimos Tweets que contienen el Hashtag ingresado. La información descargada de cada Tweet corresponde al ID, contenido y fecha que es almacenada en un archivo plano temporal, como se muestra en la Figura No 10.

Figura No 10. Ejemplo del archivo de descarga

• Eliminación de los Tweets que contenían un ID que ya había sido descargado.

• Eliminación de URLs, menciones, puntuación (excepto puntos a parte, seguidos y que cierren abreviaturas) y emojis del contenido de los Tweets.

• Eliminación de los Tweets que resultaron con el mismo contenido después de la anterior eliminación. Se almacena el ID seguido del contenido resultante de los Tweets en un archivo plano temporal, como se observa en la Figura No 11.

Figura No 11. Ejemplo del archivo después de la adecuación y estandarización

• Separación de los Tweets en frases cada vez que se encuentra un punto y asignación de un nuevo ID a partir del original. Se almacena el nuevo ID seguido del contenido de la frase de cada uno de los Tweets en un archivo plano temporal, como se ve en la Figura No 12.

Figura No 12. Ejemplo del archivo de separación de Tweets en frases

• Primera versión de la lista de Stopwords y su eliminación del contenido de los Tweets. Se almacena el ID y el contenido resultante de los Tweets en un archivo plano temporal.

36

• Reemplazo de las palabras por el símbolo de su polaridad correspondiente. Se almacena el ID seguido del contenido de los Tweets en un archivo plano temporal, como se aprecia en la Figura No 13.

Figura No 13. Ejemplo del archivo de reemplazo de palabras por símbolos

En la Figura No 14 se muestra un ejemplo del proceso de estandarización y asignación de polaridad a un Tweet, donde se elimina del Tweet original los emojis, signos de puntuación, menciones y URLs, luego se separa por frases donde se encuentra un punto y se asigna un nuevo ID a partir del original, por último, se reemplaza las palabras por su polaridad a partir del lexicón.

Figura No 14. Ejemplo procesamiento de Tweets (Diseño propio)

Pruebas de aceptación

En la Tabla No 14 se muestra la lista de pruebas que se realizaron para verificar el funcionamiento de las historias de usuario de esta iteración. Para cada prueba se tuvieron en cuenta los pasos necesarios para verificar su debido funcionamiento y su resultado esperado.

Tabla No 14. Listado pruebas de aceptación de la primera iteración (Diseño propio) N° prueba N° historia Nombre de la prueba Evaluación

1 1 Buscar y extraer Tweets de Hashtag ingresado Aprobada 2 2 Estandarizar y eliminar Tweets repetidos Aprobada 3 3 Separar por frases el contenido de los Tweets Aprobada 4 4 Suprimir Stopwords del contenido de los Tweets Aprobada 5 5 Asignar símbolos de polaridad a las palabras Aprobada

37

7.2.4 Segunda Iteración

En esta iteración se incluyen nuevas historias de usuario como resultado de las reuniones realizadas durante el final de la primera iteración, además se plantearon las tareas de ingeniería necesarias para su debido desarrollo y las pruebas de aceptación que fueron hechas para esta iteración.

La descripción general de cada una de las historias de usuario aceptadas, las tareas de ingeniería y las pruebas de aceptación se especifican en el Anexo No 4.

Historias de usuario

La lista general de historias de usuario definidas para la segunda iteración se muestra en la Tabla No 15.

Tabla No 15. Lista historias de usuario de la segunda iteración (Diseño propio) N° Nombre historia de usuario Estado 6 Adecuación del contenido de Tweets Aceptada 7-1 Separación de palabras utilizando registro histórico – modificada Modificada 7-2 Separación de palabras utilizando registro histórico – actualizada Actualizada 8 Separación de palabras por consonantes no permitidas Cancelada 9 Separación de palabras por analizador Cancelada

En esta iteración se realizaron los procesos que permitieron adecuar el contenido de los Tweets con el fin de identificar más palabras con polaridad, algunas de estas historias de usuario fueron canceladas puesto que los resultados obtenidos no fueron satisfactorios, las razones por las cuales fueron canceladas se muestran en la Tabla No 16 y Tabla No 17.

Tabla No 16. Historia de usuario N° 8: Cancelada (Diseño propio) Historia de usuario N° 8 Fecha Cancelación 14/12/2016 Razón Cancelación: La lista de combinaciones permitidas en español solo incluye las letras seguidas

dentro de una misma sílaba (br, pl, etc), pero no se incluyen las letras que finalizan una sílaba y la letras del comienzo de otras (Adstringir se separa Ad -s-trin-gir)

Tabla No 17. Historia de usuario N° 9: Cancelada (Diseño propio) Historia de usuario N° 9 Fecha Cancelación 14/12/2016 Razón Cancelación: Las herramientas encontradas para usa r como diccionario y verificar las

subsecuencias de las palabras pegadas no tuvieron buenos resultados. El API online tenían un límite diario de consultas el cual era muy bajo para lo requerido y la librería presentaba errores de funcionamiento.

Tareas de ingeniería

El compendio de tareas que se realizaron para llevar a cabo cada una de las historias de usuario de la segunda iteración se describe en la Tabla No 18.

38

Tabla No 18. Listado de tareas de ingeniería de la segunda iteración (Diseño propio) N° de tarea N° de historia Nombre de la tarea

10 6 Separar palabras de caracteres 11 6 Eliminar letras repetidas seguidas 12 9 Crear listado de palabras que deben separarse 13 8 Separar combinaciones de consonantes no permitidas 14-1 7-1 Separar palabras repetidas a partir de historial - modificada 14-2 7-2 Separar palabras repetidas a partir de historial - actualizada 15 9 Separar palabras usando diccionario

Al desarrollar las tareas de ingeniería se obtuvieron los siguientes resultados:

• Separación de palabras pegadas a caracteres tales como números, letras minúsculas seguidas de mayúsculas y otros caracteres que no son letras.

• Eliminación de letras repetidas seguidas dentro de las palabras.

• Creación de un listado de las palabras que fueron separadas, cuando se separaron letras minúsculas seguidas de mayúsculas, con el fin de separar palabras que no presentaban el mismo patrón (minMayus), ya que al aplicar esta regla se identificó que se separaban palabras que no debían hacerlo, por ello se optó separar solamente las palabras que fueran Hashtag y crear el listado de separación con estas.

• Cancelación de las historias de usuario N° 8 y N° 9 puesto que no se obtuvieron los resultados deseados.

En la Figura No 15 se muestra un ejemplo de adecuación de las palabras de un Tweet, donde además de mostrar el proceso de estandarización y asignación de polaridad, se separa las palabras de los números, las que presentan el patrón minMayus y se eliminan las letras seguidas que están repetidas tres veces o más.

Figura No 15. Ejemplo de adecuación de palabras del Tweet (Diseño propio)

39

Pruebas de aceptación

En la Tabla No 19 se muestra la lista de pruebas que se realizaron para verificar el funcionamiento de las historias de usuario que fueron aprobadas de esta iteración.

Tabla No 19. Listado pruebas de aceptación de la segunda iteración (Diseño propio) N° prueba N° historia Nombre de la prueba

6 6 Adecuar contenido de Tweets 7 7-2 Separar palabras utilizando registro histórico

7.2.5 Tercera Iteración

Esta iteración la comprenden dos nuevas historias de usuario que surgieron como resultado de la reunión realizada al final de la segunda iteración, además se plantearon las tareas de ingeniería necesarias para su debido desarrollo y las pruebas de aceptación que fueron hechas para esta iteración.

La descripción general de cada una de las historias de usuario, tareas de ingeniería y pruebas de aceptación se especifican en el Anexo No 5.

Historias de usuario

La lista general de historias de usuario definidas para la tercera iteración se muestra en la Tabla No 20.

Tabla No 20. Lista historias de usuario de la tercera iteración (Diseño propio) N° Nombre historia de usuario Estado 10 Obtención del grado de favorabilidad del Hashtag ingresado Aceptada 11 Asignación de polaridad de expresiones comunes Aceptada

En esta iteración se realizó la asignación del valor de favorabilidad a la frase del Tweet, para ello se experimentó con varios métodos (ver Tabla No 21) y se eligió el que arrojó los mejores resultados. También se identificaron expresiones comunes donde los adverbios afectan la polaridad de las palabras que le siguen.

Tareas de ingeniería

El compendio de tareas que se realizaron para llevar a cabo cada una de las historias de usuario de esta iteración se describe en la Tabla No 21 y tienen como objetivo determinar la métrica que arroja un resultado más cercano a la verdadera polaridad. El logro de cada una de estas tareas se explica más adelante en el capítulo de EXPERIMENTACIÓN.

40

Tabla No 21. Listado de tareas de ingeniería de la tercera iteración (Diseño propio) N° de tarea N° de historia Nombre de la tarea

16 10 Calcular grado de favorabilidad por frecuencia de símbolos 17 10 Calcular grado de favorabilidad por multiplicación de símbolos 18 10 Calcular grado de favorabilidad por ponderación de símbolos y palabras 19 10 Calcular grado de favorabilidad por compuertas lógicas 20 11 Detectar expresiones comunes para asignarles su polaridad 21 11 Asignar polaridad a partir de la resolución de adverbios 22 10 Calcular grado de favorabilidad por ponderación de símbolos

Con el desarrollo de las tareas realizadas en esta iteración se obtuvieron los siguientes resultados:

• Formulación e implementación del método para asignar la polaridad a las expresiones comunes a partir de la identificación de adverbios que modifiquen o refuercen la polaridad de la siguiente palabra. Los adverbios que refuerzan la polaridad (cuantificadores) de la siguiente palabra se les asignó el símbolo “$” y a los que la invierten (modificadores) se les asignó el símbolo “%”.

• Elección del método para asignar un valor a cada una de las frases de los Tweets y obtener el grado de favorabilidad del Hashtag analizado. Se almacena el ID seguido del valor asignado a la frase de cada uno de los Tweets en un archivo plano temporal, como se muestra en la Figura No 16.

Figura No 16. Ejemplo del archivo de asignación de favorabilidad a las frases

En la Figura No 17 se muestra un ejemplo de la resolución de expresiones comunes y la obtención del valor de favorabilidad de un Tweet, donde el resultado del proceso de adecuación y estandarización es la separación del Tweet en tres frases diferentes. Luego de que los adverbios sean reemplazados por sus respectivos símbolos (“muy” por “$”, “poco” y “no” por “%”) en la asignación de polaridad, se resuelven de la siguiente manera:

Luego se realizó la asignación de favorabilidad a cada una de las frases utilizando el método de ponderación de símbolos, el cual se describe en la Tabla No 34 (Método No 1). La ecuación de asignación de favorabilidad por ponderación de símbolos que fue formulada durante el desarrollo del proyecto es la siguiente:

41

𝑉𝑉𝑉𝑉 =�∑𝑆𝑆𝑆𝑆 − ∑𝑆𝑆𝑆𝑆

∑𝑆𝑆𝑆𝑆 � + 1

2

Fuente: Diseño propio

Donde:

• 𝑉𝑉𝑉𝑉: Valor de la favorabilidad.

• ∑𝑆𝑆𝑆𝑆: Sumatoria de símbolos positivos.

• ∑𝑆𝑆𝑆𝑆: Sumatoria de símbolos negativos.

• ∑𝑆𝑆𝑆𝑆: Sumatoria del total de símbolos.

• Para que el resultado quede en el rango de 0 a 1 se le debe sumar una unidad y dividir en dos.

Al aplicar la fórmula a la segunda frase, la cual tiene dos símbolos positivos, ninguno negativo y uno neutral, se obtiene que:

𝑉𝑉𝑉𝑉 =�2 − 0

3 � + 12

= 0.833333333333

Figura No 17. Ejemplo resolución de expresiones comunes y asignación de valor de favorabilidad. (Diseño propio)

42

Pruebas de aceptación

En la Tabla No 22 se muestra la lista de pruebas que se realizaron para verificar el correcto funcionamiento de las historias de usuario de esta iteración.

Tabla No 22. Listado pruebas de aceptación de la tercera iteración (Diseño propio) N° prueba N° historia Nombre de la prueba

8 10 Obtener valor de favorabilidad por frases 9 10 Obtener grado de favorabilidad total del Hashtag ingresado 10 11 Asignar polaridad de expresiones comunes

7.2.6 Cuarta Iteración

En este apartado se dan a conocer las nuevas historias de usuario que fueron el resultado de las reuniones hechas al finalizar la tercera iteración, además se muestra las tareas de ingeniería que fueron necesarias para su debido desarrollo y las pruebas de aceptación para dar terminadas las historias de usuario.

La descripción general de cada una de las historias de usuario, tareas de ingeniería y pruebas de aceptación se especifican en el Anexo No 6.

Historias de usuario

La lista general de historias de usuario definidas para la cuarta iteración se muestra en la Tabla No 23.

Tabla No 23. Lista historias de usuario de la cuarta iteración (Diseño propio) N° Nombre historia de usuario Estado 12 Mostrar resultados de análisis de opinión en ambiente web Aceptada 13 Mostrar historial de favorabilidad después de análisis Aceptada 14 Mostrar registro histórico de un Hashtag buscado Aceptada 15 Creación módulo de administración del sistema Aceptada

Esta iteración fue el inicio del desarrollo del ambiente Web de la aplicación, inicialmente se plantearon las historias de usuario que permitían mostrar al usuario final los resultados obtenidos del análisis realizado, consultar el registro histórico de análisis anteriores y la creación de un módulo administrador que permite al usuario administrador general gestionar recursos del sistema.

Tareas de ingeniería

El compendio de tareas que se realizaron para llevar a cabo cada una de las historias de usuario de esta iteración se describe en la Tabla No 24.

43

Tabla No 24. Listado de tareas de ingeniería de la cuarta iteración (Diseño propio). N° de tarea N° de historia Nombre de la tarea

23 12 Validar existencia de Tweets de Hashtags ingresados 24 12 Crear la interfaz para realizar el análisis 25 12 Crear la interfaz para mostrar resultados del análisis 26 12 Crear esquema en la base de datos de resultados de análisis 27 14 Crear la interfaz para mostrar el registro histórico de Hashtag buscado 28 12 Disminuir tiempo de respuesta para mostrar resultados 29 12 Guardar información procesamiento y pre -procesamiento en la BD 30 13 Crear interfaz historial de favorabilidad después de análisis 31 15 Crear esquema en la base de datos del usuario administrador 32 15 Crear esquema en la base de datos de parámetros del sistema 33 15 Crear interfaz de login para ingreso al módulo de administración 34 15 Crear interfaces de parametrización: número máximo de Tweets 35 15 Crear interfaces de parametrización: claves del API de Twitter 36 12 Variar claves del API de Twitter 37 15 Crear interfaz para editar contraseña 38 15 Gestionar sesión de usuario administrador

Al desarrollar las tareas de ingeniería se obtuvieron los siguientes resultados:

• Almacenamiento de los datos en los esquemas de la base de datos correspondientes al análisis, parámetros iniciales del sistema y a los datos del administrador.

• Disminución del tiempo de respuesta para mostrar resultados al usuario final, implementando el análisis en paralelo cuando se ingresan dos o tres Hashtag.

• Creación de las interfaces de usuario que permiten realizar el análisis de los personajes (Figura No 18), mostrar los resultados obtenidos (Figura No 19) y consultar el historial de los Hashtags recién analizados al usuario final (Figura No 20).

44

Figura No 18. Interfaz de análisis

Figura No 19. Interfaz de resultados del análisis

45

Figura No 20. Interfaz del historial conjunto de los Hashtags analizados

• Creación de la interfaz de usuario que permite consultar el historial de un Hashtag ingresado (Figura No 21).

Figura No 21. Interfaz del historial de análisis anteriores

46

• Creación de las interfaces de usuario que permite editar el número máximo de Tweets a descargar (Figura No 22), gestionar las claves del API de Twitter (Figura No 23 y Figura No 24) y actualizar la contraseña al administrador general (Figura No 25).

Figura No 22. Interfaz de edición del número máximo de Tweets a descargar

Figura No 23. Interfaz del menú de gestión de las claves del API de Twitter

Figura No 24. Interfaz de creación de claves del API de Twitter

47

Figura No 25. Interfaz de actualización de contraseña

• Variación de las claves del API de Twitter para cada análisis.

Pruebas de aceptación

En la Tabla No 25 se muestra la lista de pruebas que se realizaron para verificar el correcto funcionamiento de las historias de usuario de esta iteración.

Tabla No 25. Listado pruebas de aceptación de la cuarta iteración (Diseño propio) N° prueba N° historia Nombre de la prueba

11 12 Mostrar resultados de análisis de opinión en ambiente web 12 13 Mostrar historial de favorabilidad después de análisis 13 14 Mostrar registro histórico de un Hashtag buscado 14 15 Autenticar usuario administrador en el sistema 15 15 Editar parámetro: Número máximo de Tweets 16 15 Editar parámetro: Claves del API de Twitter 17 15 Crear parámetro: Claves del API de Twitter 18 15 Eliminar parámetro: Claves del API de Twitter

7.2.7 Quinta Iteración

Esta iteración la comprenden nuevas historias de usuario que fueron el resultado de la reunión realizada al final de la cuarta iteración, además se plantearon las tareas de ingeniería necesarias para su debido desarrollo y las pruebas de aceptación que fueron hechas para esta iteración.

La descripción general de cada una de las historias de usuario, tareas de ingeniería y pruebas de aceptación se especifican en el Anexo No 7.

Historias de usuario

La lista general de historias de usuario definidas para la quinta iteración se muestra en la Tabla No 26.

48

Tabla No 26. Lista historias de usuario de la quinta iteración (Diseño propio) N° Nombre historia de usuario Estado 16 Creación opción de gestión de usuarios Aceptada 17 Mostrar estadísticas del uso de la aplicación Aceptada 18 Integración de Twitter en la interfaz de resultados Cancelada 19 Mostrar las tendencias en español de Twitter Aceptada 20 Optimización de lectura de los recursos léxicos Aceptada 21 Creación módulo de administración del lexicón Aceptada

En esta iteración se plantearon las historias de usuario que permiten consultar las tendencias de Twitter por países de habla hispana, gestionar usuarios del sistema, optimizar la lectura de los recursos léxicos y la creación del módulo que permite gestionar nuevas versiones del lexicón. En la Tabla No 27 se muestra la explicación de la razón por la cual fue cancelada la historia de usuario N° 18.

Tabla No 27. Historia de usuario N° 18: Cancelada (Diseño propio) Historia de usuario N° 18 Fecha Cancelación 14/12/2016 Razón Cancelación: El Widget de Twitter que se integra a las páginas web no permite cambiar su valor

de búsqueda dinámicamente, por lo que no se puede mostrar los últimos Tweets de un Hashtag en específico.

Tareas de ingeniería

El compendio de tareas que se realizaron para llevar a cabo cada una de las historias de usuario de esta iteración se describe en la Tabla No 28.

Tabla No 28. Listado de tareas de ingeniería de la quinta iteración (Diseño propio) N° de tarea N° de historia Nombre de la tarea

39 16 Crear interfaz de gestión de usuarios 40 17 Crear contador de análisis realizados 41 18 Probar integración de Twitter en la pá gina 42 19 Mostrar tendencias de Colombia en la interfaz principal 43 19 Mostrar tendencias de países hispanos 44 20 Crear interfaz para subir a memoria los recursos léxicos. 45 20 Crear esquema en la base de datos de recursos léxicos. 46 17 Mostrar los Hashtag más buscados 47 21 Crear interfaz de login para ingreso al módulo gestión del lexicón 48 21 Mostrar lista de versiones del lexicón y cargar listado de palabras 49 21 Crear interfaz de creación de versiones del lexicón 50 21 Crear interfaces de gestión de palabras del lexicón

Con el desarrollo de las tareas realizadas en esta iteración se obtuvieron los siguientes resultados:

• Creación de la interfaz de usuario que permite consultar las tendencias de Twitter por países de habla hispana al usuario final (Figura No 26).

49

Figura No 26. Interfaz de consulta de tendencias de países de habla hispana

• Creación de la interfaz de usuario que permite gestionar usuarios del sistema al administrador general (Figura No 27 y Figura No 28).

Figura No 27. Interfaz de gestión de usuarios para el administrador general

50

Figura No 28. Interfaz de creación de un nuevo usuario

• Almacenamiento de los datos en los esquemas de la base de datos correspondientes a los recursos léxicos (Lexicón y Stopwords).

• Creación de la interfaz de usuario que permite crear nuevas versiones del lexicón (Figura No 29) y gestionar sus palabras al administrador del lexicón (Figura No 30 y Figura No 31).

Figura No 29. Interfaz de creación de nuevas versiones del lexicón

51

Figura No 30. Interfaz de la lista de palabras de la versión del lexicón

Figura No 31. Interfaz para agregar nuevas palabras a la versión del lexicón

• Creación de la interfaz de usuario que permite actualizar los recursos léxicos en memoria principal (Figura No 32).

52

Figura No 32. Interfaz de actualización de recursos léxicos

• Mostrar las estadísticas de uso de la aplicación (Figura No 33 y Figura No 34).

Figura No 33. Listado de Hashtags más analizados

Figura No 34. Número de análisis realizados por la aplicación

53

Pruebas de aceptación

En la Tabla No 29 se muestra la lista de pruebas que se realizaron para verificar el correcto funcionamiento de las historias de usuario de esta iteración.

Tabla No 29. Listado pruebas de aceptación de la quinta iteración (Diseño propio) N° prueba N° historia Nombre de la prueba

19 16 Crear usuario administrador o administrador lexicón 20 16 Eliminar usuario administrador o administrador lexicón 21 17 Mostrar estadísticas del uso de la aplicación 22 19 Mostrar las tendencias en español de Twitter 23 20 Cargar lexicón a memoria principal 24 20 Cargar Stopwords a memoria principal 25 21 Autenticar usuario administrador del lexicón en el sistema 26 21 Crear nueva versión del lexicón 27 21 Crear nueva palabra a la versión del lexicón 28 21 Editar palabra de la versión del lexicón 29 21 Eliminar palabra de la versión del lexicón

7.3 FUNCIONAMIENTO DE LA HERRAMIENTA

Para poder visualizar, especificar y complementar el diseño del prototipo de la herramienta de software que permite realizar Minería de Opinión en español utilizando un motor de bases de datos no relacional, se hace uso de algunos diagramas del lenguaje gráfico para el modelado de sistemas de software, UML.

A continuación se muestran los diagramas que se creyeron necesarios para poder representar de forma ágil y entendible el sistema.

7.3.1 Diagramas de actividades

Los diagramas de actividades permiten ver el proceso de software como un flujo de trabajo de inicio a fin, en ellos se muestra la secuencia de actividades que son necesarias para cumplir con una tarea junto con las decisiones que se presentan durante la ejecución de los eventos de la actividad.

En la Figura No 35 se muestra el diagrama de actividades más relevante de la funcionalidad principal con la que interactúa el usuario final la cual es el análisis de Hashtags, en este diagrama las acciones y decisiones en color gris representan las que son realizadas por el usuario final de la herramienta, y las que no tienen ningún color son las hechas por el sistema.

La actividad de realizar análisis comienza cuando el usuario final ingresa los Hashtags a analizar, luego la página web realiza una verificación de las entradas ingresadas, si estas son válidas envía la solicitud de análisis al servidor, de lo contrario muestra un mensaje de error indicando los caracteres que no son permitidos. El servidor, al recibir la solicitud de análisis, varía las claves del API de Twitter (Consumer Key y Consumer Secret), elimina los Hashtags ingresados que

54

estén repetidos e inicia el proceso de análisis en paralelo para cada uno de los Hashtags.

El recuadro punteado representa las acciones del proceso de análisis que se realiza en paralelo para cada uno de los Hashtags:

• Se comienza enviando una consulta a Twitter para verificar la existencia de Tweets que contengan el Hashtag, si no existen, se retorna un mensaje de error.

• Si existen Tweets para el Hashtag, se realiza una serie de consultas a Twitter que permiten la descarga de los Tweets en un archivo temporal hasta que se alcance el número máximo de su descarga o no haya más por descargar, en este proceso se verifica que no se descarguen Tweets repetidos por ID.

• Sigue la fase de pre-procesamiento con la estandarización del contenido de los Tweets, donde se leen los Tweets descargados del archivo temporal y se les elimina de su contenido emojis, URLs, menciones y caracteres no ingleses. El resultado es almacenado en un nuevo archivo temporal.

• En la adecuación del contenido de Tweets se lee el archivo de Tweets estandarizados para eliminar letras y puntos que aparecen más de dos veces seguidas, realizar la separación de palabras de números, separar letras minúsculas seguidas de mayúsculas y eliminar signos de puntuación. El resultado es almacenado en un nuevo archivo temporal.

• Después de la estandarización y adecuación del contenido de los Tweets se realiza una eliminación de Tweets que hayan quedado repetidos por su contenido. El resultado es almacenado en un nuevo archivo temporal.

• Se comprueba si la lista de Stopwords esta almacenada en Redis, si no está la lista se lee del archivo temporal de respaldo y se almacena en Redis.

• Luego de obtener la lista de Stopwords se lee el archivo de Tweets sin repetir por contenido y se le eliminan las palabras vacías. El resultado es almacenado en un nuevo archivo temporal.

• Se lee el archivo de Tweets al que se les eliminó las Stopwords y se separan en frases cada vez que se encuentre un punto. En este proceso a cada Tweet se le genera un nuevo ID a partir de su ID original y el resultado se guarda en un nuevo archivo temporal.

• Se comprueba si el lexicón está almacenado en Redis, si no está se lee del archivo temporal de respaldo y se almacena en Redis.

55

• Luego de obtener el lexicón se lee el archivo de Tweets separados en frases y se realiza la asignación de polaridad a las palabras del contenido de los Tweets, donde se busca cada palabra en el lexicón y, si existe, es reemplazada por el símbolo de su correspondiente polaridad. El resultado es almacenado en un nuevo archivo temporal.

• Se lee el archivo de Tweets con la asignación de polaridad y se realiza la asignación del valor de favorabilidad a cada una de las frases de los Tweets. El resultado es almacenado en un nuevo archivo temporal.

• Posteriormente, se lee el archivo de asignación de favorabilidad de las frases de los Tweets y se obtiene el grado de favorabilidad total. Después, se retorna el resultado del análisis y luego se realiza la actividad de asentar datos, esta consiste en leer la información de los archivos temporales que fueron creados durante el pre-procesamiento y procesamiento de Tweets, para guardarla en la base de datos junto con el resultado obtenido del análisis y finalmente se eliminan estos archivos.

Al finalizar los procesos de análisis ejecutados en paralelo se verifica si hubo resultados al menos para uno de los Hashtags, si se obtuvieron, se inicia la acción de preparar los datos a mostrar, estos datos son los correspondientes al número de frases que fueron analizadas, el Hashtag analizado y el grado de favorabilidad obtenido; en caso contrario se muestra un mensaje al usuario indicando que no se encontraron Tweets para la consulta realizada.

Luego, en paralelo, se actualiza el contador de análisis realizados y se muestra en una gráfica y una tabla los resultados del análisis al usuario final, junto con la opción de consultar el historial conjunto de los Hashtags analizados.

Los diagramas de consultar historial individual e historial conjunto de los Hashtags analizados, los de buscar tendencias de otros países y los de los módulos administración del sistema y administración del lexicón se encuentran en el Anexo No 8.

56

Figura No 35. Diagrama de actividades N° 1 (Diseño propio)

7.3.2 Diagramas de secuencia

Estos diagramas representan la forma de interacción entre los diferentes elementos que componen el sistema, en ellos se muestra la interacción de envío y recepción de mensajes en el sistema a través del tiempo.

En la Figura No 36 y Figura No 37 se muestran los diagramas más relevantes de la funcionalidad principal con la que interactúa el usuario final la cual es el análisis de Hashtags.

En el diagrama de la Figura No 36 el usuario ingresa los Hashtags a analizar en la página web, el servidor detecta la solicitud por medio de la “Interfaz análisis” e indica el inicio del procesamiento al controlador “Gestionar análisis”, el cual obtiene las claves del API de Twitter (Consumer Key y Consumer Secret) de la cola de claves e inicia el proceso de gestión de análisis con la eliminación de los Hashtags que se

57

repiten entre sí. Después inicia el proceso de análisis en paralelo de los Hashtags al pasar cada uno de estos al controlador “Procesar Hashtags” junto con las claves del API y el número máximo de Tweets a descargar.

Se utilizó la función parallel de la librería Async de NodeJS para ejecutar el análisis en paralelo de los hashtags ingresados, parallel ejecuta una colección de funciones asíncronas y espera a que todas hayan finalizado (mediante llamadas de retorno) para retornar los resultados de los análisis. Si alguna de las funciones retorna un error, parallel devuelve el valor del error en su retorno.

El diagrama de la Figura No 37 muestra el proceso que se realiza en paralelo para cada uno de los Hashtags: el controlador “Procesar Hashtags” inicia la ejecución del controlador principal “Gestor Scripts”, el cual comienza una serie de envíos y recepciones de mensajes con los controladores de los “Scripts” de la siguiente manera:

• El controlador principal envía el mensaje “buscar” al controlador de descarga con las claves del API, el Hashtag a analizar, el número máximo de descarga y la ruta donde se guardarán los archivos temporales de procesamiento. El controlador de descarga verifica la existencia de Tweets del Hashtag al enviar una consulta a Twitter, si la respuesta es positiva comienza a realizar consultas a Twitter hasta que se alcance el número máximo de descarga de Tweets o no haya más por descargar. Luego retorna la respuesta al controlador principal.

• Si existen Tweets, el controlador principal inicia “obtener resultados” con el envío del mensaje “estandarizar Tweets” al controlador de pre-procesamiento, el cual, después de estandarizar y adecuar el contenido de los Tweets, realiza una eliminación de los que hayan quedado repetidos por contenido.

• El controlador principal envía el mensaje de “eliminar Stopwords de Tweets” al controlador de pre-procesamiento, que solicita la lista de Stopwords a Redis y, cuando este se la retorna, realiza la eliminación de palabras vacías del contenido de los Tweets y luego los separa por frases.

• El procesamiento continúa con el envío del mensaje de “asignar polaridad” del controlador principal al controlador de asignación de polaridad, que solicita el lexicón a Redis y, cuando este lo retorna, realiza la asignación de polaridad a las palabras del contenido de los Tweets.

• Después, el controlador principal envía el mensaje de “obtener estadísticas” al controlador de asignación de favorabilidad, el cual obtiene el grado de favorabilidad del conjunto de Tweets analizado y retorna los resultados al controlador principal.

58

• Posteriormente, el controlador principal retorna los resultados obtenidos del análisis de los Tweets correspondientes al Hashtag al controlador “Procesar Hashtags” y este les realiza una primera adecuación para poder mostrarlos apropiadamente al usuario.

De regreso a la Figura No 36, después de que el controlador “Procesar Hashtags” recibe los resultados del análisis, los retorna al controlador “Gestionar análisis” y envía el mensaje de “guardar datos” al controlador “Gestionar guardado”, el cual lee la información de los archivos temporales, la envía a la base de datos (MongoDB) para que sean almacenados y por último elimina los archivos temporales.

Cuando el controlador “Gestionar análisis” termina de recibir los mensajes de retorno con los resultados de cada uno de los procesos ejecutados en paralelo, prepara los resultados del análisis, los retorna a la “Interfaz análisis” y actualiza el contador de análisis realizados. Finalmente, la interfaz al recibir los resultados del análisis los muestra al usuario final.

Los diagramas de consultar historial individual e historial conjunto de los Hashtags analizados, los de buscar tendencias de otros países y los de los módulos administración del sistema y administración del lexicón se encuentran en el Anexo No 8.

59

Figura No 36. Diagrama de secuencia N° 1 (Diseño propio)

60

Figura No 37. Diagrama de secuencia N° 2 (Diseño propio)

61

7.4 MODELO DE DATOS

7.4.1 Redis

Se hizo uso de la base de datos NoSQL en memoria Redis, ya que esta permite que la lectura y actualización de los recursos léxicos usados en el análisis (Lexicón y Stopwords) se haga de forma rápida, puesto que ahorra tiempo y utilización de recursos al evitar que se realicen consultas frecuentes a la base de datos principal (MongoDB).

En la Figura No 38 se presenta una representación del modelo de datos clave/valor en Redis, donde el String serializado de las Stopwords es la lista de las palabras vacías y el diccionario serializado del lexicón es una tabla hash donde la clave es la palabra y el valor la clasificación.

Figura No 38. Modelo de datos de Redis (Diseño propio)

7.4.2 Mongo

Se utilizó el sistema de Base de Datos NoSQL MongoDB para almacenar los datos de forma orientada a documentos correspondiente a la herramienta de análisis de opinión “Zaitania”, el modelo implementado se muestra en la Figura No 39, este fue resultado del proceso de análisis de las historias de usuario.

Cada tabla representa una colección, donde en la primera fila se muestra el nombre de la colección, en la segunda los campos con su tipo, y en la tercera los índices si los hay.

La “U” indica que el campo es único, el “*” indica que el campo es requerido, los documentos embebidos son representados por medio de tablas anidadas y las relaciones entre estas.

El diccionario de datos del modelo se especifica en el Anexo No 9.

62

Figura No 39. Modelo de Datos de MongoDB (Diseño propio)

63

8 EXPERIMENTACIÓN

Esta fase comprendió el trabajo experimental realizado durante la descarga, estandarización, asignación de polaridad y de favorabilidad de los Tweets.

El objetivo principal de la experimentación fue obtener el contenido estandarizado de los Tweets, es decir, la eliminación y adecuación de las palabras y caracteres que no aportan ningún valor al momento de obtener el grado de favorabilidad del Hashtag analizado, puesto que se busca que los resultados sean los más acertados posibles.

A continuación se muestran los pasos realizados para el procesamiento de los Tweets, los diferentes métodos usados y los resultados obtenidos con cada uno de ellos.

8.1 COLECCIÓN DE PRUEBA

La colección usada para la realización de pruebas fue obtenida de la descarga de conjuntos de Tweets que contenían un Hashtag determinado, estos son definidos como etiquetas que inician con el símbolo “#” y sirven para marcar temas, conceptos y términos.

Para la descarga fue necesario el uso del API de Twitter, este fue utilizado para obtener el contenido de los Tweets, la fecha en el cual fueron publicados y el ID único que Twitter le asigna a cada uno de ellos.

Se descargaron Tweets de 26 personajes del mundo político y deportivo que estaban siendo tendencia en Colombia durante el año 2016. En la Tabla No 30 se muestra la cantidad de Tweets descargados para cada personaje.

64

Tabla No 30. Cantidad de Tweets descargados por personaje (Diseño Propio) No Evento Personaje (Hashtag) N° Tweets descargados 1

Eliminatorias Rusia 2018

JamesRodríguez 102 2 Neymar 530 3 Bacca 86 4 MarlosMoreno 17 5 StefanMedina 540 6

Juegos Olímpicos Rio 2016

CaterineIbarguen 5366 7 IngridValencia 164 8 MarianaPajon 7576 9 LuisJavierMosquera 69 10 OscarFigueroa 274 11 YuberjenMartinez 5821 12 YuriAlvear 95 13 CarlosRamirez 1210 14

Plebiscito por la paz 2016 Santos 914

15 Uribe 389 16 Timochenko 59 17

Vuelta a España 0 2/09/2016

NairoDeVuelta 199 18 Nairoman 456 19 Froome 116 20 EstebanChavez 5 21 Valverde 21 22

Vuelta a España 07 /09/2016

NairoDeVuelta 578 23 Nairoman 205 24 Froome 317 25 Chavito 205 26 AlbertoContador 54

Total 25368

Se observó que algunos de los Tweets descargados quedaban repetidos (ID, contenido y fecha) y otros se repetían solo por su contenido, primero se estaban eliminando los Tweets repetidos por ID después de su descarga, luego se optó por evitar guardarlos al comprobar si ya habían sido descargados con el uso de un diccionario hash donde se almacenó el ID de los Tweets. Algunos ejemplos de los Tweets descargados para la colección de prueba se muestran en el Anexo No 10.

8.2 PRE-PROCESAMIENTO

El pre-procesamiento comenzó con la estandarización y adecuación del contenido de los Tweets. La estandarización consistió en eliminar todos los caracteres que no aportan al contenido del Tweet, tales como emojis, URLs y menciones. En la adecuación se realizó la eliminación de letras y puntos que aparecían más de dos veces seguidas, tal como se muestra en los ejemplos de la Tabla No 31.

65

Tabla No 31. Ejemplo implementación eliminar letras seguidas (Diseño propio) Ejemplos de implementación Goooollll Gol Vamossss vamos entregaaaaaaa entrega vayaaaaaaaa vaya locoooooo loco campeón... campeón.

En la adecuación también se realizó la separación de palabras que pueden aportar a la polaridad del Tweet y la eliminación de signos de puntuación, para este fin se tuvo en cuenta las reglas de la Tabla No 32, estas surgieron al revisar la primera versión de descarga.

Tabla No 32. Reglas de adecuación del contenido de Tweets (Diseño propio) Regla de

separación Descripción Ejemplos de implementación

Números de Letras Consiste en separar palabras donde se escribieron números en medio, al principio o al final de la palabra.

EliminatoriasRusia2018 Eliminatorias Rusia 2018 Rio2016 Rio 2016 vuelta2016 Vuelta 2016 Somos4tosYque Somos 4 tosYque

Minúscula de mayúscula

Consiste en separar palabras unidas que tengan el estilo minMayus, esta regla se aplicó únicamente a los Hashtags , puesto que al implementarla a todas las palabras se notó que no funciona correctamente al crear la lista de palabras separadas, debido a que hay usuarios de Twitter que no tienen en cuenta las reglas ortográficas al momento de escribir.

#LaVueltaxESPN # La Vuelta x ESPN

#VamosColombia # Vamos Colombia

#ElMundoEstaLoco # El Mundo Esta Loco

#GranColombiano # Gran Colombiano

#SeleccionColombia # Seleccion Colombia

#EspirituOlimpico # Espiritu Olimpico

Eliminación de signos de

puntuación

Consiste en eliminar signos de puntuación de las frases de los Tweets , excepto el punto “.” después de las palabras, y el numeral “#”, al principio de la palabra.

todo!!! Todo

Sra.Buenos Sra. Buenos

#vamos#Colombia #vamos #Colombia

Después de la adecuación se realizó la eliminación de Tweets repetidos por contenido y de las Stopwords (palabras vacías), además la separación por frases del contenido de los Tweets.

8.3 ASIGNACIÓN DE POLARIDAD

Para la asignación de polaridad se hizo uso del lexicón de sentimientos “Galeras”, que contiene las polaridades positivas, negativas y neutrales, además de la clasificación de adverbios en cuantificadores y modificadores.

El proceso de asignación de polaridad consistió en buscar las palabras de las frases de los Tweets en el lexicón, si existían fueron reemplazadas por un símbolo (+,-,*, $ %) de acuerdo a su clasificación, en caso contrario se dejaron las palabras sin modificar. En la Tabla No 33 se muestra el símbolo asignado a las polaridades y a los adverbios.

66

Tabla No 33. Reemplazo de símbolos (Diseño propio) Tipo Clasificación Símbolo

Polaridad Negativo - Positivo + Neutral *

Adverbio Cuantificadores $ Modificadores %

Luego se resolvió el resultado obtenido de tal forma que los símbolos resultantes correspondieran solo a polaridades, donde los símbolos de adverbios desaparecen y afectan al símbolo de polaridad que inmediatamente les sigue: los cuantificadores los duplican (ejemplo “+” a “+ +”) mientras que los modificadores les invierte su polaridad (ejemplo “-” a “+”), si después de los símbolos de adverbios no se encuentra otro símbolo de polaridad, los cuantificadores se reemplazan por el símbolo de polaridad neutral y los modificadores por el de polaridad negativa.

8.4 ASIGNACIÓN DE FAVORABILIDAD

En la asignación del grado de favorabilidad se experimentó con varios métodos y luego se eligió el que arrojó mejores resultados. Los métodos empleados fueron utilizados para asignar el valor de favorabilidad a cada una de las frases del conjunto de Tweets, las fórmulas que se plantearon fueron diseñadas durante el desarrollo del proyecto y se describen en la Tabla No 34.

Las convenciones usadas para las fórmulas 2 son las siguientes:

𝑪𝑪𝑪𝑪:𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶 𝐶𝐶𝑑𝑑 𝑓𝑓𝑓𝑓𝐶𝐶𝑓𝑓𝑑𝑑𝑓𝑓

𝑪𝑪: 𝐺𝐺𝑓𝑓𝐶𝐶𝐶𝐶𝐺𝐺 𝐶𝐶𝑑𝑑 𝑉𝑉𝐶𝐶𝐹𝐹𝐺𝐺𝑓𝑓𝐶𝐶𝐹𝐹𝐶𝐶𝐹𝐹𝐶𝐶𝐶𝐶𝐶𝐶𝐶𝐶

𝑹𝑹𝑪𝑪: 𝑅𝑅𝑑𝑑𝑓𝑓𝐺𝐺𝐹𝐹𝑅𝑅𝑅𝑅𝐶𝐶ó𝐶𝐶 𝑝𝑝𝐺𝐺𝑓𝑓 𝐶𝐶𝐺𝐺𝐶𝐶𝑝𝑝𝑅𝑅𝑑𝑑𝑓𝑓𝐶𝐶𝐶𝐶

𝑺𝑺: 𝑆𝑆í𝐶𝐶𝐹𝐹𝐺𝐺𝐹𝐹𝐺𝐺

𝑺𝑺𝑺𝑺: 𝑆𝑆í𝐶𝐶𝐹𝐹𝐺𝐺𝐹𝐹𝐺𝐺𝑓𝑓 𝑆𝑆𝑑𝑑𝑁𝑁𝐶𝐶𝐶𝐶𝐶𝐶𝐹𝐹𝐺𝐺𝑓𝑓

𝑺𝑺𝑺𝑺: 𝑆𝑆í𝐶𝐶𝐹𝐹𝐺𝐺𝐹𝐹𝐺𝐺𝑓𝑓 𝑆𝑆𝐺𝐺𝑓𝑓𝐶𝐶𝐶𝐶𝐶𝐶𝐹𝐹𝐺𝐺𝑓𝑓

𝑺𝑺𝑺𝑺: 𝑆𝑆í𝐶𝐶𝐹𝐹𝐺𝐺𝐹𝐹𝐺𝐺𝑓𝑓 𝑆𝑆𝐺𝐺𝐶𝐶𝐶𝐶𝐹𝐹𝑑𝑑𝑓𝑓

𝑽𝑽𝑪𝑪:𝑉𝑉𝐶𝐶𝐹𝐹𝐺𝐺𝑓𝑓 𝐶𝐶𝑑𝑑 𝐹𝐹𝐶𝐶 𝑓𝑓𝑓𝑓𝐶𝐶𝑓𝑓𝑑𝑑

𝑽𝑽𝑺𝑺:𝑉𝑉𝐶𝐶𝐹𝐹𝐺𝐺𝑓𝑓 𝐶𝐶𝑑𝑑𝐹𝐹 𝑆𝑆í𝐶𝐶𝐹𝐹𝐺𝐺𝐹𝐹𝐺𝐺

__________________

2 Formulas planteadas por el grupo de trabajo.

67

Tabla No 34. Métodos para la asignación de favorabilidad (Diseño propio) Método Nombre Fórmula (Diseño propio) Descripción

1

Asignación de favorabilidad por ponderación de

símbolos 𝑉𝑉𝑉𝑉 =

�∑ 𝑆𝑆𝑆𝑆 − ∑𝑆𝑆𝑆𝑆∑𝑆𝑆𝑆𝑆 � + 1

2

En la ponderación se considera la relevancia que tienen los símbolos dentro de la frase del Tweet. Para obtener el valor de favorabilidad se le rest ó a la cantidad de símbolos positivos la cantidad de símbolos negativos y se divid ió entre la cantidad total de símbolos que aparecían en la frase, p ara que el resultado est uviera en el rango de 0 a 1 s e le sumó una unidad y se divid ió en dos.

2

Asignación de favorabilidad por frecuencia de símbolos

⎩⎪⎨

⎪⎧ 𝑆𝑆í �𝑆𝑆𝑆𝑆 > �𝑆𝑆𝑆𝑆 ⟶𝑉𝑉𝑉𝑉 = 1

𝑆𝑆í �𝑆𝑆𝑆𝑆 < �𝑆𝑆𝑆𝑆 ⟶𝑉𝑉𝑉𝑉 = 0

𝑆𝑆í �𝑆𝑆𝑆𝑆 = �𝑆𝑆𝑆𝑆 ⟶𝑉𝑉𝑉𝑉 = 0.5

En la frecuencia de símbolos se determinó el valor de favorabilidad según el símbolo que más veces aparecía en la frase. Cuando la cantidad de símbolos positivos fue mayor se asignó 1, cuando lo fue la cantidad de negativos se asignó 0 y cuando las cantidades fueron equivalentes se asignó 0.5.

3

Asignación de favorabilidad por multiplicación de

símbolos

� 𝑆𝑆í 𝑆𝑆 = "+" ⟶ 𝑉𝑉𝑆𝑆 = 1𝑆𝑆í 𝑆𝑆 = " − " ⟶ 𝑉𝑉𝑆𝑆 = −1

𝑉𝑉𝑉𝑉 =(∏𝑉𝑉𝑆𝑆) + 1

2

Para obtener el valor de favorabilidad por frase se asignó un valor a cada símbolo de acuerdo a su polaridad y se obtuvo el producto de todos los valores, para que el resultado estuviera en el rango de 0 a 1 se le sumó una unidad y se dividió en dos.

4 Asignación de

favorabilidad por compuerta lógica

�𝑆𝑆í 𝑅𝑅𝐶𝐶 = " + " ⟶ 𝑉𝑉𝑉𝑉 = 1𝑆𝑆í 𝑅𝑅𝐶𝐶 = " − " ⟶ 𝑉𝑉𝑉𝑉 = 0𝑆𝑆í 𝑅𝑅𝐶𝐶 = " ∗ " ⟶ 𝑉𝑉𝑉𝑉 = 0.5

Las compuertas lógicas utilizan estados lógicos que operan junto con el signo inmediatamente anterior, para este método se empleó la tabla de verdad mostrada en la Tabla No 35 , a partir de la cual se obtuvo el valor de favorabilidad para cada una de las frases.

Tabla No 35. Tabla de verdad de la compuerta lógica planteada (Diseño propio). + - *

+ + * + - * - - * + - *

Después se obtuvo el grado de favorabilidad total del conjunto de Tweets al calcular el promedio de los valores de las frases del conjunto por cada uno de los métodos. La fórmula planteada fue la siguiente:

𝑉𝑉 = ∑𝑉𝑉𝑉𝑉𝐶𝐶𝑉𝑉

Fuente: Diseño propio

68

8.5 PRUEBAS Y RESULTADOS

A continuación se presentan los resultados obtenidos al emplear los métodos de asignación de favorabilidad para la colección de Tweets de prueba, los personajes se muestran por evento y fecha en la cual fueron consultados.

• Eliminatoria Rusia 2018: Se tomó en cuenta el partido de Colombia - Brasil jugado el día 9 de septiembre de 2016, donde se consultaron futbolistas que destacaron en el partido.

Tabla No 36. Pruebas con jugadores de eliminatoria Rusia 2018 (Diseño propio)

Personaje (Hashtag)

N° Tweets descargados

N° frases analizadas

Grado de favorabilidad obtenido (%) Método N°

1 Método N°

2 Método N°

3 Método N°

4 JamesRodríguez 102 101 62.62 67.33 67.33 66.83

Neymar 530 531 58.78 61.77 57.91 61.39 Bacca 86 98 53.92 53.06 56.63 50.51

MarlosMoreno 17 14 48.08 46.43 50.00 50.00 StefanMedina 540 484 50.08 51.24 50.93 50.83

• Juegos Olímpicos Rio 2016: En los Juegos Olímpicos de Río de Janeiro 2016 participaron atletas internacionales en varios deportes, estos fueron celebrados en la ciudad de Río de Janeiro, Brasil, entre el 5 y el 21 de agosto de 2016. Se tomaron en cuenta los deportistas colombianos que ganaron medallas en estos juegos.

Tabla No 37. Pruebas con deportistas de los JJ. OO Rio 2016 (Diseño propio)

Personaje (Hashtag)

N° Tweets descargados

N° frases analizadas

Grado de favorabilidad obtenido (%) Método

N° 1 Método

N° 2 Método

N° 3 Método

N° 4 CaterineIbarguen 5366 5494 82.36 87.71 74.98 86.38 IngridValencia 164 164 78.36 84.15 76.52 82.93 MarianaPajon 7576 6792 83.60 88.85 79.76 88.35

LuisJavierMosquera 69 65 62.39 63.85 66.92 65.38 OscarFigueroa 274 269 77.78 85.32 69.70 83.83

YuberjenMartinez 5821 6293 78.49 85.52 72.14 84.08 YuriAlvear 95 97 78.78 85.57 69.59 81.96

CarlosRamirez 1210 1223 80.19 85.69 76.25 84.71

• Plebiscito por la paz 2016: El plebiscito fue realizado en octubre de 2016 para aprobar los acuerdos de paz entre el gobierno de Colombia y la guerrilla de las Fuerzas Armadas Revolucionarias de Colombia (FARC). Se tomaron en cuenta algunos de los políticos y el jefe de las FARC involucrados en este proceso, los Tweets fueron descargados el día 31 de septiembre de 2016, días antes de las votaciones del domingo 2 de octubre.

69

Tabla No 38. Pruebas para el plebiscito por la paz octubre de 2016 (Diseño propio)

Personaje (Hashtag)

N° Tweets descargados

N° frases analizadas

Grado de favorabilidad obtenido (%) Método N°

1 Método N°

2 Método N°

3 Método N°

4 Santos 914 859 57.67 61.64 57.39 60.42 Uribe 389 443 55.84 57.45 54.18 55.75

Timochenko 59 55 46.11 40.91 60.00 51.82

• Vuelta a España 2016: La vuelta a España es un evento de ciclismo que fue disputado entre los días 20 de agosto al 11 de septiembre de 2016, en ella participaron ciclistas de varios países. Se tomaron en cuenta ciclistas destacados en este evento. Los Tweets fueron descargados los días 2 de septiembre y 7 de septiembre de 2016.

Tabla No 39. Pruebas para vuelta a España 2 septiembre 2016 (Diseño propio)

Personaje (Hashtag)

N° Tweets descargados

N° frases analizadas

Grado de favorabilidad obtenido (%) Método N°

1 Método N°

2 Método N°

3 Método N°

4 NairoDeVuelta 199 236 76.35 88.77 72.46 87.92 Nairoman 456 455 72.93 78.68 71.21 78.46 Froome 116 129 65.38 71.71 61.63 70.93

EstebanChavez 5 6 43.06 41.67 50.00 41.67 Valverde 21 23 52.36 56.52 45.65 56.52

Tabla No 40. Pruebas para vuelta a España 9 septiembre 2016 (Diseño propio)

Personaje (Hashtag)

N° Tweets descargados

N° frases analizadas

Grado de favorabilidad obtenido (%) Método N°

1 Método N°

2 Método N°

3 Método N°

4 NairoDeVuelta 578 656 78.65 88.87 73.55 88.95 Nairoman 205 198 74.22 80.27 70.85 79.46 Froome 317 340 59.66 64.41 54.71 64.12 Chavito 205 198 74.22 81.57 76.52 79.55

AlbertoContador 54 57 81.87 86.84 84.21 88.60

Los resultados de cada una de los métodos fueron:

• Método N° 1 – Ponderación de símbolos: Al aplicar este método se obtuvo que el valor asignado a las frases se comporta como una variable continua en el rango de 0 a 1. El resultado es determinado por todos los símbolos de la frase. Por ejemplo:

- Si la frase contiene 7 símbolos donde 4 son positivos, 2 negativos y 1 neutral el valor asignado seria 0.6429.

- Si la frase contiene 7 símbolos donde 4 son positivos, 1 negativo y 2 neutrales, el valor asignado seria 0.7143.

- Si la frase contiene 7 símbolos donde 4 son positivos, ningún negativo y 3 neutrales, el valor asignado seria 0.7857.

70

• Método N° 2 – Frecuencia de símbolos: El valor asignado a las frases se comporta como una variable discreta que únicamente puede tomar los valores del conjunto {0, 0.5, 1}. El resultado es determinado solo por el símbolo que más veces aparezca en la frase, omitiendo la relevancia de los demás símbolos. Por ejemplo: si la frase contiene 7 símbolos donde 4 son positivos y el resto son negativos o neutrales, el valor asignado sería 1, sin importar la distribución de estos últimos.

• Método N° 3 – Multiplicación de símbolos: El valor asignado a las frases se comporta como una variable discreta que únicamente puede tomar los valores del conjunto {0, 0.5, 1}. El resultado es determinado por la cantidad de símbolos negativos, si es par el valor asignado es 1 y si es impar el valor asignado es -1, cuando el único símbolo de la frase es neutral el valor asignado es 0.5 y solo se toman en cuenta para este caso. Por ejemplo:

- Si la frase contiene 7 símbolos donde 4 son positivos, 2 negativos y 1 neutral el valor asignado seria 1.

- Si la frase contiene 7 símbolos donde 4 son positivos, 1 negativo y 2 neutrales, el valor asignado seria -1.

- Si la frase contiene 7 símbolos neutrales el valor asignado seria 0.5.

• Método N° 4 – Compuerta lógica: El valor asignado a las frases se comporta como una variable discreta que únicamente puede tomar los valores del conjunto {0, 0.5, 1}. El resultado es determinado por el orden de aparición de los símbolos. Por ejemplo:

- La frase con los símbolos + + ∗ − − se resuelve como se muestra en la Figura No 40, donde el valor asignado es 0.

Figura No 40. Ejemplo No 1 compuerta lógica (Diseño propio)

71

- La frase con los símbolos + − + − ∗ se resuelve como se muestra en la Figura No 41, donde el valor asignado es 0.5.

Figura No 41. Ejemplo No 2 compuerta lógica (Diseño propio)

Teniendo en cuenta los resultados obtenidos con cada uno de los métodos para la asignación del valor de favorabilidad, se decidió utilizar el método de ponderación de símbolos, puesto que al considerar la relevancia de cada uno de los símbolos de la frase se obtiene un valor que representa el nivel de polaridad de la frase en una escala de 0 a 1, donde 0 representa la polaridad negativa y el 1 la polaridad positiva.

Las gráficas resultantes de los análisis realizados con el método N° 1 y algunos ejemplos de descarga y procesamiento de Tweets se muestran en el Anexo No 10.

8.6 PRUEBAS DE RENDIMIENTO

Al ser una herramienta que realiza análisis en tiempo real, es necesario verificar el rendimiento en cuanto al tiempo de respuesta a los usuarios finales. El tiempo que tarda la aplicación en realizar una consulta depende del número de Tweets que se descargan para realizar el análisis, por ello se realizaron varios análisis para un mismo Hashtag con diferentes cantidades de Tweets con el fin de establecer la que haga obtener un tiempo de espera razonable.

La herramienta fue montada en un servidor con las siguientes características:

• Sistema operativo: Ubuntu 16.

• Memoria RAM: 32 GB.

• Ancho de banda: 50 Mb/s En la Tabla No 41 se muestran las pruebas realizadas para medir el tiempo de análisis de un Hashtag para diferentes cantidades de Tweets, en ella se encuentran los tiempos de la descarga de los Tweets junto al porcentaje que corresponde al

72

tiempo total del análisis, al igual que el tiempo y porcentaje correspondientes al procesamiento de los Tweets descargados.

Tabla No 41. Tiempo de análisis de un Hashtag con diferentes cantidades de Tweets (Diseño propio)

Número de Tweets a descargar

Tiempo de descarga de Tweets Tiempo procesamiento Tweets Tiempo total (s) (s) % (s) %

500 9,15 90,91 0,91 0,09 10,06

1000 17,69 90,92 1,77 0,09 19,45

1500 27,13 91,16 2,63 0,09 29,76

2000 35,04 90,96 3,48 0,09 38,52

2500 43,83 91,23 4,22 0,09 48,05

3000 51,77 90,85 5,22 0,09 56,99

3500 59,58 90,94 5,93 0,09 65,51

4000 67,81 90,78 6,88 0,09 74,69

4500 75,28 90,81 7,63 0,09 82,91

5000 82,24 90,69 8,44 0,09 90,68

Según los resultados obtenidos se puede observar que el tiempo de descarga de Tweets en cada análisis corresponde aproximadamente al 90% del tiempo total de ejecución, independiente del número de Tweets a descargar.

Además, se hizo pruebas para observar si el tiempo total de análisis de tres hashtags con las mismas cantidades de Tweets incrementa, cabe aclarar que la ejecución de estos se realiza en paralelo. En la Tabla No 42 se muestra el tiempo total del análisis de los tres hashtags y la diferencia respecto al tiempo que se obtuvo con un solo Hashtag, además en la Figura No 42 se muestra la gráfica de estos valores. Se puede observar que el tiempo total del análisis en paralelo de los tres hashtags se incrementó entre 0.04 y 1.84 segundos en el experimento realizado.

Tabla No 42. Tiempo de análisis de tres hashtags con diferentes cantidades de Tweets (Diseño propio)

Número de Tweets a descargar Tiempo total (s)

Diferencia (s) Tres Hashtags Un Hashtag

500 11,23 10,06 1,17

1000 19,72 19,45 0,26

1500 31,46 29,76 1,70

2000 39,13 38,52 0,60

2500 49,52 48,05 1,47

3000 58,18 56,99 1,19

3500 65,56 65,51 0,04

4000 75,61 74,69 0,92

4500 84,75 82,91 1,84

5000 92,10 90,68 1,42

73

Figura No 42. Tiempo de análisis para uno y tres Hashtags (Diseño propio)

Tomando en cuenta los resultados obtenidos al realizar las pruebas se sugiere que el número máximo de Tweets a descargar sea de 1000, puesto que este arroja un tiempo razonable de espera para el usuario final que es de aproximadamente 20 segundos, sin embargo, queda a criterio del administrador del sistema la elección de este valor sin que supere los 10000 Tweets para evitar que la consulta de los tres hashtags supere el límite permitido por el API de Twitter, aunque el tiempo de espera para el usuario final aumentaría significativamente.

0

10

20

30

40

50

60

70

80

90

100

500 1000 1500 2000 2500 3000 3500 4000 4500 5000

Tiem

po total del an

álisis (s)

Cantidad de Tweets descargados

Un Hashtag Tres Hashtag

74

9 TRABAJO FUTURO

El desarrollo de la herramienta se enfocó en realizar un procesamiento detallado de los Tweets descargados con el fin de obtener un contenido depurado para obtener resultados más precisos.

El tiempo que dura la descarga de los Tweets puede variar dependiendo de la velocidad del ancho de banda de la conexión a internet del servidor y del número de Tweets a descargar, por esta razón el tiempo que es posible disminuir es el tiempo que dura el procesamiento después de la descarga al implementar frameworks que soporten el procesamiento de datos a gran escala.

Debido a la escasez de lexicones libres en español se puede realizar una API alojada en el servidor que permita utilizar el lexicón creado y así realizar un aporte a la comunidad interesada en el tema.

75

10 CONCLUSIONES

El análisis de sentimientos permite a través del procesamiento de lenguaje natural tener una visión aproximada de lo que las personas están opinando en un momento dado.

Los resultados obtenidos del análisis de opinión realizado con la herramienta no son exactos puesto que al analizar texto no se puede determinar si el usuario que escribe lo está haciendo de una forma sarcástica o no, sin embargo, dan una visión aproximada de lo que los usuarios de la plataforma Twitter están hablando sobre un personaje.

Cuando se realiza Minería de Opinión el uso de recursos léxicos es de gran importancia, como lo es el lexicón Galeras, pues este será la base para determinar las polaridades de las palabras y de este depende en gran parte el resultado exitoso del análisis.

Twitter tiene actualmente gran cantidad de usuarios con diferentes creencias religiosas, políticas y diferentes gustos deportivos entre otros, esto permite obtener gran variedad de información al momento de realizar el análisis con la herramienta.

El tiempo de respuesta del análisis lo ocupa en gran parte la descarga de Tweets, puesto que depende del API y las restricciones de Twitter para realizar este proceso, debido a esto se debe limitar el número de Tweets a descargar para obtener un tiempo razonable de espera al usuario final.

Al emplear la ejecución en paralelo para realizar el análisis de tres Hashtags se obtienen resultados muy favorables, ya que no se debe esperar a que termine un proceso para iniciar el siguiente, haciendo que el tiempo de respuesta de la herramienta incremente solo de 0.04 y 1.84 segundos.

Cuando se varían las claves del API de Twitter para cada análisis se evita que se alcance el número máximo de Tweets a descargar permitido por Twitter, de esta forma la herramienta tiene la capacidad de realizar análisis de varios usuarios de manera concurrente.

76

11 BIBLIOGRAFÍA

@cdperiodismo. (23 de Enero de 2011). Twendz, encuentra temas relacionados sobre un hashtag de Twitter. Recuperado el 29 de Enero de 2016, de Clases de Periodismo: http://www.clasesdeperiodismo.com/2011/01/23/twendz-encuentra-temas-relacionados-sobre-un-hashtag-de-twitter/

acens. (2014). acens. Obtenido de https://www.acens.com/wp-content/images/2014/02/bbdd-nosql-wp-acens.pdf

Arano, S. (2003). La ontología: una zona de interacción entre la Lingüística y la Documentación. Recuperado el 17 de Julio de 2016, de https://www.upf.edu/hipertextnet/numero-2/ontologia.html

Artavia, L. R., & Villalobos, M. (s.f.). Universidad Latinoamericana de Ciencia y Tecnología. Recuperado el 10 de Junio de 2015, de Relación entre las bases de datos NoSQL y Big Data: http://bb9.ulacit.ac.cr/tesinas/Publicaciones/043241.pdf

Basho Technologies. (2016). Distributed Database Solutions | NoSQL Dsitributed Database | Basho. Obtenido de http://basho.com/products/

Benavides Cañon, P. A., & Rodríguez Correa, S. (2007). Procesamiento de lenguaje natural en la recuperación de información. Bogotá.

Bloomfield, L. (1926). A Set of Postulates for the Science of Language. Linguistic Society of America, 153-164.

Carballar Falcón, J. A. (2011). Twitter: marketing personal y profesional. España: RC Libros.

Cárdenas Escalante, L. (2013). El patrón de arquitectura n-capas con orientación al dominio como solución en el diseño de aplicaciones empresariales.

Casciaro, M. (2014). Node.js Design Patterns. Birmingham: Packt Publishing Ltd.

Chomsky, N. (1986). Knowledge of language. New York: Praeger Publishers.

Cilenis. (s.f.). Cilenis. Language Technology. Obtenido de http://cilenis.com/es/linguakit/

CILENIS SL. (s.f.). linguakitBETA. Obtenido de https://linguakit.com/es/

Collado Vazquez, F. J. (2012). Twitter y la búsqueda de empleo. España: DYKINSON, S.L.

Cortez Vásquez, A., Vega Huerta, H., & Pariona Quispe, J. (2009). Procesamiento de lenguaje natural. Revista de investigación de Sistemas e Informática, 45-54.

Coseriu, E. (1983). Introducción a la Lingüística. México.

De Saussure, F. (1916). Curso de Linguística General. Buenos Aires: Editorial Losada.

Dubiau, L., & Ale, J. M. (2013). Análisis de Sentimientos sobre un Corpus en Español: Experimentación con un Caso de Estudio. Proceedings of the 14th Argentine Symposium on Artificial Intelligence, 36-47.

Erickson, K. (12 de Marzo de 2009). Microsoft PR Firm 'Twendz' to Track Twitter Tweets. Recuperado el 29 de Enero de 2016, de https://www.infopackets.com/news/4430/microsoft-pr-firm-twendz-track-twitter-tweets

Fernández Montoro, A. (2012). Python 3 al descubierto. España: RC Libros.

77

García, A. (2004). Instrumentos de representación del conocimiento: Tesauros versus Ontologías. Anales de documentación, 79-95.

Gelbukh, A., & Sidorov, G. (2006). Procesamiento Automático Del Español Con Enfoque En Recursos Léxicos Grandes, Colección Ciencia de La Computación, 1. ed. México, D. F: Instituto Politécnico Nacional, Centro de Investigación en Computación, Direción de Publicaciones.

González Duque, R. (2011). Python para todos. España.

Google. (19 de Agosto de 2016). Google Cloud Platform. Obtenido de https://cloud.google.com/datastore/

Guzdial, M. J., & Ericson, B. (2013). Introducción a la computación y programación con Python. México: Pearson Educación.

Healey, C., & Ramaswamy, S. (28 de Diciembre de 2013). Visualizing Twitter Sentiment. Obtenido de http://www.csc.ncsu.edu/faculty/healey/tweet_viz/

Jiménez Ruiz, J. L. (2013). Lingüística General I. Guía docente. San Vicente (Alicante): Club Universitario.

Krasnoff, B. (16 de Marzo de 2009). Review: Twendz rates the latest Twitter trrends. Recuperado el 29 de Enero de 2016, de Computer World: http://www.computerworld.com/article/2531522/networking/review--twendz-rates-the-latest-twitter-trends.html

Liu, B. (2012). Sentiment Analysis and Opinion Mining. Chicago: Morgan & Claypool.

Lobato Sánchez, J. (2006). Saber escribir. España: Aguilar.

Martínez Cámara, E., Martín Valdivia, M. T., Perea Ortega, J. M., & Ureña López, L. A. (2011). Técnicas de clasificación de opiniones aplicadas a un corpus en español. Procesamiento del Lenguaje Natural N° 47, 163-170.

Martínez Celdrán, E. (1998). Lingüística: teoría y aplicaciones. España: MASSON.

MDN. (26 de Abril de 2015). Mozilla Developer Network. Obtenido de Acerca de JavaScript: https://developer.mozilla.org/es/docs/Web/JavaScript/Acerca_de_JavaScript

Meléndez Valladarez, S. M., Gaitan, M. E., & Pérez Reyes, N. N. (2016). Metodología ágil de desarrollo de software programación extrema. Nicaragua.

MongoDB, Inc. (2016). About Us. Recuperado el 29 de Octubre de 2014, de http://www.mongodb.com/json-and-bson

Montagna, D. (2015). Eventos y entidades que se pueden echar: combinatoria léxica y representación del significado de un verbo polisémico. España, Madrid.

Moreno Ortiz, A. (2000). Estudios de Lingüística del Español. Recuperado el 17 de 07 de 2016, de Diseño e implementación de un lexicón computacional para lexicografía y traducción automática: http://elies.rediris.es/elies9/

Moreno, J., & Carredano, J. (2000). Diseño e implementación de sistemas de traducción automática. España: Universidad de Sevilla.

Navarro Colorado, B. (6 de marzo de 2015). Guía rápida de análisis de corpus (con AntConc). Obtenido de http://www.dlsi.ua.es/~borja/riilua/grac.pdf

Node.js Foundation. (2017). node.js. Obtenido de https://nodejs.org/en/

78

Pang, B., & Lee, L. (2008). Opinion Mining and Sentiment Analysis. Foundations and Trends in Information Retrieval, 1–135.

Polo, D. (14 de Noviembre de 2014). Social Mention – Escucha lo que hablan de ti. Recuperado el 29 de Enero de 2016, de Emprender fácil: http://www.emprender-facil.com/es/social-mention-escucha-hablan-de-ti/

Ramos, J. (2013). Twitter para empresas- La guía definitiva de marketing en twitter.

Rauschmayer, A. (2014 ). Speaking JavaScript An In-Depth Guide for Programmers. O’Reilly Media.

Real Academia Española. (2016). Diccionario de la lengua española. Recuperado el 17 de Julio de 2016, de http://dle.rae.es/?id=DgIqVCc

Redis Labs. (s.f.). redis. Obtenido de Introduction to Redis: http://redis.io/topics/introduction

Reyes, G. (1990). La Pragmática Lingüística. España: Editorial Montesinos.

Rodríguez, I. (25 de Noviembre de 2009). Twittboy. Obtenido de Twitrratr - Descubre la actitud de Twitter: http://www.twittboy.com/2009/11/twitrratr-descubre-la-actitud-de.html

Ruano Vázquez, F. J. (2014). Análisis y Desarrollo de MongoDB y Redis en Java.

sergioalbertoc. (2015 de 09 de 2015). Programación eXtrema. Obtenido de https://iswugaps2extremeprogramming.wordpress.com/2015/09/14/roles/

socialmention. (s.f.). Real-time social media search and analysis. Recuperado el 29 de Enero de 2016, de socialmention: http://www.socialmention.com/

Sommerville, I. (2011). Ingeniería de Software (9a ed.). México: PEARSON EDUCACIÓN.

StrongLoop, IBM, expressjs.com. (2016). Express. Obtenido de http://expressjs.com/

The Apache Software Foundation. (2016). Apache CouchDB. Obtenido de http://couchdb.apache.org/

Tweet Sentiment Visualization. (s.f.). Obtenido de http://www.csc.ncsu.edu/faculty/healey/tweet_viz/tweet_app/

Twtbase. (s.f.). twtbase. Obtenido de http://www.twtbase.com/twitrratr/

Universidad Politécnica de Válencia . (s.f.). Ejemplo de desarrollo software utilizando la metodología XP. Obtenido de http://users.dsic.upv.es/asignaturas/facultad/lsi/ejemploxp/Gestion_Proyecto.html#plan_inicial

University of Pennsylvania. (s.f.). Linguistic Data Consortium . Obtenido de Language Resources: https://www.ldc.upenn.edu/language-resources

Vela Zancada, A. (2016). #ElLibrodeTwitter. España: Formación Alcalá.

W3ii. (2017). Extreme Programming Quick Guide. Obtenido de http://www.w3ii.com/extreme_programming/extreme_programming_quick_guide.html

Wells, D. (08 de 10 de 2013). Extreme Programming: A gentle introduction . Obtenido de http://www.extremeprogramming.org/

79

12 ANEXOS

Anexo No 1 Reuniones

Desde la Tabla No 43 hasta la Tabla No 51 se muestran las reuniones realizadas durante el desarrollo de las iteraciones.

Tabla No 43. Reunión N° 1 (Diseño propio). Día 26/10/2016 Horario 8:00 - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Definir historias de usuario y funcionamiento general del sistema Resultado Elaboración de historias de usuario para la primera iteración. Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 44. Reunión N° 2 (Diseño propio). Día 23/11/2016 Horario 8:00 - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los resultados de las tareas a la directora del proyecto.

Resultado Corrección de tareas para finalizar la primera iteración. Elaboración de historias de usuario para la segunda iteración.

Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 45. Reunión N° 3 (Diseño propio). Día 06/12/2016 Horario 8:00 - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los avances de las tareas a la directora del proyecto. Resultado Corrección de tareas de la segunda iteración Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 46. Reunión N° 4 (Diseño propio). Día 14/12/2016 Horario 8:00 - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado

Objetivo Presentar los resultados de las tareas a la directora del proyecto. Discutir tareas que no tuvieron buenos resultados

Resultado Cancelación de dos historias de usuario de la segunda iteración. Elaboración de historias de usuario para la tercera iteración. Corrección de tareas para finalizar la segunda iteración.

Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

80

Tabla No 47. Reunión N° 6 (Diseño propio). Día 25/01/2017 Horario 9:00 - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los resultados de las tareas a la directora del proyecto. Resultado Corrección de tareas de la tercera iteración. Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 48. Reunión N° 7 (Diseño propio). Día 16/02/2017 Horario 9:00 am - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los avances de las tareas a la directora del proyecto. Resultado Creación de nuevas historias de usuario para la cuarta iteración. Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 49. Reunión N° 8 (Diseño propio). Día 06/12/2016 Horario 9:00 am - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los resultados de las tareas a la directora del proyecto.

Resultado Finalización de la cuarta iteración. Creación de nuevas historias de usuario para la quinta iteración.

Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 50. Reunión N° 9 (Diseño propio). Día 09/03/2017 Horario 9:00 am - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los avances de las tareas a la directora del proyecto.

Resultado Corrección de tareas de la quitan iteración Creación de nuevas historias de usuario para la quinta iteración.

Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

Tabla No 51. Reunión N° 10 (Diseño propio). Día 23/03/2017 Horario 9:00 - 10:00 am Lugar Universidad Distrital Francisco José de Caldas Actividades Realizadas Reunión con Directora proyecto de grado Objetivo Presentar los resultados de las tareas a la directora del proyecto.

Resultado Finalización de la quinta iteración. Elaboración de historias de usuario para la iteración final.

Participantes Sonia Ordoñez, Daniel Ruiz, Yohana Delgado.

81

Anexo No 2 Tarjetas CRC

Las tarjetas CRC construidas para el desarrollo del proyecto son las descritas desde la Tabla No 52 hasta la Tabla No 57.

Tabla No 52. Tarjeta CRC N° 1 (Diseño propio) TARJETA CRC N° 1

Nombre de la clase Búsqueda Responsabilidades Colaboradores

Verificar existencia de Tweets

Descargar Tweets Eliminar Tweets repetidos por ID Guardar contenido de los Tweets

Tabla No 53. Tarjeta CRC N° 2 (Diseño propio) TARJETA CRC N° 2

Nombre de la clase Eliminar Repetidos Responsabilidades Colaboradores

Estandarización del contenido de los Tweets

Adecuación del contenido de los Tweets Eliminar Tweets repetidos por contenido Guardar contenido de los Tweets sin repetirse

Tabla No 54. Tarjeta CRC N° 3 (Diseño propio) TARJETA CRC N° 3

Nombre de la clase Eliminar Stopwords Responsabilidades Colaboradores

Eliminar Stopwords del contenido de los Tweets

Separar por frases el contenido de los Tweets Guardar las frases de los Tweets

Tabla No 55. Tarjeta CRC N° 4 (Diseño propio). TARJETA CRC N° 4

Nombre de la clase Asignar Polaridad Responsabilidades Colaboradores

Asignar polaridad a las palabras del contenido de las frases los Tweets que tengan polaridad.

Guardar resultado de la polaridad asignada

Tabla No 56. Tarjeta CRC N° 5 (Diseño propio) TARJETA CRC N° 5

Nombre de la clase Estadísticas Responsabilidades Colaboradores

Obtener el valor de favorabilidad de cada frase del contenido del Tweet

Obtener la favorabilidad total del archivo de Tweets Guardar resultado de la favorabilidad obtenida

82

Tabla No 57. Tarjeta CRC N° 6 (Diseño propio) TARJETA CRC N° 6

Nombre de la clase Procesamiento Responsabilidades Colaboradores

Controlar y gestionar el análisis de los Hashtags

Búsqueda Eliminar Repetidos Eliminar Stopwords Asignar Polaridad Estadísticas

Anexo No 3 Primera Iteración

Historias de Usuario

Desde la Tabla No 58 hasta la Tabla No 62 se especifican cada una de las historias de usuario de la primera iteración.

Tabla No 58. Historia de usuario N° 1 (Diseño propio) Historia de usuario

Número 1 Usuario Sistema Nombre Historia Búsqueda y extracción de Tweets Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 1 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe permitir realizar la búsqueda, descarga y almacenamiento de un conjunto de Tweets a partir de un Hashtag ingresado por el usuario final.

Observaciones Se debe descargar el ID, Contenido y Fecha de cada Tweet.

Tabla No 59. Historia de usuario N° 2 (Diseño propio) Historia de usuario

Número 2 Usuario Sistema Nombre Historia Estandarización de Tweets: Contenido Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 2 Iteración asignada 1 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe eliminar los Tweets que hayan quedado repetidos en el conjunto descargado.

Observaciones

El sistema debe eliminar los Tweets repetidos después de que haya terminado de descargarlos. El contenido entre algunos Tweets varia solo por URLs, emojis y menciones adicionales, se debe realizar primero una estandarización.

83

Tabla No 60. Historia de usuario N° 3 (Diseño propio) Historia de usuario

Número 3 Usuario Sistema Nombre Historia Identificación de frases en los Tweets Prioridad Media Riesgo en el desarrollo Medio Puntos estimados 1 Iteración asignada 1 Programador responsable Daniel Ruiz - Yohana Delgado Descripción El sistema deberá separar el contenido de los Tweets en frases.

Observaciones El sistema debe separar en frases después de que se haya terminado de eliminar los repetidos. Se considera que un punto es el que determina el final de una frase.

Tabla No 61. Historia de usuario N° 4 (Diseño propio) Historia de usuario

Número 4 Usuario Sistema Nombre Historia Eliminación de Stopwords Prioridad Alta Riesgo en el desarrollo Medio Puntos estimados 1 Iteración asignada 1 Programador responsable Daniel Ruiz - Yohana Delgado Descripción El sistema debe eliminar las palabras vacías del contenido de las frases.

Observaciones El sistema debe eliminar las palabras vacías después de que haya terminado de separar los Tweets en frases. Se debe utilizar una lista de Stopwords para realizar esta eliminación.

Tabla No 62. Historia de usuario N° 5 (Diseño propio) Historia de usuario

Número 5 Usuario Sistema Nombre Historia Asignación de símbolos de polaridad Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 1 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe reemplazar las palabras del contenido de las frases por su correspondiente símbolo de polaridad. Las palabras que no están en el lexicón no deben modificarse.

Observaciones

El sistema debe realizar el reemplazo por símbolos después de eliminar las palabras vacías. Se debe utilizar el lexicón para poder realizar los reemplazos. Se debe asignar un símbolo a las polaridades positiva, negativa y neutral.

Tareas de Ingeniería

La especificación de cada una de las tareas de ingeniería de las historias de usuario de la primera iteración se muestra desde la Tabla No 63 hasta Tabla No 71.

Tabla No 63. Tarea de ingeniería N° 1 (Diseño propio) Tarea de Ingeniería

Número 1 Número de Historia 1 Nombre Realizar código de descarga de Tweets

Tipo Codificación Puntos estimados 2 Fecha Inicio 02/11/2016 Fecha Fin 04/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se creará y probará el código para descargar los Tweets en un archivo temporal, utilizando el API de Twitter.

84

Tabla No 64. Tarea de ingeniería N° 2 (Diseño propio) Tarea de Ingeniería

Número 2 Número de Historia 2 Nombre Eliminar Tweets repetidos por ID

Tipo Codificación Puntos estimados 1 Fecha Inicio 08/11/2016 Fecha Fin 08/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Después de que los Tweets se hayan descargado, se eliminarán los que quedaron repetidos por ID, para ello se usarán diccionarios donde el ID será utilizado como la clave.

Tabla No 65. Tarea de ingeniería N° 3 (Diseño propio) Tarea de Ingeniería

Número 3 Número de Historia 2 Nombre Eliminar Tweets repetidos por Contenido

Tipo Codificación Puntos estimados 7 Fecha Inicio 09/11/2016 Fecha Fin 15/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de que se hayan eliminado los Tweets por el ID, se les realizará una estandarización a su contenido, la cual consiste en eliminar URLs, menciones, puntuación y emojis . Luego se eliminarán los Tweets que se repiten por contenido usando diccionarios donde el contenido será utilizado como la clave. Se guardará el ID y el contenido resultante de la estandarización de cada Tweet en un nuevo archivo plano.

Tabla No 66. Tarea de ingeniería N° 4 (Diseño propio) Tarea de Ingeniería

Número 4 Número de Historia 3 Nombre Separar los Tweets en frases

Tipo Codificación Puntos estimados 1 Fecha Inicio 13/11/2016 Fecha Fin 13/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de que se hayan eliminado los Tweets por contenido, se separarán en frases cada vez que se encuentre un punto y se les asignará un nuevo Identificador que será formado por el ID original seguido de un número consecutivo que indique el n úmero de la frase. Se guardará el nuevo ID generado y el contenido de cada frase en un nuevo archivo plano.

Tabla No 67. Tarea de ingeniería N° 5 (Diseño propio) Tarea de Ingeniería

Número 5 Número de Historia 4 Nombre Elaborar lista de Stopwords

Tipo Codificación Puntos estimados 1 Fecha Inicio 07/11/2016 Fecha Fin 07/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se buscará y elaborará una lista existente de Palabras vacías (Stopwords), la cual se almacenará en un diccionario.

85

Tabla No 68. Tarea de ingeniería N° 6 (Diseño propio) Tarea de Ingeniería

Número 6 Número de Historia 4 Nombre Eliminar Stopwords de los Tweets

Tipo Codificación Puntos estimados 1 Fecha Inicio 13/11/2016 Fecha Fin 13/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Una vez se haya separado los Tweets en frases, se eliminarán las palabras vacías de su contenido, se hará buscando cada palabra en la lista de Stopwords. Se guardará el ID y el contenido sin Stopwords de cada frase en un nuevo archivo plano.

Tabla No 69. Tarea de ingeniería N° 7 (Diseño propio) Tarea de Ingeniería

Número 7 Número de Historia 5 Nombre Reemplazar palabras por polaridad

Tipo Codificación Puntos estimados 2 Fecha Inicio 16/11/2016 Fecha Fin 17/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de que se hayan eliminado las Stopwords del contenido de los Tweets, se deberá buscar las palabras del contenido en el lexicón y reemplazarlas por el símbolo de su polaridad. Para ello se deberá cargar el lexicón en un diccionario, dond e la palabra se utiliza como clave y la polaridad como valor. Se guardará el ID y el contenido resultante con los símbolos de polaridad de cada frase en un nuevo archivo plano.

Tabla No 70. Tarea de ingeniería N° 8 (Diseño propio) Tarea de Ingeniería

Número 8 Número de Historia 5 Nombre Obtener raíz de las palabras

Tipo Codificación Puntos estimados 1 Fecha Inicio 17/11/2016 Fecha Fin 17/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Antes de reemplazar las palabras por polaridad, se implementará una función que obtenga la raíz de las palabras, tanto en el diccionario del lexicón como en el contenido de la frase, con el fin de obtener mayor cantidad de palabras con polaridad asignada y mejorar los resulta dos.

Tabla No 71. Tarea de ingeniería N° 9 (Diseño propio) Tarea de Ingeniería

Número 9 Número de Historia 5 Nombre Utilizar etiquetador gramatical

Tipo Codificación Puntos estimados 1 Fecha Inicio 19/11/2016 Fecha Fin 19/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se aplicará la funcionalidad de un etiquetador gramatical para asignar a cada palabra su categoría gramatical con el fin obtener un árbol sintáctico y realizar el análisis de polaridad. Esta funcionalidad sería una alternativa para obtener la polaridad de una frase.

86

Pruebas de Aceptación

Desde la Tabla No 72 hasta la Tabla No 76 se describe cada una de las pruebas de aceptación.

Tabla No 72. Caso de prueba N° 1 (Diseño propio) CASO DE PRUEBA

Código 1 N° Historia de usuario 1 Nombre de la prueba Buscar y extraer Tweets de Hashtag ingresado Condiciones de ejecución El usuario debe haber ingresado un Hashtag.

Entrada/paso de ejecución

Ingresar Hashtag. Realizar búsqueda de Tweets en español que contengan el Hashtag ingresado. Descargar y guardar los Tweets encontrados en un archivo plano.

Resultado Esperado Tweets descargados almacenados en un archivo plano. Evaluación de la prueba Aprobada

Tabla No 73. Caso de prueba N° 2 (Diseño propio) CASO DE PRUEBA

Código 2 N° Historia de usuario 2 Nombre de la prueba Estandarizar y eliminar Tweets repetidos

Condiciones de ejecución Los Tweets descargados deben estar almacenados en un archivo plano.

Entrada/paso de ejecución

Lectura de Tweets descargados. Eliminar Tweets repetidos por ID. Realizar estandarización del contenido de los Tweets . Eliminar Tweets repetidos por contenido. Almacenar el resultado en un archivo plano.

Resultado Esperado Tweets con el contenido estandarizado y sin repetir almacenados en un archivo plano.

Evaluación de la prueba Aprobada

Tabla No 74. Caso de prueba N° 3 (Diseño propio) CASO DE PRUEBA

Código 3 N° Historia de usuario 3 Nombre de la prueba Separar por frases el contenido de los Tweets

Condiciones de ejecución Los Tweets estandarizados y sin repetir deben estar almacenados en un archivo plano.

Entrada/paso de ejecución

Lectura de Tweets estandarizados y sin repetir. Separar los Tweets por frases cada vez que encuentre un punto y asignar nuevo ID a cada frase. Almacenar el resultado en un archivo plano.

Resultado Esperado Tweets separados por frases almacenados en un archivo plano. Evaluación de la prueba Aprobada

87

Tabla No 75. Caso de prueba N° 4 (Diseño propio) CASO DE PRUEBA

Código 4 N° Historia de usuario 4 Nombre de la prueba Suprimir Stopwords del contenido de los Tweets

Condiciones de ejecución Los Tweets separados por frases deben estar almacenados en un archivo plano.

Entrada/paso de ejecución

Lectura de los Tweets separados por frases. Lectura de la lista de Stopwords. Eliminar Stopwords del contenido de los Tweets . Almacenar el resultado en un archivo plano.

Resultado Esperado Frases de los Tweets sin Stopwords almacenadas en un archivo plano.

Evaluación de la prueba Aprobada

Tabla No 76. Caso de prueba N° 5 (Diseño propio) CASO DE PRUEBA

Código 5 N° Historia de usuario 5 Nombre de la prueba Asignar símbolos de polaridad a las palabras.

Condiciones de ejecución Las frases de los Tweets sin Stopwords deben estar almacenadas en un archivo plano.

Entrada/paso de ejecución

Lectura de los Tweets sin Stopwords. Lectura del lexicón. Buscar cada palabra del contenido del Tweet en el lexicón. Asignación de la polaridad correspondiente a cada palabra, si existe se reemplaza la palabra por el símbolo de la polaridad, si no se deja la palabra. Almacenar el resultado en un archivo plano.

Resultado Esperado Frases de los Tweets con símbolos de polaridad almacenadas en un archivo plano.

Evaluación de la prueba Aprobada

Anexo No 4 Segunda Iteración

Historias de Usuario

La descripción general de cada una de las historias de usuarios de la segunda iteración se especifican desde la Tabla No 77 hasta Tabla No 81.

Tabla No 77. Historia de usuario N° 6 (Diseño propio) Historia de usuario

Número 6 Usuario Sistema Nombre Historia Adecuación del contenido de Tweets Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 2 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe separar las palabras de números, de signos de puntuación, separar letras minúsculas seguidas de mayúsculas y eliminar letras que se repitan más de 3 veces seguidas.

Observaciones

El sistema debe adecuar el contenido de los Tweets después de que haya terminado el proceso de estandarización del contenido de l os Tweets. Solo se deben separar las minúsculas seguidas de mayúsculas en las palabras que son Hashtag.

88

Tabla No 78. Historia de usuario N° 7-1 (Diseño propio) Historia de usuario

Número 7-1 Usuario Sistema Nombre Historia Separación de palabras utilizando registro histórico – modificada Prioridad Media Riesgo en el desarrollo Medio Puntos estimados 1 Iteración asignada 2 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción

El sistema debe crear una lista de palabras que fueron separadas cuando se les aplicó la regla de separar letras minúsculas seguidas de mayúsculas, luego debe buscar coincidencias de estas mismas palabras pegadas que no pudieron ser separadas en el contenido y reemplazarlas por las palabra s que si lo fueron.

Observaciones

El sistema debe separar las palabras utilizando el registro histórico después de eliminar letras repetidas seguidas y separar puntuación. Ejemplo de funcionamiento: "arriba Bogotá" queda en la lista como "arriba Bogotá", se debe buscar "arriba Bogotá" y se reemplazaría por "arriba Bogotá"

Tabla No 79. Historia de usuario N° 7-2 (Diseño propio) Historia de usuario

Número 7-2 Usuario Sistema Nombre Historia Separación de palabras utilizando registro histórico – actualizada Prioridad Media Riesgo en el desarrollo Media Puntos estimados 1 Iteración asignada Programador responsable Daniel Ruiz - Yohana Delgado

Descripción

El sistema debe tomar en cuenta solo las palabras que son Hashtag para aplicarles la regla de separar letras minúsculas seguidas de mayúsculas, luego debe buscar coincidencias de estas mismas palabras pegadas que no lograron ser separadas en el contenido y reemplazarlas por las palabras Hashtag que si lo fueron.

Observaciones

El sistema debe separar las palabras utilizando el registro histórico después de eliminar letras repetidas seguidas y separar puntuación. Ejemplo de funcionamiento: "#arriba Bogotá" queda en la lista como "arriba Bogotá", se debe buscar las coincidencias de "arriba bogotá" en el contenido y se reemplazarían por "arriba Bogotá"

Tabla No 80. Historia de usuario N° 8 (Diseño propio) Historia de usuario

Número 8 Usuario Sistema Nombre Historia Separación de palabras por consonantes no permitidas Prioridad Media Riesgo en el desarrollo Media Puntos estimados 1 Iteración asignada 2 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe separar palabras que contengan combinaciones de consonantes que no se encuentren en una lista de combinaciones permitidas en el idioma español.

Observaciones

Se debe crear una lista de combinaciones de consonantes permitidas en español, cuando se encuentren dos letras seguidas que no estén en la lista se deben separar. El sistema debe separar las consonantes no permitidas después de separar palabras utilizando registro histórico.

89

Tabla No 81. Historia de usuario N° 9 (Diseño propio) Historia de usuario

Número 9 Usuario Sistema Nombre Historia Separación de palabras por analizador Prioridad Media Riesgo en el desarrollo Media Puntos estimados 1 Iteración asignada Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe separar palabras que quedaron pegadas a otras después de aplicar los métodos de separación, las cuales pueden tener polaridad en el lexicón y no se están tomando en cuenta porque no están bien escritas.

Observaciones

Las cadenas de palabras que tengan una longitud por encima del promedio de las demás deben ser analizadas para intentar separarlas en las palabras que la componen. El sistema debe separar las palabras por analizador después de separar palabras por consonantes no permitidas.

Tareas de Ingeniería

La especificación de cada una de las tareas de ingeniería de la segunda iteración se muestra desde Tabla No 82 la hasta Tabla No 88.

Tabla No 82. Tarea de ingeniería N° 10 (Diseño propio) Tarea de Ingeniería

Número 10 Número de Historia 6 Nombre Separar palabras de caracteres

Tipo Codificación Puntos estimados 2 Fecha Inicio 25/11/2016 Fecha Fin 26/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Después de que se hayan estandarizado los Tweets, se separarán palabras de números, caracteres que no sean letras y letras minúsculas seguidas de mayúsculas (min Mayus).

Tabla No 83. Tarea de ingeniería N° 11 (Diseño propio) Tarea de Ingeniería

Número 11 Número de Historia 6 Nombre Eliminar letras repetidas seguidas y separar puntuación

Tipo Codificación Puntos estimados 2 Fecha Inicio 28/11/2016 Fecha Fin 01/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Después de que se hayan separado las palabras de caracteres, se eliminarán del contenido del Tweet las letras que aparezcan 3 o más veces seguidas. Después de que se encuentre un punto se dejará un espacio para separarlo de otros caracteres. Antes del símbolo "#" se dejará un espacio en blanco.

Tabla No 84. Tarea de ingeniería N° 12 (Diseño propio) Tarea de Ingeniería

Número 12 Número de Historia 9 Nombre Crear listado de palabras que deben separarse

Tipo Codificación Puntos estimados 2 Fecha Inicio 29/11/2016 Fecha Fin 30/11/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de que se hayan separado combinaciones de consonantes no permitidas, y antes de separar palabras usando diccionario, se obtendrá la media y la desviación estándar de la longitud de las palabras que aparecen en los Tweets , luego se hará una lista de las palabras cuya longitud tenga una desviación mayor que el promedio (lista de separación).

90

Tabla No 85. Tarea de ingeniería N° 13 (Diseño propio) Tarea de Ingeniería

Número 13 Número de Historia 8 Nombre Separar combinaciones de consonantes no permitidas

Tipo Codificación Puntos estimados 1 Fecha Inicio 02/12/2016 Fecha Fin 02/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Después de que se haya separado palabras repetidas a partir del historial, y antes de separar palabras usando diccionario, se separarán las palabras que presenten consonantes que no estén en la lista de combinaciones de consonantes permitidas en el idioma español. Para ello se deberá crear la lista.

Tabla No 86. Tarea de ingeniería N° 14-1 (Diseño propio) Tarea de Ingeniería

Número 14-1 Número de Historia 7-1 Nombre Separar palabras pegadas a partir de historial – modificada

Tipo Codificación Puntos estimados 5 Fecha Inicio 07/12/2016 Fecha Fin 12/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Durante la separación de palabras de caracteres se guardará una lista de palabras que lograron ser separadas (lista de separadas). Después de eliminar letras repetidas seguidas y separar puntuación y antes de separar combinaciones no permitidas, se realizará lo siguiente para cada una de las palabras de la lista de separadas: - Se eliminarán los espacios y se convertirá a minúscula. - La palabra sin espacios y en minúscula se buscará en el contenido de los Tweets y se reemplazará por la palabra de la lista de separadas.

Tabla No 87. Tarea de ingeniería N° 14-2 (Diseño propio) Tarea de Ingeniería

Número 14-2 Número de Historia 7-2 Nombre Separar palabras pegadas a partir de historial – actualizada

Tipo Codificación Puntos estimados 1 Fecha Inicio 15/12/2016 Fecha Fin 15/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Durante la separación de palabras de caracteres se guardará una lista de palabras Hashtag que lograron ser separadas (lista de separadas). Después de eliminar letras repetidas seguidas y separar puntuación y antes de eliminar Tweets por contenido, se realizará lo siguiente para cada una de las palabras de la lista de separadas: - Se eliminarán los espacios y se convertirá a minúscula. - La palabra sin espacios y en minúscula se buscará en el contenido de los Tweets y se reemplazará por la palabra de la li sta de separadas.

Tabla No 88. Tarea de ingeniería N° 15 (Diseño propio) Tarea de Ingeniería

Número 15 Número de Historia 9 Nombre Separar palabras usando diccionario

Tipo Codificación Puntos estimados 2 Fecha Inicio 12/12/2016 Fecha Fin 13/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción Después de separar combinaciones de consonantes no permitidas y antes de eliminar Tweets por contenido, se tomarán las palabras de la lista de separación en subsecuencias y se enviará cada una de estas al diccionario para verificar su existencia. Si la subsecuencia existe será separada de la palabra.

91

Pruebas de Aceptación

En la Tabla No 89 y en la Tabla No 90 se describen las pruebas de aceptación de la segunda iteración.

Tabla No 89. Caso de prueba N° 6 (Diseño propio) CASO DE PRUEBA

Código 6 N° Historia de usuario 6 Nombre de la prueba Adecuar contenido de Tweets

Condiciones de ejecución Los Tweets estandarizados y sin repetir por ID deben estar almacenados en un archivo plano.

Entrada/paso de ejecución

Lectura de Tweets estandarizados y sin repetir por ID. Separar números de letras. Separar puntuación. Separar minúsculas seguidas de mayúsculas. Quitar letras repetidas. Guardar resultado en archivo plano.

Resultado Esperado Tweets con el contenido adecuado almacenados en un archivo plano.

Evaluación de la prueba Aprobada

Tabla No 90. Caso de prueba N° 7 (Diseño propio) CASO DE PRUEBA

Código 7 N° Historia de usuario 7-2 Nombre de la prueba Separar palabras utilizando registro histórico

Condiciones de ejecución Los Tweets adecuados deben estar almacenados en un archivo plano y la lista de palabras Hashtag separadas debe estar creada.

Entrada/paso de ejecución

Durante la separación de minúsculas seguidas de mayúsculas se crea la lista de palabras Hashtag separadas. Lectura de Tweets adecuados. Por cada palabra de la lista de palabras separadas se hace: - L eer palabra de la lista, concatenarla y pasarla a minúscula. - Buscar coincidencias de la palabra concatenada y reemplazarlas por la palabra separada.

Resultado Esperado Contenido de los Tweets con las palabras separadas listo para aplicar la eliminación de Tweets por contenido.

Evaluación de la prueba Aprobada

92

Anexo No 5 Tercera Iteración

Historias de Usuario

La descripción general de las historia de usuario de la tercera iteración se especifican en la Tabla No 91 y en la Tabla No 92.

Tabla No 91. Historia de usuario N° 10 (Diseño propio) Historia de usuario

Número 10 Usuario Sistema Nombre Historia Obtención del grado de favorabilidad del Hashtag ingresado Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 3 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción Se debe realizar pruebas con diferentes métodos para obtener el grado de favorabilidad del Hashtag ingresado para escoger el método que arroje los mejores resultados.

Observaciones

Los métodos que se deben probar en la obtención del grado de favorabilidad son: - Frecuencia de signos. - Multiplicación de signos. - Compuertas lógicas. - Ponderación de signos.

La frase que no contenga símbolos debe ser descartada.

Tabla No 92. Historia de usuario N° 11 (Diseño propio) Historia de usuario

Número 11 Usuario Sistema Nombre Historia Asignación de polaridad de expresiones comunes Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 3 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción Se debe realizar una búsqueda en el contenido de las frases de los Tweets que permita encontrar expresiones comunes formadas por adverbios seguidos de otras palabras, de tal forma que el adverbio aumente o invierta la polaridad de la palabra.

Observaciones

El sistema debe asignar la polaridad de expresiones comunes después de separar el contenido de los Tweets en frases. Ejemplos "Muy bueno": El adverbio de cantidad "muy" haría que la polaridad positiva de "bueno" aumentara a "++". "No bueno": El adverbio de negación "no" haría que la polaridad de "bueno" cambiara a " -".

93

Tareas de Ingeniería

La especificación de cada una de las tareas de ingeniería de la tercera iteración se muestra desde Tabla No 93 la hasta Tabla No 99.

Tabla No 93. Tarea de ingeniería N° 16 (Diseño propio) Tarea de Ingeniería

Número 16 Número de Historia 10 Nombre Calcular grado de favorabilidad por frecuencia de símbolos

Tipo Codificación Puntos estimados 1 Fecha Inicio 19/12/2016 Fecha Fin 19/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de reemplazar las palabras por polaridad, se recorrerá el contenido de cada una de las frases para obtener la frecuencia de símbolos (+ positivo, - negativo) y asignarle un valor de favorabilidad a la frase según los resultados obtenido s, si la cantidad de positivos es mayor que la de negativos se asigna el valor de 1, si la cantidad de negativos es mayor que la de positivos se asigna el valor de - 1, si las cantidades son equivalentes se asigna el valor de 0. Se guardará el ID y el valor asignado de cada frase en un nuevo archivo plano

Tabla No 94. Tarea de ingeniería N° 17 (Diseño propio) Tarea de Ingeniería

Número 17 Número de Historia 10 Nombre Calcular grado de favorabilidad por multiplicación de símbolos

Tipo Codificación Puntos estimados 1 Fecha Inicio 19/12/2016 Fecha Fin 19/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de reemplazar palabras por polaridad, se recorrerá el contenido de cada una de las frases para realizar la multiplicación de los símbolos encontrados (1 para el positivo "+”, - 1 para el negativo " -") y asignarle el resultado obtenido como valor de favorabilidad a la frase, si la frase no tiene ningún símbolo "+" o " -" el resultado será 0. Se guardará el ID y el valor asignado de cada frase en un nuevo archivo plano.

Tabla No 95. Tarea de ingeniería N° 18 (Diseño propio) Tarea de Ingeniería

Número 18 Número de Historia 10 Nombre Calcular grado de favorabilidad por ponderación de símbolos y palabras

Tipo Codificación Puntos estimados 1 Fecha Inicio 19/12/2016 Fecha Fin 19/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de reemplazar palabras por polaridad, se realizarán los siguientes pasos para obtener el valor de favorabilidad para cada una de las frases: - Se recorrerá el contenido de la frase para contar la cantidad de palabras que hay después de cada uno de los símbolos (el símbolo cuenta como una palabra), luego se multiplicará este valor por el valor del símbolo (1 para "+", -1 para " -", 0 para "*") y se obtendrá un valor por cada símbolo. - Se sumarán los valores de los símbolos y el resultado es dividido por la cantidad de palabras que contenga la frase. El resultado de esta división será el valor de favorabilidad de la frase. Se guardará el ID y el valor obtenido por cada frase en un nuevo archivo plano.

94

Tabla No 96. Tarea de ingeniería N° 19 (Diseño propio) Tarea de Ingeniería

Número 19 Número de Historia 10 Nombre Calcular grado de favorabilidad por compuertas lógicas

Tipo Codificación Puntos estimados 1 Fecha Inicio 19/12/2016 Fecha Fin 19/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Se planteará una compuerta lógica para asignar el valor de favorabilidad a cada frase seg ún los símbolos que contengan. Después de reemplazar palabras por polaridad, se asignará el valor de favorabilidad a cada frase a partir de los resultados arrojados por la compuerta lógica. Se guardará el ID y el valor obtenido por cada frase en un nuevo archivo plano.

Tabla No 97. Tarea de ingeniería N° 20 (Diseño propio) Tarea de Ingeniería

Número 20 Número de Historia 11 Nombre Detectar expresiones comunes para asignarles su polaridad

Tipo Codificación Puntos estimados 2 Fecha Inicio 20/12/2016 Fecha Fin 21/12/2016 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Se creará una lista que contenga expresiones comunes (formadas por dos palabras) junto con su respectiva polaridad, durante el reemplazo de las palabras por su polaridad, se comprobará si la palabra a analizar es una de las que inician una expresión común, si lo es se tomará la palabra que le sigue en la frase y se comprueba si ambas forman una expresión común, si no se contin ua con la búsqueda individual.

Tabla No 98. Tarea de ingeniería N° 21 (Diseño propio) Tarea de Ingeniería

Número 21 Número de Historia 11 Nombre Asignar polaridad a partir de la resolución de adverbios

Tipo Codificación Puntos estimados 6 Fecha Inicio 16/01/2017 Fecha Fin 21/01/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Se realizará una lista de adverbios de cantidad y de negación que refuercen o inviertan la polaridad de las palabras que les siguen. Se les asignará un símbolo que identifique si son cuantificadores ("$" para refuerzo) o modificadores ("%" para inversión). Durante el reemplazo de las palabras por su polaridad también se ira reemplazando los adverbios por su símbolo asignado. Después de que se haya terminado de recorrer la frase, se verificará si después de los modificadores y/o cuantificadores quedó algún símbolo de polaridad, si quedó algún símbolo se debe aplicar la resolución al símbolo para invertirlo (cambiar el símbolo) o reforzarlo ( duplicar el símbolo) según sea el caso. Si no quedo ningún símbolo, el modificador se remplazará por el símbolo de polaridad negativa y el cuantificador por el símbolo de polaridad neutral.

95

Tabla No 99. Tarea de ingeniería N° 22 (Diseño propio) Tarea de Ingeniería

Número 22 Número de Historia 10 Nombre Calcular grado de favorabilidad por ponderación de símbolos

Tipo Codificación Puntos estimados 1 Fecha Inicio 31/01/2017 Fecha Fin 31/01/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Después de reemplazar palabras por polaridad, se realizarán los siguientes pasos para obtener el grado de favorabilidad del Hashtag ingresado, para cada una de las frases se hará: - Se recorrerá el contenido de la frase para buscar símbolos de polaridad y asignarles un valor (1 para "+", -1 para " -", 0 para "*"). - Se sumarán los valores de los símbolos y el resultado se dividi rá por la cantidad de símbolos que contenga la frase. El resultado de esta división será el valor de favorabilidad de la frase. Se guardará el ID y el valor obtenido por cada frase en un nuevo archivo plano. Por último, se obtendrá el promedio de favorabilidad de todas las frases el cual será el grado de favorabilidad total del Hashtag ingresado. Este método reemplazaría a l de calcular valor de favorabilidad por ponderación de símbolos y palabras.

Pruebas de Aceptación

Desde la Tabla No 100 hasta la Tabla No 102 se describe cada una de las pruebas de aceptación.

Tabla No 100. Caso de prueba N° 8 (Diseño propio) CASO DE PRUEBA

Código 8 N° Historia de usuario 10 Nombre de la prueba Obtener valor de favorabilidad por frases

Condiciones de ejecución Las frases de los Tweets con símbolos de polaridad deben estar almacenadas en un archivo plano.

Entrada/paso de ejecución

Lectura del archivo de polaridades. Por cada frase hacer: - Comprobar los signos de cada frase. - Obtener valor de favorabilidad de la frase utilizando ponderación de símbolos. Almacenar el resultado ( ID: Favorabilidad) en un archivo plano.

Resultado Esperado Favorabilidad por cada una de las frases almacenada en un archivo plano.

Evaluación de la prueba Aprobada

Tabla No 101. Caso de prueba N° 9 (Diseño propio) CASO DE PRUEBA

Código 9 N° Historia de usuario 10 Nombre de la prueba Obtener grado de favorabilidad total del Hashtag ingresado

Condiciones de ejecución La favorabilidad por cada una de las frases debe estar almacenada en un archivo plano.

Entrada/paso de ejecución Lectura de archivo de favorabilidad por frases. Obtener grado de favorabilidad total. Almacenar favorabilidad total en un archivo plano.

Resultado Esperado Archivo con el resultado de la favorabilidad total del Hashtag ingresado

Evaluación de la prueba Aprobada

96

Tabla No 102. Caso de prueba N° 10 (Diseño propio) CASO DE PRUEBA

Código 10 N° Historia de usuario 11 Nombre de la prueba Asignar polaridad de expresiones comunes

Condiciones de ejecución Las frases de los Tweets sin Stopwords deben estar almacenadas en un archivo plano.

Entrada/paso de ejecución

Lectura de Tweets separados por frases Por cada frase hacer: - Buscar adjetivos de cantidad (cuantificadores) y de negación (modificadores), y reemplazarlos por su respectivo símbolo. - Resolver el reemplazo. Almacenar el resultado en un archivo plano.

Resultado Esperado Frases de los Tweets con símbolos de polaridad almacenadas en un archivo plano.

Evaluación de la prueba Aprobada

Anexo No 6 Cuarta Iteración

Historias de Usuario

La descripción general de cada una de las historias de usuarios de la cuarta iteración se especifican desde la Tabla No 103 hasta Tabla No 106.

Tabla No 103. Historia de usuario N° 12 (Diseño propio) Historia de usuario

Número 12 Usuario Usuario final Nombre Historia Mostrar resultados de análisis de opinión en ambiente web Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 3 Iteración asignada 4 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe permitir realizar el análisis de opinión y mostrar los resultados para mínimo 1 y máximo 3 Hashtags ingresados por el usuario.

Observaciones Se debe mostrar una tabla con los datos de los resultados de los análisis y una gráfica con el grado de favorabilidad

Tabla No 104. Historia de usuario N° 13 (Diseño propio) Historia de usuario

Número 13 Usuario Usuario final Nombre Historia Mostrar historial de favorabilidad después de análisis Prioridad Media Riesgo en el desarrollo Media Puntos estimados 1 Iteración asignada 4 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe permitir la opción de mostrar la gráfica del historial de favorabilidad de los Hashtag que hayan sido seleccionados por el usuario. Esta opción debe mostrarse junto con los resultados del análisis.

Observaciones Cuando se seleccione 2 o 3 Hashtag se debe mostrar las gráficas a la vez en una nueva interfaz.

97

Tabla No 105. Historia de usuario N° 14 (Diseño propio) Historia de usuario

Número 14 Usuario Usuario final Nombre Historia Mostrar registro histórico de un Hashtag buscado Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 4 Programador responsable Daniel Ruiz - Yohana Delgado Descripción El sistema debe permitir buscar el registro histórico de un Hashtag.

Observaciones Se debe mostrar los resultados en una tabla y en una gráfica el historial de favorabilidad. Solo se puede consultar el registro histórico para un solo Hashtag a la vez.

Tabla No 106. Historia de usuario N° 15 (Diseño propio) Historia de usuario

Número 15 Usuario Administrador general, Administrador Nombre Historia Creación módulo de administración del sistema Prioridad Alta Riesgo en el desarrollo Alta Puntos estimados 2 Iteración asignada 4 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe permitir controlar los parámetros iniciales para el análisis, para ello es necesario crear un usuario administrador

Observaciones El usuario administrador será el encargado de la gestión de claves ( Consumer Key, Consumer Secret), número máximo de Tweets.

Tareas de ingeniería

La especificación de cada una de las tareas de ingeniería se muestra desde la Tabla No 107 hasta la Tabla No 122.

Tabla No 107. Tarea de ingeniería N° 23 (Diseño propio) Tarea de Ingeniería

Número 23 Número de Historia 12 Nombre Validar existencia de Tweets de Hashtags ingresados

Tipo Codificación Puntos estimados 1 Fecha Inicio 05/02/2017 Fecha Fin 05/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la verificación de que existan Tweets que contengan el Hashtag ingresado por el usuario final antes de continuar con la descarga y posterior análisis.

Tabla No 108. Tarea de ingeniería N° 24 (Diseño propio) Tarea de Ingeniería

Número 24 Número de Historia 12 Nombre Crear la interfaz para realizar el análisis

Tipo Codificación Puntos estimados 2 Fecha Inicio 05/02/2017 Fecha Fin 06/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que contenga tres cajas de texto en donde el usuario podrá ingresar de 1 a 3 Hashtag y tendrá un botón para indicar que comience el análisis.

98

Tabla No 109. Tarea de ingeniería N° 25 (Diseño propio) Tarea de Ingeniería

Número 25 Número de Historia 12 Nombre Crear la interfaz para mostrar resultados del análisis

Tipo Codificación Puntos estimados 4 Fecha Inicio 07/02/2017 Fecha Fin 10/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que muestra una tabla con los datos obtenidos del análisis y una gráfica que muestra el grado de favorabilidad de los Hashtag ingresados e n un rango de 0 a 100. Esta interfaz también tendrá las cajas de texto y el botón para realizar un nuevo análisis.

Tabla No 110. Tarea de ingeniería N° 26 (Diseño propio) Tarea de Ingeniería

Número 26 Número de Historia 12 Nombre Crear esquema en la base de datos de resultados de análisis

Tipo Codificación Puntos estimados 1 Fecha Inicio 10/02/2017 Fecha Fin 10/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará el esquema de la base de datos para almacenar los resultados del análisis de los Hashtag y poder llevar un registro histórico de los análisis.

Tabla No 111. Tarea de ingeniería N° 27 (Diseño propio) Tarea de Ingeniería

Número 27 Número de Historia 14 Nombre Crear la interfaz para mostrar el registro histórico de Hashtag buscado.

Tipo Codificación Puntos estimados 2 Fecha Inicio 11/02/2017 Fecha Fin 12/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que muestra en una tabla los registros históricos de un Hashtag, además de mostrar una gráfica con el historial de favorabilidad. El botón que le permitirá al usuario ingresar el Hashtag del cual desea consultar el regi stro histórico será mostrado en todas las interfaces.

Tabla No 112. Tarea de ingeniería N° 28 (Diseño propio) Tarea de Ingeniería

Número 28 Número de Historia 12 Nombre Disminuir tiempo de respuesta para mostrar resultados

Tipo Codificación Puntos estimados 1 Fecha Inicio 14/02/2017 Fecha Fin 14/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Cuando el usuario ingrese 2 o 3 Hashtags válidos se deberá realizar el análi sis en paralelo y se le mostrarán los resultados cuando todos los análisis hayan sido finalizados

Tabla No 113. Tarea de ingeniería N° 29 (Diseño propio) Tarea de Ingeniería

Número 29 Número de Historia 12 Nombre Guardar información procesamiento y pre -procesamiento en la BD

Tipo Codificación Puntos estimados 6 Fecha Inicio 15/02/2017 Fecha Fin 21/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Después de mostrar el resultado del análisis del Hashtag ingresado por el usuario, la información de procesamiento y pre -procesamiento de Tweets se debe almacenar en la base de datos.

99

Tabla No 114. Tarea de ingeniería N° 30 (Diseño propio) Tarea de Ingeniería

Número 30 Número de Historia 13 Nombre Crear interfaz historial de favorabilidad después de análisis

Tipo Codificación Puntos estimados 4 Fecha Inicio 17/02/2017 Fecha Fin 20/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que permita mostrar las gráficas del historial de favorabilidad de los Hashtags buscados, el usuario deberá seleccionar en la interfaz de resultados al menos uno de los Hashtags para que se muestre la gráfica.

Tabla No 115. Tarea de ingeniería N° 31 (Diseño propio) Tarea de Ingeniería

Número 31 Número de Historia 15 Nombre Crear esquema en la base de datos del usuario administrador

Tipo Codificación Puntos estimados 1 Fecha Inicio 20/02/2017 Fecha Fin 20/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará el esquema de la base de datos para almacenar la información correspondiente al usuario administrador

Tabla No 116. Tarea de ingeniería N° 32 (Diseño propio) Tarea de Ingeniería

Número 32 Número de Historia 15 Nombre Crear esquema en la base de datos de parámetros del sistema

Tipo Codificación Puntos estimados 1 Fecha Inicio 20/02/2017 Fecha Fin 20/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará el esquema de la base de datos para almacenar los parámetros de la aplicación (número máximo de Tweets a descargar por Hashtag y claves del API de Twitter)

Tabla No 117. Tarea de ingeniería N° 33 (Diseño propio) Tarea de Ingeniería

Número 33 Número de Historia 15 Nombre Crear interfaz de login para ingreso al módulo de administración

Tipo Codificación Puntos estimados 1 Fecha Inicio 21/02/2017 Fecha Fin 21/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que permita al usuario autenticarse como administrador, donde deberá ingresar su usuario y contraseña

Tabla No 118. Tarea de ingeniería N° 34 (Diseño propio) Tarea de Ingeniería

Número 34 Número de Historia 15 Nombre Crear interfaces de parametrización: número máximo de Tweets

Tipo Codificación Puntos estimados 2 Fecha Inicio 22/02/2017 Fecha Fin 23/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que permita al usuario administrador cambiar el número máximo de Tweets a ser analizados, este valor estará entre 200 y 10000 Tweets

100

Tabla No 119. Tarea de ingeniería N° 35 (Diseño propio) Tarea de Ingeniería

Número 35 Número de Historia 15 Nombre Crear interfaces de parametrización: claves del API de Twitter

Tipo Codificación Puntos estimados 3 Fecha Inicio 22/02/2017 Fecha Fin 24/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizaran las interfaces CRUD (Crear, ver, actualizar y eliminar) que permitan al usuario administrador gestionar las claves del API ( Consumer Key y Consumer Secret)

Tabla No 120. Tarea de ingeniería N° 36 Diseño propio) Tarea de Ingeniería

Número 36 Número de Historia 12 Nombre Variar claves del API de Twitter

Tipo Codificación Puntos estimados 1 Fecha Inicio 28/02/2017 Fecha Fin 28/02/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se deberá variar las claves del API de Twitter cada vez que se realice un nuevo análisis, debido a las limitaciones de consulta del API de Twitter

Tabla No 121. Tarea de ingeniería N° 37 (Diseño propio) Tarea de Ingeniería

Número 37 Número de Historia 15 Nombre Crear interfaz para editar contraseña

Tipo Codificación Puntos estimados 1 Fecha Inicio 28/02/2017 Fecha Fin 28/02/2017 Responsable Daniel Ruiz - Yohana Delgado Descripción Se realizará n la interfaz para que el usuario pueda editar su contraseña (mínimo 8 caracteres)

Tabla No 122. Tarea de ingeniería N° 38 (Diseño propio) Tarea de Ingeniería

Número 38 Número de Historia 15 Nombre Gestionar sesión de usuario administrador

Tipo Codificación Puntos estimados 3 Fecha Inicio 28/02/2017 Fecha Fin 02/03/2017 Responsable Daniel Ruiz - Yohana Delgado Descripción Se realizará la gestión de inicio y cierre de sesión del administrador.

101

Pruebas de aceptación

Desde la Tabla No 123 hasta la Tabla No 130 se describe cada una de las pruebas de aceptación.

Tabla No 123. Caso de prueba N° 11 (Diseño propio) CASO DE PRUEBA

Código 11 N° Historia de usuario 12 Nombre de la prueba Mostrar resultados de análisis de opinión en ambiente web Condiciones de ejecución Se debe haber cargado la interfaz para ingresar Hashtag

Entrada/paso de ejecución

El usuario final ingresa los Hashtags a analizar y oprime el botón "Realizar análisis". Verificar que los Hashtag ingresados sean diferentes entre sí, se omite el análisis del Hashtag que este repetido. Por cada uno de lo s Hashtags se debe: -Verificar existencia de Tweets que contengan el Hashtag, si no existen Tweets para un Hashtag se omite el análisis de ese Hashtag. -Realizar el análisis y obtener resultados. -Mostrar los resultados al usuario final. -Guardar los resultados en la base de datos.

Resultado Esperado Visualización de los resultados obtenidos del análisis por cada Hashtag ingresado. Resultados del análisis guardados en la base de datos.

Evaluación de la prueba Aprobada

Tabla No 124. Caso de prueba N° 12 (Diseño propio) CASO DE PRUEBA

Código 12 N° Historia de usuario 13 Nombre de la prueba Mostrar historial de favorabilidad después de análisis

Condiciones de ejecución Visualización de los resultados obtenidos del análisis de Hashtags.

Entrada/paso de ejecución

El usuario final marca las casillas de los Hashtags a los que les desea ver su historial de favorabilidad y oprime el botón “Historial Seleccionados". Por cada H ashtag seleccionado se debe: -Realizar la consulta a la base de datos del registro histórico. -Mostrar grafica del historial de favorabilidad al usuario final.

Resultado Esperado Visualización de la gráfica por cada uno de los Hashtag seleccionado.

Evaluación de la prueba Aprobada

Tabla No 125. Caso de prueba N° 13 (Diseño propio) CASO DE PRUEBA

Código 13 N° Historia de usuario 14 Nombre de la prueba Mostrar registro histórico de un Hashtag buscado

Condiciones de ejecución Visualización del botón y campo de texto para realizar búsqueda.

Entrada/paso de ejecución

El usuario final debe ingresar un Hashtag para buscar. Realizar consulta a la base de datos del registro histórico. Mostrar tabla con los resultados de la consulta y grafica con historial de favorabilidad al usuario final.

Resultado Esperado Visualización de la tabla y de la gráfica de la consulta realizada. Evaluación de la prueba Aprobada

102

Tabla No 126. Caso de prueba N° 14 (Diseño propio) CASO DE PRUEBA

Código 14 N° Historia de usuario 15 Nombre de la prueba Autenticar usuario administrador en el sistema

Condiciones de ejecución Visualización de la interfaz de login. El usuario administrador no debe estar autenticado en el dispositivo del cual va a ingresar

Entrada/paso de ejecución

El usuario administrador ingresa su nombre de usuario y contraseña. Se verifican los datos ingresados. Si los datos son correctos se le muestra la interfaz de opciones.

Resultado Esperado Visualización de la interfaz de opciones. Evaluación de la prueba Aprobada

Tabla No 127. Caso de prueba N° 15 (Diseño propio) CASO DE PRUEBA

Código 15 N° Historia de usuario 15 Nombre de la prueba Editar parámetro: Número máximo de Tweets Condiciones de ejecución El usuario administrador debe haber ingresado al sistema

Entrada/paso de ejecución

El usuario administrador selecciona la opción "Cambiar número máximo de Tweets " en la pantalla de opciones. Luego selecciona la opción Editar. Cambia el número máximo de Tweets (200 - 10000) y selecciona la opción Guardar. Se valida y guarda el nuevo valor en la base de datos. Se muestra mensaje de confirmación al usuario administrador.

Resultado Esperado Valor del máximo de Tweets a descargar actualizado en la base de datos

Evaluación de la prueba Aprobada

Tabla No 128. Caso de prueba N° 16 (Diseño propio) CASO DE PRUEBA

Código 16 N° Historia de usuario 15 Nombre de la prueba Editar parámetro: Claves del API de Twitter Condiciones de ejecución El usuario administrador debe haber ingresado al sistema.

Entrada/paso de ejecución

El usuario administrador selecciona la opción "Gestionar claves" en la pantalla de opciones. Luego selecciona la opción editar de una de las claves. Edita los campos de Consumer Key y Consumer Secret y selecciona la opción Guardar. Se validan y guardan los valores actualizados en la base de datos. Se muestra mensaje de confirmación al usuario administrador.

Resultado Esperado Valores de las claves editadas actualizadas en la base de datos. Evaluación de la prueba Aprobada

103

Tabla No 129. Caso de prueba N° 17 (Diseño propio) CASO DE PRUEBA

Código 17 N° Historia de usuario 15 Nombre de la prueba Crear parámetro: Claves del API de Twitter Condiciones de ejecución El administrador debe haber ingresado al sistema.

Entrada/paso de ejecución

El usuario administrador selecciona la opción "Gestionar claves" en la pantalla de opciones. Luego selecciona la opción Agregar. Ingresa los valores del Consumer Key y Consumer Secret Se validan y guardan los valores en la base de datos. Se muestra mensaje de confirmación al usuario administrador.

Resultado Esperado Claves creadas en la base de datos. Evaluación de la prueba Aprobada

Tabla No 130. Caso de prueba N° 18 (Diseño propio) CASO DE PRUEBA

Código 18 N° Historia de usuario 15 Nombre de la prueba Eliminar parámetro: Claves del API de Twitter Condiciones de ejecución El administrador debe haber ingresado al sistema.

Entrada/paso de ejecución

El usuario administrador selecciona la opción "Gestionar claves" en la pantalla de opciones. Luego selecciona la opción eliminar de una de las claves. Seleccionar la opción Eliminar. Se muestra la interfaz de confirmación de eliminar clave. Selecciona la opción Eliminar. Se valida la eliminación y se borra la Consumer Key y la Consumer Secret de la base de datos. Se muestra mensaje de confirmación al usuario administrador.

Resultado Esperado Claves eliminadas de la base de datos. Evaluación de la prueba Aprobada

Anexo No 7 Quinta Iteración

Historias de usuario

La descripción general de cada una de las historias de usuario de la quinta iteración se especifican desde la Tabla No 131 hasta la Tabla No 136.

Tabla No 131. Historia de usuario N° 16 (Diseño propio) Historia de usuario

Número 16 Usuario Administrador general Nombre Historia Creación opción de gestión de usuarios Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 5 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema deberá permitir crear usuarios administrador y administrador del lexicón únicamente a un usuario de tipo administrador principal.

Observaciones Los usuarios creados no tendrán la opción de gestión de usuarios.

104

Tabla No 132. Historia de usuario N° 17 (Diseño propio) Historia de usuario

Número 17 Usuario Usuario final Nombre Historia Mostrar estadísticas del uso de la aplicación Prioridad Media Riesgo en el desarrollo Media Puntos estimados 1 Iteración asignada 5 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe mostrar la cantidad de veces que se han realizado análisis y mostrar los Hashtag que más se han analizado.

Observaciones Los análisis contabilizados deben ser los exitosos.

Tabla No 133. Historia de usuario N° 18 (Diseño propio) Historia de usuario

Número 18 Usuario Usuario administrador Nombre Historia Integración de Twitter en la interfaz de resultados Prioridad Media Riesgo en el desarrollo Medio Puntos estimados 1 Iteración asignada Programador responsable Daniel Ruiz - Yohana Delgado

Descripción Se debe integrar una ventana de Twitter donde se muestren los últimos Tweets de los Hashtags que han sido analizados

Observaciones Ninguna

Tabla No 134. Historia de usuario N° 19 (Diseño propio) Historia de usuario

Número 19 Usuario Usuario final Nombre Historia Mostrar las tendencias en español de Twitter Prioridad Medio Riesgo en el desarrollo Medio Puntos estimados 1 Iteración asignada 5 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe mostrar las tendencias de Colombia de Twitter en la interfaz principal, y tener la opción de ver tendencias de otros países de habla hispana.

Observaciones Se deben mostrar las tendencias de Colombia solo en la interfaz principal donde se ingresan los Hashtag para realizar análisis.

Tabla No 135. Historia de usuario N° 20 (Diseño propio) Historia de usuario

Número 20 Usuario Administrador general Nombre Historia Optimización de lectura de los recursos léxicos Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 5 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción Los recursos léxicos deben ser cargados a memoria principal para optimizar el tiempo de su lectura

Observaciones El sistema debe permitir recargar el lexicón y la lista de Stopwords en memoria principal después de que se haya generado una nueva versión de estos recursos.

105

Tabla No 136. Historia de usuario N° 21 (Diseño propio) Historia de usuario

Número 21 Usuario Administrador del lexicón Nombre Historia Creación módulo de administración del lexicón Prioridad Alta Riesgo en el desarrollo Alto Puntos estimados 1 Iteración asignada 5 Programador responsable Daniel Ruiz - Yohana Delgado

Descripción El sistema debe permitir gestionar las palabras del lexicón, para ello es necesario crear un usuario administrador del lexicón

Observaciones El usuario administrador del lexicón será el encargado de la creación de versiones del lexicón y de la gestión de las palabras de las versiones.

Tareas de Ingeniería

La especificación de cada una de las tareas de ingeniería se muestra desde la Tabla No 137 hasta la Tabla No 148.

Tabla No 137. Tarea de ingeniería N° 39 (Diseño propio) Tarea de Ingeniería

Número 39 Número de Historia 16 Nombre Crear interfaz de gestión de usuarios

Tipo Codificación Puntos estimados 2 Fecha Inicio 03/03/2017 Fecha Fin 04/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará las interfaces para que el usuario administrador principal pueda crear y eliminar los usuarios, a estos se les asignará un tipo de usuario administrador o administrador del lexicón los cuales los distinguirá del administrador principal.

Tabla No 138. Tarea de ingeniería N° 40 (Diseño propio) Tarea de Ingeniería

Número 40 Número de Historia 17 Nombre Crear contador de análisis realizados

Tipo Codificación Puntos estimados 1 Fecha Inicio 03/03/2017 Fecha Fin 03/03/2017 Responsable Daniel Ruiz - Yohana Delgado Descripción Se mostrará el número de análisis realizados en las interfaces a las que tiene acceso el usuario final.

Tabla No 139. Tarea de ingeniería N° 41 (Diseño propio) Tarea de Ingeniería

Número 41 Número de Historia 18 Nombre Probar integración de Twitter en la pagina

Tipo Codificación Puntos estimados 1 Fecha Inicio 06/03/2017 Fecha Fin 06/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se integrará el Widget que ofrece Twitter para integrarlo en la interfaz de resultados. El Widget permite mostrar Tweets de un Hashtag específico.

106

Tabla No 140. Tarea de ingeniería N° 42 (Diseño propio) Tarea de Ingeniería

Número 42 Número de Historia 19 Nombre Mostrar tendencias de Colombia en la interfaz principal

Tipo Codificación Puntos estimados 3 Fecha Inicio 06/03/2017 Fecha Fin 08/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se utilizará el API de Twitter para obtener las Tendencias de Colombia y se mostrará en forma de lista en la interfaz principal donde se ingresan los Hashtag para realizar análisis. A cada tendencia se le pondrá el hipervínculo que redirige a los resultados de su búsqueda en Twitter.

Tabla No 141. Tarea de ingeniería N° 43 (Diseño propio) Tarea de Ingeniería

Número 43 Número de Historia 19 Nombre Mostrar tendencias de países hispanos

Tipo Codificación Puntos estimados 2 Fecha Inicio 07/03/2017 Fecha Fin 08/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción

Se realizará la interfaz que permita al usuario final seleccionar un país de habla hispana para ver sus Tendencias de Twitter . Se mostrará la lista de países que tienen soporte para obtener tendencias, y las Tendencias se mostrarán en forma de lista. A cad a tendencia se le pondrá el hipervínculo que redirige a los resultados de su búsqueda en Twitter.

Tabla No 142. Tarea de ingeniería N° 44 (Diseño propio) Tarea de Ingeniería

Número 44 Número de Historia 20 Nombre Crear interfaz para subir a memoria los recursos léxicos

Tipo Codificación Puntos estimados 2 Fecha Inicio 09/03/2017 Fecha Fin 10/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que permita al usuario administrador cargar el lexicón y la lista de Stopwords a Redis cuando se requiera.

Tabla No 143. Tarea de ingeniería N° 45 (Diseño propio) Tarea de Ingeniería

Número 45 Número de Historia 20 Nombre Crear esquemas en la base de datos de recursos léxicos

Tipo Codificación Puntos estimados 1 Fecha Inicio 10/03/2017 Fecha Fin 10/03/2017 Responsable Daniel Ruiz - Yohana Delgado Descripción Se realizarán los esquemas de la base de datos para almacenar el lexicón y la lista de Stopwords

Tabla No 144. Tarea de ingeniería N° 46 (Diseño propio) Tarea de Ingeniería

Número 46 Número de Historia 17 Nombre Mostrar los Hashtag más buscados

Tipo Codificación Puntos estimados 1 Fecha Inicio 10/03/2017 Fecha Fin 10/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se mostrará una lista de los Hashtag que más han sido analizados por la aplicación en las interfaces a las que tiene acceso el usuario final.

107

Tabla No 145. Tarea de ingeniería N° 47 (Diseño propio) Tarea de Ingeniería

Número 47 Número de Historia 21 Nombre Crear interfaz de login para ingreso al módulo gestión del lexicón

Tipo Codificación Puntos estimados 1 Fecha Inicio 21/03/2017 Fecha Fin 21/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que permita al usuario autenticarse como administrador del lexicón, donde deberá ingresar su usuario y contraseña

Tabla No 146. Tarea de ingeniería N° 48 (Diseño propio) Tarea de Ingeniería

Número 48 Número de Historia 21 Nombre Mostrar lista de versiones del lexicón y cargar listado de palabras

Tipo Codificación Puntos estimados 1 Fecha Inicio 21/03/2017 Fecha Fin 21/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizarán las interfaces que permitan al administrador del lexicón ver el listado de versiones del lexicón y cuando seleccione una de las versiones del lexicón se muestre el listado de las palabras junto con su polaridad y las opciones de editar y eliminar.

Tabla No 147. Tarea de ingeniería N° 49 (Diseño propio) Tarea de Ingeniería

Número 49 Número de Historia 21 Nombre Crear interfaz de creación de versiones del lexicón

Tipo Codificación Puntos estimados 1 Fecha Inicio 22/03/2017 Fecha Fin 22/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizará la interfaz que permita al administrador del lexicón crear una nueva versión del lexicón a partir de una ya existente, y escribirle una descripción.

Tabla No 148. Tarea de ingeniería N° 50 (Diseño propio) Tarea de Ingeniería

Número 50 Número de Historia 21 Nombre Crear interfaces de gestión de palabras del lexicón

Tipo Codificación Puntos estimados 1 Fecha Inicio 22/03/2017 Fecha Fin 22/03/2017 Responsable Daniel Ruiz - Yohana Delgado

Descripción Se realizaran las interfaces CRUD (Crear, ver, actualizar y eliminar) que permitan al usuario administrador del lexicón gestionar las palabras de las versiones del lexicón

108

Pruebas de Aceptación

Desde la Tabla No 149 hasta la Tabla No 159 se describe cada una de las pruebas de aceptación.

Tabla No 149. Caso de prueba N° 19 (Diseño propio) CASO DE PRUEBA

Código 19 N° Historia de usuario 16 Nombre de la prueba Crear usuario administrador o administrador lexicón

Condiciones de ejecución El usuario administrador general debe haber ingresado al sistema

Entrada/paso de ejecución

El usuario administrador general selecciona la opción "Gestionar Usuarios" en la pantalla de opciones. Luego selecciona la opción Agregar. Ingresa los valores: - Nombre de usuario - Username - Selecciona el Tipo de Usuario - Contraseña y confirmación de contraseña Se validan y guardan los valores en la base de datos. Se muestra mensaje de confirmación al usuario administrador general.

Resultado Esperado Usuario creado en la base de datos Evaluación de la prueba Aprobada

Tabla No 150. Caso de prueba N° 20 (Diseño propio) CASO DE PRUEBA

Código 20 N° Historia de usuario 16 Nombre de la prueba Eliminar usuario administrador o administrador lexicón

Condiciones de ejecución El usuario administrador general debe haber ingresado al sistema

Entrada/paso de ejecución

El usuario administrador general selecciona la opción "Gestionar Usuarios" en la pantalla de opciones. Luego selecciona la opción eliminar de uno de los usuarios. Se muestra la interfaz de confirmación de eliminar usuario. Selecciona la opción Eliminar. Se valida la eliminación y se borran los valores en la base de datos. Se muestra mensaje de confirmación al usuario administrador general.

Resultado Esperado Usuario creado en la base de datos Evaluación de la prueba Aprobada

109

Tabla No 151. Caso de prueba N° 21 (Diseño propio) CASO DE PRUEBA

Código 21 N° Historia de usuario 17 Nombre de la prueba Mostrar estadísticas del uso de la aplicación Condiciones de ejecución Debe haber consultas almacenadas en la base de datos.

Entrada/paso de ejecución

En la interfaz inicial y de resultados se muestra la lista de Hashtag más analizados. En todas las interfaces que tiene acceso el usuario final se muestra el número de veces que se han realizado análisis.

Resultado Esperado Visualización de lista de Hashtag más analizados. Visualización de número de veces de análisis realizados.

Evaluación de la prueba Aprobada

Tabla No 152. Caso de prueba N° 22 (Diseño propio) CASO DE PRUEBA

Código 22 N° Historia de usuario 19 Nombre de la prueba Mostrar las tendencias en español de Twitter

Condiciones de ejecución la lista de países con su código debe estar almacenado en la base de datos

Entrada/paso de ejecución

En la interfaz de inicio se muestra las tendencias de Colombia y la opción de ver tendencias de otras regiones. Para ver tendencias de otras regiones: - El usuario final selecciona la opción "Consultar tendencias de otras regiones" - Mostrar la interfaz de consulta de tendencias de otras regiones. - El usuario final selecciona la región de la cual desea ver las tendencias. - Mostrar las tendencias de la región seleccionada.

Resultado Esperado Visualización de las tendencias de Colombia. Visualización de las tendencias de la región seleccionada por el usuario final.

Evaluación de la prueba Aprobada

Tabla No 153. Caso de prueba N° 23 (Diseño propio) CASO DE PRUEBA

Código 23 N° Historia de usuario 20 Nombre de la prueba Cargar lexicón a memoria principal

Condiciones de ejecución El lexicón debe estar almacenado en la base de datos. El administrador debe haber ingresado en el sistema.

Entrada/paso de ejecución

El administrador debe seleccionar la opción "Gestionar recursos léxicos". Mostrar la interfaz para generar recursos. El administrador selecciona la versión del lexicón que desee cargar y da clic en el botón "Crear lexicón" Borrar el lexicón de Redis y crea r un archivo con el lexicón leído de la base de datos. Al hacer el siguiente análisis y comprobar que el lexicón no está en Redis, se lee el archivo del lexicón previamente generado y se crea el lexicón en Redis.

Resultado Esperado Lexicón actualizado en Redis Evaluación de la prueba Aprobada

110

Tabla No 154. Caso de prueba N° 24 (Diseño propio) CASO DE PRUEBA

Código 24 N° Historia de usuario 20 Nombre de la prueba Cargar Stopwords a memoria principal

Condiciones de ejecución La lista de Stopwords debe estar almacenada en la base de datos. El administrador debe haber ingresado en el sistema.

Entrada/paso de ejecución

El administrador debe seleccionar la opción "Gestionar recursos léxicos”. Mostrar la interfaz para generar recursos. El administrador selecciona la opción "Crear Stopwords" Borrar las Stopwords de Redis y crear un archivo con las Stopwords leídas de la base de datos. Al hacer el siguiente análisis y comprobar que la lista de Stopwords no está en Redis, se lee el archivo de las Stopwords previamente generado y se crea el listado en Redis.

Resultado Esperado Lista de Stopwords actualizada en Redis Evaluación de la prueba Aprobada

Tabla No 155. Caso de prueba N° 25 (Diseño propio) CASO DE PRUEBA

Código 25 N° Historia de usuario 21 Nombre de la prueba Autenticar usuario administrador del lexicón en el sistema

Condiciones de ejecución Visualización de la interfaz de login. El usuario administrador del lexicón no debe estar autenticado en el dispositivo del cual va a ingresar

Entrada/paso de ejecución

El usuario administrador de lexicón ingresa su nombre de usuario y contraseña. Verificar los datos ingresados. Si los datos son correctos, mostrar la interfaz de inicio con las versiones de los lexicones.

Resultado Esperado Visualización de la interfaz de inicio con las versiones de los lexicones.

Evaluación de la prueba Aprobada

Tabla No 156. Caso de prueba N° 26 (Diseño propio) CASO DE PRUEBA

Código 26 N° Historia de usuario 21 Nombre de la prueba Crear nueva versión del lexicón

Condiciones de ejecución El usuario administrador del lexicón debe haber ingresado al sistema.

Entrada/paso de ejecución

El usuario administrador debe seleccionar la opción "Crear nueva versión". Mostrar la interfaz que permite crear nueva versión El usuario administrador del lexicón debe: -Seleccionar la versión del lexicón para generan el nueva versión. -Escribir la descripción del nuevo lexicón. -Dar clic en el bot ón "crear" Guardar la nueva versión en la base de datos. Mostrar mensaje de confirmación de la creación de la nueva versión del lexicón.

Resultado Esperado Nueva versión del lexicón guardada en la base de datos. Evaluación de la prueba Aprobada

111

Tabla No 157. Caso de prueba N° 27 (Diseño propio) CASO DE PRUEBA

Código 27 N° Historia de usuario 21 Nombre de la prueba Crear nueva palabra a la versión del lexicón

Condiciones de ejecución

El usuario administrador del lexicón debe haber ingresado al sistema. Debe estar creada una versión del lexicón diferente a la original

Entrada/paso de ejecución

El usuario administrador selecciona una versión del lexicón diferente a la original. Luego selecciona la opción "Agregar palabra" Después debe: -Escribir la palabra que va a ingresar. -Seleccionar la polaridad de la palabra. -Dar clic en el botón "Guardar". Guardar la nueva palabra en la versión del lexicón. Mostrar mensaje de confirmació n de creación de la palabra.

Resultado Esperado Palabra con polaridad guardada en la versión correspondiente del lexicón en la base de datos

Evaluación de la prueba Aprobada

Tabla No 158. Caso de prueba N° 28 (Diseño propio) CASO DE PRUEBA

Código 28 N° Historia de usuario 21 Nombre de la prueba Editar palabra de la versión del lexicón

Condiciones de ejecución

El usuario administrador del lexicón debe haber ingresado al sistema. Debe estar creada una versión del lexicón diferente a la original

Entrada/paso de ejecución

El usuario administrador selecciona una versión del lexicón diferente a la original. Luego selecciona la opción "Editar" de la palabra que desee. Después debe: -Seleccionar la nueva polaridad de la palabra. -Dar clic en el botón "Guardar". Actualiza la polaridad de la palabra en la versión del lexicón. Mostrar mensaje de confirmación de actualización de la palabra.

Resultado Esperado Palabra con polaridad actualizada en la versión correspondiente d el lexicón en la base de datos

Evaluación de la prueba Aprobada

112

Tabla No 159. Caso de prueba N° 29 (Diseño propio) CASO DE PRUEBA

Código 29 N° Historia de usuario 21 Nombre de la prueba Eliminar palabra de la versión del lexicón

Condiciones de ejecución

El usuario administrador del lexicón debe haber ingresado al sistema. Debe estar creada una versión del lexicón diferente a la original.

Entrada/paso de ejecución

El usuario administrador selecciona una versión del lexicón diferente a la original. Luego selecciona la opción "Eliminar" de la palabra que desee. Borrar la palabra del lexicón. Mostrar mensaje de confirmación de eliminación de la palabra.

Resultado Esperado Palabra con polaridad eliminada de la versión correspondiente del lexicón en la base de datos

Evaluación de la prueba Aprobada

Anexo No 8 Diagramas de Funcionamiento

Diagramas de actividades módulo análisis

Desde la Figura No 43 hasta la Figura No 45 se muestran los diagramas de las funcionalidades con que interactúa el usuario final las cuales son: consultar historial individual e historial conjunto de los Hashtags analizados y buscar tendencias de otros países.

Figura No 43. Diagrama de actividades N° 2 (Diseño propio)

113

Figura No 44. Diagrama de actividades N° 3 (Diseño propio)

Figura No 45. Diagrama de actividades N° 4 (Diseño propio)

Diagramas de actividades módulo administración del sistema

Desde la Figura No 46 hasta la Figura No 51 se muestran los diagramas de actividades más relevantes de las funcionalidades que utilizan el usuario administrador general y administrador, las cuales son: gestionar claves del API, gestionar usuarios, gestionar recursos (lexicón y Stopwords), cambiar número máximo Tweets a descargar. El diagrama de actividades cambiar contraseña es el mismo para los usuarios: administrador general y administrador en el módulo administración del sistema y administrador del lexicón en el módulo de administración del lexicón.

114

Figura No 46. Diagrama de actividades N° 5 (Diseño propio)

Figura No 47. Diagrama de actividades N° 6 (Diseño propio)

115

Figura No 48. Diagrama de actividades N° 7 (Diseño propio)

Figura No 49. Diagrama de actividades N° 8 (Diseño Propio)

116

Figura No 50. Diagrama de actividades N° 9 (Diseño propio)

Figura No 51. Diagrama de actividades N° 10 (Diseño propio)

117

Diagramas de actividades módulo administración del lexicón

Desde Figura No 52 la hasta la Figura No 54 se muestran los diagramas de actividades más relevantes de las funcionalidades que utilizan el usuario administrador del lexicón, las cuales son: Gestionar versiones del lexicón, crear nueva versión del lexicón y cambiar contraseña descrito en la Figura No 51.

Figura No 52. Diagrama de actividades N° 11 (Diseño propio)

Figura No 53. Diagrama de actividades N° 12 (Diseño propio)

118

Figura No 54. Diagrama de actividades N° 13 (Diseño propio)

Diagramas de secuencia módulo análisis.

Desde la Figura No 55 hasta la Figura No 57 se muestran los diagramas de las funcionalidades con que interactúa el usuario final las cuales son: consultar historial individual e historial conjunto de los Hashtags analizados y buscar tendencias de otros países.

119

Figura No 55. Diagrama de secuencia N° 3 (Diseño propio)

Figura No 56. Diagrama de secuencia N° 4 (Diseño propio)

120

Figura No 57. Diagrama de secuencia N° 5 (Diseño propio)

Diagramas de secuencia módulo administración del sistema

Desde la Figura No 58 hasta la Figura No 66 muestran los diagramas más relevantes de las funcionalidades que utilizan el usuario administrador general y administrador, las cuales son: gestionar claves del API, gestionar usuarios, gestionar recursos (lexicón y Stopwords), cambiar número máximo Tweets a descargar. El diagrama de secuencias cambiar contraseña es el mismo para los usuarios: administrador general y administrador en el módulo administración del sistema y administrador del lexicón en el módulo de administración del lexicón.

121

Figura No 58. Diagrama de secuencia N° 6 (Diseño propio)

Figura No 59. Diagrama de secuencia N° 7 (Diseño propio)

122

Figura No 60. Diagrama de secuencia N° 8 (Diseño propio)

Figura No 61. Diagrama de secuencia N° 9 (Diseño propio)

123

Figura No 62. Diagrama de secuencia N° 10 (Diseño propio)

Figura No 63. Diagrama de secuencia N° 11 (Diseño propio)

124

Figura No 64. Diagrama de secuencia N° 12 (Diseño propio)

Figura No 65. Diagrama de secuencia N° 13 (Diseño propio)

125

Figura No 66. Diagrama de secuencia N° 14 (Diseño propio)

Diagramas de secuencia módulo administración del lexicón

Desde la Figura No 67 hasta la Figura No 72 se muestran los diagramas más relevantes de las funcionalidades que utilizan el usuario administrador del lexicón, las cuales son: Gestionar versiones del lexicón, crear nueva versión del lexicón y cambiar contraseña descrito en la Figura No 66.

Figura No 67. Diagrama de secuencia N° 15 (Diseño propio)

126

Figura No 68. Diagrama de secuencia N° 16 (Diseño propio)

Figura No 69. Diagrama de secuencia N° 17 (Diseño propio)

127

Figura No 70. Diagrama de secuencia N° 18 (Diseño propio)

Figura No 71. Diagrama de secuencia N° 19 (Diseño propio)

128

Figura No 72. Diagrama de secuencia N° 20 (Diseño propio)

Anexo No 9 Diccionario de Datos

Convenciones

Los campos van en minúscula. Cuando requieren más de dos palabras para conformarse, se separan con un guion bajo (“_”).

Se identifican de la siguiente manera:

• n_nombrecampo: Campos que son valores numéricos.

• s_ nombrecampo: Campos que son cadenas de texto.

• d_ nombrecampo: Son los campos de tipo documento.

• cd_ nombrecampo: Son campos que almacenan colecciones de documentos.

Ejemplo

• Valor numérico: n_tweets_descargados.

• Cadena de texto: s_hashtag.

• Documento: d_procesamiento.

• Colección de documentos: cd_lexicon.

En el modelo de datos no se usaron referencias para relacionar datos que están en colecciones diferentes, puesto que no fueron necesarias.

129

Desde la Tabla No 160 hasta la Tabla No 165 se describen las colecciones que componen el modelo de datos.

Tabla No 160. Colección N° 1: Análisis (Diseño propio) Colección analisis Descripción: Almacena la información de realización del análisis de Hashtags

Campo Descripción Tipo Dominio Requerido Único

_id Identificador único de la colección, generado automáticamente

ObjectId Cadena hexadecimal de 12 bytes S S

s_hashtag Palabra que identifica al personaje buscado string Cadena de caracteres y

números S N

s_fecha Fecha en la que se realizó el análisis del Hashtag string

Cadena de caracteres en formato (YYYY- MM-DD

HH-MM-SS) S N

n_estado Indica si hubo resultados para el análisis number n_estado en (0 ó 1) S N

n_tweets_descargados Número de Tweets descargados para el análisis number n_tweets_descargados

en (200, 10000) N N

d_procesamiento contiene la información de descarga y procesamiento de Tweets

document N N

s_descarga Contenido de los Tweets descargados string Texto N N

s_preprocesamiento Contenido de las frases procesadas string Texto N N

s_polaridad Contenido de las frases con asignación de polaridad string Texto N N

s_estadisticas Contenido con el ID de las frases y sus estadísticas string Texto N N

d_resultados Documento con la información del resultado obtenido al realizar el análisis

document N N

n_favorabilidad Valor de favorabilidad obtenido al realizar el análisis number n_favorabilidad en (0,

100) N N

n_num_analisis Número de frases analizadas number n_num_analisis > 1 N N n_tiempo_ejec Tiempo duración del análisis number (SS) N N

Tabla No 161. Colección N° 2: Configuración (Diseño propio) Colección configuracion Descripción: Almacena los parámetros necesarios del sistema.

Campo Descripción Tipo Dominio Requerido Único

_id Identificador único de la colección, generado automáticamente

ObjectId Cadena hexadecimal de 12 bytes S S

n_maximo_tweet Número máximo de Tweets permitidos para el análisis number 200<=n_maximo_tweet<=

10000 S N

n_contador_analisis Número de análisis realizados number n_contador_analisis>0 S N

s_consumerkey Llave proporcionada por el API de Twitter string Cadena con 25 caracteres S S

s_consumersecret Llave proporcionada por el API de Twitter string Cadena con 50 caracteres S S

130

Tabla No 162. Colección N° 3: Administrador (Diseño propio) Colección administrador Descripción: Almacena los datos de los usuarios administradores del sistema

Campo Descripción Tipo Dominio Requerido Único

_id Identificador único de la colección, generado automáticamente

ObjectId Cadena hexadecimal de 12 bytes S S

s_name Nombre del usuario string Cadena de caracteres y números S N

s_tipo_usuario Tipo de usuario del sistema string s_tipo_usuario en

(superadmin, admin ó revisor)

S N

s_user_name Nombre de usuario de la cuenta string Cadena de caracteres y

números S S

s_password Contraseña de la cuenta string Cadena de caracteres y números S N

Tabla No 163. Colección N° 4: Stopwords (Diseño propio) Colección stopwords Descripción: Almacena las palabras vacías

Campo Descripción Tipo Dominio Requerido Único

_id Identificador único de la colección, generado automáticamente

ObjectId Cadena hexadecimal de 12 bytes S S

cd_stopwords Arreglo de documento que almacena la información de las palabras vacías

array S N

s_palabra Palabra que se elimina del contenido de los Tweets string Cadena de caracteres S S

Tabla No 164. Colección N° 5: Lexicón (Diseño propio) Colección lexicon Descripción: Almacena la información de las versiones del lexicón.

Campo Descripción Tipo Dominio Requerido Único

_id Identificador único de la colección, generado automáticamente

Objectid Cadena hexadecimal de 12 bytes S S

n_version Número de la versión del lexicón number n_version>=0 S S

s_descripcion Texto que describe a la versión del lexicón string Cadena de caracteres S N

cd_lexicon Arreglo de documento de las palabras y sus polaridades array S N

s_palabra Palabra del lexicón string Cadena de caracteres S S

s_polaridad Polaridad de la palabra string

s_polaridad en (positivo, negativo, neutral, modificador, cuantificador)

S N

131

Tabla No 165. Colección N° 6: Regiones (Diseño propio) Colección regiones Descripción: Almacena el nombre del país y su código WOEID.

Campo Descripción Tipo Dominio Requerido Único

_id Identificador único de la colección, generado automáticamente

Objectid Cadena hexadecimal de 12 bytes S S

s_pais Nombre del país string Cadena de caracteres S S

n_woeid Código de identificación de región del país number n_woeid > 0 S S

Anexo No 10 Experimentación y Resultados

Desde la Figura No 73 hasta la Figura No 82 se muestran los resultados obtenidos con el método de ponderación de símbolos para la colección de Tweets de prueba.

Figura No 73. Resultado N° 1 eliminatoria Rusia 2018

Figura No 74. Resultado N° 1 eliminatoria Rusia 2018

132

Figura No 75. Resultado N° 1 juegos olímpicos 2016

Figura No 76. Resultado N° 2 juegos olímpicos 2016

133

Figura No 77. Resultado N° 3 juegos olímpicos 2016

Figura No 78. Resultado plebiscito por la paz 2016

Figura No 79. Resultado N° 1 vuelta a España 2 de septiembre del 2016

134

Figura No 80. Resultado N° 2 vuelta a España 2 de septiembre del 2016

Figura No 81. Resultado N° 3 vuelta a España 9 de septiembre del 2016

Figura No 82. Resultado N° 4 vuelta a España 9 de septiembre del 2016

1 3 5

C ol e c ci ó n d e pr u e b a

A c o nti n u a ci ó n s e pr e s e nt a al g u n o s ej e m pl o s d e T w e et s q u e f u er o n d e s c ar g a d o s p ar a l a c ol e c ci ó n d e pr u e b a, l o s c u al e s f u er o n t o m a d o s al e at ori a m e nt e d e lo s ar c hi v o s d e d e s c ar g a, e st o s s e m u e str a n p or e v e nt o y f e c h a e n l a c u al f u er o n c o n s ult a d o s.

• Eli mi n at ori a R u si a 2 0 1 8

L o s si g ui e nt e s T w e et s s e eli gi er o n p ar a d o s p er s o n aj e s q u e f u er o n l o s m á s r el e v a nt e s e n el j u e g o C ol o m bi a – Br a sil.

# J a m e s R o dri g u e z

I D: 7 7 3 6 2 1 7 4 0 2 9 5 6 5 1 3 2 8 T w e et: Mir a d a o pti mi st a d e #J a m es R o dri g u ez , l u e g o d e j u e g o q u e # C ol o m bi a p er di ó c o n # Br a sil , e n # Eli mi n at ori a s R u si a 2 0 1 8 htt ps://t. c o / U 1 v o 8 g X Fr b F e c h a: 2 0 1 6 - 0 9-0 7 2 0: 3 9: 3 0

I D: 7 7 3 3 5 0 8 8 6 9 4 9 1 5 0 7 2 0 T w e et: # Br a sil g a n ó bi e n a nt e # C ol o m bi a M al p arti d o d e #J a m es R o dri g u ez y # B a c c a M u y bi e n # O s pi n a y # C u a dr a d o # Eli mi n at ori a s R u si a 2 0 1 8 F e c h a: 2 0 1 6 - 0 9-0 7 0 2: 4 3: 1 4

I D: 7 7 3 3 4 7 1 5 3 3 5 5 8 6 6 1 1 2

T w e et: V a m o s d el a nt er o s... n e c esit a m o s u n a g e ni ali d a d #J a m e s R o dri g u ez � � � � F e c h a: 2 0 1 6 - 0 9-0 7 0 2: 2 8: 2 4

I D: 7 7 3 3 3 3 5 6 7 1 6 6 3 8 2 0 8 0

T w e et: Vi e n d o Br a sil - C ol o m bi a ! � # N é y m arJr � #J a m e s R o dri g u ez # Cr a c ks F e c h a: 2 0 1 6 - 0 9-0 7 0 1: 3 4: 2 4

I D: 7 7 3 3 3 1 1 9 7 6 5 7 0 9 6 1 9 2 T w e et: G o o o o o o o ol !! # C ol o m bi a #J a m es R o dri g u ez n o t e m u er a s n u n c a! S e e m p at ó. A p e ns ar y p ar ar l a b a n d a d er e c h a d e Br a sil # V a m o s C ol o m bi a !!! F e c h a: 2 0 1 6 - 0 9-0 7 0 1: 2 4: 5 9 I D: 7 7 3 1 8 4 9 0 8 5 3 7 7 9 0 4 6 4 T w e et: L a c h arl a d e # Zi d a n e q u e l e es p er a a #J a m es R o drí g u ez al r e gr e s ar d e # C ol o m bi a - htt p s://t. c o / B A A N Ci N E P d htt ps://t. c o / z xJ y D w D 5 6 0 F e c h a: 2 0 1 6 - 0 9-0 6 1 5: 4 3: 4 1 I D: 7 7 3 1 8 1 6 1 1 9 9 9 3 2 2 1 1 2 T w e et: L a c h arl a d e # Zi d a n e q u e l e e s p er a a #J a m es R o drí g u ez al r e gr e s ar d e # C ol o m bi a - htt ps://t. c o / u 9 C 6 Z UJ Q 9 T htt ps://t. c o / Z b N PJ 4 x W n E F e c h a: 2 0 1 6 - 0 9-0 6 1 5: 3 0: 3 5 I D: 7 7 3 3 3 1 3 2 5 2 5 6 3 9 6 8 0 1

T w e et: G o o o o o o o o olllll q u e b n #J a m es R o dri g u ez � � � � � F e c h a: 2 0 1 6 -0 9 -0 7 0 1: 2 5: 3 0

1 3 6

# N e y m ar

I D: 7 7 3 6 4 2 0 2 1 4 1 2 1 7 5 8 7 2 T w e et: N e y m ar r et or n ó a B ar c el o n a y es p er a d e b ut ar e st e fi n d e s e m a n a ► htt ps://t. c o /I Rr d T m O d n u # n e y m ar #f c b ar c el o n a htt ps://t. c o / c R N El 1 a 0 x c F e c h a: 2 0 1 6 - 0 9-0 7 2 2: 0 0: 0 6 I D: 7 7 3 5 1 5 6 9 2 7 9 2 5 7 8 0 5 4 T w e et: N e y m ar y a es el c u art o m á xi m o g ol e a d or d e Br a sil #J u g a d or es # S el e c ci o n es # N e y m ar # S el e c ci ó n Br a sil e ñ a … htt ps://t. c o /f Dl y 0 p V G h q F e c h a: 2 0 1 6 - 0 9-0 7 1 3: 3 8: 0 7 I D: 7 7 3 4 0 7 6 3 4 7 4 1 4 9 3 7 6 1 T w e et: M A R A VI L L O S O O R EI N E Y!... L a @s el e c a o g a n ó a l a # C ol o m bi a d e #J a m es 2 a 1 c o n u n # N e y m ar i ns pir a d o! htt ps://t. c o / o d m 9 p F 6 u 1s F e c h a: 2 0 1 6 - 0 9-0 7 0 6: 2 8: 4 3 I D: 7 7 3 3 6 5 9 5 3 4 3 8 5 7 6 6 4 0

T w e et: O R e y # N e y m ar c all a n d o b o c a s @ As _ T o m a s R o n c er o @ m ar c a � ☕ � � F e c h a: 2 0 1 6 - 0 9-0 7 0 3: 4 3: 0 6 I D: 7 7 3 3 5 2 5 2 5 0 1 7 8 0 0 7 0 4 T w e et: Al s e ñ or @ N est or P e k er m a n d e b erí a d arl e p e n a m a nt e n er a @st eff a n m e di n a e n c a n c h a... y p o n erl o a m ar c ar a # N e y m ar ? #r o s c a #r es p et o #t e n a z F e c h a: 2 0 1 6- 0 9- 0 7 0 2: 4 9: 4 4 I D: 7 7 3 3 5 0 7 3 9 0 2 0 2 1 8 3 6 8 T w e et: # N e y m ar p us o a d el a nt e a # Br a sil a nt e # C ol o m bi a c o n u n ' z ur d a z o' | VI D E O ► htt ps:/ /t. c o / d 5 Q o e S y 5 Q 6 htt ps://t. c o / b Bf k NI 5 B V c F e c h a: 2 0 1 6 - 0 9-0 7 0 2: 4 2: 3 9 I D: 7 7 3 3 4 3 8 7 9 8 1 9 1 3 2 9 2 9

T w e et: Y o cr e o q u e # N e y m ar est á c a m bi a n d o � � � ... N o m e m at e n � � F e c h a: 2 0 1 6 - 0 9-0 7 0 2: 1 5: 2 3 I D: 7 7 3 3 3 4 3 7 9 0 0 3 3 3 8 7 5 2 T w e et: Al ert a i n cr eí bl e i ns ólit o. T e n e m o s e n e x cl u si v a l a s i m á g e n e s d el c al e nt a mi e nt o pr e vi o d e # N e y m ar htt ps://t. c o / n M M o G c M Gt v F e c h a: 2 0 1 6- 0 9- 0 7 0 1: 3 7: 3 8 I D: 7 7 3 3 2 4 8 1 3 2 0 9 3 7 4 7 2 0 T w e et: # N e y m ar e st a j u g a n d o s ol o p or es a p u nt a... # St ef a n " a ut o pi st a " M e di n a F e c h a: 2 0 1 6 - 0 9-0 7 0 0: 5 9: 3 7 I D: 7 7 3 1 6 1 3 5 5 5 3 2 7 6 7 2 3 2

T w e et: Q u e G a n a s d e v er u n p arti d a z o ll e n o d e t al e nt o y cl a s e e ntr e mi � � y � � , oj al á # N e y m ar n o f a sti di e c o n s us cl a v a d o s y p a y a s a d a s d e Fl or e cit a F e c h a: 2 0 1 6 -0 9 -0 6 1 4: 1 0: 0 6

1 3 7

• J u e g o s Olí m pi c o s Ri o 2 0 1 6

L o s si g ui e nt e s T w e et s s e eli gi er o n p ar a d o s p er s o n aj e s q u e f u er o n l o s m á s r el e v a nt e s e n l o s j u e g o s Olí m pi c o s Ri o 2 0 1 6.

# C at eri n eI b ar g u e n

I D: 7 6 5 3 7 5 5 7 1 0 3 9 8 3 8 2 0 9 T w e et: # C at eri n eI b ar g u e n I b ar g ü e n y s u j or n a d a i n ol vi d a bl e htt p s: //t. c o / E y 1 u xl 6 X M E F e c h a: 2 0 1 6 - 0 8-1 6 0 2: 3 2: 1 0 I D: 7 6 5 3 2 8 9 1 7 1 1 6 9 4 0 2 9 2

T w e et: # C at eri n eI b ar g u e n s u bi ó al p o di o d e u n s alti c o � F e c h a: 2 0 1 6 - 0 8-1 5 2 3: 2 6: 4 7 I D: 7 6 5 2 6 9 5 6 3 5 9 2 2 8 2 1 1 2 T w e et: N o s s e nti m o s d e m a si a d o or g ull o s a s d e # C at eri n eI b ar g u e n . E st á d ej a n d o e n alt o a l a s m uj er es c ol o m bi a n a s y a

C ol o m bi a e n s u t ot ali d a d. � � F e c h a: 2 0 1 6 - 0 8-1 5 1 9: 3 0: 5 6 I D: 7 6 5 0 2 4 1 7 1 1 3 0 7 4 8 9 2 8 T w e et: # C at eri n eI b ar g u e n ¡ Or g ull o d or a d o d e # C ol o m bi a! # Or o # Ri o 2 0 1 6 htt ps://t. c o /r U 3 7 ql ar 6 k F e c h a: 2 0 1 6 - 0 8-1 5 0 3: 1 5: 5 0 I D: 7 6 5 0 1 9 0 2 1 0 6 2 3 0 7 8 4 0

T w e et: V er d a d. N o e n c o ntr é c a n al p ar a # HI M N O # C at eri n eI b ar g u e n # A V E E E R # O S E A! # � � � � � � � � y o c o n g a n a s d e ll or ar, otr a v ez! htt ps://t. c o / z s 2r xz 5 v x 2 F e c h a: 2 0 1 6 - 0 8-1 5 0 2: 5 5: 2 2 I D: 7 6 5 0 0 0 1 2 0 0 0 1 7 8 5 8 5 7 T w e et: @tri pl e ci b ar g u e n S e ll e v a l a d or a d a e n s alt o tri pl e # c at eri n ei b ar g u e n #s alt otri pl e … htt ps://t. c o / 0f z 1 N 3 4r 9 3 F e c h a: 2 0 1 6 - 0 8-1 5 0 1: 4 0: 1 6 ID: 7 6 4 9 9 5 0 6 7 2 8 7 3 9 6 3 5 3

T w e et: Q u e d a cl ar o q ui é n d e bi ó s er l a a b a n d er a d a d e C ol o m bi a. # C at eri n eI b ar g u e n or g ull o p atri o � � � � � � � � � � # or o p ar a c ol o m bi a F e c h a: 2 0 1 6 - 0 8-1 5 0 1: 2 0: 1 1 I D: 7 6 4 9 9 0 3 5 8 6 1 9 0 3 3 6 0 1 T w e et: Sí B olí v ar vi vi er a y f u er a atl et a, est e s er í a el m ej or dí a d e s u vi d a @ Ri o 2 0 1 6 _ e n # C at eri n eI b ar g u e n #s alt otri pl e @r a b o d e aji p F e c h a: 2 0 1 6 - 0 8-1 5 0 1: 0 1: 2 8 I D: 7 6 4 8 8 5 2 3 7 7 5 0 9 8 0 6 0 9 T w e et: Mi es p er a nz a es q u e # C at eri n eI b ar g u e n sí n o q u é e a s u ri v al, o g a n e p or d e cisi ó n. Y a dij e. @ S al c e d o R a m o s F e c h a: 2 0 1 6 - 0 8-1 4 1 8: 0 3: 4 6 I D: 7 6 4 8 3 5 1 8 0 6 4 1 1 2 8 4 4 8 T w e et: C at eri n e I b ar g ü e n: U n a cit a c o n l a gl ori a htt ps://t. c o /f B R h P 4 7 Ni V #s o y es p e ct a d or # otr o s d e p ort e s # c at eri n ei b ar g u e n F e c h a: 2 0 1 6 - 0 8-1 4 1 4: 4 4: 5 1

1 3 8

# M ari a n a P aj o n

I D: 7 6 7 0 9 3 9 7 7 8 3 3 1 7 2 9 9 2

T w e et: Or g ull o s o d e s er c ol o m bi a n o!! � � � � � � � arri b a M ari a n a P aj o n # c a m p e o n a # M ari a n a P aj o n htt ps://t. c o / T vf Y Sj H 0 O 8 F e c h a: 2 0 1 6 - 0 8-2 0 2 0: 2 0: 3 0 I D: 7 6 6 8 3 5 9 5 7 4 7 9 9 6 0 5 7 6 T w e et: @ Vis a C ol o m bi a # or o # M ari a n a P aj o n c hi c a m ar a vill a F eli ci d a d e s MI L b e n di ci o n es gr a ci a s p or t u esf u er z o y dis ci pli n a F eli ci d a d e s F e c h a: 2 0 1 6 - 0 8-2 0 0 3: 1 5: 1 4 I D: 7 6 6 7 1 6 6 2 5 4 8 3 6 2 0 3 5 2 T w e et: Gr a ci a s p or es a d e di c a ci ó n e n c a d a c arr er a y r e g al ar n o s es a s m e d all a s, m er e ci d a s l á gri m a s e n es e p o di o

# M ari a n a P aj o n # C arl o s R a mir ez � � � � � F e c h a: 2 0 1 6 - 0 8-1 9 1 9: 2 1: 0 3 I D: 7 6 6 7 0 9 9 9 1 9 3 6 0 6 5 5 3 7 T w e et: Ell o s c u el g a n l a s m e d all a s, p er o n o s otr o s el s e nti mi e nt o d e or g ull o!! Br a v o p or el # Or o d e # M ari a n a P aj o n y el # Br o n c e d e # C arl o s R a mir ez F e c h a: 2 0 1 6 - 0 8-1 9 1 8: 5 4: 4 1 I D: 7 6 6 7 0 7 0 4 6 7 7 5 4 8 8 5 1 2

T w e et: Si m pl e m e nt e M ari a n a P aj ó n � � � � . Or o p ar a n u estr a h er m o s a c ol o m bi a ❤ ❤ ❤ � � � � � � . # M ari a n a P aj o n # or o #J u e g o s Oli m pi c o s # c ol o m bi a d or a d a F e c h a: 2 0 1 6 - 0 8-1 9 1 8: 4 2: 5 9 I D: 7 6 6 7 0 3 1 2 7 6 8 0 7 4 5 4 7 2 T w e et: Y o n o s e u ds p er o q u e or g ull o s o t a n h p s er p ai s a!!!!! L a s al e grí a s d e est e p aí s v a p or c u e n t a d e l o s d e l a ti err a d e c a m p e o n e s # M ari a n a P aj o n F e c h a: 2 0 1 6 - 0 8-1 9 1 8: 2 7: 2 4 I D: 7 6 6 7 0 0 0 9 7 7 7 8 3 7 6 7 0 4 T w e et: F eli cit a ci o n es a # M ari a n a P aj o n pri m er a m uj er c o n d o s # Or o e n # C ol est a es l a # G e n er a ci o n D e P a z htt ps://t. c o / D Q V w g d H Z 9 Y F e c h a: 2 0 1 6 - 0 8-1 9 1 8: 1 5: 2 2 I D: 7 6 6 6 9 9 1 1 2 5 0 6 9 9 0 5 9 2 T w e et: N o m e e m o ci o n a b a t a nt o d e v er a u n a ni ñ a e n bi ci cl et a d es d e q u e mi T ati a n a di o s olit a s u pri m er p e d al a z o! # M ari a n a P aj o n # Oli m pi c o s F e c h a: 2 0 1 6 - 0 8-1 9 1 8: 1 1: 2 7 I D: 7 6 6 6 1 3 8 0 2 6 7 0 4 8 9 6 0 0 T w e et: # E n Ri o S o m o s T o d o s. M ari a n a ti e n e h o y l a s v o c es d e t o d o s l o s C ol o m bi a n o s h a ci é n d ol e b arr a. P or l a d e or o M ari a n a. T e a m a m o s. # M ari a n a P aj o n F e c h a: 2 0 1 6 - 0 8-1 9 1 2: 3 2: 2 8 I D: 7 6 6 2 8 6 6 3 3 4 7 8 0 2 9 3 1 2 T w e et: M a m ert o s est á n d e s es p er a d o s, a h or a r es ult a q # M ari a n a P aj ó n es u n a f a s cist a p ais a s e g ui d or a d el D u c e . @ v a n e d el at orr e @ D a ni el S a ni n @j u a n g er p er F e c h a: 2 0 1 6 -0 8 -1 8 1 4: 5 2: 2 4

139

• Plebiscito por la paz 2016

Los siguientes Tweets se eligieron para dos personajes que fueron los involucrados en el proceso de paz.

#Santos

ID: 768621427096489984 Tweet: #Santos "Hoy podemos decir que se acabó la guerra en Colombia" ► https://t.co/HDOezq8N27 https://t.co/njB2KdsmLA Fecha: 2016-08-25 01:30:03

ID: 770642732544962562 Tweet: Firma #Santos decreto para plebiscito de paz en #Colombia https://t.co/7bv4x2jRu6 https://t.co/digTPAwhw7 Fecha: 2016-08-30 15:21:59

ID: 768905143727169536 Tweet: Texto completo acuerdo paz en #Colombia #Farc #Oslo #Cuba #Santos https://t.co/mNdhXQOc0k Fecha: 2016-08-25 20:17:26

ID: 768895097429602304 Tweet: "PAÍS DE CUERVOS Y..." # Columna https://t.co/cZmOK0mHfk #CaterineIbarguen #NairoQuintana #FIGUEROA #Santos #SantosMiente. @ConlaOrejaRoja Fecha: 2016-08-25 19:37:3

ID: 768768980098179072 Tweet: APUESTA DE #SANTOS El domingo 02/10, #Colombia va a las urnas por el acuerdo con la s #FARC https://t.co/69CZZxPzbl https://t.co/0aWo26ObKb Fecha: 2016-08-25 11:16:22

ID: 768643712641536000 Tweet: Vamos #Colombia a votar NO el 2 de Octubre, no permitamos q el País se le entregue a unos asesinos, por capricho de #Santos @DDemocraticaCol Fecha: 2016-08-25 02:58:36

ID: 768614120035934209 Tweet: @elcomercio Ni el mismo #Santos se cree lo que dice!! #FARC #Castro #Cuba https://t.co/HgVMAAC2wc Fecha: 2016-08-25 01:01:01

ID: 768607109952995328 Tweet: Juan Manuel #Santos: 'Hoy comienza el fin del dolor' (...) todo está acordado.' #PazenColombia https://t.co/ZBKcW9NhWG Fecha: 2016-08-25 00:33:09

ID: 768606050622857216 Tweet: @omarbula @amparomeza @RUBYELENA1 @doraligia @LuqueCampo @TataMejiaG¡ATENCIÓN! Va a hablar "mi presidente" #santos.. https://t .co/fzSUNSxCqU Fecha: 2016-08-25 00:28:57

ID: 770299997501788160 Tweet: El acuerdo de paz en Colombia afronta el referéndum contaminado por intereses partidistas https://t.co/36BQtzYe15 #Farc #Santos #Uribe Fecha: 2016 -08-29 16:40:05

1 4 0

#ti m o c h e n k o

I D: 7 7 0 3 7 9 9 4 7 7 2 2 5 7 1 7 7 6 T w e et: @J u a n M a n S a nt o s E n s eri o u d pr efi er e v er a # Ti m o c h e n k o g o b er n a n d o el p aís ? S e e nl o q u e ci ó d el t ot a z o htt ps://t. c o / T b S D Z w 9 Q O O # V ol v a m o n o s S eri o s F e c h a: 2 0 1 6 - 0 8-2 9 2 1: 5 7: 4 7 I D: 7 7 0 2 6 3 7 4 3 7 1 6 5 2 8 1 2 8 T w e et: T a m bi é n # pr efi er o a # Uri b e q u e a # Ti m o c h e n k o. P or es o v ot ar é Sí htt ps://t. c o / L Xt nj V m 2 V c F e c h a: 2 0 1 6 - 0 8-2 9 1 4: 1 6: 0 1 I D: 7 7 0 1 3 3 3 7 1 1 5 4 4 6 4 7 6 8 T w e et: ".. H o y, m á s q u e n u n c a, l a m e nt a m o s t a nt a m u ert e y d ol or o c a si o n a d o s p or l a g u err a " # F A R C # Ti m o c h e n k o F e c h a: 2 0 1 6 - 0 8-2 9 0 5: 3 7: 5 8 I D: 7 7 0 0 7 4 0 5 56 0 9 2 8 6 6 5 6 T w e et: S e ñ or e s # Ti m o c h e n k o, # S a nt o s gr a ci a s a s u s b u e n o s ofi ci o s mil es d e vi d a s s e h a n s al v a d o, est o s e l o a gr a d e c er

l a f ut ur a s g e n er a ci o n es� � � F e c h a: 2 0 1 6 - 0 8-2 9 0 1: 4 2: 1 6 I D: 7 7 0 0 4 1 4 3 9 6 8 2 1 6 6 7 8 5

T w e et: # C O L O M BI A ➠ ➠ ➤ # Ti m o c h e n k o d e cl ar a el ' Alt o el F u e g o' d efi niti v o e n el p aís. htt ps://t. c o / R U L s A LJi n V ☮ htt ps://t. c o / 1 S M 5 nz a O u G F e c h a: 2 0 1 6 - 0 8-2 8 2 3: 3 2: 4 0 I D: 7 7 0 0 1 2 5 8 8 0 6 3 2 2 3 8 1 2 T w e et: “ # Ti m o c h e n k o ” # d e cl ar a # c es e el f u e g o d efi niti v o d e l a s # F A R C htt p s://t. c o / B m N K h Z j Y OJ F e c h a: 2 0 1 6 - 0 8-2 8 2 1: 3 8: 0 1 I D: 7 6 9 7 7 1 8 6 6 1 8 5 5 7 6 4 4 8 T w e et: # Ti m o c h e n k o d e cl ar ar á m a ñ a n a c es e el f u e g o d efi niti v o d e l a s # F A R C. htt p s://t. c o / vJ 6 o L s 7J 2 Y F e c h a: 2 0 1 6 - 0 8-2 8 0 5: 4 1: 2 9 I D: 7 6 9 5 9 3 4 0 0 3 3 3 1 3 1 7 7 6 T w e et: # Ti m o c h e n k o # F A R C el # P a p a ll a m a al p er d ó n, cl ar o n o p u e d e d e cir otr a c o s a , p er o l o s f a mili ar es d e l a s # vi cti m a s # a s esi n a d a s n o pi e ns a n i g u al F e c h a: 2 0 1 6 - 0 8-2 7 1 7: 5 2: 1 9 I D: 7 6 8 9 6 1 0 3 8 1 4 2 2 2 2 3 3 6 T w e et: P ol é mi c a e n l a s r e d es s o ci al e s tr a s el dis c urs o d e # Ti m o c h e n k o htt ps://t. c o / sfJ K Z W 0 3 Cf htt ps://t. c o / j o u U h w O z g U F e c h a: 2 0 1 6 - 0 8-2 5 2 3: 5 9: 3 2 I D: 7 6 8 6 0 3 5 9 8 6 6 2 0 9 8 9 4 4 T w e et: # P a z e n C ol o m bi a n o s ol o n o h a y c ar c el si n o q u e #ti m o c h e n k o t a m bi e n pr o m et e li b ert a d pr o nt a a c o m p a ñ er o s F e c h a: 2 0 1 6 -0 8 -2 5 0 0: 1 9: 1 2

1 4 1

• V u elt a a E s p a ñ a 0 7 s e pti e m br e 2 0 1 6

S e t o m ar o n e n c u e nt a l o s d o s ci cli st a s m á s m e n ci o n a d o s e n e st e e v e nt o.

# n air o m a n

I D: 7 7 3 5 8 2 8 4 2 7 2 2 9 3 8 8 8 0

T w e et: N o es u n ✈ , n o es u n a � , n o es u n � ... es N AI R O M A N! # N AI R O M A N # N AI R O M A N n o es u n ci clist a es

# N AI R O M A N � � � � � � � � � @ m ari o _s a b at o F e c h a: 2 0 1 6 - 0 9-0 7 1 8: 0 4: 5 6

I D: 7 7 2 7 9 3 9 3 1 6 9 2 2 1 2 2 2 6 T w e et: @ m ari o _s a b at o # N air o m a n g a n ar á l a # L a V u elt a x E S P N s er á al g o hist óri c o y m er e ci d o Gr a n d e Q ui nt a n a!!! F e c h a: 2 0 1 6 - 0 9-0 5 1 3: 5 0: 0 5

I D: 7 7 2 4 7 0 6 4 7 1 1 7 2 1 3 6 9 8 T w e et: # N air o m a n # L a V u elt a gr a ci a s c a m p e ó n p or d ar n o s t a nt a f eli ci d a d. E st a v u elt a es s u y a @ N air o Q ui n C o F e c h a: 2 0 1 6 - 0 9-0 4 1 6: 2 5: 2 8

I D: 7 7 2 4 7 0 5 0 8 0 2 5 6 7 9 8 7 2 T w e et: @ N air o Q ui n C o X 2 visti é n d o s e d e gl ori a q u e gr a n d e er es # N air o m a n # L a V u elt a x E S P N @ m ari o _s a b at o @l a v u elt a htt ps://t. c o / gf X Gst 5 H p v F e c h a: 2 0 1 6- 0 9- 0 4 1 6: 2 4: 5 5

I D: 7 7 2 4 5 7 9 7 3 2 6 8 4 8 8 1 9 2

T w e et: Gr a n d e # N air o M a n q u e c arr er a a a a � � � � F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 3 5: 0 7

I D: 7 7 2 4 5 6 0 0 8 1 8 2 5 3 4 1 4 4 T w e et: H o y n o e xist es p al a br a s p ar a d es cri bir l o gr a n d e q u e er es @ N air o Q ui n C o , n u e str o h ér o e c ol o m bi a n o # N air o m a n F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 2 7: 1 8

I D: 7 7 2 4 5 5 2 8 1 9 7 2 3 5 0 9 7 6

T w e et: C o n t o d a l a f u er z a @ N air o Q ui n C o # N air o m a n # N air o m a n n o es u n ci clist a es # N air o m a n � d ur o p a pit o s al u d d es d e Y o p al l a v err a q u er a # L a V u elt a x E S P N F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 2 4: 2 5

I D: 7 7 2 4 5 2 8 9 2 3 6 4 1 8 1 5 0 5 T w e et: V a m o s # N air o m a n m ét al e t ur b o # L a V u elt a x E S P N F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 1 4: 5 5

I D: 7 7 2 4 5 1 7 2 8 8 1 3 9 4 8 9 2 8 T w e et: @ m ari o _s a b at o @ C a st ell a n o s C a mi @ al e kl a p H O Y P O R FI N N AI R O Y A L B E R T O A T A C A R O N E N S E RI O M U Y B U E N O... # N air o m a n D E S D E S A N C RI S T O B A L V E N E Z U E L A F e c h a: 2 0 1 6 - 0 9- 0 4 1 5: 1 0: 1 8

I D: 7 7 2 4 4 9 6 1 6 0 5 4 9 4 3 7 4 9

T w e et: @ m ari o _s a b at o @ C a st ell a n o s C a mi d es d e Ci mit arr a, S a nt a n d er p e g a d o al T v a p o y a n d o a # N air o m a n � � � # L a V u elt a x E S P N Y v a m o s t a m bi é n x l a et a p a F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 0 1: 5 4

1 4 2

# Fr o o m e

I D: 7 7 3 6 1 8 1 0 2 1 6 4 7 5 0 3 3 6 T w e et: L o s 4 G R A N D E S d e @l a v u elt a ll e g a n J U N T O S e n D U R O A S C E N S O: # N air o, # Fr o o m e, # C h a v es y # C o nt a d or. 2 d e ell o s, d e # C O L O M BI A htt p s://t. c o / H 5 T Z 1rs L Z V F e c h a: 2 0 1 6 - 0 9-0 7 2 0: 2 5: 0 3

D: 7 7 3 5 3 6 1 3 2 9 6 9 7 5 0 5 2 8 T w e et: ¿ Q u é p a s a # Fr o o m e n o t o m a st e t us p a stillit a s ? @ N air o Q ui n C o m o sstr o o o! # V u elt a A E s p a n a F e c h a: 2 0 1 6 - 0 9-0 7 1 4: 5 9: 2 0

I D: 7 7 3 1 6 6 6 7 8 6 5 3 9 8 8 8 6 5 T w e et: | @t o d o d e p ort es _ pl | # Fr o o m e: " T e n dr é q u e d ej ar l a V u elt a p ar a otr o a ñ o ": htt p s:/ /t. c o / z K d g T T h W n T htt ps://t. c o / A K V R 5 v 6 G C H F e c h a: 2 0 1 6 - 0 9-0 6 1 4: 3 1: 1 5

I D: 7 7 3 1 6 6 4 7 2 4 5 7 6 2 1 5 0 4 T w e et: # Fr o o m e: " T e n dr é q u e d ej ar l a V u elt a p ar a otr o a ñ o ": htt p s://t. c o / N C R 3 P w K 2 w W htt ps://t. c o / O e p h b D D 7 0l F e c h a: 2 0 1 6 - 0 9-0 6 1 4: 3 0: 2 6

I D: 7 7 2 6 4 7 3 5 0 9 9 7 2 2 1 3 7 6 T w e et: # L a P ol e mi c a @ c es ar al o q u e di g a si l a e nf er m e d a d d e # N air o m a n es # Fr o o m e. ? ? C o m o l o dij o a nt es..... F e c h a: 2 0 1 6 - 0 9-0 5 0 4: 0 7: 3 8

I D: 7 7 2 4 6 3 0 2 0 3 2 0 7 1 0 6 5 6 T w e et: @ N air o Q ui nt a n a ll e g ó 2 d o. e n et a p a d e # V u elt a A E s p a n a , tr a s f u g a al l a d o d e # C o nt a d or. # Fr o o m e q u e d ó a 3' 3 7 F ot o: Ef e htt ps://t. c o / qI P q 1 K x A N a F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 5 5: 1 0

I D: 7 7 2 4 5 6 6 5 8 1 9 0 6 0 6 3 3 6 T w e et: Gr a ci a s a # C o nt a d or, Q ui nt a n a y c o m p a ñí a p or r e g al ar n o s u n a et a p a a l a vi ej a u s a nz a ( d e s d e l ej o s) @l a v u elt a # Fr o o m e htt p s://t. c o /I a b R z 4 e Z 1 e F e c h a: 2 0 1 6 - 0 9-0 4 1 5: 2 9: 5 3

I D: 7 7 2 4 4 8 2 3 5 8 8 1 4 3 5 1 3 6 T w e et: Q u e f eli ci d a d es v er a # N air o m a n e n el gr u p o q u e li d er a l a et a p a si n # Fr o o m e @ m ari o _s a b at o # L a V u elt a x E S P N # E S P N es H D # B o g ot a Pr es e nt e F e c h a: 2 0 1 6 - 0 9-0 4 1 4: 5 6: 2 5

I D: 7 7 2 1 1 2 8 1 5 3 5 6 3 4 6 3 6 8 T w e et: # N air o D e V u elt a E S U N S E R E S P E C T A C U L A R P E R O Q UI E R O C O M P R A R M E U N A M O T O C O M O L A Q TI E N E # Fr o o m e # Ci clis m o Si n Tr a m p a htt p s://t. c o / 0 Y 5 ZI 7 E s v x F e c h a: 2 0 1 6 - 0 9-0 3 1 6: 4 3: 3 5

I D: 7 7 2 4 2 3 9 4 0 3 5 4 5 4 3 6 1 7 T w e et: ¡ M ó ni c a a a l e e st á n h a ci e n d o l a li c u a d or a a # Fr o o m e, y # N air o v a es c a p a d o o o! # A si M e D es pi ert a n L o s D o mi n g o s.

� F e c h a: 2 0 1 6 - 0 9-0 4 1 3: 1 9: 5 2

143

Pre-procesamiento de Tweets

Los Tweets de muestra fueron tomados aleatoriamente del archivo de pre-procesamiento.

• Eliminatoria Rusia 2018

Los siguientes Tweets se eligieron para dos personajes que fueron los más relevantes en el juego Colombia – Brasil.

#JamesRodriguez

77362174029565132801 mirada optimista james rodriguez luego juego colombia perdió brasil eliminatorias rusia 2018 77335088694915072001 brasil ganó bien colombia mal partido james rodriguez bacca muy bien ospina cuadrado eliminatorias rusia 2018 77334715335586611201 vamos delanteros necesitamos genialidad james rodriguez 77333356716638208001 viendo brasil colombia néymar jr james rodriguez cracks 77333119765709619201 gol colombia james rodriguez no mueras nunca empató 77333119765709619202 pensar parar banda derecha brasil vamos Co lombia 77318490853779046401 charla zidane espera james rodríguez regresar Colombia 77333132525639680101 gol bn james rodriguez

#Neymar

77364202141217587201 neymar retornó barcelona espera debutar fin semana neymar fcbarcelona 77351569279257805401 neyma r cuarto máximo goleador brasil jugadores selecciones neymar selección brasileña 77340763474149376101 maravilloso rei ney ganó colombia james 2 1 neymar inspirado 77336595343857664001 rey neymar callando bocas 77335252501780070401 señor debería darle pena mantener cancha ponerlo marcar neymar rosca respeto tenaz 77335073902021836801 neymar puso adelante brasil colombia zurdazo video 77334387981913292901 creo neymar cambiando no maten 77333437900333875201 alerta increíble insólito 77333437900333875202 tenemos exclusiva imágenes calentamiento previo neymar 77332481320937472001 neymar jugando solo punta stefan autopista medina 77316135553276723201 ganas ver partidazo lleno talento clase ojalá neymar no fastidie sus clavados payasadas florecita

144

• Juegos Olímpicos Rio 2016

Los siguientes Tweets se eligieron para dos personajes que fueron los más relevantes en los juegos Olímpicos Rio 2016.

# CaterineIbarguen

76537557103983820901 caterine ibarguen ibargüen jornada inolvidable

76532891711694029201 caterine ibarguen subió podio saltico

76526956359228211201 sentimos demasiado orgullosas caterine ibarguen 76526956359228211202 dejando alto mujeres colombianas colombia totalidad

76502417113074892801 caterine ibarguen orgullo dorado colombia oro rio 2016

76501902106230784001 verdad 76501902106230784002 no encontré canal himno caterine ibarguen aver osea ganas llorar otra vez

76500012000178585701 lleva dorada salto triple caterine ibarguen salto triple

76499506728739635301 queda claro quién debió ser abanderada colo mbia 76499506728739635302 caterine ibarguen orgullo patrio oro Colombia

76499035861903360101 sí bolívar viviera fuera atleta sería mejor día vida caterine ibarguen salto triple

76488523775098060901 esperanza caterine ibarguen sí noquée rival gane decisión 76488523775098060902 dije

76483518064112844801 caterine ibargüen cita gloria soyespectador otrosdeportes caterine ibarguen

# MarianaPajon

76709397783317299201 orgulloso ser colombiano arriba mariana pajon campeona mariana pajon

76683595747996057601 oro mariana pajon chica maravilla felicidades mil bendiciones gracias esfuerzo disciplina felicidades

76671662548362035201 gracias dedicación cada carrera regalarnos medallas merecidas lágrimas podio mariana pajon carlos ramirez

76670999193606553701 cuelgan me dallas pero nosotros sentimiento orgullo bravo oro mariana pajon bronce carlos ramirez

76670704677548851201 simplemente mariana pajón 76670704677548851202 oro nuestra hermosa colombia 76670704677548851203 mariana pajon oro juegos olimpicos colombia dorada

76670312768074547201 no uds pero orgulloso tan hp ser paisa alegrías país va cuenta tierra campeones mariana pajon 76670009777837670401 felicitaciones mariana pajon primera mujer dos oro col generacion paz

76669911250699059201 no emocionaba tanto ver niña bicicleta desde tatiana dio solita primer pedalazo mariana pajon olímpicos

76661380267048960001 rio somos todos 76661380267048960002 mariana tiene hoy voces todos colombianos haciéndole barra 76661380267048960003 oro mariana 76661380267048960004 amamos 76661380267048960005 mariana pajon 76628663347802931201 mamertos están desesperados ahora resulta mariana pajón fascista paisa seguidora duce

145

• Plebiscito por la paz 2016

Los siguientes Tweets se eligieron para dos personajes que fueron los involucrados en el proceso de paz.

#Santos

76862142709648998401 santos hoy podemos decir acabó guerra Colombia 77064273254496256201 firma santos decreto plebiscito paz Colombia 76890514372716953601 texto completo acuerdo paz colombia farc oslo cuba santos 76889509742960230401 país cuervos columna caterine ibarguen nairo quintana figueroa santos santos miente 76876898009817907201 apuesta santos domingo 02 10 colombia va urnas acuerdo farc 76864371264153600001 vamos colombia votar no 2 octubre no permitamos país entregue unos asesinos capricho santos 76861412003593420901 ni mismo santos cree dice farc castro cuba 76860710995299532801 juan manuel santos hoy comienza fin dolor todo acordado 76860710995299532802 pazen Colombia 76860605062285721601 va hablar presid ente santos 77029999750178816001 acuerdo paz colombia afronta referéndum contaminado intereses partidistas farc santos uribe

#timochenko

77037994772257177601 serio ud prefiere ver timochenko gobernando país enloqueció totazo volvamonos serios 77026374371652812801 también prefiero uribe timochenko 77026374371652812802 votaré sí 77013337115446476801 hoy más nunca lamentamos tanta muerte dolor ocasionados guerra farc timochenko 77007405560928665601 señores timochenko santos gracias sus buenos oficios mile s vidas han salvado agradecer futuras generaciones

77004143968216678501 colombia timochenko declara alto fuego definitivo país

77001258806322381201 timochenko declara cese fuego definitivo farc

76977186618557644801 timochenko declarará mañana cese fuego definitivo farc

76959340033313177601 timochenko farc papa llama perdón claro no puede decir otra cosa pero familiares victimas asesinadas no piensan igual 76896103814222233601 polémica redes sociales tras discurso timochenko 76860359866209894401 pazen c olombia no solo no hay carcel si no timochenko tambien promete libertad pronta compañeros

146

• Vuelta a España 07 septiembre 2016

Se tomaron en cuenta los dos ciclistas más mencionados en este evento.

#nairoman

77358284272293888001 no no no nairo man nairo man nairo man no ciclista nairo man 77279393169221222601 nairo man ganará vueltax espn será algo histórico merecido grande quintana 77247064711721369801 nairo man vuelta gracias campeón darnos tanta felicidad 77247064711721369802 vuelta suya 77247050802567987201 x 2 vistiéndose gloria grande eres nairo man vueltax espn 77245797326848819201 grande nairo man carrera 77245600818253414401 hoy no existes palabras describir grande eres nuestro héroe colombiano nairo man 77245528197235097601 toda fuerza nairo man nairo man no ciclista nairo man duro papito salud desde yopal laverraquera vueltax espn 77245289236418150501 vamos nairo man métale turbo vueltax espn 77245172881394892801 hoy fin nairo alberto atacaron serio muy bueno nairo man desde sa n cristobal Venezuela 77244961605494374901 desde cimitarra santander pegado tv apoyando nairo man vueltax espn vamos también x etapa

#Froome

77361810216475033601 4 grandes llegan juntos duro ascenso nairo froome chaves contador 77361810216475033602 2 colombia

77353613296975052801 pasa froome no tomaste pastillitas mosstro vuelta aespana

77316667865398886501 froome tendré dejar vuelta otro año

77264735099722137601 polemica diga si enfermedad nairo man froome 77264735099722137602 como dijo antes

77247843298699264001 resumen etapa 15 nairo pulveriza froome froome contador nairo nairo man chavez vía

77246302032071065601 llegó 2 do 77246302032071065602 etapa vuelta aespana tras fuga lado contador 77246302032071065603 froome quedó 3 37 foto efe

77245665819060633601 gracias contador quintana compañía regalarnos etapa vieja usanza desde lejos froome

77211281535634636801 nairo vuelta ser espectacular pero quiero comprarme moto como tiene froome ciclismo sin trampa

77242394035454361701 mónica están haciendo licuad ora froome nairo va escapado asi despiertan domingos

147

Procesamiento de Tweets

Los Tweets de muestra fueron tomados aleatoriamente del archivo de procesamiento Asignación de símbolos de polaridad y asignación valor favorabilidad con el Método N° 1: Asignación de polaridad por ponderación de símbolos.

• Eliminatoria Rusia 2018

Los siguientes Tweets se eligieron para dos personajes que fueron los más relevantes en el juego Colombia – Brasil.

#JamesRodriguez: Asignación símbolos de polaridad.

77362174029565132801 mirada + james rodriguez luego * colombia perdió brasil * rusia 2018 77335088694915072001 brasil ganó + colombia - * james rodriguez bacca + + ospina * * rusia 2018 77334715335586611201 + delanteros necesitamos + james rodriguez 77333356716638208001 viendo brasil colombia néymar jr james rodriguez cracks cracks 77333119765709619201 + colombia james rodriguez - mueras - empató 77333119765709619202 * * + derecha brasil + colombia 77318490853779046401 - zidane - james rodríguez regresar colombia 77333132525639680101 + bn james rodriguez

#JamesRodriguez: Asignación valor favorabilidad

77362174029565132801 0.666666666667 77335088694915072001 0.642857142857 77334715335586611201 1.0 77333119765709619201 0.333333333333 77333119765709619202 0.75 77318490853779046401 0.0 77333132525639680101 1.0

#Neymar: Asignación símbolos de polaridad

77364202141217587201 neymar retornó barcelona - debutar * semana neymar fcbarcelona 77351569279257805401 neymar cuarto máximo + brasil jugadores selecciones neymar selección brasileña 77340763474149376101 + rei ney ganó colombia james 2 1 neymar + 77336595343857664001 rey neymar callando bocas 7335252501780070401 + * darle - * cancha ponerlo + neymar rosca + + 77335073902021836801 neymar puso + brasil colombia zurdazo video 77334387981913292901 creo neymar cambiando - maten 77333437900333875201 * + + 77333437900333875202 tenemos exclusiva imágenes calentamiento previo neymar 77332481320937472001 neymar + solo punta stefan autopista medina 77316135553276723201 ganas * partidazo lleno + + + neymar - fastidie - clavados - florecita

148

#Neymar: Asignación valor favorabilidad

77364202141217587201 0.25 77351569279257805401 1.0 77340763474149376101 1.0 77335252501780070401 0.714285714286 77335073902021836801 1.0 77334387981913292901 0.0 77333437900333875201 0.833333333333 77332481320937472001 1.0 77316135553276723201 0.5

• Juegos Olímpicos Rio 2016

Los siguientes Tweets se eligieron para dos personajes que fueron los más relevantes en los juegos Olímpicos Rio 2016.

# CaterineIbarguen: Asignación símbolos de polaridad

76537557103983820901 caterine ibarguen ibargüen * + 76526956359228211201 sentimos demasiado orgullosas caterine ibarguen 76526956359228211202 dejando * mujeres colombianas colombia * 76502417113074892801 caterine ibarguen + + colombia + rio 2016 76501902106230784001 + 76501902106230784002 - encontré - himno caterine ibarguen aver osea ganas - * vez 76500012000178585701 lleva dorada - triple caterine ibarguen – triple 76499506728739635301 queda + quién debió + abanderada colombia 76499506728739635302 caterine ibarguen + patrio + Colombia 76499035861903360101 + bolívar viviera fuera atleta sería + * + caterine ibarguen - triple 76488523775098060901 + caterine ibarguen + noquée - gane + 76488523775098060902 dije 76483518064112844801 caterine ibargüen + + soyespectador otrosdeportes caterine ibarguen

# CaterineIbarguen: Asignación valor favorabilidad

76537557103983820901 0.75 76526956359228211202 0.5 76502417113074892801 1.0 76501902106230784001 1.0 76501902106230784002 0.125 76500012000178585701 0.0 76499506728739635301 1.0 76499506728739635302 1.0 76499035861903360101 0.7 76488523775098060901 0.75 76483518064112844801 1.0

149

# MarianaPajon: Asignación símbolos de polaridad

76709397783317299201 + + colombiano + mariana pajon campeona mariana pajon 76683595747996057601 + mariana pajon - + felicidades mil bendiciones + + disciplina felicidades 76671662548362035201 + + cada - regalarnos medallas merecidas lágrimas podio mariana pajon carlos ramirez 76670999193606553701 cuelgan medallas pero nosotros + + + + mariana pajon bronce carlos ramirez 76670704677548851201 * mariana pajón 76670704677548851202 + nuestra + colombia 76670704677548851203 mariana pajon + + olimpicos colombia dorada 76670312768074547201 - uds pero + - - + paisa alegrías + va - tierra campeones mariana pajon 76670009777837670401 + mar iana pajon + mujer dos + col generacion + 76669911250699059201 - emocionaba * * * bicicleta desde tatiana dio solita + pedalazo mariana pajon olímpicos 76661380267048960001 rio somos todos 76661380267048960002 mariana tiene hoy voces todos colombianos hac iéndole - 76661380267048960003 + mariana 76661380267048960004 amamos 76661380267048960005 mariana pajon 76628663347802931201 mamertos están desesperados ahora resulta mariana pajón - paisa seguidora +

# MarianaPajon: Asignación valor favorabilidad

76709397783317299201 1.0 76683595747996057601 0.8 76671662548362035201 0.666666666667 76670999193606553701 1.0 76670704677548851201 0.5 76670704677548851202 1.0 76670704677548851203 1.0 76670312768074547201 0.428571428571 76670009777837670401 1.0 76669911250699059201 0.5 76661380267048960002 0.0 76661380267048960003 1.0 76628663347802931201 0.5

• Plebiscito por la paz 2016

Los siguientes Tweets se eligieron para dos personajes que fueron los involucrados en el proceso de paz.

#Santos: Asignación símbolos de polaridad

76862142709648998401 santos hoy podemos * acabó - colombia 77064273254496256201 * santos decreto plebiscito + colombia 76890514372716953601 texto + * + colombia farc oslo cuba santos 76889509742960230401 + cuervos * caterine ibarguen nairo quintana figueroa santos miente 76876898009817907201 * santos domingo 02 10 colombia va urnas * farc 76864371264153600001 + colombia - - 2 octubre - permitamos + entregue unos asesinos - santos 76861412003593420901 ni mismo santos cree dice farc castro cuba 76860710995299532801 juan manuel santos hoy comienza * - * + 76860710995299532802 pazen colombia 76860605062285721601 va + + santos 77029999750178816001 * + colombia afronta + - + partidista s farc santos uribe

150

#Santos: Asignación valor favorabilidad

76862142709648998401 0.25 77064273254496256201 0.75 76890514372716953601 0.833333333333 76889509742960230401 0.75 76876898009817907201 0.5 76864371264153600001 0.333333333333 76860710995299532801 0.5 76860605062285721601 1.0 77029999750178816001 0.7

#timochenko: Asignación símbolos de polaridad

77037994772257177601 - ud + * timochenko gobernando + enloqueció totazo volvamonos serios 77026374371652812801 - prefiero uribe timochenko 77026374371652812802 votaré + 77013337115446476801 hoy - - lamentamos tanta - - ocasionados - farc timochenko 77007405560928665601 señores timochenko santos + - buenos oficios miles vidas han salvado + futuras generaciones 77004143968216678501 colombia timochenko declara * - + + 77001258806322381201 timochenko declara - - + farc 76977186618557644801 timochenko declarará * - - + farc 76959340033313177601 timochenko farc papa + + + - * * cosa pero familiares victimas asesinadas - piensan + 76896103814222233601 polémica redes sociales - - timochenko 76860359866209894401 pazen colombia - solo - hay carcel + - timochenko tambien promete + pronta +

#timochenko: Asignación valor favorabilidad

77037994772257177601 0.625 77026374371652812801 0.0 77026374371652812802 1.0 77013337115446476801 0.0 77007405560928665601 0.666666666667 77004143968216678501 0.625 77001258806322381201 0.333333333333 76977186618557644801 0.375 76959340033313177601 0.625 76896103814222233601 0.0 76860359866209894401 0.5

• Vuelta a España 07 septiembre 2016

Se tomaron en cuenta los dos ciclistas más mencionados en este evento.

#nairoman: Asignación símbolos de polaridad

77358284272293888001 - nairo man nairo man nairo man - ciclista nairo man 77279393169221222601 nairo man ganará vueltax espn + * + + + quintana 77247064711721369801 nairo man + + + darnos tanta + 77247064711721369802 + suya 77247050802567987201 + 2 vistiéndose + + eres nairo man vueltax espn 77245797326848819201 + nairo man - 77245600818253414401 hoy - existes - + + eres nuestro + colombiano nairo man

151

77245528197235097601 toda * nairo man nairo man - ciclista nairo man - papito + desde yopal laverraquera vueltax espn 77245289236418150501 + nairo man métale turbo vueltax espn 77245172881394892801 hoy * nairo alb erto atacaron - + + nairo man desde san cristobal venezuela 77244961605494374901 desde cimitarra santander pegado tv apoyando nairo man vueltax espn + - + *

#nairoman: Asignación valor favorabilidad

77358284272293888001 0.0 77279393169221222601 0.9 77247064711721369801 1.0 77247064711721369802 1.0 77247050802567987201 1.0 77245797326848819201 0.5 77245600818253414401 0.6 77245528197235097601 0.375 77245289236418150501 1.0 77245172881394892801 0.625 77244961605494374901 0.625

#Froome: Asignación símbolos de polaridad

77361810216475033601 4 grandes llegan + - * nairo froome chaves contador 77361810216475033602 2 colombia 77353613296975052801 pasa froome - tomaste pastillitas mosstro + aespana 77316667865398886501 froome tendré * + otro año 77264735099722137601 polemica diga + - nairo man froome 77264735099722137602 como dijo antes 77247843298699264001 + * 15 nairo pulveriza froome contador nairo man chavez + 77246302032071065601 llegó 2 do 77246302032071065602 * + aespana - - - contador 77246302032071065603 froome quedó 3 37 foto efe 77245665819060633601 + contador quintana + regalarnos * - usanza desde lejos froome 77211281535634636801 nairo + + + pero quiero comprarme moto como tiene froome ciclismo + 77242394035454361701 mónica est án haciendo licuadora froome nairo va escapado * despiertan domingos

#Froome: Asignación valor favorabilidad

77361810216475033601 0.5 77353613296975052801 0.5 77316667865398886501 0.75 77264735099722137601 0.5 77247843298699264001 0.833333333333 77246302032071065602 0.3 77245665819060633601 0.625 77211281535634636801 1.0 77242394035454361701 0.5