64
Diseño de una arquitectura de software para el análisis de sentimientos aplicado a las opiniones de usuarios en Twitter sobre los servicios ofrecidos en el sistema de salud en Colombia. Juan Carlos Chaparro Cruz, [email protected] Joan Andrés Romero Loaiza, [email protected] Tesis de Maestría presentada para optar al título de Magíster en Ingeniería de Software Asesor: Iván Mauricio Cabezas Troyano, Doctor (PhD) en Ingeniería con énfasis en ciencias de la computación Universidad de San Buenaventura Colombia Facultad de Ingeniería Maestría en Ingeniería de Software Santiago de Cali, Colombia 2018

Diseño de una arquitectura de software para el análisis de

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Diseño de una arquitectura de software para el análisis de

Diseño de una arquitectura de software para el análisis de sentimientos aplicado a las opiniones

de usuarios en Twitter sobre los servicios ofrecidos en el sistema de salud en Colombia.

Juan Carlos Chaparro Cruz, [email protected]

Joan Andrés Romero Loaiza, [email protected]

Tesis de Maestría presentada para optar al título de Magíster en Ingeniería de Software

Asesor: Iván Mauricio Cabezas Troyano, Doctor (PhD) en Ingeniería con énfasis en ciencias de

la computación

Universidad de San Buenaventura Colombia

Facultad de Ingeniería

Maestría en Ingeniería de Software

Santiago de Cali, Colombia

2018

Page 2: Diseño de una arquitectura de software para el análisis de

2

Citar/How to cite [1]

Referencia/Reference

Estilo/Style:

IEEE (2014)

[1] J. C. Chaparro Cruz, J. A. Romero Loaiza, “Diseño de una arquitectura de

software para el análisis de sentimientos aplicado a las opiniones de usuarios en

Twitter sobre los servicios ofrecidos en el sistema de salud en Colombia.”,

Tesis Maestría en Ingeniería de Software, Universidad de San Buenaventura

Cali, Facultad de Ingeniería, 2018.

Maestría en Ingeniería de Software, Cohorte V.

Laboratorio de Investigación para el Desarrollo de la Ingeniería de Software (LIDIS).

Bibliotecas Universidad de San Buenaventura

• Biblioteca Fray Alberto Montealegre OFM - Bogotá.

• Biblioteca Fray Arturo Calle Restrepo OFM - Medellín, Bello, Armenia, Ibagué.

• Departamento de Biblioteca - Cali.

• Biblioteca Central Fray Antonio de Marchena – Cartagena.

Universidad de San Buenaventura Colombia

Universidad de San Buenaventura Colombia - http://www.usb.edu.co/

Bogotá - http://www.usbbog.edu.co

Medellín - http://www.usbmed.edu.co

Cali - http://www.usbcali.edu.co

Cartagena - http://www.usbctg.edu.co

Editorial Bonaventuriana - http://www.editorialbonaventuriana.usb.edu.co/

Revistas - http://revistas.usb.edu.co/

Biblioteca Digital (Repositorio)

http://bibliotecadigital.usb.edu.co

Page 3: Diseño de una arquitectura de software para el análisis de

3

Dedicatoria

Dedico este proyecto de Tesis a todos los que en silencio luchan por sus sueños.

Juan Carlos Chaparro.

A todas las personas que de una u otra manera aportaron en la realización de este sueño.

Joan Andrés Romero Loaiza.

Agradecimientos

Agradecemos a todas las personas involucradas en la realización de este proyecto de Tesis para

la obtención de nuestro título como Magister en Ingeniería de Software.

Profesor Iván Mauricio Cabezas

Profesor Fernando Barraza

Profesor Hugo Erazo

Profesor Jose Luis Jurado

Profesor Johan Bejarano

Profesora Rocio Segovia

Profesor Diego Gomez

Page 4: Diseño de una arquitectura de software para el análisis de

4

Resumen

Una necesidad actual es la de poder entender cómo la inteligencia artificial se involucra en las

actividades humanas del día a día, proveer capacidades de comunicación e interacción a los

sistemas de cómputo, en donde las formas de establecer ese contacto humano-computador dejen

de ser cada vez menos los medios tradicionales como lo son el teclado y el mouse y pasen ahora

a ser medios audiovisuales y lingüísticos que permitan una comunicación "natural" con los

sistemas del futuro. Una de las ramas de la inteligencia que más nos hace pensar en este avance

tecnológico es la de Análisis de Sentimientos. En este proyecto se aborda el diseño de una

arquitectura de software que permita el procesamiento de un lenguaje formal escrito. Se investiga

la forma de cómo el diseño de una arquitectura de software podrá "analizar" un texto desde una

fuente de datos dada, separarla en sus componentes lingüísticos, para luego organizar y

categorizar según lo que el mismo lenguaje plantea como algo positivo, negativo o neutral. A

través de las técnicas del Análisis de Sentimientos se busca encontrar esta categorización en

textos que como fuente de datos para este proyecto será la red social Twitter.

Para este proyecto se elige hacer Análisis de Sentimientos dentro del contexto del servicio de

salud obligatorio en Colombia, se aplicaron las técnicas computacionales establecidas para lograr

los objetivos a través de la ingeniería de software que al final permitieron plantear una

arquitectura de software.

Page 5: Diseño de una arquitectura de software para el análisis de

5

Contenido

Dedicatoria 3

Agradecimientos 3

Resumen 4

Contenido 5

1. Introducción 7

1.1 Pregunta De Investigación 7

1.2 Planteamiento Del Problema 8

1.3 Propuesta De Solución 8

1.4 Justificación 9

1.5 Objetivos 10

1.5.1 Objetivo General 10

1.5.2 Objetivos Específicos 10

2. Marco Teórico 11

2.1 Arquitectura De Software 11

2.1.1 Estilo Arquitectónico 11

2.1.2 Atributos De Calidad Para Una Arquitectura De Software 12

2.1.3 Atributos De Calidad Por Estilo Arquitectónico 14

2.1.4 Patrones De Arquitectura De Software 14

2.1.5 Taller De Atributos De Calidad - QAW 15

2.1.6 Método De Análisis De Intercambio De Arquitectura - ATAM 17

2.2 Análisis De Sentimientos 20

2.2.1 Conceptualización 20

2.2.2 Preprocesamiento De Textos 24

2.2.2.1 Extracción 24

2.2.2.2 Eiminación De Palabras Vacias (Stop Words) 24

2.2.2.3 Identificación De La Raíz De Una Palabra (Stemming) 24

2.2.3 Clasificación De Textos 25

2.2.3.1 Técnica De Naive Bayes 25

2.2.3.2 Técnica De Máxima Entropía 25

Page 6: Diseño de una arquitectura de software para el análisis de

6

2.2.3.3 Técnica De Support Vector Machine 26

2.2.3.4 Técnica De Árboles De Decisión 26

2.2.4 Natural Language Toolkit 27

2.2.5 Evaluación de Clasificadores 28

2.2.5.1 Matriz de Confusión 28

2.2.5.2 Precisión 29

2.2.5.3 Recall 29

2.2.5.4 Medida F 30

3. Proceso de Ingeniería 31

3.1 Exploración Y Selección 31

3.1.1 Selección De Estilo Arquitectónico 31

3.2 Construcción 36

3.2.1 Diseño De Arquitectura De Software Para El Análisis De Sentimientos 36

3.2.2 Selección Del Conjunto De Entrenamiento 38

3.2.3 Evaluación Y Selección Del Clasificador 43

3.2.4 Prototipo Funcional 50

3.3 Evaluación 57

3.3.1 Evaluación de la Arquitectura 57

3.3.2 ATAM Definición de Fases 58

3.3.3 Resultados Metodología ATAM 58

3.3.3.1 Conjunto de Escenarios Priorizados y Preguntas Asociadas 59

3.3.3.2 Árbol de Utilidad 60

4. Observaciones Finales y Recomendaciones 61

4.1 Conclusiones 61

4.2 Trabajos Futuros 62

5. Bibliografía 63

Page 7: Diseño de una arquitectura de software para el análisis de

7

1. Introducción

El objetivo de esta investigación es plantear una arquitectura de software que permita hacer

análisis de sentimientos, para clasificar las opiniones y comentarios de usuarios entre negativos,

positivos y neutrales cuando estos están dentro de las categorías que los relacionan con algún

tema del servicio de salud en Colombia. La fuente de donde se escogen estas opiniones, es decir

la fuente de los datos, es la red social Twitter, esta red social es un sistema que permite compartir

ideas, opiniones, comentarios en no más de 140 caracteres. Esta red social está ampliamente

difundida a nivel internacional y es famosa por su sencillez y facilidad de uso.

Los comentarios escritos por los usuarios en esta red social se buscarán por categorías que dentro

del contexto de Twitter son llamados Hashtags, estos son una frase o palabra sin espacios

precedida por el símbolo "#", usada especialmente en redes sociales para identificar mensajes de

un tema en particular.

Ejemplos de Hashtag que categorizan el tema de salud en Colombia:

#poscolombia

#saludcolombia

#saludencolombia

#epscolombia

#ley100

#eps

#ips

Se plantea una solución arquitectural desde la Ingeniería de Software para obtener y organizar

conceptos, tecnologías, metodologías de trabajo, todo bajo un esquema de desarrollo ágil que

permita crear un prototipo funcional y que podrá hacer ver y entender cómo y cuáles

mecanismos del análisis de sentimientos se pueden usar para clasificar desde las opiniones de

los Colombianos uno de los temas más complejos en una economía en desarrollo como lo es la

Colombiana y su servicio obligatorio de salud.

1.1 Pregunta De Investigación

¿Cúal es el diseño de una arquitectura de software que soporte el análisis de sentimientos para el

procesamiento y categorización de las opiniones de usuarios de la red social Twitter con respecto

a los servicios ofrecidos por el sistema de salud en Colombia?

Page 8: Diseño de una arquitectura de software para el análisis de

8

1.2 Planteamiento Del Problema

El problema que se encuentra es que no se ha definido una arquitectura de software que permita

hacer la clasificación entre positiva, negativa y neutral de los datos extraídos de la red social

Twitter.

Con todos los datos que se puede obtener de manera libre desde Internet, donde se plasman

opiniones de muchos Colombianos con respecto al tema de como es el servicio de salud en

Colombia, no hay un estudio que permita hacer esta clasificación como lo plantea el análisis de

sentimientos y las entidades prestadoras del servicio en salud, el gobierno y los ciudadanos están

separados los unos de los otros sin conocer o entender cuáles son esas opiniones y cómo estas

afectan de manera positiva o negativa la prestación del servicio.

1.3 Propuesta De Solución

El desarrollo de este trabajo de ingeniería es el diseño y prototipado de un sistema basado en esta

arquitectura de software, para extraer opiniones y comentarios de usuarios de la red social

Twitter y se procesen usando análisis de sentimientos, esta información podrá ser categorizada

según el idioma base escogido el cual es el Español, se podrán conocer si estos son positivos,

negativos o simplemente neutrales que no apuntan a ningún extremo en particular (tal como se

ilustra en la Figura 1.1).

Figura 1.1. Opiniones de usuarios en redes sociales fuera del alcance de las entidades prestadoras del servicio de salud y de las

entidades de control gubernamentales.

Page 9: Diseño de una arquitectura de software para el análisis de

9

Propuesta de solución:

● Diseñar una arquitectura de software que soporte el análisis de sentimientos con los datos

de la red social Twitter.

● Hacer minería de textos con los datos de la red social Twitter basados en los hashtags con

los que se categorizan los mensajes de los usuarios.

● Definir como punto de evaluación el tema de la prestación del servicio de salud en

Colombia.

1.4 Justificación

Una arquitectura de software dentro del marco de la ingeniería de software actualmente es el

insumo primordial como base de un sistema que está orientado a la automatización de algún

proceso en general.

El planteamiento de la arquitectura de software para hacer análisis de sentimientos se validará

con un prototipo funcional, que se construirá usando la biblioteca de funciones para

procesamiento de textos llamada NLTK del lenguaje de programación Python.

Con el prototipo funcional basado en la arquitectura de software planteada se tiene una

oportunidad para interconectar usuarios digitales y entidades de salud en Colombia, y presenciar

el poder de los sistemas no convencionales en favor del mejoramiento continuo y fortalecimiento

de las instituciones de salud en Colombia. Su importancia radicará en que se mantengan todos

los procesos y mecanismos de las opiniones positivas y se trabaje en mejorar y estabilizar las

opiniones marcadas como negativas.

Page 10: Diseño de una arquitectura de software para el análisis de

10

1.5 Objetivos

A continuación, se plantean los objetivos generales y específicos asociados a esta investigación.

1.5.1 Objetivo General

Diseñar una arquitectura de software para soportar análisis de sentimientos de opiniones de

usuarios en la red social Twitter sobre el tema del servicio de salud en Colombia.

1.5.2 Objetivos Específicos

● Seleccionar el modelo de arquitectura de software adecuado que se ajuste a las

necesidades para el análisis de sentimientos para opiniones en español de los usuarios de

la red social Twitter.

