Cimrec Türkçe 'simrek' diye telafuz edilir.
Cimrec is a framework of recommendation system algorithms. This framework help you to make recommendations in any programming language using the respected API for the target langauge.
Cimrec gets your data as input, and based on your choice of algorithms and accuracy metrics, a high quality recommendation is provided.
Cimrec also provides caching like mechanisms in order to use as minimum resources as possible.
-
Given a user's history of movie ratings in netflix, we provide list of movies to recommend the user.
-
Given a user's list of item purchases in amazon, we provide list of products to recommend to the target user.
-
Given a movie, we provide list of similar movies to recommend the users who has watched the movie.
Currently, the framework is at its inital phase. This project has been started as a research on a new user-based similarity method (Timebin Based Neighbourhood) as the result of our Temporal Drift research.
Temporal Drift research was a way for us to get to know the recommendation system algoritms and create our target framework cimrec. As the temporal drift project advaced, we also tried to create a basic framework as the skeleton of cimrec. All states of this skeleton framework has been traced as Project Alpha.
- Create Base Framework With TDD
- Add User Based Collaborative Filtering Algorithms
- Add Deep Neural Network Based Recommendation Algorithms
- Add support for Other Data other than Netflix and Movielens
- Provide Public API for Phyton
- Add Other families of Recommendation and rework on roadmap.
We are currently at phase 1:Create Base Framework With TDD .
The aim of this phase is to create a better base for all future phases by converting the Project Alpha to more clean written test drivenly development code base.
If you want to make contributions, you are expected to follow the following guidelines.
Cimrec uses project uses Package Oriented Design.
Package layout follows the following guidelines as described at the article.
- Root package is for domain types
- Group subpackages by dependency
- Use a shared mock subpackage
- Main package ties together dependencies
We follow the general guidelines of the Clean Code: A Handbook of Agile Software Craftsmanship
In summary:
-
K & R style indentation.
-
Every function should do one thing.
- Reduce the function length as much as possible until you cant.
- Optimum function length 4 to 10 lines.
-
Other than public APIs no code should have comments.
- Code should describe itself.
- Every variables, class, function name should describe itself.
- If any comment exists, it is critical to know.
-
Files should be 50-100lines on average, at max 500
We use pep8 code styling standard.