inferx 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  class Inferx
2
2
  class Adapter
3
3
 
4
- # @param [Redis] an instance of Redis
5
- # @param [String] namespace of keys to be used to Redis
4
+ # @param [Redis] redis an instance of Redis
5
+ # @param [String] namespace namespace of keys to be used to Redis
6
6
  def initialize(redis, namespace = nil)
7
7
  @redis = redis
8
8
  @namespace = namespace
@@ -26,7 +26,7 @@ class Inferx
26
26
 
27
27
  # Make the key for access to scores stored each by word.
28
28
  #
29
- # @param [Symbol] a category name
29
+ # @param [Symbol] category_name a category name
30
30
  # @return [String] the key
31
31
  def make_category_key(category_name)
32
32
  "#{categories_key}:#{category_name}"
@@ -34,8 +34,9 @@ class Inferx
34
34
 
35
35
  # Spawn an instance of any class.
36
36
  #
37
- # @param [Class] any class, constructor takes the instance of Redis to
37
+ # @param [Class] klass any class, constructor takes the instance of Redis to
38
38
  # first argument, and takes the namespace to last argument
39
+ # @param [Array] args any arguments
39
40
  # @return [Object] a instance of the class
40
41
  def spawn(klass, *args)
41
42
  klass.new(@redis, *args, @namespace)
@@ -3,6 +3,7 @@ require 'inferx/category'
3
3
 
4
4
  class Inferx
5
5
  class Categories < Adapter
6
+ include Enumerable
6
7
 
7
8
  # Get all category names.
8
9
  #
@@ -11,9 +12,9 @@ class Inferx
11
12
  (hkeys || []).map(&:to_sym)
12
13
  end
13
14
 
14
- # Get a category according name.
15
+ # Get a category according the name.
15
16
  #
16
- # @param [Symbol] category name
17
+ # @param [Symbol] category_name category name
17
18
  # @return [Inferx::Category] category
18
19
  def get(category_name)
19
20
  raise ArgumentError, "'#{category_name}' is missing" unless hexists(category_name)
@@ -23,7 +24,7 @@ class Inferx
23
24
 
24
25
  # Add categories.
25
26
  #
26
- # @param [Array<Symbol>] category names
27
+ # @param [Array<Symbol>] category_names category names
27
28
  def add(*category_names)
28
29
  @redis.pipelined do
29
30
  category_names.each { |category_name| hsetnx(category_name, 0) }
@@ -32,7 +33,7 @@ class Inferx
32
33
 
33
34
  # Remove categories.
34
35
  #
35
- # @param [Array<Symbol>] category names
36
+ # @param [Array<Symbol>] category_names category names
36
37
  def remove(*category_names)
37
38
  @redis.pipelined do
38
39
  category_names.each { |category_name| hdel(category_name) }
@@ -40,12 +41,10 @@ class Inferx
40
41
  end
41
42
  end
42
43
 
43
- include Enumerable
44
-
45
44
  # Apply process for each category.
46
45
  #
47
46
  # @yield a block to be called for every category
48
- # @yieldparam [Inferx::Category] category
47
+ # @yieldparam [Inferx::Category] category category
49
48
  def each
50
49
  all.each { |category_name| yield spawn(Category, category_name) }
51
50
  end
@@ -3,22 +3,25 @@ require 'inferx/adapter'
3
3
  class Inferx
4
4
  class Category < Adapter
5
5
 
6
- # @param [Redis] an instance of Redis
7
- # @param [Symbol] a category name
8
- # @param [String] namespace of keys to be used to Redis
6
+ # @param [Redis] redis an instance of Redis
7
+ # @param [Symbol] name a category name
8
+ # @param [String] namespace namespace of keys to be used to Redis
9
9
  def initialize(redis, name, namespace = nil)
10
10
  super(redis, namespace)
11
11
  @name = name
12
12
  end
13
13
 
14
+ # Get a category name.
15
+ #
16
+ # @attribute [r] name
17
+ # @return [Symbol] a category name
14
18
  attr_reader :name
15
19
 
16
20
  # Get words with scores in the category.
17
21
  #
18
22
  # @param [Hash] options
19
- # - `:score => Integer`: lower limit for getting by score
20
- # - `:rank => Integer`: upper limit for getting by rank
21
- #
23
+ # @option options [Integer] :score lower limit for getting by score
24
+ # @option options [Integer] :rank upper limit for getting by rank
22
25
  # @return [Hash<String, Integer>] words with scores
