class ProbabilityCalculator
Public Class Methods
new(args)
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 2 def initialize(args) @categories = args[:categories] || [] @probabilities = ProbabilityCollection.new(categories: @categories) end
Public Instance Methods
get_probabilities_for(text)
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 7 def get_probabilities_for(text) calculateProbabilities(text) @probabilities.normalize end
Private Instance Methods
calculateProbabilities(text)
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 22 def calculateProbabilities(text) set_apriori_probabilities list_of_words = text.split(/\W+/) list_of_words.each do |word| @categories.each do |category| @probabilities.multiply(category: category, factor: protect_factor(category.p(word))) end end remove_minimum(text) end
minimum()
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 18 def minimum 1.to_f / (10 * @categories.total_word_count) end
protect_factor(factor)
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 14 def protect_factor(factor) [factor, minimum].max end
remove_minimum(text)
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 39 def remove_minimum(text) times = text.split(/\W+/).length @probabilities.greater_then(minimum**times) end
set_apriori_probabilities()
click to toggle source
# File lib/NaiveText/ProbabilityCalculator.rb, line 33 def set_apriori_probabilities @categories.each do |category| @probabilities.set(category: category, value: @categories.p_apriori(category)) end end