The Movie Recommender is a website where the user inputs the title of a movie that they like. The recommender then returns five movies similar to that movie.
Purpose of the project
Purpose of the project
What inspired or motivated you to choose this particular project?
We felt that a lot of the time we would eat some food, hear a song or watch a movie that we really liked and wanted something in the exact same genre or theme. Other platforms, such as Netflix recommend movies based on all the movies/shows you’ve watched on the platform, even ones you didn’t necessarily like. We would try using Google or Chat-GPT but the recommendations just didn’t hit the spot. That’s where our Movie Recommender comes to save the day. Simply input the movie you like and get five movies similar to the specific movie you already know that you like.
Technical Details
Technical Details
Could you explain the technical aspects of your project? What software, tools do you use?
We used an API key from TMDb to get all the movie titles, posters, descriptions, etc. We used VS-Code and terminal while coding and GitHub to make collaborating easier and keep everything organised.
Our system is designed around five main components. First, the user enters a movie title. This request is processed by our Flask Server, which communicates with the TMDb API to fetch movie data. Our Recommendation System then calculates similar movies using cosine similarity, and finally, the user receives the results.
A closer look into the technical aspects of the recommendation system:
Our recommendation system is powered by TF-IDF (Term Frequency-Inverse Document Frequency) and Cosine Similarity.
We use TF-IDF to convert movie descriptions into vectors where the significance of each word in the description is represented by a number.
We then applied cosine similarity to measure the similarity between movies by comparing the angle between the vector of the inputted movie to all the other movie vectors. The closer the angle is to 0 degrees between the input vector and another vector, the more similar they are.
We also enhanced cosine similarity scores with a custom formula that boosts results with matching genres and highly rated movies. This hybrid scoring method improves the relevance of recommendations beyond just plot similarity.
Our system then returns the top five most similar movies based on these calculations.
Challenges and Solutions
Challenges and Solutions
Were there any significant challenges you encountered during the project, and how did you overcome them? Can you share a specific problem-solving moment that stands out in your project?
We had never used Flask before, so setting up the server and understanding how Flask routes work was new for us.
Here’s what we did:
Another challenge was using the API key and managing API calls.
Here’s what we did:
Another challenge was implementing the cosine similarity for recommendations.
Here’s how we did it:
We struggled to make the system robust enough to avoid crashing when user inputs were invalid.
Here’s a part of what implemented to handle edge cases:
Collaboration and Teamwork
Collaboration and Teamwork
Did you collaborate with other students or team members on this project? How did teamwork contribute to the success or progress of your project?
We got help from our professor, Raúl Pérez. We learned how to use GitHub with his help, which made the group collaboration go smoothly.
Learning and Takeaways
Learning and Takeaways
What key lessons or skills have you gained from working on this project?
We definitely saw how important GitHub is when working on bigger projects, especially when working with other people on one single project. We also saw how important project structure is, without it, this project would have been very chaotic to work on.
Future Development
Future Development
Do you have plans for further development or improvement of your project in the future?
One possible improvement would be to enable the user to mark movies they have already seen so that they don’t get them recommended. That would also require a log-in page. We would also want to be able to fetch more movies and make the website faster before publishing it publicly.
Attach Pictures
Attach Pictures
References
References
Link to the GitHub repository.