Sunday, April 29, 2012

Locally Running

This past week we were able to get the client up and running. The current 
features of the client are the following:
 
- Created a registration and login/logout system.
- Set up a database for our site with all the users and songs.
- Created a user specific profile page with the following:
  1.  A list of all the songs in the database with a link to a rating page for that song, as well as the user's current rating for that song it's been rated.
  2. Two search filters so you can search for a particular artist or song.
  3. The number of songs currently in the database (or the number of filtered songs if you submitted a search query).
  4. A "Random" button that brings you to the rating page of a random song.
  5. A "Recommend" button that will eventually recommend the user a song based on his previous ratings.
  6. A "Filter Unrated" button that displays only songs the user hasn't rated yet.
- Created a rating page for songs that has the following features:
  1. The title and artist of the song.
  2. The ability for the user to rate the song from 1-5
  3. An embedded Youtube video for that song.
 
We now have all the basic functionality we need for people to start rating 
the songs. So, the client is pretty much done - we just need to host it 
somewhere, make it look professional, and add additional features.
 

Friday, April 20, 2012

Week 2

This week we were able to fully write a script that can be used to rate songs. This is huge because we can get data right away without having the front end up and running at all. The python script that we wrote first asks you for your name. If it hasn't been seen before, it creates a key that we will store all the data for that specific user. After you type in your name a song starts playing. Initially we had the vlc player pop up when the music was playing. After deliberation we decided this was not necessary and suppressed the vlc pop up. Once you have heard enough to rate the song, you exit the player (Ctrl+C once suppressed), and type in an integer from 1-5. If you type a value outside this range, or type in a non-integer, it ignores the input and will ask you for the rating again. Once 200 songs are rated the script exits and a file containing the key (person's name), song name (given value), and star rating (from 1-5) is written. Right now we can only run the script from one computer so only one person can rate songs at a time. This will need to change for us to get all the data we need. Also, we need to allow the user to exit early without destroying the complete value. You can lose previous data if you exit the terminal while writing the script. Finally, we would like to have a counter return the number of songs you have rated. Since 200 is such a large number this would be helpful to know how much longer you have.

On the backend we have explored some different learning algorithms on the limited data that we do have. Some literature has pointed towards SVM and SVD as good tools to start. We have implemented some code with different parameters, to learn on our small data set. As more data flows in we will be able to refine these learning algorithms and make our recommendations more accurate.

On the frontend we have have familiarized ourselves with django which is the webframe that we will be hosting on. In the next couple days we will go into more detail on the work that has gone on there.

Tuesday, April 17, 2012

Starting Out

The first thing we needed to do for the project was to get the music that we were going to rate. These initial songs will be used to create the AI that will eventually recommend the songs in the future. To make sure that we filled all possible musical interests, we went after the most popular songs from every genre according to the billboards. This would help us avoid a recency bias, since we are more familiar with recent songs.

We also did some work on the back and front end. Movement on the back end was a little bit slower since we really need the data to find out which machine learning technique would work best. On the front end we got the initial set up for the site.

Some quirks still persist. We need to get data on the songs and as many people as possible to rate them. Also, making it user specific on the front end has given us a little bit of trouble. Things are looking good early on though. Once we start getting the data for the machine learning, progress should pick up.

Friday, April 6, 2012

Welcome to eMelody!

Welcome to eMelody. The objective of eMelody is to create an automated recommendation service for songs according to different preferences. This system will merge both social-based and content-based recommendation approaches for an experience that incorporates the feel of both last.fm and pandora. We will keep this website updated as we progress, please follow us!