aboutsummaryrefslogtreecommitdiff
path: root/markov-analyse.rb
blob: 6c306ca4e5ecdcfc887e67d034a13c96bc307c8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module Markov
	class Analyser
		def initialize(inputfile, chunklength)
			@chunklength = chunklength
			@stats = {"__SETTINGS__" => {"__CHUNKLENGTH__" => @chunklength}}

			@words = File.readlines(inputfile)
						 .map(&:split)
						 .flatten
		end

		def analyse
			(0 .. (@words.length - @chunklength - @chunklength)).each do |i|
				k = @words[i...(i+@chunklength)]
				v = @words[(i+@chunklength)]
				if @stats.include?(k) then
					t = @stats[k]
					if t.include?(v) then
						t[v] += 1
					else
						t[v] = 1
					end
				else
					@stats[k] = Hash.new
					@stats[k][v] = 1
				end
			end
		end

		def save(outputfile)
			File.new(outputfile, "w").print(Marshal::dump(@stats))
		end
	end
end