class MarkovChainChatBot

A chat bot utilizing MarkovChain.

Public Class Methods

from(data, answer_limit = 1000) click to toggle source

data is a map. It may be empty, in this case a brand new MarkovChainChatBot is created. data becomes owned by the returned MarkovChainChatBot.

answer_limit is maximum size of the result of answer().

# File lib/lib/markov_chain_chat_bot.rb, line 18
def self.from(data, answer_limit = 1000)
  new(data, answer_limit)
end

Public Instance Methods

answer(question) click to toggle source

question is String.

It returns String.

# File lib/lib/markov_chain_chat_bot.rb, line 50
def answer(question)
  answer = ""
  previous_token = nil
  catch :out_of_limit do
    for token in @markov_chain.predict()
      break if token.tkn_is_a? EndOfMessage or token.nil?
      delimiter = 
        if (previous_token.tkn_is_a? Word and token.tkn_is_a? Word) then " "
        else ""
        end
      answer.append_limited(delimiter + token.tkn_value, @answer_limit)
      previous_token = token
    end
  end
  return answer
end
data() click to toggle source

data passed to ::from.

# File lib/lib/markov_chain_chat_bot.rb, line 31
def data
  @markov_chain.data
end
learn(message) click to toggle source

message is String.

It returns this (modified) MarkovChainChatBot.

# File lib/lib/markov_chain_chat_bot.rb, line 40
def learn(message)
  @markov_chain.append!(tokenize(message)).append!([EndOfMessage.new])
  return self
end