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
164
0
0
Texto completo
(2) 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.
(3) A mis padres, amigos y familiares quienes me apoyaron durante la carrera universitaria Yohana Delgado.
(4) Amimadre Daniel Ruiz.
(5) 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..
(6) 1. TABLA DE CONTENIDO INTRODUCCIÓN .............................................................................................. 1. 2. PLANTEAMIENTO DEL PROBLEMA ............................................................... 2. 3. MARCO TEÓRICO Y REFERENCIAL .............................................................. 3 3.1. 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. 4. 5. 6. MARCO TEÓRICO ..................................................................................... 3. 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. OBJETIVOS .................................................................................................... 22 4.1. GENERAL................................................................................................. 22. 4.2. ESPECÍFICOS .......................................................................................... 22. ALCANCES Y LIMITACIONES ....................................................................... 23 5.1. ALCANCES .............................................................................................. 23. 5.2. LIMITACIONES ........................................................................................ 23. METODOLOGÍA.............................................................................................. 24 6.1. ARTEFACTOS A GENERAR.................................................................... 24.
(7) 7. DESARROLLO DE LA PROPUESTA ............................................................. 27 7.1. 7.1.1. Capa de Presentación ........................................................................ 28. 7.1.2. Capa de Proceso................................................................................ 28. 7.1.3. Capa de Datos ................................................................................... 29. 7.2. 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. FUNCIONAMIENTO DE LA HERRAMIENTA ........................................... 53. 7.3.1. Diagramas de actividades .................................................................. 53. 7.3.2. Diagramas de secuencia .................................................................... 56. 7.4. 9. DESARROLLO METODOLÓGICO ........................................................... 30. 7.2.1. 7.3. 8. ARQUITECTURA DEL SISTEMA ............................................................. 27. MODELO DE DATOS ............................................................................... 61. 7.4.1. Redis .................................................................................................. 61. 7.4.2. Mongo ................................................................................................ 61. 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. TRABAJO FUTURO ........................................................................................ 74. 10 CONCLUSIONES ............................................................................................ 75 11 BIBLIOGRAFÍA ............................................................................................... 76 12 ANEXOS ......................................................................................................... 79.
(8) 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.
(9) 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.
(10) 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.
(11) 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.
(12) 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.
(13) 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.
(14) 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.. 1.
(15) 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? 2.
(16) 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. 3.
(17) 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.. 4.
(18) •. 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 5.
(19) •. 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). 6.
(20) 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 7.
(21) 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. 8.
(22) •. 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 9.
(23) 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). 10.
(24) 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, 11.
(25) 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. 12.
(26) •. 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. 13.
(27) 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.. 14.
(28) •. 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.. 15.
Figure
+7
Outline
Documento similar