用于 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 插件的主要内容,如果未能解决你的问题,请参考以下文章
将 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 教程)?