inferx 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/inferx/adapter.rb +1 -1
- data/lib/inferx/categories.rb +8 -0
- data/lib/inferx/category.rb +10 -12
- data/lib/inferx/complementary/category.rb +26 -0
- data/lib/inferx/version.rb +1 -1
- data/spec/inferx/categories_spec.rb +29 -0
- data/spec/inferx/complementary/category_spec.rb +26 -0
- metadata +2 -2
data/lib/inferx/adapter.rb
CHANGED
@@ -55,7 +55,7 @@ class Inferx
|
|
55
55
|
|
56
56
|
protected
|
57
57
|
|
58
|
-
%w(hdel hget hgetall hincrby hkeys hsetnx).each do |command|
|
58
|
+
%w(hdel hexists hget hgetall hincrby hkeys hsetnx).each do |command|
|
59
59
|
define_method(command) do |*args|
|
60
60
|
@redis.__send__(command, categories_key, *args)
|
61
61
|
end
|
data/lib/inferx/categories.rb
CHANGED
@@ -44,6 +44,14 @@ class Inferx
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
+
# Determine if the category is defined.
|
48
|
+
#
|
49
|
+
# @param [String] category_name a category name
|
50
|
+
# @return whether the category is defined
|
51
|
+
def exists?(category_name)
|
52
|
+
hexists(category_name)
|
53
|
+
end
|
54
|
+
|
47
55
|
# Apply process for each category.
|
48
56
|
#
|
49
57
|
# @yield a block to be called for every category
|
data/lib/inferx/category.rb
CHANGED
@@ -3,6 +3,14 @@ require 'inferx/adapter'
|
|
3
3
|
class Inferx
|
4
4
|
class Category < Adapter
|
5
5
|
|
6
|
+
def self.ready_for(method_name)
|
7
|
+
define_method("ready_to_#{method_name}") do |&block|
|
8
|
+
all = []
|
9
|
+
block[lambda { |items| all += items }]
|
10
|
+
__send__(method_name, all)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
6
14
|
# @param [Redis] redis an instance of Redis
|
7
15
|
# @param [String] name a category name
|
8
16
|
# @param [Integer] size total of scores
|
@@ -75,9 +83,7 @@ class Inferx
|
|
75
83
|
#
|
76
84
|
# @yield [train] process something
|
77
85
|
# @yieldparam [Proc] train enhance the training data giving words
|
78
|
-
|
79
|
-
train(aggregate(&process))
|
80
|
-
end
|
86
|
+
ready_for :train
|
81
87
|
|
82
88
|
# Attenuate the training data giving words.
|
83
89
|
#
|
@@ -114,9 +120,7 @@ class Inferx
|
|
114
120
|
#
|
115
121
|
# @yield [untrain] process something
|
116
122
|
# @yieldparam [Proc] untrain attenuate the training data giving words
|
117
|
-
|
118
|
-
untrain(aggregate(&process))
|
119
|
-
end
|
123
|
+
ready_for :untrain
|
120
124
|
|
121
125
|
# Get effectively scores for each word.
|
122
126
|
#
|
@@ -143,11 +147,5 @@ class Inferx
|
|
143
147
|
hash
|
144
148
|
end
|
145
149
|
end
|
146
|
-
|
147
|
-
def aggregate
|
148
|
-
all = []
|
149
|
-
yield lambda { |items| all += items }
|
150
|
-
all
|
151
|
-
end
|
152
150
|
end
|
153
151
|
end
|
@@ -4,6 +4,32 @@ class Inferx
|
|
4
4
|
module Complementary
|
5
5
|
class Category < Inferx::Category
|
6
6
|
|
7
|
+
# Inject the words to the training data of the category.
|
8
|
+
#
|
9
|
+
# @param [Array<String>] words an array of words
|
10
|
+
alias inject train
|
11
|
+
|
12
|
+
# Eject the words from the training data of the category.
|
13
|
+
#
|
14
|
+
# @param [Array<String>] words an array of words
|
15
|
+
alias eject untrain
|
16
|
+
|
17
|
+
# Prepare to inject the words to the training data of the category. Use
|
18
|
+
# for high performance.
|
19
|
+
#
|
20
|
+
# @yield [train] process something
|
21
|
+
# @yieldparam [Proc] inject inject the words to the training data of the
|
22
|
+
# category
|
23
|
+
ready_for :inject
|
24
|
+
|
25
|
+
# Prepare to eject the words from the training data of the category. Use
|
26
|
+
# for high performance.
|
27
|
+
#
|
28
|
+
# @yield [train] process something
|
29
|
+
# @yieldparam [Proc] eject eject the words from the training data of the
|
30
|
+
# category
|
31
|
+
ready_for :eject
|
32
|
+
|
7
33
|
# Enhance the training data of other categories giving words.
|
8
34
|
#
|
9
35
|
# @param [Array<String>] words an array of words
|
data/lib/inferx/version.rb
CHANGED
@@ -151,6 +151,35 @@ describe Inferx::Categories, '#remove' do
|
|
151
151
|
end
|
152
152
|
end
|
153
153
|
|
154
|
+
describe Inferx::Categories, '#exists?' do
|
155
|
+
it 'calls Redis#hexists' do
|
156
|
+
redis = redis_stub.tap do |s|
|
157
|
+
s.should_receive(:hexists).with('inferx:categories', 'red')
|
158
|
+
end
|
159
|
+
|
160
|
+
categories = described_class.new(redis)
|
161
|
+
categories.exists?('red')
|
162
|
+
end
|
163
|
+
|
164
|
+
it 'returns true if the category is defined' do
|
165
|
+
redis = redis_stub.tap do |s|
|
166
|
+
s.stub!(:hexists => true)
|
167
|
+
end
|
168
|
+
|
169
|
+
categories = described_class.new(redis)
|
170
|
+
categories.should be_exists('red')
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'returns false if the category is not defined' do
|
174
|
+
redis = redis_stub.tap do |s|
|
175
|
+
s.stub!(:hexists => false)
|
176
|
+
end
|
177
|
+
|
178
|
+
categories = described_class.new(redis)
|
179
|
+
categories.should_not be_exists('red')
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
154
183
|
describe Inferx::Categories, '#each' do
|
155
184
|
before do
|
156
185
|
@redis = redis_stub do |s|
|
@@ -1,5 +1,31 @@
|
|
1
1
|
require 'inferx/complementary/category'
|
2
2
|
|
3
|
+
describe Inferx::Complementary::Category, '#ready_to_inject' do
|
4
|
+
it 'calls #inject with the words to inject block' do
|
5
|
+
category = described_class.new(redis_stub, 'red', 2)
|
6
|
+
category.should_receive(:inject).with(%w(word1 word2 word3))
|
7
|
+
|
8
|
+
category.ready_to_inject do |inject|
|
9
|
+
inject[%w(word1)]
|
10
|
+
inject[%w(word2)]
|
11
|
+
inject[%w(word3)]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe Inferx::Complementary::Category, '#ready_to_eject' do
|
17
|
+
it 'calls #eject with the words to eject block' do
|
18
|
+
category = described_class.new(redis_stub, 'red', 2)
|
19
|
+
category.should_receive(:eject).with(%w(word1 word2 word3))
|
20
|
+
|
21
|
+
category.ready_to_eject do |eject|
|
22
|
+
eject[%w(word1)]
|
23
|
+
eject[%w(word2)]
|
24
|
+
eject[%w(word3)]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
3
29
|
describe Inferx::Complementary::Category, '#train' do
|
4
30
|
it 'calls Redis#zincrby and Redis#hincrby for other categories' do
|
5
31
|
redis = redis_stub do |s|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inferx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|