【问题标题】:Mahout Plugin for ruby on rails用于 ruby​​ on rails 的 Mahout 插件
【发布时间】:2011-01-06 05:57:56
【问题描述】:

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

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

我愿意使用任何其他解决方案(除了 mahout),如果它可以轻松地与 rails 集成并满足我的要求。

【问题讨论】:

  • 协同过滤并不是一个特别长的算法来实现。与尝试使其与 ruby​​ on rails 一起工作相比,您在实现算法上花费的时间可能要少得多。

标签: ruby-on-rails ruby-on-rails-plugins recommendation-engine mahout


【解决方案1】:

不管怎样,Mahout 'taste-web' 模块包含的脚本将围绕基于 Java 的 Recommender 构建即用型 Web 服务,作为 .war 文件,您可以将其部署在 Tomcat 之类的东西上,然后通过 HTTP 进行交谈。任何可以发出 HTTP 请求的平台都可以访问它。

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

【讨论】:

    【解决方案2】:

    Mahout(和 Hadoop)在运行在 JRuby 上的 Rails 中运行良好。您可以像这样包含 Hadoop 和 Mahout jar:

    需要'rubygems'
    需要'java'

    目录["/mahout-base-dir/**/*.jar"].each { |jar|需要 jar }
    目录["/hadoop-base-dir/**/*.jar"].each { |jar|需要 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 Docs 和 JRuby 约定来构建您的 Rails rec 系统。

    话虽如此,我不确定这是否是您网站的最佳架构(很难说没有更多细节)。如果您的问题规模大到足以支持 Mahout,那么将 Rails 仅用于 Web 内容可能更有意义,并在 Web 框架之外生成您的建议(例如,通过在夜间批处理中生成关联等)。

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      相关资源
      最近更新 更多