You are on page 1of 68

SISTEMA DE RECOMENDACIN MULTIMEDIA

BASADO EN PERFILES DE USUARIO


Proyecto Final de Grado

Alumna: Helena Muoz Escudero


Directora: Josefina Lpez Herrera
Fecha: 09/06/2014

Grado en Ingeniera de Sistemas Audiovisuales


Escola dEnginyeria de Terrassa (EET) Universidad Politcnica de Catalua (UPC)

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Resumen
La presente memoria detalla, de manera precisa, la implementacin de una
aplicacin web para ordenador, especializada en la recomendacin cinematogrfica.
La recomendacin sigue un algoritmo, el fundamento del cul reside en la
Entropa de Shannon, consistente en comparar la entropa de cada gnero, calculada
teniendo en cuenta las pelculas a las cules el usuario ha otorgado una puntuacin,
con la entropa del correspondiente gnero, calculada mediante el mismo proceso
explicado anteriormente pero aadiendo una posible pelcula a recomendar.
El caso de estudio es el mundo cinematogrfico debido a que la informacin de
referencia de la base de datos ha sido proporcionada, en su gran mayora, por
MovieLens.

Resum
La present memria detalla, de manera precisa, la implementaci duna aplicaci
web per a ordinador, especialitzada en la recomanaci cinematogrfica.
La recomanaci segueix un algoritme, el fonament de la qual resideix en la
Entropia de Shannon, consistent en comparar lentropia de cada gnere, calculada
tenint en compte les pellcules a les quals lusuari ha atorgat una puntuaci, amb
lentropia del corresponent gnere, calculada mitjanant el mateix procs explicat
anteriorment per afegint una possible pellcula a recomanar.
El cas destudi es el mn cinematogrfic degut a que la informaci de referncia
de la base de dades ha sigut proporcionada, en la seva gran majoria, per MovieLens.

Summary
This report details, with accuracy, the implementation of a web application for
computer, specialized in motion picture recommendation.
The recommendation follows an algorithm, whose fundament resides in the
Entropy of Shannon, consisting in comparing the entropy of each genre, calculated
taking into account the films to which the user has given a qualification, with the
entropy of the corresponding genre, calculated by the same process explained
previously but adding a possible film to recommend.
The case of study is the motion picture world because the information of
reference for the database has been provided, mostly, by MovieLens.

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Agradecimientos
Me gustara agradecer a todas las
personas que han colaborado directa o
indirectamente en ste proyecto, su
aportacin a l.
Especialmente, a mi directora de
Proyecto Final de Grado, Josefina
Lpez Herrera, por sus consejos, su
ayuda en las dudas surgidas, sus
correcciones y en general por su
constante soporte.
Finalmente, a todas las personas de
mi entorno por su apoyo moral.

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

NDICE
1. Introduccin ................................................................................................... 5
1.1. Motivacin personal ............................................................................... 5
1.2. Objetivo .................................................................................................... 5
1.3. Alcance .................................................................................................... 6
1.4. Organizacin ........................................................................................... 7
2. Estado del arte ............................................................................................... 9
2.1. Sistemas de recomendacin.................................................................. 9
2.2. Tcnicas de recomendacin ................................................................ 10
2.2.1. Tcnica de recomendacin basada en un filtro colaborativo ........... 10
2.2.2. Tcnica de recomendacin basada en contenido ............................ 11
2.2.3. Tcnica de recomendacin hbrida .................................................. 11
2.3. Sistemas de recomendacin de pelculas .......................................... 11
2.3.1. Jinni .................................................................................................. 12
2.3.2. MovieLens ........................................................................................ 12
2.3.3. Criticker ............................................................................................ 12
2.3.4. Nanocrowd ....................................................................................... 12
2.3.5. Otros ................................................................................................. 13
3. Metodologa de recomendacin ................................................................. 14
3.1. Condiciones previas ............................................................................. 14
3.2. Nomenclatura ........................................................................................ 14
3.3. Asignacin dinmica de pesos............................................................ 15
3.4. Clculo de la Entropa de Shannon ..................................................... 15
3.5. Recomendacin .................................................................................... 18
4. Especificacin de requerimientos ............................................................. 20
4.1. Requerimientos funcionales ................................................................ 20
4.1.1. Actores ............................................................................................. 21
4.1.2. Casos de uso.................................................................................... 22
4.2. Requerimientos no funcionales........................................................... 25
4.2.1. Interfaz ............................................................................................. 25
4.2.2. Rendimiento ..................................................................................... 26
4.2.3. Fiabilidad, seguridad y estabilidad ................................................... 26
4.2.4. Usabilidad ......................................................................................... 26
4.3. Restricciones......................................................................................... 26
5. Arquitectura de la aplicacin...................................................................... 27
5.1. Patrn arquitectnico ........................................................................... 27
6. Diseo tcnico ............................................................................................. 29
6.1. Arquitectura de la aplicacin ............................................................... 29
6.1.1. Capa de presentacin ...................................................................... 32
6.1.2. Capa de lgica.................................................................................. 34
6.2. Base de datos ........................................................................................ 35
6.2.1. Tabla Usuario ................................................................................... 37
6.2.2. Tabla DatosPersonales .................................................................... 37
6.2.3. Tabla Generos .................................................................................. 37
6.2.4. Tabla Peliculas ................................................................................. 38
6.2.5. Tabla PeliculasVistas ....................................................................... 39
6.2.6. Tabla Entropia .................................................................................. 39

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

6.2.7. Tabla Entropia prima ........................................................................ 40


6.2.8. Tabla Parametros ............................................................................. 40
7. Desarrollo ..................................................................................................... 41
7.1. Instalacin del entorno de trabajo....................................................... 41
7.2. Construccin de la base de datos ....................................................... 42
7.2.1. Obtencin de informacin................................................................. 42
7.2.2. Creacin de la base de datos en MySQL ......................................... 44
7.3. Implementacin de la aplicacin web ................................................. 44
7.3.1. Capa de presentacin ...................................................................... 45
7.3.2. Capa de lgica.................................................................................. 50
7.3.3. Capa de datos .................................................................................. 53
8. Resultados ................................................................................................... 54
8.1. Primer caso de estudio......................................................................... 54
8.2. Segundo caso de estudio..................................................................... 55
8.3. Tercer caso de estudio ......................................................................... 57
9. Presupuesto ................................................................................................. 61
10. Conclusin ................................................................................................. 62
10.1. Futuro trabajo ...................................................................................... 63
11. Bibliografa ................................................................................................. 64

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

1. INTRODUCCIN
1.1. Motivacin personal
Tras el paso por la Universidad, asignaturas como Fundamentos de Informtica
[1], Estructura de Datos y Orientacin a Objetos [2], Bases de Datos [3], Fundamentos
de Redes Telemticas [4], Visin por Computador [5], entre muchas otras, me hicieron
darme cuenta que el mundo de la programacin y en general de la informtica, me
atraa mucho ms que otro tipo de campos.
Cuando me lleg la propuesta de Josefina Lpez Herrera sobre la
implementacin de sta aplicacin cre adecuado aceptarla atendiendo a la gran
oportunidad que supona extender el aprendizaje sobre los conocimientos
relacionados con el campo de la informtica, los cules me favoreceran en un futuro,
tanto a nivel de estudio como profesional.
La gran fuente de motivacin reside en el camino que me gustara emprender en
un futuro, enfocando mis estudios al campo de la informtica, para llegado el
momento, trabajar, en concreto, en ste mundo laboral.
Me enorgullecera conseguir implementar una aplicacin web de recomendacin,
la cul solventara el problema de sobrecarga de informacin en el mundo
cinematogrfico, proporcionando tems de acuerdo a las preferencias de cada usuario,
mediante la proyeccin de los conocimientos adquiridos en la Universidad y el
aprendizaje, de manera autnoma, de nuevas herramientas informticas como nuevos
lenguajes de programacin, nuevas tecnologas, etc.

1.2. Objetivo
El objetivo principal de ste Proyecto Final de Grado es la implementacin de
una aplicacin web de recomendacin cinematogrfica basada en el algoritmo de
recomendacin desarrollado por Josefina Lpez Herrera en 2006 [6].
Con el fin de alcanzar el objetivo principal de ste proyecto, es necesario el
desarrollo de los mismos, los cules sern definidos a continuacin, y su
correspondiente xito.
Instalacin del entorno de trabajo:
Descarga e instalacin tanto de los distintos software de trabajo como de las
tecnologas complementarias para la implementacin de la aplicacin web.
Construccin y actualizacin de la base de datos:
Obtencin de informacin verdica a travs de MovieLens [7].

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Modificacin de la informacin obtenida con el fin de su adaptacin a las


especificaciones de la aplicacin, siempre y cuando no afecte a la
metodologa de recomendacin.
Construccin de la base de datos.
Actualizacin de la base de datos mediante la entrada en funcionamiento de
la aplicacin web.
Implementacin de la aplicacin web:
Creacin de una interfaz sencilla que permita al usuario navegar por la
aplicacin.
Implementacin de una aplicacin de recomendacin siguiendo la
metodologa correspondiente [6].
Cumplimiento de los estndares de programacin.

1.3. Alcance
El alcance de ste Proyecto Final de Grado es una aplicacin web de
recomendacin cinematogrfica que permite solventar el problema de sobrecarga
de informacin en ste mundo, proporcionando una recomendacin basada en una
metodologa [6] que proporciona tems de acuerdo a las preferencias de cada usuario.
El proyecto es una primera versin de aplicacin web, donde el caso de estudio
es el mundo cinematogrfico, debido a que la informacin de referencia sobre la que
se ha trabajado ha sido extrada de MovieLens [7].
La aplicacin web cuenta con una serie de caractersticas, a modo de servicios
ofrecidos por la misma, que son descritas a continuacin:
Registro de nuevos usuarios: Se permite acceder a un nuevo usuario al
proceso de registro, el cul tendr que completar para autenticarse en la
aplicacin.
Autenticacin de usuarios: Se permite a un usuario, previo registro,
autenticarse en la aplicacin con el fin de usar el servicio ofrecido por la
misma.
Visualizacin y modificacin de los datos del propio usuario: Se permite
visualizar, as como modificar, tanto los datos personales del propio usuario
como sus datos de acceso a la aplicacin, al mismo.
Navegacin entre el listado de pelculas: Se permite navegar al usuario
entre el listado de pelculas existentes en la base de datos de la aplicacin.
Asignacin de calificaciones a nuevas pelculas: Se permite al usuario
asignar una calificacin a cada una de las pelculas.

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Modificacin de puntuaciones otorgadas con anterioridad: Se permite al


usuario modificar las puntuaciones otorgadas con anterioridad.
Visualizacin de la recomendacin: Se permite visualizar al usuario el
resultado personalizado de la recomendacin de la aplicacin.

1.4. Organizacin
El proyecto sigui una planificacin, la cul est plasmada en ste apartado, con
el objetivo de cumplir los objetivos establecidos en un principio.
La primera etapa del proyecto consisti en una investigacin, a modo de
introduccin, sobre el mundo de los sistemas de recomendacin, atendiendo al propio
concepto, las distintas metodologas de recomendacin, as como las soluciones ms
importantes en la actualidad.
Una vez fueron comprendidos los conceptos pertenecientes, se procedi a la
comprensin de la metodologa de recomendacin [6] a seguir por la aplicacin,
asimilando el procedimiento, las operaciones lgicas, las variables, etc.
La siguiente etapa residi en la definicin de los requerimientos de la aplicacin
de recomendacin cinematogrfica y los casos de uso que contemplara la misma.
La cuarta etapa del proyecto consisti en una bsqueda exhaustiva sobre los
distintos tipos de arquitectura para una aplicacin web, as como sobre las tecnologas
existentes para la implementacin de la misma, valorando las ventajas y las
desventajas de cada caso.
A continuacin, se procedi a la instalacin y configuracin del entorno de
trabajo necesario para la implementacin de la aplicacin web.
Los siguientes puntos estuvieron relacionados con la creacin de lo que formara
la aplicacin web, lo cul consisti en la construccin de la base de datos y la
implementacin de la propia aplicacin.
La etapa final del proyecto estuvo dedicada a la ejecucin de test de pruebas
con el fin de comprobar el funcionamiento, no tan slo de la aplicacin web sino
tambin de la metodologa de recomendacin [6].
La estructura seguida en la memoria, la cul describe con minuciosidad el
trabajo, est definida a continuacin:
Estado del arte: Introduccin al contexto de los sistemas de recomendacin.
Metodologa de recomendacin: Explicacin del fundamento terico sobre el
mtodo de recomendacin seguido por el sistema.
Especificacin de requerimientos: Descripcin de las funcionalidades de la
aplicacin web.

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Arquitectura de la aplicacin: Descripcin general sobre la estructura interna


de la aplicacin web.
Diseo tcnico: Descripcin de la solucin tcnica.
Desarrollo: Explicacin del proceso seguido para la implementacin de la
aplicacin web.
Resultados
Presupuesto
Conclusiones
Bibliografa

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

2. ESTADO DEL ARTE


Actualmente, Internet ofrece un gran volumen de informacin provocando que la
seleccin de informacin se haya convertido en un proceso complejo para el usuario.
Los principales sistemas de acceso a la informacin de los que cuenta Internet son los
siguientes:
Los sistemas de acceso a la informacin basados en el mtodo de
recuperacin de informacin son sistemas informticos que buscan
informacin existente en Internet atendiendo a un trmino de bsqueda. El
resultado es un listado de direcciones web en las que se menciona el trmino.
Actualmente, los sistemas ms importantes que emplean esta tcnica son
Google y Yahoo.
Los sistemas de acceso a la informacin basados en el mtodo de filtrado
de informacin son sistemas informticos que buscan informacin en Internet,
la cual someten a un proceso de filtrado para que el resultado se ajuste a las
preferencias del usuario.
Los sistemas de filtrado de informacin se estn consolidando como la
herramienta ms potente para ayudar a los usuarios a reducir la sobrecarga de
informacin presente en Internet.

2.1. Sistemas de recomendacin


Los sistemas de recomendacin [8] [9] son sistemas que acceden a la
informacin mediante la tcnica del filtrado presentando un resultado personalizado al
usuario. El proceso que siguen consiste en dos etapas: creacin del perfil del usuario,
donde se recopila informacin sobre l y la recomendacin de tems atendiendo a las
preferencias del usuario.
Por lo tanto, los sistemas de recomendacin funcionan a partir de la informacin
sobre el usuario, lo que se conoce como perfil de usuario. La informacin puede
clasificarse en dos tipos: explcita e implcita. Un sistema de recomendacin utiliza
informacin explcita cuando el usuario proporciona sus preferencias de manera
consciente en el perfil. Solicitar al usuario una calificacin sobre un tem en particular o
sobre un conjunto de tems, o la eleccin de entre dos o ms tems, as como la
generacin de una lista de tems de preferencia, son ejemplos de recoleccin de
informacin explcita. Un sistema de recomendacin utiliza informacin implcita si
deducen las preferencias del usuario a partir del comportamiento y del historial del
mismo. Almacenar un registro con los tems que el usuario ha visto recientemente, o
con los tems que el usuario ha seleccionado, as como analizar las redes sociales a
las que el usuario pertenece, son ejemplos de recoleccin de informacin implcita.

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