● Diseñar y construir el prototipo de los componentes necesarios para realizar análisis de

sentimientos de opiniones de usuarios en español obtenidos en la red social Twitter.

● Realizar un proceso de experimentación para validar los componentes diseñados para el

análisis de sentimientos.

● Aplicar un método de evaluación de arquitecturas de software para validar cada uno de

los atributos del diseño propuesto.

Page 11: Diseño de una arquitectura de software para el análisis de

11

2. Marco Teórico

En este capítulo se definen los conceptos básicos que permiten entender el desarrollo del proceso

de ingeniería que se presentan en la sección 3. Se tendrán en cuenta los conceptos teóricos de

arquitecturas de software, análisis de sentimientos y técnicas de evaluación de resultados.

2.1 Arquitectura De Software

Para la ingeniería de sistemas, una arquitectura es la infraestructura de software dentro de la cual

cada componente de la aplicación proporcionada al usuario puede ser especificada, desplegada y

ejecutada [22].

Los componentes o bloques de construcción que conforman las partes de un sistema de software

se definen en tres tipos, estos son:

● Elementos de datos: Contienen la información que será transformada.

● Elementos de proceso: Transforman los elementos de datos.

● Elementos de conexión: Llamados también conectores, que bien pueden ser elementos

de datos o de proceso, y mantienen unidas las diferentes piezas de la arquitectura.

Una relación es la conexión entre los componentes. Puede definirse también como una

abstracción de la forma en que los componentes interactúan en el sistema a través de los

elementos de conexión. Es importante reconocer que una relación se concreta mediante los

conectores [4].

2.1.1 Estilo Arquitectónico

Un estilo arquitectónico es un conjunto de reglas que dan los lineamientos para construir un

sistema. Estos indican cómo se organizan los componentes, como son manipulados los datos, y

cómo se comunican los componentes entre ellos.

Están condicionados por un principio en particular tales como proceso secuencial de datos,

jerarquía de componentes, entre otros. Cada arquitectura tiene un impacto positivo y negativo

sobre unos atributos de calidad, dando ventajas y desventajas unas sobre otras [14].

Algunos estilos de arquitectura son [4]:

Page 12: Diseño de una arquitectura de software para el análisis de

12

● Datos Centralizados: Clientes acceden a datos compartidos en un repositorio de manera

frecuente.

● Flujo De Datos: Transformaciones sobre piezas sucesivas de datos de entrada. El dato

entra al sistema y fluye entre los componentes hasta llegar a su destino final (salida o

repositorio).

● Máquinas Virtuales: Simulan funcionalidad que no es nativa en la plataforma que está

implementado.

● Llamada Y Retorno: Programa principal que tiene el control del sistema y varios

subprogramas se comunican con él a través de llamados.

● Componentes Independientes: Procesos u objetos independientes que se comunican a

través de mensajes.

● Orientación A Servicios: Componentes que pueden ser invocados y cuya descripción de

interfaz puede ser publicada y descubierta.

2.1.2 Atributos De Calidad Para Una Arquitectura De Software

La calidad del software se define como el grado en el cual un software posee una combinación

adecuada de atributos. Los atributos de calidad son requisitos adicionales del sistema, los cuales

son características que debe tener el sistema, pero no son considerados como requisitos

funcionales [4].

Se establecen en dos grupos:

● Los observables vía ejecución se pueden ver en la Tabla 2.1: determinan el

comportamiento en tiempo de ejecución.

● No observables vía ejecución, listados en la Tabla 2.2: se establecen durante el desarrollo

del sistema.

Page 13: Diseño de una arquitectura de software para el análisis de

13

Tabla 2.1

Atributos de calidad observables vía ejecución

Atributo Descripción

Disponibilidad Disponibilidad para el uso

Confidencialidad Ausencia de acceso no autorizado a la información

Funcionalidad Realizar el trabajo para el cual fue desarrollado

Desempeño Cumplir con sus funciones dentro de restricciones de

velocidad, exactitud, entre otras

Confiabilidad Mantenerse operativo a lo largo del tiempo

Seguridad Servir a usuarios legítimos. Restringir los accesos no

autorizados mediante negación del servicio

Tabla 2.2

Atributos de calidad no observables vía ejecución

Atributo Descripción

Configurabilidad Poder realizar ciertos cambios al sistema

Integrabilidad Trabajar correctamente componentes que fueron desarrollados

por separado al integrarlos

Integridad Ausencia de alteraciones inapropiadas de la información

Interoperabilidad Habilidad para trabajar con otros sistemas

Modificabilidad Poder realizar cambios futuros al sistema

Mantenibilidad Capacidad para hacer reparaciones y evoluciones

Portabilidad Poder ser ejecutado en diferentes ambientes

Reusabilidad Componentes puedan ser usados en otros sistemas

Escalabilidad Poder ampliar el diseño arquitectónico, datos o procedimental

Prueba Facilidad para mostrar fallas ante un conjunto de pruebas

Page 14: Diseño de una arquitectura de software para el análisis de

14

2.1.3 Atributos De Calidad Por Estilo Arquitectónico

Cada uno de los estilos arquitectónicos está directamente relacionado con uno o varios atributos

de calidad, que, al aplicar el estilo, pueden llegar a ser abordados de manera adecuada. A

continuación, en la Tabla 2.3 se hace un resumen de los atributos de calidad por estilo:

Tabla 2.3

Resumen de atributos de calidad por estilo arquitectónico

Estilo Atributos De Calidad

Datos Centralizados Integrabilidad, escalabilidad, modificabilidad

Flujo de Datos Reusabilidad, modificabilidad, mantenibilidad

Máquinas Virtuales Portabilidad

Llamada y Retorno Modificabilidad, escalabilidad, desempeño

Componentes Independientes Modificabilidad, escalabilidad

Orientación a Servicios Interoperabilidad, desempeño, seguridad, confiabilidad,

disponibilidad, modificabilidad, pruebas, usabilidad,

escalabilidad

2.1.4 Patrones De Arquitectura De Software

Los patrones de una arquitectura de software guían a los desarrolladores en como diseñar los

componentes y además definen como estos componentes deben interactuar [20].

Dentro de los patrones de arquitectura más comúnmente usados y difundidos se encuentran los

siguientes:

● Arquitectura En Capas: Las capas organizadas de forma horizontal, donde cada capa

posee un rol definido dentro de la aplicación (Presentación, Lógica y/o Lógica de

Negocio, Persistencia). Se puede hablar de capas abiertas o cerradas para permitir una

comunicación abierta y detallada por restricciones.

● Arquitectura Conducida Por Eventos: La arquitectura conducida o manejada por

eventos es una arquitectura distribuida y asíncrona para producir aplicaciones altamente

escalables. Esta arquitectura es desacoplada con un propósito definido en sus

componentes que reciben y procesan los eventos asíncronamente. Consiste en dos tipos

de topologias, el mediador (mediator) y el corredor (broker).

Page 15: Diseño de una arquitectura de software para el análisis de

15

● Arquitectura Microkernel: Se puede entender como dos tipos de componentes de

arquitectura de software: Un Core del sistema y Módulos específicos (plug-ins). El Core

del sistema contiene solo la mínima funcionalidad para hacer el sistema operacional. Los

módulos son podrían trabajar independientes o en consorcio con otros, teniendo en cuenta

que esta práctica estaría generando dependencia. Este patrón de arquitectura podría ser

usado como parte de otras arquitecturas o embebido dentro de estas mismas.

● Arquitectura Microservicios: Cada componente de la arquitectura micro servicios

funciona como una unidad separada. Este patrón aumenta la escalabilidad y

desacoplamiento. Se piensa como servicios de componentes, envés de servicios dentro de

una arquitectura de micro servicios. Los servicios de componentes podrían contener uno

ó más módulos que representan una única funcionalidad o una porción independiente del

negocio de la aplicación. En su correcto nivel de diseño granulado está el mayor de los

retos para este patrón de arquitectura. Los componentes son accedidos a través de alguno

de los protocolos de acceso remotos (JMS, AMQP, REST, SOAP, RMI, entre otros).

● Arquitectura Basada En Espacio: También conocido como el patrón de arquitectura

cloud (nube), minimiza los factores que limitan el escalamiento de una aplicación. La

información de la aplicación es mantenida en memoria y replicada en todas las unidades

de procesamiento activas. De esta manera las unidades pueden incrementar o disminuir

de acuerdo con la cantidad de peticiones que se hacen el tiempo. Se manejan

principalmente dos componentes, la unidad de procesamiento y el middleware

virtualizado. La unidad de procesamiento se encarga de replicar la data de las

aplicaciones y el middleware se encarga de la comunicación entre ellas. En el middleware

también existen 4 componentes: La grilla de mensajes, la grilla de datos, la grilla de

procesamiento y administrador de despliegue.

2.1.5 Taller De Atributos De Calidad - QAW

Se definirá QAW como referencia de Quality Attribute Workshop, que significa

Taller/Metodología de Atributos de Calidad. Es una metodología que permite a los interesados

del proyecto determinar los atributos de calidad de un sistema [1].

Es de vital importancia tener claro todos los requisitos de un sistema desde las etapas iniciales

del desarrollo. Teniendo claros estos requisitos, puede determinarse de manera adecuada los

atributos de calidad del sistema. Todos los interesados en el proyecto deben dar su punto de vista

y determinar en conjunto cada uno de los detalles del sistema.

La metodología del QAW se centra en el sistema y es enfocado hacia los interesados, los cuales

pueden expresar sus necesidades y expectativas con atributos de calidad de su interés. Todo esto

se desarrolla en etapas previas al desarrollo de la arquitectura para describir de una manera clara

Page 16: Diseño de una arquitectura de software para el análisis de

16

los atributos de calidad que son importantes y las responsabilidades de cada uno de ellos se

utilizan escenarios, que son historias de interacción del sistema.

El QAW se compone de los siguientes pasos:

1. Presentación E Introducción: Se describe la motivación del QAW y se explica cada

paso del método. Se hace una introducción a cada uno de los interesados.

2. Presentación Del Negocio/Misión: Uno de los interesados hace la presentación del

contexto del negocio, la misión del sistema y de los requisitos funcionales de alto nivel,

restricciones y requisitos de los atributos de calidad.

3. Presentación Del Plan De Arquitectura: De los involucrados, el encargado de la parte

técnica explica los planes y estrategias que se tienen para cumplir con los requisitos del

negocio, requisitos técnicos y restricciones. Y en caso de que existan diagramas de

contexto, diagramas de sistemas de alto nivel y otras descripciones que se encuentren

escritas.

4. Identificación De Controladores De Arquitectura: Dada la información de los pasos

anteriores, se obtiene una lista en consenso de los controladores de arquitectura tales

como requisitos de alto nivel, controladores del negocio, restricciones y los atributos de

calidad.

5. Lluvia De Escenarios: Los involucrados realizan escenarios en los cuales se plantean sus

perspectivas del sistema. Es recomendable que cada uno de ellos contribuya al menos con

dos escenarios. Se debe asegurar que cada uno de los escenarios represente un

controlador arquitectural y que cada uno de estos tengan al menos un escenario

representando.

6. Consolidación De Escenarios: Entre los involucrados se deben revisar todos los

escenarios e identificar todos aquellos que sean similares en contenido. Estos escenarios

deben ser combinados dejando solo uno, todo con la aprobación de los interesados que

escribieron estos escenarios.

7. Priorización De Escenarios: Se asigna un número de votos a cada involucrado

correspondiente al 30% del total de escenarios después de la consolidación. Los

interesados dan sus votos a los escenarios, los cuales son contados y su resultado dará el

orden de priorización.

Page 17: Diseño de una arquitectura de software para el análisis de

17

8. Refinamiento De Escenarios: Los primeros cuatro o cinco escenarios después de la

priorización, son refinados con un detalle más profundo. En este se describe el

requerimiento que afecta, el atributo de calidad asociado y se detalla posibles problemas

que puedan presentarse.

El QAW permite reunir una gran cantidad de interesados que pueden llegar a clarificar aspectos

y contradicciones sobre los requisitos del sistema. También clarifica los atributos de calidad, se

genera una mejor documentación arquitectónica y da un soporte para el análisis y pruebas

durante la vida útil del sistema.

2.1.6 Método De Análisis De Intercambio De Arquitectura - ATAM

ATAM es la técnica para analizar arquitecturas de software. Esta técnica ayuda a verificar que

una arquitectura satisface los objetivos de calidad planteados y también da una idea de cómo

estos objetivos interactúan entre sí [12]. Esas decisiones de diseño son críticas, tienen

consecuencias más trascendentales y son difíciles de cambiar después de que se haya

implementado un sistema.

Al evaluar una arquitectura con ATAM, el objetivo es comprender las consecuencias de las

decisiones arquitectónicas con respecto a los requisitos de los atributos de calidad del sistema.

Un sistema está motivado por un conjunto de objetivos funcionales y de calidad. ATAM es un

medio para determinar si estos objetivos son alcanzables por la arquitectura tal como se concibió

antes de hacer una inversión de recursos.

