A movie recommender interface showcasing various films.

Movie Recommender

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

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

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

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:

Movie Recommender

Movie RecommenderAnother challenge was using the API key and managing API calls.

Here’s what we did: 

Movie RecommenderAnother challenge was implementing the cosine similarity for recommendations.

Here’s how we did it:

Movie Recommender

Movie RecommenderWe 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:

Movie Recommender

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

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

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

Movie RecommenderMovie RecommenderMovie Recommender

References

Link to the GitHub repository.