用于 ruby​​ on rails 的 Mahout 插件

Posted

技术标签:

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

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

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

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

【问题讨论】:

协同过滤并不是一个特别长的算法来实现。与尝试使其与 ruby​​ on rails 一起工作相比,您在实现算法上花费的时间可能要少得多。 【参考方案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 框架之外生成您的建议(例如,通过在夜间批处理中生成关联等)。

【讨论】:

以上是关于用于 ruby​​ on rails 的 Mahout 插件的主要内容,如果未能解决你的问题,请参考以下文章

用于分发离线 Ruby on Rails 应用程序的选项

将 Stripe 与 Devise 一起用于 Ruby on Rails 订阅

用于 Web 社交网络的 Ruby on Rails、PHP 或 C++ [关闭]

是否有像 Elgg 这样的插件可用于 Ruby on Rails?

为啥我的链接不适用于我的 ruby​​ on rails 网站?单击时链接保持在同一页面上

Codecademy 中使用的 localhost:8000 是啥(用于 AngularJS 和 Ruby on Rails 教程)?