12

Tôi muốn sử dụng Apache Mahout trong dự án của tôi trên Ruby on Rails để thực hiện các đề xuất và lọc cộng tác. Đặc biệt, các yêu cầu của tôi là:Mahout Plugin cho ruby ​​trên đường ray

  1. đề xuất các thẻ có liên quan.
  2. đề xuất các bài viết có liên quan.
  3. dựa trên tùy chọn của người dùng nhắc anh ấy xem xét các bài viết.
  4. dựa trên vị trí địa lý và thông tin meta khác của người dùng, đề xuất người dùng tương tự.

Tôi mở để sử dụng bất kỳ giải pháp nào khác (ngoài mahout) nếu nó tích hợp với đường ray dễ dàng và đáp ứng các yêu cầu của tôi.

+0

Lọc cộng tác không phải là một thuật toán đặc biệt dài để triển khai. Bạn có thể dành ít thời gian hơn để thực hiện thuật toán hơn là cố gắng làm cho nó hoạt động với ruby ​​trên đường ray. – Steve

Trả lời

6

Đối với giá trị của nó, mô-đun 'hương vị web' của Mahout chứa các tập lệnh sẽ xây dựng một dịch vụ web sẵn sàng sử dụng xung quanh một trình đề xuất dựa trên Java, dưới dạng tệp .war mà bạn có thể triển khai trên một cái gì đó như Tomcat và sau đó nói chuyện qua HTTP. Điều đó có thể truy cập được từ bất kỳ nền tảng nào có thể thực hiện các yêu cầu HTTP.

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

7

Mahout (và Hadoop) làm việc khá tốt trong Rails chạy trên JRuby. Bạn có thể bao gồm Hadoop và Mahout lọ như vậy:

require 'rubygems'
require 'java'

Dir [ "/ quản tượng-base-dir/**/* jar."]. mỗi {| jar | yêu cầu jar}
Dir ["/ hadoop-base-dir/**/*. jar"]. mỗi {| jar | đòi hỏi jar}

Sau đó, bạn có thể bao gồm các lớp Mahout bạn có kế hoạch sử dụng, ví dụ:

include_class 'org.apache.hadoop.fs.Path'
org.apache include_class' .hadoop.conf.Configuration '
include_class 'org.apache.hadoop.fs.FileSystem'
include_class 'org.apache.mahout.clustering.spectral.common.AffinityMatrixInputJob org.apache.mahout.clustering'
include_class' .spectral .kmeans.SpectralKMeansDriver '

Từ đó, bạn có thể làm theo Mahout Java Documents và JRuby quy ước để xây dựng hệ thống Rails rec của bạn.

Điều đó đang được nói, tôi không chắc chắn đó sẽ là kiến ​​trúc tốt nhất cho trang web của bạn (khó nói mà không có chi tiết hơn). Nếu quy mô vấn đề của bạn đủ lớn để đảm bảo Mahout, có thể bạn nên sử dụng Rails chỉ cho các công cụ web và tạo các đề xuất của bạn bên ngoài khung web (ví dụ bằng cách tạo các mối quan hệ theo lô hàng đêm, v.v.).

Các vấn đề liên quan