Wednesday, May 23, 2012

Ready for testing!!

Our new interface is up! Our one-click listening is set up for testing. All you need to do is create a sign in name and password on the home page. From there you can start listening in a couple different ways: from an existing playlist (which are only ones that we have created), from a specific song or artist (just type in the song and artist and we return all possible matches), or hit random and see where you end up. From there we have you rate a group of songs that will allow us to better find your music tastes. Here are some pictures of the site.


Sunday, May 13, 2012

Pre-Launch

The last couple days we have been putting the finishing touches on the front end. We are getting closer and closer to launching and should have it up in the next week or so. On the backed we have continued to tweak the learning algorithms on our currently limited data supply. While we have been getting more and more data, before the launch we can only do it one at a time so it is still moving very slowly.

Some great work has been done on features we were planning on adding to the website. These have nothing to do with the machine learning or song rating, but are stuff that people would be interested in having. We went through StubHub and by using their API we were able to extract dates for concerts for certain artists. Also, we can add the song lyrics by following a similar process. While not the meat of what we are trying to do, these bells and whistles will make the site look a lot better and potentially give us something that no other site currently has.

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!