2.2. Tcnicas de recomendacin


Los sistemas de recomendacin contrastan el perfil de usuario con las
caractersticas de los tems con el fin de realizar recomendaciones acertadas. Segn
la tcnica seguida por los sistemas de recomendacin, la comparacin se realizar de
una manera u otra.

2.2.1. Tcnica basada en un filtro colaborativo


Los sistemas de recomendacin basados en algoritmos de filtrado colaborativo
[10] [11] predicen una recomendacin favorable para el usuario mediante el uso de la
informacin del resto de usuarios. El algoritmo que suelen usar las tcnicas de filtrado
colaborativo se denomina, en ingls, Nearest Neighbour. De esta forma, si dos
usuarios U1 y U2, comparten el mismo sistema de valores, es decir, tienen las mismas
preferencias, si al usuario U1 le ha satisfecho el tem i, probablemente este tem
tambin satisfaga al usuario U2. En este caso, las preferencias pueden ser sentencias
explcitamente expresadas por el usuario o evaluaciones implcitas calculadas a partir
de datos disponibles sobre el comportamiento del usuario. Las evaluaciones explcitas
suelen tratarse de puntuaciones asignadas por los usuarios a los tems que ya
conozcan, donde puntuaciones altas reflejan un fuerte inters del usuario en ese tem,
mientras que las puntuaciones bajas, reflejan desinters. Las evaluaciones implcitas
suelen derivar de fuentes de datos tales como registros de compras.
La principal desventaja que presenta sta tcnica es que requiere informacin de
un nmero elevado de usuarios para que las recomendaciones sean precisas.
Adems, el uso de sta tcnica cuenta con otras problemticas, expuestas a
continuacin:
El problema asociado a un nuevo usuario: stos sistemas de recomendacin
suelen basarse en la puntuacin que el usuario otorga a los tems, por ello si
el usuario es nuevo, probablemente tendr pocos tems puntuados, lo que
provocar como consecuencia pocos tems de comparacin. Por lo tanto, los
usuarios recin registrados necesitan puntuar suficientes tems para que el
sistema recomiende con una cierta garanta.
El problema de un nuevo tem: El origen de ste problema se da cuando un
nuevo tem es dado de alta en el sistema, ya que cuenta con un bajo nmero
de puntuaciones por parte del usuario. Por lo tanto, ste tem ser difcilmente
recomendable hasta que su nmero de puntuaciones sea incrementado.
El problema de la dispersin de ratios: El problema nicamente es aplicable
en usuarios con gustos poco comunes, debido a que sus puntuaciones no
coinciden con las de otros, lo que conlleva que el sistema encuentre pocos
usuarios con los que comparar o pocos elementos con los que buscar
similitudes.

10

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Sin embargo, la principal ventaja que presenta esta tcnica es que es los tems
que recomienda no siempre son del mismo tipo de los vistos por el usuario, ofreciendo
as un gran abanico de variedad.

2.2.2. Tcnica basada en contenido


Los sistemas de recomendacin basados en contenido definen los tems por sus
caractersticas y recomiendan al usuario tems con caractersticas similares a los que
ha puntuado favorablemente en el pasado. As que la recomendacin busca tems
similares al actual.
Los sistemas de recomendacin que usan sta tcnica sufren algunos
problemas que tambin son presentes en los sistemas que utilizan tcnicas basadas
en un filtro colaborativo, como el problema de un nuevo usuario y el de dispersin de
ratios. Pese a ello, la principal desventaja de sta tcnica es que los sistemas ofrecen
tems similares a los vistos con anterioridad, lo que significa que no introducen ninguna
novedad.

2.2.3. Tcnica de recomendacin hbrida


Los sistemas hbridos [12] adoptan un enfoque equilibrado, principalmente, entre
un sistema colaborativo y basado en contenidos, con el fin de sacar el mximo partido
a las ventajas de ambos, evitando las principales carencias. La mayora de sistemas
que usan la tcnica de recomendacin hbrida estn compuestos por dos o ms
sistemas de recomendacin, los resultados de los cules son combinados de distintas
maneras para obtener un resultado ms fiel.

2.3. Sistemas de recomendacin de pelculas


El crecimiento exponencial de la cantidad de informacin presente en Internet ha
derivado en un aumento del inters por la investigacin en el mbito de los sistemas
de recomendacin. Actualmente, los sistemas de recomendacin estn presentes en
la gran mayora de pginas web con el fin de servir de ayuda.
El mundo cinematogrfico cuenta con un elevado nmero de pelculas, donde
caractersticas como el gnero, directores, actores, etc. son referentes de aceptacin o
rechazo por parte de los usuarios. As mismo, es un mbito idneo de aplicacin de
los sistemas de recomendacin debido a la gran cantidad de informacin existente.
Los sistemas de recomendacin sobre el mundo cinematogrfico son de uso
muy frecuente en pases como Estados Unidos, mientras que en nuestro pas el
conocimiento sobre su existencia es bastante reducido.
Los sistemas de recomendacin de pelculas ms importantes para plataforma
web son explicados a continuacin:

11

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

2.3.1. Jinni
La pgina web de recomendacin de pelculas ms popular es Jinni [13],
perteneciente a la compaa Entertainment Genome. El principal objetivo es
recomendar pelculas acordes a los gustos del usuario. Sin embargo, Jinni ofrece ms
funciones como la bsqueda semntica, enfocada en la interpretacin de las consultas
mediante la identificacin de conceptos en el contenido, en lugar de keywords; el
filtrado a travs del estado de nimo, el argumento que se desea, el tiempo disponible
u otros parmetros. Adems, incluye opciones adicionales para refinar la bsqueda. La
tecnologa de Jinni implica una taxonoma creada por profesionales del cine, con
nuevos ttulos indexados a travs de procesamiento del lenguaje natural y los mtodos
de aprendizaje automtico para analizar automticamente los exmenes y los
metadatos.

2.3.2. MovieLens
MovieLens [7] es una pgina web de recomendacin de pelculas desarrollada
en 1997 por el equipo de investigacin de GroupLens de la Universidad de Minnesota.
Pese a que la interfaz grfica no es atractiva, la extensa base de datos y el algoritmo
de recomendacin, basado en un filtro colaborativo, hacen de esta plataforma una de
las ms fiables gracias a la precisin de los resultados. El sistema compara tus
puntuaciones con las de otros usuarios con gustos similares y a continuacin,
recomienda pelculas que el usuario no haya visto. Adems, cuando un usuario busca
una pelcula especfica, el sistema retorna una prediccin de la posible puntuacin que
el usuario la dar a la pelcula despus de haberla visto. Adems, MovieLens
proporciona informacin de pelculas de manera individual, as como listas de actores
y directores, que son usadas para incrementar la exactitud del algoritmo.

2.3.3. Criticker
El objetivo de Criticker [14] es relacionarte con personas que comparten tus
mismos gustos cinematogrficos de la manera ms exacta posible. Usa la herramienta
llamada Taste Compatibility Index (TCI) que permite ver con qu personas eres ms
afn, accediendo a su perfil y viendo qu pelculas les gustan. Tambin se punta y se
comparan tus puntuaciones con las de otros usuarios para adquirir el TCI. Por lo tanto,
es un servicio que combina tanto funcionalidad como comunidad.

2.3.4. Nanocrowd
El algoritmo de Nanocrowd [15] se basa en el estudio de la reaccin de los
usuarios a las pelculas. Analizan las tres palabras que los usuarios usan para
describir sus reacciones a las pelculas. Analizando esas palabras permiten entender
no slo qu pelculas han gustado, sino por qu. Esta tecnologa se llama Reaction
Mapping. Entender el por qu es crucial porque las pelculas evocan una gran
variedad de sensaciones y sentimientos que son complejos y no pueden ser
capturados simplemente por puntuaciones o historial. Las pelculas se clasifican en
tres tipos de nanogneros (que capturan la esencia o algunos elementos de cada

12

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

pelcula) en el que cada uno refleja distintas razones. Las tres palabras descriptivas
son clave para conocer qu parte de la pelcula es capturada en cada nanognero.

2.3.5. Otros
El mercado existente en Internet ofrece muchos ms sistemas de
recomendacin de pelculas como: Netflix [16], IMDb [17], Flixster [18], Rotten
Tomatoes [19] y Clerkdogs [20], siendo ste ltimo el ms simple de todos.
Sin embargo, Internet es la nica plataforma que ofrece servicios de
recomendacin de pelculas, aunque se espera que en un futuro prximo tambin lo
sea la televisin. El sistema Jinni [13], mencionado anteriormente, est colaborando
des de 2012 con Canal+ Espaa [21] para que los abonados a Canal+ cuenten con
una coleccin de contenidos que encajen en los hbitos de consumo audiovisual del
cliente. Los usuarios del servicio tambin podrn realizar bsquedas semnticas por
conjuntos de palabras, de tal forma que mediante uno o varios trminos, el sistema
explore en todo el catlogo de contenidos aquellos que se ajusten a lo expresado en
lenguaje natural por el telespectador. Esto permitir complementar las actuales
bsquedas estructuradas basadas nicamente en gnero como por ejemplo "Cine >
Comedia" por otras como "relaciones de amistad", que podra permitir encontrar
pelculas en el que ese tema sea relevante, as como documentales de sociedad,
noticias relacionadas, etc. El objetivo del servicio, tal y como afirm Jinni en su da, es
diferenciar la televisin proporcionada por Canal+ de la televisin convencional, por un
lado incidiendo en los cambios de consumo registrados en los ltimos aos y por otro
orientando la oferta de contenidos hacia el cliente.

13

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

3. METODOLOGA DE RECOMENDACIN
La metodologa [6] que usar la aplicacin web para llevar a cabo la
recomendacin est dividida en tres etapas:
Asignacin dinmica de pesos a las pelculas.
Clculo de la Entropa de Shannon de la pelcula a recomendar.
Recomendacin.

3.1. Condiciones previas


Las siguientes condiciones han de ser cumplidas previamente para aplicar la
metodologa [6]:
Conocer un nmero suficiente de calificaciones del usuario sobre un conjunto
de pelculas
Tratar cada uno de los gneros como atributos, es decir cada pelcula tendr
asociados un nmero de atributos, por ejemplo, gnero accin, aventuras,
animacin, etc. con un nico atributo informado por pelcula.
Asignar una calificacin al atributo de cada pelcula correspondiente a su
gnero, en el proceso de alta de una nueva pelcula. sta calificacin es la
calificacin inicial que el experto da a la pelcula, conocida como opinin del
experto. El proceso de reasignacin de pesos puede modificar dicha
puntuacin en base a las calificaciones de los usuarios.
Asociar un calificacin al atributo de cada pelcula correspondiente a su
gnero, el cul est determinado por el valor de las puntuaciones de los
diferentes usuarios. sta calificacin se puede interpretar como la calculada
como el valor medio de las puntuaciones, aplicando la Entropa de Shannon
segn el algoritmo detallado prximamente.
Normalizar el valor de las puntuaciones a valores comprendidos entre 0 y 1
para llevar a cabo los clculos. Por ejemplo, si de cara al usuario se usa una
puntuacin del 1 al 10, internamente se dividirn estos valores entre 10.

3.2. Nomenclatura
La nomenclatura usada en la explicacin sobre la metodologa [6] es la siguiente:
!! !!" dnde !!" es la opinin normalizada del atributo ! de la pelcula !. En
nuestro caso !! coincide con !!" si ! es el atributo que define el gnero de la pelcula.
!!" = 0 para ! !

14

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

!!"# es la opinin normalizada dada por un determinado usuario i y atributo ! (el


que representa el gnero de la pelcula) de la pelcula !.
!! es el umbral mnimo de puntuaciones sobre una pelcula que desencadena el
proceso de reasignacin de pesos.
!! es un valor constante, aproximadamente igual a 0.3679 y es el valor de ! que
corresponde al mximo de la funcin ! ! = ! log ! (!) en el rango (0,1).

3.3. Asignacin dinmica de pesos


Automticamente, al dar de alta una pelcula se le asigna una calificacin dada
por el experto. El proceso de asignacin dinmica de pesos se da cuando se dispone
de un nmero determinado de puntuaciones de usuarios sobre las pelculas. El
momento en que el nmero de puntuaciones otorgadas por los usuarios sobre una
pelcula alcanza el valor UP es cuando se inicia el proceso de asignacin dinmica de
pesos.
El valor que determinar el peso es aqul valor de Xs, comprendido entre [min
Pjn Xs max Pjn] que minimice la siguiente expresin:
!

!!"# !" =

||!!"# !" || !! log ! (||!!"# !"|| !! )


!!!

Dnde,
k es el nmero de puntuaciones otorgadas por los usuarios a la pelcula.

3.4. Clculo de la Entropa de Shannon


A continuacin, con el objetivo de explicar de manera clara el clculo de la
Entropa de Shannon se tomar un caso en concreto. El ejemplo queda recogido en la
Tabla 1, la cul contiene las calificaciones, normalizadas, dadas por un usuario
llamado U1 a seis pelculas, las cules pertenecen a los gneros western, terror o
comedia.
ID Pelcula
C001
C002
C003
C004
C005
C006

Puntuacin
0.8
0.2
0.5
0.8
0.7
0.5

Western

Terror
0.8

Comedia

0.2
0.5
0.8
0.7
0.8

Tabla 1. Tabla a modo de resumen del caso de ejemplo para el estudio de la metodologa

15

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

El primer paso consiste en obtener la distribucin de las frecuencias relativas de


las calificaciones de cada atributo, es decir, de cada gnero, nicamente partiendo de
las pelculas vistas por el usuario y la calificacin a cada una de ellas dada por el
mismo.
La siguiente frmula sirve para calcular la entropa correspondiente a la
distribucin de las frecuencias relativas de los distintos valores de cada atributo j por
usuario/pelcula.
!

!! =

!!" log ! !!"


!!!

1
!

Donde,
b es la cantidad de calificaciones diferentes del atributo j de todas las pelculas
vistas por el usuario.
El valor de pij , correspondiente a la frecuencia relativa de las calificacin
normalizada del atributo j es calculado de la siguiente manera:

!!" =

!
!

Donde,
n es el total de pelculas calificadas por el usuario.
a es el nmero de pelculas que tienen un determinado valor del atributo j.
Los clculo descritos anteriormente son aplicados para el caso de ejemplo de la
siguiente manera:
Atributo western:

!1(!,!) =

!!"#$"%& =

1
1
1
; !2(!,!) = ; !2(!,!) = ;
6
6
6

1
1
1
1
1
1
log !
+ log !
+ log !
6
6
6
6
6
6

