odin 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
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