The goal of this project is to test sentiment-aware recommender systems by use of the Last.FM API, sentiment analysis tools, and the NRC-VAD Lexicon (NRC Valence, Arousal, and Dominance Lexicon). It consists of various recommendation techniques (collaborative filtering and content-based) and sentiment analysis of textual content from different contexts (e.g Album or artist description, tracks, comments, tags, titles...) applied to recommendation.
The tools and recommendation models are showcased in LastMood, a web application that can be set up with the following section's steps.
- To set up the required environment modules and libraries:
- Install Conda for environment management.
- Run
./setup.sh
.
- To set up the database (~760 MB):
- Install PostgreSQL for database management.
- Execute
sudo -u postgres psql -c "CREATE USER alumnodb WITH PASSWORD 'alumnodb' createdb"
.- This creates user alumnodb with database creation permissions.
- Go to
/lastfm_RS
and runmake restore_db
.- This creates lastfm_db's tables and loads all the necessary data.
- To set up the recommendation data (~500 MB):
- Go to
/lastfm_RS
and runmake recsys_data
.- This extracts the prepared dataset into
/lastfm_RS/backend/research/recbole_research/saved/
. - Otherwise, the data needs to be preprocessed, which takes considerable time and memory.
- This extracts the prepared dataset into
- Go to
- To start the web application on localhost, go to
/lastfm_RS
and runpython3 manage.py runserver
. It will be hosted at http://localhost:8000.
Note: The only available recommenders are Random, Pop and Cosine Similarities, due to size constraints.