Atributo terror:

!1(!,!) =

2
1
; !2(!,!) = ;
6
6
16

1
= 0.430827
3

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

!!"##$# =

1
1
1
1
log !
+ log !
3
3
6
6

1
= 0.47957
2

El siguiente paso consiste en calcular la entropa de todos los atributos


incluyendo cada una de las nuevas pelculas a recomendar tal y como se muestra en
la Tabla 3 correspondiente al ejemplo.
ID Pelcula
C001
C002
C003
C004
C005
C006
C007
C008

Puntuacin
0.8
0.2
0.5
0.8
0.7
0.5
0.7
0.8

Western

Terror
0.8

Comedia

0.2
0.5
0.8
0.7
0.8
0.7
0.8

Tabla 3. Tabla a modo de resumen del caso de ejemplo con las pelculas a recomendar

Hay que recalcar que la calificacin de las nuevas pelculas ser la asignada
inicialmente como calificacin del experto o bien obtenida por el proceso de
reasignacin de pesos.
A continuacin, se incluyen los clculos necesarios para obtener la Entropa de
Shannon de cada atributo para cada una de las nuevas pelculas, es decir C007 y
C008.
Pelcula C007; Atributo Western:

!1(!,!) =

1
2
1
; !2(!,!) = ; !3(!,!) = ;
7
7
7
!!"#$"%& = 0.44

Pelcula C007; Atributo Terror:

!1(!,!) =

1
2
; !2(!,!) = ;
7
7

!!"##$# = 0.46

17

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Pelcula C008; Atributo Western:

!1(!,!) =

1
1
1
; !2(!,!) = ; !3(!,!) = ;
7
7
7
!!"#$"%& = 0.4

Pelcula C008; Atributo Terror:

!1(!,!) =

1
2
; !2(!,!) = ;
7
7

!!"#$# = 0.46
Pelcula C008; Atributo Comedia:

1
;
7
= 0.4

!1(!,!) =
!!"#$%&'

El ltimo paso consiste en calcular la diferencia absoluta entre ambas Entropas


de Shannon para cada atributo, considerando slo la mxima diferencia de entre
todas, tal y como se muestra en la Tabla 3.

ID Pelcula
C007
C008

H-H
mxima
0.01957
0.4

Western
H
H
0.430827
0.44
0.430827
0.4

Terror
H
0.47957
0.47957

H
0.46
0.46

Comedia
H
H
0

0.4

Tabla 3. Tabla de resultados tras la aplicacin de la metodologa

Hay que tener en cuenta que slo sern considerados los atributos para los
cules est definido el valor de H. En el caso de que el valor de H pero s el de H no
est definido para un determinado atributo/pelcula a recomendar ser considerado
H=0 para ese atributo/pelcula.

3.5. Recomendacin
Si el valor mximo de la diferencia absoluta entre Entropas de Shannon es
inferior a un valor predeterminado, la pelcula a recomendar ser efectivamente
recomendada, mientras que en el caso contrario no se recomendar.

18

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

El valor de es calculado de la siguiente manera:

!=

1
(! + 1)

En el caso de estudio = 1/7 = 0.142857. Por lo tanto, la pelcula C007 ser


recomendada pero no la pelcula C008.

19

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

4. ESPECIFICACIN DE REQUERIMIENTOS
La especificacin de requisitos recoge una descripcin de las funcionalidades, es
decir, del comportamiento, del sistema. Los requisitos funcionales definen las
funcionalidades del sistema. Y los requisitos no funcionales: rendimiento,
disponibilidad, seguridad, accesibilidad, usabilidad, estabilidad, portabilidad, costo,
operatividad, interoperabilidad, escalabilidad, concurrencia, mantenibilidad e interfaz
del sistema.
El objetivo de ste proyecto es la implementacin de una aplicacin web de
recomendacin multimedia basado en perfiles de usuario, mediante el
algoritmo de recomendacin desarrollado por Josefina Lpez Herrera en 2006
[6].
El sistema se implementar en una nica plataforma accesible a travs del
ordenador, el cul tendr instalados los programas especficos para su
ejecucin.
La arquitectura ser de cliente-servidor, en la que ambos procesos se llevarn
a cabo en el mismo ordenador. El cliente ser el usuario que acceder al
sistema mediante el cul har peticiones al servidor.

4.1. Requerimientos funcionales


El sistema cumplir los siguientes requerimientos sobre el funcionamiento:
Requisito funcional 1: Registrar usuarios
El sistema registrar a cualquier usuario que se quiera beneficiar del servicio que
proporciona el sistema. Por lo tanto, el sistema dar de alta a los usuarios, despus de
obtener la informacin necesaria sobre los mismos, con el fin de que stos puedan
acceder a sus servicios. Un usuario registrado ser un usuario, que despus de
completar el proceso de registro, podr identificarse en el sistema.
Requisito funcional 2: Autenticar
El sistema autenticar a los usuarios que previamente hayan sido registrados
para que accedan a su sesin. Si la autenticacin es correcta, el sistema abrir la
correspondiente sesin. En caso contrario, el sistema volver a solicitar los datos.
Requisito funcional 3: Visualizar y modificar datos
El usuario podr visualizar y modificar sus datos, tanto sus datos personales
como los datos de acceso a la aplicacin, en cualquier momento.

20

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Requisito funcional 4: Puntuar pelculas


El usuario ir formando su propio perfil puntuando pelculas previamente vistas,
con el fin de que el sistema le recomiende nuevas pelculas atendiendo a sus gustos.
Requisito funcional 5: Recomendar pelculas
El sistema recomendar pelculas a travs de un algoritmo basado en el
concepto de la entropa de Shannon que se aplicar a pelculas del mismo tipo, en
ste caso del mismo gnero. El algoritmo tendr en cuenta la opinin del usuario, la
cual ser la puntuacin global de una determinada pelcula, obtenida mediante la nota
establecida por todos los usuarios que hayan visualizado la correspondiente pelcula.
Sin embargo, el sistema nicamente recomendar pelculas, en ningn caso se
encargar de proporcionar el contenido del mismo.
Requisito funcional 6: Almacenar datos
La base de datos almacenar un listado de todas las pelculas junto con la
correspondiente opinin del experto. La base de datos contendr los datos de cada
usuario, tantos los datos personales como las pelculas visualizadas junto con las
respectivas puntuaciones dadas por el mismo, as como las pelculas recomendadas
por el sistema. La base de datos deber actualizarse de manera rpida y eficaz
siempre que haya cualquier cambio.
Requisito funcional 7: Cerrar sesiones
Los usuarios podrn abandonar el sistema en cualquier momento. Si el usuario
abandona el sistema (o la aplicacin se cierra por cualquier razn) sin terminar de
definir la informacin necesaria para un registro, el registro no se crear.

4.1.1. Actores
Un actor es una entidad externa al sistema que solicita una funcin al sistema, y
por tanto guarda una relacin con l. Un actor puede ser tanto un ser humano como un
dispositivo electrnico e incluso, otro sistema de software.
Los actores con los que interactuar el sistema son los siguientes:
Usuario no registrado: El actor es un usuario no registrado en el sistema. La
razn por la cul un usuario no est registrado es debida a que un usuario es
completamente nuevo, nunca se ha registrado en el sistema y por lo tanto, el
sistema no contiene informacin sobre l.
Usuario registrado: El actor es un usuario registrado dentro del sistema, que
ha completado el proceso de autenticacin y puede acceder a todas las
funciones del sistema.

21

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Servidor: El actor es un servidor que contiene la informacin de la base de


datos del sistema. La arquitectura seguida es de cliente-servidor, donde el
cliente es el sistema que solicitar o enviar informacin al servidor.

4.1.2. Casos de uso


Un caso de uso proporciona una descripcin de las interacciones entre un actor
y un sistema como respuesta a una solicitud que inicia el propio actor sobre el sistema.
Los diagramas de casos de uso representan los casos de uso de manera grfica,
tal y como se hace en la Figura 1 y Figura 2.

Figura 1. Diagrama de casos de uso para un usuario no registrado

Figura 2. Diagrama de casos de uso para un usuario registrado

22

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

A continuacin, los casos de uso representados en las dos figuras anteriores


sern descritos detalladamente mediante las siguientes tablas:
Nombre

Registrar nuevo usuario.

Objetivo

Registrar los datos de un nuevo usuario en el sistema.

Actores

Usuario no registrado.

Descripcin
Post-condicin

El usuario accede al sistema para registrarse. El


sistema solicita al usuario tanto datos de acceso al
sistema, como datos personales.
El usuario accede a la segunda etapa de registro.

Tabla 4. Tabla caso de uso: Registrar nuevo usuario

Nombre Otorgar una puntuacin a un mnimo de pelculas.


Objetivo Registrar la puntuacin de un mnimo de pelculas.
Actores Usuario no registrado.
Descripcin

El usuario otorga una puntuacin a un mnimo de


pelculas.

Post-condicin El usuario ha completado el proceso de registro.


Tabla 5. Tabla caso de uso: Otorgar una puntacin a un mnimo de pelculas

Nombre Autenticar.
Comprobar que un usuario est registrado en el
Objetivo sistema para a continuacin, permitirle usar sus
servicios.
Actores Usuario registrado.
El usuario introduce tanto su nombre de usuario como
su contrasea. El sistema comprueba si los datos
Descripcin
introducidos estn en la base de dados y si son
correctos.
El usuario puede usar los servicios ofrecidos por el
Post-condicin
sistema.
Tabla 6. Tabla caso de uso: Autenticar

Nombre Ver datos del usuario.


Objetivo Mostrar los datos de un usuario.
Actores Usuario registrado.
Descripcin

El usuario solicita visualizar sus datos mediante el


correspondiente botn del men.

Post-condicin El sistema muestra los datos del usuario.


Tabla 7. Tabla caso de uso: Ver perfil

23

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Nombre Modificar datos del usuario.


Objetivo Modificar los datos de un usuario.
Actores Usuario registrado.
El usuario, previa visualizacin de sus datos, indica
que desea modificarlos.
El sistema guarda cualquier cambio que el usuario
Post-condicin
haya introducido en sus datos.
Descripcin

Tabla 8. Tabla caso de uso: Modificar perfil

Nombre Ver listado de pelculas.


Objetivo Mostrar el listado completo de pelculas
Actores Usuario registrado.
El usuario navega sobre el listado de pelculas con las
que cuenta el sistema.
El usuario puede puntuar nuevas pelculas, ver
Post-condicin puntuaciones otorgadas con anterioridad e incluso
modificarlas.
Descripcin

Tabla 9. Tabla caso de uso: Ver listado de pelculas

Nombre Puntuar pelculas.


Objetivo Puntuar las pelculas vistas por un usuario.
Actores Usuario registrado.
El usuario punta las pelculas vistas, siendo 1 la peor
valoracin y 5 la mejor.
El sistema guarda todas las puntuaciones que el
Post-condicin
usuario ha dado a las pelculas visualizadas.
Descripcin

Tabla 10. Tabla caso de uso: Puntuar pelculas

Nombre Ver pelculas puntuadas.


Objetivo

Mostrar la puntuacin de las pelculas otorgadas por el


usuario.

Actores Usuario registrado.


El usuario visualiza la puntuacin otorgada a distintas
Descripcin pelculas por l mismo, hayan sido dadas
anteriormente o en el mismo momento.
Post-condicin El usuario puede modificar las puntuaciones otorgadas.
Tabla 11. Tabla caso de uso: Ver pelculas puntuadas

24

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Nombre Modificar puntuaciones.


Objetivo Modificar el valor de las puntuaciones.
Actores Usuario registrado.
El usuario modifica las puntuaciones otorgadas a
Descripcin distintas pelculas por l mismo, hayan sido dadas
anteriormente o en el mismo momento.
El sistema guarda cualquier cambio que el usuario
Post-condicin
haya introducido en sus puntuaciones.
Tabla 12. Tabla caso de uso: Modificar puntuaciones

Nombre Ver recomendaciones.


Objetivo Mostrar las pelculas recomendadas.
Actores Usuario registrado.
El
usuario
solicita
visualizar
las
pelculas
recomendadas por el sistema.
El sistema muestra una recomendacin al usuario
Post-condicin
atendiendo a sus preferencias cinematogrficas.
Descripcin

Tabla 13. Tabla caso de uso: Ver recomendaciones

Nombre Cerrar sesin.


Objetivo Cerrar la sesin de un usuario.
Actores Usuario registrado.
El usuario cierra su sesin pulsando el botn de logout
situado en el men.
El sistema vuelve a la pgina principal, donde el
Post-condicin
usuario puede autenticarse de nuevo.
Descripcin

Tabla 14. Tabla caso de uso: Cerrar sesin

4.2. Requerimientos no funcionales


4.2.1. Interfaz
La interfaz ser sencilla e intuitiva.
La interfaz tendr los mdulos dispuestos de manera que visualmente queden
bien diferenciados. Se usarn colores agradables a la vista y un tamao de
letra ptimo para su correcta visualizacin.

25

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

4.2.2. Rendimiento
El tiempo de respuesta del sistema ser rpido, tanto para el registro y la
autenticacin del usuario, como para la introduccin y actualizacin de datos,
as como para el clculo del algoritmo y la final recomendacin.
El algoritmo se optimizar de tal manera que se pueda proporcionar una
respuesta rpida y fiable al usuario.

4.2.3. Fiabilidad, seguridad y estabilidad


El sistema asegurar fiabilidad en la autenticacin de los usuarios, as como
la proteccin de datos.
El sistema se recuperar tanto frente a fallos de conexin asegurando que no
se pierdan datos del perfil de usuario, como a fallos de sistema haciendo
posible su reinicio.

4.2.1. Usabilidad
El sistema ser implementado con flexibilidad para aadir posibles futuros
requerimientos al sistema.

4.3. Restricciones
El usuario necesitar disponer de los siguientes programas instalados en su
ordenador para poder ejecutar la aplicacin:

Eclipse Java EE IDE for Web Developers versin Kepler Service Release 1
MySQL Community Server 5.6.14 OSX 10.6 x86 64 bits
MySQL Workbench versin 6.0
Apache Tomcat versin 6.0

Adems, el sistema contar con las siguientes restricciones:


Contendr un mnimo de informacin de cada usuario, es decir, un nmero
mnimo de puntuaciones, otorgadas por el mismos, a pelculas.
No considerar perodos de reduccin, estacionalidad, etc. para los clculos
de recomendacin.

26

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

5. ARQUITECTURA DE LA APLICACIN
La arquitectura del software define cmo est estructurado el sistema,
atendiendo tanto a los componentes como a su relacin entre ellos.

5.1. Patrn arquitectnico


