class Rubykov::WordGenerator
Public Class Methods
new(order, training_data)
click to toggle source
Calls superclass method
Rubykov::MarkovModel::new
# File lib/rubykov/word_generator.rb, line 3 def initialize(order, training_data) super(order, training_data) end
Public Instance Methods
train(training_data)
click to toggle source
# File lib/rubykov/word_generator.rb, line 7 def train(training_data) add_data_to_model(training_data) end
word()
click to toggle source
# File lib/rubykov/word_generator.rb, line 11 def word chain.to_a.join('').capitalize end
Private Instance Methods
add_data_to_model(training_data)
click to toggle source
Calls superclass method
Rubykov::MarkovModel#add_data_to_model
# File lib/rubykov/word_generator.rb, line 21 def add_data_to_model(training_data) massage_training_data(training_data).each do |datum| super(datum) end end
chain_enumerator(seed_state = states.sample)
click to toggle source
# File lib/rubykov/word_generator.rb, line 27 def chain_enumerator(seed_state = states.sample) Enumerator.new do |output| current_state = seed_state current_state.each do |word| output << word end loop do break if @representation[current_state].nil? next_letter = @representation[current_state].sample break if next_letter == '\\n' output << next_letter current_state = current_state.last(@order-1) + [next_letter] end end end
massage_training_data(training_data)
click to toggle source
# File lib/rubykov/word_generator.rb, line 17 def massage_training_data(training_data) training_data.map { |datum| datum.downcase.split('') + ['\n'] } end