Skip to content

Latest commit

History

27 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

node-recommendations

Node.js recommendations module

Installation

 $ npm install node-recommendations

Use

Create a Recommendations instance

Which allow you to pass a name (and an options object), used for namespacing within Redis so that you may have several recommendation systems in the same db.

varrecommendations=require('node-recommendations');varoptions={correlation: 'distance'// distance and pearson are implemented,redisClient: null// [optional] your redis client};varr=recommendations.create('Books',options);

Add people and critics

With a name and an optional id (otherwise the id is generated).

varp=r.addPeople('Joe','optional-id');// add a new person to the datap.addItem('Batman',4,'optional-id');// add a critic score to Joep.addItem('Superman',3.5);// another...p.addItem('Titanic',1);

Calculate the items similitudes

This calculation is needed to get recommendations for people. The operation is costly, so run it on another machine, or in dead hours.

r.calculateItemsim(function(err,res){ ... });

Get a person by his name

varperson=r.getPeopleByName('Joe');

Get recommendations for a person

person.getRecommendations();

Example

varrecommendations=require('node-recommendations');varcritics={'Lisa Rose': {'Lady in the Water': 2.5,'Snakes on a Plane': 3.5,'Just My Luck': 3.0,'Superman Returns': 3.5,'You, Me and Dupree': 2.5,'The Night Listener': 3.0},'Gene Seymour': {'Lady in the Water': 3.0,'Snakes on a Plane': 3.5,'Just My Luck': 1.5,'Superman Returns': 5.0,'The Night Listener': 3.0,'You, Me and Dupree': 3.5},'Michael Phillips': {'Lady in the Water': 2.5,'Snakes on a Plane': 3.0,'Superman Returns': 3.5,'The Night Listener': 4.0},'Claudia Puig': {'Snakes on a Plane': 3.5,'Just My Luck': 3.0,'The Night Listener': 4.5,'Superman Returns': 4.0,'You, Me and Dupree': 2.5},'Mick LaSalle': {'Lady in the Water': 3.0,'Snakes on a Plane': 4.0,'Just My Luck': 2.0,'Superman Returns': 3.0,'The Night Listener': 3.0,'You, Me and Dupree': 2.0},'Jack Matthews': {'Lady in the Water': 3.0,'Snakes on a Plane': 4.0,'The Night Listener': 3.0,'Superman Returns': 5.0,'You, Me and Dupree': 3.5},'Toby': {'Snakes on a Plane':4.5,'You, Me and Dupree':1.0,'Superman Returns':4.0}};varr=recommendations.create('test',{correlation: 'pearson'});for(varjincritics){varname=j,p=r.addPeople(name);for(variincritics[name])p.addItem(i,critics[name][i]);}r.calculateItemsim(function(err,res){// calculate similar itemsif(err)console.error(err);else{r.getPeopleByName(p.name,function(err,person){// get last personperson.getRecommendedItems(function(err,res){if(err)console.log(err);console.log('%o',res);// recommendations for 'person'process.exit(0);});});}});

To do

  • Automatic calculation

Author

Philmod <philippe.modard@gmail.com>

About

Node.js recommendations module

Resources

Stars

10 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages