Linguistics 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Artistic +127 -0
- data/ChangeLog +444 -0
- data/MANIFEST +19 -0
- data/README +178 -0
- data/README.english +245 -0
- data/TODO +17 -0
- data/experiments/randobjlist.rb +34 -0
- data/install.rb +154 -0
- data/lib/linguistics/en/infinitive.rb +1149 -0
- data/lib/linguistics/en/linkparser.rb +142 -0
- data/lib/linguistics/en/wordnet.rb +253 -0
- data/lib/linguistics/en.rb +1694 -0
- data/lib/linguistics/iso639.rb +456 -0
- data/lib/linguistics.rb +368 -0
- data/redist/crosscase.rb +298 -0
- data/test.rb +110 -0
- data/tests/en/conjunction.tests.rb +114 -0
- data/tests/en/inflect.tests.rb +1378 -0
- data/tests/lingtestcase.rb +239 -0
- data/tests/use.tests.rb +99 -0
- data/utils.rb +689 -0
- metadata +58 -0
@@ -0,0 +1,1378 @@
|
|
1
|
+
#!/usr/bin/ruby -w
|
2
|
+
#
|
3
|
+
# Unit test for English inflection
|
4
|
+
# $Id: inflect.tests.rb,v 1.2 2003/09/11 05:04:04 deveiant Exp $
|
5
|
+
#
|
6
|
+
# Copyright (c) 2003 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 {|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
|
+
}.each {|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
|
+
debugMsg "Skipped test data line '#{line.chomp}'"
|
305
|
+
end
|
306
|
+
}
|
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_0040_ordinalNumbers
|
367
|
+
printTestHeader "English: Numbers to ordinals"
|
368
|
+
rval = nil
|
369
|
+
|
370
|
+
Ordinals[:numbers].each do |input,output|
|
371
|
+
op = "Ordinal for #{input.inspect}"
|
372
|
+
assert_nothing_raised( op ) { rval = input.en.ordinal }
|
373
|
+
assert_kind_of String, rval, op
|
374
|
+
assert_equal output, rval, op
|
375
|
+
end
|
376
|
+
end
|
377
|
+
|
378
|
+
|
379
|
+
def test_0045_ordinalWords
|
380
|
+
printTestHeader "English: Number words to ordinals"
|
381
|
+
rval = nil
|
382
|
+
|
383
|
+
Ordinals[:numbers].each do |input,output|
|
384
|
+
op = "Ordinal for #{input.inspect}"
|
385
|
+
assert_nothing_raised( op ) { rval = input.en.ordinal }
|
386
|
+
assert_kind_of String, rval, op
|
387
|
+
assert_equal output, rval, op
|
388
|
+
end
|
389
|
+
end
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
#
|
394
|
+
# Common routines for auto-generated test methods
|
395
|
+
#
|
396
|
+
|
397
|
+
def assertPlural( singular, plural, altplural, comment )
|
398
|
+
rval, pl_noun, pl_verb, pl, pl_val, altpl_val = [nil] * 6
|
399
|
+
|
400
|
+
isNv = false
|
401
|
+
case comment
|
402
|
+
when /verb/i
|
403
|
+
isNv = 'verb'
|
404
|
+
when /noun/i
|
405
|
+
isNv = 'noun'
|
406
|
+
end
|
407
|
+
|
408
|
+
op = "Pluralizing '#{singular}': "
|
409
|
+
assert_nothing_raised( op + "plural verb" ) {
|
410
|
+
pl_verb = singular.en.plural_verb
|
411
|
+
}
|
412
|
+
assert_nothing_raised( op + "plural noun" ) {
|
413
|
+
pl_noun = singular.en.plural_noun
|
414
|
+
}
|
415
|
+
assert_nothing_raised( op + "plural" ) {
|
416
|
+
pl = singular.en.plural
|
417
|
+
}
|
418
|
+
|
419
|
+
if !altplural.nil? && !altplural.empty?
|
420
|
+
begin
|
421
|
+
assert_nothing_raised( op + "classical" ) {
|
422
|
+
Linguistics::classical = true
|
423
|
+
altpl_val = singular.en.plural
|
424
|
+
}
|
425
|
+
ensure
|
426
|
+
Linguistics::classical = false
|
427
|
+
end
|
428
|
+
end
|
429
|
+
|
430
|
+
pl_val = isNv ? (isNv == "noun" ? pl_noun : pl_verb) : pl
|
431
|
+
|
432
|
+
assert_equal plural, pl_val, "Plural of '#{singular}'"
|
433
|
+
assert_equal altplural, altpl_val,
|
434
|
+
"Classical plural of '#{singular}'" unless
|
435
|
+
altplural.nil? or altplural.empty?
|
436
|
+
end
|
437
|
+
|
438
|
+
|
439
|
+
def assertArticle( article, word )
|
440
|
+
rval = nil
|
441
|
+
op = "Indefinite article for '#{word}'"
|
442
|
+
assert_nothing_raised( op ) {
|
443
|
+
rval = word.en.a
|
444
|
+
}
|
445
|
+
assert_equal "#{article} #{word}", rval, op
|
446
|
+
end
|
447
|
+
|
448
|
+
|
449
|
+
end
|
450
|
+
|
451
|
+
|
452
|
+
### Dataset is from Lingua::EN::Inflect's test suite.
|
453
|
+
__END__
|
454
|
+
|
455
|
+
a -> some # INDEFINITE ARTICLE
|
456
|
+
a -> as # NOUN FORM
|
457
|
+
A.C.R.O.N.Y.M. -> A.C.R.O.N.Y.M.s
|
458
|
+
abscissa -> abscissas|abscissae
|
459
|
+
Achinese -> Achinese
|
460
|
+
acropolis -> acropolises
|
461
|
+
adieu -> adieus|adieux
|
462
|
+
adjutant general -> adjutant generals
|
463
|
+
aegis -> aegises
|
464
|
+
afflatus -> afflatuses
|
465
|
+
afreet -> afreets|afreeti
|
466
|
+
afrit -> afrits|afriti
|
467
|
+
agendum -> agenda
|
468
|
+
aide-de-camp -> aides-de-camp
|
469
|
+
Alabaman -> Alabamans
|
470
|
+
albino -> albinos
|
471
|
+
album -> albums
|
472
|
+
Alfurese -> Alfurese
|
473
|
+
alga -> algae
|
474
|
+
alias -> aliases
|
475
|
+
alto -> altos|alti
|
476
|
+
alumna -> alumnae
|
477
|
+
alumnus -> alumni
|
478
|
+
alveolus -> alveoli
|
479
|
+
am -> are
|
480
|
+
am going -> are going
|
481
|
+
ambassador-at-large -> ambassadors-at-large
|
482
|
+
Amboinese -> Amboinese
|
483
|
+
Americanese -> Americanese
|
484
|
+
amoeba -> amoebas|amoebae
|
485
|
+
Amoyese -> Amoyese
|
486
|
+
an -> some # INDEFINITE ARTICLE
|
487
|
+
analysis -> analyses
|
488
|
+
anathema -> anathemas|anathemata
|
489
|
+
Andamanese -> Andamanese
|
490
|
+
Angolese -> Angolese
|
491
|
+
Annamese -> Annamese
|
492
|
+
antenna -> antennas|antennae
|
493
|
+
anus -> anuses
|
494
|
+
apex -> apexes|apices
|
495
|
+
apex's -> apexes'|apices' # POSSESSIVE FORM
|
496
|
+
aphelion -> aphelia
|
497
|
+
apparatus -> apparatuses|apparatus
|
498
|
+
appendix -> appendixes|appendices
|
499
|
+
apple -> apples
|
500
|
+
aquarium -> aquariums|aquaria
|
501
|
+
Aragonese -> Aragonese
|
502
|
+
Arakanese -> Arakanese
|
503
|
+
archipelago -> archipelagos
|
504
|
+
are -> are
|
505
|
+
are made -> are made
|
506
|
+
armadillo -> armadillos
|
507
|
+
arpeggio -> arpeggios
|
508
|
+
arthritis -> arthritises
|
509
|
+
asbestos -> asbestoses
|
510
|
+
asparagus -> asparaguses
|
511
|
+
ass -> asses
|
512
|
+
Assamese -> Assamese
|
513
|
+
asylum -> asylums
|
514
|
+
asyndeton -> asyndeta
|
515
|
+
at it -> at them # ACCUSATIVE
|
516
|
+
ate -> ate
|
517
|
+
atlas -> atlases
|
518
|
+
attorney general -> attorneys general
|
519
|
+
attorney of record -> attorneys of record
|
520
|
+
aurora -> auroras|aurorae
|
521
|
+
aviatrix -> aviatrixes|aviatrices
|
522
|
+
aviatrix's -> aviatrixes'|aviatrices'
|
523
|
+
Avignonese -> Avignonese
|
524
|
+
axe -> axes
|
525
|
+
axis -> axes
|
526
|
+
Azerbaijanese -> Azerbaijanese
|
527
|
+
bacillus -> bacilli
|
528
|
+
bacterium -> bacteria
|
529
|
+
Bahaman -> Bahamans
|
530
|
+
Balinese -> Balinese
|
531
|
+
bamboo -> bamboos
|
532
|
+
banjo -> banjoes
|
533
|
+
bass -> basses # INSTRUMENT, NOT FISH
|
534
|
+
basso -> bassos|bassi
|
535
|
+
bathos -> bathoses
|
536
|
+
beau -> beaus|beaux
|
537
|
+
beef -> beefs|beeves
|
538
|
+
beneath it -> beneath them # ACCUSATIVE
|
539
|
+
Bengalese -> Bengalese
|
540
|
+
bent -> bent # VERB FORM
|
541
|
+
bent -> bents # NOUN FORM
|
542
|
+
Bernese -> Bernese
|
543
|
+
Bhutanese -> Bhutanese
|
544
|
+
bias -> biases
|
545
|
+
biceps -> biceps
|
546
|
+
bison -> bisons|bison
|
547
|
+
Bolognese -> Bolognese
|
548
|
+
bonus -> bonuses
|
549
|
+
Borghese -> Borghese
|
550
|
+
boss -> bosses
|
551
|
+
Bostonese -> Bostonese
|
552
|
+
box -> boxes
|
553
|
+
boy -> boys
|
554
|
+
bravo -> bravoes
|
555
|
+
bream -> bream
|
556
|
+
breeches -> breeches
|
557
|
+
bride-to-be -> brides-to-be
|
558
|
+
britches -> britches
|
559
|
+
bronchitis -> bronchitises
|
560
|
+
bronchus -> bronchi
|
561
|
+
brother -> brothers|brethren
|
562
|
+
brother's -> brothers'|brethren's
|
563
|
+
buffalo -> buffaloes|buffalo
|
564
|
+
Buginese -> Buginese
|
565
|
+
buoy -> buoys
|
566
|
+
bureau -> bureaus|bureaux
|
567
|
+
Burman -> Burmans
|
568
|
+
Burmese -> Burmese
|
569
|
+
bursitis -> bursitises
|
570
|
+
bus -> buses
|
571
|
+
buzz -> buzzes
|
572
|
+
buzzes -> buzz # VERB FORM
|
573
|
+
by it -> by them # ACCUSATIVE
|
574
|
+
caddis -> caddises
|
575
|
+
cake -> cakes
|
576
|
+
Calabrese -> Calabrese
|
577
|
+
calf -> calves
|
578
|
+
callus -> calluses
|
579
|
+
Camaldolese -> Camaldolese
|
580
|
+
cameo -> cameos
|
581
|
+
campus -> campuses
|
582
|
+
can -> cans # NOUN FORM
|
583
|
+
can -> can # VERB FORM (all pers.)
|
584
|
+
candelabrum -> candelabra
|
585
|
+
cannabis -> cannabises
|
586
|
+
canto -> cantos
|
587
|
+
Cantonese -> Cantonese
|
588
|
+
cantus -> cantus
|
589
|
+
canvas -> canvases
|
590
|
+
CAPITAL -> CAPITALS
|
591
|
+
carcinoma -> carcinomas|carcinomata
|
592
|
+
care -> cares
|
593
|
+
cargo -> cargoes
|
594
|
+
Carlylese -> Carlylese
|
595
|
+
carp -> carp
|
596
|
+
Cassinese -> Cassinese
|
597
|
+
cat -> cats
|
598
|
+
catfish -> catfish
|
599
|
+
Celanese -> Celanese
|
600
|
+
Ceylonese -> Ceylonese
|
601
|
+
chairman -> chairmen
|
602
|
+
chamois -> chamois
|
603
|
+
chaos -> chaoses
|
604
|
+
chapeau -> chapeaus|chapeaux
|
605
|
+
charisma -> charismas|charismata
|
606
|
+
chases -> chase
|
607
|
+
chassis -> chassis
|
608
|
+
chateau -> chateaus|chateaux
|
609
|
+
cherub -> cherubs|cherubim
|
610
|
+
chickenpox -> chickenpox
|
611
|
+
chief -> chiefs
|
612
|
+
child -> children
|
613
|
+
Chinese -> Chinese
|
614
|
+
chorus -> choruses
|
615
|
+
church -> churches
|
616
|
+
cicatrix -> cicatrixes|cicatrices
|
617
|
+
circus -> circuses
|
618
|
+
class -> classes
|
619
|
+
classes -> class # VERB FORM
|
620
|
+
clippers -> clippers
|
621
|
+
clitoris -> clitorises|clitorides
|
622
|
+
cod -> cod
|
623
|
+
codex -> codices
|
624
|
+
coitus -> coitus
|
625
|
+
commando -> commandos
|
626
|
+
compendium -> compendiums|compendia
|
627
|
+
Congoese -> Congoese
|
628
|
+
Congolese -> Congolese
|
629
|
+
conspectus -> conspectuses
|
630
|
+
contralto -> contraltos|contralti
|
631
|
+
contretemps -> contretemps
|
632
|
+
conundrum -> conundrums
|
633
|
+
corps -> corps
|
634
|
+
corpus -> corpuses|corpora
|
635
|
+
cortex -> cortexes|cortices
|
636
|
+
cosmos -> cosmoses
|
637
|
+
court martial -> courts martial
|
638
|
+
cow -> cows|kine
|
639
|
+
cranium -> craniums|crania
|
640
|
+
crescendo -> crescendos
|
641
|
+
criterion -> criteria
|
642
|
+
curriculum -> curriculums|curricula
|
643
|
+
dais -> daises
|
644
|
+
data point -> data points
|
645
|
+
datum -> data
|
646
|
+
debris -> debris
|
647
|
+
decorum -> decorums
|
648
|
+
deer -> deer
|
649
|
+
delphinium -> delphiniums
|
650
|
+
desideratum -> desiderata
|
651
|
+
diabetes -> diabetes
|
652
|
+
dictum -> dictums|dicta
|
653
|
+
did -> did
|
654
|
+
did need -> did need
|
655
|
+
digitalis -> digitalises
|
656
|
+
dingo -> dingoes
|
657
|
+
diploma -> diplomas|diplomata
|
658
|
+
discus -> discuses
|
659
|
+
dish -> dishes
|
660
|
+
ditto -> dittos
|
661
|
+
djinn -> djinn
|
662
|
+
does -> do
|
663
|
+
dog -> dogs
|
664
|
+
dogma -> dogmas|dogmata
|
665
|
+
dominatrix -> dominatrixes|dominatrices
|
666
|
+
domino -> dominoes
|
667
|
+
Dongolese -> Dongolese
|
668
|
+
drama -> dramas|dramata
|
669
|
+
drum -> drums
|
670
|
+
dwarf -> dwarves
|
671
|
+
dynamo -> dynamos
|
672
|
+
edema -> edemas|edemata
|
673
|
+
eland -> elands|eland
|
674
|
+
elf -> elves
|
675
|
+
elk -> elks|elk
|
676
|
+
embryo -> embryos
|
677
|
+
emporium -> emporiums|emporia
|
678
|
+
encephalitis -> encephalitises
|
679
|
+
enconium -> enconiums|enconia
|
680
|
+
enema -> enemas|enemata
|
681
|
+
enigma -> enigmas|enigmata
|
682
|
+
ephemeris -> ephemerides
|
683
|
+
epidermis -> epidermises
|
684
|
+
erratum -> errata
|
685
|
+
ethos -> ethoses
|
686
|
+
eucalyptus -> eucalyptuses
|
687
|
+
extremum -> extrema
|
688
|
+
eyas -> eyases
|
689
|
+
factotum -> factotums
|
690
|
+
Faroese -> Faroese
|
691
|
+
fauna -> faunas|faunae
|
692
|
+
fax -> faxes
|
693
|
+
Ferrarese -> Ferrarese
|
694
|
+
ferry -> ferries
|
695
|
+
fetus -> fetuses
|
696
|
+
fiance -> fiances
|
697
|
+
fiancee -> fiancees
|
698
|
+
fiasco -> fiascos
|
699
|
+
fish -> fish
|
700
|
+
fizz -> fizzes
|
701
|
+
flamingo -> flamingoes
|
702
|
+
flora -> floras|florae
|
703
|
+
flounder -> flounder
|
704
|
+
focus -> focuses|foci
|
705
|
+
foetus -> foetuses
|
706
|
+
folio -> folios
|
707
|
+
Foochowese -> Foochowese
|
708
|
+
foot -> feet
|
709
|
+
foot's -> feet's # POSSESSIVE FORM
|
710
|
+
foramen -> foramens|foramina
|
711
|
+
formula -> formulas|formulae
|
712
|
+
forum -> forums
|
713
|
+
fought -> fought
|
714
|
+
fox -> foxes
|
715
|
+
from him -> from them
|
716
|
+
from it -> from them # ACCUSATIVE
|
717
|
+
fungus -> funguses|fungi
|
718
|
+
Gabunese -> Gabunese
|
719
|
+
gallows -> gallows
|
720
|
+
ganglion -> ganglions|ganglia
|
721
|
+
gas -> gases
|
722
|
+
gateau -> gateaus|gateaux
|
723
|
+
gave -> gave
|
724
|
+
generalissimo -> generalissimos
|
725
|
+
Genevese -> Genevese
|
726
|
+
genie -> genies|genii
|
727
|
+
genius -> geniuses|genii
|
728
|
+
Genoese -> Genoese
|
729
|
+
genus -> genera
|
730
|
+
German -> Germans
|
731
|
+
ghetto -> ghettos
|
732
|
+
Gilbertese -> Gilbertese
|
733
|
+
glottis -> glottises
|
734
|
+
Goanese -> Goanese
|
735
|
+
goose -> geese
|
736
|
+
Governor General -> Governors General
|
737
|
+
goy -> goys|goyim
|
738
|
+
graffiti -> graffiti
|
739
|
+
graffito -> graffiti
|
740
|
+
guano -> guanos
|
741
|
+
guardsman -> guardsmen
|
742
|
+
Guianese -> Guianese
|
743
|
+
gumma -> gummas|gummata
|
744
|
+
gymnasium -> gymnasiums|gymnasia
|
745
|
+
had -> had
|
746
|
+
had thought -> had thought
|
747
|
+
Hainanese -> Hainanese
|
748
|
+
handkerchief -> handkerchiefs
|
749
|
+
Hararese -> Hararese
|
750
|
+
Harlemese -> Harlemese
|
751
|
+
harmonium -> harmoniums
|
752
|
+
has -> have
|
753
|
+
has become -> have become
|
754
|
+
has been -> have been
|
755
|
+
has-been -> has-beens
|
756
|
+
Havanese -> Havanese
|
757
|
+
have -> have
|
758
|
+
have conceded -> have conceded
|
759
|
+
he -> they
|
760
|
+
headquarters -> headquarters
|
761
|
+
Heavenese -> Heavenese
|
762
|
+
helix -> helices
|
763
|
+
hepatitis -> hepatitises
|
764
|
+
her -> them # PRONOUN
|
765
|
+
her -> their # POSSESSIVE ADJ
|
766
|
+
hero -> heroes
|
767
|
+
herpes -> herpes
|
768
|
+
hers -> theirs # POSSESSIVE NOUN
|
769
|
+
herself -> themselves
|
770
|
+
hiatus -> hiatuses|hiatus
|
771
|
+
highlight -> highlights
|
772
|
+
hijinks -> hijinks
|
773
|
+
him -> them
|
774
|
+
himself -> themselves
|
775
|
+
hippopotamus -> hippopotamuses|hippopotami
|
776
|
+
Hiroshiman -> Hiroshimans
|
777
|
+
his -> their # POSSESSIVE ADJ
|
778
|
+
his -> theirs # POSSESSIVE NOUN
|
779
|
+
honorarium -> honorariums|honoraria
|
780
|
+
hoof -> hoofs|hooves
|
781
|
+
Hoosierese -> Hoosierese
|
782
|
+
Hottentotese -> Hottentotese
|
783
|
+
house -> houses
|
784
|
+
housewife -> housewives
|
785
|
+
hubris -> hubrises
|
786
|
+
human -> humans
|
787
|
+
Hunanese -> Hunanese
|
788
|
+
hydra -> hydras|hydrae
|
789
|
+
hyperbaton -> hyperbata
|
790
|
+
hyperbola -> hyperbolas|hyperbolae
|
791
|
+
I -> we
|
792
|
+
ibis -> ibises
|
793
|
+
ignoramus -> ignoramuses
|
794
|
+
impetus -> impetuses|impetus
|
795
|
+
incubus -> incubuses|incubi
|
796
|
+
index -> indexes|indices
|
797
|
+
Indochinese -> Indochinese
|
798
|
+
inferno -> infernos
|
799
|
+
innings -> innings
|
800
|
+
Inspector General -> Inspectors General
|
801
|
+
interregnum -> interregnums|interregna
|
802
|
+
iris -> irises|irides
|
803
|
+
is -> are
|
804
|
+
is eaten -> are eaten
|
805
|
+
it -> they # NOMINATIVE
|
806
|
+
its -> their # POSSESSIVE FORM
|
807
|
+
itself -> themselves
|
808
|
+
jackanapes -> jackanapes
|
809
|
+
Japanese -> Japanese
|
810
|
+
Javanese -> Javanese
|
811
|
+
Jerry -> Jerrys
|
812
|
+
jerry -> jerries
|
813
|
+
jinx -> jinxes
|
814
|
+
jinxes -> jinx # VERB FORM
|
815
|
+
Johnsonese -> Johnsonese
|
816
|
+
Jones -> Joneses
|
817
|
+
jumbo -> jumbos
|
818
|
+
Kanarese -> Kanarese
|
819
|
+
Kiplingese -> Kiplingese
|
820
|
+
knife -> knives # NOUN FORM
|
821
|
+
knife -> knife # VERB FORM (1st/2nd pers.)
|
822
|
+
knifes -> knife # VERB FORM (3rd pers.)
|
823
|
+
Kongoese -> Kongoese
|
824
|
+
Kongolese -> Kongolese
|
825
|
+
lacuna -> lacunas|lacunae
|
826
|
+
lady in waiting -> ladies in waiting
|
827
|
+
Lapponese -> Lapponese
|
828
|
+
larynx -> larynxes|larynges
|
829
|
+
latex -> latexes|latices
|
830
|
+
leaf -> leaf # VERB FORM (1st/2nd pers.)
|
831
|
+
leaf -> leaves # NOUN FORM
|
832
|
+
leafs -> leaf # VERB FORM (3rd pers.)
|
833
|
+
Lebanese -> Lebanese
|
834
|
+
lemma -> lemmas|lemmata
|
835
|
+
lens -> lenses
|
836
|
+
Leonese -> Leonese
|
837
|
+
lick of the cat -> licks of the cat
|
838
|
+
Lieutenant General -> Lieutenant Generals
|
839
|
+
life -> lives
|
840
|
+
Liman -> Limans
|
841
|
+
lingo -> lingos
|
842
|
+
loaf -> loaves
|
843
|
+
locus -> loci
|
844
|
+
Londonese -> Londonese
|
845
|
+
Lorrainese -> Lorrainese
|
846
|
+
lothario -> lotharios
|
847
|
+
louse -> lice
|
848
|
+
Lucchese -> Lucchese
|
849
|
+
lumbago -> lumbagos
|
850
|
+
lumen -> lumens|lumina
|
851
|
+
lustrum -> lustrums|lustra
|
852
|
+
lyceum -> lyceums
|
853
|
+
lymphoma -> lymphomas|lymphomata
|
854
|
+
lynx -> lynxes
|
855
|
+
Lyonese -> Lyonese
|
856
|
+
M.I.A. -> M.I.A.s
|
857
|
+
Macanese -> Macanese
|
858
|
+
Macassarese -> Macassarese
|
859
|
+
mackerel -> mackerel
|
860
|
+
made -> made
|
861
|
+
Madurese -> Madurese
|
862
|
+
magma -> magmas|magmata
|
863
|
+
magneto -> magnetos
|
864
|
+
Major General -> Major Generals
|
865
|
+
Malabarese -> Malabarese
|
866
|
+
Maltese -> Maltese
|
867
|
+
man -> men
|
868
|
+
mandamus -> mandamuses
|
869
|
+
manifesto -> manifestos
|
870
|
+
mantis -> mantises
|
871
|
+
marquis -> marquises
|
872
|
+
Mary -> Marys
|
873
|
+
maximum -> maximums|maxima
|
874
|
+
measles -> measles
|
875
|
+
medico -> medicos
|
876
|
+
medium -> mediums|media
|
877
|
+
medium's -> mediums'|media's
|
878
|
+
medusa -> medusas|medusae
|
879
|
+
memorandum -> memorandums|memoranda
|
880
|
+
meniscus -> menisci
|
881
|
+
Messinese -> Messinese
|
882
|
+
metamorphosis -> metamorphoses
|
883
|
+
metropolis -> metropolises
|
884
|
+
mews -> mews
|
885
|
+
miasma -> miasmas|miasmata
|
886
|
+
Milanese -> Milanese
|
887
|
+
milieu -> milieus|milieux
|
888
|
+
millenium -> milleniums|millenia
|
889
|
+
minimum -> minimums|minima
|
890
|
+
minx -> minxes
|
891
|
+
miss -> miss # VERB FORM (1st/2nd pers.)
|
892
|
+
miss -> misses # NOUN FORM
|
893
|
+
misses -> miss # VERB FORM (3rd pers.)
|
894
|
+
mittamus -> mittamuses
|
895
|
+
Modenese -> Modenese
|
896
|
+
momentum -> momentums|momenta
|
897
|
+
money -> monies
|
898
|
+
mongoose -> mongooses
|
899
|
+
moose -> mooses|moose
|
900
|
+
mother-in-law -> mothers-in-law
|
901
|
+
mouse -> mice
|
902
|
+
mumps -> mumps
|
903
|
+
Muranese -> Muranese
|
904
|
+
murex -> murices
|
905
|
+
museum -> museums
|
906
|
+
mustachio -> mustachios
|
907
|
+
my -> our # POSSESSIVE FORM
|
908
|
+
myself -> ourselves
|
909
|
+
mythos -> mythoi
|
910
|
+
Nakayaman -> Nakayamans
|
911
|
+
Nankingese -> Nankingese
|
912
|
+
nasturtium -> nasturtiums
|
913
|
+
Navarrese -> Navarrese
|
914
|
+
nebula -> nebulas|nebulae
|
915
|
+
Nepalese -> Nepalese
|
916
|
+
neuritis -> neuritises
|
917
|
+
neurosis -> neuroses
|
918
|
+
news -> news
|
919
|
+
nexus -> nexus
|
920
|
+
Niasese -> Niasese
|
921
|
+
Nicobarese -> Nicobarese
|
922
|
+
nimbus -> nimbuses|nimbi
|
923
|
+
Nipponese -> Nipponese
|
924
|
+
no -> noes
|
925
|
+
nostrum -> nostrums
|
926
|
+
noumenon -> noumena
|
927
|
+
nova -> novas|novae
|
928
|
+
nucleolus -> nucleoluses|nucleoli
|
929
|
+
nucleus -> nuclei
|
930
|
+
oaf -> oafs
|
931
|
+
octavo -> octavos
|
932
|
+
octopus -> octopuses|octopodes
|
933
|
+
oedema -> oedemas|oedemata
|
934
|
+
Oklahoman -> Oklahomans
|
935
|
+
omnibus -> omnibuses
|
936
|
+
on it -> on them # ACCUSATIVE
|
937
|
+
onus -> onuses
|
938
|
+
opera -> operas
|
939
|
+
optimum -> optimums|optima
|
940
|
+
opus -> opuses|opera
|
941
|
+
organon -> organa
|
942
|
+
ought to be -> ought to be # VERB (UNLIKE bride to be)
|
943
|
+
ovum -> ova
|
944
|
+
ox -> oxen
|
945
|
+
ox's -> oxen's # POSSESSIVE FORM
|
946
|
+
oxymoron -> oxymorons|oxymora
|
947
|
+
Panaman -> Panamans
|
948
|
+
parabola -> parabolas|parabolae
|
949
|
+
Parmese -> Parmese
|
950
|
+
pathos -> pathoses
|
951
|
+
pegasus -> pegasuses
|
952
|
+
Pekingese -> Pekingese
|
953
|
+
pelvis -> pelvises
|
954
|
+
pendulum -> pendulums
|
955
|
+
penis -> penises|penes
|
956
|
+
penumbra -> penumbras|penumbrae
|
957
|
+
perihelion -> perihelia
|
958
|
+
persona -> personae
|
959
|
+
petroleum -> petroleums
|
960
|
+
phalanx -> phalanxes|phalanges
|
961
|
+
PhD -> PhDs
|
962
|
+
phenomenon -> phenomena
|
963
|
+
philtrum -> philtrums
|
964
|
+
photo -> photos
|
965
|
+
phylum -> phylums|phyla
|
966
|
+
piano -> pianos|piani
|
967
|
+
Piedmontese -> Piedmontese
|
968
|
+
pincer -> pincers
|
969
|
+
pincers -> pincers
|
970
|
+
Pistoiese -> Pistoiese
|
971
|
+
plateau -> plateaus|plateaux
|
972
|
+
play -> plays
|
973
|
+
plexus -> plexuses|plexus
|
974
|
+
pliers -> pliers
|
975
|
+
plies -> ply # VERB FORM
|
976
|
+
polis -> polises
|
977
|
+
Polonese -> Polonese
|
978
|
+
pontifex -> pontifexes|pontifices
|
979
|
+
portmanteau -> portmanteaus|portmanteaux
|
980
|
+
Portuguese -> Portuguese
|
981
|
+
potato -> potatoes
|
982
|
+
pox -> pox
|
983
|
+
pragma -> pragmas|pragmata
|
984
|
+
premium -> premiums
|
985
|
+
prima donna -> prima donnas|prime donne
|
986
|
+
pro -> pros
|
987
|
+
proceedings -> proceedings
|
988
|
+
prolegomenon -> prolegomena
|
989
|
+
proof -> proofs
|
990
|
+
proof of concept -> proofs of concept
|
991
|
+
prosecutrix -> prosecutrixes|prosecutrices
|
992
|
+
prospectus -> prospectuses|prospectus
|
993
|
+
protozoan -> protozoans
|
994
|
+
protozoon -> protozoa
|
995
|
+
put -> put
|
996
|
+
quantum -> quantums|quanta
|
997
|
+
quartermaster general -> quartermasters general
|
998
|
+
quarto -> quartos
|
999
|
+
quorum -> quorums
|
1000
|
+
rabies -> rabies
|
1001
|
+
radius -> radiuses|radii
|
1002
|
+
radix -> radices
|
1003
|
+
rebus -> rebuses
|
1004
|
+
reindeer -> reindeer
|
1005
|
+
rhino -> rhinos
|
1006
|
+
rhinoceros -> rhinoceroses|rhinoceros
|
1007
|
+
Romagnese -> Romagnese
|
1008
|
+
Romanese -> Romanese
|
1009
|
+
romeo -> romeos
|
1010
|
+
roof -> roofs
|
1011
|
+
rostrum -> rostrums|rostra
|
1012
|
+
ruckus -> ruckuses
|
1013
|
+
salmon -> salmon
|
1014
|
+
Sangirese -> Sangirese
|
1015
|
+
sank -> sank
|
1016
|
+
Sarawakese -> Sarawakese
|
1017
|
+
sarcoma -> sarcomas|sarcomata
|
1018
|
+
sassafras -> sassafrases
|
1019
|
+
saw -> saws # NOUN FORM
|
1020
|
+
saw -> saw # VERB FORM (1st/2nd pers.)
|
1021
|
+
saws -> saw # VERB FORM (3rd pers.)
|
1022
|
+
scarf -> scarves
|
1023
|
+
schema -> schemas|schemata
|
1024
|
+
scissors -> scissors
|
1025
|
+
Scotsman -> Scotsmen
|
1026
|
+
sea-bass -> sea-bass
|
1027
|
+
self -> selves
|
1028
|
+
Selman -> Selmans
|
1029
|
+
Senegalese -> Senegalese
|
1030
|
+
seraph -> seraphs|seraphim
|
1031
|
+
series -> series
|
1032
|
+
shall eat -> shall eat
|
1033
|
+
Shavese -> Shavese
|
1034
|
+
Shawanese -> Shawanese
|
1035
|
+
she -> they
|
1036
|
+
sheaf -> sheaves
|
1037
|
+
shears -> shears
|
1038
|
+
sheep -> sheep
|
1039
|
+
shelf -> shelves
|
1040
|
+
should have -> should have
|
1041
|
+
Siamese -> Siamese
|
1042
|
+
Sienese -> Sienese
|
1043
|
+
Sikkimese -> Sikkimese
|
1044
|
+
silex -> silices
|
1045
|
+
simplex -> simplexes|simplices
|
1046
|
+
Singhalese -> Singhalese
|
1047
|
+
Sinhalese -> Sinhalese
|
1048
|
+
sinus -> sinuses|sinus
|
1049
|
+
size -> sizes
|
1050
|
+
sizes -> size #VERB FORM
|
1051
|
+
smallpox -> smallpox
|
1052
|
+
Smith -> Smiths
|
1053
|
+
Sogdianese -> Sogdianese
|
1054
|
+
soliloquy -> soliloquies
|
1055
|
+
solo -> solos|soli
|
1056
|
+
soma -> somas|somata
|
1057
|
+
son of a bitch -> sons of bitches
|
1058
|
+
Sonaman -> Sonamans
|
1059
|
+
soprano -> sopranos|soprani
|
1060
|
+
sought -> sought
|
1061
|
+
species -> species
|
1062
|
+
spectrum -> spectrums|spectra
|
1063
|
+
speculum -> speculums|specula
|
1064
|
+
spent -> spent
|
1065
|
+
spermatozoon -> spermatozoa
|
1066
|
+
sphinx -> sphinxes|sphinges
|
1067
|
+
stadium -> stadiums|stadia
|
1068
|
+
stamen -> stamens|stamina
|
1069
|
+
status -> statuses|status
|
1070
|
+
stereo -> stereos
|
1071
|
+
stigma -> stigmas|stigmata
|
1072
|
+
stimulus -> stimuli
|
1073
|
+
stoma -> stomas|stomata
|
1074
|
+
storey -> storeys
|
1075
|
+
story -> stories
|
1076
|
+
stratum -> strata
|
1077
|
+
strife -> strifes
|
1078
|
+
stylo -> stylos
|
1079
|
+
stylus -> styluses|styli
|
1080
|
+
succubus -> succubuses|succubi
|
1081
|
+
Sudanese -> Sudanese
|
1082
|
+
suffix -> suffixes
|
1083
|
+
Sundanese -> Sundanese
|
1084
|
+
superior -> superiors
|
1085
|
+
Surgeon-General -> Surgeons-General
|
1086
|
+
surplus -> surpluses
|
1087
|
+
Swahilese -> Swahilese
|
1088
|
+
swine -> swines|swine
|
1089
|
+
syringe -> syringes
|
1090
|
+
syrinx -> syrinxes|syringes
|
1091
|
+
tableau -> tableaus|tableaux
|
1092
|
+
Tacoman -> Tacomans
|
1093
|
+
tattoo -> tattoos
|
1094
|
+
tempo -> tempos|tempi
|
1095
|
+
Tenggerese -> Tenggerese
|
1096
|
+
testatrix -> testatrixes|testatrices
|
1097
|
+
testes -> testes
|
1098
|
+
testis -> testes
|
1099
|
+
that -> those
|
1100
|
+
their -> their # POSSESSIVE FORM (GENDER-INCLUSIVE)
|
1101
|
+
themself -> themselves # ugly but gaining currency
|
1102
|
+
they -> they # for indeterminate gender
|
1103
|
+
this -> these
|
1104
|
+
thought -> thought # VERB FORM
|
1105
|
+
thought -> thoughts # NOUN FORM
|
1106
|
+
Times -> Timeses
|
1107
|
+
Timorese -> Timorese
|
1108
|
+
Tirolese -> Tirolese
|
1109
|
+
to her -> to them
|
1110
|
+
to herself -> to themselves
|
1111
|
+
to him -> to them
|
1112
|
+
to himself -> to themselves
|
1113
|
+
to it -> to them
|
1114
|
+
to it -> to them # ACCUSATIVE
|
1115
|
+
to itself -> to themselves
|
1116
|
+
to me -> to us
|
1117
|
+
to myself -> to ourselves
|
1118
|
+
to them -> to them # for indeterminate gender
|
1119
|
+
to themself -> to themselves # ugly but gaining currency
|
1120
|
+
to you -> to you
|
1121
|
+
to yourself -> to yourselves
|
1122
|
+
Tocharese -> Tocharese
|
1123
|
+
tomato -> tomatoes
|
1124
|
+
Tonkinese -> Tonkinese
|
1125
|
+
tonsillitis -> tonsillitises
|
1126
|
+
tooth -> teeth
|
1127
|
+
Torinese -> Torinese
|
1128
|
+
torus -> toruses|tori
|
1129
|
+
trapezium -> trapeziums|trapezia
|
1130
|
+
trauma -> traumas|traumata
|
1131
|
+
travois -> travois
|
1132
|
+
trellis -> trellises
|
1133
|
+
tries -> try
|
1134
|
+
trilby -> trilbys
|
1135
|
+
trousers -> trousers
|
1136
|
+
trousseau -> trousseaus|trousseaux
|
1137
|
+
trout -> trout
|
1138
|
+
try -> tries
|
1139
|
+
tuna -> tuna
|
1140
|
+
turf -> turfs|turves
|
1141
|
+
Tyrolese -> Tyrolese
|
1142
|
+
ultimatum -> ultimatums|ultimata
|
1143
|
+
umbilicus -> umbilicuses|umbilici
|
1144
|
+
umbra -> umbras|umbrae
|
1145
|
+
uterus -> uteruses|uteri
|
1146
|
+
vacuum -> vacuums|vacua
|
1147
|
+
vellum -> vellums
|
1148
|
+
velum -> velums|vela
|
1149
|
+
Vermontese -> Vermontese
|
1150
|
+
Veronese -> Veronese
|
1151
|
+
vertebra -> vertebrae
|
1152
|
+
vertex -> vertexes|vertices
|
1153
|
+
Viennese -> Viennese
|
1154
|
+
Vietnamese -> Vietnamese
|
1155
|
+
virus -> viruses
|
1156
|
+
vixen -> vixens
|
1157
|
+
vortex -> vortexes|vortices
|
1158
|
+
walrus -> walruses
|
1159
|
+
was -> were
|
1160
|
+
was faced with -> were faced with
|
1161
|
+
was hoping -> were hoping
|
1162
|
+
Wenchowese -> Wenchowese
|
1163
|
+
were -> were
|
1164
|
+
were found -> were found
|
1165
|
+
wharf -> wharves
|
1166
|
+
whiting -> whiting
|
1167
|
+
Whitmanese -> Whitmanese
|
1168
|
+
wife -> wives
|
1169
|
+
wildebeest -> wildebeests|wildebeest
|
1170
|
+
will -> will # VERB FORM
|
1171
|
+
will -> wills # NOUN FORM
|
1172
|
+
will eat -> will eat # VERB FORM
|
1173
|
+
wills -> will # VERB FORM
|
1174
|
+
wish -> wishes
|
1175
|
+
with him -> with them
|
1176
|
+
with it -> with them # ACCUSATIVE
|
1177
|
+
wolf -> wolves
|
1178
|
+
woman -> women
|
1179
|
+
woman of substance -> women of substance
|
1180
|
+
woman's -> women's # POSSESSIVE FORM
|
1181
|
+
woodlouse -> woodlice
|
1182
|
+
Yakiman -> Yakimans
|
1183
|
+
Yengeese -> Yengeese
|
1184
|
+
Yokohaman -> Yokohamans
|
1185
|
+
you -> you
|
1186
|
+
your -> your # POSSESSIVE FORM
|
1187
|
+
yourself -> yourselves
|
1188
|
+
Yuman -> Yumans
|
1189
|
+
Yunnanese -> Yunnanese
|
1190
|
+
zoon -> zoa
|
1191
|
+
|
1192
|
+
an A.B.C
|
1193
|
+
an AI
|
1194
|
+
an AGE
|
1195
|
+
an agendum
|
1196
|
+
an aide-de-camp
|
1197
|
+
an albino
|
1198
|
+
a B.L.T. sandwich
|
1199
|
+
a BMW
|
1200
|
+
a BLANK
|
1201
|
+
a bacterium
|
1202
|
+
a Burmese restaurant
|
1203
|
+
a C.O.
|
1204
|
+
a CCD
|
1205
|
+
a COLON
|
1206
|
+
a cameo
|
1207
|
+
a CAPITAL
|
1208
|
+
a D.S.M.
|
1209
|
+
a DNR
|
1210
|
+
a DINNER
|
1211
|
+
a dynamo
|
1212
|
+
an E.K.G.
|
1213
|
+
an ECG
|
1214
|
+
an EGG
|
1215
|
+
an embryo
|
1216
|
+
an erratum
|
1217
|
+
a eucalyptus
|
1218
|
+
an Euler number
|
1219
|
+
a eulogy
|
1220
|
+
a euphemism
|
1221
|
+
a euphoria
|
1222
|
+
a ewe
|
1223
|
+
a ewer
|
1224
|
+
an extremum
|
1225
|
+
an eye
|
1226
|
+
an F.B.I. agent
|
1227
|
+
an FSM
|
1228
|
+
a FACT
|
1229
|
+
a FAQ
|
1230
|
+
an F.A.Q.
|
1231
|
+
a fish
|
1232
|
+
a G-string
|
1233
|
+
a GSM phone
|
1234
|
+
a GOD
|
1235
|
+
a genus
|
1236
|
+
a Governor General
|
1237
|
+
an H-Bomb
|
1238
|
+
an H.M.S Ark Royal
|
1239
|
+
an HSL colour space
|
1240
|
+
a HAL 9000
|
1241
|
+
an H.A.L. 9000
|
1242
|
+
a has-been
|
1243
|
+
a height
|
1244
|
+
an heir
|
1245
|
+
a honed blade
|
1246
|
+
an honest man
|
1247
|
+
a honeymoon
|
1248
|
+
an honorarium
|
1249
|
+
an honorary degree
|
1250
|
+
an honoree
|
1251
|
+
an honorific
|
1252
|
+
a Hough transform
|
1253
|
+
a hound
|
1254
|
+
an hour
|
1255
|
+
an hourglass
|
1256
|
+
a houri
|
1257
|
+
a house
|
1258
|
+
an I.O.U.
|
1259
|
+
an IQ
|
1260
|
+
an IDEA
|
1261
|
+
an inferno
|
1262
|
+
an Inspector General
|
1263
|
+
a jumbo
|
1264
|
+
a knife
|
1265
|
+
an L.E.D.
|
1266
|
+
a LED
|
1267
|
+
an LCD
|
1268
|
+
a lady in waiting
|
1269
|
+
a leaf
|
1270
|
+
an M.I.A.
|
1271
|
+
a MIASMA
|
1272
|
+
an MTV channel
|
1273
|
+
a Major General
|
1274
|
+
an N.C.O.
|
1275
|
+
an NCO
|
1276
|
+
a NATO country
|
1277
|
+
a note
|
1278
|
+
an O.K.
|
1279
|
+
an OK
|
1280
|
+
an OLE
|
1281
|
+
an octavo
|
1282
|
+
an octopus
|
1283
|
+
an okay
|
1284
|
+
a once-and-future-king
|
1285
|
+
an oncologist
|
1286
|
+
a one night stand
|
1287
|
+
an onerous task
|
1288
|
+
an opera
|
1289
|
+
an optimum
|
1290
|
+
an opus
|
1291
|
+
an ox
|
1292
|
+
a Ph.D.
|
1293
|
+
a PET
|
1294
|
+
a P.E.T. scan
|
1295
|
+
a plateau
|
1296
|
+
a quantum
|
1297
|
+
an R.S.V.P.
|
1298
|
+
an RSVP
|
1299
|
+
a REST
|
1300
|
+
a reindeer
|
1301
|
+
an S.O.S.
|
1302
|
+
a SUM
|
1303
|
+
an SST
|
1304
|
+
a salmon
|
1305
|
+
a T.N.T. bomb
|
1306
|
+
a TNT bomb
|
1307
|
+
a TENT
|
1308
|
+
a thought
|
1309
|
+
a tomato
|
1310
|
+
a U-boat
|
1311
|
+
a U.F.O.
|
1312
|
+
a UFO
|
1313
|
+
a ubiquity
|
1314
|
+
a unicorn
|
1315
|
+
an unidentified flying object
|
1316
|
+
a uniform
|
1317
|
+
a unimodal system
|
1318
|
+
an unimpressive record
|
1319
|
+
an uninformed opinion
|
1320
|
+
an uninvited guest
|
1321
|
+
a union
|
1322
|
+
a uniplex
|
1323
|
+
a uniprocessor
|
1324
|
+
a unique opportunity
|
1325
|
+
a unisex hairdresser
|
1326
|
+
a unison
|
1327
|
+
a unit
|
1328
|
+
a unitarian
|
1329
|
+
a united front
|
1330
|
+
a unity
|
1331
|
+
a univalent bond
|
1332
|
+
a univariate statistic
|
1333
|
+
a universe
|
1334
|
+
an unordered meal
|
1335
|
+
a uranium atom
|
1336
|
+
an urban myth
|
1337
|
+
an urbane miss
|
1338
|
+
an urchin
|
1339
|
+
a urea detector
|
1340
|
+
a urethane monomer
|
1341
|
+
an urge
|
1342
|
+
an urgency
|
1343
|
+
a urinal
|
1344
|
+
an urn
|
1345
|
+
a usage
|
1346
|
+
a use
|
1347
|
+
an usher
|
1348
|
+
a usual suspect
|
1349
|
+
a usurer
|
1350
|
+
a usurper
|
1351
|
+
a utensil
|
1352
|
+
a utility
|
1353
|
+
an utmost urgency
|
1354
|
+
a utopia
|
1355
|
+
an utterance
|
1356
|
+
a V.I.P.
|
1357
|
+
a VIPER
|
1358
|
+
a viper
|
1359
|
+
an X-ray
|
1360
|
+
an X.O.
|
1361
|
+
a XYLAPHONE
|
1362
|
+
an XY chromosome
|
1363
|
+
a xenophobe
|
1364
|
+
a Y-shaped pipe
|
1365
|
+
a Y.Z. plane
|
1366
|
+
a YMCA
|
1367
|
+
an YBLENT eye
|
1368
|
+
an yblent eye
|
1369
|
+
an yclad body
|
1370
|
+
a yellowing
|
1371
|
+
a yield
|
1372
|
+
a youth
|
1373
|
+
a youth
|
1374
|
+
an ypsiliform junction
|
1375
|
+
an yttrium atom
|
1376
|
+
a zoo
|
1377
|
+
|
1378
|
+
__END_DATA__
|