El propósito de ATAM es evaluar las consecuencias de las decisiones arquitecturales con base en

los requisitos de atributos de calidad. El ATAM está destinado a ser un método de identificación

de riesgos, un medio para detectar áreas de riesgo potencial dentro de la arquitectura de un

sistema de software complejo. Esto tiene muchas implicaciones:

● El ATAM puede ser realizado en etapas tempranas del ciclo de vida de desarrollo.

● Puede hacerse en forma relativamente económica y rápida

● Producirá análisis proporcionales al nivel de detalle de la especificación de la

arquitectura. Además, no necesita producir análisis detallados de ningún atributo de

calidad medible de un sistema para tener éxito. En cambio, el éxito es logrado mediante

la identificación de tendencias.

En particular, se quieren encontrar decisiones claves que presenten riesgos para cumplir los

requisitos de calidad y decisiones clave que todavía no han sido tomadas. Finalmente, ATAM

ayuda a la organización a desarrollar una serie de análisis, fundamentos y directrices para la toma

de decisiones sobre la arquitectura.

Page 18: Diseño de una arquitectura de software para el análisis de

18

El proceso de ATAM consiste en nueve pasos. A pesar de que los pasos están enumerados,

sugiriendo linealidad, este no es un proceso que deba ser estrictamente en cascada. La

importancia de esos pasos es delinear claramente las actividades del ATAM junto con los

resultados de estas actividades. Los pasos son los siguientes:

1. Presentación Del ATAM: se explica el proceso que cada uno de los involucrados

seguirá, permitiendo resolver preguntas y establecer el contexto y expectativas para las

actividades. Esta describe brevemente los pasos, las técnicas que serán usadas para

elicitación y análisis y las salidas de la evaluación.

2. Presentación De Controladores De Negocio: el gerente de proyecto presenta una visión

general del sistema desde una perspectiva empresarial. Debe describir los requisitos más

importantes, restricciones (técnicas, administrativas, económicas o políticas), objetivos y

contexto, principales interesados y los controladores de arquitectura.

3. Presentación De La Arquitectura: será presentada por el arquitecto líder o equipo de

arquitectura en el nivel de detalle apropiado. Es un paso importante ya que la cantidad de

información disponible y documentada afectará directamente el análisis que es posible y

su calidad. Se deben cubrir restricciones técnicas, interacción con otros sistemas y

enfoques arquitecturales usados para cumplir los atributos de calidad.

4. Identificar Enfoques Arquitectónicos: son identificados los enfoques y estilos

arquitectónicos por el equipo de análisis, más no son analizados. Estos representan los

medios de la arquitectura para abordar los atributos de calidad de mayor prioridad.

También definen las estructuras importantes del sistema y la forma en que éste puede

crecer, responder a cambios, resistir ataques, integrarse con otros sistemas, entre otros.

5. Generar Árbol De Utilidad De Atributos De Calidad: el equipo de evaluación trabaja

con el equipo de arquitectura, el gerente y los representantes del cliente para identificar,

priorizar y refinar los objetivos de calidad más importantes del sistema. El resultado del

proceso de generación del árbol de utilidades es una priorización de requisitos de

atributos de calidad específicos, realizados como escenarios.

6. Analizar Enfoques Arquitectónicos: una vez el alcance de la evaluación ha sido

definido mediante el árbol de utilidad, el equipo de evaluación puede explorar los

enfoques arquitectónicos que realizan los atributos de calidad importantes. Esto se hace

con el objetivo de documentar aquellas decisiones arquitecturales e identificar sus

riesgos, puntos sensibles y compensaciones.

Page 19: Diseño de una arquitectura de software para el análisis de

19

7. Lluvia De Ideas Y Priorización De Escenarios: generar un conjunto de escenarios

facilita la tarea de la lluvia de ideas. Los escenarios son ejemplos de estímulos

arquitectónicos para representar el interés de los interesados y entender los requisitos de

atributos de calidad. Hay dos tipos de escenarios, los de caso de uso donde el interesado

es un usuario final que utiliza el sistema para ejecutar alguna función, y los escenarios de

cambios representan cambios en el sistema (escenarios de crecimiento y de exploración).

Una vez obtenidos los escenarios, deben ser priorizados mediante votación, asignando a

cada involucrado un número de votos igual al 30% del total de escenarios.

8. Analizar Enfoques Arquitectónicos: después de recopilados y analizados los

escenarios, el arquitecto comienza el mapeo de los escenarios mejor clasificados en las

descripciones arquitectónicas que se hayan presentado. Asumiendo que en el paso

anterior no se produjo ningún escenario prioritario que no estuviera cubierto por análisis

previos, ésta es una actividad de prueba: se espera y se supone descubrir poca

información nueva.

9. Presentación De Resultados: se presenta toda la información recogida durante el

proceso. Se incluye el contexto del negocio, requisitos de conducción, restricciones y la

arquitectura. Lo más importante, sin embargo, es el conjunto de salidas de ATAM: los

enfoques y estilos arquitecturales documentados, el conjunto de escenarios y su

priorización, el conjunto de preguntas basadas en atributos, el árbol de utilidad, los

riesgos descubiertos, los no riesgos documentados, los puntos de sensibilidad y los puntos

de intercambio encontrados.

Estos pasos son generalmente agrupados en dos fases. La primera fase es centrada en la

arquitectura y se concentra en elicitar información arquitectural y analizarla. La segunda fase es

centrada en los involucrados y se concentra en elicitar sus puntos de vista y verificar los

resultados de la primera fase.

Page 20: Diseño de una arquitectura de software para el análisis de

20

2.2 Análisis De Sentimientos

2.2.1 Conceptualización

El análisis de sentimientos es una técnica computacional que permite categorizar información

válida desde fuentes textuales, basándose en el procesamiento del lenguaje natural [18].

En la Figura 2.1 se ejemplifica proceso de análisis de sentimientos. En una primera etapa se tiene

la recolección de datos que en este caso de estudio corresponde a redes sociales de uso público.

Posteriormente se realiza el procesamiento de dicha información para finalmente obtener su

categorización y poder mostrar a través de la organización de los datos cuál es el sentimiento

asociado a los textos revisados.

Figura 2.1. Análisis de sentimientos basado en las redes sociales

La clasificación asociada que se encuentra mediante procesamiento computacional se puede

resumir en tres categorías:

● Positivo

● Negativo

● Neutral

Las siguientes imágenes son un ejemplo claro de clasificación de los datos entre positivo,

negativo y neutral, encontrados en la red social Twitter por medio del hashtag "#saludcolombia".

Page 21: Diseño de una arquitectura de software para el análisis de

21

Figura 2.2. Dato categorizado como positivo.

Figura 2.3. Dato categorizado como negativo.

Page 22: Diseño de una arquitectura de software para el análisis de

22

Figura 2.4. Dato categorizado como neutral.

Explotar información subjetiva es de gran importancia actualmente, hay demasiado contenido

sobre casi cualquier tema en las redes sociales y de las opiniones de sus usuarios, y de allí se

puede extraer valiosa información para su categorización y posterior estudio. Para las empresas y

mercadotecnia se hace muy importante conocer cuál es la opinión de los usuarios hacia sus

productos y servicios, para los mismos clientes es importante conocer cuál fue el nivel de

satisfacción usando esos mismo productos y servicios por otros clientes, y de esta manera tener

una idea efectiva de cual llenaría mejor las expectativas.

Cuando nos referimos a productos y servicios apuntamos a cualquier ámbito de consumo, ya sea

elementos de la canasta familiar, viajes, vivienda, estudios, electrónicos y gobierno entre otros.

El análisis de sentimientos como rama de la inteligencia artificial está lejos de poder utilizar las

teorías cognitivas de la emoción o el afecto para poder tomar decisiones. Éstas pueden ser útiles

para entender sobre similitudes y contrastes entre sentimientos o casi que entender etiquetas

naturales de los textos [19] como se puede ver en la Tabla 2.4, donde se presentan las emociones

básicas humanas y sus opuestos, también en la Tabla 2.5 se observa como la suma de dos de las

emociones básicas generan un sentimiento y su sentimiento opuesto.

Page 23: Diseño de una arquitectura de software para el análisis de

23

Tabla 2.4

Contraste de Emociones de Plutchik

Emoción Básica Emoción Opuesta

Alegria Tristeza

Confianza Disgusto

Miedo Ira

Sorpresa Anticipación

Tabla 2.5

Contraste de Emociones y Sentimientos de Plutchik

Emociones Básicas Sentimiento Sentimiento Opuesto

Anticipación + Alegría Optimismo Desaprobación

Alegrías + Confianza Amor Remordimiento

Confianza + Miedo Sumisión Desprecio

Miedo + Sorpresa Temor Agresividad

Sorpresa + Tristeza Desaprobación Optimismo

Tristeza + Disgusto Remordimiento Amor

Disgusto + Ira Desprecio Sumisión

Ira + Anticipación Agresividad Temor

El análisis computacional de sentimientos consiste en detectar estas emociones, quién las posee,

cúal es el aspecto que genera la emoción, cuál es el tipo de emoción, o su polaridad (positiva,

negativa o neutral) y cuáles son las sentencias que la contienen [11].

Page 24: Diseño de una arquitectura de software para el análisis de

24

Por lo cual la información obtenida del análisis de sentimientos la podríamos resumir en los

siguientes ítems:

● Polaridad de sentimientos sobre el servicio de salud.

● Nivel de fidelización de clientes.

● Opinión pública sobre representantes políticos o situaciones de interés social.

● Predicciones sobre resultados de elecciones.

● Tendencias de mercado.

2.2.2 Preprocesamiento De Textos

Los métodos de preprocesamiento de juegan un papel muy importante en las técnicas de minería

de datos y sus aplicaciones. Este es el primer paso para el proceso de minería de datos [24].

2.2.2.1 Extracción

Método utilizado para tokenización que es la tarea de cortar en pedazos una secuencia de

caracteres y una unidad de texto definida, cuyos pedazos son llamados tokens, y a mismo tiempo

descartando ciertos caracteres como la puntuación.

2.2.2.2 Eiminación De Palabras Vacias (Stop Words)

Las palabras vacías deben ser removidas de un texto por que hacen que el texto se vuelva pesado

y menos importante para el análisis. Remover estas palabras reduce la dimensionalidad del

espacio de términos. Las palabras más comunes en documentos de textos son artículos,

preposiciones, pronombres, entre otros que no dan el significado a los documentos. Estas

palabras son tratadas como palabras vacías, entre las cuales podemos encontrar: el, en, un, una,

con y son eliminadas de los documentos porque no se miden como palabras claves en la minería

de textos.

2.2.2.3 Identificación De La Raíz De Una Palabra (Stemming)

Steeming es el método utilizado para identificar la raíz de una palabra. El propósito de este

método es remover varios sufijos, para reducir el número de palabras, para tener trozos precisos,

ahorrar tiempo y espacio de memoria. En esta técnica, la traducción de formas morfológicas de

una palabra a su raíz es hecha suponiendo que cada una está semánticamente relacionada. Hay

dos puntos a considerar mientras se realiza el proceso de stemming:

● Las palabras que no tienen el mismo significado deben mantenerse separadas

Page 25: Diseño de una arquitectura de software para el análisis de

25

● Se supone que las formas morfológicas de una palabra tienen el mismo significado básico

y por lo tanto deben ser asignadas al mismo origen.

Estas dos reglas son buenas y suficientes en aplicaciones de minería de textos o procesamiento

de lenguaje. Stemming generalmente se considera como un dispositivo que mejora la memoria.

2.2.3 Clasificación De Textos

En un sistema de análisis de sentimientos se buscan características y patrones asociadas a

opiniones, emociones y sentimientos. El objetivo principal es el que prevé cual es la categoría a

la cual se puede asociar el texto, esta puede ser positiva, negativa o neutral. Se revisarán a

continuación las técnicas asociadas a la clasificación de textos.

2.2.3.1 Técnica De Naive Bayes

Corresponden a un modelo simple de clasificación que tiene un buen funcionamiento para

categorización de textos. El algoritmo asume que cada una de las caracteristicas es independiente

de las otras dada una clase [9]. De esta manera se tiene la ecuación 2.1:

𝑃(𝑐|𝑡) =𝑃(𝑐) 𝑃(𝑡|𝑐)

𝑃(𝑡) (2.1)

Donde 𝑐 es una clase específica y 𝑡 es el texto que se quiere clasificar. 𝑃(𝑐) y 𝑃(𝑡) son las

probabilidades correspondientes a la clase y el texto, y 𝑃(𝑡|𝑐) es la probabilidad de que un texto

aparezca dada una clase. En el caso de la investigación, 𝑐 corresponde a los sentimientos

POSITIVO, NEUTRAL y NEGATIVO, y 𝑡 corresponde a cada uno de los datos a clasificar.

La meta es seleccionar el valor de 𝑐 que maximice 𝑃(𝑐|𝑡), donde 𝑃(𝑤𝑖|𝑐) es la probabilidad de

la 𝑖 − é𝑠𝑖𝑚𝑎característica en el texto 𝑡 aparezca dada la clase 𝑐. Para esto se necesita entrenar

