odin 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +19 -0
- data/.rvmrc +1 -0
- data/.travis.yml +2 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +26 -0
- data/HISTORY.md +102 -0
- data/LICENSE.md +10 -0
- data/README.md +46 -0
- data/Rakefile +69 -0
- data/app/controllers/grammar_checker.rb +51 -0
- data/check_grammar.rb +24 -0
- data/configure +9 -0
- data/images/atn_diagram.graffle +0 -0
- data/images/atn_diagram.pdf +0 -0
- data/images/odin-ff6.gif +0 -0
- data/lang/en/adjectives.rb +388 -0
- data/lang/en/atn.rb +102 -0
- data/lang/en/closed_class_words.rb +206 -0
- data/lang/en/data.rb +1086 -0
- data/lang/en/noun_inflections.rb +76 -0
- data/lang/en/noun_inflector_test_cases.rb +235 -0
- data/lang/en/pronoun_inflector_test_cases.rb +14 -0
- data/lang/en/verbs.rb +648 -0
- data/lang/iso639.rb +405 -0
- data/lib/array.rb +15 -0
- data/lib/atn.rb +82 -0
- data/lib/augmented_transition_network.rb +146 -0
- data/lib/dumper.rb +44 -0
- data/lib/noun_inflector.rb +283 -0
- data/lib/odin.rb +3 -0
- data/lib/odin/version.rb +3 -0
- data/lib/parts_of_speech.rb +402 -0
- data/lib/star.rb +23 -0
- data/lib/string.rb +99 -0
- data/lib/string_bracketing.rb +100 -0
- data/lib/word.rb +69 -0
- data/lib/word_net.rb +265 -0
- data/odin.gemspec +27 -0
- data/simple_atn/README.md +45 -0
- data/simple_atn/Rakefile +9 -0
- data/simple_atn/array.rb +15 -0
- data/simple_atn/augmented_transition_network.rb +146 -0
- data/simple_atn/augmented_transition_network_test.rb +113 -0
- data/simple_atn/english.rb +161 -0
- data/simple_atn/string.rb +63 -0
- data/test/fixtures/alice.txt +3594 -0
- data/test/fixtures/art.txt +7 -0
- data/test/fixtures/both.txt +1 -0
- data/test/fixtures/existing.txt +0 -0
- data/test/fixtures/existing.txt.checked.html +0 -0
- data/test/fixtures/grammar_checker.css +4 -0
- data/test/fixtures/grammatical.txt +1 -0
- data/test/fixtures/ungrammatical.txt +1 -0
- data/test/functional/grammar_checker_test.rb +64 -0
- data/test/integration/en/word_and_noun_inflector_test.rb +29 -0
- data/test/test_helper.rb +82 -0
- data/test/unit/atn_test.rb +240 -0
- data/test/unit/noun_inflector_test.rb +249 -0
- data/test/unit/pronoun_inflector_test.rb +17 -0
- data/test/unit/star_test.rb +24 -0
- data/test/unit/string_bracketing_test_module.rb +70 -0
- data/test/unit/string_test.rb +92 -0
- data/test/unit/word_test.rb +15 -0
- 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
|
data/lang/en/verbs.rb
ADDED
@@ -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
|