Class: Rubykov::TextGenerator

Inherits:
MarkovModel show all
Defined in:
lib/rubykov/text_generator.rb

Instance Method Summary collapse

Methods inherited from MarkovModel

#chain, #chain_with_seed, #states, #transitions

Constructor Details

#initialize(order, training_text) ⇒ TextGenerator

Returns a new instance of TextGenerator.



3
4
5
# File 'lib/rubykov/text_generator.rb', line 3

def initialize(order, training_text)
  super(order, massage_training_text(training_text))
end

Instance Method Details

#character_limited_output(desired_length) ⇒ Object



11
12
13
14
# File 'lib/rubykov/text_generator.rb', line 11

def character_limited_output(desired_length)
  length = 0
  words_to_sentences(chain.take_while { |word| length += (word.length + 1); length < desired_length } )
end

#sentence_limited_output(desired_length) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rubykov/text_generator.rb', line 20

def sentence_limited_output(desired_length)
  length = 0
  output = []
  while length < desired_length
    output += chain.take_while do |word|
      length += 1 if is_sentence_finisher?(word)
      length < desired_length
    end
  end
  words_to_sentences(output)
end

#train(training_text) ⇒ Object



7
8
9
# File 'lib/rubykov/text_generator.rb', line 7

def train(training_text)
  super(massage_training_text(training_text))
end

#word_limited_output(desired_length) ⇒ Object



16
17
18
# File 'lib/rubykov/text_generator.rb', line 16

def word_limited_output(desired_length)
  words_to_sentences(chain.take(desired_length))
end