Un patrn arquitectnico es un modelo de diseo de aplicaciones que ofrece
soluciones a problemas de arquitectura de software.
La aplicacin web implementada sigue un patrn arquitectnico de tipo clienteservidor. Un patrn cliente-servidor es un modelo de aplicacin distribuida en el que el
trabajo es repartido entre los demandantes, llamados clientes y los proveedores de
recursos o servicios, llamados servidores. El cliente inicia solicitudes de datos,
adoptando el papel activo en la comunicacin, es decir, es el dispositivo maestro,
mientras el servidor espera la recepcin de la solicitud, desempeando el papel
pasivo, es decir, esclavo.
El uso de ste patrn frente a otros, presenta una serie de ventajas, entre las
cuales destaca la centralizacin del control: el servidor controla tanto los accesos y los
recursos usados, como la integridad de los datos, de forma que un cliente no puede
daar el sistema. Adems, el patrn cliente-servidor proporciona una propiedad
conocida como escalabilidad, a la aplicacin web, la cul permite aumentar la
capacidad tanto de clientes como de servidores por separado. Y es un modelo que
facilita el mantenimiento de la propia aplicacin.
Sin embargo, ste patrn arquitectnico tambin presenta una serie de
desventajas. La principal es el fenmeno conocido como congestin de trfico que se
manifiesta cuando un nmero elevado de clientes envan peticiones de manera
simultnea al mismo servidor, provocando el colapso de ste ltimo. Adems, el
servidor no cuenta con la robustez suficiente para reaccionar apropiadamente ante
condiciones excepcionales y en el caso que el servidor se cayese, las peticiones de
los clientes no podran ser satisfechas. Mientras que el software y el hardware del
servidor deben ser especficos para poder abastecer a un gran nmero de clientes;
pese a que esto aumente el coste.
A su vez, la aplicacin web tambin sigue una arquitectura dividida en tres
capas: la capa de presentacin, la capa de lgica y la capa de datos. La decisin de
que la aplicacin web este dividida en tres capas reside en la importancia de mantener
una clara separacin entre los componentes de la aplicacin, ya que sta abstraccin
proporciona escalabilidad, una gran flexibilidad al aadir nuevos mdulos y un
mantenimiento fcil.

27

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

La Figura 3 representa la estructura seguida en un arquitectura dividida en


capas.

Figura 3. Arquitectura dividida en capas

La capa de presentacin, conocida tambin como interfaz grfica, presenta la


aplicacin web al usuario, comunicando y obteniendo informacin que transferir a la
capa de lgica, funcionando como intermediaria entre el usuario y la aplicacin web. Al
tratarse de una aplicacin web, la interfaz grfica es mostrada en el navegador web
del usuario, el cul recoger los eventos realizados por el usuario para comunicrselos
a la capa de lgica.
La capa de lgica es donde residen las operaciones y los clculos que se
ejecutan tras recibir peticiones de los usuarios para enviar una respuesta. sta capa
se comunica con la capa de presentacin, para recibir solicitudes y presentar los
resultados, y tambin con la capa de datos para solicitar al gestor de la base de datos
recuperar o almacenar datos de l.
Y finalmente, la capa de datos es la encargada de acceder a los datos
almacenados en la base de datos porque es en sta donde residen los mismos. En
ste caso, la capa de datos est formada por tan slo un gestor de base de datos que
realiza el almacenamiento de los datos, recibe solicitudes de recuperacin de
informacin, as como de insercin de nuevos datos, modificacin o eliminacin de
ellos.

28

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

6. DISEO TCNICO
El diseo tcnico de una aplicacin proporciona una descripcin detallada de los
componentes software de la aplicacin, as como del modelo de datos.

6.1. Arquitectura de la aplicacin web


La aplicacin ha sido desarrollada bajo el lenguaje de programacin de objetos
Java, siguiendo una arquitectura cliente-servidor dividida en tres capas: capa de
presentacin, capa de lgica y capa de datos; con el objetivo de construir una
aplicacin web siguiendo los correspondientes estndares.
El lenguaje de programacin bajo el que se ha implementado la aplicacin web
es Java [22] [23] [24] [25] versin Java SE 6, un lenguaje de programacin orientado a
objetos, derivado de C/C++. Hoy en da, Java constituye uno de los lenguajes ms
populares empleado en aplicaciones web por sus caractersticas: es un lenguaje
orientado a objetos, independiente de la plataforma bajo la que se trabaja, que
proporciona una serie de bibliotecas estndar con multitud de operaciones tiles a la
hora de programar, permite el uso de frameworks, es decir, de un conjunto
estandarizado de conceptos, prcticas y criterios para enfocar un tipo de problemtica
particular que sirve como referencia para enfrentar y resolver nuevos problemas de
ndole similar, para el desarrollo de aplicaciones de una manera ms gil, organizada y
escalable; y gestiona tanto errores, a travs de excepciones, como el uso de la
memoria. Las principales caractersticas del lenguaje Java son ms que suficientes
para justificar su eleccin frente a otros lenguajes como por ejemplo C/C++. Aunque la
verdadera motivacin para aprender ste lenguaje reside en la carencia de su
enseamiento en la Universidad y en la consideracin de su importancia en el mundo
laboral, de cara al futuro una vez finalizados mis estudios.
El programa Eclipse Java EE IDE for Web Developers versin Kepler Service
Release 1 [26], que corresponde a la ltima versin, fue el elegido para implementar la
aplicacin web porque permite construir aplicaciones web en el lenguaje de
programacin Java, es multiplataforma y de cdigo abierto, es decir, gratuito; adems
de por el conocimiento previo sobre el funcionamiento del entorno.
Tal y como ha sido explicado en el apartado 5. Arquitectura de la aplicacin, la
aplicacin web sigue un patrn cliente-servidor. En el patrn cliente-servidor, la propia
aplicacin web est en un servidor de Internet, mientras que la base de datos est
albergada en un servidor remoto, permitiendo el uso de la aplicacin a cualquier
usuario conectado a Internet, formando un red como la representada en la Figura 4.

29

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Figura 4. Arquitectura cliente-servidor

En la actualidad, la aplicacin sigue un patrn cliente-servidor de un solo nivel,


que significa que tanto cliente como servidor se encuentran en un mismo ordenador.
Esto es debido a que la aplicacin web no se encuentra en un servidor de Internet, es
decir, no tiene una direccin real en Internet; y la base de datos tampoco est
albergada en un servidor remoto.
La propia aplicacin web utilizar como servidor el programa Apache Tomcat
versin 6.0 [27]. Apache Tomcat, tambin conocido como Jakarta Tomcat o
simplemente Tomcat, es un servidor web desarrollado bajo el proyecto Jakarta en la
Apache Software Foundation que acta como motor de Servlets, clases en lenguaje
Java utilizadas para ampliar las capacidades de un servidor, y Java Server Pages o
JSP, tecnologa que ayuda a la creacin de pginas web dinmicas basadas en HTML
y XML, entre otras. El servidor Tomcat fue elegido como servidor de la propia
aplicacin web por ser caracterizado por su estabilidad y la escasa memoria requerida
en el arranque; adems de ser multiplataforma y de cdigo libre.
As mismo, la base de datos utilizar como servidor el programa MySQL
Community Server [28]. MySQL Community Server es un sistema de gestin de
bases de datos relacionales con carcter servidor desarrollado por Sun Microsystems.
La plataforma fue escogida principalmente por el conocimiento previo sobre el
funcionamiento del entorno, adems de por ser multiplataforma y de software libre.
La arquitectura de la aplicacin web tambin sigue un modelo dividido en tres
capas, en que las capas de presentacin, lgica y datos estn separadas. La Figura 5
muestra un diagrama de las diferentes capas en las que est dividida la aplicacin

30

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

web, as como las tecnologas empleadas en cada una de ellas, algunas de las cuales,
sirven para la vinculacin entre ellas.

Figura 5. Arquitectura de la aplicacin web con las tecnologas empleadas

La implementacin de la capa de presentacin decidi llevarse a cabo utilizando


PrimeFaces [29], una biblioteca de componentes visuales para Java Server Faces o
JSF, tanto para aplicaciones web como mvil. La biblioteca fue escogida por su amplia
librera que contiene ms de 100 componentes Ajax, lo que la convierten segn
Google Trends en la nmero uno de su mbito, as como por su facilidad de
configuracin y uso, algo primordial para la organizacin, la cul persigue el siguiente
principio Una buena componente para la creacin de interfaces de usuario debe
ocultar la complejidad pero mantener la flexibilidad. Adems, Primefaces proporciona
una gran cantidad de documentacin disponible en su web tanto de manera online [30]
como en PDF, que otras bibliotecas con la misma funcionalidad, como Richfaces [31],
no cuentan. Por otra parte, el hecho de que Primefaces tambin estuviese disponible
para mviles influy, contemplando la posibilidad de que la aplicacin web pudiese ser
extendida a la plataforma mvil en un futuro.
La decisin de usar Primefaces conllev otras consecuencias a nivel tecnolgico,
como el lenguaje de implementacin de la capa de presentacin, debido a que
Primefaces slo utiliza XHTML.
Por lo tanto, el lenguaje para implementar la capa de presentacin fue XHTML.
XHTML es un estndar de lenguaje de marcas de hipertexto, extendido de HTML,
estndar de referencia para la elaboracin de pginas web, y XML, lenguaje
especificado para el almacenamiento de datos de forma legible.

31

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

La capa de presentacin se comunica con la capa de lgica mediante Spring


[32] [33], el framework ms popular para el desarrollo de aplicaciones y contenedor de
inversin de control, de cdigo abierto para la plataforma Java. El ncleo de Spring
est basado en un principio llamado inversin de control o IOC, el cul seguir est
aplicacin web, que permite definir las clases y las dependencias entre ellas, es decir,
la interaccin entre objetos, a travs de archivos XML de configuracin.
As mismo, el uso de Primefaces y de Spring en la implementacin de la
aplicacin web conllev el uso de JavaBeans [34]. Un JavaBean es un componente
de software que encapsula varios objetos en uno nico, llamado Bean. Una clase
JavaBean debe obedecer ciertas especificaciones sobre nomenclatura de mtodos,
construccin y comportamiento, permitiendo su utilizacin, reutilizacin, sustitucin y
conexin. Las especificaciones establecen que una clase JavaBean ha de contar con
un constructor por defecto, es decir, sin argumentos, sus atributos han de ser
accesibles y modificables mediante mtodos get() y set(), y ha de implementar la
interfaz serializable. Gracias a su introspeccin los Entornos de Desarrollo Integrado o
IDE reconocen ciertas pautas de diseo, definiciones de las clases y nombres de las
funciones o mtodos, que permiten a la herramienta de programacin conocer las
propiedades y la conducta del Bean. Cuando un IDE carga un Bean usa el mecanismo
denominado reflexin para examinar todos los mtodos, fijndose en los set() y get().
Adems, el uso de JavaBean es independiente de la plataforma.
A continuacin, el encargado de la conexin entre la capa de lgica y la capa de
datos es Java Database Connectivity, ms conocido como JDBC [35], una interfaz
de programacin de aplicaciones, es decir, una biblioteca que ofrece un conjunto de
funciones y mtodos para ser usados por otro software como una capa de abstraccin,
que permite la ejecucin de operaciones sobre bases de datos para el lenguaje de
programacin Java. Por lo tanto, JDBC es la biblioteca encargada de la conexin entre
la capa de lgica y la capa de datos, es decir, especficamente entre la aplicacin web
y la base de datos, permitiendo cualquier tipo de consulta de la base de datos, as
como creacin, modificacin o eliminacin de datos en ella.
Finalmente, los datos estn almacenados en una base de datos [36], un conjunto
de datos pertenecientes a un mismo contexto que son almacenados con el fin de ser
usados posteriormente, en ste caso por la aplicacin web.

6.1.1. Capa de presentacin


En ste apartado se detallarn, mediante las siguientes tablas, las pantallas de
las cules est compuesta la capa de presentacin, indicando la definicin de cada
una de ellas, as como las acciones que desempean.

32

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Pantalla de autenticacin
Definicin: sta pantalla permite al usuario introducir los datos necesarios,
username y password, para acceder al sistema. As como, permitir el acceso al
proceso de registro.
Acciones:
Acceder al sistema
Registrar a un nuevo usuario
Tabla 15. Tabla resumen sobre la pantalla de autenticacin

Pantalla de registro de datos


Definicin: sta pantalla permite al usuario introducir los datos requeridos, es decir,
tanto los datos de acceso a la aplicacin como los datos personales, para as
completar la primera etapa del proceso de registro.
Acciones:
Introducir los datos del usuario
Acceder a la segunda etapa del proceso de registro
Tabla 16. Tabla resumen sobre la pantalla de registro de datos

Pantalla de registro de un nmero mnimo de puntuaciones


Definicin: sta pantalla permite al usuario puntuar, entre 1 y 5, un mnimo de 20
pelculas, completando as el proceso de registro.
Acciones:
Puntuar pelculas previamente visualizadas.
Guardar puntuaciones a pelculas previamente visualizadas.
Tabla 17. Tabla resumen sobre la pantalla de registro de un nmero mnimo de puntuaciones

Pantalla de visualizacin de datos


Definicin: sta pantalla permite al usuario visualizar sus datos, tanto los datos
personales del mismo como los datos de acceso a la aplicacin, y el acceso a su
modificacin.
Acciones:
Visualizar los datos del propio usuario
Modificar los datos del usuario
Tabla 16. Tabla resumen sobre la pantalla de visualizacin del perfil

Pantalla de modificacin de datos


Definicin: sta pantalla permite al usuario modificar cualquiera de los campos que
conforman sus datos.
Acciones:
Modificar los datos del usuario
Guardar cualquier modificaciones sobre los datos del usuario
Tabla 17. Tabla resumen sobre la pantalla de modificacin del perfil

Pantalla de puntuacin de pelculas


Definicin: sta pantalla permite navegar entre el listado de pelculas con el que
cuenta el sistema con el fin de otorgar una puntuacin a pelculas previamente
visualizadas.

33

Helena Muoz Escudero

Acciones:

Sistema de recomendacin multimedia basado en perfiles de usuario

Visualizar puntuaciones otorgadas por el usuario a pelculas.


Puntuar nuevas pelculas previamente visualizadas.
Guardar nuevas puntuaciones a pelculas previamente visualizadas.
Modificar antiguas puntuaciones.
Tabla 18. Tabla resumen sobre la pantalla de puntuacin de pelculas

Pantalla de visualizacin de recomendaciones


Definicin: sta pantalla permite visualizar los ttulos de las pelculas
recomendadas por el sistema.
Acciones:
Visualizar las recomendaciones proporcionadas por el sistema
Tabla 19. Tabla resumen sobre la pantalla de visualizacin de recomendaciones

6.1.2. Capa de lgica


En ste apartado se detallarn, mediante las siguientes tablas, las clases de las
cules est compuesta la capa de lgica, indicando la definicin de cada una de ellas,
as como las acciones que desempean.
Clase autenticacin
Definicin: sta clase permite contrastar los datos introducidos por el usuario con
los almacenados en la base de datos.
Acciones:
Consultar el nombre de usuario y password en la base de datos para
verificar los datos introducidos por el usuario.
Tabla 20. Tabla resumen sobre la clase autenticacin

