moby 1.0.1beta
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/.gitignore +3 -0
- data/.rvmrc +83 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +18 -0
- data/README.md +83 -0
- data/Rakefile +1 -0
- data/lib/moby/parts_of_speech.rb +133 -0
- data/lib/moby/version.rb +3 -0
- data/lib/moby.rb +10 -0
- data/moby.gemspec +22 -0
- data/share/moby/parts-of-speech/aaREADME.txt +412 -0
- data/share/moby/parts-of-speech/mobypos.UTF-8.txt +233356 -0
- data/share/moby/parts-of-speech/mobypos.txt +233356 -0
- data/spec/moby/parts_of_speech_spec.rb +271 -0
- data/spec/moby_spec.rb +15 -0
- data/spec/spec_helper.rb +6 -0
- metadata +72 -0
@@ -0,0 +1,271 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module Moby
|
5
|
+
describe PartsOfSpeech do
|
6
|
+
let(:pos) { PartsOfSpeech.new }
|
7
|
+
|
8
|
+
describe "#find" do
|
9
|
+
describe "all words" do
|
10
|
+
let(:word) { "purple" }
|
11
|
+
subject { pos.find(word) }
|
12
|
+
its([:word]) { should == word }
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "unlisted word" do
|
16
|
+
let(:word) { "_unlisted" }
|
17
|
+
subject { pos.find(word) }
|
18
|
+
its([:found]) { should be_false }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "listed word" do
|
22
|
+
let(:word) { "noise limiter" }
|
23
|
+
subject { pos.find(word) }
|
24
|
+
its([:found]) { should be_true }
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "_unlisted" do
|
28
|
+
let(:word) { "_unlisted" }
|
29
|
+
subject { pos.find(word) }
|
30
|
+
its([:word]) { should == word }
|
31
|
+
its([:found]) { should be_false }
|
32
|
+
its([:code]) { should == "" }
|
33
|
+
its([:pos]) { should == [] }
|
34
|
+
end
|
35
|
+
|
36
|
+
describe "specific words" do
|
37
|
+
describe "rabbling" do
|
38
|
+
subject { pos.find("rabbling") }
|
39
|
+
its([:code]) { should == "Vti" }
|
40
|
+
its([:pos]) {
|
41
|
+
should == [:verb_usu_participle, :verb_transitive, :verb_intransitive]
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "saccharine" do
|
46
|
+
subject { pos.find("saccharine") }
|
47
|
+
its([:code]) { should == "A" }
|
48
|
+
its([:pos]) { should == [:adjective] }
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "tailgate" do
|
52
|
+
subject { pos.find("tailgate") }
|
53
|
+
its([:code]) { should == "NV" }
|
54
|
+
its([:pos]) { should == [:noun, :verb_usu_participle] }
|
55
|
+
end
|
56
|
+
|
57
|
+
describe "ulcerously" do
|
58
|
+
subject { pos.find("ulcerously") }
|
59
|
+
its([:code]) { should == "v" }
|
60
|
+
its([:pos]) { should == [:adverb] }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe "wordlist by part of speech" do
|
66
|
+
describe "#nouns" do
|
67
|
+
subject { pos.nouns }
|
68
|
+
it { should include("abaca", "unchildishness", "transcription" ) }
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#plurals" do
|
72
|
+
subject { pos.plurals }
|
73
|
+
it { should include("transennae", "uranalyses", "waterfowls" ) }
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#noun_phrases" do
|
77
|
+
subject { pos.noun_phrases }
|
78
|
+
it { should include(
|
79
|
+
"waxed paper", "Joan of Arc", "absence of mind"
|
80
|
+
)}
|
81
|
+
end
|
82
|
+
|
83
|
+
describe "#verbs" do
|
84
|
+
describe ":type => all or :type not given" do
|
85
|
+
subject { pos.verbs }
|
86
|
+
it { should include(*%w{jobbed outproducing about-shipping}) }
|
87
|
+
end
|
88
|
+
|
89
|
+
describe ":type => :usu" do
|
90
|
+
subject { pos.verbs(:type => :usu) }
|
91
|
+
it { should include("jobbed", "lattice", "minify" ) }
|
92
|
+
end
|
93
|
+
|
94
|
+
describe ":type => :transitive" do
|
95
|
+
subject { pos.verbs(:type => :transitive) }
|
96
|
+
it { should include("misgauged", "outproducing", "parade" ) }
|
97
|
+
end
|
98
|
+
|
99
|
+
describe ":type => :intransitive" do
|
100
|
+
subject { pos.verbs(:type => :intransitive) }
|
101
|
+
it { should include("paralogized", "skreegh", "about-shipping" ) }
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "#adjectives" do
|
106
|
+
subject { pos.adjectives }
|
107
|
+
it { should include("about", "garrulous", "hesperideous" ) }
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "#adverbs" do
|
111
|
+
subject { pos.adverbs }
|
112
|
+
it { should include("heterodoxly", "nondiabolically", "stoutly" ) }
|
113
|
+
end
|
114
|
+
|
115
|
+
describe "#conjunctions" do
|
116
|
+
subject { pos.conjunctions }
|
117
|
+
it { should include("syne", "lest", "notwithstanding" ) }
|
118
|
+
end
|
119
|
+
|
120
|
+
describe "#prepositions" do
|
121
|
+
subject { pos.prepositions }
|
122
|
+
it { should include("off", "senza", "except" ) }
|
123
|
+
end
|
124
|
+
|
125
|
+
describe "#interjections" do
|
126
|
+
subject { pos.interjections }
|
127
|
+
it { should include("eyes front", "horsefeathers", "jeepers" ) }
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "#pronouns" do
|
131
|
+
subject { pos.pronouns }
|
132
|
+
it { should include("lot", "me", "noblewoman" ) }
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "#definite_articles" do
|
136
|
+
subject { pos.definite_articles }
|
137
|
+
it { should include("no", "other", "per" ) }
|
138
|
+
end
|
139
|
+
|
140
|
+
describe "#indefinite_articles" do
|
141
|
+
pending("No definite articles in current Moby POS")
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "#nominatives" do
|
145
|
+
pending("No nominatives in current Moby POS")
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
describe "query methods" do
|
150
|
+
describe "#noun?" do
|
151
|
+
%w{gait teaspoon decorum}.each do |word|
|
152
|
+
subject { pos.noun?(word) }
|
153
|
+
describe(word) { it { should be_true } }
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "#plural?" do
|
158
|
+
%w{waterleafs xoanona argosies}.each do |word|
|
159
|
+
subject { pos.plural?(word) }
|
160
|
+
describe(word) { it { should be_true } }
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe "#noun_phrase?" do
|
165
|
+
["argon potassium dating",
|
166
|
+
"nonharmonic tone",
|
167
|
+
"nook shaft"].each do |word|
|
168
|
+
subject { pos.noun_phrase?(word) }
|
169
|
+
describe(word) { it { should be_true } }
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
describe "#adjective?" do
|
174
|
+
%w{nonzonated oliguretic conservable}.each do |word|
|
175
|
+
subject { pos.adjective?(word) }
|
176
|
+
describe(word) { it { should be_true } }
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
describe "#adverb?" do
|
181
|
+
%w{evaporatively hyperactively lonesomely}.each do |word|
|
182
|
+
subject { pos.adverb?(word) }
|
183
|
+
describe(word) { it { should be_true } }
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
describe "#conjunction?" do
|
188
|
+
%w{moreover saving opuscule}.each do |word|
|
189
|
+
subject { pos.conjunction?(word) }
|
190
|
+
describe(word) { it { should be_true } }
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
describe "#preposition?" do
|
195
|
+
%w{of outside between}.each do |word|
|
196
|
+
subject { pos.preposition?(word) }
|
197
|
+
describe(word) { it { should be_true } }
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
describe "#interjection?" do
|
202
|
+
%w{bingo halt viva}.each do |word|
|
203
|
+
subject { pos.interjection?(word) }
|
204
|
+
describe(word) { it { should be_true } }
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
describe "#pronoun?" do
|
209
|
+
%w{nobody hisself whereinto}.each do |word|
|
210
|
+
subject { pos.pronoun?(word) }
|
211
|
+
describe(word) { it { should be_true } }
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
describe "#definite_article?" do
|
216
|
+
%w{no more enough}.each do |word|
|
217
|
+
subject { pos.definite_article?(word) }
|
218
|
+
describe(word) { it { should be_true } }
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
describe "#indefinite_aticle?" do
|
223
|
+
pending("No definite articles in current Moby POS")
|
224
|
+
end
|
225
|
+
|
226
|
+
describe "#nominative?" do
|
227
|
+
pending("No nominatives in current Moby POS")
|
228
|
+
end
|
229
|
+
|
230
|
+
describe "#verb?" do
|
231
|
+
describe ":type => :all or :type not given" do
|
232
|
+
%w{dwelled hypostasize pose}.each do |word|
|
233
|
+
describe word do
|
234
|
+
subject { pos.verb?(word, :type => :all) }
|
235
|
+
it { should be_true }
|
236
|
+
end
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
describe ":type => :usu" do
|
241
|
+
%w{regrinding shimmy resalute}.each do |word|
|
242
|
+
describe word do
|
243
|
+
subject { pos.verb?(word, :type => :all) }
|
244
|
+
it { should be_true }
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
describe ":type => :transitive" do
|
250
|
+
%w{resampled agitate eternalizing}.each do |word|
|
251
|
+
describe word do
|
252
|
+
subject { pos.verb?(word, :type => :all) }
|
253
|
+
it { should be_true }
|
254
|
+
end
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
describe ":type => :intransitive" do
|
259
|
+
%w{joy-ridden superaccruing bing}.each do |word|
|
260
|
+
describe word do
|
261
|
+
subject { pos.verb?(word, :type => :all) }
|
262
|
+
it { should be_true }
|
263
|
+
end
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
end
|
271
|
+
end
|
data/spec/moby_spec.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Moby do
|
4
|
+
describe "::VERSION" do
|
5
|
+
it "should be a valid SemVer string" do
|
6
|
+
Moby::VERSION.should match(/^(\d+\.){2}\d+([a-z](\w+)?)?$/)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe "::base_path" do
|
11
|
+
it "should return the absolute root path of the application" do
|
12
|
+
Moby::base_path.should == File.expand_path("../..", __FILE__)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: moby
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1beta
|
5
|
+
prerelease: 5
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Dan Richert
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-01 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &7748020 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *7748020
|
25
|
+
description: Ruby interface for the world's largest free phonetic database
|
26
|
+
email:
|
27
|
+
- dan.richert@gmail.com
|
28
|
+
executables: []
|
29
|
+
extensions: []
|
30
|
+
extra_rdoc_files: []
|
31
|
+
files:
|
32
|
+
- .gitignore
|
33
|
+
- .rvmrc
|
34
|
+
- Gemfile
|
35
|
+
- Gemfile.lock
|
36
|
+
- README.md
|
37
|
+
- Rakefile
|
38
|
+
- lib/moby.rb
|
39
|
+
- lib/moby/parts_of_speech.rb
|
40
|
+
- lib/moby/version.rb
|
41
|
+
- moby.gemspec
|
42
|
+
- share/moby/parts-of-speech/aaREADME.txt
|
43
|
+
- share/moby/parts-of-speech/mobypos.UTF-8.txt
|
44
|
+
- share/moby/parts-of-speech/mobypos.txt
|
45
|
+
- spec/moby/parts_of_speech_spec.rb
|
46
|
+
- spec/moby_spec.rb
|
47
|
+
- spec/spec_helper.rb
|
48
|
+
homepage: ''
|
49
|
+
licenses: []
|
50
|
+
post_install_message:
|
51
|
+
rdoc_options: []
|
52
|
+
require_paths:
|
53
|
+
- lib
|
54
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
55
|
+
none: false
|
56
|
+
requirements:
|
57
|
+
- - ! '>='
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '0'
|
60
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>'
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.3.1
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project: moby
|
68
|
+
rubygems_version: 1.8.6
|
69
|
+
signing_key:
|
70
|
+
specification_version: 3
|
71
|
+
summary: Ruby interface for Moby wordlists
|
72
|
+
test_files: []
|