Alternate implementation
[rbot-mark] / test.rb
1 #! /usr/bin/ruby -w
2 # vim: set sw=2 et:
3 # Author: Giuseppe Bilotta <giuseppe.bilotta@gmail.com>
4 # New markov chain plugin tester
5
6 require 'mark2'
7
8 fname = ARGV.fetch(0, "promessi.txt")
9
10 max_ord = ARGV.fetch(1, 5).to_i
11
12 min_ord = ARGV.fetch(2, 5).to_i
13
14 mkv = MarkovChainer.new(max_ord)
15
16 size = File.size?(fname)
17
18 return unless size
19
20 # mkv.learn("This is a test, this is a test indeed.")
21
22 # pp mkv.instance_variable_get(:@mkv) if defined? pp
23
24 # mkv.complete("")
25
26 old_ratio = 0
27 File.open(fname) { |file|
28   file.each { |line|
29     mkv.learn(line.chomp)
30     new_ratio = file.pos*100/size
31     if new_ratio > old_ratio
32       old_ratio = new_ratio
33       puts "\n\n\nLearned #{new_ratio}%"
34       # pp mkv.instance_variable_get(:@mkv) if defined? pp
35       puts "%u words known" % mkv.instance_variable_get(:@mkv).size
36       min_ord.upto(max_ord) { |ord|
37         puts "\nOrder #{ord}::"
38         puts mkv.complete("", :max_order=>ord)
39       }
40     end
41   }
42 }
43
44