parámetros de 𝑃(𝑐) y 𝑃(𝑤𝑖|𝑐), los cuales son fáciles de obtener en el modelo de Naive Bayes y

que corresponde a la estimación de probabilidad máxima de cada uno. Al hacer la predicción de

un nuevo texto 𝑡, se calcula el logaritmo de la probabilidad 𝑙𝑜𝑔 𝑃(𝑐) + 𝛴𝑖 𝑙𝑜𝑔 𝑃(𝑤𝑖|𝑐) de las

diferentes clases, y toma la clase con más alto logaritmo de probabilidad como predicción.

2.2.3.2 Técnica De Máxima Entropía

La idea detrás de esta técnica, abreviada como MaxEnt, es que se deberían preferir los modelos

más uniformes que satisfacen una restricción dada. Estos modelos son basados en características.

En un escenario de dos clases, usar estos modelos es equivalente a usar regresión logística para

encontrar la distribución sobre las clases. MaxEnt difiere con Naive Bayes en que no realiza

suposiciones de independencia para sus características, lo que conlleva a poder agregar

Page 26: Diseño de una arquitectura de software para el análisis de

26

características como bigramas y expresiones sin preocuparnos por la superposición de

características [8]. El modelo está representado con la ecuación 2.2:

𝑃(𝑐|𝑑, 𝜆) =𝑒𝑥𝑝[𝛴𝑖𝜆𝑖𝑓𝑖(𝑐,𝑑)]

𝛴𝑐′𝑒𝑥𝑝[𝛴𝑖𝜆𝑖𝑓𝑖(𝑐,𝑑)] (2.2)

Donde 𝑐 corresponde a la clase, 𝑑 es el texto y 𝜆 es el vector de peso. Estos vectores deciden la

importancia de una característica en la clasificación. Un mayor peso significa que la

característica es un indicador fuerte para la clase. El vector de peso es obtenido mediante la

optimización de lambdas con el fin de maximizar la probabilidad condicional.

2.2.3.3 Técnica De Support Vector Machine

Está basado en el principio de minimización de riesgos estructurales para la teoría de aprendizaje

computacional, cuya idea es encontrar una hipótesis ℎ en el cual se pueda garantizar el error

verdadero más bajo. El error verdadero de ℎ es la probabilidad que ℎ caiga en un error en un

ejemplo de prueba no visto y seleccionado al azar [10]. Se puede usar un límite superior para

conectar el error verdadero de una hipótesis ℎ con el error de ℎ en el conjunto de entrenamiento

y la complejidad de 𝐻 (medida por la dimensión VC1), el espacio de hipótesis que contiene ℎ.

Support Vector Machine, denotado como SVM, encuentra la hipótesis ℎ aproximada que minice

el límite del error verdadero a través de controles efectivos y eficientes de la dimensión VC de

𝐻.

Aprendiendo la forma de umbral lineal en su forma básica, pero que a través de complementos

adecuados a su núcleo pueden ser usados para aprender clasificadores polinomiales, redes de

función básica radial y redes neuronales sigmoideas de tres capas. También tiene la habilidad de

que su aprendizaje puede ser independiente de la dimensionalidad del espacio de características,

midiendo la complejidad de la hipótesis basado en el margen por el cual están separados los

datos y no por la cantidad de las características.

2.2.3.4 Técnica De Árboles De Decisión

Provee una descomposición jerárquica del espacio del conjunto de datos en el cual se usa una

condición en el valor del atributo para dividir los datos. La condición o predicado es la presencia

o ausencia de una o más palabras. La división del espacio de datos es hecha recursivamente hasta

que los nodos hoja alcancen un número mínimo de registros que son utilizados para la

clasificación [17].

1 La dimensión Vapnik-Chervonenkis se usa para dar límites superiores e inferiores a la complejidad de la muestra

en clases infinitas de conceptos [7]

Page 27: Diseño de una arquitectura de software para el análisis de

27

Los árboles tienen tres tipos de nodos [23]:

● Un nodo raíz que no tiene aristas entrantes y cero o más aristas de salida

● Nodos internos, cada uno de los cuales tiene exactamente una arista de entrada y dos o

más aristas de salida

● Hojas o nodos terminales, cada uno de los cuales tiene exactamente una arista de entrada

y ninguna arista de salida.

En un árbol de decisión, cada nodo hoja es asignada a una etiqueta de clase. Los nodos no

terminales, los cuales incluyen la raíz y los nodos internos, contienen condiciones de prueba de

atributos para separar registros que tienen diferentes características.

Existen varias medidas que pueden ser usadas para determinar la mejor manera para separar los

registros, las cuales están definidas en términos de la distribución de la clase de los registros

antes y después de separados. La expresión 𝑝(𝑖|𝑡) denota la fracción de registros que pertenecen

a la clase 𝑖 en un nodo 𝑡. En ocasiones, se omite la referencia al nodo 𝑡 expresando la fracción

como 𝑝𝑖.

Las medidas creadas para seleccionar la mejor manera de separar son basados frecuentemente en

el grado de impureza que los nodos hijos. Cuanto menor sea el grado de impureza, más sesgada

será la distribución de clase. Entre las medidas de impureza se tienen las expresadas en las

ecuaciones 2.3 a la 2.5:

𝐸𝑛𝑡𝑟𝑜𝑝í𝑎(𝑡) = −𝛴𝑖=0𝑐−1 𝑝(𝑖|𝑡) 𝑙𝑜𝑔2 𝑝(𝑖|𝑡) (2.3)

𝐺𝑖𝑛𝑖(𝑡) = 1 − 𝛴𝑖=0𝑐−1[𝑝(𝑖|𝑡)]2 (2.4)

𝐶𝑙𝑎𝑠𝑖𝑓𝑖𝑐𝑎𝑐𝑖ó𝑛 𝑑𝑒 𝐸𝑟𝑟𝑜𝑟(𝑡) = 1 − 𝑚𝑎𝑥𝑖[𝑝(𝑖|𝑡)] (2.5)

Donde 𝑐 es el número de clases y 0 𝑙𝑜𝑔2 0 = 0 en los cálculos de entropía.

2.2.4 Natural Language Toolkit

Denotada por NLTK, es un conjunto de módulos de programas, conjuntos de datos y tutoriales

que apoyan la investigación y la enseñanza en lingüística computacional y procesamiento de

lenguaje natural (NLP). NLTK está escrita en el lenguaje de programación Python y distribuida

bajo licencia de código abierto GPL [3].

Page 28: Diseño de una arquitectura de software para el análisis de

28

Con el paso del tiempo la herramienta ha sido reescrita para simplificar muchas estructuras de

datos lingüísticos y aprovechando las últimas mejoras en el lenguaje Python.

Un conjunto de módulos base define tipos de datos básicos y sistemas de procesamiento que son

usados en toda la herramienta. El módulo de token se encarga del procesamiento de texto, tales

como palabras o frases. El módulo de árbol define estructuras de datos para representar

estructuras de árbol sobre texto, tales como árboles de sintaxis y árboles morfológicos. El

módulo de probabilidad codifica distribuciones de frecuencia y distribuciones de probabilidad,

incluida una variedad de técnicas estadísticas de suavizado [16].

Los demás módulos definen estructuras de datos e interfaces para hacer tareas específicas de

NLP. Entre ellos tenemos módulos de parseo, de etiquetado, autómatas de estado finito,

comprobación de tipos, visualización y clasificación de textos.

2.2.5 Evaluación de Clasificadores

2.2.5.1 Matriz de Confusión

Considerando el problema de estimar 𝑘 clases para un conjunto de prueba contenidas en 𝑛

instancias, las clases predecidas son representadas por 𝐶𝑖, mientras que las clases estimadas tal

como se definen en el clasificador son representadas por 𝐶�̂�. Los resultados arrojados por los

clasificadores pueden ser organizados en una matriz de confusión. Esta matriz representa como

las instancias son distribuidas sobre estimados (filas) y las clases predecidas (columnas). La

Tabla 2.7 muestra la representación de la matriz de confusión [15].

Los terminos 𝑛𝑖𝑗corresponden a la cantidad de instancias de clase 𝑖 por el clasificador, cuando en

realidad corresponden al número de clase 𝑗. De esta manera, los términos diagonales (𝑖 = 𝑗)

corresponden a las instancias correctamente clasificadas, mientras que los valores fuera de esa

diagonal (𝑖 ≠ 𝑗) representa instancias clasificadas incorrectamente.

Tabla 2.7

Representación de Matriz de Confusión

𝐶1 . .. 𝐶𝑘

𝐶1̂ 𝑛11 . .. 𝑛1𝑘

. .. . .. . .. . ..

𝐶�̂� 𝑛𝑘1 . .. 𝑛𝑘𝑘

Page 29: Diseño de una arquitectura de software para el análisis de

29

Considerando una clase 𝑖 en particular, se pueden distinguir los siguientes tipos de instancias:

verdaderos positivos (𝑇𝑃) y falsos positivos (𝐹𝑃) que corresponden a instancias correcta e

incorrectamente clasificadas de 𝐶�̂�. Los verdaderos negativos (𝑇𝑁) y los falsos negativos (𝐹𝑁)

son instancias correcta e incorrectamente no clasificadas como 𝐶�̂� respectivamente.

La exactitud predictiva es definida según la ecuación 2.6:

𝐸𝑥𝑎𝑐𝑡𝑖𝑡𝑢𝑑 = (𝑇𝑃 + 𝑇𝑁) / (𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁) (2.6)

Sin embargo, esta exactitud no es apropiada para datos que se encuentren desequilibrados [5].

Como ejemplo del caso de estudio, consideremos que los comentarios positivos y negativos se

encuentran en una proporción más grande que los comentarios neutrales. Para estos casos pueden

usarse medidas tales como precisión, recall y medida F.

2.2.5.2 Precisión

Corresponde al número de ejemplos positivos correctamente clasificados dividido por el número

de ejemplos etiquetados por el sistema como positivos. De acuerdo a la notación definida en la

sección 2.2.4.1 se tiene expresa según la ecuación 2.7 [21]:

𝑃𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 =𝑇𝑃

𝑇𝑃 + 𝐹𝑃 (2.7)

2.2.5.3 Recall

Hace referencia al número de ejemplos positivos correctamente clasificados dividido por el

número de ejemplos positivos en los datos [21]. Se encuentra representado como se ve en la

ecuación 2.8:

𝑅𝑒𝑐𝑎𝑙𝑙 =𝑇𝑃

𝑇𝑃 + 𝐹𝑁 (2.8)

Page 30: Diseño de una arquitectura de software para el análisis de

30

2.2.5.4 Medida F

Es una medida que combina las ventajas y las desventajas de la precisión y el recall, cuyo

resultado refleja la bondad de un clasificador ante una clase dada [5]. La medida F representa la

compensación entre los diferentes valores de 𝑇𝑃, 𝐹𝑃 y 𝐹𝑁. La expresión para la medida F está

dada por la ecuación 2.9:

𝑀𝑒𝑑𝑖𝑑𝑎 𝐹 =(1+𝛽2) ∗ 𝑟𝑒𝑐𝑎𝑙𝑙 ∗ 𝑝𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛

𝛽2 ∗ 𝑟𝑒𝑐𝑎𝑙𝑙 + 𝑝𝑟𝑒𝑐𝑖𝑠𝑖ó𝑛 (2.9)

Donde 𝛽 corresponde a la importancia relativa de la precisión contra el recall. Usualmente este

valor 𝛽 se establece como 1.

Page 31: Diseño de una arquitectura de software para el análisis de

31

3. Proceso de Ingeniería

En esta sección se detalla todo el trabajo ejecutado para hacer análisis de sentimientos a textos

escritos por los usuarios de la red social Twitter y los resultados obtenidos.

3.1 Exploración Y Selección

3.1.1 Selección De Estilo Arquitectónico

Existen diversos estilos arquitectónicos que pueden ser aplicados a una solución específica de

acuerdo con los controladores que la rijan y los atributos de calidad que se identifiquen y sean

más relevantes en el diseño.

A continuación, se detallan los procesos realizados en cada uno de los pasos sugeridos por el

QAW y los aspectos relevantes identificados en cada uno de ellos.

Paso 1: Presentación E Introducción

El equipo se compone por los investigadores de la presente investigación y adicional se cuenta

contó con la revisión y validación de los resultados de la metodología por un arquitecto experto.

Los miembros del equipo tuvieron claro cuáles fueron los pasos a tratar en la metodología. En

cuanto a los roles de cada uno, ambos tuvieron igualdad de funciones.

Paso 2: Presentación Del Negocio Y Misión

Definición de los requisitos del sistema:

● Descarga de los datos de acuerdo con los hashtags que sean tendencia y que hablen sobre

salud en Colombia.

● Clasificar estos datos descargados en una de las tres categorías de análisis de

sentimientos: positivo, neutral o negativo.

● Parametrizar los hashtags que sean tendencia.

● Parametrizar el clasificador a ser utilizado.

● Exponer interfaces que permitan realizar los procesos anteriores de manera independiente

