HERRAMIENTA LA GENERACIÓN DE OPINIONEStauja.ujaen.es/bitstream/10953.1/9334/1/TFG_Juan... · Juan...
Transcript of HERRAMIENTA LA GENERACIÓN DE OPINIONEStauja.ujaen.es/bitstream/10953.1/9334/1/TFG_Juan... · Juan...
Esc
uela
Pol
itécn
ica
Sup
erio
r de
Lina
res
Grad
o en I
ngen
iería
Telem
ática Universidad de Jaén
Escuela Politécnica Superior de Linares
HERRAMIENTA PARA LA GENERACIÓN DE OPINIONES.
Alumno: Juan José Martos Muñoz
Tutor: Molina González, María Dolores
Depto.: Ingeniería de Telecomunicación
Octubre, 2018
Universidad de Jaén
Escuela Politécnica Superior de Linares
HERRAMIENTA PARA LA GENERACIÓN DE OPINIONES.
Alumno: Juan José Martos Muñoz
Tutor: Molina González, María Dolores
Depto.: Ingeniería de Telecomunicación
Firma del autor/a Firma del tutor/a
Juan José Martos Muñoz Herramienta para la generación de opiniones
ÍNDICE 1. RESUMEN 7 2. INTRODUCCIÓN 8
2.1. Motivación 8 2.2. Estructura del documento 9
3. OBJETIVOS 11 4. ESTADO DEL ARTE 12
4.1. Análisis de sentimientos 12 4.2. Niveles de minería de opinión 13 4.3. Portales web de opinión 14
5. MATERIALES Y MÉTODOS 23 5.1. Materiales 23 5.2. Estudio de posibles tecnologías para implementar la herramienta 23
5.2.1. Arquitectura web 23 5.2.2. Frontend 25 5.2.3. Backend 27
5.3. Tecnologías seleccionadas para implementar la herramienta 30 5.3.1. Arquitectura de la herramienta 30 5.3.2. FrontEnd de la herramienta 31 5.3.3. BackEnd de la herramienta 31 5.3.4. Sistema Operativo: MacOS 31
6. DESARROLLO 33 6.1. Diseño de datos 34
6.1.1. Modelo Entidad-Relación 34 6.1.2. Relaciones con el modelo 41
6.2. Diseño de la interfaz FrontEnd 44 6.2.1. Bootstrap 46
6.3. Diseño del BackEnd 46 6.3.1. Paquete OIL 46 6.3.2. Paquete AUTH 49 6.3.3. Gestión de usuarios 52 6.3.4. Definición de las páginas de inicio para cada tipo de usuario 53 6.3.5. Creación de nuevos usuarios 53 6.3.6. Gestión de las vistas 54
7. RESULTADOS Y DISCUSIÓN 57 8. CONCLUSIONES 58
8.1. Líneas de futuro 58 9. ANEXOS 60
9.1. Manual de instalación de la herramienta 60 9.1.1. Contenido del entregable 60 9.1.2. Requisitos mínimos 60 9.1.3. Instalación de dependencias 61
9.2. Manual de uso 64 9.2.1. Login 64 9.2.2. Registro 65
�5
Juan José Martos Muñoz Herramienta para la generación de opiniones
9.2.3. Administrador 66 9.2.4. Usuario básico 76
10. ÍNDICE DE FIGURAS 80 11. REFERENCIAS BIBLIOGRÁFICAS 81
�6
Juan José Martos Muñoz Herramienta para la generación de opiniones
1. RESUMEN
“La información es poder”: A lo largo de toda la historia se ha observado que la
información ha sido lo más demandado. Tener una gran cantidad de datos sobre cualquier
cosa hace que seamos la entidad o persona que más sabe de esta “cosa”. Hoy en día, con la
tecnología actual, tener una gran cantidad de datos no es complicado, lo realmente difícil
es tener la capacidad de analizar este gran volumen de datos, y aquí es donde aparece el
Big Data. El Big Data se encarga de almacenar y tratar grandes volúmenes de datos.
El proyecto consiste en crear una herramienta capaz de definir un interfaz donde
poder introducir opiniones textuales y valorar campos sobre cualquier entidad, desde una
Universidad a un puesto concreto en una empresa privada. Con la ayuda de esta
herramienta se podrían generar miles de opiniones, las cuales se podrían analizar después
con la ayuda del Big Data.
A lo largo de este documento se explicará cada una de las partes del proyecto, así
como una introducción y un manual de uso de la herramienta.
�7
Juan José Martos Muñoz Herramienta para la generación de opiniones
2. INTRODUCCIÓN
El desarrollo y la aparición de la Web 2.0, cuyo propósito principal fue el
intercambio ágil de información entre usuarios, ha hecho que el contenido que podemos
encontrar en internet crezca de forma exponencial en los últimos años. Si a esto le
añadimos la aparición de servicios que facilitan la comunicación y generación de
contenidos entre usuarios, el volumen de usuarios también incrementa de forma
exponencial.
Conocer la opinión de los demás es una fuente importante de información. Gracias
al auge de internet se ha observado la aparición de herramientas que permiten dar una
opinión, desde foros, blogs e incluso redes sociales. Esto ha abierto una gran oportunidad
de saber que opina la sociedad con solo navegar por internet. Los usuarios son ahora una
fuente de información constante en multitud de sectores como son la publicidad, política,
deportes, tecnología, turismo, etc.
En este trabajo se ha desarrollado una herramienta para la generación de opiniones
sobre cualquier entidad. Para ello ha sido necesario realizar un estudio previo de los
diferentes portales web existentes que nos permiten generar opiniones. La herramienta
desarrollada nos permite generar opiniones sobre cualquier entidad, añadida con
anterioridad en ella, ver las opiniones y valoraciones añadidas por otros usuarios y extraer
esta información en formato CSV.
2.1. Motivación
Al ser el conocimiento de la opinión de los demás una fuente importante de
información, el objetivo de las empresas es generar conocimiento a partir de todo esto.
Conocimiento que les permita mejorar la toma de decisiones ya no solo partiendo de sus
propios datos, sino también de las opiniones y valoraciones de los clientes en la web. Si a
esto le añadimos el auge de las Tecnologías de la Información y la Comunicación (TIC), la
forma de interactuar entre las personas y la sociedad ha cambiado totalmente. Infinidad de
�8
Juan José Martos Muñoz Herramienta para la generación de opiniones
plataformas web reemplazan los métodos tradicionales por nuevos capaces de interactuar
con los usuarios y que están basados en las experiencias de ellos.
La motivación principal por la cual he escogido este proyecto, ha sido querer
estudiar y analizar algo diferente a lo que he realizado en mi trayectoria académica, y este
tema me parecía bastante interesante. Poder crear una herramienta capaz de generar
opiniones y poder profundizar en el análisis de sentimientos es algo que jamás hubiese
imaginado. En definitiva, mi motivación consiste en aprovechar esta última oportunidad
que me ofrece la universidad para aprender algo nuevo y ayudar con el uso de esta nueva
herramienta.
2.2. Estructura del documento
El presente documento conforma la memoria final de mi trabajo fin de grado para
la titulación Grado en Ingeniería Telemática de la Universidad de Jaén.
A lo largo de este, mostraremos la metodología usada para crear una herramienta
capaz de generar corpus de opiniones textuales y almacenarlas en una base de datos para su
posterior extracción. La memoria se ha estructurado en diez apartados, en los que trato de
explicar el trabajo realizado. A continuación, expondré los diferentes apartados:
En los primeros tres apartados, se realiza un Resumen del trabajo, explicamos la
Motivación que nos lleva a realizarlo y los Objetivos de este.
En el apartado cuarto, se encuentra el Estado del arte, donde hacemos un resumen
sobre qué es el análisis de sentimientos y los distintos niveles que posee, además de
comentar algunos sitios web actuales que nos permiten introducir opiniones en distintos
ámbitos.
En el apartado quinto mencionamos los Materiales, las Herramientas de desarrollo
y lenguajes utilizados.
�9
Juan José Martos Muñoz Herramienta para la generación de opiniones
En el apartado sexto describimos el Desarrollo de la herramienta explicando el
código generado.
En los apartados séptimo y octavo realizaremos un Análisis de los resultados
obtenidos a partir de los Objetivos establecidos inicialmente y el Desarrollo del trabajo,
además de las Conclusiones alcanzadas al finalizar el trabajo.
En el apartado noveno se encuentran los Anexos. En ellos aparece un manual de
instalación y un manual de uso de la herramienta.
Y por último, en los apartados décimo y undécimo tenemos un Índice de figuras y
una Bibliografía donde aparecen todas las referencias utilizadas.
�10
Juan José Martos Muñoz Herramienta para la generación de opiniones
3. OBJETIVOS
A continuación se detallan los objetivos del trabajo de fin de grado:
- Estudiar en qué consiste el Análisis de Opiniones y su importancia.
- Realizar un estudio de diferentes herramientas que permiten introducir
opiniones.
- Desarrollar una herramienta para la inserción de opiniones y valoraciones de
campos relacionadas con una entidad en general.
- Redactar una memoria que recoja todo el trabajo desarrollado así como los
manuales de instalación y de usuario.
�11
Juan José Martos Muñoz Herramienta para la generación de opiniones
4. ESTADO DEL ARTE
4.1. Análisis de sentimientos
El análisis de sentimientos, también conocido como minería de opinión, es el
proceso de determinar el tono emocional que hay detrás de una palabra, oración o
documento y se utiliza para intentar entender las actitudes, opiniones y emociones
expresadas en una mención online (la actitud puede ser el estado emocional del autor al
momento de escribir, o el efecto emocional que el autor intenta causar en el lector) [23].
Desde el punto de vista de la minería de textos, el análisis de sentimientos es una
tarea de clasificación masiva de documentos escritos en un lenguaje natural de manera
automática, en función de la connotación positiva o negativa del lenguaje. Estos
tratamientos generalmente se basan en relaciones estadísticas y de asociación, no en
análisis lingüístico. Esta tarea a veces resulta muy complicada debido a que en ocasiones
es difícil incluso poner de acuerdo a diferentes anotadores humanos sobre la clasificación a
asignar a un texto dado. La interpretación personal de un individuo es diferente de la de los
demás, y además se ve afectada por factores culturales y experiencias propias de cada
persona. Esta tarea es aún más complicada cuanto más corto sea el documento escrito y
peor escrito esté, como es el caso de los mensajes en redes sociales tipo twitter [21].
Hoy en día se habla de dos enfoques para intentar solventar el análisis de
sentimientos [22].
1. Enfoque semántico: Los cuales se caracterizan por el uso de diccionarios de
términos con orientación semántica de polaridad u opinión. Los sistemas preprocesan el
texto y lo dividen en palabras, y luego comprueban la aparición de los términos en el
diccionario para asignar el valor de polaridad del texto mediante la suma de valores de
polaridad de los términos. Normalmente estos sistemas además incluyen un tratamiento
más o menos avanzado de términos modificadores (muy, poco, demasiado…) que
aumentan o reducen la polaridad del o los términos a los que acompañan, y términos
�12
Juan José Martos Muñoz Herramienta para la generación de opiniones
inversores o negadores (no, tampoco, apenas, ningún…), que invierten la polaridad de los
términos a los que afectan.
2. Por otra parte, se encuentran los enfoques basados en aprendizaje
computacional. Los cuales consisten en entrenar un clasificador usando un algoritmo de
aprendizaje supervisado a partir de una colección de textos anotados, donde cada texto
habitualmente se representa con un vector de palabras o n-gramas, en combinación con
otro tipo de características semánticas que intentan modelar la estructura sintáctica de las
frases, la intensificación, la negación, la subjetividad o la ironía. Los sistemas utilizan
diversas técnicas, aunque las mas populares son los clasificadores basados en SVM
(Support Vector Machines), Naive Bayes y KNN (K-Nearest Neighbor). En las
investigaciones más recientes se han empezado a utilizar otras técnicas más avanzadas,
como LSA (Latent Semantic Analisis) e incluso Deep Learning.
4.2. Niveles de minería de opinión
Las tareas de minería de opinión se pueden clasificar en función del nivel en el que
se realiza. Existen tres niveles, el nivel de documento, nivel de oración y el nivel de
característica [20].
• Nivel de documento
A nivel de documento, la clasificación de sentimientos de documentos en
polaridades positivas, negativas y neutrales se hace asumiendo que cada documento se
centra en un único objeto y contiene la opinión de un único titular de opinión.
• Nivel de oración
En el nivel de la oración, la identificación de oraciones subjetivas u obstinadas
entre el corpus se hace clasificando los datos en texto objetivo (falta de opinión) y
subjetivo u obstinado. Posteriormente, la clasificación del sentimiento de las oraciones
�13
Juan José Martos Muñoz Herramienta para la generación de opiniones
antes mencionadas se hace moviendo cada oración a clases positivas, negativas y neutrales.
También en este nivel, suponemos que una oración contiene solo una opinión que, como en
nuestros niveles anteriores, no es cierta en muchos casos.
• Nivel de característica
En el nivel de característica, las diversas tareas que se miran son:
- Tarea 1: identificar y extraer las características del objeto que se han comentado en
cada revisión / texto.
- Tarea 2: determinar si las opiniones sobre las características son positivas, negativas o
neutrales.
- Tarea 3: agrupar sinónimos de características y producir un resumen de opinión basado
en revisiones de características.
Si bien la detección de identidad del titular de opinión no suele ser posible en el
contenido generado por el usuario, resulta útil en casos donde, por ejemplo, la fuente es un
artículo de noticias. También es una tarea de la Minería de datos conocer el autor, edad,
sexo, profesión, etc, para en muchos casos conocer sus gustos, tendencias y enfoques.
Hoy en día existen muchas plataformas que nos permiten dar nuestra opinión en
diferentes campos, como son la medicina, hostelería, turismo, etc. A continuación, vamos a
mostrar unos ejemplos de algunos portales que nos permiten la capacidad de opinar con el
fin de conocer lo que se configura a la hora de poder crear una interfaz donde se den
opiniones.
4.3. Portales web de opinión
Entre todos los portales conocidos hablaremos sobre TripAdvisor, Mimedicamento
y Masquemedicos.
�14
Juan José Martos Muñoz Herramienta para la generación de opiniones
TripAdvisor
TripAdvisor es uno de los sitios web de viajes más grande del mundo. Ayuda a los
viajeros a aprovechar el máximo potencial de cada viaje. Con más de 630 millones de
opiniones y comentarios sobre más de 7,5 millones de alojamientos, compañías aéreas,
experiencias y restaurantes, que forman la selección de perfiles sobre viajes más grande del
mundo. TripAdvisor proporciona a los viajeros la sabiduría de las masas para ayudarles a
decidir dónde alojarse, cómo volar, qué actividades hacer y dónde comer. Además,
TripAdvisor compara los precios de más de 200 sitios web de reserva para que los viajeros
puedan encontrar el precio más bajo de su hotel ideal. Los sitios con la marca TripAdvisor
están disponibles en 49 mercados diferentes y albergan la comunidad de viajeros más
grande del mundo con 455 millones de visitantes únicos al mes, que buscan cómo sacar el
máximo partido a sus viajes [17].
Figura 1. Portada de Tripadvisor. Fuente: www.tripadvisor.es
Dentro de esta plataforma, al buscar el alojamiento, compañía aérea, experiencia o
restaurante que deseemos, nos aparece un resumen indicando cosas de interés sobre nuestra
búsqueda, además de una valoración general de todas las opiniones que se encuentran en la
�15
Juan José Martos Muñoz Herramienta para la generación de opiniones
plataforma. Por otro lado, nos muestra ejemplos similares de la búsqueda realizada y las
opiniones añadidas por los usuarios.
Figura 2. Apartado “Opiniones” de Tripadvisor. Fuente: www.tripadvisor.es
Añadir una opinión es tan fácil como buscar el alojamiento, compañía aérea,
experiencia o restaurante que deseemos y dentro del apartado “Opiniones” pulsar en
“Escribe una opinión”. La plataforma nos redirecciona a un cuestionario elaborado,
dependiendo de lo que estemos opinando. En las siguientes dos imágenes podemos ver un
ejemplo del tipo de preguntas que nos realiza la plataforma acerca de nuestra estancia en
un hotel.
�16
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 3. Añadir una opinión en Tripadvisor. Fuente: www.tripadvisor.es
Figura 4. Añadir una opinión en Tripadvisor (2). Fuente: www.tripadvisor.es
�17
Juan José Martos Muñoz Herramienta para la generación de opiniones
Mimedicamento
Figura 5. Portada de Mimedicamento. Fuente: www.mimedicamento.es
Mimedicamento es un producto de Insight Pharma Service BV, una empresa con
sede en los Países Bajos y fundada por una farmacéutica [18].
Mimedicamento consta de una página web independiente en la que el paciente y
sus experiencias con los medicamentos son lo primero. Cualquier persona puede dar su
opinión sobre su(s) medicina(s). Además, se puede consultar las experiencias de otros por
medicina o agrupadas por categoría. Con esto se le permite comparar medicinas de la
misma categoría de forma rápida y global [18].
�18
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 6. Leer experiencia Mimedicamento. Fuente: www.mimedicamento.es
Con Mimedicamento se forma una idea de la satisfacción total de otros, de la
eficacia y de los efectos secundarios de un agente determinado de un grupo de medicinas y
se le puede ayudar ocasionalmente en la búsqueda de una medicina (alternativa) [18].
En el menú principal de la plataforma, nos encontramos con el apartado “da tu
opinión”. Este nos permite añadir todas las opiniones que se deseen acerca de cualquier
medicamento. Mimedicamento divide este apartado en cuatro pasos, donde se selecciona la
medicina sobre la que vamos a opinar, se añade una valoración sobre algunos aspectos
como son la eficacia, la cantidad de efectos secundarios y si es fácil de ingerir o utilizar,
una experiencia personal y nuestros datos personales, como se puede observar en la Figura
7.
�19
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 7. Añadir opinión Mimedicamento. Fuente: www.mimedicamento.es
Masquemedicos
Figura 8. Portada Masquemedicos. Fuente: www.masquemedicos.com
�20
Juan José Martos Muñoz Herramienta para la generación de opiniones
Dentro de este sector, también cabe destacar masquemedicos.com. Masquemedicos
es una web privada e independiente y su misión es poner a disposición de los usuarios la
información más completa sobre servicios médicos privados, públicos y asociados a
seguros médicos [19].
La web ofrece tres utilidades básicas:
– Muestra las clínicas más cercanas a la dirección que el usuario elija.
– Permite filtrar por seguro médico.
– Permite opinar y ver las valoraciones de otros usuarios sobre sus servicios
(se pueden compartir a través de Facebook).
Al realizar una búsqueda sobre alguna especialidad o un doctor en concreto, la
plataforma nos permite pedir cita y publicar nuestra opinión. A continuación, en la
siguiente imagen vemos un ejemplo del tipo de preguntas que nos realiza la plataforma
para añadir una opinión en ella. Podemos ver que nos pregunta acerca de las cosas
positivas y negativas de nuestra experiencia y un campo de valoración acerca de la
puntualidad, atención al cliente, precio, lista de espera, etc.
Figura 9. Ejemplo de añadir una opinión. Fuente: www.masquemedicos.com
�21
Juan José Martos Muñoz Herramienta para la generación de opiniones
Después de observar estos tres portales web, nos hacemos una idea de la estructura
de una posible interfaz para ingresar opiniones que es el objetivo del trabajo fin de grado.
�22
Juan José Martos Muñoz Herramienta para la generación de opiniones
5. MATERIALES Y MÉTODOS
En este apartado, se nombrarán los materiales necesarios para el desarrollo de
nuestro trabajo de fin de grado, además de las posibles tecnologías para implementar
nuestra herramienta haciendo hincapié en las seleccionadas para llevar a cabo nuestro
trabajo.
5.1. Materiales
Para la realización del proyecto se necesita lo siguiente:
-Equipo informático.
-Entorno de desarrollo.
-Acceso a internet.
5.2. Estudio de posibles tecnologías para implementar la herramienta
En este apartado se comentarán las diferentes arquitecturas y tecnologías FrontEnd
y BackEnd posibles con las que implementar la herramienta planteada en este trabajo.
5.2.1. Arquitectura web En este apartado comentaremos dos posibles arquitecturas web con las que
desarrollar nuestra herramienta.
Cliente-servidor
La arquitectura cliente-servidor consiste básicamente en un cliente que realiza
peticiones a otro programa (el servidor) que le da respuesta. Aunque esta idea se puede
aplicar a programas que se ejecutan sobre un solo ordenador es más ventajosa en un
sistema operativo multiusuario distribuido a través de una red de ordenadores. La
interacción cliente-servidor es el soporte de la mayor parte de la comunicación por redes.
�23
Juan José Martos Muñoz Herramienta para la generación de opiniones
Ayuda a comprender las bases sobre las que están construidos los algoritmos distribuidos
[1].
Figura 10. Arquitectura Cliente-Servidor.Fuente: https://bit.ly/2yzffYM
MVC
El MVC o Modelo-Vista-Controlador es un patrón de arquitectura de software que,
utilizando 3 componentes (Vistas, Modelos y Controladores) separa la lógica de la
aplicación de la lógica de la vista en una aplicación. Es una arquitectura importante puesto
que se utiliza tanto en componentes gráficos básicos hasta sistemas empresariales; la
mayoría de los frameworks modernos utilizan MVC (o alguna adaptación del MVC) para
la arquitectura [2].
�24
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 11. Esquema MVC. Fuente: https://bit.ly/2p8O5nr
5.2.2. Frontend
En este apartado comentaremos tres posibles tecnologías FrontEnd que se podrían
emplear en el desarrollo de nuestra herramienta.
Jquery
JQuery es una librería de JavaScript (JavaScript es un lenguaje de programación
muy usado en desarrollo web). Esta librería de código abierto, simplifica la tarea de
programar en JavaScript y permite agregar interactividad a un sitio web sin tener
conocimientos del lenguaje [3].
Basados en esta librería, existe una infinita cantidad de plugins (gratis y de pago)
creados por desarrolladores de todo el mundo. Estos plugins resuelven situaciones
concretas dentro del maquetado de un sitio, por ejemplo: un menú responsive, una galería
de fotos, un carrousel de imágenes, un slide, un header que cambia de tamaño, el
deslizamiento del scroll al hacer clic en un botón (anclas HTML), la transición entre
páginas y miles de efectos más [3].
�25
Juan José Martos Muñoz Herramienta para la generación de opiniones
Cada plugin tiene un sitio web desde donde se pueden descargar sus archivos, con
demos, instrucciones para su implementación, opciones de configuración e información de
las licencias. En la web hay cientos de blogs que recopilan y analizan los plugins según sus
funcionalidades, reuniendo en un sólo post los links a varios plugins de función similar, lo
que facilita mucho la búsqueda [3].
Bootstrap
Bootstrap es un framework desarrollado y liberado por Twitter que tiene como
objetivo facilitar el diseño web. Permite crear de forma sencilla webs de diseño adaptable,
es decir, que se ajusten a cualquier dispositivo y tamaño de pantalla y siempre se vean
igual de bien. Es Open Source o código abierto, por lo que lo podemos usar de forma
gratuita y sin restricciones. Una de las ventajas de utilizar Bootstrap es que permite
simplificar el proceso de maquetación, sirviéndonos de guía para aplicar las buenas
prácticas y los diferentes estándares [4].
AngularJS
AngularJS (comúnmente llamado Angular.js o AngularJS 1), es un framework de
JavaScript de código abierto, mantenido por Google, que se utiliza para crear y mantener
aplicaciones web de una sola página. Su objetivo es aumentar las aplicaciones basadas en
navegador con capacidad de Modelo Vista Controlador (MVC), en un esfuerzo para hacer
que el desarrollo y las pruebas sean más fáciles.
La biblioteca lee el HTML que contiene atributos de las etiquetas personalizadas
adicionales, entonces obedece a las directivas de los atributos personalizados, y une las
piezas de entrada o salida de la página a un modelo representado por las variables estándar
de JavaScript. Los valores de las variables de JavaScript se pueden configurar
manualmente, o recuperados de los recursos JSON estáticos o dinámicos [5].
�26
Juan José Martos Muñoz Herramienta para la generación de opiniones
5.2.3. Backend
En este apartado comentaremos tres posibles tecnologías BackEnd que se podrían
emplear en el desarrollo de nuestra herramienta.
Python
Python es un lenguaje de scripting independiente de plataforma y orientado a
objetos, preparado para realizar cualquier tipo de programa, desde aplicaciones Windows a
servidores de red o incluso, páginas web. Es un lenguaje interpretado, lo que significa que
no se necesita compilar el código fuente para poder ejecutarlo, lo que ofrece ventajas como
la rapidez de desarrollo e inconvenientes como una menor velocidad.
Se pueden crear todo tipo de programas. No es un lenguaje creado específicamente
para la web, aunque entre sus posibilidades sí se encuentra el desarrollo de páginas. Es
multiplataforma, interpretado e interactivo [6].
PHP
PHP es un lenguaje de programación de uso general de código del lado del
servidor. Originalmente fue diseñado para el desarrollo web de contenido dinámico. Está
actualmente entre los proyectos de código abierto más populares (gracias en parte a la
similitud de su sintaxis con el lenguaje C). El código es interpretado por un servidor web
con un módulo procesador de PHP que genera la página Web resultante.
Figura 12. Imagen logo PHP. Fuente: www.loopeando.com
�27
Juan José Martos Muñoz Herramienta para la generación de opiniones
Básicamente, PHP permite a páginas estáticas convertirse en dinámicas (aunque es
mucho más que eso). El nombre "PHP" es un acrónimo que significa "PHP: Hypertext
Preprocessor", en español "PHP: Preprocesador de hipertexto". La palabra "hipertexto"
significa que PHP realiza cambios antes de que el contenido (como la página HTML) sea
creado. Esto permite a desarrolladores crear potentes aplicaciones que publiquen blogs,
controlen hardware remotamente o ejecuten potentes sitios web como Wikipedia o
Wikilibros [7].
Java
Java es un lenguaje de programación de propósito general, concurrente, orientado a
objetos que fue diseñado específicamente para tener tan pocas dependencias de
implementación como fuera posible. Su intención es permitir que los desarrolladores de
aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido
en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código
que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java
es, a partir de 2012, uno de los lenguajes de programación más populares en uso,
particularmente para aplicaciones de cliente-servidor de web, con unos 10 millones de
usuarios reportados [8].
Su sintaxis deriva en gran medida de C y C++, pero tiene menos utilidades de bajo
nivel que cualquiera de ellos. Las aplicaciones de Java son generalmente compiladas a
bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin
importar la arquitectura de la computadora subyacente [8].
A continuación, hablaremos sobre tres posibles sistemas de gestión de bases de
datos que se podrían emplear en el desarrollo de nuestra herramienta.
�28
Juan José Martos Muñoz Herramienta para la generación de opiniones
• MariaDB
MariaDB es un sistema de gestión de bases de datos derivado de MySQL con
licencia GPL (General Public License). Es desarrollado por Michael (Monty) Widenius
(fundador de MySQL), la fundación MariaDB y la comunidad de desarrolladores de
software libre. Introduce dos motores de almacenamiento nuevos, uno llamado Aria -que
reemplaza con ventajas a MyISAM- y otro llamado XtraDB -en sustitución de InnoDB.
Tiene una alta compatibilidad con MySQL ya que posee las mismas órdenes, interfaces,
APIs y bibliotecas, siendo su objetivo poder cambiar un servidor por otro directamente.
MariaDB es un fork directo de MySQL que asegura la existencia de una versión de este
producto con licencia GPL [9].
• MYSQL
MySQL es un sistema de administración de bases de datos (Database Management
System, DBMS) para bases de datos relacionales. Así, MySQL no es más que una
aplicación que permite gestionar archivos llamados de bases de datos.
Existen muchos tipos de bases de datos, desde un simple archivo hasta sistemas
relacionales orientados a objetos. MySQL, como base de datos relacional, utiliza múltiples
tablas para almacenar y organizar la información. MySQL fue escrito en C y C++ y destaca
por su gran adaptación a diferentes entornos de desarrollo, permitiendo su interactuación
con los lenguajes de programación más utilizados como PHP, Perl y Java y su integración
en distintos sistemas operativos.
También es muy destacable, la condición de open source de MySQL, que hace que
su utilización sea gratuita e incluso se pueda modificar con total libertad, pudiendo
descargar su código fuente. Esto ha favorecido muy positivamente en su desarrollo y
continuas actualizaciones, para hacer de MySQL una de las herramientas más utilizadas
por los programadores orientados a Internet [10].
�29
Juan José Martos Muñoz Herramienta para la generación de opiniones
• MongoDB
MongoDB (de la palabra en inglés “humongous” que significa enorme) es un
sistema de base de datos NoSQL orientado a documentos, desarrollado bajo el concepto de
código abierto.
MongoDB forma parte de la nueva familia de sistemas de base de datos NoSQL.
En lugar de guardar los datos en tablas como se hace en las base de datos relacionales,
MongoDB guarda estructuras de datos en documentos similares a JSON con un esquema
dinámico (MongoDB utiliza una especificación llamada BSON), haciendo que la
integración de los datos en ciertas aplicaciones sea más fácil y rápida [11].
5.3. Tecnologías seleccionadas para implementar la herramienta
Una vez estudiadas las posibles tecnologías con las que implementar nuestra
herramienta, decidimos escoger las siguientes para el desarrollo de la herramienta
propuesta en este trabajo. El nombre que utilizamos para la plataforma será “Evaluame”.
5.3.1. Arquitectura de la herramienta
Hoy en día las aplicaciones web se emplean en muchos ámbitos y son muy
heterogéneas. Debido a esto hay distintas soluciones al elegir una arquitectura. Lo común
es emplear un conjunto de ellas.
En nuestro caso, hemos optado por emplear el modelo MVC implementado por el
framework utilizado (FuelPHP), que divide sus funciones entre cliente y servidor, para así
conseguir una mayor modularidad que nos permitirá un mejor mantenimiento y
escalabilidad de cara a posibles nuevas versiones o correcciones.
�30
Juan José Martos Muñoz Herramienta para la generación de opiniones
Algunas de las comunicaciones entre los elementos del backend y el frontend se
realizarán mediante peticiones AJAX, puesto que nos ofrecen la posibilidad de establecer
comunicaciones asíncronas entre el cliente y servidor sin la necesidad de una recarga de
página.
5.3.2. FrontEnd de la herramienta
Para el desarrollo de la parte de frontend, hemos optado por emplear la librería
jQuery debido a su simplicidad a la hora de que el usuario interactúe con la herramienta.
Por otro lado, se empleará la librería Bootstrap, que nos dará un comportamiento
responsive de la herramienta, es decir, nos permitirá una correcta visualización desde
cualquier dispositivo que sea empleado para acceder a la plataforma.
5.3.3. BackEnd de la herramienta
Para el desarrollo de la parte de backend, se podría emplear cualquier tecnología
mencionada anteriormente, pero en nuestro caso hemos optado por emplear el lenguaje de
programación PHP ayudándonos de su framework FuelPHP en su versión más reciente, ya
que es una tecnología bastante estable y potente, que además nos proporciona una
autenticación segura y, gracias a su paquete ORM, nos facilita el manejo de las consultas
con la base de datos.
5.3.4. Sistema Operativo: MacOS
MacOS es un sistema BSD ( Berkeley Software Distribution), que es un sistema
operativo derivado de Unix, por esto guarda una especial relación co GNU/Linux.
Cumplen los mismos estándares, aunque sus códigos son totalmente distintos. Elegimos
este sistema operativo ya que nos proporciona un entorno agradable de desarrollo y es
cómodo para trabajar. Por otro lado, es bastante seguro y tiene una buena fluidez.
�31
Juan José Martos Muñoz Herramienta para la generación de opiniones
La última versión lanzada por Apple es la 10.14 “Mojave” y se encuentra
disponible desde el 25 de septiembre de 2018. El desarrollo de la herramienta ha sido
realizado desde la versión anterior 10.13.5 “High Sierra”, disponible desde el 25 de
septiembre de 2017.
�32
Juan José Martos Muñoz Herramienta para la generación de opiniones
6. DESARROLLO
En este apartado detallaremos todo lo relacionado al diseño e implementación de la
herramienta propuesta.
Para empezar, descargamos el entorno de programación Netbeans, con las
herramientas de PHP.
Figura 13. Descargar Netbeans. Fuente: www.netbeans.org
Después obtenemos fuelphp de la pagina oficial como se muestra en la Figura 14.
FuelPHP usa Composer, tanto para la instalación como para dependencias de paquetes.
Hay que asegurarse de que se ha instalado composer localmente antes de continuar, ya que
los métodos de instalación que se describen a continuación dependen de que estén
presentes. La instalación de Composer se encuentra en https://getcomposer.org/download .
�33
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 14. Página de descarga de FuelPHP. Fuente: www.fuelphp.com
Existen dos formas de instalar fuelPHP. La primera utilizando el paquete Oil, y la
segunda, empleando composer.
6.1. Diseño de datos
6.1.1. Modelo Entidad-Relación
Los datos se almacenaran en una base de datos relacional. Para crear esta base de
datos, y después, conectar nuestro proyecto con ella, empleamos phpmyadmin, que se
encuentra en la instalación de MAMP.
Para acceder a phpmyadmin, cuando iniciamos MAMP, aparece una página de
inicio como se ve en la Figura 15.
Desde esta página de inicio, en el menú, aparece “tools” y hay un enlace a
phpMyAdmin. También podemos escribir http://localhost/phpMyAdmin/ en la barra de
navegación de nuestro navegador.
�34
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 15. Página de inicio MAMP.
Seleccionamos “Bases de datos” en el menú de arriba, colocamos el nombre que
deseemos ponerle a nuestra nueva base de datos y pulsamos en crear.
Figura 16. Crear base de datos desde phpMyAdmin.
�35
Juan José Martos Muñoz Herramienta para la generación de opiniones
Puesto que el entorno que vamos a utilizar para el desarrollo es “development”,
modificamos los archivos de configuración de development. Estos se encuentran en /app/
config/development .
Figura 17. Extracto de código db.php.
Aquí configuramos la conexión con la base de datos, colocamos el nombre de la
base de datos, usuario y contraseña de phpmyadmin.
A partir de aquí ya tenemos el proyecto básico y procedemos al análisis de nuestra
aplicación web y desarrollo de nuestro modelo de datos.
Representamos la base de datos utilizando el modelo E/R (Figura 18), basado en
representar los datos como entidades, relaciones y atributos en un diagrama. A
continuación, se verá con más detalle cada una de las tablas, relaciones y atributos
existentes.
Fuel crea una serie de tablas para almacenar una sesión y todos los elementos
necesarios del paquete auth para realizar la autenticación. Estas tablas son: migration,
sessions, user, user_clients, user_groups, user_group_permissions, user_group_roles,
user_metadata, user_permissions, user_providers, user_roles, user_role_permissions,
user_scopes, user_sessions, user_sessionscopes, user_user_permissions y user_user_roles.
�36
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 18. Modelo de datos de “Evaluame”
Tras analizar qué necesitamos en nuestro proyecto llegamos a la conclusión de que
son necesarias las siguientes tablas.
TABLAS
Clients: Tabla donde se almacenan los usuarios que van a dar su opinión.
-id [INT]: Clave primaria de la tabla.
-name [VARCHAR(255)]: Atributo en el que se almacena el nombre del usuario.
-age [DATE]: Atributo en el que se almacena la edad del usuario.
-gender [VARCHAR(20)]: Atributo en el que se almacena el sexo del usuario.
-profession [VARCHAR(255)]: Atributo en el que se almacena el oficio del
usuario.
-status [INT]: Atributo en el que se almacena el estado del usuario (1=activado,
0=desactivado ).
�37
Juan José Martos Muñoz Herramienta para la generación de opiniones
-user_id [INT]: Clave ajena de la tabla “user”, generada automáticamente por el
paquete auth de fuel para gestionar los usuarios de la plataforma.
-created_at [INT]: Atributo en el que se almacena un timestamp del momento en
el que se añade una nueva fila a la tabla.
-updated_at [INT]: Atributo en el que se almacena un timestamp del momento en
el que se actualiza una fila de la tabla.
Entities: Tabla donde se almacenan las entidades sobre las que se va a opinar.
-id: Clave primaria de la tabla.
-name: Atributo en el que se almacena el nombre de la entidad a opinar.
-city: Atributo en el que se almacena la ciudad en la que se encuentra la entidad a
opinar.
-closed: Atributo en el que se almacena si una entidad se encuentra cerrada o no
( 0 = abierta, 1 = cerrada).
-provinces_id: Clave ajena de la tabla “provinces”, donde se almacena el id de la
provincia en la que se encuentra la entidad a opinar.
-created_at: Atributo en el que se almacena un timestamp del momento en el que
se añade una nueva fila a la tabla.
-updated_at: Atributo en el que se almacena un timestamp del momento en el que
se actualiza una fila de la tabla.
Fields: Tabla donde se almacenan los campos sobre los que se va a opinar.
-id: Clave primaria de la tabla.
-name: Atributo en el que se almacena el nombre del campo sobre el que se va a
opinar.
-entities_id: Clave ajena de la tabla “entities”, donde se almacena el id de la
entidad a la que se asocia el campo sobre el que se va a opinar.
-created_at: Atributo en el que se almacena un timestamp del momento en el que
se añade una nueva fila a la tabla.
-updated_at: Atributo en el que se almacena un timestamp del momento en el que
se actualiza una fila de la tabla.
�38
Juan José Martos Muñoz Herramienta para la generación de opiniones
Opinions: Tabla donde se almacenan las opiniones.
-id: Clave primaria de la tabla.
-title: Atributo en el que se almacena el título de la opinión.
-comment: Atributo en el que se almacena el comentario de la opinión.
-date: Atributo en el que se almacena la fecha de la opinión.
-general_satisfaction: Atributo en el que se almacena la satisfacción general de la
opinión.
-entities_id: Clave ajena de la tabla “entities”, donde se almacena el id de la
entidad que está asociada a la opinión.
-clients_id: Clave ajena de la tabla “clients”, donde se almacena el id del usuario
que ha generado la opinión.
-created_at: Atributo en el que se almacena un timestamp del momento en el que
se añade una nueva fila a la tabla.
-updated_at: Atributo en el que se almacena un timestamp del momento en el que
se actualiza una fila de la tabla.
Opinions_has_fields: Tabla donde se almacenan las opiniones de los diferentes campos de
cada entidad.
-id: Clave primaria de la tabla.
-opinions_id: Clave ajena de la tabla “opinions”, donde se almacena el id de la
opinión.
-fields_id: Clave ajena de la tabla “fields”, donde se almacena el id del campo a
opinar.
-value: Atributo en el que se almacena la valoración del campo a opinar.
-created_at: Atributo en el que se almacena un timestamp del momento en el que
se añade una nueva fila a la tabla.
-updated_at: Atributo en el que se almacena un timestamp del momento en el que
se actualiza una fila de la tabla.
Provinces: Tabla donde se almacenan las provincias
�39
Juan José Martos Muñoz Herramienta para la generación de opiniones
-id: Clave primaria de la tabla.
-name: Atributo en el que se almacena el nombre de la provincia.
-created_at: Atributo en el que se almacena un timestamp del momento en el que
se añade una nueva fila a la tabla.
-updated_at: Atributo en el que se almacena un timestamp del momento en el que
se actualiza una fila de la tabla.
Ya con el modelo de datos definido, creamos los elementos necesarios del MVC
( modelo, vista, controlador). Para ello, fuel nos facilita las tareas repetitivas con su
paquete oil. Con su comando “generar” podemos crear controladores, modelos,
migraciones y vistas, entre otras cosas.
Lo utilizaremos, particularmente, para generar modelo, vista y controlador de cada
entidad de nuestro modelo de base de datos, exceptuando la tabla “provinces”, de la que
solo crearemos su modelo.
Para ello emplearemos la función scaffold, dentro del paquete oil generate:
$ php oil generate scaffold nombre_de_la_entidad nombre_atributo1:tipo
nombre_atributo2:tipo
Esto nos generará el modelo, vista y controlador de la entidad elegida. Los tipos
utilizados en nuestro caso serán: int, varchar, date y float. Si queremos indicar el tamaño
exacto del atributo podemos introducirlo poniéndolo entre corchetes tras el tipo de dato, si
no se introduce un tamaño se coloca uno por defecto. Ej: varchar[1000].
Para la tabla provinces, puesto que solo necesitamos el modelo, emplearemos la
función model como se indica a continuación.
$ php oil generate model provinces name:varchar
�40
Juan José Martos Muñoz Herramienta para la generación de opiniones
Con esto se generará automáticamente el modelo para gestionar las provincias en
nuestro proyecto. Como nota, los atributos id, created_at y update_at se generan
automáticamente al emplear estos comandos.
6.1.2. Relaciones con el modelo
El siguiente paso es crear las relaciones entre los modelos. Gracias al paquete ORM
de fuel, esto es sencillo. Fuel admite 4 tipos de relaciones, de las cuales, nosotros
emplearemos solo 3. Las relaciones en nuestro modelo de datos son todas de 1:N,
exceptuando la relación entre las tablas “opinions” y “fields”, que es una relación N:N.
Para crear las relaciones necesitamos considerar un par de aspectos. Por un lado, en
la base de datos necesitamos un campo que permita identificar cada registro de forma
única. Como norma suele usarse el campo ‘id’, que guarda un valor INT que va
incrementándose automáticamente con cada nuevo registro. Así nos aseguramos que el
valor dado al nuevo registro siempre es diferente al valor de todos los registros de la tabla
creados hasta el momento.
Por otro, una vez creados la forma de identificar registros en cada tabla, debemos
indicar por código la relación que queremos establecer entre ambas tablas. Crearemos esta
relación a través de los modelos asociados a las tablas.
Dado que una relación siempre afectará a dos entidades (es decir dos tablas),
tendremos que definir la relación en ambos modelos. A continuación explicaremos
ejemplos para cada tipo de relación diferente.
Has many
�41
Juan José Martos Muñoz Herramienta para la generación de opiniones
Usaremos estas relaciones cuando tengamos que un registro de una entidad (1) está
asociado a muchos registros de otra entidad (2), y que cada registro de la otra entidad (2)
pertenece sólo a uno de la primera entidad (1).
Ejemplo:
Supongamos dos entidades Opinions y Entities.
Una opinión sólo pertenece a una (belongs to) entidad, pero una entidad puede
tener muchas (has many) opiniones.
Model_Entity: definimos que una entidad puede tener muchas opiniones.
protected static $_has_many = array(
'opinions'=> array(
'key_from' => 'id',
'model_to' => 'Model_Opinion',
'key_to' => 'entities_id',
'cascade_save' => true,
'cascade_delete' => false,
),
);
Model_Opinion: definimos que una opinión pertenece a una entidad.
protected static $_belongs_to = array(
'entities' => array(
'key_from' => 'entities_id',
'model_to' => 'Model_Entity',
'key_to' => 'id',
'cascade_save' => false,
'cascade_delete' => false,
),
);
�42
Juan José Martos Muñoz Herramienta para la generación de opiniones
Many to many
En este caso tendremos que a cada registro de una entidad (1) le corresponden
muchos registros de otra entidad (2), y que a cada registro de la otra entidad (2) le
corresponden muchos registros de la entidad (1).
En este caso excepcionalmente, tendré que crear una tabla que permita guardar la
asociación entre registros de diferentes tablas.
Ejemplo:
Supongamos dos entidades ‘Opinions’ y ‘Fields’. Una opinión puede tener muchos
(has many) campos. Un campo puede pertenecer a muchas opiniones.
Model_Opinion:
protected static $_many_many = array(
'fields'=> array(
'key_from' => 'id',
'key_through_from'=>'opinions_id',
'table_through' => 'opinions_has_fields',
'key_through_to' => 'fields_id',
'model_to' => 'Model_Field',
'key_to' => 'id',
'cascade_save' => true,
'cascade_delete' => false,
)
);
Model_field:
protected static $_many_many = array(
�43
Juan José Martos Muñoz Herramienta para la generación de opiniones
'opinions'=> array(
'key_from' => 'id',
'key_through_from'=>'fields_id',
'table_through' => 'opinions_has_fields',
'key_through_to' => 'opinions_id',
'model_to' => 'Model_Opinion',
'key_to' => 'id',
'cascade_save' => true,
'cascade_delete' => false,
)
);
6.2. Diseño de la interfaz FrontEnd
En cuanto al diseño de la interfaz FrontEnd de la herramienta, hemos optado por
algo sencillo y, a su vez, muy intuitivo. Se realizaron unos mockups en sucio y a papel, de
más o menos la idea que tenía en mente sobre el diseño estético de la herramienta.
Figura 19. Opiniones Index.
�44
Juan José Martos Muñoz Herramienta para la generación de opiniones
Partiendo de un archivo css, que nos sirve de plantilla, utilizado en otros proyectos
(vanadistemplate.css), efectuamos todos los cambios necesarios para ajustarnos a nuestro
diseño.
En el diseño cabe destacar la clasificación con estrellas usada para las valoraciones.
Para ello, hemos empleado un plugin de JQuery llamado “star-rating-svg”. Este plugin está
formado por un archivo JS, encargado de dar la funcionalidad, y un archivo CSS,
encargado de darle el estilo en forma de estrellas. Ambos archivos se encuentran en la
carpeta “/fuelphp/public/assets” dentro del proyecto.
Esta clasificación con estrellas se ha empleado en dos casos distintos: El primero,
solo para visualizar las valoraciones ya insertadas en la plataforma, como es el caso del
índex de opiniones. Y el segundo, para valorar los distintos campos de valoración de las
entidades insertadas en la plataforma. Este caso se puede observar al añadir una opinión en
la plataforma.
Para ambos casos, ha sido necesario incluir la siguiente línea en el código HTML,
en la que insertamos una caja con la clase “my-rating” .
<td><div class=“my-rating”></div></td>
Esta caja se nutre con el siguiente código javascript:
<script type="text/javascript">
$(".my-rating").starRating({
initialRating: <?php echo $item->general_satisfaction; ?>,
strokeColor: '#894A00',
strokeWidth: 10,
starSize: 25,
disableAfterRate: false,
readOnly:true,
�45
Juan José Martos Muñoz Herramienta para la generación de opiniones
callback: function(currentRating, $el){
console.log('rated ' + currentRating);
console.log('DOM element ', $el);
console.log($el[0]['id']);
}
});
</script>
Este código es el usado en el caso de visualizar las valoraciones ya insertadas en la
plataforma. El plugin usado tiene unas propiedades, que son las siguientes.
-initialRating: Sería la calificación inicial que se aplica en la carga del plugin.
-strokeColor: Define el color de los bordes.
-strokeWidth: Define el grosor del borde.
-starSize: Define el ancho en píxeles de cada estrella.
-disableAfterRate: Elimina la valoración cuando seleccionamos una nueva
valoración.
-readOnly: Si es falso, cualquier interacción está deshabilitada.
-callback: Función que se ejecuta al seleccionar una valoración.
6.2.1. Bootstrap
Con la ayuda de Bootstrap, estos mockups a papel fueron cogiendo forma y dieron
lugar a las vistas que actualmente tiene la herramienta. Para ello ha sido necesario el uso de
la clase container, las clases que gestionan las tablas y las de los tamaños de los divs, entre
otras.
6.3. Diseño del BackEnd
6.3.1. Paquete OIL
�46
Juan José Martos Muñoz Herramienta para la generación de opiniones
Oil es un comando de paquete especial que se puede usar de varias formas para
facilitar el desarrollo rápido. Oil tiene varias funciones: Generar: compila componentes
MVC, migraciones y scaffold completos. Refinar: ejecuta tareas como migrar y tareas
propias personalizadas. Paquete: instala, actualiza y elimina paquetes. Consola: te permite
probar tu código en tiempo real utilizando un shell interactivo. Prueba: ejecuta pruebas de
PHPUnit. Servidor: ejecuta FuelPHP utilizando el servidor web incorporado PHP 5.4+
[15].
Se puede observar si el paquete oil se encuentra disponible poniendo:
$php oil -v , en consola. Si nos devuelve: Fuel: 1.7.3 running in "development" mode.
Significa que el paquete oil se encuentra activo y corre en el entorno “development”.
Una vez tenemos fuelPHP descargado, procedemos a crear un nuevo proyecto
usando el paquete oil. Para ello colocamos el siguiente comando.
$ php oil create <project_name>
Esto creará una carpeta en el directorio en el que se encuentra con el nombre del
proyecto proporcionado. Luego clonará el repositorio y todos los submódulos en ese
directorio. Como nota, esto también ejecutara $ php oil refine install que hace que los
directorios necesarios puedan escribirse, y $ composer update para obtener las
dependencias de composer definidas.
Definimos como entorno por defecto “development”, para ello colocamos la
siguiente línea en consola.
$ SetEnv FUEL_ENV development
�47
Juan José Martos Muñoz Herramienta para la generación de opiniones
Cuando tenemos nuestro nuevo proyecto, procedemos a modificar los archivos de
configuración de este. Estos se encuentran en app/config/config.php . Este archivo se tiene
que quedar como se muestra a continuación.
<?php
return array(
'language' => 'es', // Default language
'language_fallback' => 'en', // Fallback language when file isn't available for default
language
'locale' => 'es_ES.UTF-8',//'es_ES.UTF-8', // PHP set_locale() setting, null to not set
'locales' => array(
'es' => 'es_ES.UTF-8',
'en' => 'en_US.UTF-8'
),
'default_timezone' => 'Europe/Madrid',
'log_threshold' => Fuel::L_DEBUG,
'security' => array(
'uri_filter' => array('htmlentities'),
'output_filter' => array('Security::htmlentities'),
'whitelisted_classes' => array(
'Fuel\\Core\\Presenter',
'Fuel\\Core\\Response',
'Fuel\\Core\\View',
'Fuel\\Core\\ViewModel',
'Fuel\Core\Validation',
'Closure',
),
),
'package_paths' => array(
PKGPATH,
�48
Juan José Martos Muñoz Herramienta para la generación de opiniones
),
'always_load' => array(
'packages' => array(
'orm',
'auth',
'email',
),
),
);
En este archivo de configuración seleccionamos el lenguaje, la zona horaria por
defecto y los paquetes que se cargan( en nuestro caso los paquetes orm, email y auth), entre
otras cosas [15].
6.3.2. Paquete AUTH
El siguiente paso es utilizar el paquete auth. El paquete Auth proporciona una
interfaz estandarizada para la autenticación en Fuel. Esto permite escribir nuestro propio
controlador e integrar fácilmente un nuevo controlador para trabajar con código antiguo al
mantener los métodos básicos consistentes. Crear un paquete de autenticación que se
adapte a todos o a cada implementación es imposible. El framework, no fuerza cómo hacer
la autenticación, facilita crear una propia configuración o usar alguna ya creada. Aquí es
donde entra el paquete Auth [16].
La interfaz contiene 3 tipos de controladores (que pueden ampliarse a más tipos):
inicio de sesión, grupo y ACL. Los controladores de inicio de sesión manejan un inicio de
sesión de usuario y pueden manejar múltiples controladores de inicio de sesión al mismo
tiempo. Por ejemplo, uno podría hacer posible que los usuarios inicien sesión a través de
Twitter y sus propios usuarios nativos al mismo tiempo utilizando 2 controladores de inicio
de sesión. Como siguiente paso, puede agrupar esos 2 tipos de inicios de sesión usando un
�49
Juan José Martos Muñoz Herramienta para la generación de opiniones
controlador de grupo que no se preocupa por el tipo de inicio de sesión que está utilizando.
Y por último, pero no menos importante, puede usar un controlador ACL para otorgar
derechos específicos a esos grupos [16].
Los paquetes Auth vienen con dos conjuntos de controladores que proporcionan
acceso local, usando una o más tablas de base de datos.
Existen dos tipos de Autenticación empleando el paquete AUTH que se explicarán
a continuación.
Simpleauth
Como el mismo nombre indica, este es un conjunto básico de controladores. Utiliza
una tabla de base de datos para almacenar la información del usuario y un archivo de
configuración para almacenar información sobre grupos, roles y ACL. Almacena los
metadatos del usuario en una matriz serializada en el registro del usuario. No tiene mucha
funcionalidad, pero para la mayoría de las aplicaciones puede ser suficiente [16].
Ormauth
Ormauth es un conjunto de controladores de autenticación y autorización que
proporcionan una funcionalidad similar a Simpleauth, pero almacena sus datos en la base
de datos en lugar de almacenarlos en un archivo de configuración. Se accede a los datos a
través de modelos ORM [16].
Además de esto, también viene con funcionalidad adicional. A diferencia de
Simpleauth, Ormauth admite roles asignados directamente a los usuarios y permisos
asignados tanto a usuarios como a grupos, lo que permite un sistema de permisos mucho
más preciso. Almacena los metadatos del usuario no en una matriz serializada, sino en una
tabla de metadatos separada, utilizando la funcionalidad EAV de ORM, que le permite
acceder a los metadatos como cualquier otra propiedad del usuario. También realiza un
�50
Juan José Martos Muñoz Herramienta para la generación de opiniones
seguimiento del tiempo de inicio de sesión anterior, que se puede mostrar al usuario en el
momento del inicio de sesión como una medida de seguridad adicional [16].
El paquete Auth contiene los archivos de migración necesarios para crear las
estructuras de tabla necesarias para estos controladores. Utiliza el archivo de configuración
de autenticación para determinar qué crear, por lo que debe ser configurado primero [16].
En las Figuras 20a y 20b se puede ver la configuración que hemos escogido.
Figura 20a. Extracto de código ormauth.php
�51
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 20b. Extracto de código ormauth.php
6.3.3. Gestión de usuarios
En nuestro proyecto tenemos definidos hasta siete tipos de usuarios diferentes, de
lo cuales solo usaremos dos (Superadministrator users y basic users). Podemos encontrar
l a s c o n s t a n t e s a s o c i a d a s a e s t o s t i p o s d e u s u a r i o s e n e l m o d e l o
“Model_Vanadistemplateuser” que se encontrará en la ruta ‘fuel/app/classes/model/
vanadistemplateuser.php’.
Usaremos los usuarios ‘superadministrator’ para definir aquellos usuarios que
tienen todos los permisos y acceso total a todas las vistas y, por otro lado, usaremos los
“basic users” con acceso parcial a las vistas, como los clientes de la herramienta.
�52
Juan José Martos Muñoz Herramienta para la generación de opiniones
6.3.4. Definición de las páginas de inicio para cada tipo de usuario
En la mayoría de las ocasiones nos interesará asignar una página de inicio diferente
en función del tipo de usuario que se conecte. Entendemos por página de inicio, la primera
página que se mostrará a un usuario cuando acceda al panel de administración.
La definición de las páginas de inicio viene determinada en el
‘Controller_Privateuser’ por las constantes:
- SUPERADMINUSER_DEFAULT_REDIRECT: página de inicio para usuarios
‘superadministrator’.
- BASICUSER_DEFAULT_REDIRECT: página de inicio para usuarios ‘basic’.
6.3.5. Creación de nuevos usuarios
Para la creación de nuevos usuarios usaremos tareas. Como explicaremos más
adelante, las tareas facilitan la creación de procesos repetitivos, como puede ser la creación
de usuarios.
Encontramos los archivos de tareas en la ruta ‘fuel/app/tasks’. En este caso nos
interesa el archivo ‘createuser.php’.
Con este archivo podremos crear un usuario por consola de comandos utilizando el
paquete OIL integrado en FuelPHP. Para utilizar este paquete, será necesario acceder a la
carpeta raíz de nuestro proyecto en FuelPHP, es decir la ruta donde se encuentra la carpeta
‘fuel’.
Una vez en esta ruta, ejecutamos el siguiente comando:
$php oil refine createuser username email password group_id
�53
Juan José Martos Muñoz Herramienta para la generación de opiniones
Si ejecutamos hasta “createuser” se crearía el usuario administrador por defecto que
tenemos en nuestra plataforma ( estas credenciales se citan más tarde en el Manual de uso
de la herramienta).
6.3.6. Gestión de las vistas
En este apartado explicaremos cómo podemos gestionar las vistas que pueden ver
los usuarios dependiendo del tipo al que correspondan. En este aspecto, están involucrados
dos controladores.
- Controller_Admin: permite redireccionar a la vista que nos interese.
- Controller_Privateuser: permite definir las vistas permitidas que tiene cada tipo
de usuario.
Así que veremos dos puntos importantes dentro de la gestión de vistas, como son la
Redirección de vistas y la Definición de vistas permitidas.
Redirecciones a vistas del backend
De todo lo referente a redirecciones se encarga el Controller_Admin. Este
controlador tiene dos funciones principales.
- Redirección a páginas de inicio: será la página que mostramos a un usuario tras
loguearse. Dependiendo del tipo de usuario conectado, así mostraremos una
página u otra. De esto se encarga la función ‘action_index’. Resultará
especialmente útil cuando queramos que cada tipo de usuario sea redireccionado
a una página diferente. Podemos ver la vista inicial que tendrá cada tipo de
usuario en ‘action_index’ del Controller_Admin.
- Redirección a las páginas de las opciones del menú: antes de llegar a la página de
destino, cabe la posibilidad de indicar si queremos realizar alguna tarea previa.
�54
Juan José Martos Muñoz Herramienta para la generación de opiniones
De esto se encarga la función ‘action_manage’. Usaremos esta función para
especificar acciones concretas antes de ir a la vista destino. En la mayoría de
ocasiones nos limitaremos a redireccionar sin hacer nada previamente, pero si
quisiéramos tendríamos la opción de elegir hacer algo antes de ir a la vista final.
Definición de vistas permitidas para cada tipo de usuario
Las definimos en el Controller_Privateuser. En este controlador definimos las
funciones que permiten seleccionar qué vistas puede ver cada tipo de usuario. Cada vista
vendrá definida por una constante que guardará su URL local asociada.
Cabe mencionar que las vistas que necesitan recibir un parámetro forzosamente
para funcionar correctamente, deben terminar en ‘/’. Un buen ejemplo serían las vistas
‘view’ y ‘edit’, ya que siempre debemos indicar el ‘id’ del registro que queremos ver o
editar respectivamente.
Una vez definidas las constantes con las vistas accesibles de nuestro backend, es
necesario asociar a cada tipo de usuario las que tiene permiso para ver. Esto lo hacemos en
los arrays [tipodeusuario]_options_allowed, donde tipo de usuario podrá ser
superadministrator o basic.
- [tipodeusuario]_options_allowed: guarda las vistas a las que tiene acceso el tipo de
usuario. En este array basta ir añadiendo las diferentes vistas separadas por comas:
static public $basicuser_options_allowed = array (
Controller_Privateuser::BASICUSER_INDEX,
Controller_Privateuser::A_INDEX,
Controller_Privateuser::C_INDEX,
Controller_Privateuser::D_INDEX,
Controller_Privateuser::E_INDEX,
Controller_Privateuser::F_INDEX,
�55
Juan José Martos Muñoz Herramienta para la generación de opiniones
Controller_Privateuser::OPINIONS_INDEX,
Controller_Privateuser::OPINIONS_VIEW,
Controller_Privateuser::OPINIONS_EDIT,
Controller_Privateuser::OPINIONS_CREATE,
Controller_Privateuser::OPINIONS_DELETE,
Controller_Privateuser::CLIENTS_INDEX,
Controller_Privateuser::CLIENTS_VIEW,
Controller_Privateuser::CLIENTS_EDIT,
);
�56
Juan José Martos Muñoz Herramienta para la generación de opiniones
7. RESULTADOS Y DISCUSIÓN
En este apartado realizaremos un análisis de los resultados obtenidos a partir de los
objetivos establecidos inicialmente y el desarrollo del trabajo. El objetivo principal es la
elaboración de una herramienta capaz de generar opiniones sobre una entidad cualquiera, y
poder extraer esta información para conformar un corpus de datos.
Una vez analizada la plataforma, observamos que la herramienta desarrollada nos
permite generar opiniones de los campos a opinar y las entidades añadidas con anterioridad
en esta. Como parte de los objetivos iniciales, también vemos que tenemos la posibilidad
de extraer estas valoraciones en formato CSV para la posterior formación de un corpus de
datos.
Un aspecto importante a la hora de querer añadir una opinión sobre una entidad es
que esta entidad debe encontrarse “cerrada”. Es decir, se debe de quitar la posibilidad de
añadir nuevos campos a opinar una vez creada la primera opinión sobre una entidad. La
plataforma controla esto desde la ventada de edición de una entidad. Aquí podemos
cerrarla, y una vez cerrada no podemos volver a abrirla. Esto es importante porque si la
entidad no pudiese ser “cerrada” de alguna forma, podrían existir valoraciones sobre la
misma entidad con diferentes campos a valorar, y esto haría que las opiniones se creasen
en base a campos distintos por lo que no estaríamos valorando igual una entidad.
�57
Juan José Martos Muñoz Herramienta para la generación de opiniones
8. CONCLUSIONES
En este apartado se expondrán las conclusiones alcanzadas al finalizar el trabajo.
Desde el punto de vista de los resultados obtenidos, podemos considerar alcanzados
los objetivos iniciales del trabajo. La herramienta cumple los requisitos establecidos de
poder añadir opiniones sobre diferentes entidades. Todo ello a través de una herramienta
funcional e intuitiva.
Las tecnologías empleadas para desarrollar nuestra herramienta, también se
consideran acertadas, destacando nuestro framework fuelPHP que ha facilitado muchas
labores copiosas y nos ha permitido implementar una herramienta completa a la hora de
introducir opiniones y generar corpus textuales.
Por otro lado, el desarrollo de una herramienta capaz de generar opiniones sobre
cualquier entidad, proporciona una visión de potencial enorme puesto que en diferentes
ámbitos una herramienta con estas cualidades nos ayuda y facilita labores de análisis e
investigación a la hora de obtener las opiniones y valoraciones de cualquier persona.
Por último, al añadir aspectos en el desarrollo relacionados con el frontend y
backend, estos nos han ofrecido una visión completa del desarrollo de la herramienta.
Gracias a esto, se nos facilita el análisis global de posibles soluciones a los problemas que
se han ido planteando, por ejemplo, la forma de valorar los distintos campos sobre una
entidad cualquiera, que se ha optado por utilizar una librería de jQuery junto a un archivo
de CSS.
8.1. Líneas de futuro
De cara a una nueva versión de la herramienta, a continuación se describen
brevemente algunos puntos que se podrían mejorar.
�58
Juan José Martos Muñoz Herramienta para la generación de opiniones
1. Se podría revisar y mejorar el comportamiento de la herramienta en dispositivos
más pequeños.
2. En todos los campos de filtrado de los interfaces se podría hacer que estos
filtrados se realicen de forma automática al añadir texto o seleccionar opciones de
los desplegables.
3. Se podría mejorar la extracción de los datos en formato CSV o buscar algún otro
formato para la extracción de datos.
�59
Juan José Martos Muñoz Herramienta para la generación de opiniones
4. ANEXOS
4.1. Manual de instalación de la herramienta
En este apartado se describirán los pasos necesarios para instalar la herramienta
desarrollada. Para la instalación de la herramienta tendremos que montar el proyecto en
local. Necesitaremos una máquina apache, una base de datos y tener php instalado en
nuestro equipo.
4.1.1. Contenido del entregable
Hemos optado por almacenar la parte software de este trabajo en la plataforma
GitHub. Esto nos permite alojar nuestro proyecto utilizando un sistema de control de
versiones llamado Git.
Teniendo git instalado en nuestro equipo clonar el proyecto desde GitHub es tan
sencillo como ejecutar la siguiente línea desde un terminal situándonos en “/opt/lampp/
htdocs/“.
$ Clone https://github.com/juanjosemartos/evaluame.git evaluame
En caso de no tener Git instalado en nuestro equipo, más abajo en el apartado de
“Instalación de dependecias”, se explica cómo hacerlo.
4.1.2. Requisitos mínimos
Como requisitos mínimos, se recomienda que el equipo sobre el que se instale la
herramienta tenga como mínimo las siguientes características:
- CPU: Intel Core i3 con al menos 2,3GHz.
- Memoria: 4GB de RAM.
�60
Juan José Martos Muñoz Herramienta para la generación de opiniones
- Espacio libre en el disco duro: 5GB
- Sistema operativo: Ubuntu 16.04
4.1.3. Instalación de dependencias
En este apartado se describe la instalación de componentes externos a la
herramienta, y que son necesarios para su funcionamiento.
En primer lugar actualizaremos el pc. Abrimos un terminal e introducimos las
siguientes líneas.
$ Sudo apt-get upgrade
$ Sudo apt-get update
Con esto actualizaremos la lista de paquetes disponibles y sus versiones de los
servidores con repositorios por defecto en nuestro sistema operativo linux, además, de
actualizar dichos paquetes e instalar las nuevas versiones cuando sea posible.
VI
VI es un editor de texto necesario para modificar los archivos de configuración
mencionados más adelante. Si no está instalado/actualizado a su última versión,
ejecutaremos las siguientes líneas en un terminal.
Sudo apt-get install vim
Sudo apt-get update
�61
Juan José Martos Muñoz Herramienta para la generación de opiniones
XAMPP
Como hemos explicado anteriormente para la instalación de la herramienta
tendremos que montar el proyecto en local. Necesitaremos una máquina apache, una base
de datos y tener php instalado en nuestro equipo. Hemos optado por instalar XAMPP, ya
que es una herramienta que nos proporciona todo esto a la vez.
Desde la página oficial https://www.apachefriends.org/download.html descargamos
la versión que tiene php 5.6.32. Emplearemos el instalador para instalar XAMPP en
nuestro equipo. Para ello en botón derecho->propiedades->permisos, hay que activar la
opción de permitir ejecutar el archivo como un programa. Después, desde consola
ejecutamos el archivo y seguimos los pasos de instalación hasta que esta finalice.
Una vez instalado XAMPP en nuestro equipo, procederemos a configurarlo. Para
ello utilizaremos VI. En primer lugar, procederemos a configurar el archivo “httpd.conf”,
situado en “/opt/lampp/etc/httpd.conf”. Donde añadiremos el siguiente directorio.
#directory for evaluame
<Directory "/opt/lampp/htdocs/evaluame/fuelphp/public">
#Options +Indexes FollowSymLinks +ExecCGI
AllowOverride AuthConfig FileInfo Options
#FCGIWrapper /opt/local/bin/php-cgi .php
Allow from all
Order Deny,Allow
</Directory>
Una vez añadido el directorio, descomentaremos la línea de configuración que
activa el archivo de configuración de virtual host, que será el siguiente que configuraremos
( Include … httpd-vhosts.conf).
�62
Juan José Martos Muñoz Herramienta para la generación de opiniones
En el mismo nivel en el que encontramos el archivo http.conf habrá una carpeta
llamada “extras”. Dentro de ella se encuentra el archivo “httpd-vhosts-conf”. Utilizando vi,
añadiremos las siguientes líneas.
#evaluame
<VirtualHost *:80>
DocumentRoot "/opt/lampp/htdocs/evaluame/fuelphp/public"
ServerName evaluame
ServerAlias uransi.local
ErrorLog "/var/log/apache2/evaluame-error.log"
CustomLog “/var/log/apache2/evaluame-access.log" common
</VirtualHost>
Por último, deberemos configurar el archivo “hosts” situado en “/etc/hosts”.
Añadiremos la siguiente línea:
127.0.0.1 evaluame.local
De esta forma cuando coloquemos “evaluame.local” en la barra de navegación de
nuestro navegador, este nos redireccionará a nuestro proyecto virtualmente.
Git
Para comprobar si tenemos Git instalado en nuestro equipo, ejecutamos la siguiente
línea en un terminal.
$ git —version
Si tenemos instalado git, nos aparecerá la versión qué tenemos instalada. En caso
contrario, no se reconocerá el comando. En este caso, instalamos git ejecutando la
siguiente línea en un terminal.
�63
Juan José Martos Muñoz Herramienta para la generación de opiniones
$ Sudo apt-get install git
Después de esto, comprobamos si git se ha instalado correctamente en nuestro
equipo con el la línea de comprobación mencionada anteriormente.
BBDD
Por otro lado, deberemos cargar la base de datos. Para ello emplearemos
phpmyadmin que viene con XAMPP. Importaremos la base de datos que se encuentra
como un archivo adjunto .sql .
Una vez realizados todos estos pasos, colocando “evaluame.local” en la barra de
navegación de nuestro navegador, deberíamos de tener acceso a nuestro proyecto.
4.2. Manual de uso
Una vez que tenemos la herramienta instalada, pasamos a describir el uso de
dicha herramienta.
4.2.1. Login
Al acceder a la plataforma, esta nos redirecciona automáticamente a la pantalla de
“login” tal y como se ve en la siguiente imagen:
�64
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 21. Pantalla de login.
4.2.2. Registro
Desde la pantalla de login, nos encontramos también con : "¿Nuevo en Evaluame?
Registrese ahora.” Este texto nos redirecciona a la pantalla de registro, desde la cual
podremos registrarnos como Usuario Básico en la plataforma. Para ello tendremos que
introducir nuestro correo electrónico y contraseña. La contraseña hay que introducirla dos
veces, esta debe ser la misma y en el lateral izquierdo aparece un texto informativo acerca
de esta.
�65
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 22. Pantalla de registro.
Podemos acceder a la plataforma con dos roles diferentes: Administrador y usuario
básico.
4.2.3. Administrador
Por defecto se encuentra el siguiente usuario administrador de la plataforma.
Correo: [email protected]
Contraseña: evaluame
Al acceder a la plataforma desde la página de login, en la parte superior se
encuentra el menú principal, desde donde podemos acceder a los apartados Opiniones,
Entidades, Campos y Clientes. En la parte superior derecha, se encuentra también el email
del usuario logeado y un pequeño menú desplegable desde donde podemos deslogearnos
de la plataforma.
�66
Juan José Martos Muñoz Herramienta para la generación de opiniones
Interfaz de opiniones
Una vez ingresadas nuestras credenciales en la plataforma, accedemos automáticamente al
apartado de “opiniones”, donde podemos observar todas las opiniones que se encuentran
en la plataforma (título, entidad, fecha y satisfacción general).
• Panel de filtrado
Debajo del título del apartado, centrado se encuentra un filtrado por texto y por
desplegable. El filtrado por texto busca por título de opinión y el despegable filtra por
entidades.
• Panel de exportación
Más abajo del panel de filtrado, tenemos un botón llamado “Export to CSV” que se
encarga de exportar todas las opiniones en un archivo CSV.
• Panel de evaluación
A la derecha del panel de exportación se encuentra una evaluación media de todas
las satisfacciones generales de las opiniones. Si filtramos por una entidad en concreto, este
valor se auto calcula de nuevo y nos muestra la media de las satisfacciones generales de las
opiniones de la entidad filtrada.
• Panel de visualización
Por último, nos encontramos con una tabla en la que se encuentran todas las
opiniones. A la derecha de cada opinión hay dos botones (ver y borrar) con los cuales
podemos ver en detalle la opinión o borrarla.
En la imagen de abajo podemos ver la pantalla de ver en detalle una opinión de ejemplo.
�67
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 23. Pantalla ver detalle opinión de ejemplo.
Al intentar borrar una opinión nos aparece un mensaje de confirmación.
Interfaz de Entidades
En segundo lugar en el menú nos aparece “Entidades”. Para usar la plataforma este
es el primer apartado que hay que visitar, puesto que nos permite añadir las entidades sobre
las que deseamos crear opiniones.
�68
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 24. Pantalla Entidades Index.
• Añadir entidades
Debajo del nombre de la sección aparece un botón de “añadir entidad” que nos permite
añadir una nueva entidad a la plataforma.
�69
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 25. Pantalla Añadir Entidad.
Para ello, como se ve en la imagen superior, hay que insertar nombre, provincia y
ciudad.
• Panel de filtrado
En medio, centrado, aparece un desplegable que filtra por nombre de entidad.
• Panel de visualización
Y por último, nos aparece una tabla con todas las entidades insertadas en la
plataforma (Nombre, provincia y ciudad). A la derecha de cada entidad aparecen tres
botones: Ver, editar y borrar.
�70
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 26. Pantalla Ver en detalle entidad.
Ver nos permite ver en detalle la entidad. Borrar nos permite borrar la entidad tras
aceptar un mensaje de confirmación.
Figura 27. Pantalla Editar Entidad
�71
Juan José Martos Muñoz Herramienta para la generación de opiniones
Editar nos permitirá editar la entidad. En este último apartado, nos aparece también
un botón de “cerrar entidad”. La opción de cerrar entidad debe de estar marcada si se desea
poder añadir opiniones sobre esta. IMPORTANTE: Una vez cerrada una entidad no puede
volver a abrirse.
Interfaz de campos
En tercer lugar en el menú nos aparece “Campos”. Este apartado nos permite añadir
campos de valoración sobre una entidad. Para ello necesitamos anteriormente haber
añadido la entidad a la plataforma desde el apartado “Entidades” y esta entidad no debe de
estar cerrada.
Figura 28. Pantalla Campos Index.
• Añadir campos
Arriba aparece un botón “Añadir Campo” que nos permite añadir los campos a valorar
sobre las entidades.
�72
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 29. Pantalla Añadir Campos.
Para añadir el campo, solo hay que insertar un nombre y la entidad a la que va
asociado este campo de valoración.
• Panel de filtrado
Debajo del botón de añadir campo, centrado, aparece un filtrado de texto por
nombre de campos de valoración y un filtrado desplegable por entidad.
• Panel de visualización
Por último, aparece una tabla con todos los campos añadidos a la plataforma. A la
derecha de cada uno de estos campos, aparecen tres botones: ver, editar y borrar.
�73
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 30. Pantalla Ver Campo en Detalle.
Ver nos permite ver el campo en detalle, Editar nos permite editar este campo y
borrar nos permite borrar el campo tras aceptar un mensaje de confirmación.
Interfaz de clientes
En cuarto y último lugar en el menú, nos aparece “Clientes”. Desde donde podemos
gestionar los usuarios que hay registrados en la plataforma.
�74
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 31. Pantalla Clientes Index.
• Panel de filtrado
Debajo del título de la sección, centrado, aparece un filtrado de texto, por nombre y
profesión de usuario, además de dos desplegables que filtran por sexo y estado del usuario.
• Panel de visualización
Por último se encuentra una tabla con todos los usuarios básicos de la plataforma. A
la derecha de cada usuario, nos encontramos con tres botones: Ver, Editar y Activar/
Desactivar. Ver nos permite ver en detalle el usuario. Editar nos deja editar el usuario, y
Activar/Desactivar nos permite activar o desactivar el acceso a la plataforma de este
usuario.
• Menú secundario
Arriba a la derecha nos aparece un menú secundario con un botón de “salir” que
nos permite deslogearnos de la plataforma.
�75
Juan José Martos Muñoz Herramienta para la generación de opiniones
4.2.4. Usuario básico
Para acceder como usuario básico a la plataforma, previamente debemos crearnos
un usuario accediendo a la pantalla de registro desde la pantalla de login.
Figura 32. Pantalla de “Primero rellene su perfil”.
Cuando nos registramos desde la pantalla de registro y accedemos a ella con
nuestro usuario, esta nos redirecciona a “Mi perfil”, donde nos obliga a rellenar nuestro
nombre, fecha de nacimiento, sexo y profesión. Una vez hecho esto, la plataforma nos
permite acceder al apartado de “Opiniones”.
�76
Juan José Martos Muñoz Herramienta para la generación de opiniones
Figura 33. Pantalla Opiniones Index de Usuario Básico.
Figura 34. Pantalla Añadir Opinión Ejemplo.
�77
Juan José Martos Muñoz Herramienta para la generación de opiniones
• Interfaz de opiniones
En la sección “Opiniones”, arriba nos aparece un botón “añadir opinión” con el
cual la plataforma nos permite añadir opiniones sobre entidades ya configuradas en la
plataforma.
Figura 35. Pantalla Añadir Opinión.
Para añadir una opinión hay que insertar un título, comentario de la opinión,
seleccionar una entidad y marcar una satisfacción general obligatoriamente.
Cuando seleccionamos una entidad, automáticamente aparecen los campos de
valoración de esta entidad, previamente configurados en la plataforma. Estos no son
obligatorios de rellenar.
• Interfaz de Mi Perfil
Si volvemos a la sección “Mi perfil” podremos ver y editar nuestros datos de
usuario. ( Nombre, fecha de nacimiento, sexo y profesión)
�78
Juan José Martos Muñoz Herramienta para la generación de opiniones
• Menú secundario
Arriba a la derecha nos aparece un menú secundario con un botón de “salir” que
nos permite deslogearnos de la plataforma.
�79
Juan José Martos Muñoz Herramienta para la generación de opiniones
5. ÍNDICE DE FIGURAS
Figura 1. Portada de Tripadvisor. Fuente: www.tripadvisor.es 15 Figura 2. Apartado “Opiniones” de Tripadvisor. Fuente: www.tripadvisor.es 16 Figura 3. Añadir una opinión en Tripadvisor. Fuente: www.tripadvisor.es 17 Figura 4. Añadir una opinión en Tripadvisor (2). Fuente: www.tripadvisor.es 17 Figura 5. Portada de Mimedicamento. Fuente: www.mimedicamento.es 18 Figura 6. Leer experiencia Mimedicamento. Fuente: www.mimedicamento.es 19 Figura 7. Añadir opinión Mimedicamento. Fuente: www.mimedicamento.es 20 Figura 8. Portada Masquemedicos. Fuente: www.masquemedicos.com 20 Figura 9. Ejemplo de añadir una opinión. Fuente: www.masquemedicos.com 21 Figura 10. Arquitectura Cliente-Servidor.Fuente: https://bit.ly/2yzffYM 24 Figura 11. Esquema MVC. Fuente: https://bit.ly/2p8O5nr 25 Figura 12. Imagen logo PHP. Fuente: www.loopeando.com 27 Figura 13. Descargar Netbeans. Fuente: www.netbeans.org 33 Figura 14. Página de descarga de FuelPHP. Fuente: www.fuelphp.com 34 Figura 15. Página de inicio MAMP. 35 Figura 16. Crear base de datos desde phpMyAdmin. 35 Figura 17. Extracto de código db.php. 36 Figura 18. Modelo de datos de “Evaluame” 37 Figura 19. Opiniones Index. 44 Figura 20a. Extracto de código ormauth.php 51 Figura 20b. Extracto de código ormauth.php 52 Figura 21. Pantalla de login. 65 Figura 22. Pantalla de registro. 66 Figura 23. Pantalla ver detalle opinión de ejemplo. 68 Figura 24. Pantalla Entidades Index. 69 Figura 25. Pantalla Añadir Entidad. 70 Figura 26. Pantalla Ver en detalle entidad. 71 Figura 27. Pantalla Editar Entidad 71 Figura 28. Pantalla Campos Index. 72 Figura 29. Pantalla Añadir Campos. 73 Figura 30. Pantalla Ver Campo en Detalle. 74 Figura 31. Pantalla Clientes Index. 75 Figura 32. Pantalla de “Primero rellene su perfil”. 76 Figura 33. Pantalla Opiniones Index de Usuario Básico. 77 Figura 34. Pantalla Añadir Opinión Ejemplo. 77 Figura 35. Pantalla Añadir Opinión. 78
�80
Juan José Martos Muñoz Herramienta para la generación de opiniones
6. REFERENCIAS BIBLIOGRÁFICAS
[1] https://www.ecured.cu/Arquitectura_Cliente_Servidor
[2] https://codigofacilito.com/articulos/mvc-model-view-controller-explicado
[3] https://www.laurachuburu.com.ar/tutoriales/que-es-jquery-y-como-implementarlo.php
[4] https://puntoabierto.net/blog/que-es-bootstrap-y-cuales-son-sus-ventajas
[5] https://es.wikipedia.org/wiki/AngularJS
[6] https://desarrolloweb.com/articulos/1325.php
[7] https://es.wikibooks.org/wiki/Programación_en_PHP
[8] http://cs.ictea.com/knowledgebase.php?action=displayarticle&id=8790
[9] https://es.wikipedia.org/wiki/MariaDB
[10] https://www.esepestudio.com/noticias/que-es-mysql
[11] https://es.wikipedia.org/wiki/MongoDB
[12] https://www.ecured.cu/FuelPHP
[13] https://es.wikipedia.org/wiki/NetBeans
[14] https://es.wikipedia.org/wiki/MySQL
[15] https://fuelphp.com/docs/packages/oil/intro.html
[16] https://fuelphp.com/docs/packages/auth/intro.html
[17] https://tripadvisor.mediaroom.com/es-about-us
[18] https://www.mimedicamento.es/
[19] https://masquemedicos.com/
[20] JOSE, Anthony Kunnel. Sentiment Analysis and Opinion Mining.
[21] https://es.wikipedia.org/wiki/An%C3%A1lisis_de_sentimiento
[22] https://www.meaningcloud.com/es/blog/introduccion-al-analisis-de-sentimientos-
mineria-de-opinion
[23] https://www.brandwatch.com/es/blog/analisis-de-sentimiento/
�81