Citation
Giménez Álvaro, Javier
(2018).
Improve user defaults on flexible databases using machine learning algorithms.
Proyecto Fin de Carrera / Trabajo Fin de Grado, E.T.S. de Ingenieros Informáticos (UPM), Madrid, España.
Abstract
El objetivo de este proyecto ha sido la mejora del algoritmo de autogeneración de
valores predeterminados en FleSe, para que estos esten personalizados al usuario.
FleSe es una aplicación web diseñada para la busqueda en bases de datos, con
el objetivo de recomendar elementos en función de las búsquedas actuales. Esta
aplicación, tiene la capacidad de insertar por cada usuario los valores que le definen
a él(no confundir con valores predefinidos).
Para las busquedas borrosas, se utiliza Ciao, un interprete de Prolog con la capacidad
de instalarle paquetes que expandan el standar ISO Prolog. En concreto, en estos
momentos hace uso de las librerias Fuzzy Prolog y mas concretamente, RFuzzy, la
cual se utilizará para definir los rangos de los elementos predeterminados.
La idea principal del algoritmo consiste en comprobar el usuario que ha definido para
el resto de funciones en el sistema, para asi elegir cual es el valor predeterminado que
mas se le asemeja para finalmente devolverle al usuario el valor predeterminado del
grupo mas parecido al suyo, aunque no sea el que le corresponda segun sus valores
de usuario.
Durante el desarrollo del proyecto se ha tenido que reestructurar el algoritmo, al
igual que corregir un par de errores no contemplados en el ultimo cambio. Con esto
se ha expandido el proyecto a la vez de mejorarlo y optimizarlo, ya que previamente
tenia un tiempo de ejecucion muy extenso. La mayor problematica del proyecto es
las diferencias con los enfoques clasicos en estos, ya que normalmente se plantean
como recomendaciones por uso, mientras que en este caso hay que plantearlo como
definir conceptos.
Como posibles mejoras futuras, se necesita un nuevo sistema de almacenamiento
de los usuarios. en estos momentos el guardado de los datos de los usuarios se
encuentran en los propios ficheros Prolog. seria conveniente crear un metodo "getCaracsUser" que en vez de recoger la información del nombre como se hace en este
momento, haga una llamada al sistema para recuperar los datos asociados.
Otra posible mejora relacionada con el mismo sistema es el de crear un sistema que
de opcion al usuario a imputar/generar automaticamente sus caracteristicas, ya que
en este instante las caracteristicas son bastante limitadas.---ABSTRACT---he main objective of this project has been to improve the default values generator
algorithm in the application FleSe, so that they are personalized to the user. FleSe
is a web application designed for database search, so that the user would get recommended elements that he had searched for in a general manner. In this application
the user can define his own defining values(not to be mistaken with default values).
For fuzzy searches, the Ciao-Prolog interpreter is being used, as it has the ability
to expand the standard ISO-Prolog by instally packages. At the moment the Fuzzy
Prolog and, most importantly, RFuzzy packages are being used, the second one
being used to create the predefined functions.
The main idea on this algorithm is on comparing the defining values of the users
with the default values of the groups, so that, if the user tends to align more to a
different group, he retrieves the that group’s default values, even if it isn’t the same
as his original group.
During the project development, the original algorithm had to be restructured, as
well as fixing a couple of errors not contemplated in the last version. With this, the
project has grown, as well as improving it and optimize it, as the last version had
an extremely long execution process. the biggest hurdle in the project has been the
differences with classical search engines, as these tend to only be based on actual
searches, while in this case it has to be thought of as concept definitions.
For future improvements, a new user characteristics storage mechanism needs to be
implemented. At the moment, this storage is only in the actual Prolog files, this
also implies that the current "getCaracUser" methods will have to be changed to get
the information outside the names of the users.
A different improvement would be to create a system that lets the user input/generate his characteristics, as the current ones are extremely limited.