class Rlid::LanguageProbabilities
Constants
- CLASSNAME
- LANG
indexes
- MAX_OUTPUT
- PERC
Attributes
percentage[RW]
Public Class Methods
new(args={})
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 46 def initialize(args={}) @percentage = Hash.new(0) args.each do |languages, percentage| add(languages, percentage) end end
Public Instance Methods
*(other)
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 85 def *(other) if not other.is_a? LanguageProbabilities p other.inspect raise InvalidArgument.new(other) end res = LanguageProbabilities.new() @percentage.each_key do |lang| res.percentage[lang] = percentage[lang] * other.percentage[lang] end res.normalize res end
[](lang)
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 73 def [](lang) @percentage[lang] end
first()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 81 def first sorted.first[LANG] end
random_language()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 53 def random_language r = rand sum = 0 @percentage.each do |language, perc| sum += perc return language if sum > r #puts "#{sum}(#{r})" end warn "rounding error!! (sum is not 1!!)" @percentage.keys.first end
to_a()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 77 def to_a sorted.map{|x| {language: x[LANG], confidence: x[PERC]}} end
to_html()
click to toggle source
# File lib/rlid/web.rb, line 6 def to_html sorted[0...MAX_OUTPUT].map do |x| perc = Percentage.new(x[PERC]).to_s lang = Language.name_of(x[LANG]) "<div class='#{CLASSNAME}'>" + "#{lang} (#{perc}% chance)</div>" end.join("\n") end
to_s()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 65 def to_s sorted[0...MAX_OUTPUT].map do |x| # calculate the digits formatted_perc = Percentage.new(x[PERC]).to_s "#{x[LANG]}(#{formatted_perc})" end.join(" : ") end
Protected Instance Methods
normalize()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 126 def normalize tot = sum return if tot == 0 @percentage.each_key do |key| @percentage[key] /= tot end end
random_language_and_delete()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 119 def random_language_and_delete l = random_language @percentage.delete(l) normalize l end
sorted()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 138 def sorted begin @percentage.to_a.sort!{|x,y| y[PERC] <=> x[PERC]} rescue p @percentage end end
sum()
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 134 def sum @percentage.values.inject(0){|s, v| s + v} end
Private Instance Methods
add(languages, perc)
click to toggle source
# File lib/rlid/probabilities/language_probabilities.rb, line 99 def add(languages, perc) if perc < 0 or perc > 1 perc = perc.round end languages = [languages] if not languages.is_a? Array perc = perc.to_f / languages.size languages.each {|l| @percentage[l] = perc} end