class ProbabilityCollection

Public Class Methods

new(args) click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 2
def initialize(args)
  @categories = args[:categories] || []
  initialize_ids
  @probabilities = []
  initalize_probabilities(@ids)
end

Public Instance Methods

category_with_max() click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 37
def category_with_max
  if @probabilities.max > 0
    id = @probabilities.find_index(@probabilities.max)
    @categories.find { |category| category.id == id }
  else
    @categories.default
  end
end
find(category) click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 9
def find(category)
  @probabilities[category.id]
end
greater_then(value) click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 50
def greater_then(value)
  @probabilities.map! do |p|
    if p > value
      p
    else
      0
    end
  end
end
max() click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 46
def max
  @probabilities.max
end
multiply(args) click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 19
def multiply(args)
  category = args[:category]
  factor = args[:factor]
  if category
    @probabilities[category.id] *= factor
  else
    @probabilities.map! { |el| el * factor }
  end
end
normalize() click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 29
def normalize
  if sum > 0
    normalization_factor = 1.to_f / sum
    multiply(factor: normalization_factor)
  end
  self
end
set(args) click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 13
def set(args)
  category = args[:category]
  value = args[:value]
  @probabilities[category.id] = value
end
sum() click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 60
def sum
  @probabilities.reduce(:+)
end
to_s() click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 64
def to_s
  result = ''
  @categories.each do |category|
    result << category.to_s
    result << ':'
    result << find(category).to_s
    result << "\n"
  end
  result
end

Private Instance Methods

initalize_probabilities(ids) click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 81
def initalize_probabilities(ids)
  ids.max.times do
    @probabilities << 0
  end
end
initialize_ids() click to toggle source
# File lib/NaiveText/ProbabilityCollection.rb, line 77
def initialize_ids
  @ids = @categories.map(&:id)
end