It started out with meeting new people. We never met before and we decided to share our common interests. We came wanted to design a system that would evaluate a person\s mood and respond accordingly. It turned out to be a simple AI but it started from the passion to develop something innovative and revolutionary. Our inspiration came from indicoio to develop an AI and from the theme of the event which was to entertain.
What it does
Our program asks a series of questions to the user to better understand their preferences in real time. Their answers are propelled through a series of arrays. Information from the movies, with tremendous amounts of credit given to IMDb (HTML files), was used to identify the movies that would closely align with the user's preferences.
How I built it
Laboriously, over a handful of sleepless nights and sunlight-less days. Over the course of the weekend, the work was split up between two people. One person worked on determining a systematic way to read HTML files from IMDb, extracting movie information and supplying it in 2D Array. The other person would program the user interface as well as the scale that rates the movies from "most preferred" to "least preferred" based on the user's responses to the user's questions.
Challenges I ran into
It was difficult to coordinate individually coded files to form a cohesive program. The most challenging portion of this endeavor was to scan the HTML files for data. Unfortunately, there were many spelling mistakes in their code. Thus, one method of data extraction would work for most webpages, while for others the program would just crash. Many exceptions (as it's called in Java) were caught and dealt with appropriately. It would have been nicer to work with properly formatted HTML files so that random punctuation (like commas) wouldn't cause random, unnecessary errors.
Accomplishments that I'm proud of
We were able to work around poorly formatted files and extract most of the data that we needed. We were able to write nearly 500 (more or less) lines of code in 20 hrs. My teammate and I enjoyed the workshops and we were able to work quickly and collaborate well to produce the final product. This sort of teamwork is a fundamental quality to every project (especially programming, where code is shared and integrated together). We were also able to debug the program after integration, because although this part took the shortest amount of time, we kept our cool. Our greatest accomplishment was matching the user's response to an appropriate film. The algorithm that we developed works to a sufficient efficiency and effectiveness.
What I learned
We learned how to access the Internet using Java, how to read HTML, and that we can churn out quite a bit of code with patience. In a team of two, it was easy to share code, files and ideas, especially because we were face to face. In larger teams, communication is key to a successful product. Furthermore, every good project starts out with a plan. If you do not know what code to consider, what algorithms to develop, what audience to address to, it can be very difficult to produce anything effective. We learned to make our code modular, design our code for readability and iterate through several algorithms of code to perform the same task (and obviously choose the most effective and/or efficient one based on our needs).
What's next for Movie Recommendation Machine
In the future, we would like to try out indicoio's API to include special features like facial emotion recognition to generate a link to a film that would make the person happier. We would like to store this data so that future movie recommendations for the user (based on the API of facial features, and facial emotion recognition) are personalized. Due to a lack of time and manpower (team of 2!), we could not implement all the features that we wanted to. For example, we wanted to provide a map (we knew how to do this in Greenfoot) to the nearest cinema for the latest movie (an added genre that was also not included, among others) or a link to a legal movie website.