wapiti 0.0.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.
- data/.autotest +13 -0
- data/.gitignore +5 -0
- data/.rspec +3 -0
- data/Gemfile +6 -0
- data/LICENSE +30 -0
- data/README.md +153 -0
- data/Rakefile +33 -0
- data/ext/wapiti/bcd.c +392 -0
- data/ext/wapiti/decoder.c +535 -0
- data/ext/wapiti/decoder.h +46 -0
- data/ext/wapiti/extconf.rb +8 -0
- data/ext/wapiti/gradient.c +818 -0
- data/ext/wapiti/gradient.h +81 -0
- data/ext/wapiti/lbfgs.c +294 -0
- data/ext/wapiti/model.c +296 -0
- data/ext/wapiti/model.h +100 -0
- data/ext/wapiti/native.c +1238 -0
- data/ext/wapiti/native.h +15 -0
- data/ext/wapiti/options.c +278 -0
- data/ext/wapiti/options.h +91 -0
- data/ext/wapiti/pattern.c +395 -0
- data/ext/wapiti/pattern.h +56 -0
- data/ext/wapiti/progress.c +167 -0
- data/ext/wapiti/progress.h +43 -0
- data/ext/wapiti/quark.c +272 -0
- data/ext/wapiti/quark.h +46 -0
- data/ext/wapiti/reader.c +553 -0
- data/ext/wapiti/reader.h +73 -0
- data/ext/wapiti/rprop.c +191 -0
- data/ext/wapiti/sequence.h +148 -0
- data/ext/wapiti/sgdl1.c +218 -0
- data/ext/wapiti/thread.c +171 -0
- data/ext/wapiti/thread.h +42 -0
- data/ext/wapiti/tools.c +202 -0
- data/ext/wapiti/tools.h +54 -0
- data/ext/wapiti/trainers.h +39 -0
- data/ext/wapiti/vmath.c +372 -0
- data/ext/wapiti/vmath.h +51 -0
- data/ext/wapiti/wapiti.c +288 -0
- data/ext/wapiti/wapiti.h +45 -0
- data/lib/wapiti.rb +30 -0
- data/lib/wapiti/errors.rb +17 -0
- data/lib/wapiti/model.rb +49 -0
- data/lib/wapiti/options.rb +113 -0
- data/lib/wapiti/utility.rb +15 -0
- data/lib/wapiti/version.rb +3 -0
- data/spec/fixtures/ch.mod +18550 -0
- data/spec/fixtures/chpattern.txt +52 -0
- data/spec/fixtures/chtest.txt +1973 -0
- data/spec/fixtures/chtrain.txt +19995 -0
- data/spec/fixtures/nppattern.txt +52 -0
- data/spec/fixtures/nptest.txt +1973 -0
- data/spec/fixtures/nptrain.txt +19995 -0
- data/spec/fixtures/pattern.txt +14 -0
- data/spec/fixtures/test.txt +60000 -0
- data/spec/fixtures/train.txt +1200 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/wapiti/model_spec.rb +173 -0
- data/spec/wapiti/native_spec.rb +12 -0
- data/spec/wapiti/options_spec.rb +175 -0
- data/spec/wapiti/utility_spec.rb +22 -0
- data/wapiti.gemspec +35 -0
- metadata +178 -0
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'wapiti'
|
2
|
+
|
3
|
+
require 'fileutils'
|
4
|
+
require 'tempfile'
|
5
|
+
|
6
|
+
RSpec::Matchers.define :be_valid_model do
|
7
|
+
match do |model|
|
8
|
+
model.is_a?(Wapiti::Model) && model.nlbl > 0
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
RSpec::Matchers.define :be_valid_model_file do
|
13
|
+
match do |path|
|
14
|
+
File.exists?(path) && !File.open(path).read.empty?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
RSpec.configuration do |c|
|
20
|
+
c.include(FileUtils)
|
21
|
+
end
|
@@ -0,0 +1,173 @@
|
|
1
|
+
module Wapiti
|
2
|
+
describe 'Model' do
|
3
|
+
|
4
|
+
describe '.train' do
|
5
|
+
context 'given sufficient options' do
|
6
|
+
let(:pattern) { File.expand_path('../../fixtures/pattern.txt', __FILE__) }
|
7
|
+
let(:input) { File.expand_path('../../fixtures/train.txt', __FILE__) }
|
8
|
+
|
9
|
+
it 'returns a valid model instance' do
|
10
|
+
Model.train(input, :pattern => pattern).labels.should == (1..6).map(&:to_s)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe 'initialization' do
|
17
|
+
|
18
|
+
context 'when passed no arguments' do
|
19
|
+
it 'creates a new model with default options' do
|
20
|
+
m = Model.new
|
21
|
+
m.should_not be nil
|
22
|
+
m.options.should be_instance_of(Options)
|
23
|
+
m.nlbl.should == 0
|
24
|
+
m.nobs.should == 0
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when passed more than one argument' do
|
29
|
+
it 'should raise an error' do
|
30
|
+
expect { Model.new(1,2) }.to raise_error
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when passed a hash' do
|
35
|
+
let(:options) { { :threads => 42 } }
|
36
|
+
|
37
|
+
it 'should create the options from the hash' do
|
38
|
+
Model.new(options).options[:threads].should == 42
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'when passed an options instance' do
|
43
|
+
let(:options) { Options.new(:threads => 42) }
|
44
|
+
|
45
|
+
it 'should create the options from the hash' do
|
46
|
+
Model.new(options).options[:threads].should == 42
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when passed something other than a hash or an options instance' do
|
51
|
+
it 'should raise an error' do
|
52
|
+
expect { Model.new(1) }.to raise_error
|
53
|
+
expect { Model.new(nil) }.to raise_error
|
54
|
+
expect { Model.new(true) }.to raise_error
|
55
|
+
expect { Model.new('foo') }.to raise_error
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'when called with a block' do
|
60
|
+
it 'should pass the options instance to the block' do
|
61
|
+
Model.new(:threads => 42) { |o| o.threads = 23 }.options.threads.should == 23
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe '#options' do
|
67
|
+
it 'returns the options for training' do
|
68
|
+
Model.new.options.should be_instance_of(Options)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe '#labels' do
|
73
|
+
it 'returns the number of labels (0 by default)' do
|
74
|
+
Model.new.nlbl.should == 0
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
describe '#observations' do
|
79
|
+
it 'returns the number of observations (0 by default)' do
|
80
|
+
Model.new.observations.should == 0
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#features' do
|
85
|
+
it 'returns the number of features (0 by default)' do
|
86
|
+
Model.new.features.should == 0
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe '#total' do
|
91
|
+
it 'returns the total training time (0.0 by default)' do
|
92
|
+
Model.new.total.should == 0.0
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe '#train' do
|
97
|
+
let(:model) { Model.new(:pattern => File.expand_path('../../fixtures/pattern.txt', __FILE__)) }
|
98
|
+
let(:data) { File.expand_path('../../fixtures/train.txt', __FILE__) }
|
99
|
+
|
100
|
+
it 'accepts a filename as input' do
|
101
|
+
model.train(data).nlbl.should == 6
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'accepts a data array' do
|
105
|
+
# sequence = []
|
106
|
+
# File.open(data).each_line do |line|
|
107
|
+
#
|
108
|
+
# end
|
109
|
+
#
|
110
|
+
# model.train([]).nlbl.should == 6
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
describe '#label' do
|
116
|
+
|
117
|
+
context 'given an empty model' do
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'given a trained model' do
|
122
|
+
let(:model) { Model.load(File.expand_path('../../fixtures/ch.mod', __FILE__)) }
|
123
|
+
|
124
|
+
context 'when passed an array of arrays' do
|
125
|
+
let(:input) { [['Hello NN B-VP', ', , O', 'world NN B-NP', '! ! O']] }
|
126
|
+
|
127
|
+
it 'returns an array of token-label pairs' do
|
128
|
+
labels = model.label(input)
|
129
|
+
labels[0].map(&:first).should == input[0]
|
130
|
+
labels[0].map(&:last).should == %w{ B-NP O B-NP O }
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'yields each token/label pair to the supplied block' do
|
134
|
+
labels = model.label(input) do |token, label|
|
135
|
+
[token.downcase, label.downcase]
|
136
|
+
end
|
137
|
+
labels[0].map(&:last).should == %w{ b-np o b-np o }
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
|
143
|
+
context 'when passed a filename' do
|
144
|
+
let(:input) { File.expand_path('../../fixtures/chtest.txt', __FILE__) }
|
145
|
+
|
146
|
+
it 'returns an array of token-label pairs' do
|
147
|
+
labels = model.label(input)
|
148
|
+
labels.should have(77).elements
|
149
|
+
labels[0].take(5).map(&:last).should == %w{ B-NP B-PP B-NP I-NP B-VP }
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
end
|
156
|
+
|
157
|
+
describe '#labels' do
|
158
|
+
it 'returns an empty list by default' do
|
159
|
+
Model.new.labels.should be_empty
|
160
|
+
end
|
161
|
+
|
162
|
+
context 'given a trained model' do
|
163
|
+
let(:model) { Model.load(File.expand_path('../../fixtures/ch.mod', __FILE__)) }
|
164
|
+
|
165
|
+
it 'returns a list of all known labels' do
|
166
|
+
model.labels.should have(model.nlbl).elements
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
|
172
|
+
end
|
173
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Wapiti
|
2
|
+
describe 'Native Extension Module' do
|
3
|
+
|
4
|
+
it 'should define the wapiti version string' do
|
5
|
+
Native::VERSION.should match /^[\d\.]+$/
|
6
|
+
end
|
7
|
+
|
8
|
+
it { Native.should respond_to(:wapiti) }
|
9
|
+
it { Native.should respond_to(:label) }
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,175 @@
|
|
1
|
+
module Wapiti
|
2
|
+
describe 'Options' do
|
3
|
+
|
4
|
+
let(:options) { Options.new }
|
5
|
+
|
6
|
+
it { Options.should be_an_instance_of(Class) }
|
7
|
+
|
8
|
+
it { options.should_not be nil }
|
9
|
+
|
10
|
+
describe '.defaults' do
|
11
|
+
it 'returns a hash with the default options' do
|
12
|
+
Options.defaults.keys.map(&:to_s).sort.should == Options.attribute_names.map(&:to_s)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '#initialize' do
|
17
|
+
|
18
|
+
it 'should fail if called with more than one parameter' do
|
19
|
+
expect { Options.new(1,2) }.to raise_error
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should fail if called with a parameter that is no hash' do
|
23
|
+
expect { Options.new([]) }.to raise_error
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'should set defaults according to the supplied hash' do
|
27
|
+
Options.new(:compact => true).should be_compact
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should accept and execute a self-yielding block' do
|
31
|
+
opt = Options.new(:compact => true) { |o| o.sparse = true }
|
32
|
+
opt.should be_compact
|
33
|
+
opt.should be_sparse
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
describe '#update' do
|
39
|
+
it 'sets all option values according to the given hash' do
|
40
|
+
lambda { options.update( :threads => 2 ) }.should change { options.threads }.from(1).to(2)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#threads' do
|
45
|
+
it 'returns 1 by default' do
|
46
|
+
options.threads.should == 1
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe '#threads=' do
|
51
|
+
it 'sets threads to the given value' do
|
52
|
+
lambda { options.threads = 2 }.should change { options.threads }.from(1).to(2)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#jobsize' do
|
57
|
+
it 'returns 64 by default' do
|
58
|
+
options.jobsize.should == 64
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe '#jobsize=' do
|
63
|
+
it 'sets jobsize to the given value' do
|
64
|
+
lambda { options.jobsize = 128 }.should change { options.jobsize }.by(64)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe '#maxiter' do
|
69
|
+
it 'returns a large number by default' do
|
70
|
+
options.maxiter.should > 0
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe '#maxiter=' do
|
75
|
+
it 'sets maxiter to the given value' do
|
76
|
+
lambda { options.maxiter = 20 }.should change { options.maxiter }.to(20)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
describe '#stop_window' do
|
81
|
+
it 'returns 5 by default' do
|
82
|
+
options.stop_window.should == 5
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe '#stop_window=' do
|
87
|
+
it 'sets stop_window to the given value' do
|
88
|
+
lambda { options.stop_window = 20 }.should change { options.stop_window }.by(15)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe '#convergence_window' do
|
93
|
+
it 'returns 5 by default' do
|
94
|
+
options.convergence_window.should == 5
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '#convergence_window=' do
|
99
|
+
it 'sets convergence_window to the given value' do
|
100
|
+
lambda { options.convergence_window = 20 }.should change { options.convergence_window }.by(15)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
|
105
|
+
describe '#stop_epsilon' do
|
106
|
+
it 'returns 0.02 by default' do
|
107
|
+
options.stop_epsilon.should == 0.02
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
describe '#stop_epsilon=' do
|
112
|
+
it 'sets stop_epsilon to the given value' do
|
113
|
+
lambda { options.stop_epsilon = 0.35 }.should change { options.stop_epsilon }
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe '#rho1' do
|
118
|
+
it 'returns 0.5 by default' do
|
119
|
+
options.rho1.should == 0.5
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
describe '#rho1=' do
|
124
|
+
it 'sets rho1 to the given value' do
|
125
|
+
lambda { options.rho1 = 2.5 }.should change { options.rho1 }.by(2)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
describe '#rho2' do
|
130
|
+
it 'returns 0.0001 by default' do
|
131
|
+
options.rho2.should == 0.0001
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe '#rho2=' do
|
136
|
+
it 'sets rho2 to the given value' do
|
137
|
+
lambda { options.rho2 = 0.0002 }.should change { options.rho2 }.by(0.0001)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
%w{ maxent compact sparse label check score posterior }.each do |m|
|
143
|
+
describe "##{m}" do
|
144
|
+
it 'returns false by default' do
|
145
|
+
options.send(m).should be false
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "##{m}=" do
|
150
|
+
it "sets #{m} to the given value" do
|
151
|
+
lambda { options.send("#{m}=", true) }.should change { options.send(m) }.from(false).to(true)
|
152
|
+
lambda { options.send("#{m}=", false) }.should change { options.send(m) }.from(true).to(false)
|
153
|
+
lambda { options.send("#{m}=", 123) }.should change { options.send(m) }.from(false).to(true)
|
154
|
+
lambda { options.send("#{m}=", nil) }.should change { options.send(m) }.from(true).to(false)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
%w{ pattern model algorithm devel }.each do |m|
|
160
|
+
describe "##{m}" do
|
161
|
+
it 'returns an empty string by default' do
|
162
|
+
options.send(m).should be_a(String)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
describe "##{m}=" do
|
167
|
+
it 'sets the input string to the given value' do
|
168
|
+
lambda { options.send("#{m}=", 'foo') }.should change { options.send(m) }.to('foo')
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
end
|
174
|
+
|
175
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Utility Methods' do
|
4
|
+
|
5
|
+
let(:pattern) { File.expand_path('../../fixtures/chpattern.txt', __FILE__) }
|
6
|
+
let(:input) { File.expand_path('../../fixtures/chtrain.txt', __FILE__) }
|
7
|
+
|
8
|
+
describe 'train' do
|
9
|
+
it 'creates a new model according to the parameters given in the options hash' do
|
10
|
+
# Wapiti.train(input, :pattern => pattern).should be_valid_model
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'creates a new model according to the options set in the block' do
|
14
|
+
# Wapiti.train { |c|
|
15
|
+
# c.pattern = pattern
|
16
|
+
# c.input = input
|
17
|
+
# }.should be_valid_model
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/wapiti.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$:.unshift lib unless $:.include?(lib)
|
4
|
+
|
5
|
+
require 'wapiti/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = 'wapiti'
|
9
|
+
s.version = Wapiti::VERSION.dup
|
10
|
+
s.platform = Gem::Platform::RUBY
|
11
|
+
s.authors = ['Sylvester Keil']
|
12
|
+
s.email = ['http://sylvester.keil.or.at']
|
13
|
+
s.homepage = 'https://github.com/inukshuk/wapiti-ruby'
|
14
|
+
s.summary = 'Wicked fast Conditional Random Fields for Ruby.'
|
15
|
+
s.description = 'This gem provides a Ruby API for Conditional Random Fields (CRF). It is implemented as a C exstension and based on the wicked fast "wapiti" package.'
|
16
|
+
s.license = 'FreeBSD'
|
17
|
+
|
18
|
+
s.add_development_dependency('rake', '~>0.9')
|
19
|
+
s.add_development_dependency('rake-compiler', '~>0.7')
|
20
|
+
s.add_development_dependency('ZenTest', '~>4.6')
|
21
|
+
s.add_development_dependency('rspec', '~>2.6')
|
22
|
+
|
23
|
+
s.files = `git ls-files`.split("\n")
|
24
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
25
|
+
s.executables = []
|
26
|
+
s.require_path = 'lib'
|
27
|
+
|
28
|
+
s.extensions << 'ext/wapiti/extconf.rb'
|
29
|
+
|
30
|
+
s.rdoc_options = %w{--line-numbers --inline-source --title "Wapiti-Ruby" --main README.md --webcvs=http://github.com/inukshuk/wapiti-ruby/tree/master/}
|
31
|
+
s.extra_rdoc_files = %w{README.md LICENSE}
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
# vim: syntax=ruby
|
metadata
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: wapiti
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Sylvester Keil
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-08-30 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: &2157117600 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.9'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2157117600
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake-compiler
|
27
|
+
requirement: &2157116700 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.7'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2157116700
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: ZenTest
|
38
|
+
requirement: &2157078940 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ~>
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '4.6'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2157078940
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec
|
49
|
+
requirement: &2157078120 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.6'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2157078120
|
58
|
+
description: This gem provides a Ruby API for Conditional Random Fields (CRF). It
|
59
|
+
is implemented as a C exstension and based on the wicked fast "wapiti" package.
|
60
|
+
email:
|
61
|
+
- http://sylvester.keil.or.at
|
62
|
+
executables: []
|
63
|
+
extensions:
|
64
|
+
- ext/wapiti/extconf.rb
|
65
|
+
extra_rdoc_files:
|
66
|
+
- README.md
|
67
|
+
- LICENSE
|
68
|
+
files:
|
69
|
+
- .autotest
|
70
|
+
- .gitignore
|
71
|
+
- .rspec
|
72
|
+
- Gemfile
|
73
|
+
- LICENSE
|
74
|
+
- README.md
|
75
|
+
- Rakefile
|
76
|
+
- ext/wapiti/bcd.c
|
77
|
+
- ext/wapiti/decoder.c
|
78
|
+
- ext/wapiti/decoder.h
|
79
|
+
- ext/wapiti/extconf.rb
|
80
|
+
- ext/wapiti/gradient.c
|
81
|
+
- ext/wapiti/gradient.h
|
82
|
+
- ext/wapiti/lbfgs.c
|
83
|
+
- ext/wapiti/model.c
|
84
|
+
- ext/wapiti/model.h
|
85
|
+
- ext/wapiti/native.c
|
86
|
+
- ext/wapiti/native.h
|
87
|
+
- ext/wapiti/options.c
|
88
|
+
- ext/wapiti/options.h
|
89
|
+
- ext/wapiti/pattern.c
|
90
|
+
- ext/wapiti/pattern.h
|
91
|
+
- ext/wapiti/progress.c
|
92
|
+
- ext/wapiti/progress.h
|
93
|
+
- ext/wapiti/quark.c
|
94
|
+
- ext/wapiti/quark.h
|
95
|
+
- ext/wapiti/reader.c
|
96
|
+
- ext/wapiti/reader.h
|
97
|
+
- ext/wapiti/rprop.c
|
98
|
+
- ext/wapiti/sequence.h
|
99
|
+
- ext/wapiti/sgdl1.c
|
100
|
+
- ext/wapiti/thread.c
|
101
|
+
- ext/wapiti/thread.h
|
102
|
+
- ext/wapiti/tools.c
|
103
|
+
- ext/wapiti/tools.h
|
104
|
+
- ext/wapiti/trainers.h
|
105
|
+
- ext/wapiti/vmath.c
|
106
|
+
- ext/wapiti/vmath.h
|
107
|
+
- ext/wapiti/wapiti.c
|
108
|
+
- ext/wapiti/wapiti.h
|
109
|
+
- lib/wapiti.rb
|
110
|
+
- lib/wapiti/errors.rb
|
111
|
+
- lib/wapiti/model.rb
|
112
|
+
- lib/wapiti/options.rb
|
113
|
+
- lib/wapiti/utility.rb
|
114
|
+
- lib/wapiti/version.rb
|
115
|
+
- spec/fixtures/ch.mod
|
116
|
+
- spec/fixtures/chpattern.txt
|
117
|
+
- spec/fixtures/chtest.txt
|
118
|
+
- spec/fixtures/chtrain.txt
|
119
|
+
- spec/fixtures/nppattern.txt
|
120
|
+
- spec/fixtures/nptest.txt
|
121
|
+
- spec/fixtures/nptrain.txt
|
122
|
+
- spec/fixtures/pattern.txt
|
123
|
+
- spec/fixtures/test.txt
|
124
|
+
- spec/fixtures/train.txt
|
125
|
+
- spec/spec_helper.rb
|
126
|
+
- spec/wapiti/model_spec.rb
|
127
|
+
- spec/wapiti/native_spec.rb
|
128
|
+
- spec/wapiti/options_spec.rb
|
129
|
+
- spec/wapiti/utility_spec.rb
|
130
|
+
- wapiti.gemspec
|
131
|
+
homepage: https://github.com/inukshuk/wapiti-ruby
|
132
|
+
licenses:
|
133
|
+
- FreeBSD
|
134
|
+
post_install_message:
|
135
|
+
rdoc_options:
|
136
|
+
- --line-numbers
|
137
|
+
- --inline-source
|
138
|
+
- --title
|
139
|
+
- ! '"Wapiti-Ruby"'
|
140
|
+
- --main
|
141
|
+
- README.md
|
142
|
+
- --webcvs=http://github.com/inukshuk/wapiti-ruby/tree/master/
|
143
|
+
require_paths:
|
144
|
+
- lib
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
147
|
+
requirements:
|
148
|
+
- - ! '>='
|
149
|
+
- !ruby/object:Gem::Version
|
150
|
+
version: '0'
|
151
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
152
|
+
none: false
|
153
|
+
requirements:
|
154
|
+
- - ! '>='
|
155
|
+
- !ruby/object:Gem::Version
|
156
|
+
version: '0'
|
157
|
+
requirements: []
|
158
|
+
rubyforge_project:
|
159
|
+
rubygems_version: 1.8.10
|
160
|
+
signing_key:
|
161
|
+
specification_version: 3
|
162
|
+
summary: Wicked fast Conditional Random Fields for Ruby.
|
163
|
+
test_files:
|
164
|
+
- spec/fixtures/ch.mod
|
165
|
+
- spec/fixtures/chpattern.txt
|
166
|
+
- spec/fixtures/chtest.txt
|
167
|
+
- spec/fixtures/chtrain.txt
|
168
|
+
- spec/fixtures/nppattern.txt
|
169
|
+
- spec/fixtures/nptest.txt
|
170
|
+
- spec/fixtures/nptrain.txt
|
171
|
+
- spec/fixtures/pattern.txt
|
172
|
+
- spec/fixtures/test.txt
|
173
|
+
- spec/fixtures/train.txt
|
174
|
+
- spec/spec_helper.rb
|
175
|
+
- spec/wapiti/model_spec.rb
|
176
|
+
- spec/wapiti/native_spec.rb
|
177
|
+
- spec/wapiti/options_spec.rb
|
178
|
+
- spec/wapiti/utility_spec.rb
|