markov-rb 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/data/{cities.json → city.json} +0 -0
- data/data/{names.json → name.json} +0 -0
- data/lib/markov.rb +28 -0
- data/lib/markov/chain.rb +16 -10
- data/lib/markov/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: beb0322e06d4010dae371a3cd34c164ce95ef01b
|
4
|
+
data.tar.gz: 41c6c2364bb409bd3203e7f4e2d14f5a83678dfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44495e7e61d8e00bec997938378e401d66f735a5637079e127efd240a8091b87693edfa78c3118798ed9a8adfe8be027534f6767c72d0ef27b18f5c0ad3d9818
|
7
|
+
data.tar.gz: 0784cbaf902d855161d3132d10b4d5e1273a0eb905bd683a6ded5f3f224a1db471505d095830253466bc01a75321050943df942c79ed4d5211d58da402be3bc0
|
File without changes
|
File without changes
|
data/lib/markov.rb
CHANGED
@@ -1,7 +1,35 @@
|
|
1
1
|
require 'ruby-progressbar'
|
2
|
+
require 'oj'
|
2
3
|
|
3
4
|
require 'markov/version'
|
4
5
|
require 'markov/transition_matrix'
|
5
6
|
require 'markov/statistics/random_event'
|
6
7
|
|
7
8
|
require 'markov/chain'
|
9
|
+
|
10
|
+
module Markov
|
11
|
+
def self.generate(thing)
|
12
|
+
chain_for(thing).generate_word!.strip
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
def self.chains
|
17
|
+
@chains ||= {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.chain_for(thing)
|
21
|
+
chains[thing] ||= load_chain(thing)
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.load_chain(thing)
|
25
|
+
analysis_file = File.join(
|
26
|
+
File.expand_path(File.dirname(__FILE__)),
|
27
|
+
'..',
|
28
|
+
'data',
|
29
|
+
"#{thing}.json"
|
30
|
+
)
|
31
|
+
|
32
|
+
chain_data = File.read(analysis_file)
|
33
|
+
Oj.load(chain_data)
|
34
|
+
end
|
35
|
+
end
|
data/lib/markov/chain.rb
CHANGED
@@ -72,15 +72,7 @@ module Markov
|
|
72
72
|
word = nil
|
73
73
|
|
74
74
|
until max && (generated_count +=1)>=max
|
75
|
-
|
76
|
-
word = @words.first
|
77
|
-
until !@words.include?(word.chomp) && word.chomp.match(/^[A-Z][a-z]+$/)
|
78
|
-
word = (generate_word!) #.chomp #(context: generated_text)
|
79
|
-
end
|
80
|
-
@words.push(word.chomp)
|
81
|
-
else
|
82
|
-
word = generate_word!(context: generated_text)
|
83
|
-
end
|
75
|
+
word = generate_word!(context: new_words ? ["\n"] : generated_text)
|
84
76
|
|
85
77
|
if show
|
86
78
|
word.chars.each do |ch|
|
@@ -97,10 +89,24 @@ module Markov
|
|
97
89
|
end
|
98
90
|
|
99
91
|
def generate_word!(context: ["\n"])
|
92
|
+
if new_words
|
93
|
+
word = @words.first
|
94
|
+
until !@words.include?(word.chomp) && word.chomp.match(/^[A-Z][a-z]+$/)
|
95
|
+
word = (generate_any_word!) #.chomp #(context: generated_text)
|
96
|
+
end
|
97
|
+
@words.push(word.chomp)
|
98
|
+
word
|
99
|
+
else
|
100
|
+
generate_any_word!(context: context) #generated_text)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
private
|
105
|
+
def generate_any_word!(context: ["\n"])
|
100
106
|
generated_chars = []
|
101
107
|
char = ''
|
102
108
|
until char.match(/[ .,;!?\n]/)
|
103
|
-
|
109
|
+
char = predict_next_state(context+generated_chars)
|
104
110
|
generated_chars.push(char)
|
105
111
|
end
|
106
112
|
generated_chars.join
|
data/lib/markov/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: markov-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph Weissman
|
@@ -203,8 +203,8 @@ files:
|
|
203
203
|
- bin/markov
|
204
204
|
- data/architecture.json
|
205
205
|
- data/architecture.txt
|
206
|
-
- data/cities.json
|
207
206
|
- data/cities.txt
|
207
|
+
- data/city.json
|
208
208
|
- data/frankenstein.txt
|
209
209
|
- data/iliad.txt
|
210
210
|
- data/jabberwocky.json
|
@@ -216,7 +216,7 @@ files:
|
|
216
216
|
- data/metamorphosis.txt
|
217
217
|
- data/milton.txt
|
218
218
|
- data/moby-dick.txt
|
219
|
-
- data/
|
219
|
+
- data/name.json
|
220
220
|
- data/names.txt
|
221
221
|
- data/phil.txt
|
222
222
|
- data/shakespeare.txt
|