Clase de registro de datos


Definicin: sta clase permite registrar los datos de un nuevo usuario.
Acciones:
Actualizar la base de datos con los datos de autenticacin del nuevo
usuario.
Actualizar la base de datos con los datos personales del nuevo usuario.
Tabla 21. Tabla resumen sobre la clase de registro de datos

Clase de registro de un nmero mnimo de puntuaciones


Definicin: sta clase almacena las puntuaciones otorgadas por el usuario a
distintas pelculas.
Acciones:
Mostrar el nombre de las pelculas almacenadas en la base de datos.
Actualizar la base de datos con el valor de las puntuaciones otorgadas
por el usuario a distintas pelculas.
Finalizar con el proceso de registro del usuario si ste ha puntuado un
nmero mnimo de pelculas establecido.
Tabla 22. Tabla resumen sobre la clase de registro de un nmero mnimo de puntuaciones

34

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Clase de visualizacin de datos


Definicin: sta clase consulta los datos sobre el usuario.
Acciones:
Consultar los datos, tanto personales como de acceso a la aplicacin,
del usuario, almacenados en la base de datos.
Tabla 23. Tabla resumen sobre la clase de visualizacin del perfil

Clase de modificacin de datos


Definicin: sta clase almacena las modificaciones producidas sobre los datos del
usuario.
Acciones:
Consultar los datos, tanto personales como de acceso a la aplicacin,
del usuario, almacenados en la base de datos.
Actualizar la base de datos con los datos modificados.
Tabla 24. Tabla resumen sobre la clase modificacin del perfil

Clase de puntuacin de pelculas


Definicin: sta clase almacena las puntuaciones otorgadas por el usuario a
distintas pelculas.
Acciones:
Consultar el nombre de las pelculas almacenadas en la base de datos.
Consultar las pelculas, y la respectiva puntuacin otorgada por el
usuario, en la base de datos.
Actualizar la base de datos con nueva informacin del usuario.
Actualizar la base de datos con informacin modificada por el usuario.
Calcular el atributo opinin del usuario.
Actualizar la base de datos con el valor de la opinin del usuario.
Tabla 25. Tabla resumen sobre la clase de puntuacin de pelculas

Clase de recomendacin
Definicin: sta clase calcula el algoritmo necesario para la recomendacin.
Acciones:
Calcular el algoritmo de recomendacin.
Actualizar la base de datos con la informacin obtenida tras el clculo del
algoritmo para la recomendacin.
Mostrar los nombres de las pelculas a recomendar.
Tabla 26. Tabla resumen sobre la clase de recomendacin

6.2. Base de datos


La base de datos de la aplicacin web contiene la informacin necesaria para
que la aplicacin pueda hacer uso de ella y as proporcionar su servicio de manera
correcta. Se trata de una base de datos relacional [37], lo que significa que sigue el
modelo relacional, es decir, un modelo de datos, la idea fundamental del cul son las
relaciones, tal y como indica su nombre, que considera una base de datos como una
coleccin de relaciones. Una relacin representa una tabla, compuesta por un conjunto
de registros o filas, donde cada fila es un conjunto de campos o columnas y cada
columna representa un valor. El modelo relacional garantiza la no duplicidad de

35

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

registros, a travs de campos definidos como identificadores, en ingls primary keys;


as como la integridad referencial, es decir, que al eliminar un registro se eliminan
todos los registros relacionados dependientes. Por lo tanto, una base de datos
relacional es un conjunto de varias tablas estructuradas en filas y columnas,
vinculadas entre s por un campo en comn que posee las mismas caractersticas
como nombre del campo, tipo y longitud.
La Figura 6 es un diagrama entidad-relacin que contiene la estructura de la
base de datos, determinando la identidad de la relacin y qu tipo de informacin est
almacenada dentro de ella.

Figura 6. Diagrama entidad-relacin de la base de datos

36

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Tal y como se puede apreciar en el diagrama, la base de datos est formada por
un total de ocho tablas, el orden de las cules, al tratarse de una base de datos
relacional, no tiene relevancia, a diferencia de otras bases de datos que siguen
modelos como el jerrquico y el red.
Los identificadores que vinculan entre s las tablas son ID_Usuario que relaciona
las tablas Usuario, DatosPersonales, PeliculasVistas, Entropia y EntropiaPrima;
ID_Pelicula que relaciona las tablas Peliculas, PeliculasVistas y EntropiaPrima; e
ID_Genero que relaciona las tablas Generos y Entropia.

6.2.1. Tabla Usuario


La tabla Usuario almacena la informacin correspondiente a las cuentas de los
usuarios, es decir, la informacin necesaria para que el usuario se identifique ante el
sistema.
Nmero
1
2
3

Columnas
ID_Usuario
Usuario
Password

Tipo
int
Varchar(20)
Varchar(20)

Restricciones
Primary Key

Descripcin
ID del usuario
Username de acceso
Password de acceso

Tabla 27. Informacin de la tabla Usuario de la base de datos

6.2.2. Tabla DatosPersonales


La tabla DatosPersonales almacena la informacin personal de cada usuario.
Nmero
1
2
3
4
5
6
7
8

Columnas
ID_Usuario
Nombre
Apellidos
Genero
Edad
Ocupacion
Telefono
Email

Tipo
int
Varchar(20)
Varchar(20)
char
int
Varchar(20)
Varchar(20)
Varchar(50)

Restricciones
Descripcin
Primary Key
ID del usuario
Nombre del usuario
Apellido del usuario
Gnero del usuario
Edad del usuario
Ocupacin del usuario
Telfono del usuario
Email del usuario

Tabla 28. Informacin de la tabla DatosPersonales de la base de datos

6.2.3. Tabla Generos


La tabla Gneros almacena la informacin relativa a los gneros a los cules
una pelcula puede pertenecer.
Nmero
1
2

Columnas
ID_Genero
Descripcin

Tipo
Restricciones
Varchar(15)
Primary Key
Varchar(100)

Descripcin
Nombre del gnero
Descripcin del gnero

Tabla 29. Informacin de la tabla Generos de la base de datos

37

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

6.2.4. Tabla Peliculas


La tabla Pelculas almacena informacin sobre las pelculas, tanto datos propios
de la pelcula, como por ejemplo el ttulo, el nombre del director, etc. como datos
relacionados con el algoritmo del sistema, como la opinin de los usuarios.

Nmero
1
2

Columnas
ID_Pelicula
Nombre

Tipo
int
Varchar(80)

OpinionExperto

float

OpinionUsuario

float

Anyo

int

Pais

Varchar(20)

7
8
9

Director
Guion
Musica

Varchar(20)
Varchar(20)
Varchar(100)

10

Fotografia

Varchar(100)

11

Reparto

Varchar(100)

12

Productora

Varchar(100)

13

Sinopsis

Varchar(500)

14

Desconocido

int

15

Accion

int

16

Aventuras

int

17

Animacion

int

18

Ninyos

int

19

Comedia

int

20

Crimen

int

21

Documental

int

22

Drama

int

23

Fantasia

int

24

CineNegro

int

38

Restricciones
Descripcin
Primary Key
ID de la pelcula
Nombre de la pelcula
Puntuacin otorgada
por un experto
Puntuacin otorgada
por los usuarios
Ao de la pelcula
Pas de origen de la
pelcula
Director de la pelcula
Guin de la pelcula
Msica de la pelcula
Fotografa
de
la
pelcula
Reparto de la pelcula
Productora
de
la
pelcula
Sinopsis de la pelcula
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

25

Horror

int

26

Musical

int

27

Misterio

int

28

Romance

int

29

CienciaFiccion

int

30

Suspense

int

31

Guerra

int

32

Western

int

33

FechaAlta

Datetime

34

UltimaModificacion

Datetime

Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Igual a 1 si la pelculas
pertenece al gnero
Fecha de alta de la
pelcula en la base de
datos
Fecha de la ltima
modificacin de los
datos de la pelcula

Tabla 30. Informacin de la tabla Peliculas de la base de datos

6.2.5. Tabla PeliculasVistas


La tabla PelculasVistas almacena un historial de las puntuacin otorgadas por
el usuario a las pelculas previamente visualizadas.
Nmero
1
2

Columnas
ID_Usuario
ID_Pelicula

Tipo
int
int

Puntuacion

int

Fecha

Datetime

Restricciones
Descripcin
Primary Key
ID del usuario
Primary Key
ID de la pelcula
Puntuacin otorgada a una
pelcula
Fecha de la puntuacin de
una pelcula.

Tabla 31. Informacin de la tabla PeliculasVistas de la base de datos

6.2.6. Tabla Entropia


La tabla Entropa almacena la informacin perteneciente al proceso de clculo
de la entropa de Shannon realizado para cada uno de los gneros, a partir de las
pelculas visualizadas por un usuario.
Nmero
1
2

Columnas
ID_Usuario
ID_Genero

Tipo
int
Varchar(15)

Restricciones
Descripcin
Primary Key
ID del usuario
Primary Key
Nombre del gnero

39

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

ValorH

double

FechaCalculo

Datetime

Valor
mximo
de
la
diferencia absoluta entre el
valor de la entropa y el
valor de la entropa obtenido
al aadir la nueva pelcula
Fecha de calculo de la
Entropia de Shannon

Tabla 32. Informacin de la tabla Entropia de la base de datos

6.2.7. Tabla EntropiaPrima


La tabla EntropaPrima almacena la informacin perteneciente al proceso de
clculo de la entropa de Shannon, pero incluyendo una nueva pelcula no visualizada
por el usuario.
Nmero
1
2

Columnas
ID_Pelicula
ID_Usuario

int
int

Restricciones
Primary Key
Primary Key

FechaCalculo

Datetime

Primary Key

ValorH

double

Recomendar

Tipo

char

Descripcin
ID de la pelcula
ID del usuario
Fecha de clculo de
Entropa de Shannon
Valor mximo entre
diferencias de entropa
cada uno de los gnero
Valor S si la pelcula
recomendada, N si no
recomendada

la
las
de
es
es

Tabla 33. Informacin de la tabla EntropiaPrima de la base de datos

6.2.8. Tabla Parametros


La tabla Parmetros almacena informacin tcnica, es decir valores especficos
para el funcionamiento del sistema.
Nmero

Columnas

Tipo

UmbralRecalificacion

int

MinPeliculas

int

MaxRecomendaciones

int

Restricciones

Descripcin
Umbral a partir del
cul se inicia el
proceso
de
recalificacin de una
pelcula
Nmero mnimo de
pelculas
a
recomendar
en
el
proceso de registro
Nmero mximo de
pelculas
a
recomendar por el
sistema

Tabla 34. Informacin de la tabla Parametros de la base de datos

40

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

7. DESARROLLO
En ste apartado de desarrollo, se explicar el proceso llevado a cabo en el
proyecto, el cul tiene como fin la implementacin de una aplicacin web.

7.1. Instalacin del entorno de trabajo


El entorno de trabajo utilizado para la implementacin de la aplicacin web est
compuesto por todos los software y bibliotecas utilizadas en ella.
El primer software de trabajo a instalar fue Eclipse Java EE IDE for Web
Developers. El proceso de instalacin consisti en descargar el propio software con la
correspondiente versin, Kepler Service Release 1 [38], desde la pgina oficial del
mismo.
El siguiente software de trabajo a instalar fue Apache Tomcat, siguiendo el
mismo proceso que en el caso anterior, descargando Apache Tomcat versin 6.0
[39] desde la pgina oficial del mismo.
Una vez que fueron instalados ambos software en el propio ordenador, slo
qued conectarlos entre si. Para ello, se abri Eclipse, se accedi al panel de
preferencias, para seleccionar la opcin Server > Runtime Environments y se aadi el
servidor instalado, es decir, Apache Tomcat 6.0, estableciendo el correspondiente
directorio de ubicacin del mismo. Finalmente, se accedi a la ventana Servers, se
abri el men desplegable haciendo doble click sobre ella, seleccionando la opcin
Properties, en la que se especific que el servidor se ejecutara en el localhost, es
decir, en el propio ordenador. Como todo sali bien, se cre automticamente una
carpeta llamada Servers en la ventana de proyectos.
A continuacin, el siguiente software de trabajo a instalar fue MySQL Community
Server. Tal y como se hizo en los anteriores casos, se descarg el propio software con
la correspondiente versin, MySQL Community Server 5.6.14 OSX 10.6 x86 64 bits
[40], desde la pgina oficial del mismo. La descarga proporcionaba el propio software y
un componente, el cul sirve para encender y apagar el servidor; y se instalaron los
dos. Y finalmente, tambin se descarg e instal el software MySQL Workbench
versin 6.0 [41].
A partir de ste punto donde se dispone de todos los software instalados,
comenz la instalacin de las diferentes bibliotecas, frameworks y conectores
necesarios para la implementacin de la pgina web.
La instalacin de la biblioteca Primefaces fue muy sencilla ya que consisti en
descargar, desde la pgina oficial de la misma, un archivo de extensin .jar, el cul
contena la versin de Primefaces 4.0 [42], aadirla a la librera del proyecto, e
importar el namespace a cada fichero .xhtml.

41

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

La instalacin del framework Spring consisti en descargar la versin Spring


Framework versin 3.2.1 [43], desde la pgina oficial del mismo. As como un archivo
de extensin .jar perteneciente a Commons Logging versin 1.1.1 [44], tambin
disponible desde la pgina oficial de Commons Logging. Despus, los archivos
descargados se insertaron en la librera del proyecto. Y posteriormente, se modific el
archivo de WEB-INFO llamado web.xml con los listeners del nuevo framework y se
aadi, a la misma carpeta, un nuevo archivo llamado applicationContext.xml en el
que se definirn los JavaBeans administrados por Spring.
Finalmente, la instalacin del conector JDBC consisti en descargar JDBC
versin 5.1.17 [45], desde la pgina oficial de MySQL y aadirlo a la librera del
proyecto en cuestin.

7.2. Construccin de la base de datos


La primera etapa de implementacin del propio proyecto constituy la
construccin de la base de datos.

7.2.1. Obtencin de la informacin


Una base de datos est formada por dos tipos de informacin: pre-informacin,
es decir, informacin necesaria antes de la implementacin de la aplicacin web y
post-informacin, es decir, informacin generada a medida que la aplicacin entra en
funcionamiento. La pre-informacin se extrajo a partir de la aplicacin web MovieLens
[7], la cul proporciona distintas colecciones: 100.000 puntuaciones de 1.000 usuarios
en 1700 pelculas, 1 milln de puntuaciones de 6.000 usuarios en 4.000 pelculas y 10
millones de puntuaciones por 72.000 usuarios en 10.000 pelculas.
El conjunto de datos escogido fue el primero, 100.000 puntuaciones otorgadas
por 943 usuarios a un total de 1682 pelculas. La informacin se presentaba en
diferentes ficheros, dentro de un archivo comprimido, de los cuales slo eran
relevantes los siguientes:
El fichero u.user contena un listado con la siguiente informacin sobre 943
usuarios:
ID Usuario | Edad | Sexo | Ocupacin | Cdigo postal
El fichero u.data contena un listado de 100.000 puntuaciones otorgadas por
943 usuarios, donde cada usuario haba puntuado como mnimo 20 pelculas
de un total de 1682. La puntuacin flucta entre 1 y 5. La informacin aparece
distribuida de la siguiente manera:
ID Usuario | ID Pelcula | Puntuacin | Timestamp
La lista se muestra ordenada consecutivamente a partir de 1.

