12

Ich möchte Apache Mahout in meinem Projekt auf Ruby on Rails für die Umsetzung von Empfehlungen und kollaborative Filterung verwenden. Im Besonderen sind meine Anforderungen:Mahout Plugin für Ruby auf Schienen

  1. , was auf verwandte Tags hindeutet.
  2. schlägt verwandte Artikel vor.
  3. basierend auf den Vorlieben des Benutzers aufgefordert ihn zur Überprüfung der Artikel.
  4. basierend auf dem geografischen Standort und andere Meta-Informationen eines Benutzers, schlagen ihm ähnliche Benutzer vor.

Ich bin offen für jede andere Lösung (außer Mahout), wenn es einfach in Schienen integriert werden kann und meine Anforderungen erfüllt.

+0

Kollaborative Filterung ist kein besonders langer zu implementierender Algorithmus. Sie könnten wesentlich weniger Zeit für die Implementierung des Algorithmus aufwenden, als wenn Sie versuchen würden, ihn mit Ruby on Rails zu arbeiten. – Steve

Antwort

6

Für das, was es wert ist, enthält das Mahout "taste-web" -Modul Skripte, die einen gebrauchsfertigen Web-Service um einen Java-basierten Recommender erstellen, als .war-Datei, die Sie auf so etwas wie Tomcat bereitstellen können und dann über HTTP zu sprechen. Dies wäre von jeder Plattform aus zugänglich, die HTTP-Anfragen stellen kann.

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

7

Mahout (und Hadoop) arbeiten ziemlich gut in Rails auf JRuby läuft. Sie können wie so Hadoop und Mahout Gläser sind:

require 'rubygems'
erfordern 'java'

Dir [ "/ Mahout-base-dir/**/* jar."]. jedes {| jar | require jar}
Dir ["/ hadoop-base-dir/**/*. jar"]. je {| jar | erfordern jar}

Dann können Sie die Mahout Klassen umfassen Sie über die Verwendung, zum Beispiel planen:

include_class 'org.apache.hadoop.fs.Path'
include_class ‚org.apache .hadoop.conf.Configuration '
include_class 'org.apache.hadoop.fs.FileSystem'
include_class 'org.apache.mahout.clustering.spectral.common.AffinityMatrixInputJob'
include_class' org.apache.mahout.clustering .spektral .kmeans.SpectralKMeansDriver‘

Von dort können Sie die Mahout Java Docs und JRuby Konventionen folgen zu Ihrer Rails-rec-System aufzubauen.

Das gesagt, ich bin mir nicht sicher, dass das die beste Architektur für Ihre Website wäre (schwer zu sagen, ohne mehr Details). Wenn Ihr Problemmaßstab groß genug ist, um Mahout zu rechtfertigen, ist es wahrscheinlich sinnvoller, Rails nur für das Web-Material zu verwenden und Ihre Empfehlungen außerhalb des Web-Frameworks zu generieren (z. B. durch Erzeugen von Affinitäten in nächtlichen Batches usw.).

Verwandte Themen