y que puedan llegar a ser programados.

Paso 3: Presentación Del Plan De Arquitectura

En el modelo preliminar se hizo un análisis de cómo debería ser la interacción de los diferentes

componentes que fueron desarrollados. Para esto, se tiene como base la presentación de un

diagrama de alto nivel. Adicional del plan del diseño, se tienen claras las siguientes

consideraciones:

Page 32: Diseño de una arquitectura de software para el análisis de

32

● Se debe realizar el refinamiento de atributos de calidad, los cuales conllevarán a la

selección del estilo arquitectónico adecuado para cada uno de ellos.

● Las librerías y APIs utilizadas para el desarrollo de componentes debe ser de uso libre,

que no se requiere el pago de licencias.

● El procesamiento de lenguaje natural de la información de Twitter debe ser en español.

● La información filtrada debe ser única y exclusivamente de temas que traten temas de la

salud y de entidades prestadoras del servicio de salud en el territorio colombiano.

Paso 4: Identificación De Controladores De La Arquitectura

En los pasos anteriores, se refinan los requisitos del proyecto y algunos controladores

arquitecturales relevantes. Extrayendo cada uno de ellos y los que se van a tener en cuenta para

el diseño, se tiene los siguientes:

● Definición de estilo arquitectónico adecuado para realizar análisis de sentimientos de

información de la red social Twitter sobre el tema de los servicios de salud en Colombia.

● Desarrollo de los componentes necesarios para realizar la recuperación de información de

Twitter y realizar el respectivo procesamiento para el análisis de sentimientos de cada

uno de los datos descargados.

● Evaluación del modelo arquitectónico propuesto.

● Se establece la restricción de las APIs y librerías a ser usadas deben ser de uso público y

libre.

● Desde la presentación del plan de la arquitectura se identifica que los atributos de calidad

que se deben tener en cuenta para el diseño de la arquitectura son: Interoperabilidad,

modificabilidad y escalabilidad, definidos en la Tabla 3.1.

Page 33: Diseño de una arquitectura de software para el análisis de

33

Tabla 3.1

Atributos de calidad y significado

Atributo De Calidad Significado

Interoperabilidad La interoperabilidad es la capacidad que tiene un producto o un

sistema, cuyas interfaces son totalmente conocidas, para

funcionar con otros productos o sistemas existentes o futuros y

eso sin restricción de acceso o de implementación.

Modificabilidad Habilidad para hacer cambios al sistema de una forma rápida y

poco costosa. Es el atributo de calidad más íntimamente

relacionado con la arquitectura.

Escalabilidad Es la capacidad de la aplicación para funcionar correctamente si

el tamaño de procesamiento se incrementa. La escalabilidad

debe ser alcanzada sin modificaciones de la arquitectura

subyacente, a parte de los cambios inevitables de configuración.

Una arquitectura no escalable, cuando el tamaño de

procesamiento se incrementa su throughput se decrementa y el

tiempo de respuesta se incrementa exponencialmente.

Paso 5: Lluvia de Escenarios

Entre los stakeholders investigadores, se plantean diferentes escenarios que puedan llegarse a

presentar durante la puesta en marcha del prototipo funcional de la arquitectura. Cada uno aporta

dos escenarios, teniendo en cuenta que puedan ser tenidos en cuenta por lo menos una vez uno de

los atributos de calidad definidos, siendo ellos los siguientes:

1. Se deben descargar los datos directamente de la plataforma Twitter de acuerdo con

los filtros que se necesiten.

2. Se deben procesar todos los datos que sean descargados de manera periódica sin

importar el número que se recuperen.

3. Se debe poder modificar los parámetros para la descarga de la información de Twitter

de acuerdo con nuevas tendencias en cuanto a los términos de búsqueda.

4. A medida que se tenga más información en la base de datos, el sistema podrá

clasificar mejor los datos de la red social, para identificar el sentimiento asociado

Paso 6: Consolidación de Escenarios

Debido a la cantidad de participantes de escenarios y el trabajo conjunto que se hizo al momento

de la consideración de estos, no se presentan escenarios repetidos y cada uno se encarga de una

funcionalidad específica dentro del sistema.

Page 34: Diseño de una arquitectura de software para el análisis de

34

Paso 7: Priorización de Escenarios

Se generaron 4 escenarios entre los stakeholders del sistema. Para cada uno de ellos se

obtuvieron un total de 2 votos para realizar la priorización. Haciendo la priorización de los

escenarios se tienen en orden con su respectiva votación:

● Escenario 2: Se deben procesar todos los datos que sean descargados de manera

periódica sin importar el número que se recuperen. (2 votos)

● Escenario 3: Se debe poder modificar los parámetros para la descarga de la información

de Twitter de acuerdo con nuevas tendencias. (1 voto)

● Escenario 4: A medida que se tenga más información en la base de datos, el sistema

podrá clasificar mejor los datos de la red social, para identificar el sentimiento asociado.

(1 voto)

● Escenario 1: Se deben descargar los datos directamente de la plataforma Twitter de

acuerdo con los filtros que se necesiten. (0 votos)

Paso 8: Refinamiento de Escenarios

El método de QAW sugiere que se realice el refinamiento de 4 o 5 escenarios. Debido a la

cantidad de escenarios que salieron durante el proceso, se decide hacer el refinamiento a los tres

primeros escenarios, que fueron los que obtuvieron votos durante la priorización.

Refinamiento de Escenario para Escenario 2

Escenario: Se deben procesar todos los datos que sean descargados de manera

periódica sin importar el número que se recuperen

Objetivos de Negocio: Realizar el análisis de sentimientos de la información obtenida de

Twitter

Atributos de Calidad

Relevantes:

Escalabilidad

Estímulo: Procesar toda la información que obtenga de Twitter

Fuente de

Estímulo:

API de Twitter

Ambiente: Procesamiento de datos

Artefacto: Componente de análisis de sentimientos

Respuesta: Procesamiento y clasificación de los datos

Medida de

Respuesta:

Cantidad de aciertos sobre total de datos procesados

Preguntas: ¿Qué tanta precisión se debe tener en cuenta al momento de hacer el

análisis de sentimientos?

Problemas: Mala clasificación de los datos

Co

mp

on

e

nte

s

Page 35: Diseño de una arquitectura de software para el análisis de

35

Refinamiento de Escenario para Escenario 3

Escenario: Se debe poder modificar los parámetros para la descarga de la

información de Twitter de acuerdo con nuevas tendencias

Objetivos de Negocio: Descarga de información de Twitter para análisis de sentimientos

Atributos de Calidad

Relevantes:

Modificabilidad

Estímulo: Poder utilizar todas las tendencias que sean útiles para el análisis

Fuente de

Estímulo:

API de Twitter

Ambiente: Descarga de los datos

Artefacto: Componente de descarga

Respuesta: Datos con tendencias parametrizadas

Medida de

Respuesta:

Preguntas: ¿Qué tan cambiante son las tendencias de Twitter respecto a temas

de salud en Colombia?

Problemas: Presencia de nuevas tendencias que no sean analizadas y contengan

información que pueda ser relevante

Refinamiento de Escenario para Escenario 4

Escenario: A medida que se tenga más información en la base de datos, el

sistema podrá clasificar mejor los datos de la red social, para

identificar el sentimiento asociado

Objetivos de Negocio: Realizar el análisis de sentimientos de la información obtenida de

Twitter

Atributos de Calidad

Relevantes:

Escalabilidad

Estímulo: Tener un conjunto de entrenamiento robusto

Fuente de

Estímulo:

Datos analizados

Ambiente: Matriz de entrenamiento para el análisis de sentimientos

Artefacto: Componente de análisis de sentimientos

Respuesta:

Medida de

Respuesta:

Preguntas: ¿Qué tan grande debe ser la matriz de entrenamiento?

Problemas: No pasarle una matriz de entrenamiento con datos verídicos que

lleven a un procesamiento de datos

Terminado todo el proceso, se logró tener claridad sobre cuáles eran los requisitos del proyecto,

controladores de arquitectura, posibles escenarios y la forma de abordarlos y resultados

esperados, y los atributos de calidad. Entre los atributos de calidad que se definieron para el

diseño de la arquitectura se tienen interoperabilidad, modificabilidad y escalabilidad. Todo el

diseño debe realizarse para que estos atributos sean tenidos en cuenta en cada uno de los

Co

mp

on

e

Co

mp

on

e

Page 36: Diseño de una arquitectura de software para el análisis de

36

componentes de la arquitectura y que al momento de realizarse la validación arrojan un alto

grado de cumplimiento.

Otro de los puntos que se puede concluir al aplicar la metodología, es la de seleccionar el estilo

arquitectónico adecuado entre los posibles estudiados. De acuerdo a los atributos de calidad y

controladores identificados, una de las arquitecturas que se amolda al proceso es la Orientada a

Servicios. Este estilo será el que se tenga en cuenta para el diseño y construcción del prototipo de

la investigación.

3.2 Construcción

3.2.1 Diseño De Arquitectura De Software Para El Análisis De Sentimientos

De acuerdo con los controladores definidos, se realizó el diseño de la arquitectura la cual va ser

la propuesta base para realizar análisis de sentimientos de información descargada de Twitter

sobre temas de salud en Colombia.

Se definieron los módulos principales que se crearon para los procesos base de la propuesta

como lo son la recuperación de datos, análisis de sentimientos y visualización de resultados.

Siguiendo el modelo de vistas de arquitectura 4+1 [13], se definen las vistas en las Figuras 3.1 a

la 3.5 para el diseño incluyendo cada uno de los componentes y las librerías que son utilizadas en

ellos.

Figura 3.1. Vista Lógica de la arquitectura propuesta

Page 37: Diseño de una arquitectura de software para el análisis de

37

Figura 3.2. Vista de Procesos de la arquitectura propuesta

Figura 3.3. Vista de Desarrollo de la arquitectura propuesta

Figura 3.4. Vista Física de la arquitectura propuesta

Page 38: Diseño de una arquitectura de software para el análisis de

38

Figura 3.5. Definición de escenarios para la arquitectura propuesta

Para el primer componente correspondiente a la recuperación de información de Twitter, se

realizó una conexión con la API expuesta por Twitter para la descarga de los datos de acuerdo a

los parámetros suministrados, los cuales serán guardados en una bodega de información.

El segundo componente de análisis de sentimientos, el cual tendrá como entrada los datos

descargados por el primer componente. Para este proceso se utilizará la librería NLTK, la cual

fue configurada para realizar todo el procesamiento de textos y demás procesos necesarios para

el análisis de sentimientos en español.

Un tercer componente complementario a los dos anteriores también fue desarrollado, el cual

corresponde a un generador de reportes, que organiza los resultados para entender la información

descargada y clasificada por los otros componentes.

Cada uno de estos componentes podrán ser accedidos a través de una interfaz de usuario donde

se pueda realizar cualquiera de los procesos principales y además poder visualizar los reportes de

una manera que pueda ser interpretada fácilmente por el usuario final.

3.2.2 Selección Del Conjunto De Entrenamiento

Para realizar el análisis de sentimientos se definió un conjunto de datos, los cuales expresan

formas conocidas de cada uno de los posibles sentimientos. Este conjunto de datos fue utilizado

tanto para el entrenamiento como para la validación del clasificador a ser utilizado.

Internet provee diferentes opciones de las cuales pueden llegar a ser extraídos textos los cuales

puedan ser utilizados como conjunto de datos. Dado el tema central de la investigación que

corresponde a la salud, acotamos los lugares de búsqueda a redes sociales mediante el uso de

tendencias, sitios especializados de salud en los cuales los usuarios dejen sus opiniones sobre

este tema, entre otros. Una de estas opciones es Google Maps, en el cual se registran diversos

sitios como restaurantes, centros comerciales, almacenes, hospitales, clínicas y demás. Esta

plataforma permite que los usuarios califiquen algún lugar en un rango de 1 a 5 (representado en

estrellas) y adicional de que hagan sus opiniones sobre el sitio que están visitando.

Page 39: Diseño de una arquitectura de software para el análisis de

39

Para el caso de estudio, se obtuvieron los comentarios de las clínicas y hospitales de ciudades

capitales de Colombia, siendo ellas Bogotá, Medellín, Cali, Barranquilla, Cartagena y

Bucaramanga. En la Figura 3.6 se puede observar el detalle de una clínica de la ciudad de Cali,

donde se identifica la cantidad de calificaciones realizadas por usuarios y con su respectiva

calificación promedio.

Figura 3.6. Ubicación de clínica y puntuación en Google Maps

En la Figura 3.7, se puede observar el listado de todas las calificaciones y se realiza un resumen

de la cantidad de calificaciones por puntuación. Por cada una de las ellas se observa la

puntuación suministrada por el usuario, así como un comentario opcional complementando.

Page 40: Diseño de una arquitectura de software para el análisis de

40

Figura 3.7. Resumen de puntuación y comentarios de clínica en Google Maps

De todas las clasificaciones por cada uno de los lugares, se descargan aquellas que tengan

puntuación y comentario y que sean en español. Estos comentarios con su puntuación son

