sooth 2.1.2 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +7 -7
- data/Gemfile.lock +135 -79
- data/README.md +0 -1
- data/Rakefile +4 -4
- data/VERSION +1 -1
- data/ext/sooth_native/native.c +27 -1
- data/ext/sooth_native/sooth_predictor.c +22 -0
- data/ext/sooth_native/sooth_predictor.h +1 -0
- data/sooth.gemspec +29 -28
- data/spec/predictor_spec.rb +21 -0
- metadata +23 -23
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5c3224ec93d2ffe574a622e8d52da2e1c24462314fb935cab6b9382f89cdd0aa
|
|
4
|
+
data.tar.gz: b173586c080c6fc9d905c16ab73a192f003203f4300c9a92a8245b1c0893c403
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b80c93d0622c983af52e91c019136fec95fdfa1e4f94044c7c0608f46f4c5e877921edf7e8644259e5e5ab1f9adbd84186cc31f8cd9ca2100003f27fb339db46
|
|
7
|
+
data.tar.gz: bd16cbbb0fb6fa122709213303e5906a9aa193e85f0ef3e2da10a89d3ce815412abfbc66b24dce360b27f6bd787c91ec4169f14c6fa695781bce05544c83ef67
|
data/Gemfile
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
3
|
group :development do
|
|
4
|
-
gem 'rspec', '~> 3.
|
|
4
|
+
gem 'rspec', '~> 3.10'
|
|
5
5
|
gem 'yard', '~> 0.9'
|
|
6
|
-
gem 'rdoc', '~> 6.
|
|
7
|
-
gem '
|
|
8
|
-
gem 'simplecov', '~> 0.
|
|
9
|
-
gem 'byebug', '~>
|
|
10
|
-
gem 'rake-compiler', '~> 1.
|
|
11
|
-
gem 'github_changelog_generator', '~> 1.
|
|
6
|
+
gem 'rdoc', '~> 6.3'
|
|
7
|
+
gem 'juwelier', '~> 2.4'
|
|
8
|
+
gem 'simplecov', '~> 0.21'
|
|
9
|
+
gem 'byebug', '~> 11.1'
|
|
10
|
+
gem 'rake-compiler', '~> 1.1'
|
|
11
|
+
gem 'github_changelog_generator', '~> 1.15'
|
|
12
12
|
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,119 +1,175 @@
|
|
|
1
1
|
GEM
|
|
2
2
|
remote: https://rubygems.org/
|
|
3
3
|
specs:
|
|
4
|
-
activesupport (
|
|
4
|
+
activesupport (6.1.4)
|
|
5
5
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
6
|
-
i18n (
|
|
7
|
-
minitest (
|
|
8
|
-
tzinfo (~>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
6
|
+
i18n (>= 1.6, < 2)
|
|
7
|
+
minitest (>= 5.1)
|
|
8
|
+
tzinfo (~> 2.0)
|
|
9
|
+
zeitwerk (~> 2.3)
|
|
10
|
+
addressable (2.8.0)
|
|
11
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
12
|
+
async (1.29.2)
|
|
13
|
+
console (~> 1.10)
|
|
14
|
+
nio4r (~> 2.3)
|
|
15
|
+
timers (~> 4.1)
|
|
16
|
+
async-http (0.56.5)
|
|
17
|
+
async (>= 1.25)
|
|
18
|
+
async-io (>= 1.28)
|
|
19
|
+
async-pool (>= 0.2)
|
|
20
|
+
protocol-http (~> 0.22.0)
|
|
21
|
+
protocol-http1 (~> 0.14.0)
|
|
22
|
+
protocol-http2 (~> 0.14.0)
|
|
23
|
+
async-http-faraday (0.11.0)
|
|
24
|
+
async-http (~> 0.42)
|
|
25
|
+
faraday
|
|
26
|
+
async-io (1.32.2)
|
|
27
|
+
async
|
|
28
|
+
async-pool (0.3.8)
|
|
29
|
+
async (>= 1.25)
|
|
30
|
+
builder (3.2.4)
|
|
31
|
+
byebug (11.1.3)
|
|
32
|
+
concurrent-ruby (1.1.9)
|
|
33
|
+
console (1.13.1)
|
|
34
|
+
fiber-local
|
|
13
35
|
descendants_tracker (0.0.4)
|
|
14
36
|
thread_safe (~> 0.3, >= 0.3.1)
|
|
15
|
-
diff-lcs (1.
|
|
16
|
-
docile (1.
|
|
17
|
-
faraday (
|
|
37
|
+
diff-lcs (1.4.4)
|
|
38
|
+
docile (1.4.0)
|
|
39
|
+
faraday (1.5.1)
|
|
40
|
+
faraday-em_http (~> 1.0)
|
|
41
|
+
faraday-em_synchrony (~> 1.0)
|
|
42
|
+
faraday-excon (~> 1.1)
|
|
43
|
+
faraday-httpclient (~> 1.0.1)
|
|
44
|
+
faraday-net_http (~> 1.0)
|
|
45
|
+
faraday-net_http_persistent (~> 1.1)
|
|
46
|
+
faraday-patron (~> 1.0)
|
|
18
47
|
multipart-post (>= 1.2, < 3)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
48
|
+
ruby2_keywords (>= 0.0.4)
|
|
49
|
+
faraday-em_http (1.0.0)
|
|
50
|
+
faraday-em_synchrony (1.0.0)
|
|
51
|
+
faraday-excon (1.1.0)
|
|
52
|
+
faraday-http-cache (2.2.0)
|
|
53
|
+
faraday (>= 0.8)
|
|
54
|
+
faraday-httpclient (1.0.1)
|
|
55
|
+
faraday-net_http (1.0.1)
|
|
56
|
+
faraday-net_http_persistent (1.2.0)
|
|
57
|
+
faraday-patron (1.0.0)
|
|
58
|
+
fiber-local (1.0.0)
|
|
59
|
+
git (1.9.1)
|
|
60
|
+
rchardet (~> 1.8)
|
|
61
|
+
github_api (0.19.0)
|
|
62
|
+
addressable (~> 2.4)
|
|
24
63
|
descendants_tracker (~> 0.0.4)
|
|
25
|
-
faraday (
|
|
26
|
-
hashie (>= 3.
|
|
27
|
-
mime-types (>= 1.16, < 3.0)
|
|
64
|
+
faraday (>= 0.8, < 2)
|
|
65
|
+
hashie (~> 3.5, >= 3.5.2)
|
|
28
66
|
oauth2 (~> 1.0)
|
|
29
|
-
github_changelog_generator (1.
|
|
67
|
+
github_changelog_generator (1.16.4)
|
|
30
68
|
activesupport
|
|
69
|
+
async (>= 1.25.0)
|
|
70
|
+
async-http-faraday
|
|
31
71
|
faraday-http-cache
|
|
32
72
|
multi_json
|
|
33
73
|
octokit (~> 4.6)
|
|
34
|
-
rainbow (>= 2.1)
|
|
74
|
+
rainbow (>= 2.2.1)
|
|
35
75
|
rake (>= 10.0)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
i18n (0.9.5)
|
|
76
|
+
hashie (3.6.0)
|
|
77
|
+
highline (2.0.3)
|
|
78
|
+
i18n (1.8.10)
|
|
40
79
|
concurrent-ruby (~> 1.0)
|
|
41
|
-
|
|
80
|
+
juwelier (2.4.9)
|
|
42
81
|
builder
|
|
43
82
|
bundler
|
|
44
|
-
git
|
|
45
|
-
github_api
|
|
46
|
-
highline
|
|
47
|
-
|
|
83
|
+
git
|
|
84
|
+
github_api
|
|
85
|
+
highline
|
|
86
|
+
kamelcase (~> 0)
|
|
87
|
+
nokogiri
|
|
48
88
|
psych
|
|
49
89
|
rake
|
|
50
90
|
rdoc
|
|
51
91
|
semver2
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
mini_portile2 (2.3
|
|
56
|
-
minitest (5.
|
|
57
|
-
multi_json (1.
|
|
92
|
+
jwt (2.2.3)
|
|
93
|
+
kamelcase (0.0.2)
|
|
94
|
+
semver2 (~> 3)
|
|
95
|
+
mini_portile2 (2.5.3)
|
|
96
|
+
minitest (5.14.4)
|
|
97
|
+
multi_json (1.15.0)
|
|
58
98
|
multi_xml (0.6.0)
|
|
59
|
-
multipart-post (2.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
99
|
+
multipart-post (2.1.1)
|
|
100
|
+
nio4r (2.5.7)
|
|
101
|
+
nokogiri (1.11.7)
|
|
102
|
+
mini_portile2 (~> 2.5.0)
|
|
103
|
+
racc (~> 1.4)
|
|
104
|
+
oauth2 (1.4.7)
|
|
105
|
+
faraday (>= 0.8, < 2.0)
|
|
106
|
+
jwt (>= 1.0, < 3.0)
|
|
65
107
|
multi_json (~> 1.3)
|
|
66
108
|
multi_xml (~> 0.5)
|
|
67
109
|
rack (>= 1.2, < 3)
|
|
68
|
-
octokit (4.
|
|
110
|
+
octokit (4.21.0)
|
|
111
|
+
faraday (>= 0.9)
|
|
69
112
|
sawyer (~> 0.8.0, >= 0.5.3)
|
|
70
|
-
|
|
71
|
-
|
|
113
|
+
protocol-hpack (1.4.2)
|
|
114
|
+
protocol-http (0.22.5)
|
|
115
|
+
protocol-http1 (0.14.1)
|
|
116
|
+
protocol-http (~> 0.22)
|
|
117
|
+
protocol-http2 (0.14.2)
|
|
118
|
+
protocol-hpack (~> 1.4)
|
|
119
|
+
protocol-http (~> 0.18)
|
|
120
|
+
psych (4.0.1)
|
|
121
|
+
public_suffix (4.0.6)
|
|
122
|
+
racc (1.5.2)
|
|
123
|
+
rack (2.2.3)
|
|
72
124
|
rainbow (3.0.0)
|
|
73
|
-
rake (
|
|
74
|
-
rake-compiler (1.
|
|
125
|
+
rake (13.0.6)
|
|
126
|
+
rake-compiler (1.1.1)
|
|
75
127
|
rake
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
rspec (3.
|
|
79
|
-
rspec-core (~> 3.
|
|
80
|
-
rspec-expectations (~> 3.
|
|
81
|
-
rspec-mocks (~> 3.
|
|
82
|
-
rspec-core (3.
|
|
83
|
-
rspec-support (~> 3.
|
|
84
|
-
rspec-expectations (3.
|
|
128
|
+
rchardet (1.8.0)
|
|
129
|
+
rdoc (6.3.2)
|
|
130
|
+
rspec (3.10.0)
|
|
131
|
+
rspec-core (~> 3.10.0)
|
|
132
|
+
rspec-expectations (~> 3.10.0)
|
|
133
|
+
rspec-mocks (~> 3.10.0)
|
|
134
|
+
rspec-core (3.10.1)
|
|
135
|
+
rspec-support (~> 3.10.0)
|
|
136
|
+
rspec-expectations (3.10.1)
|
|
85
137
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
86
|
-
rspec-support (~> 3.
|
|
87
|
-
rspec-mocks (3.
|
|
138
|
+
rspec-support (~> 3.10.0)
|
|
139
|
+
rspec-mocks (3.10.2)
|
|
88
140
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
89
|
-
rspec-support (~> 3.
|
|
90
|
-
rspec-support (3.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
141
|
+
rspec-support (~> 3.10.0)
|
|
142
|
+
rspec-support (3.10.2)
|
|
143
|
+
ruby2_keywords (0.0.5)
|
|
144
|
+
sawyer (0.8.2)
|
|
145
|
+
addressable (>= 2.3.5)
|
|
146
|
+
faraday (> 0.8, < 2.0)
|
|
94
147
|
semver2 (3.4.2)
|
|
95
|
-
simplecov (0.
|
|
96
|
-
docile (~> 1.1
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
simplecov-html (0.
|
|
148
|
+
simplecov (0.21.2)
|
|
149
|
+
docile (~> 1.1)
|
|
150
|
+
simplecov-html (~> 0.11)
|
|
151
|
+
simplecov_json_formatter (~> 0.1)
|
|
152
|
+
simplecov-html (0.12.3)
|
|
153
|
+
simplecov_json_formatter (0.1.3)
|
|
100
154
|
thread_safe (0.3.6)
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
155
|
+
timers (4.3.3)
|
|
156
|
+
tzinfo (2.0.4)
|
|
157
|
+
concurrent-ruby (~> 1.0)
|
|
158
|
+
yard (0.9.26)
|
|
159
|
+
zeitwerk (2.4.2)
|
|
104
160
|
|
|
105
161
|
PLATFORMS
|
|
106
162
|
ruby
|
|
107
163
|
|
|
108
164
|
DEPENDENCIES
|
|
109
|
-
byebug (~>
|
|
110
|
-
github_changelog_generator (~> 1.
|
|
111
|
-
|
|
112
|
-
rake-compiler (~> 1.
|
|
113
|
-
rdoc (~> 6.
|
|
114
|
-
rspec (~> 3.
|
|
115
|
-
simplecov (~> 0.
|
|
165
|
+
byebug (~> 11.1)
|
|
166
|
+
github_changelog_generator (~> 1.15)
|
|
167
|
+
juwelier (~> 2.4)
|
|
168
|
+
rake-compiler (~> 1.1)
|
|
169
|
+
rdoc (~> 6.3)
|
|
170
|
+
rspec (~> 3.10)
|
|
171
|
+
simplecov (~> 0.21)
|
|
116
172
|
yard (~> 0.9)
|
|
117
173
|
|
|
118
174
|
BUNDLED WITH
|
|
119
|
-
1.
|
|
175
|
+
1.17.3
|
data/README.md
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
[](http://badge.fury.io/rb/sooth)
|
|
2
|
-
[](https://gemnasium.com/kranzky/sooth)
|
|
3
2
|
[](https://codeship.com/projects/82075)
|
|
4
3
|
|
|
5
4
|
Sooth
|
data/Rakefile
CHANGED
|
@@ -11,8 +11,8 @@ rescue Bundler::BundlerError => e
|
|
|
11
11
|
end
|
|
12
12
|
require 'rake'
|
|
13
13
|
|
|
14
|
-
require '
|
|
15
|
-
|
|
14
|
+
require 'juwelier'
|
|
15
|
+
Juwelier::Tasks.new do |gem|
|
|
16
16
|
# gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
|
|
17
17
|
gem.name = "sooth"
|
|
18
18
|
gem.homepage = "http://github.com/jasonhutchens/sooth"
|
|
@@ -21,10 +21,10 @@ Jeweler::Tasks.new do |gem|
|
|
|
21
21
|
gem.description = %Q{Sooth is a simple stochastic predictive model.}
|
|
22
22
|
gem.email = "jasonhutchens@gmail.com"
|
|
23
23
|
gem.authors = ["Jason Hutchens"]
|
|
24
|
-
gem.required_ruby_version = "
|
|
24
|
+
gem.required_ruby_version = ">= 2.1"
|
|
25
25
|
# dependencies defined in Gemfile
|
|
26
26
|
end
|
|
27
|
-
|
|
27
|
+
Juwelier::RubygemsDotOrgTasks.new
|
|
28
28
|
|
|
29
29
|
require 'rake/extensiontask'
|
|
30
30
|
Rake::ExtensionTask.new('sooth_native')
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.1
|
|
1
|
+
2.3.1
|
data/ext/sooth_native/native.c
CHANGED
|
@@ -43,7 +43,10 @@ void method_sooth_native_deallocate(void * predictor);
|
|
|
43
43
|
* def uncertainty(context)
|
|
44
44
|
* # (native code)
|
|
45
45
|
* end
|
|
46
|
-
* def surprise(context,
|
|
46
|
+
* def surprise(context, event)
|
|
47
|
+
* # (native code)
|
|
48
|
+
* end
|
|
49
|
+
* def frequency(context, event)
|
|
47
50
|
* # (native code)
|
|
48
51
|
* end
|
|
49
52
|
* end
|
|
@@ -159,6 +162,16 @@ VALUE method_sooth_native_uncertainty(VALUE self, VALUE context);
|
|
|
159
162
|
*/
|
|
160
163
|
VALUE method_sooth_native_surprise(VALUE self, VALUE bigram, VALUE limit);
|
|
161
164
|
|
|
165
|
+
/*
|
|
166
|
+
* Return a number indicating the frequency that the event has been observed
|
|
167
|
+
* within the given context.
|
|
168
|
+
*
|
|
169
|
+
* @param [Fixnum] context A number that provides a context for observations.
|
|
170
|
+
* @param [Fixnum] event A number representing the observed event.
|
|
171
|
+
* @return [Float] The frequency, as a number between 0.0 and 1.0
|
|
172
|
+
*/
|
|
173
|
+
VALUE method_sooth_native_frequency(VALUE self, VALUE bigram, VALUE limit);
|
|
174
|
+
|
|
162
175
|
//------------------------------------------------------------------------------
|
|
163
176
|
|
|
164
177
|
void Init_sooth_native()
|
|
@@ -181,6 +194,7 @@ void Init_sooth_native()
|
|
|
181
194
|
rb_define_method(SoothNative, "distribution", method_sooth_native_distribution, 1);
|
|
182
195
|
rb_define_method(SoothNative, "uncertainty", method_sooth_native_uncertainty, 1);
|
|
183
196
|
rb_define_method(SoothNative, "surprise", method_sooth_native_surprise, 2);
|
|
197
|
+
rb_define_method(SoothNative, "frequency", method_sooth_native_frequency, 2);
|
|
184
198
|
}
|
|
185
199
|
|
|
186
200
|
//------------------------------------------------------------------------------
|
|
@@ -368,4 +382,16 @@ method_sooth_native_surprise(VALUE self, VALUE context, VALUE event)
|
|
|
368
382
|
return DBL2NUM(surprise);
|
|
369
383
|
}
|
|
370
384
|
|
|
385
|
+
//------------------------------------------------------------------------------
|
|
386
|
+
|
|
387
|
+
VALUE
|
|
388
|
+
method_sooth_native_frequency(VALUE self, VALUE context, VALUE event)
|
|
389
|
+
{
|
|
390
|
+
SoothPredictor * predictor = NULL;
|
|
391
|
+
Check_Type(context, T_FIXNUM);
|
|
392
|
+
Check_Type(event, T_FIXNUM);
|
|
393
|
+
Data_Get_Struct(self, SoothPredictor, predictor);
|
|
394
|
+
return DBL2NUM(sooth_predictor_frequency(predictor, NUM2UINT(context), NUM2UINT(event)));
|
|
395
|
+
}
|
|
396
|
+
|
|
371
397
|
//==============================================================================
|
|
@@ -406,4 +406,26 @@ sooth_predictor_surprise(SoothPredictor * predictor, uint32_t id, uint32_t event
|
|
|
406
406
|
return -log2(frequency);
|
|
407
407
|
}
|
|
408
408
|
|
|
409
|
+
//------------------------------------------------------------------------------
|
|
410
|
+
|
|
411
|
+
double
|
|
412
|
+
sooth_predictor_frequency(SoothPredictor * predictor, uint32_t id, uint32_t event)
|
|
413
|
+
{
|
|
414
|
+
SoothContext * context = sooth_predictor_find_context(predictor, id);
|
|
415
|
+
|
|
416
|
+
if (context == NULL || context->count == 0)
|
|
417
|
+
{
|
|
418
|
+
return 0.0;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
SoothStatistic * statistic = sooth_predictor_find_statistic(context, event);
|
|
422
|
+
|
|
423
|
+
if (statistic == NULL || statistic->count == 0)
|
|
424
|
+
{
|
|
425
|
+
return 0.0;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
return (double)statistic->count / (double)context->count;
|
|
429
|
+
}
|
|
430
|
+
|
|
409
431
|
//==============================================================================
|
|
@@ -30,6 +30,7 @@ uint32_t sooth_predictor_select(SoothPredictor * predictor, uint32_t id, uint32_
|
|
|
30
30
|
SoothStatistic * sooth_predictor_distribution(SoothPredictor * predictor, uint32_t id);
|
|
31
31
|
double sooth_predictor_uncertainty(SoothPredictor * predictor, uint32_t id);
|
|
32
32
|
double sooth_predictor_surprise(SoothPredictor * predictor, uint32_t id, uint32_t symbol);
|
|
33
|
+
double sooth_predictor_frequency(SoothPredictor * predictor, uint32_t id, uint32_t symbol);
|
|
33
34
|
|
|
34
35
|
//==============================================================================
|
|
35
36
|
|
data/sooth.gemspec
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
# Generated by
|
|
1
|
+
# Generated by juwelier
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
|
-
# Instead, edit
|
|
3
|
+
# Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: sooth 2.1
|
|
5
|
+
# stub: sooth 2.3.1 ruby lib
|
|
6
6
|
# stub: ext/sooth_native/extconf.rb
|
|
7
7
|
|
|
8
8
|
Gem::Specification.new do |s|
|
|
9
9
|
s.name = "sooth".freeze
|
|
10
|
-
s.version = "2.1
|
|
10
|
+
s.version = "2.3.1"
|
|
11
11
|
|
|
12
12
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
|
13
13
|
s.require_paths = ["lib".freeze]
|
|
14
14
|
s.authors = ["Jason Hutchens".freeze]
|
|
15
|
-
s.date = "
|
|
15
|
+
s.date = "2021-07-20"
|
|
16
16
|
s.description = "Sooth is a simple stochastic predictive model.".freeze
|
|
17
17
|
s.email = "jasonhutchens@gmail.com".freeze
|
|
18
18
|
s.extensions = ["ext/sooth_native/extconf.rb".freeze]
|
|
19
19
|
s.extra_rdoc_files = [
|
|
20
|
+
"CHANGELOG.md",
|
|
20
21
|
"README.md"
|
|
21
22
|
]
|
|
22
23
|
s.files = [
|
|
@@ -41,41 +42,41 @@ Gem::Specification.new do |s|
|
|
|
41
42
|
]
|
|
42
43
|
s.homepage = "http://github.com/jasonhutchens/sooth".freeze
|
|
43
44
|
s.licenses = ["UNLICENSE".freeze]
|
|
44
|
-
s.required_ruby_version = Gem::Requirement.new("
|
|
45
|
-
s.rubygems_version = "
|
|
45
|
+
s.required_ruby_version = Gem::Requirement.new(">= 2.1".freeze)
|
|
46
|
+
s.rubygems_version = "3.0.9".freeze
|
|
46
47
|
s.summary = "Sooth is a simple stochastic predictive model.".freeze
|
|
47
48
|
|
|
48
49
|
if s.respond_to? :specification_version then
|
|
49
50
|
s.specification_version = 4
|
|
50
51
|
|
|
51
52
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
|
52
|
-
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.
|
|
53
|
+
s.add_development_dependency(%q<rspec>.freeze, ["~> 3.10"])
|
|
53
54
|
s.add_development_dependency(%q<yard>.freeze, ["~> 0.9"])
|
|
54
|
-
s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.
|
|
55
|
-
s.add_development_dependency(%q<
|
|
56
|
-
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.
|
|
57
|
-
s.add_development_dependency(%q<byebug>.freeze, ["~>
|
|
58
|
-
s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.
|
|
59
|
-
s.add_development_dependency(%q<github_changelog_generator>.freeze, ["~> 1.
|
|
55
|
+
s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.3"])
|
|
56
|
+
s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4"])
|
|
57
|
+
s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.21"])
|
|
58
|
+
s.add_development_dependency(%q<byebug>.freeze, ["~> 11.1"])
|
|
59
|
+
s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.1"])
|
|
60
|
+
s.add_development_dependency(%q<github_changelog_generator>.freeze, ["~> 1.15"])
|
|
60
61
|
else
|
|
61
|
-
s.add_dependency(%q<rspec>.freeze, ["~> 3.
|
|
62
|
+
s.add_dependency(%q<rspec>.freeze, ["~> 3.10"])
|
|
62
63
|
s.add_dependency(%q<yard>.freeze, ["~> 0.9"])
|
|
63
|
-
s.add_dependency(%q<rdoc>.freeze, ["~> 6.
|
|
64
|
-
s.add_dependency(%q<
|
|
65
|
-
s.add_dependency(%q<simplecov>.freeze, ["~> 0.
|
|
66
|
-
s.add_dependency(%q<byebug>.freeze, ["~>
|
|
67
|
-
s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.
|
|
68
|
-
s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.
|
|
64
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 6.3"])
|
|
65
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2.4"])
|
|
66
|
+
s.add_dependency(%q<simplecov>.freeze, ["~> 0.21"])
|
|
67
|
+
s.add_dependency(%q<byebug>.freeze, ["~> 11.1"])
|
|
68
|
+
s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.1"])
|
|
69
|
+
s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.15"])
|
|
69
70
|
end
|
|
70
71
|
else
|
|
71
|
-
s.add_dependency(%q<rspec>.freeze, ["~> 3.
|
|
72
|
+
s.add_dependency(%q<rspec>.freeze, ["~> 3.10"])
|
|
72
73
|
s.add_dependency(%q<yard>.freeze, ["~> 0.9"])
|
|
73
|
-
s.add_dependency(%q<rdoc>.freeze, ["~> 6.
|
|
74
|
-
s.add_dependency(%q<
|
|
75
|
-
s.add_dependency(%q<simplecov>.freeze, ["~> 0.
|
|
76
|
-
s.add_dependency(%q<byebug>.freeze, ["~>
|
|
77
|
-
s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.
|
|
78
|
-
s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.
|
|
74
|
+
s.add_dependency(%q<rdoc>.freeze, ["~> 6.3"])
|
|
75
|
+
s.add_dependency(%q<juwelier>.freeze, ["~> 2.4"])
|
|
76
|
+
s.add_dependency(%q<simplecov>.freeze, ["~> 0.21"])
|
|
77
|
+
s.add_dependency(%q<byebug>.freeze, ["~> 11.1"])
|
|
78
|
+
s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.1"])
|
|
79
|
+
s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.15"])
|
|
79
80
|
end
|
|
80
81
|
end
|
|
81
82
|
|
data/spec/predictor_spec.rb
CHANGED
|
@@ -213,4 +213,25 @@ describe Sooth::Predictor do
|
|
|
213
213
|
expect(predictor.surprise(1, 3)).to eq(8)
|
|
214
214
|
end
|
|
215
215
|
end
|
|
216
|
+
|
|
217
|
+
describe "#frequency" do
|
|
218
|
+
it "returns zero for a new context" do
|
|
219
|
+
expect(predictor.frequency(1, 3)).to eq(0)
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
it "returns zero for a new event" do
|
|
223
|
+
predictor.observe(1, 3)
|
|
224
|
+
expect(predictor.frequency(1, 4)).to eq(0)
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
it "is one for a lone event" do
|
|
228
|
+
predictor.observe(1, 3)
|
|
229
|
+
expect(predictor.frequency(1, 3)).to eq(1)
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
it "is uniform for a uniform distribution" do
|
|
233
|
+
(1..100).each { |i| predictor.observe(1, i) }
|
|
234
|
+
expect(predictor.frequency(1, 3)).to eq(0.01)
|
|
235
|
+
end
|
|
236
|
+
end
|
|
216
237
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sooth
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1
|
|
4
|
+
version: 2.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jason Hutchens
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-07-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '3.
|
|
19
|
+
version: '3.10'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '3.
|
|
26
|
+
version: '3.10'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: yard
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -44,90 +44,91 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '6.
|
|
47
|
+
version: '6.3'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '6.
|
|
54
|
+
version: '6.3'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: juwelier
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '2.
|
|
61
|
+
version: '2.4'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - "~>"
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '2.
|
|
68
|
+
version: '2.4'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: simplecov
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - "~>"
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version: '0.
|
|
75
|
+
version: '0.21'
|
|
76
76
|
type: :development
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
|
-
version: '0.
|
|
82
|
+
version: '0.21'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
84
|
name: byebug
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - "~>"
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version: '
|
|
89
|
+
version: '11.1'
|
|
90
90
|
type: :development
|
|
91
91
|
prerelease: false
|
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
93
|
requirements:
|
|
94
94
|
- - "~>"
|
|
95
95
|
- !ruby/object:Gem::Version
|
|
96
|
-
version: '
|
|
96
|
+
version: '11.1'
|
|
97
97
|
- !ruby/object:Gem::Dependency
|
|
98
98
|
name: rake-compiler
|
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
|
100
100
|
requirements:
|
|
101
101
|
- - "~>"
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
|
-
version: '1.
|
|
103
|
+
version: '1.1'
|
|
104
104
|
type: :development
|
|
105
105
|
prerelease: false
|
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
107
|
requirements:
|
|
108
108
|
- - "~>"
|
|
109
109
|
- !ruby/object:Gem::Version
|
|
110
|
-
version: '1.
|
|
110
|
+
version: '1.1'
|
|
111
111
|
- !ruby/object:Gem::Dependency
|
|
112
112
|
name: github_changelog_generator
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
115
|
- - "~>"
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '1.
|
|
117
|
+
version: '1.15'
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
122
|
- - "~>"
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '1.
|
|
124
|
+
version: '1.15'
|
|
125
125
|
description: Sooth is a simple stochastic predictive model.
|
|
126
126
|
email: jasonhutchens@gmail.com
|
|
127
127
|
executables: []
|
|
128
128
|
extensions:
|
|
129
129
|
- ext/sooth_native/extconf.rb
|
|
130
130
|
extra_rdoc_files:
|
|
131
|
+
- CHANGELOG.md
|
|
131
132
|
- README.md
|
|
132
133
|
files:
|
|
133
134
|
- CHANGELOG.md
|
|
@@ -152,13 +153,13 @@ homepage: http://github.com/jasonhutchens/sooth
|
|
|
152
153
|
licenses:
|
|
153
154
|
- UNLICENSE
|
|
154
155
|
metadata: {}
|
|
155
|
-
post_install_message:
|
|
156
|
+
post_install_message:
|
|
156
157
|
rdoc_options: []
|
|
157
158
|
require_paths:
|
|
158
159
|
- lib
|
|
159
160
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
161
|
requirements:
|
|
161
|
-
- - "
|
|
162
|
+
- - ">="
|
|
162
163
|
- !ruby/object:Gem::Version
|
|
163
164
|
version: '2.1'
|
|
164
165
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
@@ -167,9 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
167
168
|
- !ruby/object:Gem::Version
|
|
168
169
|
version: '0'
|
|
169
170
|
requirements: []
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
signing_key:
|
|
171
|
+
rubygems_version: 3.0.9
|
|
172
|
+
signing_key:
|
|
173
173
|
specification_version: 4
|
|
174
174
|
summary: Sooth is a simple stochastic predictive model.
|
|
175
175
|
test_files: []
|