class

Markov::TransitionTable(LinkType)

Inherits Hash / Iterable / Enumerable / Reference / Object

A TransitionTable represents a mapping of keys to TransitionMatrix's.

Constructors

new(pull : JSON::PullParser)

Makes it possible to use #to_json and #from_json (see Crystal docs)

Source
new

Creates a new empty TransitionMatrix.

Source

Instance methods

add(key : LinkType)

Inserts key into last added key's TransitionMatrix, if applicable, and creates new TransitionMatrix for key if not already there.

Source
fill(table_with sample : Array(LinkType))

Sequentially fills TransitionTable with values in given Array using #add method. Just a shortcut for looping through array and #adding elements.

string_array = %w(some say the world will end in fire)
tt = Markov::TransitionTable(String).new
tt.fill table_with: string_array
Source
probable(after key : LinkType) : LinkType

Returns probable transition from the TransitionMatrix associated with key provided. Will raise EmptyTransitionMatrixException if no probable transition is available.

string_array = %w(some say the world will end in fire)
tt = Markov::TransitionTable(String).new
tt.fill table_with: string_array

tt.probable? after: "world" #=> "will"
tt.probable? after: "fire" # raises `EmptyTransitionMatrixException`
Source
probable?(after key : LinkType) : LinkType | Nil

Returns probable transition from the TransitionMatrix associated with key provided. Returns nil if no probable transition is available.

string_array = %w(some say the world will end in fire)
tt = Markov::TransitionTable(String).new
tt.fill table_with: string_array

tt.probable? after: "world" #=> "will"
tt.probable? after: "fire" #=> nil
Source
random_key

Returns random key. Will raise EmptyTransitionTableException if TransitionTable is empty.

Source
random_matrix

Returns random TransitionMatrix from table.

Source
reset

Resets the TransitionTable's last added key between non-sequential sets of training data.

movie_one = %w(the great gatsby)
movie_two = %w(great expectations)
tt = Markov::TransitionTable(String).new
tt.fill table_with: movie_one
tt.reset()
tt.fill table_with: movie_two
tt.probable? after: "gatsby" #=> nil
tt.probable? after: "great" #=> "expectations" or "gatsby"
Source