recommender-node v1.2.1
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