42

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

El fichero u.genere contena una listado de todos los gneros de pelculas, es


decir, un total de 19, con sus respectivas ID.
El fichero u.item contena un listado de 1682 pelculas con sus respectivos
datos, los cuales son detallados a continuacin:
ID Pelcula | Ttulo pelcula | Fecha de creacin | Fecha del vdeo | URL de
IMBDb | Desconocido | Accin | Aventuras | Animacin | Nios | Comedia |
Crimen | Documental | Drama | Fantasa | Cine negro | Horror | Musical |
Misterio | Romance | Ciencia ficcin | Suspense | Guerra | Western
Los ltimos 19 campos representan los diferentes tipos de gneros. Un 1
indica que la pelcula pertenece a ese gnero, un 0 que no pertenece. Una
misma pelcula puede estar catalogada con ms de un gnero.
Las ID, tanto de usuarios como de pelculas, que aparecen en los diferentes
ficheros estn correlacionadas.
Sin embargo, la informacin obtenida a travs de MovieLens no cumpla con las
especificaciones de la aplicacin web, por lo tanto, se modific con el fin de adaptarla.
La informacin sobre los datos personales de los usuarios era correcta aunque
insuficiente. De tal manera que se decidi prescindir de esos datos, creando nuevos
datos personales, porque ste hecho no influa sobre el correcto funcionamiento del
algoritmo. Para ello, se cre un pequeo programa en lenguaje Shell. El programa
tena declarados cuatro vectores: el primer vector contena nombres, tanto de chicos
como de chicas, mientras que el segundo slo contena los nombres de chica
aparecidos en el anterior vector, el tercero contena apellidos y el cuarto ocupaciones;
as como otras variables que servan de ndices para recorres cada uno de los
vectores. Los ndices obtenan un valor mediante una funcin que generaba nmeros
aleatorios. As, el programa generaba un fichero de salida con los datos
correspondientes para 943 personas, del cul se muestra un pequeo fragmento:
1|Alex|Serrano Ortiz|M|34|Jubilado
2|Helena|Cruz Ortiz|F|42|Ninguna
3|Jesica|Rodriguez Cubero|F|57|Cientifico
4|Ana|Palacios Cubero|F|25|Programador
5|Nestor|Flores Catalan|M|40|Tecnico
6|David|Flores Catalan|M|48|Profesor
7|Valeria|Hernandez Catalan|F|55|Artista
8|Sara|Hernandez Ruiz|F|31|Entretenimiento
9|Ela|Lopez Ruiz|F|38|Profesor
10|Ana|Lopez Fuentes|F|54|Salud

MovieLens no proporcionaba los datos necesarios para el acceso del sistema,


seguramente por privacidad. Por lo tanto, fue necesario crear otro pequeo programa
en Shell que generase un fichero que contuviese la ID del usuario, el username y el
password. El programa cre los datos mediante un contador que iba incrementndose,
de tal manera que la ID del usuario era el valor mismo del contador, as como en el

43

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

caso del username y el password al cual slo se le aada una a delante de cada
valor, para mantener ambos campos de tipo varchar(20); tal y como se muestra en el
siguiente ejemplo:
1|a1|a1

La informacin sobre los gneros no era tal y como indicaban las


especificaciones de la aplicacin web, as que fue creada de manera manual dada su
corta extensin, al igual que la informacin sobre los parmetros.
La informacin de las pelculas fue modificada, en primer lugar, slo eliminando
campos innecesarios y dejando el espacio correspondiente a nuevos campos para en
un futuro realizar un trabajo de bsqueda y ampliar la informacin de cada pelcula.
Sin embargo, el principal problema que presentaba sta informacin es que cada
pelcula tena asociado ms de un gnero, as que manualmente se cambi ste
aspecto haciendo que cada pelculas estuviera caracterizada por tan slo un gnero,
tal y como est establecido en las especificaciones del algoritmo para la aplicacin
web. Otro aspecto a tener en cuenta fue el valor de la opinin del experto de cada
pelcula, ya que MovieLens no proporcionaba ste dato, ni ninguno similar. Como
consecuencia, se implement un pequeo programa en Java el cul calculaba la
opinin del usuario para todas las pelculas segn el algoritmo explicado en el
apartado 3.3. Asignacin dinmica de pesos. El programa calcul la opinin del
usuario teniendo en cuenta las puntuaciones otorgadas por los usuarios a las
pelculas. ste programa fue reutilizado ya que se convirti en una funcin, llamada
OpinionUsuario, de la aplicacin web.
Finalmente, la informacin sobre las pelculas con las correspondientes
puntuaciones por parte de los usuarios fueron los nicos datos no modificados con el
fin de mantener la veracidad del resultado del algoritmo.

7.2.2. Creacin de la base de datos en MySQL


La base de datos fue construida, gracias a los conocimientos adquiridos en la
asignatura Bases de datos [3], a partir de un script de extensin .sql, focalizndose
en dos sentencias: create table, creacin de tablas, y load data in file, introduccin de
datos en ellas. En la primera, se prest atencin al nombre de las tablas, las campos
contenidos en cada una de ellas, el tipo al que pertenecan y la definicin de las claves
primarias, mientras que en la segunda, se prest atencin al nombre de cada fichero
contenedor de datos, la tabla a la que pertenecan los datos, cmo estaban separados
los datos y en qu orden se encontraban.

7.3. Implementacin de la aplicacin web


La segunda etapa del propio proyecto constituy la implementacin de la
aplicacin web, la cul est dividida en tres capas bien diferenciadas: la capa de
presentacin, la capa de lgica y la capa de datos.

44

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

7.3.1. Capa de presentacin


La Tabla 35 muestra los ficheros de extensin .xhtml, responsables de lo que el
usuario visualizar en su navegador web, y su funcin principal.
Nombre
Login.xhtml
Registrar.xhtml
Registrar_puntuar.xhtml
Profile.xhtml
Perfil_modificar.xhtml
Peliculas_puntuar.xhtml
Recomendaciones.xhtml

Funcin
Autenticar al usuario.
Registrar al usuario.
Permitir puntuar un mnimo de 20 pelculas al usuario
para completar el proceso de registro.
Mostrar los datos del propio usuario al mismo.
Permitir modificar los datos del propio usuario al mismo.
Buscar y puntuar pelculas.
Mostrar recomendaciones personalizadas.

Tabla 35. Ficheros de extensin .xhtml que conforman la capa de presentacin

A continuacin, se muestra el diagrama de navegacin de la capa de


presentacin:

Figura 7. Diagrama de navegacin

La primera pgina de navegacin a la que el usuario accede es login.xhtml, la


cul permite al usuario autenticarse en el sistema con el fin de usar sus servicios. En
sta pgina, el sistema pide al usuario tanto su nombre de usuario como su password.
En ella, la comanda outputLabel simplemente muestra texto, sin embargo, la
comanda inputText permite al usuario escribir texto, es decir se trata de texto de
entrada, y es ah donde el usuario escribir sus datos de acceso, los cuales sern
almacenado en las correspondientes variables de la clase LoginBean. Las comandas

45

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

permiten una serie de opciones: indicar si el campo es requerido o no; y un mensaje


de alerta.
Si los datos introducidos son correctos, el usuario ser redireccionado al men
principal para que comience a usar los servicios de la aplicacin, si por el contrario no
lo son, el sistema permite al usuario volver a introducir de nuevo los datos.

Figura 8. Diagrama de login.xhtml

Por otra parte, la primera pgina cuenta con un mensaje, situado debajo del
formulario de autenticacin, indicando que en caso de ser un usuario no registrado se
puede acceder al proceso de registro mediante el botn yuxtapuesto.
La pgina de registro de nuevos usuarios consiste en un formulario que el
usuario ha de rellenar con sus datos personales, as como los datos para acceder al
sistema. El formulario sigue la misma estructura explicada anteriormente para el de
autenticacin. Una vez el usuario haya completado todos los datos solicitados, el
siguiente paso consiste en puntuar un nmero mnimo pelculas para que el sistema
cuente con un mnimo de informacin inicial para realizar su primera recomendacin.
sta pgina es muy similar a la que el sistema ofrece a los usuarios registrados para
puntuar pelculas visualizadas, as que se explicar detalladamente ms adelante.

46

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Figura 9. Diagrama de registrar.xhtml

Figura 10. Diagrama de registrar_puntuar.xhtml

A las siguiente pginas slo se puede acceder si eres un usuario registrado que
ha completado satisfactoriamente la autenticacin; lo que significa que se tratan de
pginas propiamente del sistema, en las que ya se ofrecen sus servicios. Todas
siguen el mismo diseo (de arriba a abajo): cabecera, men, contenido. El men es un
elemento propio de cualquier interfaz a travs del cul se permite la navegacin entre
pginas distintas. Hoy en da existen una gran cantidad de tipos de mens, en sta
aplicacin se ha optado por un men estilo dock, es decir, un men a partir de iconos.
El dock ofrece una serie de opciones configurables como su colocacin en la pgina,
arriba o abajo, el tamao mximo de los iconos, cunto se agrandan los iconos al
pasar el ratn por encima de ellos y su alineacin horizontal. En cada uno de los tems
que formarn el dock se especifica el nombre que aparecer debajo de cada uno de
ellos, dnde encontrar la imagen que conforma el icono y la direccin a la cul el
sistema redirecciona en caso de que el usuario presione el tem.
La pgina profile.xhtml expone los datos personales del usuario, as como el
nombre de usuario para acceder al sistema. sta pgina es nicamente de

47

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

visualizacin, sin embargo, un botn con el texto Modificar en su interior, situado


debajo de la informacin del usuario, permite acceder a una pgina similar a la anterior
en la que los datos s pueden ser modificados. La nica diferencia a nivel de cdigo
entre ambas pginas es que en el caso de profile.xhtml los campos dnde aparecen
los propios datos del usuario son del tipo outputText, porque su funcin es ser visibles,
mientras que en perfil_modificar.xhtml son del tipo inputText para que a parte, tambin
sean modificables.

Figura 11. Diagrama de profile.xhtml

Figura 12. Diagrama de perfil_modificar.xhtml

La pgina donde el usuario punta las pelculas previamente vistas es


peliculas_puntuar.xhtml. El sistema presenta un listado de pelculas en la que
aparece el ttulo de cada una junto a un elemento grfico para puntuar esa pelcula. El

48

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

elemento grfico en el cul el usuario destina una puntuacin comprendida entre 1 y 5


a una pelcula, est compuesto por cinco estrellas. Las estrellas pueden ser
transparentes, nicamente definidas por el contorno, si la pelcula nunca ha sido
puntuada o de color amarillo, donde el nmero de estrellas amarillas determina la
puntuacin, si la pelcula ha sido puntuada anteriormente o en el mismo momento. Por
lo tanto, la pgina tambin expone las pelculas puntuadas con su correspondiente
puntuacin, siendo sta tambin modificable. Si por ejemplo, el usuario presionase la
tercera estrella de una pelcula no visualizada, las tres primeras estrellas se
colorearan de amarillo, significando que le otorga un 3 sobre 5 como puntuacin.
La comanda rating expone o almacena el valor de la puntuacin de una pelcula.
Entre sus atributos destaca la posible configuracin del nmero de estrellas y la opcin
de un pequeo icono de reinicio, en la que slo pulsndolo la puntuacin de una
pelcula volvera a 0.
El usuario se puede mover a travs del listado, organizado en grupos de cinco,
gracias a los correspondientes botones situados a cada uno de los lados que le
permiten avanzar o retroceder en ella. El usuario ha de presionar el botn situado en la
parte inferior de la lista para que el sistema guarde los datos en el caso de que el
usuario haya atribuido nuevas puntuaciones o modificado alguna anterior.

Figura 13. Diagrama de peliculas_puntuar.xhtml

Finalmente, la pgina recomendaciones.xhtml presenta un listado de cmo


mximo 20 pelculas recomendadas de manera personalizada por el sistema a cada
usuario segn sus preferencias plasmadas en su puntuacin a pelculas previamente
visualizadas.

49

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Figura 14. Diagrama de recomendar.xhtml

7.3.2. Capa de lgica


La Tabla 36 muestra los ficheros de extensin .java responsables de la capa
lgica de la aplicacin web que darn respuesta a las peticiones de los usuarios.
Nombre

Funcin

LoginBean.java
RegistrarBean.java

Autenticar al usuario.
Registrar al usuario.

RegistrarPuntuarBean.java

Permitir puntuar un mnimo de 20 pelculas al usuario


para completar el proceso de registro.

PerfilBean.java
PerfilModificarBean.java
PeliculasPuntuarBean.java
RecomendarBean.java

Mostrar los datos del propio usuario al mismo.


Permitir modificar los datos del propio usuario al
mismo.
Buscar y puntuar pelculas.
Mostrar recomendaciones personalizadas.

Tabla 36. Ficheros de extensin .java que conforman la capa de lgica

Tal y como se ha explicado con anterioridad, la aplicacin web se ha de conectar


a la base de datos tanto para solicitar datos como para almacenar en ella nuevos
datos. Por sta razn, se implement una funcin para establecer la conexin a la
base de datos. La funcin getConnection permite que la aplicacin web se conecte a la
base de datos, la cul est hospedada en el propio ordenador. En primer lugar, la
funcin inicializa el driver mediante la instancia Class.forName(), y seguidamente
accede a la base de datos a travs de una direccin en la que se especifica el driver,
es decir JDBC, el nombre de la aplicacin encargada de gestionar la base de datos, es
decir, MySQL, el nombre de la mquina dnde se ejecuta el servidor de MySQL, en
ste caso el localhost, el nombre de la base de datos que contiene los datos para la
aplicacin, es decir test, y los datos de usuario y password.
La clase LoginBean obtiene, mediante los respetivos mtodos get() de ambos
atributos, el username y el password que el usuario ha introducido en el formulario de

50

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

autenticacin para acceder a la aplicacin web. Seguidamente, la clase inicia la