23
26
  def all(options = {})
24
27
  words_with_scores = if score = options[:score]
@@ -41,10 +44,9 @@ class Inferx
41
44
 
42
45
  # Get score of a word.
43
46
  #
44
- # @param [String] a word
45
- # @return [Integer, nil]
46
- # - when the word is member, score of the word
47
- # - when the word is not member, nil
47
+ # @param [String] word a word
48
+ # @return [Integer] when the word is member, score of the word
49
+ # @return [nil] when the word is not member
48
50
  def get(word)
49
51
  score = zscore(word)
50
52
  score ? score.to_i : nil
@@ -53,7 +55,7 @@ class Inferx
53
55
 
54
56
  # Enhance the training data giving words.
55
57
  #
56
- # @param [Array<String>] words
58
+ # @param [Array<String>] words an array of words
57
59
  def train(words)
58
60
  @redis.pipelined do
59
61
  increase = collect(words).inject(0) do |count, pair|
@@ -67,7 +69,7 @@ class Inferx
67
69
 
68
70
  # Attenuate the training data giving words.
69
71
  #
70
- # @param [Array<String>] words
72
+ # @param [Array<String>] words an array of words
71
73
  def untrain(words)
72
74
  decrease = 0
73
75
 
@@ -97,9 +99,9 @@ class Inferx
97
99
 
98
100
  # Get effectively scores for each word.
99
101
  #
100
- # @param [Array<String>] words
101
- # @param [Hash<String, Integer>] words with scores prepared in advance for
102
- # reduce access to Redis
102
+ # @param [Array<String>] words a set of words
103
+ # @param [Hash<String, Integer>] words_with_scores words with scores
104
+ # prepared in advance for reduce access to Redis
103
105
  # @return [Array<Integer>] scores for each word
104
106
  def scores(words, words_with_scores = {})
105
107
  scores = @redis.pipelined do
@@ -1,3 +1,3 @@
1
1
  class Inferx
2
- VERSION = '0.1.5'
2
+ VERSION = '0.1.6'
3
3
  end
data/lib/inferx.rb CHANGED
@@ -5,11 +5,10 @@ require 'inferx/categories'
5
5
 
6
6
  class Inferx
7
7
 
8
- # @param [Hash] options
9
- # - `:namespace => String`: namespace of keys to be used to Redis
8
+ # @param [Hash] options other options are passed to Redis#initialize in
9
+ # {https://github.com/redis/redis-rb redis}
10
10
  #
11
- # Other options are passed to Redis#initialize in:
12
- # https://github.com/redis/redis-rb
11
+ # @option options [String] :namespace namespace of keys to be used to Redis
13
12
  def initialize(options = {})
14
13
  namespace = options.delete(:namespace)
15
14
  redis = Redis.new(options)
@@ -20,8 +19,8 @@ class Inferx
20
19
 
21
20
  # Get a score of a category according to a set of words.
22
21
  #
23
- # @param [Inferx::Category] a category for scoring
24
- # @param [Array<String>] a set of words
22
+ # @param [Inferx::Category] category a category for scoring
23
+ # @param [Array<String>] words a set of words
25
24
  # @return [Float] a score of the category
26
25
  def score(category, words)
27
26
  size = category.size.to_f
@@ -33,7 +32,7 @@ class Inferx
33
32
 
34
33
  # Get a score for each category according to a set of words.
35
34
  #
36
- # @param [Array<String>] a set of words
35
+ # @param [Array<String>] words a set of words
37
36
  # @return [Hash<Symbol, Float>] scores to key a category
38
37
  #
39
38
  # @see #score
@@ -42,9 +41,9 @@ class Inferx
42
41
  Hash[@categories.map { |category| [category.name, score(category, words)] }]
43
42
  end
44
43
 
45
- # Classify words to any one category
44
+ # Classify words to any one category.
46
45
  #
47
- # @param [Array<String>] a set of words
46
+ # @param [Array<String>] words a set of words
48
47
  # @return [Symbol] most high-scoring category name
49
48
  #
50
49
  # @see #score
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.1.5
4
+ version: 0.1.6
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-04-02 00:00:00.000000000 Z
12
+ date: 2012-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: redis
@@ -97,3 +97,4 @@ test_files:
97
97
  - spec/inferx/category_spec.rb
98
98
  - spec/inferx_spec.rb
99
99
  - spec/spec_helper.rb
100
+ has_rdoc: