Giter Club home page Giter Club logo

song_recomendation_jtp's Introduction

MUSITORY

Welcome to Musitory

An open-source Song Recommender for your musical appetite!

It gives you continuous Song Recommendations by your Current selection.
It works in three steps

  • Song searching : Search for a Song, Artist, Genre or any combination (comma separated) of the three to get top matches from our database.
  • Song Selection : Select the song you want from the top matches to get started with the Machine Learning based similar songs recommendations
  • Continuous Recommendations : Select a song you like from the recommendations, to get similar recommendations based on it!

Table of Contents

Getting Started

These instructions will get you a copy of the project up and running on your local machine.To get started, clone the repository to your system.

Prerequisites

  • For Windows/MacOS Users

Docker Desktop - Includes Docker Engine and Docker-Compose required to run the project.

Run the following command to check your installation:

$ docker --version
$ docker-compose --version
  • For Linux Based OS Users

Docker - Includes Docker Engine to work with Containers.
Docker-Compose - Includes Docker-Compose to combine containers running for an application.

Kindly run all the commands with a 'sudo' before it, for all linux based systems

Run the following command to check your installation:

$ docker --version
$ docker-compose --version

Installing

After completing the above prerequisites all you need to do, are the following steps to get the project up and running!

Kindly make sure the Ports 8000,8081,27017 of your system are available

Set the downloaded repository as the current directory on your terminal:

 cd <repository-path>

Execute the following commands to get the project running

 docker-compose build
 docker-compose up

Kindly make sure the terminal is running with admin permissions

Deployment

After the sucessfull execution of the above commands, you can check the deployment by.

Going to your favorite browser and going to:

localhost:8000

Demo

If you want to see the database, go to mongo-express running on

localhost:8081

In database songs->app_newsongdetails to see the songs data.

Song Recommendation Algorithm

How the Machine Learning Algorithm determines similar songs to the current selection:

It is based on the following features of the songs:

Beats Per Minute (BPM) — The tempo of the song.
Energy — The higher the value, the more energetic.
Valence — The higher the value, the more positive mood for the song.
Acousticness — The higher the value the more acoustic the song is.
Key - the group of pitches, or scale, that forms the basis of the music.
Speachiness - detects the presence of spoken words in a track.

You can refer to these attributes in the database.
The values have been normalized to give all atributes equal weight.

Dynamic datasets (two) are fed to the algorithm by filtering out the songs based on:

  • the Artists & Album (first dataset),
  • Genres and the Songs three years prior to and after(6 years around) (second dataset)

of the currently selected song.

Queryset

Nearest Neighbours algorithm has been used to determine similarity by feeding the model a sparce_matrix of songs and their features to fit on, which generates the similarity matrix for the songs.
And then using the 'kneighbours()' function, feeding it the vector of the Current Selection features, to get 5 nearest neighbours to it.

This gives the user a mix of 'Similar songs by Artist and Album'(From first dataset) as well as 'New Songs to Discover'(From the second dataset)

Recommend

This is a continuous recommendation process where the user can select the song from the recomendations list to generate further recommendations based on that song.

Demo

User Acceptance Testing

The recommendations have been tested on 20 Users with positive response, specially with the New Songs to Discover part.

Feel free to write in the comments how you liked the Song Recommendations.

Built With

Authors

  • Aditya Date

FAQs

  • What do I do if the website shows no data on all searches?

    • The issue is that no data has been loaded in the database container.

    Execute the following command in your repository directory for a fix

    chmod +x ./datadir/data-import.sh
    

    And then do a

    docker-compose up
    

    Again to solve the issue.

  • How does the search function work?

    • The search function works by matching the words that you input with the Artists, Song names, Genres in the database to get you available results. Giving you the 10 most popular of those.
  • What dataset was used for this project?

    • The dataset used for this Project is Billboard Hot weekly charts which contains charts of songs fron 1958- 2019. After cleaning the data we get around 24,000 songs in the database. It does not contain the audio just the names and Audio Features.
  • What can I search for?

    • You can search for any Artist, Song, Genre or any combination of the three, for example:
      • Numb
      • Numb, Linkin Park
      • Linkin Park, Metal
        So on.
  • Where can I look for the main code parts in the repository?

    • You can look for the main code in Main_Project_code -> app in the files views.py, song_rec_engine.py etc.

song_recomendation_jtp's People

Contributors

adityadate1997 avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.