conexin con la base de datos para realizar una consulta.
La consulta solicita la ID del usuario y el password cuando el nombre del usuario
coincide con el username introducido. La clase Statement es la encargada de enviar
comandos SQL a la base de datos, sus mtodos ms importantes son executeQuery()
y executeUpdate(), el primero slo para consultas (select o similares) y el segundo
para sentencias que implican modificaciones en la base de datos, como insert, update,
delete, etc; los resultados se devolvern en un ResultSet a travs de un mtodo
llamado next().
La clase compara el password introducido por el usuario con el almacenado en
la base de datos, en caso de coincidir el sistema despliega un mensaje de bienvenida,
y en caso contrario un mensaje de error. Si el password ha sido vlido significa que el
usuario ha podido autenticarse correctamente, por lo que el sistema le redirecciona al
men principal.
Finalmente, las conexiones abiertas con la base de datos como Connection,
Statement y ResultSet son cerradas. El cierre de las conexiones es implementado de
la misma manera en todas las clases que componen la aplicacin web.
La clase PerfilBean necesita los datos personales del usuario, los cuales se
encuentran almacenados en la tabla DatosPersonales de la base de datos y los datos
de acceso a la aplicacin, los cuales se encuentran almacenados en la tabla Usuario.
Sin embargo, necesita saber la ID del usuario para realizar las consultas. La ID del
usuario ha sido almacenado en la clase LoginBean as que acceder a ella gracias a la
propiedad de inversin/inyeccin de control de Spring. Para ello, se declarar un
atributo del tipo LoginBean, el cul nos permite acceder a todos los atributos de esa
misma clase y se acceder al valor de la ID del usuario contenida en la clase
LoginBean. Las clases restantes tambin seguirn este mismo proceso para la
obtencin de la ID del usuario.
Una vez obtenida la ID del usuario se solicitan las correspondientes consultas
para almacenar la informacin de cada una de las columnas: nombre, apellidos, etc.
en sus respectivos atributos, mediante los mtodos set() de cada uno.
La clase PerfilModificarBean tiene una funcin llamada actualizar que tal y
como el nombre indica, actualiza tanto los datos personales del usuario, como los
datos de acceso a la aplicacin, que hayan podido ser modificados. En ste caso, al
tratarse de una sentencia que implica una modificacin se utiliza executeUpdate() para
su ejecucin.
La clase PeliculasPuntuarBean se encarga de mostrar un listado de pelculas al
usuario, con el fin de que ste punte aquellas que haya visto, y guardar las
puntuaciones otorgadas. Sin embargo, su funcin va ms all porque tambin muestra
las pelculas y su correspondiente puntuacin, que el usuario haya podido atribuir con
anterioridad, las puntuaciones de las cuales tambin pueden ser modificadas. Las
principales funciones implementadas son: siguiente, anterior y submit. La funcin

51

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

siguiente inicializa todas las variables a cero. Seguidamente, consulta el nombre de


una pelcula en la base de datos, y tras esto consulta si existe una puntuacin para
dicha pelcula dada por el mismo usuario. En el caso que la pelcula haya sido
puntuada se vuelve a hacer otra consulta para saber la puntuacin otorgada en su
momento, y se almacena. El mismo proceso se emplea para un total de cinco pelculas
porque la aplicacin muestra un listado ordenado de pelculas en grupos de cinco. La
funcin anterior es completamente igual a la mencionada, simplemente en vez de
seleccionar las pelculas siguiendo un contador ascendente utiliza uno descendente.
De sta manera, con ambas funciones se permite a los usuarios avanzar y retroceder
en el listado. La funcin submit almacena las puntuaciones en la base de datos, para
ello se contemplan dos casos: la pelcula nunca ha sido puntuada o la pelcula haba
sido puntuada y su puntuacin ha sido modificada por el usuario. En el caso de
tratarse de la primera opcin, la funcin realiza una sentencia de tipo insert, mientras
que de tratarse de la segunda opcin realiza una sentencia de tipo update. Adems,
sta funcin tambin es la encargada de iniciar el proceso de recalificacin llamando a
la funcin correspondiente. La funcin OpinionUsuario comprueba el nmero de
puntuaciones otorgadas a la pelcula pasada por parmetro y en caso de tratarse de
un valor superior al parmetro UmbralRecalificacin, adquiere las puntuaciones a esa
misma pelcula otorgadas por distintos usuarios, a travs de la base de datos, para
calcular las operaciones especificadas en el apartado 3.1. Asignacin dinmica de
pesos y finalmente insertar en la base de datos el resultado a los anteriores clculos.
La clase RecomendarBean lleva a cabo los procesos descritos en los apartados
3.2. Clculo de la Entropa de Shannon y 3.3. Recomendacin. La funcin principal
consulta el nmero total de pelculas vistas por el usuario a la base de datos. A
continuacin, calcula la Entropa de Shannon para cada tipo de gnero, teniendo en
cuenta las pelculas visualizadas por el usuario. La funcin encargada del clculo es
hGenero. sta funcin almacenar en maps una parte de los valores calculados en el
proceso porque sern tiles ms adelante. A continuacin, la funcin principal crea un
vector que contiene todas las IDs de las pelculas no vistas por el usuario, el cul
posteriormente recorre con el fin de calcular la Entropa de Shannon para cada tipo de
gnero, como en el anterior caso pero aadiendo una de las pelculas no vistas por el
usuario. La funcin encargada del clculo es recomendarGenero. La anterior funcin
necesita adquirir los valores calculados en hGenero que han sido guardados en maps.
Finalmente, la funcin principal cuenta con los valores resultantes de la Entropa de
Shannon para cada gnero, teniendo en cuenta las pelculas vistas por el usuario y los
valores resultantes de la Entropa de Shannon para cada gnero, teniendo en cuenta
las pelculas vistas por el usuario y una nueva pelcula no visualizada, la cul ir
variando. La funcin principal calcula la diferencia absoluta entre cada Entopa del
mismo tipo, por ejemplo: la Entropa para el gnero accin teniendo en cuenta todas
las pelculas vistas del mismo gnero y la Entropa para el gnero accin teniendo en
cuenta una pelcula no vista por usuario que no tiene por que ser del mismo gnero.
La mxima diferencia entre todas las Entropas es comparada con el valor de psilon,
si es menor que psilon significa que la nueva pelcula es recomendable, mientras que
si es mayor la pelcula no es recomendable. El clculo de la Entropa de Shannon est
basado en un conjunto de operaciones, entre las cules destacan, sumas, restas,
productos, divisiones, logaritmos, sumatorios, etc. las cules se han implementado
gracias a la librera existente en Java llamada Math. Toda la informacin relativa a los

52

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

clculos de la Entropa de Shannon son almacenados en las tablas Entropia y


EntropiaPrima de la base de datos.
La clase RegistrarBean obtiene los datos escritos por el usuario en el formulario
de la pgina de navegacin a travs de cada uno de los mtodos get() de los atributos
y los almacena. A continuacin, la clase compara si ambos passwords son iguales, si
es as ejecuta dos sentencias: una para insertar los datos de usuario en la tabla
Usuario de la base de datos y la otra para insertar los datos personales del usuario en
la tabla DatosPersonales; si no es as muestra un mensaje de error avisando que los
passwords no son iguales.
La
clase
RegistarPuntuarBean
es
completamente
igual
que
PeliculasPuntuarBean, la nica particularidad es que en ste caso la ID del usuario no
se obtiene a travs de la clase LoginBean porque el usuario an no se ha autenticado,
sino que est en el proceso de registro. As que siguiendo el mismo proceso que en
los casos anteriores de inversin/inyeccin de control de Spring, la ID del usuario se
obtiene a partir de la clase RegistarBean.
Los principales problemas encontrados durante la implementacin de la capa de
lgica fueron los siguientes:
Sentencias errneas de MySQL: Se solucionaron mediante la prueba sobre
un script de MySQL, de las sentencias sobre consultas a la base de datos,
para ver el resultado que devolvan las sentencias.
Tipos de atributos errneos al usar funciones de la librera Math de Java: Se
solucionaron atendiendo a los tipos especificados. Por ejemplo, la funcin
Math.log() retorna el logaritmo de un valor de tipo double, algo a lo que no se
prest atencin en un principio, introduciendo valores de tipo int.
Errores comunes de programacin: Se solucionaron observando dnde se
producan los errores e introduciendo system.out.println() para extraer por
pantalla la/s variables problemticas y as poder ver dnde resida el error.
Hay que mencionar, que la gran mayora de stos problemas fueron encontrados
en la implementacin de la clase RecomendarBean, debido a la elevada complejidad
matemtica y consecuentemente al elevado nmero de aspectos a tener en cuenta, de
sta clase frente a las otras.

7.3.3. Capa de datos


La explicacin sobre la implementacin de la capa de datos ser omitida ya que
ha sido explicada con todo detalle en el apartado 7.2. Construccin de la base de
datos.

53

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

8. RESULTADOS
En ste apartado de resultados, se estudiar el comportamiento de la aplicacin
web con el objetivo de comprobar tanto el funcionamiento de la misma como la
metodologa [6] a usar en ella.
A nivel de funcionamiento, la aplicacin web cumple el objetivo establecido,
desempeando las especificaciones tanto funcionales como no funcionales.
La gestin de usuarios es estricta. Si el usuario no est registrado o si el
username o el password no son correctos, el sistema no permite al usuario el
acceso a los servicios del mismo.
La aplicacin ofrece los siguientes servicios: registro de usuarios,
visualizacin y modificacin del perfil, navegacin por el listado de pelculas
existentes en la base de datos, otorgar nuevas puntuaciones a pelculas y
modificar antiguas, y visualizacin de las recomendaciones.
La base de datos es actualizada correctamente mientras la aplicacin est
funcionando, insertando nuevos datos o modificando los antiguos, segn lo
indique la situacin.
La aplicacin realiza el proceso completo de la metodologa de
recomendacin, as lo reflejan las tablas de Entropia y EntropiaPrima de la
base de datos, en la cul son insertados los datos correspondientes del
clculo.
La comprobacin se ha llevado a cabo mediante la ejecucin de la aplicacin
web, prestando atencin a cada uno de los casos de uso.
Con el fin de analizar la metodologa de recomendacin a seguir por la aplicacin
web, se han realizado diversos casos de estudio, detallados a continuacin.

8.1. Primer caso de estudio


La primera prueba reproduce el mismo caso estudiado en el apartado 3.
Metodologa de recomendacin, es decir, un usuario, el cul slo ha otorgada su
puntuacin a 6 pelculas de distintos gneros: western, terror y comedia; al cul la
aplicacin web calcula la recomendacin para dos pelculas, las cules pertenecen a
los gneros western y comedia, respectivamente.
En la Tabla 37 se recoge un resumen de los datos mencionados:


ID Pelcula
200
51
217
219

Western

Terror
0.8

0.2
0.4
0.8

54

Comedia

Helena Muoz Escudero

97
177
232
4

Sistema de recomendacin multimedia basado en perfiles de usuario

0.6
0.8
0.6
0.8

Tabla 37. Tabla a modo de resumen del primer caso de estudio


Las puntuaciones, sin normalizar, otorgadas a las pelculas vistas por el usuario
se pueden comprobar en la Figura 15, en la que se recogen los datos almacenados en
la tabla PeliculasVistas de la base de datos.

Figura 15. Tabla PeliculasVistas

Una vez ejecutada la metodologa de recomendacin [6] de la aplicacin web


para ste usuario, se observarn los resultados almacenados en la base de datos.
La Figura 16 recoge los datos almacenados en la tabla Entropia de la base de
datos:


Figura 16. Tabla Entropia

Y la Figura 17 los datos almacenados en la tabla EntropiaPrima:



Figura 17. Tabla EntropiaPrima

Tal y como se puede apreciar, el funcionamiento de la metodologa de la


aplicacin web es correcto ya que los datos calculados por ella concuerdan con los
clculos a mano en el ejemplo del apartado 3. Metodologa de recomendacin.

8.2. Segundo caso de estudio


La segunda prueba reproduce el caso de un usuario, el cul slo ha otorgada su
puntuacin a 8 pelculas de distintos gneros: western, terror, comedia y animacin; al
cul la aplicacin web calcula la recomendacin para tres pelculas, las cules
pertenecen a los gneros terror, animacin y comedia, respectivamente.

55

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

En la Tabla 38 se recoge un resumen de los datos mencionados:


ID Pelcula
200
51
217
219
97
177
4
1
351
95
13

Western

Terror
0.8

Comedia

Animacin

0.2
0.4
0.8
0.6
0.8
0.2
0.4
0.6
0.8
0.8
Tabla 38. Tabla a modo de resumen del segundo caso de estudio

Las puntuaciones, sin normalizar, otorgadas a las pelculas vistas por el usuario
se pueden comprobar en la Figura 18, en la que se recogen los datos almacenados en
la tabla PeliculasVistas de la base de datos.

Figura 18. Tabla PeliculasVistas

Una vez ejecutada la metodologa de recomendacin [6] de la aplicacin web


para ste usuario, se observarn los resultados almacenados en la base de datos.
La Figura 19 recoge los datos almacenados en la tabla Entropia de la base de
datos:

Figura 19. Tabla Entropia

Y la Figura 20 los datos almacenados en la tabla EntropiaPrima:

Figura 20. Tabla EntropiaPrima

56

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

A continuacin, se presenta la Tabla 39, una tabla resumen con los resultados,
obtenidos a mano, de los clculos de la metodologa de recomendacin:
ID Pelcula
13
95
351

H-H
mxima
0.041955
0.022786
0.022786

Western
H
H
0.375
0.35221
0.375
0.35221
0.375
0.35221

Terror
H
0.4375
0.4375
0.4375

H
0.395544
0.417209
0.417209

Comedia
H
H
0.375 0.35221
0.375 0.35221
0.375 0.35221

Animacin
H
H
0.375
0.35221
0.375
0.35221
0.375
0.35221

Tabla 39. Tabla de resultados del segundo caso de estudio tras la aplicacin de la metodologa

El valor de la variable psilon, para ste ejemplo, es 0.11111.


Tal y como se puede apreciar, el funcionamiento de la metodologa de la
aplicacin web es correcto ya que los datos calculados por ella concuerdan con los
clculos a mano.

8.3. Tercer caso de estudio


La tercera prueba reproduce el caso de un usuario, el cul ha otorgada su
puntuacin a 272 pelculas, las cules pertenecen a 19 gneros distintos; al cul la
aplicacin web calcula la recomendacin para todas las pelculas almacenadas en la
base de datos, que el propio usuario no ha visto.
Las puntuaciones, sin normalizar, otorgadas a las pelculas vistas por el usuario
se pueden comprobar en la Figura 21, en la que se recogen los datos almacenados en
la tabla PeliculasVistas de la base de datos. Sin embargo, pese a que la base de datos
almacena la puntuacin de las 272 pelcula, en la correspondiente figura slo se
mostrarn las 29 primeras pelculas por motivos de espacio.

57

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Figura 21. Tabla PeliculasVistas

Una vez ejecutada la metodologa de recomendacin [6] de la aplicacin web


para ste usuario, se observarn los resultados almacenados en la base de datos.
La Figura 22 recoge los datos almacenados en la tabla Entropia de la base de
datos:

58

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Figura 22. Tabla Entropia

Y la Figura 23 los datos almacenados en la tabla EntropiaPrima:

