def apply_usage_weights(word_hash)
      max_usage = @word_list.values.max.to_f
      max_usage = 1 if max_usage == 0

      weighted_array = word_hash.map do |word, bigram_score|
        usage_score = @word_list[word].to_f / max_usage
        [word, (bigram_score * (1 - @alpha)) + (usage_score * @alpha)]
      end

      Hash[weighted_array]
    end
def apply_usage_weights(word_hash)
      max_usage = @word_list.values.max.to_f
      max_usage = 1 if max_usage == 0

      weighted_array = word_hash.map do |word, bigram_score|
        usage_score = @word_list[word].to_f / max_usage
        [word, (bigram_score * (1 - @alpha)) + (usage_score * @alpha)]
      end

      Hash[weighted_array]
    end
For each word, adjust it's score by usage

 v = s * (1 - a) + u * a
 Where v is the new value
 a is @alpha
 s is the bigram score (0..1)
 u is the usage score (0..1)