Mahout Плагин для рубина на рельсах - PullRequest
12 голосов
/ 18 января 2010

Я хочу использовать Apache Mahout в своем проекте на Ruby on Rails для реализации рекомендаций и совместной фильтрации.В частности, мои требования:

  1. предложение связанных тегов.
  2. предложение связанных статей.
  3. в зависимости от предпочтений пользователя запрашивает у него обзор статей.
  4. на основе географического местоположения и другой метаинформации пользователя, предложите ему похожих пользователей.

Я готов использовать любое другое решение (кроме mahout), если оно легко интегрируется с рельсами и выполняетмои требования

Ответы [ 2 ]

7 голосов
/ 04 октября 2011

Mahout (и Hadoop) хорошо работают в Rails, работающем на JRuby.Вы можете включить банки Hadoop и Mahout следующим образом:

требуют 'rubygems'
требуют 'java'

Dir ["/ mahout-base-dir / ** / *. jar "]. each {| jar |require jar}
Dir ["/ hadoop-base-dir / ** / *. jar"]. each {| jar |require jar}

Затем вы можете включить классы Mahout, которые вы планируете использовать, например:

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.spectral.kmeans.SpectralKMeansDriver'

Оттуда вы можете следовать соглашениям по Java-документам Mahout и JRuby для создания своей системы Rails rec,

При этом я не уверен, что это будет лучшая архитектура для вашего сайта (сложно сказать без подробностей).Если масштаб вашей проблемы достаточно велик, чтобы оправдать Mahout, возможно, имеет больше смысла использовать Rails только для веб-контента и генерировать ваши рекомендации вне веб-фреймворка (например, путем создания сходств в ночных пакетах и ​​т. Д.).

6 голосов
/ 22 января 2010

Для чего бы то ни было, модуль Mahout 'Taste-Web' содержит сценарии, которые создадут готовый к использованию веб-сервис на основе Рекомендатора на основе Java, в виде файла .war, который можно развернуть на чем-то вроде Tomcatа затем поговорить с помощью HTTP.Это было бы доступно с любой платформы, которая может делать HTTP-запросы.

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

...