Module: Co2Filter
- Defined in:
- lib/co2_filter.rb,
lib/co2_filter/version.rb
Defined Under Namespace
Modules: Collaborative, ContentBased
Classes: HashWrapper, RatingSet, Results
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.content_boosted_collaborative_filter(current_user: nil, other_users: nil, items: nil) ⇒ Object
23
24
25
26
27
28
29
30
31
|
# File 'lib/co2_filter.rb', line 23
def self.content_boosted_collaborative_filter(current_user: nil, other_users: nil, items: nil)
raise ArgumentError.new("A 'current_user' argument must be provided.") unless current_user
raise ArgumentError.new("An 'other_users' argument must be provided.") unless other_users
raise ArgumentError.new("An 'items' argument must be provided.") unless items
content_boosted_users = ContentBased.boost_ratings(users: other_users, items: items)
results = Collaborative.filter(current_user: current_user, other_users: content_boosted_users)
Results.new(results)
end
|
.filter(current_user: nil, other_users: nil, items: nil, user_profile: nil, content_based_results: nil) ⇒ Object
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# File 'lib/co2_filter.rb', line 2
def self.filter(current_user: nil, other_users: nil, items: nil, user_profile: nil, content_based_results: nil)
raise ArgumentError.new("A 'current_user' argument must be provided.") unless current_user
raise ArgumentError.new("An 'other_users' argument must be provided.") unless other_users
raise ArgumentError.new("An 'items' or 'content_based_results' argument must be provided.") unless items || content_based_results
collab = Collaborative.filter(current_user: current_user, other_users: other_users)
if content_based_results && content_based_results.is_a?(Results)
content = content_based_results
elsif user_profile.is_a? ContentBased::UserProfile
content = ContentBased.filter(user: user_profile, items: items)
else
content = ContentBased.filter(user: current_user, items: items)
end
hybrid = collab.merge(content) do |k, val1, val2|
(val1 + val2) / 2.0
end
Results.new(hybrid)
end
|