Hi-Rec (A Java Framework for Recommender Systems)
Hi-Rec is a Java framework for recommender systems (Java version 1.8 or higher required). This framework is Cross-Platform, Open Source , Scalable, Extensible and Easy to Use. It not only implements state-of-art algorithms but only makes it possible for others to extend it and implement more user-specific algorithms. This framework developed to be used across with Mise-en-scène Project. You won't need to install any extrenal framework, library or tool.
- ItemBased KNN
- Average Popularity
- Factorization Machine
- Visual Features (Related to Mise-en-scène Project)
- Rating (Collaborative Filtering)
Based on your platform (PC or Linux) download the compresed related version from Releases. After extracting the zip file, you can run either
Running inside Eclipse
This project is based on Gradle. So it could be easily imported to Eclipse. For importing it, the Eclipse should contain Buildship Plugin. After installing Buildship Plugin, you can donwload the sourse code from here and easily import the project into the Eclipse as a Gradle project.
Recommender.java: All the algorithms can implement this interface
AbstractRecommender.java: All the algorithms should implement this abstract class
AccuracyEvaluation.java: All the rating prediction metrics (RMSE, MAE, ...) should implement this interface
ListEvaluation.java: All the list generators metrics (Precision, Recall, ...) should implement this interface
All the experiments have been done over data in
Visual Features + Genre:
1. I want to change the java code and run the project without importing it into Eclipse, How can I do that?
You can open any of the java classes in your favorite editor such as
notepad and change the code. Then you can build and run the code with the following steps:
terminalgo to the root folder of the project
In case of any compilation error, you will see the proper error message. If you see
BUILD SUCCESSFUL you can continue.
If you see
BUILD SUCCESSFUL then you can follow the steps which have been explained in Question 1.
2. How to import project into Eclipse?
For importing project into Eclipse, you can use Buildship Plugin. For installing this plugin do the following steps:
- Open the Eclipse
buildshipinto search bar and install
Buildship Gradle Integration
After installing and restarting the Eclipse, you should be able to import the project as a Gradle project.
3. How to run the project inside the Eclipse?
For running the project inside the Eclipse you should import it first (Question 3). After importing, from
Gradle Tasks tab you will be able to select different Gradle tasks. In the simplest scenario, just
run task is needed.
4. How to implement my own algorithm?
If you need to implement your specific algorithm you only need to create a class in
algorithms package and extend
AbstractRecommender class. By doing this, your algorithm will be accessible from
5. How to implement my own metric?
If you need to implement another metric, you only need to create a class in
metrics package and extend one of the
ListEvaluation interfaces. By doing this, your metric will be accessible from
config.properties file. Keep in mind that all the metrics should have
hashCode() function and this function should return a static fixed number. Currently numbers in [1,6] range occupied. So you can use 7,8,.... You can have a look at the
hashCode() function in MAE.
6. I use this code for my research. Do I have to cite it?
To acknowledge the use of this recommendation engine in your work, please cite the following paper:
Mohammad Hossein Rimaz, Mehdi Elahi, Farshad Bakhshandegan Moghaddam, Reza Hosseini.
“Exploring the Power of Visual Features for the Recommendation of Movies”,
Proceedings of the 27th ACM Conference on User Modeling, Adaptation and Personalization Pages 303-308, Larnaca, Cyprus https://dl.acm.org/citation.cfm?id=3320470
7. How can I obtain your dataset?
Low level features which have been collected in Mise-en-scène Project can be downloaded from this link. If you need to have Tags, Genre and Ratings, you can use MovieLens latest dataset. For simplicity we have preproccesed corresponding Tags, Genre and Ratings data and put them in
8. How can I give my feedback about the project?
In case of any question or feedback about the project you can use pull requests or you can contact us directly by this email: