This repository contains many popular recommender algorithms which use reviews as additional data. The code accompanies the paper "How Useful are Reviews for Recommendation? A Critical Review and Potential Improvements" [ACM] [Public PDF] where we critique different existing review-based recommendation algorithms and questions their reported performance.
If you find any module of this repository helpful for your own research, please consider citing the below SIGIR'20 paper. Thanks!
@inproceedings{SachdevaMcAuley20,
author = {Noveen Sachdeva and Julian McAuley},
title = {How Useful are Reviews for Recommendation? A Critical Review and Potential Improvements},
booktitle = {ACM Conference on Research and Development in Information Retrieval (SIGIR)},
year = {2020}
}
Code Author: Noveen Sachdeva ([email protected])
-
Python3
- Pytorch >= 0.4.0
- Surprise: https://github.com/NicolasHug/Surprise
- Gensim: https://github.com/RaRe-Technologies/gensim
- h5py: https://github.com/h5py/h5py
-
Python2.7 (only for MPCN)
- Tensorflow-gpu >= 1.17.0
- Keras
- sklearn
- scipy
Once you've correctly setup the python environments and downloaded the dataset of your choice (Amazon: http://jmcauley.ucsd.edu/data/amazon/), the following steps need to be run:
$ ./prep_all_data.sh <HUMAN_FRIENDLY_DATASET_NAME> path/to/data/file.json
The above command will create the train/test/val splits along with some pre-processing scripts for running review-based methods like DeepCoNN/NARRE/TransNet much faster.
Since running MPCN requires a Python2.7 environment, you will need to modify Line#2 in the script run_MPCN_in_p2.sh
to edit how to switch to the Python2.7 environment.
- Edit the
hyper_params.py
file which lists all config parameters, including what type of model to run. Currently supported models:
Model Type | Model Name | Paper Link |
---|---|---|
Non-textual | bias_only (or) baseline | |
Non-textual | MF_dot (or) NMF | |
Non-textual | SVD (or) SVD++ | |
Non-textual | MF-dot | |
Non-textual | MF | MLP only version in NeuMF |
Non-textual | NeuMF | LINK |
Reviews as regularizer | HFT | LINK |
Reviews as features | deepconn (or) deepconn++ | LINK |
Reviews as features | NARRE | LINK |
Reviews as features | transnet (or) transnet++ | LINK |
Reviews as features | MPCN | LINK |
- Finally, type the following command to run:
$ CUDA_VISIBLE_DEVICES=<SOME_GPU_ID> python main.py
As more and more algorithms using reviews for recommendation are published, please feel free to send a pull request with your algorithm and I'll be happy to merge it into this repository.
MIT