59

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

Figura 23. Tabla EntropiaPrima

El valor de la variable psilon, para ste ejemplo, es 0.003663003.


Tal y como se puede apreciar, el funcionamiento de la metodologa de la
aplicacin web es correcto, sin embargo, la aplicacin web no recomienda ninguna
pelcula. Al observar la figura que contiene la tabla Entropia se puede apreciar que el
clculo de la Entropa de cada gnero es correcto. Y si se presta atencin a la tabla
EntropiaPrima se puede apreciar que el valor mximo de la diferencia absoluta entre
entropas del mismo gnero siempre es el mismo. La explicacin de ste fenmeno
reside en que el valor mximo mencionado, el cul pertenece a un determinado
gnero, es mayor que el valor de psilon. Por lo que se deduce que hay una limitacin
en el rango.

60

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

9. PRESUPUESTO
El presupuesto del proyecto est dividido en tres partes: mano de obra, software
y servidor. La Tabla 40 presenta el desglose del coste del proyecto:

Cantidad
480
4
1
1
1
1

Descripcin
Mano de obra

Eclipse
MySQL Workbench
MySQL Community Server
Servidor web Apache Tomcat
Servidor:

1
2

Servidor Supermicro SYS-6016T-NTRF


INTEL DP WETMERE 6C X5650
2.66G 12M 6.4GT
DDR3 1333 8GB ECC REGISTERED
HUA722020ALA330 HITACHI 2TB
7200 SATAII 32 MB
ADAPTEC RAID 5405 SATA/SAS
KIT PCI-E 4 PORT INT
3 aos de garanta
- RAID 10 con los 4 discos pero solo de 300
GB (150 GB de cada disco) para S.O.
- RAID 5 con los 4 discos con el resto de
espacio (5.2TB netos) para datos

Importe

8 por hora

3840

0
0
0
0

0
0
0
0

6780

6780

Software(*):

8
4

Precio unitario

Coste TOTAL (sin IVA)

10620

Tabla 40. Presupuesto

(*) El software es open source, es decir, cdigo libre, por lo que no tiene ningn
coste.
Sobre el presupuesto, cabe matizar que se ha escogido un solo servidor, el cul
albergara tanto la aplicacin web como la base de datos, para reducir el coste del
presupuesto. El servidor escogido, el cul cumple de manera exagerada las
necesidades de la aplicacin desarrollada en el proyecto, es nicamente orientativo,
por lo que otro podra ser perfectamente elegido, siempre y cuando cumpliese las
necesidades bsicas de la aplicacin.

61

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

10. CONCLUSIN
El objetivo inicial de ste Proyecto Final de Grado, el cul era la creacin de una
aplicacin web de recomendacin de pelculas basada en perfiles de usuario,
mediante una metodologa [6] fundamentada en la Entropa de Shannon, ha sido
alcanzado gracias a la creacin de la correspondiente base de datos y la
implementacin de la propia aplicacin.
La aplicacin web contiene las funciones bsicas necesarias para lograr las
especificaciones del sistema, stas son: registrar nuevos usuarios, permitir a los
usuarios autenticarse ante el sistema, otorgar puntuaciones a pelculas y visualizar las
recomendaciones proporcionadas por el sistema. Adems, una funcin extra fue
aadida, la visualizacin de los datos del usuario y la posibilidad de ser modificados.
La interfaz de la aplicacin web es muy sencilla. A su favor, hay que decir que
esto hace de ella una interfaz intuitiva ya que los mdulos estn dispuestos de manera
que visualmente quedan bien diferenciados ya que el objetivo era una aplicacin
funcional y resolutiva, a que fuese llamativa.
A nivel de lgica, la aplicacin web ha estado implementada desempeando
satisfactoriamente las operaciones necesarias para desarrollar la metodologa [6]. Y
siguiendo los estndares de las tecnologas utilizadas.
La base de datos creada para la aplicacin cumple con creces todos los
requisitos porque no slo cubre las necesidades de la metodologa de recomendacin
[6] seguida en la aplicacin web, sino que va ms all, ofreciendo ms campos de
informacin tanto sobre los datos personales del usuario como de las pelculas.
La aplicacin web ha sido monousuario en vez de multiusuario debido a que la
aplicacin web no se ha albergado en un servidor de Internet, as como la base de
datos tampoco en un servidor remoto.
Sin embargo, el resultado de la aplicacin a nivel metodolgico no ha sido el
esperado inicialmente, ya que segn ha quedado demostrado en el apartado 8.
Resultados, cuando la recomendacin se realiza para un usuario el cul ha puntuado
un nmero bajo de pelculas, la aplicacin s que recomienda pelculas, mientras que
en el caso de un usuario el cul ha puntuado un nmero elevado de pelculas no se
recomienda ninguna pelcula, lo cul se explica como una limitacin en el rango.
Finalmente, es importante expresar lo gratificante que ha sido realizar ste ltimo
viaje en la carrera a modo de Proyecto Final de Grado, en donde he podido aplicar
algunas de las competencias enseadas durante la titulacin: programacin orientada
a objetos, bases de datos, lenguaje HTML, XML y Bash, etc; y por lo que ha supuesto
a nivel de aprendizaje: introduccin al lenguaje de programacin en XHTML y Java,
configuracin del entorno para la implementacin de una aplicacin web, conocimiento
de las distintas arquitecturas y tecnologas para ello, etc. Por lo tanto, me llevo una
buena sensacin por haber realizado ste proyecto que es la culminacin a varios
aos de aprendizaje y crecimiento, tanto a nivel acadmico como personal.

62

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

10.1. Trabajo futuro


El proyecto podra continuar las siguientes lneas de ampliacin, con el objetivo
de enriquecer la aplicacin web tanto a nivel esttico, de contenido y funcional.
La principal mejora consistira en albergar la aplicacin web en un servidor de
Internet, as como la base de datos en un servidor remoto, con lo que se conseguira
que la aplicacin web fuese multiusuario.
A nivel de contenido, sera importante contemplar una ampliacin de la
informacin contenida en la base de datos, aadiendo informacin adicional sobre las
pelculas como quin es el director, el reparto, la sinopsis de la pelcula, etc; porque
los datos obtenidos gracias a MovieLens no los facilitaban. Sin embargo, en la base de
datos, muchos de stos campos s han sido implementados por considerarse
importantes. As que el trabajo a seguir consistira en la bsqueda de la informacin e
insercin de la misma en la base de datos, en ningn momento consistira en modificar
la base de datos. As como, ampliar el nmero de pelculas almacenadas en la base
de datos, ofreciendo una mayor variedad al cliente.
Adems, la aplicacin web podra aadir ms funcionalidades como otros
mtodos de bsqueda de pelculas, un historial de pelculas vistas, un ranking de
pelculas mejor valoradas, etc.
A nivel esttico, la aplicacin web podra ser rediseada con el objetivo de ser
ms atractiva visualmente a los usuarios.
Otro avance a considerar sera convertir el sistema en multiplataforma de tal
manera que no slo se pudiese acceder al sistema mediante el navegador web, sino
tambin a travs de una aplicacin para mvil o tablet. Gracias al uso en la
implementacin de la aplicacin web de tecnologas tambin disponibles para otras
plataformas, como por ejemplo Primefaces, no habra que modificar gran parte de
cdigo.
As mismo, teniendo en cuenta el auge de las redes sociales sera otro punto
fuerte a implementar, el vincular la aplicacin a redes sociales para permitir a los
usuarios compartir sus puntuaciones, recomendaciones, etc. con sus amigos de
Facebook [46], Twitter [47], entre otras.
Finalmente, el proyecto podra expandirse, parametrizando tanto la base de
datos como la aplicacin web para el uso de la metodologa [6] de sta aplicacin en
otros campos de estudio como la asistencia mdica, el turismo [48], el deporte, la
comida, e incluso sobre centros comerciales [49] o restaurantes y museos.

63

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

11. BIBLIOGRAFA
[1] https://intranet7.eet.upc.edu/guiesdocents/descarregar/320095/es : Plan de estudio
de la asignatura de Fundamentos de informtica impartida en la EET ltima visita:
10/05/2014 ltima visita: 08/05/2014
[2] https://intranet7.eet.upc.edu/guiesdocents/descarregar/320099/es : Plan de estudio
de la asignatura de Estructura de datos y orientacin a objetos impartida en la EET
ltima visita: 08/05/2014
[3] https://intranet7.eet.upc.edu/guiesdocents/descarregar/320103/es: Plan de estudio
de la asignatura de Bases de datos impartida en la EET ltima visita: 08/05/2014
[4] https://intranet7.eet.upc.edu/guiesdocents/descarregar/320108/es: Plan de estudio
de la asignatura de Fundamentos de redes telemticas impartida en la EET ltima
visita: 08/05/2014
[5] https://intranet7.eet.upc.edu/guiesdocents/descarregar/320122/es: Plan de estudio
de la asignatura de Visin por computador impartida en la EET ltima visita:
08/05/2014
[6] Lpez-Herrera, Josefina. A New Approach of Shannon Entropy in Recommender
Systems. Proceedings of the 10th IASTED International Conference, Artificial
Intelligence and Soft Computing. (2006) August 26-30, Palma De Mallorca. ISBN: 088986-610-4
[7] http://movielens.org : Pgina oficial de MovieLens ltima visita: 10/05/2014
[8] Jannach D, Zanker M, Felfering A, Friedrich G. An introduction to recommender
systems. Cambridge University Press (2010) ISBN-13: 978-0521493369
[9] Ricci F, Rokach L, Shapira B, Kantor P.B. Recommender systems handbook.
Springer (2011) ISBN-13: 978-0387858197
[10] Linden G, Smith B, York J. Item-to-item collaborative filtering. Internet
Computing, IEEE. (2003) ISSN: 1089-7801
[11] Ekstrand M, Riedl J, Konstan J. Collaborative filtering recommender systems.
(2011) DOI: 10.1561/1100000009
[12] Burke, Robin. Hybrid web recommender systems. The adaptive web. Springer
(2007) ISBN: 978-3-540-72078-2
[13] http://www.jinni.com : Pgina oficial de Jinni ltima visita: 10/05/2014
[14] http://www.criticker.com : Pgina oficial de Criticker ltima visita: 10/05/2014

64

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

[15] http://www.nanocrowd.com : Pgina oficial de Nanocrowd ltima visita:


10/05/2014
[16] https://www.netflix.com/global : Pgina oficial de Netflix ltima visita: 10/05/2014
[17] http://www.imdb.com : Pgina oficial de IMDb ltima visita: 10/05/2014
[18] https://www.flixster.com : Pgina oficial de Flixter ltima visita: 10/05/2014
[10] http://www.rottentomatoes.com : Pgina oficial de Rotten Tomatoes ltima visita:
10/05/2014
[20] http://clerkdogs.wordpress.com : Pgina oficial de Clerkdogs ltima visita:
10/05/2014
[21] http://www.plus.es : Pgina oficial de Canal + Espaa ltima visita: 10/05/2014
[22] http://www.java.com/es : Pgina oficial de Java ltima visita: 15/05/2014
[23] Prez Montes, Francisco. Aprende a programar con Java. Ediciones Paraninfo
(2012) ISBN: 9788497321303
[24] Hernaez Molera J.M, Aguirre T. Programacin en Java 6. McGraw-Hill (2011)
ISBN: 9786071506184
[25] Groussard, Thierry. Java 6: Los fundamentos del lenguaje Java. ENI (2009)
ISBN: 9782746052239
[26] http://www.eclipse.org : Pgina oficial de Eclipse ltima visita: 17/05/2014
[27] http://tomcat.apache.org : Pgina oficial de Apache Tomcat ltima visita:
17/05/2014
[28] http://www.mysql.com : Pgina oficial de MySQL ltima visita: 17/05/2014
[29] http://www.primefaces.org : Pgina oficial de Primefaces ltima visita:
17/05/2014
[30] http://www.primefaces.org/showcase : Documentacin Primefaces ltima visita:
17/05/2014
[31] http://richfaces.jboss.org : Pgina oficial de Richfaces ltima visita: 17/05/2014
[32] http://spring.io : Pgina oficial de Spring ltima visita: 17/05/2014
[33] Walls, Craig. Spring. Anaya Multimedia (2008) ISBN: 9788441524972

65

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

[34] http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html :
Pgina oficial de JavaBeans ltima visita: 17/05/2014
[35] http://www.oracle.com/technetwork/java/javase/jdbc/index.html : Pgina oficial de
JDBC ltima visita: 17/05/2014
[36] Cuadra Fernndez, Dolores. Desarrollo de bases de datos. RA-MA (2013) ISBN:
9788499641249
[37] Nevado Cabello, Maria Antonia. Introduccin a las bases de datos relacionales.
Vision Net (2010) ISBN: 9788498868098
[38] https://www.eclipse.org/downloads/packages/eclipse-ide-java-eedevelopers/keplersr2 : Pgina de descarga de Eclipse Java EE IDE for Web
Developers versin Kepler Service Release 1 ltima visita: 24/05/2014
[39] http://tomcat.apache.org/download-60.cgi : Pgina de descarga de Apache
Tomcat versin 6.0 ltima visita: 24/05/2014
[40] http://dev.mysql.com/downloads/mysql : Pgina de descarga de
Community Server 5.6.14 OSX 10.6 x86 64 bits ltima visita: 24/05/2014

MySQL

[41] http://dev.mysql.com/downloads/workbench : Pgina de descarga de MySQL


Workbench versin 6.0 ltima visita: 24/05/2014
[42] http://www.primefaces.org/downloads.html : Pgina de descarga de Primefaces
versin 4.0 ltima visita: 24/05/2014
[43]http://ebr.springsource.com/repository/app/library/version/detail?name=org.springfr
amework.spring&version=3.2.1.RELEASE : Pgina de descarga de Spring Framework
versin 3.2.1 ltima visita: 24/05/2014
[44] http://archive.apache.org/dist/commons/logging/binaries/ : Pgina de descarga de
Commons Logging versin 1.1.1 ltima visita: 24/05/2014
[45] http://dev.mysql.com/downloads/connector/j/ : Pgina de descarga de JDBC
versin 5.1.17 ltima visita: 24/05/2014
[46] https://es-es.facebook.com/ : Pgina oficial de Facebook ltima visita:
03/06/2014 ltima visita: 31/05/2014
[47] https://twitter.com : Pgina oficial de Twitter ltima visita: 31/05/2014
[48] Guzmn lvarez, Csar Augusto. Sistema de recomendacin y planificacin
turstica de la ciudad de Valencia va web Departamento de Sistemas Informticos de
Valencia, UPV (2009) Valencia, Espaa. http://hdl.handle.net/10251/12242

66

Helena Muoz Escudero

Sistema de recomendacin multimedia basado en perfiles de usuario

[49] Otero Foliaco, Jai Enrique Diseo de un sistema recomendador de productos


para centros comerciales (2013) ISSN: 1390-4663

67

You might also like