organizados en una hoja electrónica, identificando la clínica u hospital al cual pertenece y la

ciudad en la que se encuentra. En la Tabla 3.2 se puede ver el esquema de cómo van a ser

organizados los comentarios que fueron obtenidos. En total son 1369 registros.

Para dar una clasificación a cada uno de los comentarios descargados, se tienen en cuenta las

siguientes opciones:

● Positivo: en caso de que el comentario exprese algo a favor.

● Negativo: en caso de que el comentario expresa inconformidad.

● Neutral: cuando el comentario no exprese aspectos positivos o negativos

● No Útil: todos aquellos comentarios no relevantes con temas de salud o que no aportan

para la clasificación

Page 41: Diseño de una arquitectura de software para el análisis de

41

Tabla 3.2

Esquema de organización de comentarios de Google Maps

Ciudad Clínica Comentario Estrellas

Bogotá Clínica del Country Buena atención 5

Se supone que es una de la

mejores, paga uno medicina

prepagada para tener que estar

cuatro horas esperando que

atiendan a los niños, pésimo

servicio pediátrico.

1

Urgencias es lento, normal, pero

avanza. Por lo menos no es caótico

como en otras clinicuchas

3

Agradezco la atención que me

prestaron. Fue rápida y muy

profesional. Dios bendiga a sus

doctores y grupo de auxiliares. Un

saludo.

5

Cali Fundación Valle del Lili La Clínica Valle del Lili,

auspiciada en buena parte por la

Fundación Valle del Lili, está

catalogada como una de las

instituciones prestadoras de salud

más importantes de América

Latina. Sus servicios en general

son de alto nivel, con la más alta

tecnología y el cuerpo médico de

más alto perfil y competencias

laborales.

5

Yo estuve ahí me hicieron un

transplante y muy buena atención

5

Considerada una de las mejores

clínicas de país y de Suramérica.

4

Muy demorada la atención en el

laboratorio y rayos x y adicional

excesivo el cobro del parqueadero.

2:30 horas $5.500

1

Page 42: Diseño de una arquitectura de software para el análisis de

42

Como guía de para la clasificación se toma el comentario y no la puntuación, ya que se pudo

identificar al obtener la colección de datos que muchas veces se daba una puntuación baja con

comentarios positivos o viceversa. La calificación realizada por cinco personas, las cuales

revisaron cada uno de los comentarios y dependiendo su contenido le asignaron una de las

opciones mencionadas anteriormente. Cuando todos los evaluadores dieron una clasificación a la

totalidad de los comentarios, se hicieron ponderaciones de las clasificaciones para determinar la

clasificación final de cada uno de ellos.

De todos los comentarios clasificados, se obtuvieron los resultados consignados en la Tabla 3.3:

Tabla 3.3

Resultados de calificación de comentarios

Clasificación Comentarios

Positivo 732

Negativo 360

Neutral 76

No Útil 203

De los comentarios clasificados como positivo, negativo y neutral, se realizaron procesos de

filtrado eliminando aquellos comentarios que sean repetidos. Posterior a este proceso quedan un

total de 1025 comentarios relevantes como conjunto de entrenamiento, distribuidos según

resultados de la Tabla 3.4 y representados en la Figura 3.8:

Tabla 3.4

Comentarios depurados por sentimiento

Clasificación Comentarios

Positivo 594

Negativo 355

Neutral 76

Page 43: Diseño de una arquitectura de software para el análisis de

43

Figura 3.8. Distribución de comentarios por sentimiento

3.2.3 Evaluación Y Selección Del Clasificador

Como se definió en secciones anteriores, se usará como herramienta para el análisis de

sentimientos NLTK basada en el lenguaje de programación de Python. Esta librería dentro de su

implementación cuenta con diferentes clasificadores los cuales pueden llegar a ser utilizados para

analizar y clasificar cada uno de los datos que sean descargados a través de la API de Twitter.

Los clasificadores para ser analizados para la selección corresponden a los siguientes:

● Naive Bayes

● Máxima Entropía

● Support Vector Machines (SVM)

● Árboles de Decisión

Como conjunto de datos se tomará el definido anteriormente, que consta de un total de 1025

comentarios entre las tres clases definidas para el análisis de sentimientos. Este conjunto de datos

fue distribuido en un 70% para entrenamiento y el 30% restante utilizado para validar dicho

conjunto de entrenamiento, los cuales son seleccionados de manera aleatoria para un total de 718

comentarios para entrenamiento y 307 para validación. Teniendo estos grupos de datos para

entrenamiento y validación, son entrenados cada uno de los clasificadores implementados y

clasificados cada uno de los comentarios para validación, almacenando el resultado obtenido

para cada clasificador.

Posterior al proceso de clasificación, se creó la matriz de confusión para clasificadores

multiclase, de los cuales se obtienen medidas como precisión, recall y medida F1 por clase. Estas

Page 44: Diseño de una arquitectura de software para el análisis de

44

métricas ayudarán a la selección del clasificador adecuado para el conjunto de datos

seleccionado.

Este procedimiento de validación se realiza con tres conjuntos aleatorios diferentes de

entrenamiento y validación, con la finalidad de tener resultados precisos ante diferentes entradas

y poder definir una tendencia en los clasificadores. Los resultados de estas tres validaciones se

pueden evidencias en las Tablas 3.5 a la 3.7 y en las Figuras 3.9 a la 3.11. Para las tablas tener en

cuenta las siguientes convenciones:

● Pos: Sentimiento Positivo

● Neg: Sentimiento Negativo

● Neu: Sentimiento Neutral

Tabla 3.5

Precisión de clasificadores para primeros tres conjuntos de prueba

Conjunto de Prueba 1 Conjunto de Prueba 2 Conjunto de Prueba 3

Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles

Pos 0.75 0.68 0.87 0.86 0.79 0.69 0.91 0.90 0.69 0.60 0.82 0.80

Neg 0.33 - 0.50 0.45 0.17 - 0.50 0.33 0.40 - 0.63 0.47

Neu 0.82 0.92 0.86 0.76 0.88 0.94 0.86 0.76 0.85 0.97 0.88 0.77

Figura 3.9. Distribución de precisión de clasificadores para primeros tres conjuntos de prueba

Page 45: Diseño de una arquitectura de software para el análisis de

45

Tabla 3.6

Recall de clasificadores para primeros tres conjuntos de prueba

Conjunto de Prueba 1 Conjunto de Prueba 2 Conjunto de Prueba 3

Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles

Pos 0.96 0.99 0.96 0.90 0.95 0.99 0.95 0.87 0.95 0.99 0.94 0.90

Neg 0.04 - 0.20 0.36 0.05 - 0.37 0.37 0.07 - 0.34 0.24

Neu 0.56 0.34 0.84 0.73 0.64 0.34 0.84 0.79 0.57 0.28 0.79 0.73

Figura 3.10. Distribución de recall de clasificadores para primeros tres conjuntos de prueba

Page 46: Diseño de una arquitectura de software para el análisis de

46

Tabla 3.7

Medida F1 de clasificadores para primeros tres conjuntos de prueba

Conjunto de Prueba 1 Conjunto de Prueba 2 Conjunto de Prueba 3

Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles

Pos 0.84 0.80 0.91 0.88 0.86 0.81 0.93 0.88 0.80 0.75 0.88 0.85

Neg 0.07 - 0.29 0.40 0.08 - 0.42 0.35 0.12 - 0.44 0.32

Neu 0.67 0.49 0.85 0.75 0.74 0.50 0.85 0.77 0.68 0.43 0.84 0.75

Figura 3.11. Distribución de medida F1 de clasificadores para primeros tres conjuntos de prueba

Los datos analizados en las tres primeras validaciones no fueron uniformes en cuanto a cantidad

de comentarios por sentimiento, siendo los positivos con mayor participación y los neutrales con

una cantidad menor respecto a los otros. Para probar el comportamiento de los clasificadores con

otra distribución de comentarios, se decide hacer una cuarta validación con un subconjunto de

datos del seleccionado, pero esta vez teniendo igual número de comentarios por sentimiento. Se

toman 76 comentarios aleatorios por sentimiento para un total de 228 comentarios. A estos se

aplica de igual manera la distribución 70% para entrenamiento y 30% para validación que fue

utilizada en las anteriores validaciones.

Una última validación es realizada con la misma cantidad uniforme en cuanto al conjunto de

datos se refiere. Esta vez se toman los 228 comentarios seleccionados de la validación anterior

como entrenamiento y se realiza la validación con el total de 1025 comentarios. Los resultados

Page 47: Diseño de una arquitectura de software para el análisis de

47

de las validaciones 4 y 5 se pueden evidenciar en las Tablas 3.8 a la 3.10 y en las figuras 3.12 a

la 3.14.

Tabla 3.8

Precisión de clasificadores para conjuntos de prueba 4 y 5

Conjunto de Prueba 4 Conjunto de Prueba 5

Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles

Pos 0.56 0.67 0.76 0.33 0.80 0.85 0.93 0.91

Neg 0.45 0.53 0.52 0.53 0.40 0.42 0.42 0.27

Neu 0.89 0.71 0.58 0.42 0.98 0.96 0.90 0.73

Figura 3.12. Distribución de precisión de clasificadores para conjuntos de prueba 4 y 5

Page 48: Diseño de una arquitectura de software para el análisis de

48

Tabla 3.9

Recall de clasificadores para conjuntos de prueba 4 y 5

Conjunto de Prueba 4 Conjunto de Prueba 5

Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles

Pos 0.92 0.75 0.67 0.25 0.93 0.91 0.88 0.55

Neg 0.24 0.43 0.52 0.43 0.78 0.87 1.00 0.93

Neu 0.70 0.74 0.65 0.61 0.50 0.64 0.71 0.83

Figura 3.13. Distribución de recall de clasificadores para conjuntos de prueba 4 y 5

Page 49: Diseño de una arquitectura de software para el análisis de

49

Tabla 3.10

Medida F1 de clasificadores para conjuntos de prueba 4 y 5

Conjunto de Prueba 4 Conjunto de Prueba 5

Bayes Max

Ent

SVM Árboles Bayes Max

Ent

SVM Árboles

Pos 0.70 0.71 0.71 0.29 0.86 0.88 0.90 0.68

Neg 0.31 0.47 0.52 0.47 0.53 0.57 0.59 0.42

Neu 0.78 0.72 0.61 0.50 0.67 0.77 0.79 0.77

Figura 3.14. Distribución de medida F1 de clasificadores para conjuntos de prueba 4 y 5

Los resultados de los conjuntos de datos 1, 2 y 3, muestran resultados no tan distantes y un poco

más equilibrados en los tres sentimientos entre los clasificadores SVM y árboles de decisión. En

la validación 4, se observa que árboles de decisión merma un poco los buenos resultados

obtenidos en la primera validación, dejando paso a un repunte de máxima entropía y de nuevo a

SVM. La última validación muestra resultados más equilibrados entre todos los clasificadores,

siendo SVM el que más destaca entre los demás. Analizando los resultados de todas las

validaciones, se puede decir SVM fue el clasificador que mejor comportamiento tuvo y fue

constante en sus resultados independiente de la distribución de datos con el que se entrenará en el

dominio de opiniones sobre temas de salud.

La técnica de SVM implementada utiliza la estrategia de uno contra el resto la cual es específica

para clasificadores multiclase, ayudando a que el proceso de clasificación sea adecuado y

preciso, creando clasificadores por clase y tratándolo como si fueran binarios, lo que hace que

Page 50: Diseño de una arquitectura de software para el análisis de

50

siempre se presentan datos desiguales en cantidad de positivos y no positivos y haciendo que su

comportamiento sea el mismo para conjuntos de entrenamiento iguales o desiguales en cantidad

de registros por clase. Esto pudo ser corroborado con los resultados de las 5 validaciones que

fueron realizadas para los clasificadores.

3.2.4 Prototipo Funcional

El diseño de la arquitectura propuesta se empleó en la implementación del prototipo funcional,

con el cual se verifica cada uno de los requisitos del sistema y se valida que los controladores de

arquitectura identificados sean cumplidos en su totalidad.

Como almacén de datos se decidió utilizar una base de datos NoSQL como MongoDB, esta base

de datos permite versatilidad y facilidad al momento de almacenar todos los datos que sean

descargados sin necesidad de hacer relaciones complejas para tener un registro completo.

También se almacenará el conjunto de entrenamiento para el análisis de sentimientos y algunos

parámetros de configuración que serán detallados más adelante.

Para el primer componente de recuperación de información se utiliza la API suministrada por

Twitter, la cual retorna un JSON que es un acrónimo de JavaScript Object Notation, es un

formato de texto ligero para el intercambio de datos. con información relevante de cada dato en

la red social Twitter. Esta API puede ser configurada con ciertos parámetros para filtrar la

información que se necesita para el tema específico de la investigación: salud en Colombia y

comentarios solamente en español. Los parámetros que pueden ser agregados para la búsqueda

son nombre de usuario, rango de fechas de los datos a obtener, palabras clave o hashtag y

lenguaje (Idioma).

