Movie Recommender System
An NLP movie recommender, extended with a second way of measuring similarity.
The problem
The recommender already worked. It worked through a single library call to cosine similarity, and I could not have told you what that call was doing. The only honest way to find out was to implement an alternative myself.
What I built
I added an explicit Euclidean-distance path. Movie tag vectors are compared by straight-line distance, √Σ(xᵢ−yᵢ)², so recommendations can be ranked by geometric closeness and put side by side with the cosine ranking. Everything else stayed where it was: the NLP preprocessing, the Streamlit interface, the movie browser. The new measure plugged into the existing pipeline.
- Euclidean-distance similarity written from the math, alongside the existing cosine scoring
- Existing pipeline: bag-of-words over cast, genre, keyword, and production-company tags
- NLTK stemming and stop-word removal before vectorization
- Streamlit app with movie descriptions, cast details, and a paginated browser
- Similarity matrices precomputed and cached as pickle files
How it turned out
A small change on paper. But recommendation math stopped being a function I called and became something I could derive, implement, and argue about.