odin 0.0.4

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.
Files changed (64) hide show
  1. data/.gitignore +19 -0
  2. data/.rvmrc +1 -0
  3. data/.travis.yml +2 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +26 -0
  6. data/HISTORY.md +102 -0
  7. data/LICENSE.md +10 -0
  8. data/README.md +46 -0
  9. data/Rakefile +69 -0
  10. data/app/controllers/grammar_checker.rb +51 -0
  11. data/check_grammar.rb +24 -0
  12. data/configure +9 -0
  13. data/images/atn_diagram.graffle +0 -0
  14. data/images/atn_diagram.pdf +0 -0
  15. data/images/odin-ff6.gif +0 -0
  16. data/lang/en/adjectives.rb +388 -0
  17. data/lang/en/atn.rb +102 -0
  18. data/lang/en/closed_class_words.rb +206 -0
  19. data/lang/en/data.rb +1086 -0
  20. data/lang/en/noun_inflections.rb +76 -0
  21. data/lang/en/noun_inflector_test_cases.rb +235 -0
  22. data/lang/en/pronoun_inflector_test_cases.rb +14 -0
  23. data/lang/en/verbs.rb +648 -0
  24. data/lang/iso639.rb +405 -0
  25. data/lib/array.rb +15 -0
  26. data/lib/atn.rb +82 -0
  27. data/lib/augmented_transition_network.rb +146 -0
  28. data/lib/dumper.rb +44 -0
  29. data/lib/noun_inflector.rb +283 -0
  30. data/lib/odin.rb +3 -0
  31. data/lib/odin/version.rb +3 -0
  32. data/lib/parts_of_speech.rb +402 -0
  33. data/lib/star.rb +23 -0
  34. data/lib/string.rb +99 -0
  35. data/lib/string_bracketing.rb +100 -0
  36. data/lib/word.rb +69 -0
  37. data/lib/word_net.rb +265 -0
  38. data/odin.gemspec +27 -0
  39. data/simple_atn/README.md +45 -0
  40. data/simple_atn/Rakefile +9 -0
  41. data/simple_atn/array.rb +15 -0
  42. data/simple_atn/augmented_transition_network.rb +146 -0
  43. data/simple_atn/augmented_transition_network_test.rb +113 -0
  44. data/simple_atn/english.rb +161 -0
  45. data/simple_atn/string.rb +63 -0
  46. data/test/fixtures/alice.txt +3594 -0
  47. data/test/fixtures/art.txt +7 -0
  48. data/test/fixtures/both.txt +1 -0
  49. data/test/fixtures/existing.txt +0 -0
  50. data/test/fixtures/existing.txt.checked.html +0 -0
  51. data/test/fixtures/grammar_checker.css +4 -0
  52. data/test/fixtures/grammatical.txt +1 -0
  53. data/test/fixtures/ungrammatical.txt +1 -0
  54. data/test/functional/grammar_checker_test.rb +64 -0
  55. data/test/integration/en/word_and_noun_inflector_test.rb +29 -0
  56. data/test/test_helper.rb +82 -0
  57. data/test/unit/atn_test.rb +240 -0
  58. data/test/unit/noun_inflector_test.rb +249 -0
  59. data/test/unit/pronoun_inflector_test.rb +17 -0
  60. data/test/unit/star_test.rb +24 -0
  61. data/test/unit/string_bracketing_test_module.rb +70 -0
  62. data/test/unit/string_test.rb +92 -0
  63. data/test/unit/word_test.rb +15 -0
  64. metadata +223 -0
