graph-rec / README.md
erermeev-d
Initial commit
d4852d9
metadata
title: A simple Graph-based Recommender System
emoji: πŸ“š
colorFrom: purple
colorTo: yellow
sdk: docker
app_port: 8501

A simple Graph-based Recommender System

What is it?

This app is a simple graph-based recommender system that searches for items and recommends similar ones. It can be applied to any dataset. For demonstration purposes, we use the (filtered) Goodreads dataset.

Where can I try this app?

The app is currently deployed at HuggingFace Spaces (link). You will probably need to wait a minute or two for app to start running.

How to use it?

Simply enter a keyword (e.g., "Brave") into the search bar and press the "Search" button. The app will display relevant books along with their short descriptions.

For each book, you can click "Recommend Similar Items" to see other books you might enjoy if you liked the selected one.

How to reproduce embeddings computation?

First, install needed requirements from exp/requirements.txt (or exp/requirements_gpu.txt for gpu) file.

Then, download needed raw data from Goodreads website. We will need the following files: book_id_map.csv, goodreads_books.json, goodreads_interactions.csv and user_id_map.csv. You can download this files manually or use this Kaggle dataset.

Finally, simply run the following command at the root of the repo:

sh exp/prepare_embeddings.sh INPUT_DIRECTORY SAVE_DIRECTORY

where INPUT_DIRECTORY is path to the directory with raw data (e.g. /kaggle/input/graph-rec-goodreads/goodreads-books). And SAVE_DIRECTORY is path to the directory, where results will be saved (e.g. /kaggle/working/embeddings). To use obtained embeddings, copy the following files to the app/data: index.faiss and items.db.

To run on GPU, run the following command:

sh exp/prepare_embeddings.sh INPUT_DIRECTORY SAVE_DIRECTORY cuda

For further information, refer to the exp directory in this repo.