1.2.1 • Published 7 years ago

recommender-node v1.2.1

Weekly downloads
4
License
GPL-3.0
Repository
github
Last release
7 years ago

Filtrado colaborativo para Node.js

Sistema de recomendaciones basado en filtrado colaborativo para Node.js.
El algoritmo implementado se basa en el trabajo de Mehregan Mahdavi y Gilda Moradi Dakhel. El artículo se encuentra disponible en:
Research Gate

##Instalación

npm install recommender-node

##Primeros pasos

###Importar el módulo:

var recommender = require('recommender-node')

###Cargar el archivo de ratings

####Desde un CSV

recommender.setup("path/to/ratings.csv", 20, "/path/to/clusters.json").then(
    (data) => {
        //Hacer algo una vez se cargan los ratings
    }
);

El método setup recibe 3 parámetros:

  • La ruta del archivo de ratings: debe ser un archivo csv con formato userId,itemId,rating.
  • Número de clusters: el algoritmo implementado usa clustering para obtener los usuarios más similares y así realizar la recomendación. Se recomienda un número entre 10 y 20 clusters.
  • La ruta donde se almacenará el archivo de clusters: el algoritmo primero realiza un pre procesamiento para calcular los clusters, esta información se guarda en un archivo con formato JSON.

####Desde un Array

recommender.setupFromArray(dataArray, 20, "/path/to/clusters.json").then(
    (data) => {
        //Hacer algo una vez se cargan los ratings
    }
);

El método setupFromArray recibe 3 parámetros:

  • El array de ratings: debe ser un array de objectos, donde cada objecto debe tener el formato:
{
    user:'userId',
    item:'itemId',
    rating:'rating'
}
  • Número de clusters: el algoritmo implementado usa clustering para obtener los usuarios más similares y así realizar la recomendación. Se recomienda un número entre 10 y 20 clusters.
  • La ruta donde se almacenará el archivo de clusters: el algoritmo primero realiza un pre procesamiento para calcular los clusters, esta información se guarda en un archivo con formato JSON.

###Solicitar las recomendaciones

recommender.recommend(5, 20, "/path/to/clusters.json").then(
    (items) => {
        console.log("items: " + JSON.stringify(items));
        //Hacer algo con los items recomendados
    }
);

El método recommend recibe 3 parámetros:

  • El id del usuario al que se le quieren hacer las recomendaciones
  • El número de items a recomendar
  • La ruta del archivo JSON donde se encuentra la información del clustering

##Ejemplo

###Configurar el recomendador con un Array de ratings

var dataArray = [
   {user:'1', item:'1',rating:'5'},
   {user:'1', item:'2',rating:'1'},
   {user:'1', item:'3',rating:'2'},
   {user:'2', item:'1',rating:'3'},
   {user:'2', item:'2',rating:'1'},
   {user:'3', item:'2',rating:'5'},
   ...
   {user:'167', item:'43',rating:'5'}
];

recommender.setupFromArray(dataArray, 2, "/path/to/clusters.json").then(
    (data) => {
        console.log(data);
    }
);

##Limitaciones

En su estado actual el módulo de recomendaciones cuenta con las siguientes limitaciones:

  • Solo acepta un archivo de ratings en formato csv y con la estructura: userId, itemId, rating
  • La primera fila del archivo de ratings debe tener los siguientes encabezados: user,item,rating
  • El sistema solo puede recomendar si el usuario ya ha calificado previamente algún item

Un ejemplo del archivo de ratings se puede encontrar en data.csv

##Dependencias

Este módulo fue construido usando las siguientes librerías:

##Autor

MSc. Juan Camilo Ospina Quintero

Licencia

Este proyecto se encuentra licenciado bajo GPLv3.0