Para nuestro caso de estudio, los parámetros que se usarán son el rango de fecha, el lenguaje y la

palabra clave para filtrar por hashtags. Estos hashtags son las tendencias con las cuales se van a

filtrar todos los datos del universo que se encuentra en la base de datos de Twitter para extraer

únicamente aquellos que hablen de temas sobre salud en Colombia. Los hashtags que vayan

siendo tendencia pueden ser parametrizados en una colección de la base de datos, de la misma

manera en los cuales pueden ser eliminados algunos hashtags que ya no tengan relevancia para el

tema de la investigación.

La Figura 3.15 muestra el esquema estructural del primer componente, el cual para su

funcionamiento expone una interfaz REST la cual se invoca para descargar los datos de acuerdo

con los hashtags configurados. Dicha API recibe como parámetros el rango de fecha en la cual se

quieren descargar los datos, primero la fecha desde y segundo la fecha hasta. El formato de la

fecha debe iniciar con el año (de cuatro dígitos), el mes (de dos dígitos) y finalmente el día

(también de dos dígitos) sin ningún espacio ni carácter entre ellos. El servicio configura para la

Page 51: Diseño de una arquitectura de software para el análisis de

51

descarga el idioma español, el cual se encuentra almacenado en una colección de la base de datos

que contiene parámetros generales.

Figura 3.15. Diagrama de componente de recuperación de información de Twitter

Esta API puede ser utilizada desde una aplicación en caso de que se desee hacer una descarga

específica de datos o puede programarse para que en un periodo de tiempo determinado se

descargue la información de Twitter de acuerdo con los parámetros establecidos.

Para el componente de análisis de sentimientos, se realizó un diseño arquitectural reflejado en la

Figura 3.16. En este es obtenido el conjunto de entrenamiento seleccionado y que se encuentra

almacenado en una colección de la base de datos. A cada uno de los comentarios sin importar su

clasificación, son aplicadas técnicas de preprocesamiento de textos tales como conversión en

minúscula, tokenización, eliminación de palabras vacías y stemming a cada una de las palabras.

Page 52: Diseño de una arquitectura de software para el análisis de

52

Figura 3.16. Diagrama de componente de clasificación de datos extraídos de la red social Twitter

Teniendo los comentarios procesados, se extrae una lista con todas las palabras distintas y la

frecuencia de apariencia de cada una de ellas. Con esta lista y con un ayuda de un extractor de

características, se crea un diccionario que indica las palabras que están contenidas en cada una de

los comentarios, que en conjunto aplicando estas características al clasificador y pasando el

conjunto de comentarios generan una lista con el diccionario de características y el sentimiento

asociado a cada uno de ellas.

Definida la lista de características y sentimientos, se procede con la puesta a punto del

clasificador cuyo conjunto de entrenamiento corresponde a esta misma lista. El clasificador

utilizado es SVM de acuerdo con la experimentación realizada en la sección 3.2.3.

Una vez el clasificador haya finalizado su entrenamiento, se procede a su almacenamiento como

un archivo en disco para que este pueda ser recuperado cada vez que se vaya a hacer el análisis

de sentimientos a los datos que vayan siendo descargados y así no incurrir en tiempos

adicionales de entrenamiento innecesarios. Solo en caso de que se cambien o ajusten los datos

del conjunto de entrenamiento que los haría diferentes a los que tiene el clasificador, se

procederá con un nuevo entrenamiento.

Cuando se ha entrenado el clasificador, se obtienen todos los datos descargados de la colección y

que aún no hayan sido clasificados. Para cada uno de ellos se hace el mismo preprocesamiento

que fue realizado a cada comentario del conjunto de entrenamiento. Los datos son analizados con

el clasificador y el sentimiento obtenido es actualizado en la base de almacenamiento de

información.

Page 53: Diseño de una arquitectura de software para el análisis de

53

Para poder acceder a este componente y ejecutar sus procesos, se dispone de una interfaz REST

la cual no lleva ningún parámetro, ya que siempre se van a obtener los datos que están sin

clasificar en la base de datos. De igual manera que la API del primer componente, esta puede ser

utilizada para ejecutarla desde una aplicación o para ser programada y sea ejecutada

periódicamente.

El tercer componente es el encargado de obtener y consolidar los resultados del análisis de

sentimientos realizado a todos los datos obtenidos. Para ello se dispone de una interfaz REST

que será accedida desde una aplicación para presentar estos resultados, cuyo diseño se observa

en la Figura 3.17.

Figura 3.17. Diagrama de componente de visualización de resultados

De todos los datos que ya han sido clasificados, se obtiene la cantidad que se encuentra en cada

una de los sentimientos definidos. No se tiene en cuenta los datos que por algún motivo aún no

hayan sido clasificados. También se obtienen los hashtags (marca de obtención para categorizar

dentro del dominio de la salud en Colombia) y menciones por cada sentimiento, especificando la

cantidad de ocurrencias en todos los datos clasificados. Estos resultados son organizados en un

formato JSON y retornados al artefacto que consume el servicio.

Page 54: Diseño de una arquitectura de software para el análisis de

54

Para presentar los resultados, se realizó una aplicación Web que utiliza el servicio detallado

anteriormente, cuya información obtenida es organizada en un tablero de resultados, donde a

través de gráficos y tablas ésta puede ser visualizada para así poder ser interpretada de una forma

más sencilla.

En la Figura 3.18 se ilustra el tablero de resultados, indicando los hashtags que han sido

parametrizados para descarga de los datos y la clasificación realizada, agrupados por cantidad,

por sentimiento y top de hashtags mencionados y usuarios de Twitter referenciados.

Figura 3.18. Tablero de Resultados

Page 55: Diseño de una arquitectura de software para el análisis de

55

3.2.5 Metodología De Desarrollo De Software

La metodología SCRUM que es un marco de referencia para el desarrollo ágil y permite la

organización de equipos de personas para la organización del proceso de desarrollo de software

fue usada como parte de la gestión de la construcción del prototipo funcional, para el propósito

de este proyecto nos enfocamos en la organización de las etapas tempranas del producto y en

afinar los detalles de su desarrollo a medida que se construyó.

Basados en SCRUM se asignaron los siguientes roles y se hace una explicación de su contexto:

1. Scrum Master (Juan Carlos Chaparro): Encargado de poner a todos los actores en

contexto y realizar las ceremonias de acuerdo con el cronograma establecido.

2. Scrum Developer (Joan Romero, Juan Carlos Chaparro): Son los encargados de dar

un reporte diario de las actividades (Reunión corta diaria de actividades) que se

desarrollaron para el prototipo funcional. Estos reportes se hacen en una reunión donde

cada uno de los desarrolladores dice que hizo el día anterior, que va a hacer el día actual

y si hay algún bloqueo, el reporte de cada desarrollador no debe durar más de 5 minutos.

Los bloqueos deben ser resueltos en el menor tiempo posible entre el Scrum Master y el

Product Owner, para proveer una solución rápida al desarrollador.

3. Product Owner (Iván Mauricio Cabezas): Es el encargado de entender el prototipo

funcional y quien prioriza actividades las cuales dan el perfil adecuado para encontrar la

versión final del prototipo.

4. Sprint: Tiempo en cual se desarrollan las actividades que se han estimado para lograr

cambios y nuevas funcionalidades en el prototipo, para nuestro caso de estudio se

estimaron 2 Sprints de 2 semana cada uno.

5. Historias de Usuario: Los Sprints se basan en historias de usuario que reemplazan los

"casos de uso" de metodologías de desarrollo tradicionales. Cada historia de usuario

contiene una descripción y criterios de aceptación que el desarrollador debe cumplir,

estos criterios deben ser validados por el Product Owner.

6. Dashboard: Para organizar todas las tareas de las que se compone el desarrollo del

prototipo "Backlog", utilizamos una herramienta ágil llamada JIRA -

https://www.atlassian.com/software/jira y de uso libre en Internet, esta herramienta en su

capa libre (no pago) permite organizar las actividades del Sprint y revisar las notas y

comentarios de los desarrolladores hacia el Product Owner y el Scrum Master.

Adicionalmente JIRA permite saber en qué estado se encuentra cada historia para

Page 56: Diseño de una arquitectura de software para el análisis de

56

determinar si está en proceso de desarrollo, en pruebas o si ya esta terminada (Flujo de

trabajo). Esto permite incluir cambios en el proceso de desarrollo y actualizar

constantemente al Product Owner sobre el estado actual de la aplicación.

7. Prueba de Concepto: En el desarrollo de algunas funcionalidades propias del prototipo

sobre las cuales no se tiene previo conocimiento, se desarrolla una actividad llamada

prueba de concepto que permite por medio de un desarrollo corto validar mecanismos,

necesidades y posibles planes para encontrar solución a la historia de usuario a validar y

la cual podrá ser estimada en tiempo de desarrollo de una manera correcta.

8. Demo: Un demo al final de cada Sprint permite hacer una presentación del camino feliz

(Conocido como Happy path en el ámbito de pruebas de desarrollo de software) de cada

una de las características a liberar, también se hace una demostración de como debe y

está funcionando la aplicación, esto permite al Product Owner saber si está de acuerdo

como va el desarrollo de la aplicación o si por el contrario quiere enfatizar o dar prioridad

a alguna otra característica para el siguiente Sprint.

9. Retrospective: Es una reunión que se hace al final de cada Sprint para evaluar entre los

desarrolladores y el Scrum Master, que estuvo bien y que debe mejorarse y cuales

acciones se deben tomar en cuenta para encontrar las mejoras que se esperan en el

siguiente Sprint (Aprender de los errores).

10. Release: Al final de cada Sprint (dos semanas), el equipo de desarrollo se encarga de

liberar una versión del producto, al final en la cual se dejará el prototipo funcional será la

1.2.

3.2.6 Importancia En El Contexto Social

El contexto social de esta investigación radica principalmente en que la tecnología es un medio

por el cual podemos encontrar respuestas a situaciones que nos afectan a diario, la sociedad

moderna busca poder tener cabida en un mundo que provee soluciones a la interconectividad.

Por medio de las redes sociales las personas sienten el deseo de compartir su posición frente al

mundo y sus ideales, les interesa saber en qué situación se encuentran los más cercanos a

nosotros y que han compartido. En esta investigación se va a obtener y procesar opiniones de

usuarios que opinan sobre el tema de la salud en Colombia, dado que hay demasiada información

valiosa de por sí que no ha sido entendida y analizada.

Este proyecto propone una arquitectura de software que categorice estos mensajes entre

opiniones positivas, negativas y cuáles estarían en una categoría neutral, un tema complejo como

Page 57: Diseño de una arquitectura de software para el análisis de

57

el de la salud abordado desde el estudio del análisis de sentimientos para que de esta manera

ambos mundos se relacionan y se conecten con el conocimiento de porqué tecnología y sociedad

son cada vez más dependientes el uno del otro.

La ingeniería de software es el mundo de las ideas de aplicación, la de proveer conocimiento a

un sin fin de datos que por voluntad propia la sociedad quiere dar a conocer, aceptamos la

realidad tal y como es y desde lo que es el entendimiento de un producto de software como su

arquitectura y lo que esto implica nos movemos en un sentido a favor de lo que está a nuestro

alcance para dar un paso hacia adelante para ayudar al público en general, a la academia, al

gobierno y a los usuarios, a mostrar que está bien y que está mal, una voz un poco organizada,

menos distorsionada más coherente sobre lo que se lleva tiempo diciendo en las redes sociales y

nadie se ha parado a pensar, ¿Es positivo? ¿Es negativo? ¿Qué podemos hacer para seguir siendo

bueno, qué podemos hacer para cambiar lo que está mal?

3.3 Evaluación

La evaluación de la arquitectura de software planteada en esta investigación se hizo usando la

metodología ATAM (Architecture Tradeoff Analysis Method), es la metodología para evaluar

arquitecturas de Software que principalmente evalúan la adecuación de la arquitectura definida

con respecto a sus atributos de calidad.

A continuación, se pone en contexto la explicación del proceso realizado y los resultados de esta

evaluación.

3.3.1 Evaluación de la Arquitectura

El proceso realizado con la metodología de ATAM se realiza usando 4 fases. Los involucrados

para la aplicación de la metodología ATAM son los miembros de este proyecto de investigación:

Iván Mauricio Cabezas

Joan Romero

Juan Carlos Chaparro

Page 58: Diseño de una arquitectura de software para el análisis de

58

3.3.2 ATAM Definición de Fases

● Fase 0: Definición de tiempos, fechas, costos asociados, esfuerzos. Crear el equipo de

evaluación.

Las Fases 1 y 2 se organizan en 4 grupos, donde se realizan 9 pasos. A continuación, su

descripción:

● Fase 1:

Grupo 1:

○ Paso 1: Presentación de ATAM.

○ Paso 2: Presentación de las pautas del negocio.

○ Paso 3: Presentación de la arquitectura.

Grupo 2:

○ Paso 4: Identificar propuestas arquitectónicas.

○ Paso 5: Generar el árbol de utilidad de los atributos de calidad.

○ Paso 6: Analizar las propuestas arquitectónicas.

● Fase 2:

Grupo 3:

○ Paso 7: Lluvia de ideas.

○ Paso 8: Analizar las propuestas arquitectónicas.

Grupo 4:

○ Paso 9: Presentación de los resultados.

● Fase 3: Informe final de la evaluación realizada.

3.3.3 Resultados Metodología ATAM

Aplicando la metodología de ATAM para la evaluación de la arquitectura de software en la cual

se ha desarrollado esta investigación y haciendo énfasis que esta metodología fue complemento

del QAW desarrollado anteriormente se obtiene una lista de escenarios priorizados y las

diferentes propuestas arquitectónicas que los intentan satisfacer, a partir de los cuales se

descubrieron puntos de sensibilidad, de concesión, y riesgos asociados que fueron documentados

en los resultados del QAW en la sección 3.1.1 de este mismo documento.

Las propuestas arquitectónicas son una guía para tomar futuras decisiones, ya que se analizó su

impacto en la arquitectura y se enfoca en los requisitos de calidad que se han definido para el

sistema.

El método resultó muy útil para evaluar la arquitectura de software, se utilizó como un marco de

referencia hacia la metodología propuesta, se modificó y omitió lo que ya se tenía como parte del

Page 59: Diseño de una arquitectura de software para el análisis de

59

desarrollo del QAW. Esta metodología permitió un enfoque amplio del sistema pensando en el

largo plazo. Gracias a este enfoque se descubrieron posibles riesgos y oportunidades de mejora.

La metodología de ATAM se debe poder adaptar a las necesidades particulares de cada

negocio/producto de software, manteniendo los aspectos positivos detectados reutilizando los

componentes aplicados.

3.3.3.1 Conjunto de Escenarios Priorizados y Preguntas Asociadas

A. Se deben procesar todos los datos que sean descargados de manera periódica sin importar

el número que se recuperen.

Pregunta: ¿Qué tanta precisión se debe tener en cuenta al momento de hacer el análisis

de sentimientos?

B. Se debe poder modificar los parámetros para la descarga de la información de Twitter de

acuerdo con nuevas tendencias.

Pregunta: ¿Qué tan cambiante son las tendencias de Twitter respecto a temas de salud en

Colombia?

C. A medida que se tenga más información en la base de datos, el sistema podrá clasificar

mejor los datos de la red social, para identificar el sentimiento asociado.

Pregunta: ¿Qué tan grande debe ser la matriz de entrenamiento?

D. Se deben descargar los datos directamente de la plataforma Twitter de acuerdo a los

filtros que se necesiten.

Pregunta: ¿Cada cuanto tiempo se debe ejecutar esta acción?

Pregunta: ¿Será este un proceso automatizado con responsabilidad de ejecución por

parte del sistema operativo?

Page 60: Diseño de una arquitectura de software para el análisis de

60

3.3.3.2 Árbol de Utilidad

Tabla 3.11

Árbol de Utilidad resultante de ATAM

Atributo de Calidad Refinamiento del Atributo Escenarios

Escalabilidad ● Integración con

diferentes redes

sociales.

Se deben procesar todos los

datos que sean descargados de

manera periódica sin importar

el número que se recuperen.

A medida que se tenga más

información en la base de

datos, el sistema podrá

clasificar mejor los datos de

la red social, para identificar

el sentimiento asociado

Modificabilidad ● Configuración

Se debe poder modificar los

parámetros para la descarga

de la información de Twitter

de acuerdo con nuevas

tendencias

Desempeño (Performance) ● Tiempo de respuesta

● Latencia

Se deben descargar los datos

directamente de la plataforma

Twitter de acuerdo con los

filtros que se requieran.

La arquitectura de software diseñada y descrita en este documento como un sistema de análisis

de sentimientos para opiniones de usuarios sobre el tema de la salud en Colombia, satisface los

atributos de calidad según el proceso QAW complementado con ATAM anteriormente descrito.

Page 61: Diseño de una arquitectura de software para el análisis de

61

4. Observaciones Finales y Recomendaciones

La culminación de este proyecto plantea retos y sobre todo abre el camino para que se siga

trabajando en el contexto del análisis de sentimientos y su aplicación por medio de una

arquitectura de software que pueda ser usada para la aplicación constante de la ingeniería en un

entorno académico, social, publicitario, comercial o industrial.

4.1 Conclusiones

● El proceso del QAW junto con el ATAM dentro del contexto del diseño de arquitectura

de software define sus características y sus objetivos, basados en la definición técnica de

la intención del producto.

● De los diferentes clasificadores analizados y con el análisis realizado de acuerdo con el

contexto del tema salud en Colombia, se obtuvo que el clasificador SVM - Support

Vector Machine, dio mejor resultados al conjunto de entrenamiento obtenido y que es la

base para el posterior análisis de los datos descargados de Twitter, teniendo en cuenta que

las diferentes pruebas realizadas tuvieran resultados lo mayor uniformemente posibles.

● El análisis de sentimientos aplicado en el contexto colombiano en el idioma español

permite la inclusión de la tecnología para resaltar las opiniones de las personas que usan

medios digitales de información y opinión. Desde un punto de vista en ingeniería de

software esta investigación tiene en cuenta elementos teóricos y técnicos que permiten el

modelamiento y diseño una arquitectura que soporte y se ajuste para categorizar en

cuanto a su sentimiento asociado las opiniones de usuarios en la red social Twitter.

● El prototipo funcional basado en la arquitectura de software expuesta en este documento

de investigación es una muestra aplicada de cómo los conceptos de la ingeniería desde su

análisis, modelamiento y organización obtienen resultados que la industria y la academia

pueden seguir involucrando en sus procesos internos y de enseñanza respectivamente,

acorde a los cambios constantes en las herramientas y servicios que se usan y soportan la

construcción de aplicaciones Web interactivas.

● El prototipo funcional como resultado final de esta investigación, es la conjunción de la

teoría investigada en el marco teórico y las diferentes evaluaciones aplicadas a la

arquitectura de software que permiten hacer análisis de sentimientos. La librería externa

NLTK usada de acuerdo con todo el proceso de construcción y evaluación de la

arquitectura descrita en esta investigación, es la expresión misma de la academia en su

contexto de investigación y de la industria con su aplicación en una fuente de datos que

Page 62: Diseño de una arquitectura de software para el análisis de

62

permite reconocer la caracterización de las opiniones de usuarios con la prestación del

servicio de salud en Colombia.

4.2 Trabajos Futuros

Con la inclusión de artefactos externos como la conexión con bibliotecas de funciones para

análisis de sentimientos como NLTK del lenguaje de programación Python, los servicios API

REST de la red social Twitter, los servicios en la nube de hosting, y la comunicación con

componentes del prototipo funcional desarrollados a la medida de las características de esta

investigación, se da un paso importante para ampliar el rango de temas y datos que se pueden

extraer de Internet y para los cuales hay un sin fin de aplicaciones e investigaciones venideras

que transforman información desconectada en información coherente y con un sentido de

aplicabilidad en las decisiones a lo que estos datos conllevan.

Los datos fuentes que ayudaron a soportar este proyecto vinieron en particular de una red social,

en Internet existen muchas fuentes de información adicional y por ende el proceso de desarrollo

descrito en esta investigación permitirían el inicio de un observatorio complejo de análisis de

sentimientos sobre los datos compartidos por la sociedad moderna, este observatorio ayudaría a

impactar el esquema de salud Colombiano a la vez que se involucran más conceptos de

arquitecturas de software y metodologías de análisis y desarrollo para este tipo de proyectos

tecnológicos.

La metodología de evaluación desarrollada en este proyecto arrojó resultados concretos sobre el

algoritmo clasificador que mejor se adaptó a la fuente de datos. Con las restricciones que se

tenían como por ejemplo el idioma español y el tema de la salud en Colombia los entrenamientos

que se usaron para los clasificadores y los resultados obtenidos tal vez no sean los mismos si se

alteran las restricciones, por lo cual, se deja abierta la posibilidad de permitir el análisis de

sentimientos en nuevos temas con impactos de medición más cercanos, como lo puede ser las

elecciones presidenciales y su evaluación con respecto a los resultados de la investigación

después de las fechas de votación. Quedan sobre la mesa muy buenas ideas de hacer análisis de

sentimientos si se piensa en los insumos, dado que la arquitectura propuesta y su evaluación a

partir de esta investigación ya están armadas y solo están sujetas a su mejora continua en el

tiempo.

Como parte complementaria a este trabajo de investigación se va a crear un paper basado en este

proyecto de investigación para participar en el 13 Congreso Colombiano de Computación

(13CCC).

Page 63: Diseño de una arquitectura de software para el análisis de

63

5. Bibliografía

[1] M. Barbacci, R. Ellison, A. Lattanze, J. Stafford, C. Weinstock, and W. Wood, “Quality

Attribute Workshops (QAWs),” Pittsburgh, PA, 2003.

[2] L. O’Brien, P. Merson, and L. Bass, “Quality attributes for service-oriented

architectures,” in Proceedings of the international Workshop on Systems Development in

SOA Environments, 2007, p. 3.

[3] S. Bird and E. Loper, “NLTK: the natural language toolkit,” in Proceedings of the ACL

2004 on Interactive poster and demonstration sessions, 2004, p. 31.

[4] E. Camacho, F. Cardeso, and G. Nuñez, “Arquitecturas de software: gu{’\i}a de estudio,”

Apr-2004, 2004.

[5] N. V Chawla, “Data mining for imbalanced datasets: An overview,” in Data mining and

knowledge discovery handbook, Springer, 2009, pp. 875–886.

[6] F. M. P. del Arco, M. T. M. Valdivia, S. M. J. Zafra, M. D. M. González, and E. M.

Cámara, “COPOS: corpus of patient opinions in spanish. application of sentiment

analysis techniques,” Proces. del Leng. Nat., vol. 57, pp. 83–90, 2016.

[7] S. Floyd and M. Warmuth, “Sample compression, learnability, and the Vapnik-

Chervonenkis dimension,” Mach. Learn., vol. 21, no. 3, pp. 269–304, 1995.

[8] A. Go, R. Bhayani, and L. Huang, “Twitter sentiment classification using distant

supervision,” CS224N Proj. Report, Stanford, vol. 1, no. 12, 2009.

[9] A. Go, L. Huang, and R. Bhayani, “Twitter sentiment analysis,” Entropy, vol. 17, p. 252,

2009.

[10] T. Joachims, “Text categorization with support vector machines: Learning with many

relevant features,” in European conference on machine learning, 1998, pp. 137–142.

[11] D. Jurafsky and C. Manning, “Natural language processing,” Instructor, vol. 212, no.

998, p. 3482, 2012.

[12] R. Kazman, M. Klein, and P. Clements, “ATAM: Method for architecture evaluation,”

2000.

Page 64: Diseño de una arquitectura de software para el análisis de

64

[13] P. Kruchten, “Architectural blueprints—The ‘4+ 1’ view model of software architecture,”

Tutor. Proc. Tri-Ada, vol. 95, pp. 540–555, 1995.

[14] A. Kumar, “Software Architecture Styles: A Survey,” Int. J. Comput. Appl., vol. 87, no.

9, 2014.

[15] V. Labatut and H. Cherifi, “Accuracy measures for the comparison of classifiers,” arXiv

Prepr. arXiv1207.3790, 2012.

[16] E. Loper and S. Bird, “NLTK: The natural language toolkit,” in Proceedings of the ACL-

02 Workshop on Effective tools and methodologies for teaching natural language

processing and computational linguistics-Volume 1, 2002, pp. 63–70.

[17] W. Medhat, A. Hassan, and H. Korashy, “Sentiment analysis algorithms and applications:

A survey,” Ain Shams Eng. J., vol. 5, no. 4, pp. 1093–1113, 2014.

[18] R. Narayanan, B. Liu, and A. Choudhary, “Sentiment analysis of conditional sentences,”

Proc. 2009 Conf. Empir. Methods Nat. Lang. Process. Vol. 1 EMNLP 09, no. August, p.

180, 2009.

[19] C. Potts, “On the negativity of negation,” in Semantics and Linguistic Theory, 2010, vol.

20, pp. 636–659.

[20] M. Richards, Software architecture patterns. O’Reilly Media, Incorporated, 2015.

[21] M. Sokolova and G. Lapalme, “A systematic analysis of performance measures for

classification tasks,” Inf. Process. Manag., vol. 45, no. 4, pp. 427–437, 2009.

[22] F. Solms, “What is software architecture?,” in Proceedings of the South African Institute

for Computer Scientists and Information Technologists Conference, 2012, pp. 363–373.

[23] P.-N. Tan, M. Steinbach, and V. Kumar, “Classification: basic concepts, decision trees,

and model evaluation,” Introd. to data Min., vol. 1, pp. 145–205, 2006.

[24] S. Vijayarani, M. J. Ilamathi, and M. Nithya, “Preprocessing techniques for text mining-

an overview,” Int. J. Comput. Sci. Commun. Networks, vol. 5, no. 1, pp. 7–16, 2015.