All Projects → sdl60660 → Letterboxd_recommendations

sdl60660 / Letterboxd_recommendations

Scraping publicly-accessible Letterboxd data and creating a movie recommendation model with it that can generate recommendations when provided with a Letterboxd username

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Letterboxd recommendations

Recommend
Python 3.6 下的推荐算法解析,尽量使用简单的语言剖析原理,相似度度量、协同过滤、矩阵分解等
Stars: ✭ 72 (+213.04%)
Mutual labels:  collaborative-filtering, svd
Twitter Intelligence
Twitter Intelligence OSINT project performs tracking and analysis of the Twitter
Stars: ✭ 179 (+678.26%)
Mutual labels:  web-scraping, flask
Rsparse
Fast and accurate machine learning on sparse matrices - matrix factorizations, regression, classification, top-N recommendations.
Stars: ✭ 145 (+530.43%)
Mutual labels:  collaborative-filtering, svd
Quora Api
An unofficial API for Quora.
Stars: ✭ 250 (+986.96%)
Mutual labels:  web-scraping, flask
30 Days Of Python
Learn Python for the next 30 (or so) Days.
Stars: ✭ 1,748 (+7500%)
Mutual labels:  web-scraping, flask
tf-recsys
tf-recsys contains collaborative filtering (CF) model based on famous SVD and SVD++ algorithm. Both of them are implemented by tensorflow in order to utilize GPU acceleration.
Stars: ✭ 91 (+295.65%)
Mutual labels:  collaborative-filtering, svd
Trape
People tracker on the Internet: OSINT analysis and research tool by Jose Pino
Stars: ✭ 6,753 (+29260.87%)
Mutual labels:  flask
Flask Sqlalchemy Blogger Example
Blog Posts application using sqlalchemy
Stars: ✭ 6 (-73.91%)
Mutual labels:  flask
Flask Mongoengine
MongoEngine flask extension with WTF model forms support
Stars: ✭ 750 (+3160.87%)
Mutual labels:  flask
Mixer
Mixer -- Is a fixtures replacement. Supported Django, Flask, SqlAlchemy and custom python objects.
Stars: ✭ 743 (+3130.43%)
Mutual labels:  flask
Chronicel
Our super sweet hacker management system, built for HackTCNJ 2017+ | Used by [email protected] 2018!
Stars: ✭ 18 (-21.74%)
Mutual labels:  flask
Bookflip
Textbook trading website built with Flask and Vue.js
Stars: ✭ 17 (-26.09%)
Mutual labels:  flask
Chinese Dos Games Web
🌐 Source code of https://dos.zczc.cz
Stars: ✭ 816 (+3447.83%)
Mutual labels:  flask
Eve
REST API framework designed for human beings
Stars: ✭ 6,421 (+27817.39%)
Mutual labels:  flask
Apispec
A pluggable API specification generator. Currently supports the OpenAPI Specification (f.k.a. the Swagger specification)..
Stars: ✭ 831 (+3513.04%)
Mutual labels:  flask
Youtube tutorials
Collection of scripts corresponding to LucidProgramming YouTube tutorials
Stars: ✭ 769 (+3243.48%)
Mutual labels:  web-scraping
Fullstack Flask Vuejs Argon Design
Flask Vuejs - Built with Automation Tools | AppSeed App Generator
Stars: ✭ 18 (-21.74%)
Mutual labels:  flask
Spark Movie Lens
An on-line movie recommender using Spark, Python Flask, and the MovieLens dataset
Stars: ✭ 745 (+3139.13%)
Mutual labels:  flask
Never Blink
👀Blink and lose.
Stars: ✭ 802 (+3386.96%)
Mutual labels:  flask
Microservices Connector
Inter-Service communication framework, support for microservice architecture and distributed system
Stars: ✭ 17 (-26.09%)
Mutual labels:  flask

Letterboxd Recommendations

This project scrapes publicly-accessible Letterboxd data and creates a movie recommendation model with it that can generate recommendations when provided with a Letterboxd username.

Live project lives here: https://bit.ly/letterboxd-movie-recs

Methodology

A user's "star" ratings are scraped their Letterboxd profile and assigned numerical ratings from 1 to 10 (accounting for half stars). Their ratings are then combined with a sample of ratings from the top 4000 most active users on the site to create a collaborative filtering recommender model using singular value decomposition (SVD). All movies in the full dataset that the user has not rated are run through the model for predicted scores and the items with the top predicted scores are returned. Due to constraints in time and computing power, the maxiumum sample size that a user is allowed to select is 500,000 samples, though there are over five million ratings in the full dataset from the top 4000 Letterboxd users alone.

Notes

The underlying model is completely blind to genres, themes, directors, cast, or any other content information; it recommends only based on similarities in rating patterns between users and movies. I've found that it tends to recommend very popular movies often, regardless of an individual user's taste ("basically everyone who watches 12 Angry Men seems to like it, so why wouldn't you?"). To help counteract that, I included a popularity filter that filters by how many times a movie has been rated in the dataset, so that users can specifically find more obscure recommendations. I've also found that it occasionally just completely whiffs (I guess most people who watch "Taylor Swift: Reputation Stadium Tour" do like it, but it's not really my thing). I think that's just the nature of the beast, to some extent, particularly when working with a relatively small sample. It'll return 50 recommendations and that's usually enough to work with if I'm looking for something to watch, even if there are a couple misses here or there.

Built With

  • Python (requests/BeautifulSoup/asyncio/aiohttp) to scrape review data
  • MongoDB (pymongo) to store user/rating/movie data
  • Flask as a web server
  • HTML/CSS/Javascript on the front-end
  • Redis/redis queue for managing queued tasks (scraping user data, building/running the model)
  • Heroku for hosting
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].