12

Je veux utiliser Apache Mahout dans mon projet sur Ruby on Rails pour implémenter des recommandations et un filtrage collaboratif. En particulier mes exigences sont:Plugin Mahout pour ruby ​​on rails

  1. suggérant des étiquettes liées.
  2. suggérant des articles connexes.
  3. en fonction des préférences de l'utilisateur l'incitent à revoir les articles.
  4. en fonction de l'emplacement géographique, et d'autres méta-informations d'un utilisateur, lui suggèrent des utilisateurs similaires.

Je suis ouvert à l'utilisation de toute autre solution (autre que mahout) si elle s'intègre facilement aux rails et répond à mes exigences.

+0

Le filtrage collaboratif n'est pas un algorithme particulièrement long à implémenter. Vous pourriez passer beaucoup moins de temps à implémenter l'algorithme qu'à essayer de l'utiliser avec ruby ​​on rails. – Steve

Répondre

6

Pour ce que ça vaut, le module 'taste-web' de Mahout contient des scripts qui vont construire un service web prêt à l'emploi autour d'un Recommender basé sur Java, comme un fichier .war que vous pouvez déployer sur quelque chose comme Tomcat , puis parlez via HTTP. Ce serait accessible à partir de n'importe quelle plate-forme qui peut faire des requêtes HTTP.

http://lucene.apache.org/mahout/taste.html#Standalone+server

7

Mahout (et Hadoop) fonctionnent assez bien dans Rails en cours d'exécution sur JRuby. Vous pouvez inclure Hadoop et bocaux Mahout comme ceci:

require 'rubygems'
require 'java'

Dir [ "/ cornac-base-dir/**/* pot."]. chaque {| jar | require jar}
Dir ["/ hadoop-base-dir/**/*. jar"]. chaque {| jar | besoin pot}

Ensuite, vous pouvez inclure les classes Mahout vous prévoyez d'utiliser, par exemple:

include_class de la org.apache.hadoop.fs.Path '
include_class « org.apache .hadoop.conf.Configuration '
include_class 'org.apache.hadoop.fs.FileSystem'
include_class de la org.apache.mahout.clustering.spectral.common.AffinityMatrixInputJob'
include_class de la org.apache.mahout.clustering .spectral .kmeans.SpectralKMeansDriver »

À partir de là, vous pouvez suivre les conventions Mahout Java Docs et JRuby pour construire votre Rails système rec. Cela dit, je ne suis pas sûr que ce soit la meilleure architecture pour votre site (difficile à dire sans plus de détails). Si l'échelle de votre problème est suffisamment importante pour justifier Mahout, il est probablement préférable d'utiliser Rails uniquement pour le Web et de générer vos recommandations en dehors du cadre Web (par exemple en générant des affinités dans les lots nocturnes, etc.).