Skip to content
/ kelbrum Public

Anime recommendation system based on similarity ๐Ÿ”ฎ | Tensorflow.js, React, React Router, TailwindCSS, and DaisyUI

License

Notifications You must be signed in to change notification settings

vikiru/kelbrum

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

48 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation


Kelbrum is an anime recommendation system designed to suggest anime titles similar to those chosen by users. It uses K-means++ clustering with a custom distance function, which is a combination of the Manhattan and Dice distance. The custom distance function assigns weighted values to each property of an anime such as its type, genres, score to compute the distance between two separate anime.

The frontend of the project was initially set up using Vite.js for development purposes, but has since transitioned to utilize Create React App, in conjunction with React, React Router, TailwindCSS and DaisyUI.

The backend of this project, aka the 'heart' of the project was built utilizing Tensorflow.js in combination with external libraries such as ml-kmeans, ml-distance, and simple-statistics. Additionally, to perform TF-IDF analysis on anime synopses, natural was used alongside remove-stopwords, word-list, and lemmatizer.

Upon combining these two parts, the project comes together in the form, that is, Kelbrum.

Important

The data used within this project was possible thanks to the following:

  1. Original Kaggle Dataset - The anime dataset was read and processed into a custom JavaScript class known as AnimeEntry.
  2. JikanAPI - Missing information such as pageURL, imageURL, trailerURL and other existing properties which may have needed updates were updated by making several API requests to JikanAPI, which contains anime information obtained from MyAnimeList.

All external images and text used within this app belong to their respective owners.

๐Ÿ“– Table of Contents

๐ŸŒŸ Features

  • The ability to search for any anime within the existing dataset via a search bar
  • A homepage featuring a hero section that encourages users to search for an anime and displays 10 anime randomly selected that meet a minimum average score, providing users with immediate recommendations
  • The ability to view all anime grouped together based on properties such as genres, studios, seasons, etc
  • The ability to view the top 100 anime within the existing set of anime, based on average score
  • A dedicated anime details page that enables users to view detailed information about an anime and receive recommendations based on similarity
  • The ability to view 10 unique random anime recommendations and view up to 200 recommendations per anime (not all anime will have that many recommendations)
  • The ability to grow and accommodate other content types such as manga, manhwa, and manhua
  • The capability to prioritize anime properties based on assigned weights and adjust the recommendation algorithm at any time using the provided K-means JSON file and feature tensors

๐Ÿ› ๏ธ Tech Stack

Backend:

Frontend:

Hosting:

Documentation:

๐Ÿ“ Prerequisites

Ensure that the following dependencies are installed onto your machine by following the Setup Instructions.

โšก Setup Instructions

  1. Clone this repository to your local machine.
git clone https://github.com/vikiru/kelbrum.git
cd kelbrum
  1. Download and install all required dependencies.
pnpm install

๐Ÿ“œ Available Scripts

  1. Start the app in the development environment.
pnpm start
  1. Build the project files and optimize for production.
pnpm build
  1. Preview the production build locally.
pnpm preview
  1. Lint files using Biome.
pnpm lint
  1. Format files using Biome.
pnpm format
  1. Run TypeScript type checks without emitting files.
pnpm typecheck
  1. Check unused dependencies and files with Knip.
pnpm unused
  1. Prepare Git hooks via Lefthook.
pnpm postinstall

โœจ Acknowledgments

Various web articles for research and learning, such as:

Additionally, this project would not be possible without the following sources of information:

All external images and text used within this app belong to their respective owners.

ยฉ๏ธ License

The contents of this repository are licensed under the terms and conditions of the MIT license.

MIT ยฉ 2024-present Visakan Kirubakaran.

About

Anime recommendation system based on similarity ๐Ÿ”ฎ | Tensorflow.js, React, React Router, TailwindCSS, and DaisyUI

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •