bae 0.0.9 → 0.1.0
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/lib/bae/classifier.rb +18 -10
- data/lib/bae/version.rb +1 -1
- data/spec/lib/bae/classifier_spec.rb +19 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae80b08d7f073815336ca2f4b6d485e63cc64a16
|
4
|
+
data.tar.gz: 318820b928f8d66049ad5f329b69cc6c47a1bee3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9299062efc70e820d4b491e7b7e257f6cba19f49968e55f3e6c05bbee6b6b7af2178bd829ca019238e8e3b9d654b8082c376e91169202f8c41d49c84a0fafb7a
|
7
|
+
data.tar.gz: c8d55c7517dc22c9ab937e73d523132c68f940ebb297f9f8798a9b8d736011fbdbcdf60e1fc8b3a71aa039b33d505765bb2a2a14e36489e686efe98303baa0be
|
data/lib/bae/classifier.rb
CHANGED
@@ -87,20 +87,13 @@ module Bae
|
|
87
87
|
end
|
88
88
|
|
89
89
|
def save_state(path)
|
90
|
-
state = {}
|
91
|
-
state['frequency_table'] = frequency_table
|
92
|
-
state['label_instance_count'] = label_instance_count
|
93
|
-
state['label_index'] = label_index
|
94
|
-
state['label_index_sequence'] = label_index_sequence
|
95
|
-
state['total_terms'] = total_terms
|
96
|
-
|
97
90
|
::File.open(::File.expand_path(path), 'w') do |handle|
|
98
|
-
handle.write(
|
91
|
+
handle.write(to_json)
|
99
92
|
end
|
100
93
|
end
|
101
94
|
|
102
|
-
def
|
103
|
-
state = ::JSON.parse(
|
95
|
+
def load_from_json(json)
|
96
|
+
state = ::JSON.parse(json)
|
104
97
|
|
105
98
|
fail 'Missing frequency_table' unless state['frequency_table']
|
106
99
|
fail 'Missing label_instance_count' unless state['label_instance_count']
|
@@ -117,6 +110,21 @@ module Bae
|
|
117
110
|
finish_training!
|
118
111
|
end
|
119
112
|
|
113
|
+
def load_state(path)
|
114
|
+
state_json = ::File.read(::File.expand_path(path))
|
115
|
+
load_from_json(state_json)
|
116
|
+
end
|
117
|
+
|
118
|
+
def to_json
|
119
|
+
state = {}
|
120
|
+
state['frequency_table'] = frequency_table
|
121
|
+
state['label_instance_count'] = label_instance_count
|
122
|
+
state['label_index'] = label_index
|
123
|
+
state['label_index_sequence'] = label_index_sequence
|
124
|
+
state['total_terms'] = total_terms
|
125
|
+
state.to_json
|
126
|
+
end
|
127
|
+
|
120
128
|
private
|
121
129
|
|
122
130
|
def calculate_likelihoods!
|
data/lib/bae/version.rb
CHANGED
@@ -47,6 +47,15 @@ describe ::Bae::Classifier do
|
|
47
47
|
expect{ subject.classify(1337) }.to raise_error 'Training data must either be a string or hash'
|
48
48
|
end
|
49
49
|
|
50
|
+
it "can dump the classifier as json" do
|
51
|
+
subject.train("positive", {"aaa" => 0, "bbb" => 1})
|
52
|
+
subject.train("negative", {"ccc" => 2, "ddd" => 3})
|
53
|
+
|
54
|
+
subject.finish_training!
|
55
|
+
|
56
|
+
expect(subject.to_json).to eq(state_json)
|
57
|
+
end
|
58
|
+
|
50
59
|
it "can save the classifier state" do
|
51
60
|
subject.train("positive", {"aaa" => 0, "bbb" => 1})
|
52
61
|
subject.train("negative", {"ccc" => 2, "ddd" => 3})
|
@@ -63,7 +72,16 @@ describe ::Bae::Classifier do
|
|
63
72
|
temp_file.unlink
|
64
73
|
end
|
65
74
|
|
66
|
-
it "can correctly load a classifier state and correctly classify" do
|
75
|
+
it "can correctly load a classifier state from json and correctly classify" do
|
76
|
+
subject.load_from_json(state_json)
|
77
|
+
|
78
|
+
results = subject.classify({"aaa" => 1, "bbb" => 1})
|
79
|
+
|
80
|
+
expect(results["positive"]).to be_within(0.001).of(0.94117)
|
81
|
+
expect(results["negative"]).to be_within(0.001).of(0.05882)
|
82
|
+
end
|
83
|
+
|
84
|
+
it "can correctly load a classifier state from a file and correctly classify" do
|
67
85
|
temp_file = ::Tempfile.new('some_state')
|
68
86
|
temp_file.write(state_json)
|
69
87
|
temp_file.rewind
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bae
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garrett Thornburg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
|
-
- - ~>
|
16
|
+
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
18
|
version: '1.6'
|
19
19
|
name: bundler
|
@@ -21,13 +21,13 @@ dependencies:
|
|
21
21
|
type: :development
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '0'
|
33
33
|
name: rspec
|
@@ -35,13 +35,13 @@ dependencies:
|
|
35
35
|
type: :development
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0'
|
47
47
|
name: rake
|
@@ -49,7 +49,7 @@ dependencies:
|
|
49
49
|
type: :development
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
description: Multinomial naive bayes classifier with a kick of java
|
@@ -59,7 +59,7 @@ executables: []
|
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
62
|
+
- ".gitignore"
|
63
63
|
- Gemfile
|
64
64
|
- LICENSE.txt
|
65
65
|
- README.md
|
@@ -90,17 +90,17 @@ require_paths:
|
|
90
90
|
- lib
|
91
91
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
|
-
- -
|
93
|
+
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
97
|
requirements:
|
98
|
-
- -
|
98
|
+
- - ">="
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: '0'
|
101
101
|
requirements: []
|
102
102
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
103
|
+
rubygems_version: 2.6.10
|
104
104
|
signing_key:
|
105
105
|
specification_version: 4
|
106
106
|
summary: Multinomial naive bayes classifier with a kick of java
|