This is an anime and manga recommender system based off of MyAnimeList, AniList, Kitsu, and Anime-Planet user ratings. This codebase has been used to train a model on over 1.4 billion user-item interactions. See the notebook in notebooks/README.ipynb
for usage instructions.
Details on the recommender system can be found by inspecting the source code at notebooks/TrainingAlphas
. At a high level, there are four main steps:
- Pretraining a transformer model and a bag-of-items model on watch histories
- Finetuning the models on recent data to predict the following metrics:
- The probability that you will watch a series
- The rating that you will give to the series
- The probability that you will finish a series after starting it
- The probability that you will add the series to your plan-to-watch list
- Using a ranking model to combine these metrics into a relevance score
- Reranking the outputs to generate a list of recommendations
See BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, Deep Neural Networks for YouTube Recommendations, Position-Aware ListMLE: A Sequential Learning Process for Ranking, and Deep Learning for Recommender Systems: A Netflix Case Study for relevant prior work.
Once the system has been trained, run notebooks/Recommendations/start_servers.py
to setup a local web app that you can connect to at localhost:5000. This will fetch the latest anime and manga lists for a given user, perform model inference, and display recommendations.
At some point I'll figure out web hosting works and spin up a public website, but until then the local app will have to do.