linguistics 1.0.8
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/ChangeLog +640 -0
- data/LICENSE +27 -0
- data/README +166 -0
- data/README.english +245 -0
- data/Rakefile +338 -0
- data/examples/generalize_sentence.rb +46 -0
- data/lib/linguistics.rb +366 -0
- data/lib/linguistics/en.rb +1728 -0
- data/lib/linguistics/en/infinitive.rb +1145 -0
- data/lib/linguistics/en/linkparser.rb +109 -0
- data/lib/linguistics/en/wordnet.rb +257 -0
- data/lib/linguistics/iso639.rb +461 -0
- data/rake/191_compat.rb +26 -0
- data/rake/dependencies.rb +76 -0
- data/rake/helpers.rb +434 -0
- data/rake/hg.rb +261 -0
- data/rake/manual.rb +782 -0
- data/rake/packaging.rb +144 -0
- data/rake/publishing.rb +318 -0
- data/rake/rdoc.rb +30 -0
- data/rake/style.rb +62 -0
- data/rake/svn.rb +668 -0
- data/rake/testing.rb +187 -0
- data/rake/verifytask.rb +64 -0
- data/rake/win32.rb +190 -0
- data/spec/linguistics/en_spec.rb +215 -0
- data/spec/linguistics/iso639_spec.rb +72 -0
- data/spec/linguistics_spec.rb +107 -0
- data/tests/en/infinitive.tests.rb +207 -0
- data/tests/en/inflect.tests.rb +1389 -0
- data/tests/en/lafcadio.tests.rb +77 -0
- data/tests/en/linkparser.tests.rb +42 -0
- data/tests/en/lprintf.tests.rb +77 -0
- data/tests/en/titlecase.tests.rb +73 -0
- data/tests/en/wordnet.tests.rb +95 -0
- metadata +107 -0
@@ -0,0 +1,72 @@
|
|
1
|
+
#!/usr/bin/env spec -cfs
|
2
|
+
|
3
|
+
BEGIN {
|
4
|
+
require 'pathname'
|
5
|
+
basedir = Pathname.new( __FILE__ ).dirname.parent.parent
|
6
|
+
|
7
|
+
libdir = basedir + "lib"
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
10
|
+
}
|
11
|
+
|
12
|
+
begin
|
13
|
+
require 'spec/runner'
|
14
|
+
require 'linguistics/iso639'
|
15
|
+
rescue LoadError
|
16
|
+
unless Object.const_defined?( :Gem )
|
17
|
+
require 'rubygems'
|
18
|
+
retry
|
19
|
+
end
|
20
|
+
raise
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
describe Linguistics, " language codes" do
|
25
|
+
|
26
|
+
it "loads simple language codes from its __DATA__ section" do
|
27
|
+
Linguistics::LanguageCodes.should have_key( "en" )
|
28
|
+
Linguistics::LanguageCodes[ "en" ].should have(2).members
|
29
|
+
|
30
|
+
Linguistics::LanguageCodes[ "en" ].should have_key( :codes )
|
31
|
+
Linguistics::LanguageCodes[ "en" ][:codes].should have(2).members
|
32
|
+
Linguistics::LanguageCodes[ "en" ][:codes].should include("en")
|
33
|
+
Linguistics::LanguageCodes[ "en" ][:codes].should include("eng")
|
34
|
+
|
35
|
+
Linguistics::LanguageCodes[ "en" ].should have_key( :desc )
|
36
|
+
Linguistics::LanguageCodes[ "en" ][:desc].should == 'English'
|
37
|
+
end
|
38
|
+
|
39
|
+
it "loads language codes with variants from its __DATA__ section" do
|
40
|
+
|
41
|
+
# ces/cze cs Czech
|
42
|
+
Linguistics::LanguageCodes.should have_key( "cs" )
|
43
|
+
Linguistics::LanguageCodes[ "cs" ].should have(2).members
|
44
|
+
|
45
|
+
Linguistics::LanguageCodes[ "cs" ].should have_key( :codes )
|
46
|
+
Linguistics::LanguageCodes[ "cs" ][:codes].should have(3).members
|
47
|
+
Linguistics::LanguageCodes[ "cs" ][:codes].should include("cs")
|
48
|
+
Linguistics::LanguageCodes[ "cs" ][:codes].should include("ces")
|
49
|
+
Linguistics::LanguageCodes[ "cs" ][:codes].should include("cze")
|
50
|
+
|
51
|
+
Linguistics::LanguageCodes[ "cs" ].should have_key( :desc )
|
52
|
+
Linguistics::LanguageCodes[ "cs" ][:desc].should == 'Czech'
|
53
|
+
|
54
|
+
# jav/jaw jv/jw Javanese
|
55
|
+
Linguistics::LanguageCodes.should have_key( "jv" )
|
56
|
+
Linguistics::LanguageCodes.should have_key( "jw" )
|
57
|
+
Linguistics::LanguageCodes[ "jv" ].should == Linguistics::LanguageCodes[ "jw" ]
|
58
|
+
Linguistics::LanguageCodes[ "jv" ].should have(2).members
|
59
|
+
|
60
|
+
Linguistics::LanguageCodes[ "jv" ].should have_key( :codes )
|
61
|
+
Linguistics::LanguageCodes[ "jv" ][:codes].should have(4).members
|
62
|
+
Linguistics::LanguageCodes[ "jv" ][:codes].should include("jv")
|
63
|
+
Linguistics::LanguageCodes[ "jv" ][:codes].should include("jw")
|
64
|
+
Linguistics::LanguageCodes[ "jv" ][:codes].should include("jav")
|
65
|
+
Linguistics::LanguageCodes[ "jv" ][:codes].should include("jaw")
|
66
|
+
|
67
|
+
Linguistics::LanguageCodes[ "jv" ].should have_key( :desc )
|
68
|
+
Linguistics::LanguageCodes[ "jv" ][:desc].should == 'Javanese'
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,107 @@
|
|
1
|
+
#!/usr/bin/env spec -cfs
|
2
|
+
|
3
|
+
BEGIN {
|
4
|
+
require 'pathname'
|
5
|
+
basedir = Pathname.new( __FILE__ ).dirname.parent
|
6
|
+
|
7
|
+
libdir = basedir + "lib"
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift( libdir ) unless $LOAD_PATH.include?( libdir )
|
10
|
+
}
|
11
|
+
|
12
|
+
begin
|
13
|
+
require 'spec/runner'
|
14
|
+
require 'linguistics'
|
15
|
+
rescue LoadError
|
16
|
+
unless Object.const_defined?( :Gem )
|
17
|
+
require 'rubygems'
|
18
|
+
retry
|
19
|
+
end
|
20
|
+
raise
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
describe Linguistics do
|
25
|
+
|
26
|
+
TestArray = %w{stone stick hammer stone lantern}
|
27
|
+
TestString = "banner"
|
28
|
+
TestNumber = 5
|
29
|
+
|
30
|
+
before( :all ) do
|
31
|
+
Linguistics.use( :en )
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
it "loads a language's linguistic functions via variants of its ISO639 code" do
|
36
|
+
|
37
|
+
[:en, :EN, 'en', 'EN', 'En', 'eN'].each do |code|
|
38
|
+
res = Linguistics.use( code )
|
39
|
+
res.should have(3).members
|
40
|
+
res.should include(Array)
|
41
|
+
res.should include(String)
|
42
|
+
res.should include(Numeric)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
|
47
|
+
it "raises an error when a language that doesn't exist is requested" do
|
48
|
+
[ :zz, :ry, :qi ].each do |code|
|
49
|
+
lambda {
|
50
|
+
Linguistics.use( code )
|
51
|
+
}.should raise_error( RuntimeError, /unknown language code/i )
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
|
56
|
+
it "raises an error for valid languages that don't have any linguistic functions to load" do
|
57
|
+
[ :ja, :fr, :es ].each do |code|
|
58
|
+
lambda {
|
59
|
+
Linguistics.use( code )
|
60
|
+
}.should raise_error( LoadError, /failed to load language extension/i )
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
|
66
|
+
it "adds a method with the same name as the language code to Array that returns an inflector" +
|
67
|
+
" proxy for that language" do
|
68
|
+
TestArray.should respond_to( :en )
|
69
|
+
TestArray.en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
it "adds a method with the same name as the language code to String that returns an inflector" +
|
74
|
+
" proxy for that language" do
|
75
|
+
TestString.should respond_to( :en )
|
76
|
+
TestString.en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
it "adds a method with the same name as the language code to Numeric that returns an inflector" +
|
81
|
+
" proxy for that language" do
|
82
|
+
TestNumber.should respond_to( :en )
|
83
|
+
TestNumber.en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
84
|
+
end
|
85
|
+
|
86
|
+
|
87
|
+
it "allows one to extend an additional class by passing it in the ':classes' argument to ::use" do
|
88
|
+
Linguistics.use( :en, :classes => Symbol )
|
89
|
+
:foo.should respond_to( :en )
|
90
|
+
:foo.en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
it "allows one to extend multiple additional classes by passing them in an Array in the "+
|
95
|
+
" ':classes' argument to ::use" do
|
96
|
+
Linguistics.use( :en, :classes => [IO, Class, Range] )
|
97
|
+
$stderr.should respond_to( :en )
|
98
|
+
$stderr.en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
99
|
+
|
100
|
+
Object.should respond_to( :en )
|
101
|
+
Object.en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
102
|
+
|
103
|
+
(0..155).should respond_to( :en )
|
104
|
+
(0..155).en.should be_a_kind_of( Linguistics::LanguageProxyClass )
|
105
|
+
end
|
106
|
+
|
107
|
+
end
|
@@ -0,0 +1,207 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
#
|
3
|
+
# Unit test for English infinitive (stem) forms.
|
4
|
+
# $Id$
|
5
|
+
#
|
6
|
+
# Copyright (c) 2003 The FaerieMUD Consortium.
|
7
|
+
#
|
8
|
+
|
9
|
+
unless defined? Linguistics::TestCase
|
10
|
+
testsdir = File::dirname( File::dirname(File::expand_path( __FILE__ )) )
|
11
|
+
$LOAD_PATH.unshift testsdir unless $LOAD_PATH.include?( testsdir )
|
12
|
+
|
13
|
+
require 'lingtestcase'
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
### This test case tests the English infinitive function.
|
18
|
+
class EnglishInfinitiveTestCase < Linguistics::TestCase
|
19
|
+
|
20
|
+
Linguistics::use( :en )
|
21
|
+
include Linguistics::EN
|
22
|
+
|
23
|
+
### Auto-generate tests for the dataset beneath the '__END__'
|
24
|
+
begin
|
25
|
+
inDataSection = false
|
26
|
+
methodCounter = 5
|
27
|
+
|
28
|
+
# Read the lines of this file below the __END__, splitting each
|
29
|
+
# non-comment line into rule, original word, and expected infinitive
|
30
|
+
# form. Then generate a test method for each one.
|
31
|
+
File::readlines( __FILE__ ).find_all {|line|
|
32
|
+
case line
|
33
|
+
when /^__END_DATA__$/; inDataSection = false
|
34
|
+
when /^__END__$/; inDataSection = true; false
|
35
|
+
else inDataSection end
|
36
|
+
}.each {|line|
|
37
|
+
next if /^\s*#/ =~ line
|
38
|
+
rule, oword, stemword = line.split( /\s+/ )
|
39
|
+
|
40
|
+
# Add a test method for the method interface with a name generated
|
41
|
+
# from the origin word and the method counter.
|
42
|
+
methodname = "test_%04d_method_infinitive%s" %
|
43
|
+
[ methodCounter, oword.capitalize.gsub(/\W+/, '') ]
|
44
|
+
define_method( methodname.intern ) {||
|
45
|
+
rval = ''
|
46
|
+
printTestHeader "English: Stem of '#{oword}' (method)"
|
47
|
+
|
48
|
+
assert_nothing_raised { rval = oword.en.infinitive }
|
49
|
+
assert_instance_of Linguistics::EN::Infinitive, rval
|
50
|
+
assert_block( "Method iface: Stem for #{oword}" ) {
|
51
|
+
stemword == rval or stemword == rval.word2
|
52
|
+
}
|
53
|
+
assert_equal rule, rval.rule, "Method iface: Infinitive rule for #{oword}"
|
54
|
+
}
|
55
|
+
|
56
|
+
methodCounter += 1
|
57
|
+
|
58
|
+
# Add a test method for the functional interface with a name
|
59
|
+
# generated from the origin word and the method counter.
|
60
|
+
methodname = "test_%04d_function_infinitive%s" %
|
61
|
+
[ methodCounter, oword.capitalize.gsub(/\W+/, '') ]
|
62
|
+
define_method( methodname.intern ) {||
|
63
|
+
rval = ''
|
64
|
+
printTestHeader "English: Stem of '#{oword}' (functional)"
|
65
|
+
|
66
|
+
assert_nothing_raised { rval = infinitive( oword ) }
|
67
|
+
assert_instance_of Linguistics::EN::Infinitive, rval
|
68
|
+
assert_block( "Function iface: Stem for #{oword}" ) {
|
69
|
+
stemword == rval or stemword == rval.word2
|
70
|
+
}
|
71
|
+
assert_equal rule, rval.rule, "Function iface: Infinitive rule for #{oword}"
|
72
|
+
}
|
73
|
+
|
74
|
+
methodCounter += 1
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
### Overridden initializer: auto-generated test methods have an arity of 1
|
80
|
+
### even though they don't require an argument (as of the current Ruby CVS),
|
81
|
+
### and the default initializer throws an :invalid_test for methods with
|
82
|
+
### arity != 0.
|
83
|
+
def initialize( test_method_name )
|
84
|
+
if !respond_to?( test_method_name )
|
85
|
+
throw :invalid_test
|
86
|
+
end
|
87
|
+
@method_name = test_method_name
|
88
|
+
@test_passed = true
|
89
|
+
end
|
90
|
+
|
91
|
+
|
92
|
+
#################################################################
|
93
|
+
### T E S T S
|
94
|
+
#################################################################
|
95
|
+
|
96
|
+
### Test to be sure the infinitive module loaded.
|
97
|
+
def test_000_module
|
98
|
+
printTestHeader "English: Infinitive method"
|
99
|
+
assert_respond_to Linguistics::EN, :infinitive
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
### Dataset is copied from Lingua::EN::Infinitive by Ron Savage (with a few
|
105
|
+
### bugfixes).
|
106
|
+
__END__
|
107
|
+
1 aches ache
|
108
|
+
1 arches arch
|
109
|
+
2 vases vase
|
110
|
+
2 basses bass
|
111
|
+
3 axes axe
|
112
|
+
3 fixes fix
|
113
|
+
4 hazes haze
|
114
|
+
4 buzzes buzz
|
115
|
+
6a caress caress
|
116
|
+
6b bans ban
|
117
|
+
7 Jones's Jones
|
118
|
+
8 creater creater
|
119
|
+
9 reacter reacter
|
120
|
+
10 copier copy
|
121
|
+
11 baker bake
|
122
|
+
11 smaller small
|
123
|
+
12a curried curry
|
124
|
+
12b bored bore
|
125
|
+
12b seated seat
|
126
|
+
# Can't handle these 2 with the special code as for the following 5 because after
|
127
|
+
# chopping the suffix, we are not left with a one-syllable word. Ie it's too hard.
|
128
|
+
# Yes, that was 5 not 7. Look for the doubled-consonant in the middle of the word.
|
129
|
+
# The special code is in Infinitive.pm @ line 1188.
|
130
|
+
#12b bootstrapped bootstrap
|
131
|
+
#12b bootstrapping bootstrap
|
132
|
+
12b tipped tip
|
133
|
+
12b kitted kit
|
134
|
+
12b capped cap
|
135
|
+
12b chopped chop
|
136
|
+
13a flies fly
|
137
|
+
13b palates palate
|
138
|
+
14a liveliest lively
|
139
|
+
14b wisest wise
|
140
|
+
14b strongest strong
|
141
|
+
15 living live
|
142
|
+
15 laughing laugh
|
143
|
+
15 swaying sway
|
144
|
+
15 catching catch
|
145
|
+
15 smiling smile
|
146
|
+
15 swimming swim
|
147
|
+
15 running run
|
148
|
+
15 floating float
|
149
|
+
15 keyboarding keyboard
|
150
|
+
15 wrestling wrestle
|
151
|
+
15 traveling travel
|
152
|
+
15 traipsing traipse
|
153
|
+
16 stylist style
|
154
|
+
16 dentist dent
|
155
|
+
17 cubism cube
|
156
|
+
17 socialism social
|
157
|
+
18 scarcity scarce
|
158
|
+
18 rapidity rapid
|
159
|
+
19 immunize immune
|
160
|
+
19 lionize lion
|
161
|
+
20c livable live
|
162
|
+
20c portable port
|
163
|
+
22 nobility noble
|
164
|
+
23 identifiable identify
|
165
|
+
24 psychologist psychology
|
166
|
+
25 photographic photography
|
167
|
+
26 stylistic stylist
|
168
|
+
27 martensitic martensite
|
169
|
+
27 politic polite
|
170
|
+
28 ladylike lady
|
171
|
+
29 biologic biology
|
172
|
+
30 battlement battle
|
173
|
+
31 supplemental supplement
|
174
|
+
32 thermometry thermometer
|
175
|
+
33 inadvertence inadvertent
|
176
|
+
34 potency potent
|
177
|
+
35 discipleship disciple
|
178
|
+
36 mystical mystic
|
179
|
+
37 regional region
|
180
|
+
37 national nation
|
181
|
+
38 horribly horrible
|
182
|
+
39 scantily scanty
|
183
|
+
40 partly part
|
184
|
+
41a dutiful duty
|
185
|
+
41b harmful harm
|
186
|
+
42a likelihood likely
|
187
|
+
42b neighborhood neighbor
|
188
|
+
42b neighbourhood neighbour
|
189
|
+
43a penniless penny
|
190
|
+
43b listless list
|
191
|
+
44a heartiness hearty
|
192
|
+
44b coolness cool
|
193
|
+
45 specification specify
|
194
|
+
46 rationalization rationalize
|
195
|
+
47 detection detect
|
196
|
+
48 exertion exert
|
197
|
+
49 creation create
|
198
|
+
50 creator create
|
199
|
+
51 detector detect
|
200
|
+
52 creative creation
|
201
|
+
52 decisive decision
|
202
|
+
53 Australian Australia
|
203
|
+
54 Jeffersonian Jefferson
|
204
|
+
irregular rove reeve
|
205
|
+
irregular dove dive
|
206
|
+
irregular snuck sneak
|
207
|
+
irregular wot wit
|
@@ -0,0 +1,1389 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
#
|
3
|
+
# Unit test for English inflection
|
4
|
+
# $Id$
|
5
|
+
#
|
6
|
+
# Copyright (c) 2003, 2005 The FaerieMUD Consortium.
|
7
|
+
#
|
8
|
+
# Much of this test was adapted from the test script for Lingua::EN::Inflect by
|
9
|
+
# Damien Conway:
|
10
|
+
#
|
11
|
+
# Copyright (c) 1997-2000, Damian Conway. All Rights Reserved.
|
12
|
+
# This module is free software. It may be used, redistributed
|
13
|
+
# and/or modified under the same terms as Perl itself.
|
14
|
+
#
|
15
|
+
|
16
|
+
unless defined? Linguistics::TestCase
|
17
|
+
testsdir = File::dirname( File::dirname(File::expand_path( __FILE__ )) )
|
18
|
+
$LOAD_PATH.unshift testsdir unless $LOAD_PATH.include?( testsdir )
|
19
|
+
|
20
|
+
require 'lingtestcase'
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
### This test case tests the english pluralization routines of the Linguistics
|
25
|
+
### module.
|
26
|
+
class EnglishInflectionTestCase < Linguistics::TestCase
|
27
|
+
|
28
|
+
InflectFromItems = [ %w{foo bar}, "foo bar", 15, 18.13 ]
|
29
|
+
|
30
|
+
NumberTests = [
|
31
|
+
["0", "zero", "zero", "zero", "zero", "zeroth", ],
|
32
|
+
["1", "one", "one", "one", "one", "first", ],
|
33
|
+
["2", "two", "two", "two", "two", "second", ],
|
34
|
+
["3", "three", "three", "three", "three", "third", ],
|
35
|
+
["4", "four", "four", "four", "four", "fourth", ],
|
36
|
+
["5", "five", "five", "five", "five", "fifth", ],
|
37
|
+
["6", "six", "six", "six", "six", "sixth", ],
|
38
|
+
["7", "seven", "seven", "seven", "seven", "seventh", ],
|
39
|
+
["8", "eight", "eight", "eight", "eight", "eighth", ],
|
40
|
+
["9", "nine", "nine", "nine", "nine", "ninth", ],
|
41
|
+
["10", "ten", "one, zero", "ten", "ten", "tenth", ],
|
42
|
+
["11", "eleven", "one, one", "eleven", "eleven", "eleventh", ],
|
43
|
+
["12", "twelve", "one, two", "twelve", "twelve", "twelfth", ],
|
44
|
+
["13", "thirteen", "one, three", "thirteen", "thirteen", "thirteenth", ],
|
45
|
+
["14", "fourteen", "one, four", "fourteen", "fourteen", "fourteenth", ],
|
46
|
+
["15", "fifteen", "one, five", "fifteen", "fifteen", "fifteenth", ],
|
47
|
+
["16", "sixteen", "one, six", "sixteen", "sixteen", "sixteenth", ],
|
48
|
+
["17", "seventeen", "one, seven", "seventeen", "seventeen", "seventeenth", ],
|
49
|
+
["18", "eighteen", "one, eight", "eighteen", "eighteen", "eighteenth", ],
|
50
|
+
["19", "nineteen", "one, nine", "nineteen", "nineteen", "nineteenth", ],
|
51
|
+
["20", "twenty", "two, zero", "twenty", "twenty", "twentieth", ],
|
52
|
+
["21", "twenty-one", "two, one", "twenty-one", "twenty-one", "twenty-first", ],
|
53
|
+
["29", "twenty-nine", "two, nine", "twenty-nine", "twenty-nine", "twenty-ninth", ],
|
54
|
+
["99", "ninety-nine", "nine, nine", "ninety-nine", "ninety-nine", "ninety-ninth", ],
|
55
|
+
|
56
|
+
["100", "one hundred", "one, zero, zero", "ten, zero", "one zero zero",
|
57
|
+
"one hundredth", ],
|
58
|
+
["101", "one hundred and one", "one, zero, one", "ten, one", "one zero one",
|
59
|
+
"one hundred and first", ],
|
60
|
+
["110", "one hundred and ten", "one, one, zero", "eleven, zero", "one ten",
|
61
|
+
"one hundred and tenth", ],
|
62
|
+
["111", "one hundred and eleven", "one, one, one", "eleven, one", "one eleven",
|
63
|
+
"one hundred and eleventh", ],
|
64
|
+
["900", "nine hundred", "nine, zero, zero", "ninety, zero", "nine zero zero",
|
65
|
+
"nine hundredth", ],
|
66
|
+
["999", "nine hundred and ninety-nine", "nine, nine, nine", "ninety-nine, nine",
|
67
|
+
"nine ninety-nine", "nine hundred and ninety-ninth", ],
|
68
|
+
|
69
|
+
["1000", "one thousand", "one, zero, zero, zero", "ten, zero zero",
|
70
|
+
"one zero zero, zero", "one thousandth", ],
|
71
|
+
["1001", "one thousand and one", "one, zero, zero, one", "ten, zero one",
|
72
|
+
"one zero zero, one", "one thousand and first", ],
|
73
|
+
["1010", "one thousand and ten", "one, zero, one, zero", "ten, ten",
|
74
|
+
"one zero one, zero", "one thousand and tenth", ],
|
75
|
+
["1100", "one thousand, one hundred", "one, one, zero, zero",
|
76
|
+
"eleven, zero zero", "one ten, zero", "one thousand, one hundredth", ],
|
77
|
+
["2000", "two thousand", "two, zero, zero, zero", "twenty, zero zero",
|
78
|
+
"two zero zero, zero", "two thousandth", ],
|
79
|
+
["10000", "ten thousand", "one, zero, zero, zero, zero", "ten, zero zero, zero",
|
80
|
+
"one zero zero, zero zero", "ten thousandth", ],
|
81
|
+
|
82
|
+
["100000", "one hundred thousand", "one, zero, zero, zero, zero, zero",
|
83
|
+
"ten, zero zero, zero zero", "one zero zero, zero zero zero",
|
84
|
+
"one hundred thousandth", ],
|
85
|
+
["100001", "one hundred thousand and one", "one, zero, zero, zero, zero, one",
|
86
|
+
"ten, zero zero, zero one", "one zero zero, zero zero one",
|
87
|
+
"one hundred thousand and first", ],
|
88
|
+
["123456", "one hundred and twenty-three thousand, four hundred and fifty-six",
|
89
|
+
"one, two, three, four, five, six", "twelve, thirty-four, fifty-six",
|
90
|
+
"one twenty-three, four fifty-six",
|
91
|
+
"one hundred and twenty-three thousand, four hundred and fifty-sixth", ],
|
92
|
+
["0123456", "one hundred and twenty-three thousand, four hundred and fifty-six",
|
93
|
+
"zero, one, two, three, four, five, six",
|
94
|
+
"zero one, twenty-three, forty-five, six",
|
95
|
+
"zero twelve, three forty-five, six",
|
96
|
+
"one hundred and twenty-three thousand, four hundred and fifty-sixth", ],
|
97
|
+
|
98
|
+
["1234567",
|
99
|
+
"one million, two hundred and thirty-four thousand, five hundred and sixty-seven",
|
100
|
+
"one, two, three, four, five, six, seven", "twelve, thirty-four, fifty-six, seven",
|
101
|
+
"one twenty-three, four fifty-six, seven",
|
102
|
+
"one million, two hundred and thirty-four thousand, five hundred and sixty-seventh", ],
|
103
|
+
["12345678",
|
104
|
+
"twelve million, three hundred and forty-five thousand, six hundred and seventy-eight",
|
105
|
+
"one, two, three, four, five, six, seven, eight",
|
106
|
+
"twelve, thirty-four, fifty-six, seventy-eight",
|
107
|
+
"one twenty-three, four fifty-six, seventy-eight",
|
108
|
+
"twelve million, three hundred and forty-five thousand, six hundred and seventy-eighth", ],
|
109
|
+
["12_345_678",
|
110
|
+
"twelve million, three hundred and forty-five thousand, six hundred and seventy-eight",
|
111
|
+
"one, two, three, four, five, six, seven, eight",
|
112
|
+
"twelve, thirty-four, fifty-six, seventy-eight",
|
113
|
+
"one twenty-three, four fifty-six, seventy-eight", ],
|
114
|
+
["1234,5678",
|
115
|
+
"twelve million, three hundred and forty-five thousand, six hundred and seventy-eight",
|
116
|
+
"one, two, three, four, five, six, seven, eight",
|
117
|
+
"twelve, thirty-four, fifty-six, seventy-eight",
|
118
|
+
"one twenty-three, four fifty-six, seventy-eight", ],
|
119
|
+
["1234567890",
|
120
|
+
"one billion, two hundred and thirty-four million, five hundred and sixty-seven thousand, eight hundred and ninety",
|
121
|
+
"one, two, three, four, five, six, seven, eight, nine, zero",
|
122
|
+
"twelve, thirty-four, fifty-six, seventy-eight, ninety",
|
123
|
+
"one twenty-three, four fifty-six, seven eighty-nine, zero",
|
124
|
+
"one billion, two hundred and thirty-four million, five hundred and sixty-seven thousand, eight hundred and ninetieth", ],
|
125
|
+
["123456789012345",
|
126
|
+
"one hundred and twenty-three trillion, four hundred and fifty-six billion, seven hundred and eighty-nine million, twelve thousand, three hundred and forty-five",
|
127
|
+
"one, two, three, four, five, six, seven, eight, nine, zero, one, two, three, four, five",
|
128
|
+
"twelve, thirty-four, fifty-six, seventy-eight, ninety, twelve, thirty-four, five",
|
129
|
+
"one twenty-three, four fifty-six, seven eighty-nine, zero twelve, three forty-five",
|
130
|
+
"one hundred and twenty-three trillion, four hundred and fifty-six billion, seven hundred and eighty-nine million, twelve thousand, three hundred and forty-fifth", ],
|
131
|
+
["12345678901234567890",
|
132
|
+
"twelve quintillion, three hundred and forty-five quadrillion, six hundred and seventy-eight trillion, nine hundred and one billion, two hundred and thirty-four million, five hundred and sixty-seven thousand, eight hundred and ninety",
|
133
|
+
"one, two, three, four, five, six, seven, eight, nine, zero, one, two, three, four, five, six, seven, eight, nine, zero",
|
134
|
+
"twelve, thirty-four, fifty-six, seventy-eight, ninety, twelve, thirty-four, fifty-six, seventy-eight, ninety",
|
135
|
+
"one twenty-three, four fifty-six, seven eighty-nine, zero twelve, three forty-five, six seventy-eight, ninety",
|
136
|
+
"twelve quintillion, three hundred and forty-five quadrillion, six hundred and seventy-eight trillion, nine hundred and one billion, two hundred and thirty-four million, five hundred and sixty-seven thousand, eight hundred and ninetieth", ],
|
137
|
+
|
138
|
+
["0.987654", "zero point nine eight seven six five four",
|
139
|
+
"zero, point, nine, eight, seven, six, five, four",
|
140
|
+
"zero, point, ninety-eight, seventy-six, fifty-four",
|
141
|
+
"zero, point, nine eighty-seven, six fifty-four",
|
142
|
+
"zero point nine eight seven six five fourth", ],
|
143
|
+
[".987654", "point nine eight seven six five four",
|
144
|
+
"point, nine, eight, seven, six, five, four",
|
145
|
+
"point, ninety-eight, seventy-six, fifty-four",
|
146
|
+
"point, nine eighty-seven, six fifty-four",
|
147
|
+
"point nine eight seven six five fourth", ],
|
148
|
+
["9.87654", "nine point eight seven six five four",
|
149
|
+
"nine, point, eight, seven, six, five, four",
|
150
|
+
"nine, point, eighty-seven, sixty-five, four",
|
151
|
+
"nine, point, eight seventy-six, fifty-four",
|
152
|
+
"nine point eight seven six five fourth", ],
|
153
|
+
["98.7654", "ninety-eight point seven six five four",
|
154
|
+
"nine, eight, point, seven, six, five, four",
|
155
|
+
"ninety-eight, point, seventy-six, fifty-four",
|
156
|
+
"ninety-eight, point, seven sixty-five, four",
|
157
|
+
"ninety-eight point seven six five fourth", ],
|
158
|
+
["987.654", "nine hundred and eighty-seven point six five four",
|
159
|
+
"nine, eight, seven, point, six, five, four",
|
160
|
+
"ninety-eight, seven, point, sixty-five, four",
|
161
|
+
"nine eighty-seven, point, six fifty-four",
|
162
|
+
"nine hundred and eighty-seven point six five fourth", ],
|
163
|
+
["9876.54", "nine thousand, eight hundred and seventy-six point five four",
|
164
|
+
"nine, eight, seven, six, point, five, four",
|
165
|
+
"ninety-eight, seventy-six, point, fifty-four",
|
166
|
+
"nine eighty-seven, six, point, fifty-four",
|
167
|
+
"nine thousand, eight hundred and seventy-six point five fourth", ],
|
168
|
+
["98765.4", "ninety-eight thousand, seven hundred and sixty-five point four",
|
169
|
+
"nine, eight, seven, six, five, point, four",
|
170
|
+
"ninety-eight, seventy-six, five, point, four",
|
171
|
+
"nine eighty-seven, sixty-five, point, four",
|
172
|
+
"ninety-eight thousand, seven hundred and sixty-five point fourth", ],
|
173
|
+
["101.202.303", "one hundred and one point two zero two three zero three",
|
174
|
+
"one, zero, one, point, two, zero, two, point, three, zero, three",
|
175
|
+
"ten, one, point, twenty, two, point, thirty, three",
|
176
|
+
"one zero one, point, two zero two, point, three zero three",
|
177
|
+
]
|
178
|
+
]
|
179
|
+
|
180
|
+
|
181
|
+
Ordinals = {
|
182
|
+
:numbers => {
|
183
|
+
0 => "0th",
|
184
|
+
1 => "1st",
|
185
|
+
2 => "2nd",
|
186
|
+
3 => "3rd",
|
187
|
+
4 => "4th",
|
188
|
+
5 => "5th",
|
189
|
+
6 => "6th",
|
190
|
+
7 => "7th",
|
191
|
+
8 => "8th",
|
192
|
+
9 => "9th",
|
193
|
+
10 => "10th",
|
194
|
+
11 => "11th",
|
195
|
+
12 => "12th",
|
196
|
+
13 => "13th",
|
197
|
+
14 => "14th",
|
198
|
+
15 => "15th",
|
199
|
+
16 => "16th",
|
200
|
+
17 => "17th",
|
201
|
+
18 => "18th",
|
202
|
+
19 => "19th",
|
203
|
+
20 => "20th",
|
204
|
+
21 => "21st",
|
205
|
+
22 => "22nd",
|
206
|
+
23 => "23rd",
|
207
|
+
24 => "24th",
|
208
|
+
100 => "100th",
|
209
|
+
101 => "101st",
|
210
|
+
102 => "102nd",
|
211
|
+
103 => "103rd",
|
212
|
+
104 => "104th",
|
213
|
+
},
|
214
|
+
|
215
|
+
:words => {
|
216
|
+
'zero' => "zeroth",
|
217
|
+
'one' => "first",
|
218
|
+
'two' => "second",
|
219
|
+
'three' => "third",
|
220
|
+
'four' => "fourth",
|
221
|
+
'five' => "fifth",
|
222
|
+
'six' => "sixth",
|
223
|
+
'seven' => "seventh",
|
224
|
+
'eight' => "eighth",
|
225
|
+
'nine' => "ninth",
|
226
|
+
'ten' => "tenth",
|
227
|
+
|
228
|
+
'eleven' => "eleventh",
|
229
|
+
'twelve' => "twelfth",
|
230
|
+
'thirteen' => "thirteenth",
|
231
|
+
'fourteen' => "fourteenth",
|
232
|
+
'fifteen' => "fifteenth",
|
233
|
+
'sixteen' => "sixteenth",
|
234
|
+
'seventeen' => "seventeenth",
|
235
|
+
'eighteen' => "eighteenth",
|
236
|
+
'nineteen' => "nineteenth",
|
237
|
+
'twenty' => "twentieth",
|
238
|
+
|
239
|
+
'twenty-one' => "twenty-first",
|
240
|
+
'twenty-two' => "twenty-second",
|
241
|
+
'twenty-three' => "twenty-third",
|
242
|
+
'twenty-four' => "twenty-fourth",
|
243
|
+
'one hundred' => "one hundredth",
|
244
|
+
|
245
|
+
'one hundred and one' => "one hundred and first",
|
246
|
+
'one hundred and two' => "one hundred and second",
|
247
|
+
'one hundred and three' => "one hundred and third",
|
248
|
+
'one hundred and four' => "one hundred and fourth",
|
249
|
+
}
|
250
|
+
}
|
251
|
+
|
252
|
+
PresentParticiples = {
|
253
|
+
'sees' => "seeing",
|
254
|
+
'eats' => "eating",
|
255
|
+
'bats' => "batting",
|
256
|
+
'hates' => "hating",
|
257
|
+
'spies' => "spying",
|
258
|
+
}
|
259
|
+
|
260
|
+
|
261
|
+
PluralDataLine = /^\s*(.*?)\s*->\s*(.*?)\s*(?:\|\s*(.*?)\s*)?(?:#\s*(.*))?$/
|
262
|
+
ArticleDataLine = /^\s+(an?)\s+(.*?)\s*$/
|
263
|
+
|
264
|
+
### Auto-generate tests for pluralization and indefinite articles
|
265
|
+
begin
|
266
|
+
inDataSection = false
|
267
|
+
methodCounter = 100
|
268
|
+
File::readlines( __FILE__ ).find_all do |line|
|
269
|
+
case line
|
270
|
+
when /^__END_DATA__$/
|
271
|
+
inDataSection = false
|
272
|
+
false
|
273
|
+
|
274
|
+
when /^__END__$/
|
275
|
+
inDataSection = true
|
276
|
+
false
|
277
|
+
|
278
|
+
else
|
279
|
+
inDataSection
|
280
|
+
end
|
281
|
+
end.each do |line|
|
282
|
+
case line
|
283
|
+
when PluralDataLine
|
284
|
+
singular, plural, altplural, comment = $~.to_a[1,4]
|
285
|
+
methodName = "test_%04d_pluralize%s" %
|
286
|
+
[ methodCounter, singular.gsub(/\W+/, '').capitalize ]
|
287
|
+
define_method( methodName.intern ) {||
|
288
|
+
printTestHeader "English: Plural of '#{singular}'"
|
289
|
+
assertPlural( singular, plural, altplural, comment )
|
290
|
+
}
|
291
|
+
methodCounter += 1
|
292
|
+
|
293
|
+
when ArticleDataLine
|
294
|
+
article, word = $~.to_a[1,2]
|
295
|
+
methodName = "test_%04d_%s%s" %
|
296
|
+
[ methodCounter, article, word.gsub(/\W+/, '').capitalize ]
|
297
|
+
define_method( methodName.intern ) {||
|
298
|
+
printTestHeader "English: Indefinite article for '#{word}'"
|
299
|
+
assertArticle( article, word )
|
300
|
+
}
|
301
|
+
|
302
|
+
methodCounter += 1
|
303
|
+
else
|
304
|
+
debug_msg "Skipped test data line '#{line.chomp}'"
|
305
|
+
end
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
309
|
+
### Overridden initializer: auto-generated test methods have an arity of 1
|
310
|
+
### even though they don't require an argument (as of the current Ruby CVS),
|
311
|
+
### and the default initializer throws an :invalid_test for methods with
|
312
|
+
### arity != 0.
|
313
|
+
def initialize( test_method_name )
|
314
|
+
if !respond_to?( test_method_name )
|
315
|
+
throw :invalid_test
|
316
|
+
end
|
317
|
+
@method_name = test_method_name
|
318
|
+
@test_passed = true
|
319
|
+
|
320
|
+
Linguistics::use( :en )
|
321
|
+
end
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
#################################################################
|
326
|
+
### T E S T S
|
327
|
+
#################################################################
|
328
|
+
|
329
|
+
def test_0000_loaded
|
330
|
+
assert_respond_to Linguistics::EN, :numwords
|
331
|
+
end
|
332
|
+
|
333
|
+
|
334
|
+
def test_0030_numwords
|
335
|
+
printTestHeader "English: Numbers to words"
|
336
|
+
rval = nil
|
337
|
+
|
338
|
+
NumberTests.each do
|
339
|
+
|origin, regular, group1, group2, group3, numord, ordnum|
|
340
|
+
|
341
|
+
op = "Regular numwords for #{origin}"
|
342
|
+
assert_nothing_raised( op ) { rval = origin.en.numwords }
|
343
|
+
assert_equal regular, rval, op
|
344
|
+
|
345
|
+
op = "Group 1 numwords for #{origin}"
|
346
|
+
assert_nothing_raised( op ) { rval = origin.en.numwords( :group => 1 ) }
|
347
|
+
assert_equal group1, rval, op
|
348
|
+
|
349
|
+
op = "Group 2 numwords for #{origin}"
|
350
|
+
assert_nothing_raised( op ) { rval = origin.en.numwords( :group => 2 ) }
|
351
|
+
assert_equal group2, rval, op
|
352
|
+
|
353
|
+
op = "Group 3 numwords for #{origin}"
|
354
|
+
assert_nothing_raised( op ) { rval = origin.en.numwords( :group => 3 ) }
|
355
|
+
assert_equal group3, rval, op
|
356
|
+
|
357
|
+
if numord
|
358
|
+
op = "Numwords -> ordinal for #{origin}"
|
359
|
+
assert_nothing_raised( op ) { rval = origin.en.numwords.en.ordinal }
|
360
|
+
assert_equal numord, rval, op
|
361
|
+
end
|
362
|
+
end
|
363
|
+
end
|
364
|
+
|
365
|
+
|
366
|
+
def test_numwords_with_an_symboland_should_use_it_to_join_words
|
367
|
+
rval = nil
|
368
|
+
|
369
|
+
assert_nothing_raised do
|
370
|
+
rval = 2006.en.numwords( :and => ' ' )
|
371
|
+
end
|
372
|
+
|
373
|
+
assert_equal "two thousand six", rval
|
374
|
+
end
|
375
|
+
|
376
|
+
|
377
|
+
def test_0040_ordinalNumbers
|
378
|
+
printTestHeader "English: Numbers to ordinals"
|
379
|
+
rval = nil
|
380
|
+
|
381
|
+
Ordinals[:numbers].each do |input,output|
|
382
|
+
op = "Ordinal for #{input.inspect}"
|
383
|
+
assert_nothing_raised( op ) { rval = input.en.ordinal }
|
384
|
+
assert_kind_of String, rval, op
|
385
|
+
assert_equal output, rval, op
|
386
|
+
end
|
387
|
+
end
|
388
|
+
|
389
|
+
|
390
|
+
def test_0045_ordinalWords
|
391
|
+
printTestHeader "English: Number words to ordinals"
|
392
|
+
rval = nil
|
393
|
+
|
394
|
+
Ordinals[:numbers].each do |input,output|
|
395
|
+
op = "Ordinal for #{input.inspect}"
|
396
|
+
assert_nothing_raised( op ) { rval = input.en.ordinal }
|
397
|
+
assert_kind_of String, rval, op
|
398
|
+
assert_equal output, rval, op
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
|
403
|
+
|
404
|
+
#
|
405
|
+
# Common routines for auto-generated test methods
|
406
|
+
#
|
407
|
+
|
408
|
+
def assertPlural( singular, plural, altplural, comment )
|
409
|
+
rval, pl_noun, pl_verb, pl, pl_val, altpl_val = [nil] * 6
|
410
|
+
|
411
|
+
isNv = false
|
412
|
+
case comment
|
413
|
+
when /verb/i
|
414
|
+
isNv = 'verb'
|
415
|
+
when /noun/i
|
416
|
+
isNv = 'noun'
|
417
|
+
end
|
418
|
+
|
419
|
+
op = "Pluralizing '#{singular}': "
|
420
|
+
assert_nothing_raised( op + "plural verb" ) {
|
421
|
+
pl_verb = singular.en.plural_verb
|
422
|
+
}
|
423
|
+
assert_nothing_raised( op + "plural noun" ) {
|
424
|
+
pl_noun = singular.en.plural_noun
|
425
|
+
}
|
426
|
+
assert_nothing_raised( op + "plural" ) {
|
427
|
+
pl = singular.en.plural
|
428
|
+
}
|
429
|
+
|
430
|
+
if !altplural.nil? && !altplural.empty?
|
431
|
+
begin
|
432
|
+
assert_nothing_raised( op + "classical" ) {
|
433
|
+
Linguistics::classical = true
|
434
|
+
altpl_val = singular.en.plural
|
435
|
+
}
|
436
|
+
ensure
|
437
|
+
Linguistics::classical = false
|
438
|
+
end
|
439
|
+
end
|
440
|
+
|
441
|
+
pl_val = isNv ? (isNv == "noun" ? pl_noun : pl_verb) : pl
|
442
|
+
|
443
|
+
assert_equal plural, pl_val, "Plural of '#{singular}'"
|
444
|
+
assert_equal altplural, altpl_val,
|
445
|
+
"Classical plural of '#{singular}'" unless
|
446
|
+
altplural.nil? or altplural.empty?
|
447
|
+
end
|
448
|
+
|
449
|
+
|
450
|
+
def assertArticle( article, word )
|
451
|
+
rval = nil
|
452
|
+
op = "Indefinite article for '#{word}'"
|
453
|
+
assert_nothing_raised( op ) {
|
454
|
+
rval = word.en.a
|
455
|
+
}
|
456
|
+
assert_equal "#{article} #{word}", rval, op
|
457
|
+
end
|
458
|
+
|
459
|
+
|
460
|
+
end
|
461
|
+
|
462
|
+
|
463
|
+
### Dataset is from Lingua::EN::Inflect's test suite.
|
464
|
+
__END__
|
465
|
+
|
466
|
+
a -> some # INDEFINITE ARTICLE
|
467
|
+
a -> as # NOUN FORM
|
468
|
+
A.C.R.O.N.Y.M. -> A.C.R.O.N.Y.M.s
|
469
|
+
abscissa -> abscissas|abscissae
|
470
|
+
Achinese -> Achinese
|
471
|
+
acropolis -> acropolises
|
472
|
+
adieu -> adieus|adieux
|
473
|
+
adjutant general -> adjutant generals
|
474
|
+
aegis -> aegises
|
475
|
+
afflatus -> afflatuses
|
476
|
+
afreet -> afreets|afreeti
|
477
|
+
afrit -> afrits|afriti
|
478
|
+
agendum -> agenda
|
479
|
+
aide-de-camp -> aides-de-camp
|
480
|
+
Alabaman -> Alabamans
|
481
|
+
albino -> albinos
|
482
|
+
album -> albums
|
483
|
+
Alfurese -> Alfurese
|
484
|
+
alga -> algae
|
485
|
+
alias -> aliases
|
486
|
+
alto -> altos|alti
|
487
|
+
alumna -> alumnae
|
488
|
+
alumnus -> alumni
|
489
|
+
alveolus -> alveoli
|
490
|
+
am -> are
|
491
|
+
am going -> are going
|
492
|
+
ambassador-at-large -> ambassadors-at-large
|
493
|
+
Amboinese -> Amboinese
|
494
|
+
Americanese -> Americanese
|
495
|
+
amoeba -> amoebas|amoebae
|
496
|
+
Amoyese -> Amoyese
|
497
|
+
an -> some # INDEFINITE ARTICLE
|
498
|
+
analysis -> analyses
|
499
|
+
anathema -> anathemas|anathemata
|
500
|
+
Andamanese -> Andamanese
|
501
|
+
Angolese -> Angolese
|
502
|
+
Annamese -> Annamese
|
503
|
+
antenna -> antennas|antennae
|
504
|
+
anus -> anuses
|
505
|
+
apex -> apexes|apices
|
506
|
+
apex's -> apexes'|apices' # POSSESSIVE FORM
|
507
|
+
aphelion -> aphelia
|
508
|
+
apparatus -> apparatuses|apparatus
|
509
|
+
appendix -> appendixes|appendices
|
510
|
+
apple -> apples
|
511
|
+
aquarium -> aquariums|aquaria
|
512
|
+
Aragonese -> Aragonese
|
513
|
+
Arakanese -> Arakanese
|
514
|
+
archipelago -> archipelagos
|
515
|
+
are -> are
|
516
|
+
are made -> are made
|
517
|
+
armadillo -> armadillos
|
518
|
+
arpeggio -> arpeggios
|
519
|
+
arthritis -> arthritises
|
520
|
+
asbestos -> asbestoses
|
521
|
+
asparagus -> asparaguses
|
522
|
+
ass -> asses
|
523
|
+
Assamese -> Assamese
|
524
|
+
asylum -> asylums
|
525
|
+
asyndeton -> asyndeta
|
526
|
+
at it -> at them # ACCUSATIVE
|
527
|
+
ate -> ate
|
528
|
+
atlas -> atlases
|
529
|
+
attorney general -> attorneys general
|
530
|
+
attorney of record -> attorneys of record
|
531
|
+
aurora -> auroras|aurorae
|
532
|
+
aviatrix -> aviatrixes|aviatrices
|
533
|
+
aviatrix's -> aviatrixes'|aviatrices'
|
534
|
+
Avignonese -> Avignonese
|
535
|
+
axe -> axes
|
536
|
+
axis -> axes
|
537
|
+
Azerbaijanese -> Azerbaijanese
|
538
|
+
bacillus -> bacilli
|
539
|
+
bacterium -> bacteria
|
540
|
+
Bahaman -> Bahamans
|
541
|
+
Balinese -> Balinese
|
542
|
+
bamboo -> bamboos
|
543
|
+
banjo -> banjoes
|
544
|
+
bass -> basses # INSTRUMENT, NOT FISH
|
545
|
+
basso -> bassos|bassi
|
546
|
+
bathos -> bathoses
|
547
|
+
beau -> beaus|beaux
|
548
|
+
beef -> beefs|beeves
|
549
|
+
beneath it -> beneath them # ACCUSATIVE
|
550
|
+
Bengalese -> Bengalese
|
551
|
+
bent -> bent # VERB FORM
|
552
|
+
bent -> bents # NOUN FORM
|
553
|
+
Bernese -> Bernese
|
554
|
+
Bhutanese -> Bhutanese
|
555
|
+
bias -> biases
|
556
|
+
biceps -> biceps
|
557
|
+
bison -> bisons|bison
|
558
|
+
Bolognese -> Bolognese
|
559
|
+
bonus -> bonuses
|
560
|
+
Borghese -> Borghese
|
561
|
+
boss -> bosses
|
562
|
+
Bostonese -> Bostonese
|
563
|
+
box -> boxes
|
564
|
+
boy -> boys
|
565
|
+
bravo -> bravoes
|
566
|
+
bream -> bream
|
567
|
+
breeches -> breeches
|
568
|
+
bride-to-be -> brides-to-be
|
569
|
+
britches -> britches
|
570
|
+
bronchitis -> bronchitises
|
571
|
+
bronchus -> bronchi
|
572
|
+
brother -> brothers|brethren
|
573
|
+
brother's -> brothers'|brethren's
|
574
|
+
buffalo -> buffaloes|buffalo
|
575
|
+
Buginese -> Buginese
|
576
|
+
buoy -> buoys
|
577
|
+
bureau -> bureaus|bureaux
|
578
|
+
Burman -> Burmans
|
579
|
+
Burmese -> Burmese
|
580
|
+
bursitis -> bursitises
|
581
|
+
bus -> buses
|
582
|
+
buzz -> buzzes
|
583
|
+
buzzes -> buzz # VERB FORM
|
584
|
+
by it -> by them # ACCUSATIVE
|
585
|
+
caddis -> caddises
|
586
|
+
cake -> cakes
|
587
|
+
Calabrese -> Calabrese
|
588
|
+
calf -> calves
|
589
|
+
callus -> calluses
|
590
|
+
Camaldolese -> Camaldolese
|
591
|
+
cameo -> cameos
|
592
|
+
campus -> campuses
|
593
|
+
can -> cans # NOUN FORM
|
594
|
+
can -> can # VERB FORM (all pers.)
|
595
|
+
candelabrum -> candelabra
|
596
|
+
cannabis -> cannabises
|
597
|
+
canto -> cantos
|
598
|
+
Cantonese -> Cantonese
|
599
|
+
cantus -> cantus
|
600
|
+
canvas -> canvases
|
601
|
+
CAPITAL -> CAPITALS
|
602
|
+
carcinoma -> carcinomas|carcinomata
|
603
|
+
care -> cares
|
604
|
+
cargo -> cargoes
|
605
|
+
Carlylese -> Carlylese
|
606
|
+
carp -> carp
|
607
|
+
Cassinese -> Cassinese
|
608
|
+
cat -> cats
|
609
|
+
catfish -> catfish
|
610
|
+
Celanese -> Celanese
|
611
|
+
Ceylonese -> Ceylonese
|
612
|
+
chairman -> chairmen
|
613
|
+
chamois -> chamois
|
614
|
+
chaos -> chaoses
|
615
|
+
chapeau -> chapeaus|chapeaux
|
616
|
+
charisma -> charismas|charismata
|
617
|
+
chases -> chase
|
618
|
+
chassis -> chassis
|
619
|
+
chateau -> chateaus|chateaux
|
620
|
+
cherub -> cherubs|cherubim
|
621
|
+
chickenpox -> chickenpox
|
622
|
+
chief -> chiefs
|
623
|
+
child -> children
|
624
|
+
Chinese -> Chinese
|
625
|
+
chorus -> choruses
|
626
|
+
church -> churches
|
627
|
+
cicatrix -> cicatrixes|cicatrices
|
628
|
+
circus -> circuses
|
629
|
+
class -> classes
|
630
|
+
classes -> class # VERB FORM
|
631
|
+
clippers -> clippers
|
632
|
+
clitoris -> clitorises|clitorides
|
633
|
+
cod -> cod
|
634
|
+
codex -> codices
|
635
|
+
coitus -> coitus
|
636
|
+
commando -> commandos
|
637
|
+
compendium -> compendiums|compendia
|
638
|
+
Congoese -> Congoese
|
639
|
+
Congolese -> Congolese
|
640
|
+
conspectus -> conspectuses
|
641
|
+
contralto -> contraltos|contralti
|
642
|
+
contretemps -> contretemps
|
643
|
+
conundrum -> conundrums
|
644
|
+
corps -> corps
|
645
|
+
corpus -> corpuses|corpora
|
646
|
+
cortex -> cortexes|cortices
|
647
|
+
cosmos -> cosmoses
|
648
|
+
court martial -> courts martial
|
649
|
+
cow -> cows|kine
|
650
|
+
cranium -> craniums|crania
|
651
|
+
crescendo -> crescendos
|
652
|
+
criterion -> criteria
|
653
|
+
curriculum -> curriculums|curricula
|
654
|
+
dais -> daises
|
655
|
+
data point -> data points
|
656
|
+
datum -> data
|
657
|
+
debris -> debris
|
658
|
+
decorum -> decorums
|
659
|
+
deer -> deer
|
660
|
+
delphinium -> delphiniums
|
661
|
+
desideratum -> desiderata
|
662
|
+
diabetes -> diabetes
|
663
|
+
dictum -> dictums|dicta
|
664
|
+
did -> did
|
665
|
+
did need -> did need
|
666
|
+
digitalis -> digitalises
|
667
|
+
dingo -> dingoes
|
668
|
+
diploma -> diplomas|diplomata
|
669
|
+
discus -> discuses
|
670
|
+
dish -> dishes
|
671
|
+
ditto -> dittos
|
672
|
+
djinn -> djinn
|
673
|
+
does -> do
|
674
|
+
dog -> dogs
|
675
|
+
dogma -> dogmas|dogmata
|
676
|
+
dominatrix -> dominatrixes|dominatrices
|
677
|
+
domino -> dominoes
|
678
|
+
Dongolese -> Dongolese
|
679
|
+
drama -> dramas|dramata
|
680
|
+
drum -> drums
|
681
|
+
dwarf -> dwarves
|
682
|
+
dynamo -> dynamos
|
683
|
+
edema -> edemas|edemata
|
684
|
+
eland -> elands|eland
|
685
|
+
elf -> elves
|
686
|
+
elk -> elks|elk
|
687
|
+
embryo -> embryos
|
688
|
+
emporium -> emporiums|emporia
|
689
|
+
encephalitis -> encephalitises
|
690
|
+
enconium -> enconiums|enconia
|
691
|
+
enema -> enemas|enemata
|
692
|
+
enigma -> enigmas|enigmata
|
693
|
+
ephemeris -> ephemerides
|
694
|
+
epidermis -> epidermises
|
695
|
+
erratum -> errata
|
696
|
+
ethos -> ethoses
|
697
|
+
eucalyptus -> eucalyptuses
|
698
|
+
extremum -> extrema
|
699
|
+
eyas -> eyases
|
700
|
+
factotum -> factotums
|
701
|
+
Faroese -> Faroese
|
702
|
+
fauna -> faunas|faunae
|
703
|
+
fax -> faxes
|
704
|
+
Ferrarese -> Ferrarese
|
705
|
+
ferry -> ferries
|
706
|
+
fetus -> fetuses
|
707
|
+
fiance -> fiances
|
708
|
+
fiancee -> fiancees
|
709
|
+
fiasco -> fiascos
|
710
|
+
fish -> fish
|
711
|
+
fizz -> fizzes
|
712
|
+
flamingo -> flamingoes
|
713
|
+
flora -> floras|florae
|
714
|
+
flounder -> flounder
|
715
|
+
focus -> focuses|foci
|
716
|
+
foetus -> foetuses
|
717
|
+
folio -> folios
|
718
|
+
Foochowese -> Foochowese
|
719
|
+
foot -> feet
|
720
|
+
foot's -> feet's # POSSESSIVE FORM
|
721
|
+
foramen -> foramens|foramina
|
722
|
+
formula -> formulas|formulae
|
723
|
+
forum -> forums
|
724
|
+
fought -> fought
|
725
|
+
fox -> foxes
|
726
|
+
from him -> from them
|
727
|
+
from it -> from them # ACCUSATIVE
|
728
|
+
fungus -> funguses|fungi
|
729
|
+
Gabunese -> Gabunese
|
730
|
+
gallows -> gallows
|
731
|
+
ganglion -> ganglions|ganglia
|
732
|
+
gas -> gases
|
733
|
+
gateau -> gateaus|gateaux
|
734
|
+
gave -> gave
|
735
|
+
generalissimo -> generalissimos
|
736
|
+
Genevese -> Genevese
|
737
|
+
genie -> genies|genii
|
738
|
+
genius -> geniuses|genii
|
739
|
+
Genoese -> Genoese
|
740
|
+
genus -> genera
|
741
|
+
German -> Germans
|
742
|
+
ghetto -> ghettos
|
743
|
+
Gilbertese -> Gilbertese
|
744
|
+
glottis -> glottises
|
745
|
+
Goanese -> Goanese
|
746
|
+
goose -> geese
|
747
|
+
Governor General -> Governors General
|
748
|
+
goy -> goys|goyim
|
749
|
+
graffiti -> graffiti
|
750
|
+
graffito -> graffiti
|
751
|
+
guano -> guanos
|
752
|
+
guardsman -> guardsmen
|
753
|
+
Guianese -> Guianese
|
754
|
+
gumma -> gummas|gummata
|
755
|
+
gymnasium -> gymnasiums|gymnasia
|
756
|
+
had -> had
|
757
|
+
had thought -> had thought
|
758
|
+
Hainanese -> Hainanese
|
759
|
+
handkerchief -> handkerchiefs
|
760
|
+
Hararese -> Hararese
|
761
|
+
Harlemese -> Harlemese
|
762
|
+
harmonium -> harmoniums
|
763
|
+
has -> have
|
764
|
+
has become -> have become
|
765
|
+
has been -> have been
|
766
|
+
has-been -> has-beens
|
767
|
+
Havanese -> Havanese
|
768
|
+
have -> have
|
769
|
+
have conceded -> have conceded
|
770
|
+
he -> they
|
771
|
+
headquarters -> headquarters
|
772
|
+
Heavenese -> Heavenese
|
773
|
+
helix -> helices
|
774
|
+
hepatitis -> hepatitises
|
775
|
+
her -> them # PRONOUN
|
776
|
+
her -> their # POSSESSIVE ADJ
|
777
|
+
hero -> heroes
|
778
|
+
herpes -> herpes
|
779
|
+
hers -> theirs # POSSESSIVE NOUN
|
780
|
+
herself -> themselves
|
781
|
+
hiatus -> hiatuses|hiatus
|
782
|
+
highlight -> highlights
|
783
|
+
hijinks -> hijinks
|
784
|
+
him -> them
|
785
|
+
himself -> themselves
|
786
|
+
hippopotamus -> hippopotamuses|hippopotami
|
787
|
+
Hiroshiman -> Hiroshimans
|
788
|
+
his -> their # POSSESSIVE ADJ
|
789
|
+
his -> theirs # POSSESSIVE NOUN
|
790
|
+
honorarium -> honorariums|honoraria
|
791
|
+
hoof -> hoofs|hooves
|
792
|
+
Hoosierese -> Hoosierese
|
793
|
+
Hottentotese -> Hottentotese
|
794
|
+
house -> houses
|
795
|
+
housewife -> housewives
|
796
|
+
hubris -> hubrises
|
797
|
+
human -> humans
|
798
|
+
Hunanese -> Hunanese
|
799
|
+
hydra -> hydras|hydrae
|
800
|
+
hyperbaton -> hyperbata
|
801
|
+
hyperbola -> hyperbolas|hyperbolae
|
802
|
+
I -> we
|
803
|
+
ibis -> ibises
|
804
|
+
ignoramus -> ignoramuses
|
805
|
+
impetus -> impetuses|impetus
|
806
|
+
incubus -> incubuses|incubi
|
807
|
+
index -> indexes|indices
|
808
|
+
Indochinese -> Indochinese
|
809
|
+
inferno -> infernos
|
810
|
+
innings -> innings
|
811
|
+
Inspector General -> Inspectors General
|
812
|
+
interregnum -> interregnums|interregna
|
813
|
+
iris -> irises|irides
|
814
|
+
is -> are
|
815
|
+
is eaten -> are eaten
|
816
|
+
it -> they # NOMINATIVE
|
817
|
+
its -> their # POSSESSIVE FORM
|
818
|
+
itself -> themselves
|
819
|
+
jackanapes -> jackanapes
|
820
|
+
Japanese -> Japanese
|
821
|
+
Javanese -> Javanese
|
822
|
+
Jerry -> Jerrys
|
823
|
+
jerry -> jerries
|
824
|
+
jinx -> jinxes
|
825
|
+
jinxes -> jinx # VERB FORM
|
826
|
+
Johnsonese -> Johnsonese
|
827
|
+
Jones -> Joneses
|
828
|
+
jumbo -> jumbos
|
829
|
+
Kanarese -> Kanarese
|
830
|
+
Kiplingese -> Kiplingese
|
831
|
+
knife -> knives # NOUN FORM
|
832
|
+
knife -> knife # VERB FORM (1st/2nd pers.)
|
833
|
+
knifes -> knife # VERB FORM (3rd pers.)
|
834
|
+
Kongoese -> Kongoese
|
835
|
+
Kongolese -> Kongolese
|
836
|
+
lacuna -> lacunas|lacunae
|
837
|
+
lady in waiting -> ladies in waiting
|
838
|
+
Lapponese -> Lapponese
|
839
|
+
larynx -> larynxes|larynges
|
840
|
+
latex -> latexes|latices
|
841
|
+
leaf -> leaf # VERB FORM (1st/2nd pers.)
|
842
|
+
leaf -> leaves # NOUN FORM
|
843
|
+
leafs -> leaf # VERB FORM (3rd pers.)
|
844
|
+
Lebanese -> Lebanese
|
845
|
+
lemma -> lemmas|lemmata
|
846
|
+
lens -> lenses
|
847
|
+
Leonese -> Leonese
|
848
|
+
lick of the cat -> licks of the cat
|
849
|
+
Lieutenant General -> Lieutenant Generals
|
850
|
+
life -> lives
|
851
|
+
Liman -> Limans
|
852
|
+
lingo -> lingos
|
853
|
+
loaf -> loaves
|
854
|
+
locus -> loci
|
855
|
+
Londonese -> Londonese
|
856
|
+
Lorrainese -> Lorrainese
|
857
|
+
lothario -> lotharios
|
858
|
+
louse -> lice
|
859
|
+
Lucchese -> Lucchese
|
860
|
+
lumbago -> lumbagos
|
861
|
+
lumen -> lumens|lumina
|
862
|
+
lustrum -> lustrums|lustra
|
863
|
+
lyceum -> lyceums
|
864
|
+
lymphoma -> lymphomas|lymphomata
|
865
|
+
lynx -> lynxes
|
866
|
+
Lyonese -> Lyonese
|
867
|
+
M.I.A. -> M.I.A.s
|
868
|
+
Macanese -> Macanese
|
869
|
+
Macassarese -> Macassarese
|
870
|
+
mackerel -> mackerel
|
871
|
+
made -> made
|
872
|
+
Madurese -> Madurese
|
873
|
+
magma -> magmas|magmata
|
874
|
+
magneto -> magnetos
|
875
|
+
Major General -> Major Generals
|
876
|
+
Malabarese -> Malabarese
|
877
|
+
Maltese -> Maltese
|
878
|
+
man -> men
|
879
|
+
mandamus -> mandamuses
|
880
|
+
manifesto -> manifestos
|
881
|
+
mantis -> mantises
|
882
|
+
marquis -> marquises
|
883
|
+
Mary -> Marys
|
884
|
+
maximum -> maximums|maxima
|
885
|
+
measles -> measles
|
886
|
+
medico -> medicos
|
887
|
+
medium -> mediums|media
|
888
|
+
medium's -> mediums'|media's
|
889
|
+
medusa -> medusas|medusae
|
890
|
+
memorandum -> memorandums|memoranda
|
891
|
+
meniscus -> menisci
|
892
|
+
Messinese -> Messinese
|
893
|
+
metamorphosis -> metamorphoses
|
894
|
+
metropolis -> metropolises
|
895
|
+
mews -> mews
|
896
|
+
miasma -> miasmas|miasmata
|
897
|
+
Milanese -> Milanese
|
898
|
+
milieu -> milieus|milieux
|
899
|
+
millenium -> milleniums|millenia
|
900
|
+
minimum -> minimums|minima
|
901
|
+
minx -> minxes
|
902
|
+
miss -> miss # VERB FORM (1st/2nd pers.)
|
903
|
+
miss -> misses # NOUN FORM
|
904
|
+
misses -> miss # VERB FORM (3rd pers.)
|
905
|
+
mittamus -> mittamuses
|
906
|
+
Modenese -> Modenese
|
907
|
+
momentum -> momentums|momenta
|
908
|
+
money -> monies
|
909
|
+
mongoose -> mongooses
|
910
|
+
moose -> mooses|moose
|
911
|
+
mother-in-law -> mothers-in-law
|
912
|
+
mouse -> mice
|
913
|
+
mumps -> mumps
|
914
|
+
Muranese -> Muranese
|
915
|
+
murex -> murices
|
916
|
+
museum -> museums
|
917
|
+
mustachio -> mustachios
|
918
|
+
my -> our # POSSESSIVE FORM
|
919
|
+
myself -> ourselves
|
920
|
+
mythos -> mythoi
|
921
|
+
Nakayaman -> Nakayamans
|
922
|
+
Nankingese -> Nankingese
|
923
|
+
nasturtium -> nasturtiums
|
924
|
+
Navarrese -> Navarrese
|
925
|
+
nebula -> nebulas|nebulae
|
926
|
+
Nepalese -> Nepalese
|
927
|
+
neuritis -> neuritises
|
928
|
+
neurosis -> neuroses
|
929
|
+
news -> news
|
930
|
+
nexus -> nexus
|
931
|
+
Niasese -> Niasese
|
932
|
+
Nicobarese -> Nicobarese
|
933
|
+
nimbus -> nimbuses|nimbi
|
934
|
+
Nipponese -> Nipponese
|
935
|
+
no -> noes
|
936
|
+
nostrum -> nostrums
|
937
|
+
noumenon -> noumena
|
938
|
+
nova -> novas|novae
|
939
|
+
nucleolus -> nucleoluses|nucleoli
|
940
|
+
nucleus -> nuclei
|
941
|
+
oaf -> oafs
|
942
|
+
octavo -> octavos
|
943
|
+
octopus -> octopuses|octopodes
|
944
|
+
oedema -> oedemas|oedemata
|
945
|
+
Oklahoman -> Oklahomans
|
946
|
+
omnibus -> omnibuses
|
947
|
+
on it -> on them # ACCUSATIVE
|
948
|
+
onus -> onuses
|
949
|
+
opera -> operas
|
950
|
+
optimum -> optimums|optima
|
951
|
+
opus -> opuses|opera
|
952
|
+
organon -> organa
|
953
|
+
ought to be -> ought to be # VERB (UNLIKE bride to be)
|
954
|
+
ovum -> ova
|
955
|
+
ox -> oxen
|
956
|
+
ox's -> oxen's # POSSESSIVE FORM
|
957
|
+
oxymoron -> oxymorons|oxymora
|
958
|
+
Panaman -> Panamans
|
959
|
+
parabola -> parabolas|parabolae
|
960
|
+
Parmese -> Parmese
|
961
|
+
pathos -> pathoses
|
962
|
+
pegasus -> pegasuses
|
963
|
+
Pekingese -> Pekingese
|
964
|
+
pelvis -> pelvises
|
965
|
+
pendulum -> pendulums
|
966
|
+
penis -> penises|penes
|
967
|
+
penumbra -> penumbras|penumbrae
|
968
|
+
perihelion -> perihelia
|
969
|
+
persona -> personae
|
970
|
+
petroleum -> petroleums
|
971
|
+
phalanx -> phalanxes|phalanges
|
972
|
+
PhD -> PhDs
|
973
|
+
phenomenon -> phenomena
|
974
|
+
philtrum -> philtrums
|
975
|
+
photo -> photos
|
976
|
+
phylum -> phylums|phyla
|
977
|
+
piano -> pianos|piani
|
978
|
+
Piedmontese -> Piedmontese
|
979
|
+
pincer -> pincers
|
980
|
+
pincers -> pincers
|
981
|
+
Pistoiese -> Pistoiese
|
982
|
+
plateau -> plateaus|plateaux
|
983
|
+
play -> plays
|
984
|
+
plexus -> plexuses|plexus
|
985
|
+
pliers -> pliers
|
986
|
+
plies -> ply # VERB FORM
|
987
|
+
polis -> polises
|
988
|
+
Polonese -> Polonese
|
989
|
+
pontifex -> pontifexes|pontifices
|
990
|
+
portmanteau -> portmanteaus|portmanteaux
|
991
|
+
Portuguese -> Portuguese
|
992
|
+
potato -> potatoes
|
993
|
+
pox -> pox
|
994
|
+
pragma -> pragmas|pragmata
|
995
|
+
premium -> premiums
|
996
|
+
prima donna -> prima donnas|prime donne
|
997
|
+
pro -> pros
|
998
|
+
proceedings -> proceedings
|
999
|
+
prolegomenon -> prolegomena
|
1000
|
+
proof -> proofs
|
1001
|
+
proof of concept -> proofs of concept
|
1002
|
+
prosecutrix -> prosecutrixes|prosecutrices
|
1003
|
+
prospectus -> prospectuses|prospectus
|
1004
|
+
protozoan -> protozoans
|
1005
|
+
protozoon -> protozoa
|
1006
|
+
put -> put
|
1007
|
+
quantum -> quantums|quanta
|
1008
|
+
quartermaster general -> quartermasters general
|
1009
|
+
quarto -> quartos
|
1010
|
+
quorum -> quorums
|
1011
|
+
rabies -> rabies
|
1012
|
+
radius -> radiuses|radii
|
1013
|
+
radix -> radices
|
1014
|
+
rebus -> rebuses
|
1015
|
+
reindeer -> reindeer
|
1016
|
+
rhino -> rhinos
|
1017
|
+
rhinoceros -> rhinoceroses|rhinoceros
|
1018
|
+
Romagnese -> Romagnese
|
1019
|
+
Romanese -> Romanese
|
1020
|
+
romeo -> romeos
|
1021
|
+
roof -> roofs
|
1022
|
+
rostrum -> rostrums|rostra
|
1023
|
+
ruckus -> ruckuses
|
1024
|
+
salmon -> salmon
|
1025
|
+
Sangirese -> Sangirese
|
1026
|
+
sank -> sank
|
1027
|
+
Sarawakese -> Sarawakese
|
1028
|
+
sarcoma -> sarcomas|sarcomata
|
1029
|
+
sassafras -> sassafrases
|
1030
|
+
saw -> saws # NOUN FORM
|
1031
|
+
saw -> saw # VERB FORM (1st/2nd pers.)
|
1032
|
+
saws -> saw # VERB FORM (3rd pers.)
|
1033
|
+
scarf -> scarves
|
1034
|
+
schema -> schemas|schemata
|
1035
|
+
scissors -> scissors
|
1036
|
+
Scotsman -> Scotsmen
|
1037
|
+
sea-bass -> sea-bass
|
1038
|
+
self -> selves
|
1039
|
+
Selman -> Selmans
|
1040
|
+
Senegalese -> Senegalese
|
1041
|
+
seraph -> seraphs|seraphim
|
1042
|
+
series -> series
|
1043
|
+
shall eat -> shall eat
|
1044
|
+
Shavese -> Shavese
|
1045
|
+
Shawanese -> Shawanese
|
1046
|
+
she -> they
|
1047
|
+
sheaf -> sheaves
|
1048
|
+
shears -> shears
|
1049
|
+
sheep -> sheep
|
1050
|
+
shelf -> shelves
|
1051
|
+
should have -> should have
|
1052
|
+
Siamese -> Siamese
|
1053
|
+
Sienese -> Sienese
|
1054
|
+
Sikkimese -> Sikkimese
|
1055
|
+
silex -> silices
|
1056
|
+
simplex -> simplexes|simplices
|
1057
|
+
Singhalese -> Singhalese
|
1058
|
+
Sinhalese -> Sinhalese
|
1059
|
+
sinus -> sinuses|sinus
|
1060
|
+
size -> sizes
|
1061
|
+
sizes -> size #VERB FORM
|
1062
|
+
smallpox -> smallpox
|
1063
|
+
Smith -> Smiths
|
1064
|
+
Sogdianese -> Sogdianese
|
1065
|
+
soliloquy -> soliloquies
|
1066
|
+
solo -> solos|soli
|
1067
|
+
soma -> somas|somata
|
1068
|
+
son of a bitch -> sons of bitches
|
1069
|
+
Sonaman -> Sonamans
|
1070
|
+
soprano -> sopranos|soprani
|
1071
|
+
sought -> sought
|
1072
|
+
species -> species
|
1073
|
+
spectrum -> spectrums|spectra
|
1074
|
+
speculum -> speculums|specula
|
1075
|
+
spent -> spent
|
1076
|
+
spermatozoon -> spermatozoa
|
1077
|
+
sphinx -> sphinxes|sphinges
|
1078
|
+
stadium -> stadiums|stadia
|
1079
|
+
stamen -> stamens|stamina
|
1080
|
+
status -> statuses|status
|
1081
|
+
stereo -> stereos
|
1082
|
+
stigma -> stigmas|stigmata
|
1083
|
+
stimulus -> stimuli
|
1084
|
+
stoma -> stomas|stomata
|
1085
|
+
storey -> storeys
|
1086
|
+
story -> stories
|
1087
|
+
stratum -> strata
|
1088
|
+
strife -> strifes
|
1089
|
+
stylo -> stylos
|
1090
|
+
stylus -> styluses|styli
|
1091
|
+
succubus -> succubuses|succubi
|
1092
|
+
Sudanese -> Sudanese
|
1093
|
+
suffix -> suffixes
|
1094
|
+
Sundanese -> Sundanese
|
1095
|
+
superior -> superiors
|
1096
|
+
Surgeon-General -> Surgeons-General
|
1097
|
+
surplus -> surpluses
|
1098
|
+
Swahilese -> Swahilese
|
1099
|
+
swine -> swines|swine
|
1100
|
+
syringe -> syringes
|
1101
|
+
syrinx -> syrinxes|syringes
|
1102
|
+
tableau -> tableaus|tableaux
|
1103
|
+
Tacoman -> Tacomans
|
1104
|
+
tattoo -> tattoos
|
1105
|
+
tempo -> tempos|tempi
|
1106
|
+
Tenggerese -> Tenggerese
|
1107
|
+
testatrix -> testatrixes|testatrices
|
1108
|
+
testes -> testes
|
1109
|
+
testis -> testes
|
1110
|
+
that -> those
|
1111
|
+
their -> their # POSSESSIVE FORM (GENDER-INCLUSIVE)
|
1112
|
+
themself -> themselves # ugly but gaining currency
|
1113
|
+
they -> they # for indeterminate gender
|
1114
|
+
this -> these
|
1115
|
+
thought -> thought # VERB FORM
|
1116
|
+
thought -> thoughts # NOUN FORM
|
1117
|
+
Times -> Timeses
|
1118
|
+
Timorese -> Timorese
|
1119
|
+
Tirolese -> Tirolese
|
1120
|
+
to her -> to them
|
1121
|
+
to herself -> to themselves
|
1122
|
+
to him -> to them
|
1123
|
+
to himself -> to themselves
|
1124
|
+
to it -> to them
|
1125
|
+
to it -> to them # ACCUSATIVE
|
1126
|
+
to itself -> to themselves
|
1127
|
+
to me -> to us
|
1128
|
+
to myself -> to ourselves
|
1129
|
+
to them -> to them # for indeterminate gender
|
1130
|
+
to themself -> to themselves # ugly but gaining currency
|
1131
|
+
to you -> to you
|
1132
|
+
to yourself -> to yourselves
|
1133
|
+
Tocharese -> Tocharese
|
1134
|
+
tomato -> tomatoes
|
1135
|
+
Tonkinese -> Tonkinese
|
1136
|
+
tonsillitis -> tonsillitises
|
1137
|
+
tooth -> teeth
|
1138
|
+
Torinese -> Torinese
|
1139
|
+
torus -> toruses|tori
|
1140
|
+
trapezium -> trapeziums|trapezia
|
1141
|
+
trauma -> traumas|traumata
|
1142
|
+
travois -> travois
|
1143
|
+
trellis -> trellises
|
1144
|
+
tries -> try
|
1145
|
+
trilby -> trilbys
|
1146
|
+
trousers -> trousers
|
1147
|
+
trousseau -> trousseaus|trousseaux
|
1148
|
+
trout -> trout
|
1149
|
+
try -> tries
|
1150
|
+
tuna -> tuna
|
1151
|
+
turf -> turfs|turves
|
1152
|
+
Tyrolese -> Tyrolese
|
1153
|
+
ultimatum -> ultimatums|ultimata
|
1154
|
+
umbilicus -> umbilicuses|umbilici
|
1155
|
+
umbra -> umbras|umbrae
|
1156
|
+
uterus -> uteruses|uteri
|
1157
|
+
vacuum -> vacuums|vacua
|
1158
|
+
vellum -> vellums
|
1159
|
+
velum -> velums|vela
|
1160
|
+
Vermontese -> Vermontese
|
1161
|
+
Veronese -> Veronese
|
1162
|
+
vertebra -> vertebrae
|
1163
|
+
vertex -> vertexes|vertices
|
1164
|
+
Viennese -> Viennese
|
1165
|
+
Vietnamese -> Vietnamese
|
1166
|
+
virus -> viruses
|
1167
|
+
vixen -> vixens
|
1168
|
+
vortex -> vortexes|vortices
|
1169
|
+
walrus -> walruses
|
1170
|
+
was -> were
|
1171
|
+
was faced with -> were faced with
|
1172
|
+
was hoping -> were hoping
|
1173
|
+
Wenchowese -> Wenchowese
|
1174
|
+
were -> were
|
1175
|
+
were found -> were found
|
1176
|
+
wharf -> wharves
|
1177
|
+
whiting -> whiting
|
1178
|
+
Whitmanese -> Whitmanese
|
1179
|
+
wife -> wives
|
1180
|
+
wildebeest -> wildebeests|wildebeest
|
1181
|
+
will -> will # VERB FORM
|
1182
|
+
will -> wills # NOUN FORM
|
1183
|
+
will eat -> will eat # VERB FORM
|
1184
|
+
wills -> will # VERB FORM
|
1185
|
+
wish -> wishes
|
1186
|
+
with him -> with them
|
1187
|
+
with it -> with them # ACCUSATIVE
|
1188
|
+
wolf -> wolves
|
1189
|
+
woman -> women
|
1190
|
+
woman of substance -> women of substance
|
1191
|
+
woman's -> women's # POSSESSIVE FORM
|
1192
|
+
woodlouse -> woodlice
|
1193
|
+
Yakiman -> Yakimans
|
1194
|
+
Yengeese -> Yengeese
|
1195
|
+
Yokohaman -> Yokohamans
|
1196
|
+
you -> you
|
1197
|
+
your -> your # POSSESSIVE FORM
|
1198
|
+
yourself -> yourselves
|
1199
|
+
Yuman -> Yumans
|
1200
|
+
Yunnanese -> Yunnanese
|
1201
|
+
zoon -> zoa
|
1202
|
+
|
1203
|
+
an A.B.C
|
1204
|
+
an AI
|
1205
|
+
an AGE
|
1206
|
+
an agendum
|
1207
|
+
an aide-de-camp
|
1208
|
+
an albino
|
1209
|
+
a B.L.T. sandwich
|
1210
|
+
a BMW
|
1211
|
+
a BLANK
|
1212
|
+
a bacterium
|
1213
|
+
a Burmese restaurant
|
1214
|
+
a C.O.
|
1215
|
+
a CCD
|
1216
|
+
a COLON
|
1217
|
+
a cameo
|
1218
|
+
a CAPITAL
|
1219
|
+
a D.S.M.
|
1220
|
+
a DNR
|
1221
|
+
a DINNER
|
1222
|
+
a dynamo
|
1223
|
+
an E.K.G.
|
1224
|
+
an ECG
|
1225
|
+
an EGG
|
1226
|
+
an embryo
|
1227
|
+
an erratum
|
1228
|
+
a eucalyptus
|
1229
|
+
an Euler number
|
1230
|
+
a eulogy
|
1231
|
+
a euphemism
|
1232
|
+
a euphoria
|
1233
|
+
a ewe
|
1234
|
+
a ewer
|
1235
|
+
an extremum
|
1236
|
+
an eye
|
1237
|
+
an F.B.I. agent
|
1238
|
+
an FSM
|
1239
|
+
a FACT
|
1240
|
+
a FAQ
|
1241
|
+
an F.A.Q.
|
1242
|
+
a fish
|
1243
|
+
a G-string
|
1244
|
+
a GSM phone
|
1245
|
+
a GOD
|
1246
|
+
a genus
|
1247
|
+
a Governor General
|
1248
|
+
an H-Bomb
|
1249
|
+
an H.M.S Ark Royal
|
1250
|
+
an HSL colour space
|
1251
|
+
a HAL 9000
|
1252
|
+
an H.A.L. 9000
|
1253
|
+
a has-been
|
1254
|
+
a height
|
1255
|
+
an heir
|
1256
|
+
a honed blade
|
1257
|
+
an honest man
|
1258
|
+
a honeymoon
|
1259
|
+
an honorarium
|
1260
|
+
an honorary degree
|
1261
|
+
an honoree
|
1262
|
+
an honorific
|
1263
|
+
a Hough transform
|
1264
|
+
a hound
|
1265
|
+
an hour
|
1266
|
+
an hourglass
|
1267
|
+
a houri
|
1268
|
+
a house
|
1269
|
+
an I.O.U.
|
1270
|
+
an IQ
|
1271
|
+
an IDEA
|
1272
|
+
an inferno
|
1273
|
+
an Inspector General
|
1274
|
+
a jumbo
|
1275
|
+
a knife
|
1276
|
+
an L.E.D.
|
1277
|
+
a LED
|
1278
|
+
an LCD
|
1279
|
+
a lady in waiting
|
1280
|
+
a leaf
|
1281
|
+
an M.I.A.
|
1282
|
+
a MIASMA
|
1283
|
+
an MTV channel
|
1284
|
+
a Major General
|
1285
|
+
an N.C.O.
|
1286
|
+
an NCO
|
1287
|
+
a NATO country
|
1288
|
+
a note
|
1289
|
+
an O.K.
|
1290
|
+
an OK
|
1291
|
+
an OLE
|
1292
|
+
an octavo
|
1293
|
+
an octopus
|
1294
|
+
an okay
|
1295
|
+
a once-and-future-king
|
1296
|
+
an oncologist
|
1297
|
+
a one night stand
|
1298
|
+
an onerous task
|
1299
|
+
an opera
|
1300
|
+
an optimum
|
1301
|
+
an opus
|
1302
|
+
an ox
|
1303
|
+
a Ph.D.
|
1304
|
+
a PET
|
1305
|
+
a P.E.T. scan
|
1306
|
+
a plateau
|
1307
|
+
a quantum
|
1308
|
+
an R.S.V.P.
|
1309
|
+
an RSVP
|
1310
|
+
a REST
|
1311
|
+
a reindeer
|
1312
|
+
an S.O.S.
|
1313
|
+
a SUM
|
1314
|
+
an SST
|
1315
|
+
a salmon
|
1316
|
+
a T.N.T. bomb
|
1317
|
+
a TNT bomb
|
1318
|
+
a TENT
|
1319
|
+
a thought
|
1320
|
+
a tomato
|
1321
|
+
a U-boat
|
1322
|
+
a U.F.O.
|
1323
|
+
a UFO
|
1324
|
+
a ubiquity
|
1325
|
+
a unicorn
|
1326
|
+
an unidentified flying object
|
1327
|
+
a uniform
|
1328
|
+
a unimodal system
|
1329
|
+
an unimpressive record
|
1330
|
+
an uninformed opinion
|
1331
|
+
an uninvited guest
|
1332
|
+
a union
|
1333
|
+
a uniplex
|
1334
|
+
a uniprocessor
|
1335
|
+
a unique opportunity
|
1336
|
+
a unisex hairdresser
|
1337
|
+
a unison
|
1338
|
+
a unit
|
1339
|
+
a unitarian
|
1340
|
+
a united front
|
1341
|
+
a unity
|
1342
|
+
a univalent bond
|
1343
|
+
a univariate statistic
|
1344
|
+
a universe
|
1345
|
+
an unordered meal
|
1346
|
+
a uranium atom
|
1347
|
+
an urban myth
|
1348
|
+
an urbane miss
|
1349
|
+
an urchin
|
1350
|
+
a urea detector
|
1351
|
+
a urethane monomer
|
1352
|
+
an urge
|
1353
|
+
an urgency
|
1354
|
+
a urinal
|
1355
|
+
an urn
|
1356
|
+
a usage
|
1357
|
+
a use
|
1358
|
+
an usher
|
1359
|
+
a usual suspect
|
1360
|
+
a usurer
|
1361
|
+
a usurper
|
1362
|
+
a utensil
|
1363
|
+
a utility
|
1364
|
+
an utmost urgency
|
1365
|
+
a utopia
|
1366
|
+
an utterance
|
1367
|
+
a V.I.P.
|
1368
|
+
a VIPER
|
1369
|
+
a viper
|
1370
|
+
an X-ray
|
1371
|
+
an X.O.
|
1372
|
+
a XYLAPHONE
|
1373
|
+
an XY chromosome
|
1374
|
+
a xenophobe
|
1375
|
+
a Y-shaped pipe
|
1376
|
+
a Y.Z. plane
|
1377
|
+
a YMCA
|
1378
|
+
an YBLENT eye
|
1379
|
+
an yblent eye
|
1380
|
+
an yclad body
|
1381
|
+
a yellowing
|
1382
|
+
a yield
|
1383
|
+
a youth
|
1384
|
+
a youth
|
1385
|
+
an ypsiliform junction
|
1386
|
+
an yttrium atom
|
1387
|
+
a zoo
|
1388
|
+
|
1389
|
+
__END_DATA__
|