Class: UserBasedRecommendation

Inherits:
Object
  • Object
show all
Includes:
Similars
Defined in:
lib/user_based_recommendation.rb

Instance Method Summary collapse

Methods included from Similars

calculate_dot_product, calculate_vector_magnitude, fix_missing_values, get_similars, similarity_index

Instance Method Details

#get_all_similar_users_menu_items(order_details, user_id, menus) ⇒ Object

Returns an array containing all menu items ordered by similar users



41
42
43
44
45
46
47
48
# File 'lib/user_based_recommendation.rb', line 41

def get_all_similar_users_menu_items(order_details,user_id,menus)
    order_details[user_id].each do |menu|
        if !menus.include? menu
            menus.push(menu)
        end
    end
    return menus
end

#get_similars_menus(similar_users, order_details) ⇒ Object

Returns all similars menu items



32
33
34
35
36
37
38
# File 'lib/user_based_recommendation.rb', line 32

def get_similars_menus(similar_users,order_details)
    similars_menus = Array.new
    similar_users.each do |user_id, sim_index|
        get_all_similar_users_menu_items(order_details,user_id,similars_menus)
    end
    return similars_menus
end

#recommendation(context) ⇒ Object

Get recommendation user => current logged in user data => item purchase count matrix based on users



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/user_based_recommendation.rb', line 9

def recommendation(context)
    user = context.item
    data = context.data
    order_details = context.order_details
    similar_users = Similars.get_similars(user,data)
    result = Hash.new
    if similar_users.length > 0
        user_menus = Array.new
        user_menus = order_details[user.id]
        similars_menus = get_similars_menus(similar_users,order_details)
        recommend = Array.new
        similars_menus.each do |s|
            if !user_menus.include? s
                recommend.push(s)
            end
        end
        result[:user] = user_menus
        result[:recommendation] = recommend
    end
    return result
end