Coder Social home page Coder Social logo

caprirecsys / capri Goto Github PK

View Code? Open in Web Editor NEW
15.0 2.0 4.0 16.8 MB

CAPRI: Context-Aware Interpretable Point-of-Interest Recommendation Framework

Home Page: https://caprirecsys.github.io/CAPRI/

License: GNU General Public License v3.0

Python 33.45% Makefile 0.24% Batchfile 0.30% CSS 11.70% JavaScript 14.52% HTML 39.78%
context-awareness framework recommender-system

capri's Introduction

CAPRI: Context-Aware Interpretable Point-of-Interest Recommendation Framework

CAPRI-Context-Aware Interpretable Point-of-Interest Recommendation Framework

CAPRI is a specialized framework implemented in Python for evaluating and benchmarking several state-of-the-art POI recommendation models. The framework is equipped with state-of-the-art models, algorithms, well-known datasets for POI recommendations, and multi-dimensional evaluation criteria (accuracy, beyond-accuracy and user-item fairness). It also supports reproducibility of results using various adjustable configurations for comparative experiments.

๐Ÿ’ก You can have a general overview of the framework on its web-page, or check the documentation on readthedocs.

Workflow of CAPRI

Below figure illustrates the general workflow handled by CAPRI.

CAPRI

๐Ÿš€ Using the Framework

Do you want to start working with CAPRI? It is pretty easy! Just clone the repository and follow the instructions below:

โณ The framework works on Python 3.9.x for now, and will be upgraded to newer versions in the recent future.

โณ We are working on making the repository available on pip package manager. Hence, in the next versions, you will not need to clone the framework anymore.

โ˜‘๏ธ Prerequisites

Before running the framework, there are a set of libraries to be installed:

- numpy >= 1.26.1
- pandas >= 2.1.3
- Pandas >= 0.25.2
- scikit_learn >= 1.3.2
- scipy >= 1.11.3
- PyInquirer >= 1.0.3
- typing_extensions >= 4.8.0

Looking for a simpler solution? Simply run the below command in the root directory after cloning the project:

# Create a new virtual environment (Python 3.9.x)
python -m venv capri

# Install
pip install -r requirements.txt

Everything is set. Now you can use the framework! ๐Ÿ˜Š

๐Ÿš€ Launch the Application

๐Ÿ’ก Before you start, check if the terminal is locked or no. The system has an interactive mode (in which you can select parameters in the terminal) and a non-interactive mode (in which the default values will be used - check "Default Parameters (non-interactive)" section in config.py). You can choose between these modes by setting isInteractive = False/True in config.py

You can start the project by running the main.py file in the root directory. With this, the application settings are loaded from the config.py file. You can select from different options to choose a model (e.g. GeoSoCa, available on the /Models/ folder) and a dataset (e.g. Yelp, available on the /Data/ folder) to be processed by the selected model, along with a fusion operator (e.g. prodect or sum). The system starts processing data using the selected model and provides some evaluations on it. The final results (containing a evaluation file and the recommendation lists) will be added to the /Outputs/ folder, with a name template indicating your choices for evaluation. For instance:

# The evaluation file containing the selected evaluation metrics - It shows that the user selected GeoSoCa model on Gowalla dataset with Product fusion type, applied on 5628 users where the top-10 results are selected for evaluation and the length of the recommendation lists are 15
Eval_GeoSoCa_Gowalla_Product_5628user_top10_limit15.csv
# The txt file containing the evaluation lists with the configurations described above
Rec_GeoSoCa_Gowalla_Product_5628user_top10_limit15.txt

๐Ÿงฉ Contribution Guide

Contributing to open source codes is a rewarding method to learn, teach, and gain experience. We welcome all contributions from bug fixes to new features and extensions. Do you want to be a contributer of the project? Read more about is in our contribution guide page.

Team

CAPRI is developed with โค๏ธ by:

Ali Tourani Hossein A. Rahmani MohammadMehdi Naghiaei Yashar Deldjoo

๐Ÿ“ Citation

If you find CAPRI useful for your research or development, please cite the following paper:

@article{tourani2024capri,
  title={CAPRI: Context-aware point-of-interest recommendation framework},
  author={Tourani, Ali and Rahmani, Hossein A and Naghiaei, Mohammadmehdi and Deldjoo, Yashar},
  journal={Software Impacts},
  volume={19},
  pages={100606},
  year={2024},
  publisher={Elsevier}
}

๐ŸŸข Versions

  • Version 1.0
    • Implementation of the framework with a simple GUI
    • Supporting well-known models, datasets, and evaluation metrics for POI recommendation
    • Saving the previously executed calculation files for reusability

๐ŸŸก TODOs

  • Adding the impact of Weighted Sum Fusion when running models
  • Adding a separate metric evaluations class for fairness
  • Making a pip package for CAPRI (release planning)
  • Improving the docs and ReadTheDocs

capri's People

Contributors

alitourani avatar caprirecsys avatar rahmanidashti avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.