Mahout插件适用于Ruby on Rails

12

我希望在我的Ruby on Rails项目中使用Apache Mahout来实现推荐和协同过滤。 特别是我的要求如下:

  1. 建议相关标签。
  2. 建议相关文章。
  3. 根据用户的偏好提示他审查文章。
  4. 基于地理位置和其他元信息,建议类似的用户。

如果有其他容易集成到Rails并满足我的要求的解决方案(除了Mahout),我也愿意尝试。


协同过滤算法并不是特别复杂的算法。你花费在实现算法上的时间可能会比尝试让它与Ruby on Rails一起工作的时间要少得多。 - Steve
2个回答

7
Mahout(以及Hadoop)与JRuby运行的Rails一起工作得非常好。您可以像这样包含Hadoop和Mahout jar文件:
require 'rubygems' require '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'
从那里开始,您可以按照Mahout Java文档和JRuby惯例构建您的Rails推荐系统。
话虽如此,我不确定这是否是您网站的最佳架构(没有足够的细节很难说)。如果您的问题规模足够大以需要Mahout,则使用Rails仅用于Web内容并在Web框架之外生成推荐可能更有意义(例如通过夜间批处理生成关联数据等)。

6
就效益而言,Mahout的“taste-web”模块包含脚本,可以构建一个围绕基于Java的推荐引擎的现成Web服务,作为一个.war文件,您可以在类似Tomcat的应用程序中部署它,然后通过HTTP通信。这将可从任何可以发出HTTP请求的平台访问。http://lucene.apache.org/mahout/taste.html#Standalone+server

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接