recommender-node

1.2.1 • Public • Published

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

Dependents (0)

Package Sidebar

Install

npm i recommender-node

Weekly Downloads

2

Version

1.2.1

License

GPL-3.0

Last publish

Collaborators

  • jcospina