@@ -12,7 +12,7 @@ type MarkovGenerator* = ref object
12
12
of mgtSimple:
13
13
seqModel: Table[string , seq [string ]]
14
14
of mgtWeighted:
15
- weightModel: Table[string , Table [string , int ]]
15
+ weightModel: Table[string , CountTable [string ]]
16
16
17
17
proc filterString(str: string ): string =
18
18
var subResult = newSeq[string ]()
@@ -54,11 +54,8 @@ proc add*(generator: MarkovGenerator, sample: string) =
54
54
generator.seqModel[currentFrame].add(nextFrame)
55
55
of mgtWeighted:
56
56
if currentFrame notin generator.weightModel:
57
- generator.weightModel[currentFrame] = initTable[
58
- string , int ]()
59
- if nextFrame notin generator.weightModel[currentFrame]:
60
- generator.weightModel[currentFrame][nextFrame] = 1
61
- else : generator.weightModel[currentFrame][nextFrame] += 1
57
+ generator.weightModel[currentFrame] = initCountTable[string ]()
58
+ generator.weightModel[currentFrame].inc(nextFrame)
62
59
proc add* (generator: MarkovGenerator, samples: seq [string ]) =
63
60
# # Adds seqence of strings to samples.
64
61
for sample in samples:
@@ -67,15 +64,16 @@ proc add*(generator: MarkovGenerator, samples: seq[string]) =
67
64
proc samples* (generator: MarkovGenerator): seq [string ] = generator.samples
68
65
# # Returns all samples of generator.
69
66
70
- proc model* (generator: MarkovGenerator): Table[string , seq [string ]] =
67
+ proc model* (generator: MarkovGenerator): Table[string , CountTable [string ]] =
71
68
# # Returns model of generator.
72
69
case generator.kind
73
- of mgtSimple:
74
- result = generator.seqModel
75
70
of mgtWeighted:
76
- result = initTable[string , seq [string ]]()
77
- for key, value in generator.weightModel.pairs:
78
- result [key] = value.keys.toSeq
71
+ result = generator.weightModel
72
+ of mgtSimple:
73
+ for key, value in generator.seqModel:
74
+ result [key] = initCountTable[string ]()
75
+ for frame in value:
76
+ result [key][frame] = 1 # always will be 1 since in simple model frames are unique
79
77
80
78
proc clear* (generator: MarkovGenerator) =
81
79
# # Clears generator.
0 commit comments