@@ -0,0 +1,76 @@
1
+ NounInflector.inflections do |inflect|
2
+ inflect.plural(/$/, 's')
3
+ inflect.plural(/s$/i, 's')
4
+ inflect.plural(/(ax|test)is$/i, '\1es')
5
+ inflect.plural(/(cact|octop|vir)us$/i, '\1i')
6
+ inflect.plural(/(alias|status)$/i, '\1es')
7
+ inflect.plural(/(bu)s$/i, '\1ses')
8
+ inflect.plural(/(buffal|tomat)o$/i, '\1oes')
9
+ inflect.plural(/([ti])um$/i, '\1a')
10
+ inflect.plural(/sis$/i, 'ses')
11
+ inflect.plural(/(?:([^f])fe|([lr])f)$/i, '\1\2ves')
12
+ inflect.plural(/(hive)$/i, '\1s')
13
+ inflect.plural(/([^aeiouy]|qu)y$/i, '\1ies')
14
+ inflect.plural(/(x|ch|ss|sh)$/i, '\1es')
15
+ inflect.plural(/(matr|vert|ind)(?:ix|ex)$/i, '\1ices')
16
+ inflect.plural(/([m|l])ouse$/i, '\1ice')
17
+ inflect.plural(/^(ox)$/i, '\1en')
18
+ inflect.plural(/(quiz)$/i, '\1zes')
19
+
20
+ inflect.singular(/s$/i, '')
21
+ inflect.singular(/(n)ews$/i, '\1ews')
22
+ inflect.singular(/([ti])a$/i, '\1um')
23
+ inflect.singular(/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i, '\1\2sis')
24
+ inflect.singular(/(^analy)ses$/i, '\1sis')
25
+ inflect.singular(/([^f])ves$/i, '\1fe')
26
+ inflect.singular(/(hive)s$/i, '\1')
27
+ inflect.singular(/(tive)s$/i, '\1')
28
+ inflect.singular(/([lr])ves$/i, '\1f')
29
+ inflect.singular(/([^aeiouy]|qu)ies$/i, '\1y')
30
+ inflect.singular(/(s)eries$/i, '\1eries')
31
+ inflect.singular(/(m)ovies$/i, '\1ovie')
32
+ inflect.singular(/(x|ch|ss|sh)es$/i, '\1')
33
+ inflect.singular(/([m|l])ice$/i, '\1ouse')
34
+ inflect.singular(/(bus)es$/i, '\1')
35
+ inflect.singular(/(o)es$/i, '\1')
36
+ inflect.singular(/(shoe)s$/i, '\1')
37
+ inflect.singular(/(cris|ax|test)es$/i, '\1is')
38
+ inflect.singular(/(octop|vir)i$/i, '\1us')
39
+ inflect.singular(/(alias|status)es$/i, '\1')
40
+ inflect.singular(/^(ox)en/i, '\1')
41
+ inflect.singular(/(vert|ind)ices$/i, '\1ex')
42
+ inflect.singular(/(matr)ices$/i, '\1ix')
43
+ inflect.singular(/(quiz)zes$/i, '\1')
44
+
45
+ inflect.irregular('person', 'people')
46
+ inflect.irregular('man', 'men')
47
+ inflect.irregular('child', 'children')
48
+ inflect.irregular('sex', 'sexes')
49
+ inflect.irregular('move', 'moves')
50
+ inflect.irregular('cow', 'kine')
51
+
52
+ # Additions from the English module
53
+ inflect.irregular('cactus' , 'cacti')
54
+ inflect.irregular('Swiss' , 'Swiss')
55
+ inflect.irregular('life' , 'lives')
56
+ inflect.irregular('wife' , 'wives')
57
+ inflect.irregular('goose' , 'geese')
58
+ inflect.irregular('criterion' , 'criteria')
59
+ inflect.irregular('alias' , 'aliases')
60
+ inflect.irregular('status' , 'statuses')
61
+ inflect.irregular('axis' , 'axes')
62
+ inflect.irregular('crisis' , 'crises')
63
+ inflect.irregular('testis' , 'testes')
64
+ inflect.irregular('potato' , 'potatoes')
65
+ inflect.irregular('tomato' , 'tomatoes')
66
+ inflect.irregular('buffalo' , 'buffaloes')
67
+ inflect.irregular('torpedo' , 'torpedoes')
68
+ inflect.irregular('index' , 'indices')
69
+ inflect.irregular('mouse' , 'mice')
70
+ inflect.irregular('louse' , 'lice')
71
+ inflect.irregular('thesis' , 'theses')
72
+ inflect.irregular('thief' , 'thieves')
73
+ inflect.irregular('analysis' , 'analyses')
74
+
75
+ inflect.uncountable(%w(equipment homework moose information rice money species series fish sheep hovercraft))
76
+ end
@@ -0,0 +1,235 @@
1
+ module NounInflectorTestCases
2
+ SingularToPlural = {
3
+ "search" => "searches",
4
+ "switch" => "switches",
5
+ "fix" => "fixes",
6
+ "box" => "boxes",
7
+ "process" => "processes",
8
+ "address" => "addresses",
9
+ "case" => "cases",
10
+ "stack" => "stacks",
11
+ "wish" => "wishes",
12
+ "fish" => "fish",
13
+
14
+ "category" => "categories",
15
+ "query" => "queries",
16
+ "ability" => "abilities",
17
+ "agency" => "agencies",
18
+ "movie" => "movies",
19
+
20
+ "archive" => "archives",
21
+
22
+ "index" => "indices",
23
+
24
+ "wife" => "wives",
25
+ "safe" => "saves",
26
+ "half" => "halves",
27
+
28
+ "move" => "moves",
29
+
30
+ "salesperson" => "salespeople",
31
+ "person" => "people",
32
+
33
+ "spokesman" => "spokesmen",
34
+ "man" => "men",
35
+ "woman" => "women",
36
+
37
+ "basis" => "bases",
38
+ "diagnosis" => "diagnoses",
39
+ "diagnosis_a" => "diagnosis_as",
40
+
41
+ "datum" => "data",
42
+ "medium" => "media",
43
+ "analysis" => "analyses",
44
+
45
+ "node_child" => "node_children",
46
+ "child" => "children",
47
+
48
+ "experience" => "experiences",
49
+ "day" => "days",
50
+
51
+ "comment" => "comments",
52
+ "foobar" => "foobars",
53
+ "newsletter" => "newsletters",
54
+
55
+ "old_news" => "old_news",
56
+ "news" => "news",
57
+
58
+ "series" => "series",
59
+ "species" => "species",
60
+
61
+ "quiz" => "quizzes",
62
+
63
+ "perspective" => "perspectives",
64
+
65
+ "ox" => "oxen",
66
+ "photo" => "photos",
67
+ "buffalo" => "buffaloes",
68
+ "tomato" => "tomatoes",
69
+ "dwarf" => "dwarves",
70
+ "elf" => "elves",
71
+ "information" => "information",
72
+ "equipment" => "equipment",
73
+ "bus" => "buses",
74
+ "status" => "statuses",
75
+ "status_code" => "status_codes",
76
+ "mouse" => "mice",
77
+
78
+ "louse" => "lice",
79
+ "house" => "houses",
80
+ "octopus" => "octopi",
81
+ "virus" => "viri",
82
+ "alias" => "aliases",
83
+ "portfolio" => "portfolios",
84
+
85
+ "vertex" => "vertices",
86
+ "matrix" => "matrices",
87
+ "matrix_fu" => "matrix_fus",
88
+
89
+ "axis" => "axes",
90
+ "testis" => "testes",
91
+ "crisis" => "crises",
92
+
93
+ "rice" => "rice",
94
+ "shoe" => "shoes",
95
+
96
+ "horse" => "horses",
97
+ "prize" => "prizes",
98
+ "edge" => "edges",
99
+
100
+ "cow" => "kine"
101
+ }
102
+
103
+ PluralToSingular = SingularToPlural.invert
104
+
105
+ CamelToUnderscore = {
106
+ "Product" => "product",
107
+ "SpecialGuest" => "special_guest",
108
+ "ApplicationController" => "application_controller",
109
+ "Area51Controller" => "area51_controller"
110
+ }
111
+
112
+ UnderscoreToLowerCamel = {
113
+ "product" => "product",
114
+ "special_guest" => "specialGuest",
115
+ "application_controller" => "applicationController",
116
+ "area51_controller" => "area51Controller"
117
+ }
118
+
119
+ CamelToUnderscoreWithoutReverse = {
120
+ "HTMLTidy" => "html_tidy",
121
+ "HTMLTidyGenerator" => "html_tidy_generator",
122
+ "FreeBSD" => "free_bsd",
123
+ "HTML" => "html",
124
+ }
125
+
126
+ CamelWithModuleToUnderscoreWithSlash = {
127
+ "Admin::Product" => "admin/product",
128
+ "Users::Commission::Department" => "users/commission/department",
129
+ "UsersSection::CommissionDepartment" => "users_section/commission_department",
130
+ }
131
+
132
+ ClassNameToForeignKeyWithUnderscore = {
133
+ "Person" => "person_id",
134
+ "MyApplication::Billing::Account" => "account_id"
135
+ }
136
+
137
+ ClassNameToForeignKeyWithoutUnderscore = {
138
+ "Person" => "personid",
139
+ "MyApplication::Billing::Account" => "accountid"
140
+ }
141
+
142
+ ClassNameToTableName = {
143
+ "PrimarySpokesman" => "primary_spokesmen",
144
+ "NodeChild" => "node_children"
145
+ }
146
+
147
+ UnderscoreToHuman = {
148
+ "employee_salary" => "Employee salary",
149
+ "employee_id" => "Employee",
150
+ "underground" => "Underground"
151
+ }
152
+
153
+ MixtureToTitleCase = {
154
+ 'active_record' => 'Active Record',
155
+ 'ActiveRecord' => 'Active Record',
156
+ 'action web service' => 'Action Web Service',
157
+ 'Action Web Service' => 'Action Web Service',
158
+ 'Action web service' => 'Action Web Service',
159
+ 'actionwebservice' => 'Actionwebservice',
160
+ 'Actionwebservice' => 'Actionwebservice'
161
+ }
162
+
163
+ OrdinalNumbers = {
164
+ "0" => "0th",
165
+ "1" => "1st",
166
+ "2" => "2nd",
167
+ "3" => "3rd",
168
+ "4" => "4th",
169
+ "5" => "5th",
170
+ "6" => "6th",
171
+ "7" => "7th",
172
+ "8" => "8th",
173
+ "9" => "9th",
174
+ "10" => "10th",
175
+ "11" => "11th",
176
+ "12" => "12th",
177
+ "13" => "13th",
178
+ "14" => "14th",
179
+ "20" => "20th",
180
+ "21" => "21st",
181
+ "22" => "22nd",
182
+ "23" => "23rd",
183
+ "24" => "24th",
184
+ "100" => "100th",
185
+ "101" => "101st",
186
+ "102" => "102nd",
187
+ "103" => "103rd",
188
+ "104" => "104th",
189
+ "110" => "110th",
190
+ "111" => "111th",
191
+ "112" => "112th",
192
+ "113" => "113th",
193
+ "1000" => "1000th",
194
+ "1001" => "1001st"
195
+ }
196
+
197
+ UnderscoresToDashes = {
198
+ "street" => "street",
199
+ "street_address" => "street-address",
200
+ "person_street_address" => "person-street-address"
201
+ }
202
+
203
+ Irregularities = {
204
+ 'person' => 'people',
205
+ 'man' => 'men',
206
+ 'child' => 'children',
207
+ 'sex' => 'sexes',
208
+ 'move' => 'moves',
209
+ # Additions from the English module
210
+ 'Swiss' => 'Swiss',
211
+ 'life' => 'lives',
212
+ 'wife' => 'wives',
213
+ 'virus' => 'viri',
214
+ 'octopus' => 'octopi',
215
+ 'cactus' => 'cacti',
216
+ 'goose' => 'geese',
217
+ 'criterion' => 'criteria',
218
+ 'alias' => 'aliases',
219
+ 'status' => 'statuses',
220
+ 'axis' => 'axes',
221
+ 'crisis' => 'crises',
222
+ 'testis' => 'testes',
223
+ 'potato' => 'potatoes',
224
+ 'tomato' => 'tomatoes',
225
+ 'buffalo' => 'buffaloes',
226
+ 'torpedo' => 'torpedoes',
227
+ 'matrix' => 'matrices',
228
+ 'index' => 'indices',
229
+ 'mouse' => 'mice',
230
+ 'louse' => 'lice',
231
+ 'thesis' => 'theses',
232
+ 'thief' => 'thieves',
233
+ 'analysis' => 'analyses'
234
+ }
235
+ end
@@ -0,0 +1,14 @@
1
+ module PronounInflectorTestCases
2
+ SingularToPlural = {
3
+ "search" => "searches",
4
+ "switch" => "switches",
5
+ "fix" => "fixes",
6
+ "box" => "boxes",
7
+ "process" => "processes",
8
+ "address" => "addresses",
9
+ "case" => "cases",
10
+ "stack" => "stacks",
11
+ "wish" => "wishes",
12
+ "fish" => "fish"
13
+ }
14
+ end
@@ -0,0 +1,648 @@
1
+ # A basic list.
2
+ # From http://www.englishclub.com/vocabulary/regular-verbs-list.htm
3
+
4
+ module CachedVerbs
5
+ @@RegularVerbs = %w{
6
+ accept
7
+ add
8
+ admire
9
+ admit
10
+ advise
11
+ afford
12
+ agree
13
+ alert
14
+ allow
15
+ amuse
16
+ analyse
17
+ announce
18
+ annoy
19
+ answer
20
+ apologise
21
+ appear
22
+ applaud
23
+ appreciate
24
+ approve
25
+ argue
26
+ arrange
27
+ arrest
28
+ arrive
29
+ ask
30
+ attach
31
+ attack
32
+ attempt
33
+ attend
34
+ attract
35
+ avoid
36
+ back
37
+ bake
38
+ balance
39
+ ban
40
+ bang
41
+ bare
42
+ bat
43
+ bathe
44
+ battle
45
+ beam
46
+ beg
47
+ behave
48
+ belong
49
+ bleach
50
+ bless
51
+ blind
52
+ blink
53
+ blot
54
+ blush
55
+ boast
56
+ boil
57
+ bolt
58
+ bore
59
+ borrow
60
+ bounce
61
+ bow
62
+ brake
63
+ brake
64
+ branch
65
+ breathe
66
+ bruise
67
+ brush
68
+ bubble
69
+ bump
70
+ burn
71
+ bury
72
+ buzz
73
+ calculate
74
+ call
75
+ camp
76
+ care
77
+ carry
78
+ carve
79
+ cause
80
+ challenge
81
+ change
82
+ charge
83
+ chase
84
+ cheat
85
+ check
86
+ cheer
87
+ chew
88
+ choke
89
+ chop
90
+ claim
91
+ clap
92
+ clean
93
+ clear
94
+ clip
95
+ close
96
+ coach
97
+ coil
98
+ collect
99
+ colour
100
+ comb
101
+ command
102
+ communicate
103
+ compare
104
+ compete
105
+ complain
106
+ complete
107
+ concentrate
108
+ concern
109
+ confess
110
+ confuse
111
+ connect
112
+ consider
113
+ consist
114
+ contain
115
+ continue
116
+ copy
117
+ correct
118
+ cough
119
+ count
120
+ cover
121
+ crack
122
+ crash
123
+ crawl
124
+ cross
125
+ crush
126
+ cry
127
+ cure
128
+ curl
129
+ curve
130
+ cycle
131
+ dam
132
+ damage
133
+ dance
134
+ dare
135
+ decay
136
+ deceive
137
+ decide
138
+ decorate
139
+ delay
140
+ delight
141
+ deliver
142
+ depend
143
+ describe
144
+ desert
145
+ deserve
146
+ destroy
147
+ detect
148
+ develop
149
+ disagree
150
+ disappear
151
+ disapprove
152
+ disarm
153
+ discover
154
+ dislike
155
+ divide
156
+ double
157
+ doubt
158
+ drag
159
+ drain
160
+ dream
161
+ dress
162
+ drip
163
+ drop
164
+ drown
165
+ drum
166
+ dry
167
+ dust
168
+ earn
169
+ educate
170
+ embarrass
171
+ employ
172
+ empty
173
+ encourage
174
+ end
175
+ enjoy
176
+ enter
177
+ entertain
178
+ escape
179
+ examine
180
+ excite
181
+ excuse
182
+ exercise
183
+ exist
184
+ expand
185
+ expect
186
+ explain
187
+ explode
188
+ extend
189
+ face
190
+ fade
191
+ fail
192
+ fancy
193
+ fasten
194
+ fax
195
+ fear
196
+ fence
197
+ fetch
198
+ file
199
+ fill
200
+ film
201
+ fire
202
+ fit
203
+ flap
204
+ flash
205
+ float
206
+ flood
207
+ flow
208
+ flower
209
+ fold
210
+ follow
211
+ fool
212
+ force
213
+ form
214
+ found
215
+ frame
216
+ frighten
217
+ fry
218
+ gather
219
+ gaze
220
+ glow
221
+ glue
222
+ grab
223
+ grate
224
+ grease
225
+ greet
226
+ grin
227
+ grip
228
+ groan
229
+ guarantee
230
+ guard
231
+ guess
232
+ guide
233
+ hammer
234
+ hand
235
+ handle
236
+ hang
237
+ happen
238
+ harass
239
+ harm
240
+ hate
241
+ haunt
242
+ head
243
+ heal
244
+ heap
245
+ heat
246
+ help
247
+ hook
248
+ hop
249
+ hope
250
+ hover
251
+ hug
252
+ hum
253
+ hunt
254
+ hurry
255
+ identify
256
+ ignore
257
+ imagine
258
+ impress
259
+ improve
260
+ include
261
+ increase
262
+ influence
263
+ inform
264
+ inject
265
+ injure
266
+ instruct
267
+ intend
268
+ interest
269
+ interfere
270
+ interrupt
271
+ introduce
272
+ invent
273
+ invite
274
+ irritate
275
+ itch
276
+ jail
277
+ jam
278
+ jog
279
+ join
280
+ joke
281
+ judge
282
+ juggle
283
+ jump
284
+ kick
285
+ kill
286
+ kiss
287
+ kneel
288
+ knit
289
+ knock
290
+ knot
291
+ label
292
+ land
293
+ last
294
+ laugh
295
+ launch
296
+ learn
297
+ level
298
+ license
299
+ lick
300
+ lie
301
+ lighten
302
+ like
303
+ list
304
+ listen
305
+ live
306
+ load
307
+ lock
308
+ long
309
+ look
310
+ love
311
+ manage
312
+ march
313
+ mark
314
+ marry
315
+ match
316
+ mate
317
+ matter
318
+ measure
319
+ meddle
320
+ melt
321
+ memorise
322
+ mend
323
+ mess
324
+ up
325
+ milk
326
+ mine
327
+ miss
328
+ mix
329
+ moan
330
+ moor
331
+ mourn
332
+ muddle
333
+ mug
334
+ multiply
335
+ murder
336
+ nail
337
+ name
338
+ need
339
+ nest
340
+ nod
341
+ note
342
+ notice
343
+ number
344
+ obey
345
+ object
346
+ observe
347
+ obtain
348
+ occur
349
+ offend
350
+ offer
351
+ open
352
+ order
353
+ overflow
354
+ owe
355
+ own
356
+ pack
357
+ paddle
358
+ paint
359
+ park
360
+ part
361
+ pass
362
+ paste
363
+ pat
364
+ pause
365
+ peck
366
+ pedal
367
+ peel
368
+ peep
369
+ perform
370
+ permit
371
+ phone
372
+ pick
373
+ pinch
374
+ pine
375
+ place
376
+ plan
377
+ plant
378
+ play
379
+ please
380
+ plug
381
+ point
382
+ poke
383
+ polish
384
+ pop
385
+ possess
386
+ post
387
+ pour
388
+ practise
389
+ pray
390
+ preach
391
+ precede
392
+ prefer
393
+ prepare
394
+ present
395
+ preserve
396
+ press
397
+ pretend
398
+ prevent
399
+ prick
400
+ print
401
+ produce
402
+ program
403
+ promise
404
+ protect
405
+ provide
406
+ pull
407
+ pump
408
+ punch
409
+ puncture
410
+ punish
411
+ push
412
+ question
413
+ queue
414
+ race
415
+ radiate
416
+ rain
417
+ raise
418
+ reach
419
+ realise
420
+ receive
421
+ recognise
422
+ record
423
+ reduce
424
+ reflect
425
+ refuse
426
+ regret
427
+ reign
428
+ reject
429
+ rejoice
430
+ relax
431
+ release
432
+ rely
433
+ remain
434
+ remember
435
+ remind
436
+ remove
437
+ repair
438
+ repeat
439
+ replace
440
+ reply
441
+ report
442
+ reproduce
443
+ request
444
+ rescue
445
+ retire
446
+ return
447
+ rhyme
448
+ rinse
449
+ risk
450
+ rob
451
+ rock
452
+ roll
453
+ rot
454
+ rub
455
+ ruin
456
+ rule
457
+ rush
458
+ sack
459
+ sail
460
+ satisfy
461
+ save
462
+ saw
463
+ scare
464
+ scatter
465
+ scold
466
+ scorch
467
+ scrape
468
+ scratch
469
+ scream
470
+ screw
471
+ scribble
472
+ scrub
473
+ seal
474
+ separate
475
+ serve
476
+ settle
477
+ shade
478
+ share
479
+ shave
480
+ shelter
481
+ shiver
482
+ shock
483
+ shop
484
+ shrug
485
+ sigh
486
+ sign
487
+ signal
488
+ sin
489
+ sip
490
+ ski
491
+ skip
492
+ slap
493
+ slip
494
+ slow
495
+ smash
496
+ smell
497
+ smile
498
+ smoke
499
+ snatch
500
+ sneeze
501
+ sniff
502
+ snore
503
+ snow
504
+ soak
505
+ soothe
506
+ sound
507
+ spare
508
+ spark
509
+ sparkle
510
+ spell
511
+ spill
512
+ spoil
513
+ spot
514
+ spray
515
+ sprout
516
+ squash
517
+ squeak
518
+ squeal
519
+ squeeze
520
+ stain
521
+ stamp
522
+ stare
523
+ start
524
+ stay
525
+ steer
526
+ step
527
+ stir
528
+ stitch
529
+ stop
530
+ store
531
+ strap
532
+ strengthen
533
+ stretch
534
+ strip
535
+ stroke
536
+ stuff
537
+ subtract
538
+ succeed
539
+ suck
540
+ suffer
541
+ suggest
542
+ suit
543
+ supply
544
+ support
545
+ suppose
546
+ surprise
547
+ surround
548
+ suspect
549
+ suspend
550
+ talk
551
+ tame
552
+ tap
553
+ taste
554
+ tease
555
+ tempt
556
+ terrify
557
+ test
558
+ thank
559
+ thaw
560
+ tick
561
+ tickle
562
+ tie
563
+ time
564
+ tip
565
+ tire
566
+ touch
567
+ tour
568
+ tow
569
+ trace
570
+ trade
571
+ train
572
+ transport
573
+ trap
574
+ travel
575
+ treat
576
+ tremble
577
+ trick
578
+ trip
579
+ trot
580
+ trust
581
+ try
582
+ tug
583
+ tumble
584
+ turn
585
+ twist
586
+ type
587
+ undress
588
+ unfasten
589
+ unite
590
+ unlock
591
+ unpack
592
+ untidy
593
+ use
594
+ vanish
595
+ visit
596
+ wail
597
+ wait
598
+ walk
599
+ wander
600
+ want
601
+ warm
602
+ warn
603
+ wash
604
+ waste
605
+ watch
606
+ water
607
+ wave
608
+ weigh
609
+ welcome
610
+ whine
611
+ whip
612
+ whirl
613
+ whisper
614
+ whistle
615
+ wink
616
+ wipe
617
+ wobble
618
+ wonder
619
+ work
620
+ worry
621
+ wrap
622
+ wreck
623
+ wrestle
624
+ wriggle
625
+ x-ray
626
+ yawn
627
+ yell
628
+ zip
629
+ zoom
630
+ }
631
+
632
+ @@RegularVerbs << 'loves' # TODO remove
633
+ end
634
+
635
+ # Temorarily removed:
636
+ #
637
+ # bomb
638
+ # book
639
+ # man
640
+ # telephone
641
+ # trouble
642
+ # box
643
+ # fix
644
+ # move
645
+ # search
646
+ # shoe
647
+ # wish
648
+ # switch