lingo 1.8.2 → 1.8.3

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 (76) hide show
  1. data/ChangeLog +33 -0
  2. data/README +6 -5
  3. data/Rakefile +6 -4
  4. data/{lib/lingo/cachable.rb → bin/lingosrv} +30 -58
  5. data/bin/lingoweb +30 -0
  6. data/de.lang +2 -13
  7. data/en/lingo-irr.txt +266 -0
  8. data/en/lingo-wdn.txt +37319 -0
  9. data/en.lang +2 -15
  10. data/lib/lingo/app.rb +82 -0
  11. data/lib/lingo/attendee/abbreviator.rb +22 -26
  12. data/lib/lingo/attendee/debugger.rb +8 -4
  13. data/lib/lingo/attendee/decomposer.rb +0 -1
  14. data/lib/lingo/attendee/dehyphenizer.rb +2 -2
  15. data/lib/lingo/attendee/multi_worder.rb +20 -13
  16. data/lib/lingo/attendee/noneword_filter.rb +2 -7
  17. data/lib/lingo/attendee/sequencer.rb +43 -19
  18. data/lib/lingo/attendee/stemmer/porter.rb +2 -2
  19. data/lib/lingo/attendee/stemmer.rb +1 -1
  20. data/lib/lingo/attendee/synonymer.rb +1 -9
  21. data/lib/lingo/attendee/text_reader.rb +42 -29
  22. data/lib/lingo/attendee/text_writer.rb +3 -6
  23. data/lib/lingo/attendee/tokenizer.rb +87 -69
  24. data/lib/lingo/attendee/variator.rb +7 -5
  25. data/lib/lingo/attendee/vector_filter.rb +11 -11
  26. data/lib/lingo/attendee/word_searcher.rb +1 -9
  27. data/lib/lingo/attendee.rb +24 -105
  28. data/lib/lingo/buffered_attendee.rb +2 -9
  29. data/lib/lingo/call.rb +18 -13
  30. data/lib/lingo/cli.rb +5 -10
  31. data/lib/lingo/config.rb +40 -7
  32. data/lib/lingo/ctl.rb +69 -57
  33. data/lib/lingo/database/hash_store.rb +9 -4
  34. data/lib/lingo/database/sdbm_store.rb +4 -7
  35. data/lib/lingo/database/source/multi_key.rb +1 -1
  36. data/lib/lingo/database/source/multi_value.rb +1 -1
  37. data/lib/lingo/database/source.rb +2 -20
  38. data/lib/lingo/database.rb +30 -19
  39. data/lib/lingo/debug.rb +79 -0
  40. data/lib/lingo/{core_ext.rb → language/char.rb} +43 -42
  41. data/lib/lingo/language/dictionary.rb +38 -46
  42. data/lib/lingo/language/grammar.rb +40 -57
  43. data/lib/lingo/language/lexical.rb +4 -7
  44. data/lib/lingo/language/lexical_hash.rb +17 -35
  45. data/lib/lingo/language/token.rb +4 -0
  46. data/lib/lingo/language/word.rb +7 -8
  47. data/lib/lingo/language/word_form.rb +4 -4
  48. data/lib/lingo/language.rb +2 -1
  49. data/lib/lingo/srv/config.ru +4 -0
  50. data/lib/lingo/srv/lingosrv.cfg +14 -0
  51. data/lib/lingo/{reportable.rb → srv.rb} +59 -61
  52. data/lib/lingo/version.rb +1 -1
  53. data/lib/lingo/web/config.ru +4 -0
  54. data/lib/lingo/web/lingoweb.cfg +14 -0
  55. data/lib/lingo/web/public/lingo.png +0 -0
  56. data/lib/lingo/web/public/lingoweb.css +74 -0
  57. data/lib/lingo/web/views/index.erb +92 -0
  58. data/lib/lingo/web.rb +94 -0
  59. data/lib/lingo.rb +27 -29
  60. data/lingo.cfg +1 -1
  61. data/lir.cfg +24 -0
  62. data/ru/lingo-dic.txt +22342 -0
  63. data/ru/lingo-mul.txt +5151 -0
  64. data/ru/lingo-syn.txt +0 -0
  65. data/ru.lang +99 -0
  66. data/test/attendee/ts_sequencer.rb +2 -2
  67. data/test/attendee/ts_text_reader.rb +36 -2
  68. data/test/attendee/ts_text_writer.rb +6 -6
  69. data/test/lir.vec +3 -3
  70. data/test/test_helper.rb +104 -102
  71. data/test/ts_database.rb +1 -1
  72. data/test/ts_language.rb +55 -96
  73. data/txt/artikel-ru.txt +45 -0
  74. data/txt/lir.txt +1 -3
  75. metadata +143 -83
  76. data/TODO +0 -23
data/ChangeLog CHANGED
@@ -1,5 +1,38 @@
1
1
  = Revision history for Lingo
2
2
 
3
+ == 1.8.3 [2012-09-20]
4
+
5
+ * Fixed regression introduced in 1.8.2 where reading input from STDIN was no
6
+ longer possible.
7
+ * Fixed regression introduced in 1.8.2 where Lingo would no longer run on Ruby
8
+ 1.9.2.
9
+ * Fixed length limit handling for multibyte characters in SDBM store.
10
+ * Fixed encoding issue in SDBM store.
11
+ * Fixed issue with BOM in config files.
12
+ * Modified character handling to accept *any* Unicode letter (_Alphabetical_)
13
+ and digit (<i>Decimal Number</i>).
14
+ * Modified Attendee::Tokenizer to use only hard-coded tokenization rules.
15
+ * Modified Attendee::VectorFilter's +lexicals+ option to be case-sensitive.
16
+ * Improved overall performance and memory usage; Attendee::Sequencer changed
17
+ the order sequences are inserted into the stream.
18
+ * Eliminated performance penalty caused by Attendee::Abbreviator.
19
+ * Added Russian language support (Yulia Dorokhova, Thomas Müller).
20
+ * Added +fields+ option to Attendee::TextReader to cut off field labels;
21
+ defaults to +true+ in record (LIR) mode.
22
+ * Added +skip+ option to Attendee::TextReader to skip lines matching the given
23
+ pattern.
24
+ * Added +src+ option to Attendee::VectorFilter to print "source" part of
25
+ compounds.
26
+ * Added +lingosrv+ and +lingoweb+ executables. The former provides a simple
27
+ HTTP endpoint with JSON output; the latter serves a demo web interface.
28
+ * Refactored internal caching.
29
+ * Made dependency on Ruby version >= 1.9.2 explicit.
30
+ * Removed reporting facility (options '--perfmon' and '--status').
31
+ * Learned '--profile' option to collect profiling information while running.
32
+ * Deprecated Language::Grammar option +compositum+ (now +compound+), Config
33
+ option +textreader+ (now +text_reader+), and Attendee::TextReader option
34
+ +lir-record-pattern+ (now +records+); they will be removed in Lingo 1.9.
35
+
3
36
  == 1.8.2 [2012-04-19]
4
37
 
5
38
  * Performance improvements regarding Attendee::VectorFilter's (as well as
data/README CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  == VERSION
27
27
 
28
- This documentation refers to Lingo version 1.8.2
28
+ This documentation refers to Lingo version 1.8.3
29
29
 
30
30
 
31
31
  == DESCRIPTION
@@ -173,8 +173,8 @@ to run that command with administrator privileges, depending on your
173
173
  environment). Then you can call the +lingo+ executable to process your
174
174
  data. See <tt>lingo --help</tt> for starters.
175
175
 
176
- Please note that Lingo requires Ruby version 1.9 to run
177
- (1.9.3[http://ruby-lang.org/en/downloads/] is the currently recommended
176
+ Please note that Lingo requires Ruby version 1.9 to run (1.9.2 or greater;
177
+ 1.9.3[http://ruby-lang.org/en/downloads/] is the currently recommended
178
178
  version). If you want to use Lingo on Ruby 1.8, please refer to the legacy
179
179
  version (see below).
180
180
 
@@ -225,7 +225,7 @@ the development efforts will be directed towards Lingo 1.8+.
225
225
  To install the legacy version, download and extract the ZIP archive from
226
226
  RubyForge[http://rubyforge.org/frs/?group_id=5663]. No additional dependencies
227
227
  are required. This version of Lingo works with both Ruby 1.8 (1.8.5 or greater)
228
- and 1.9.
228
+ and 1.9 (1.9.2 or greater).
229
229
 
230
230
  The executable is named +lingo.rb+. It's located at the root of the installation
231
231
  directory and may only be run from there. See <tt>ruby lingo.rb -h</tt> for
@@ -320,7 +320,8 @@ Lingo is based on a collective development by Klaus Lepsky and John Vorhauer.
320
320
 
321
321
  * Klaus Lepsky <mailto:klaus@lepsky.de>
322
322
  * Jan-Helge Jacobs <mailto:plancton@web.de>
323
- * Thomas Müller <mailto:thomas.mueller@fh-koeln.de>
323
+ * Thomas Müller <mailto:thomas.mueller@gesis.org>
324
+ * Yulia Dorokhova <mailto:jdorokhova@hse.ru>
324
325
 
325
326
 
326
327
  == LICENSE AND COPYRIGHT
data/Rakefile CHANGED
@@ -39,11 +39,13 @@ The main functions of Lingo are:
39
39
  of word classes
40
40
  EOT
41
41
  extra_files: FileList[
42
- 'lingo.rb', 'lingo{,-call}.cfg', 'lir.cfg', '{de,en}.lang',
43
- '{de,en}/{lingo-*,user-dic,test_*}.txt', 'txt/{artikel{,-en},lir}.txt'
42
+ 'lingo.rb', 'lingo{,-call}.cfg', 'lir.cfg',
43
+ '{de,en,ru}.lang', '{de,en,ru}/{lingo-*,user-dic,test_*}.txt',
44
+ 'txt/{artikel{,-en,-ru},lir}.txt', 'lib/lingo/{srv,web}/**/*'
44
45
  ].to_a,
45
- required_ruby_version: '>= 1.9',
46
- dependencies: [['ruby-nuggets', '>= 0.8.5'], 'unicode', 'highline'],
46
+ required_ruby_version: '>= 1.9.2',
47
+ dependencies: [['ruby-nuggets', '>= 0.8.5'],
48
+ 'unicode', 'highline', 'sinatra'],
47
49
  development_dependencies: [['diff-lcs', '>= 1.1.3'], 'open4']
48
50
  }
49
51
  }}
@@ -1,58 +1,30 @@
1
- # encoding: utf-8
2
-
3
- #--
4
- ###############################################################################
5
- # #
6
- # Lingo -- A full-featured automatic indexing system #
7
- # #
8
- # Copyright (C) 2005-2007 John Vorhauer #
9
- # Copyright (C) 2007-2012 John Vorhauer, Jens Wille #
10
- # #
11
- # Lingo is free software; you can redistribute it and/or modify it under the #
12
- # terms of the GNU Affero General Public License as published by the Free #
13
- # Software Foundation; either version 3 of the License, or (at your option) #
14
- # any later version. #
15
- # #
16
- # Lingo is distributed in the hope that it will be useful, but WITHOUT ANY #
17
- # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
18
- # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for #
19
- # more details. #
20
- # #
21
- # You should have received a copy of the GNU Affero General Public License #
22
- # along with Lingo. If not, see <http://www.gnu.org/licenses/>. #
23
- # #
24
- ###############################################################################
25
- #++
26
-
27
- class Lingo
28
-
29
- # Provides a simple caching mechanism.
30
-
31
- module Cachable
32
-
33
- def init_cachable
34
- @cachable_hash = Hash.new(false)
35
- end
36
-
37
- def hit?(key)
38
- @cachable_hash.has_key?(key)
39
- end
40
-
41
- def store(key, val)
42
- @cachable_hash[key] = cache_value(val)
43
- val
44
- end
45
-
46
- def retrieve(key)
47
- cache_value(@cachable_hash[key])
48
- end
49
-
50
- private
51
-
52
- def cache_value(val)
53
- val.dup unless val.nil?
54
- end
55
-
56
- end
57
-
58
- end
1
+ #! /usr/bin/env ruby
2
+
3
+ #--
4
+ ###############################################################################
5
+ # #
6
+ # Lingo -- A full-featured automatic indexing system #
7
+ # #
8
+ # Copyright (C) 2005-2007 John Vorhauer #
9
+ # Copyright (C) 2007-2012 John Vorhauer, Jens Wille #
10
+ # #
11
+ # Lingo is free software; you can redistribute it and/or modify it under the #
12
+ # terms of the GNU Affero General Public License as published by the Free #
13
+ # Software Foundation; either version 3 of the License, or (at your option) #
14
+ # any later version. #
15
+ # #
16
+ # Lingo is distributed in the hope that it will be useful, but WITHOUT ANY #
17
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
18
+ # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for #
19
+ # more details. #
20
+ # #
21
+ # You should have received a copy of the GNU Affero General Public License #
22
+ # along with Lingo. If not, see <http://www.gnu.org/licenses/>. #
23
+ # #
24
+ ###############################################################################
25
+ #++
26
+
27
+ require 'lingo'
28
+ require 'lingo/srv'
29
+
30
+ Lingo::Srv.run!
data/bin/lingoweb ADDED
@@ -0,0 +1,30 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ #--
4
+ ###############################################################################
5
+ # #
6
+ # Lingo -- A full-featured automatic indexing system #
7
+ # #
8
+ # Copyright (C) 2005-2007 John Vorhauer #
9
+ # Copyright (C) 2007-2012 John Vorhauer, Jens Wille #
10
+ # #
11
+ # Lingo is free software; you can redistribute it and/or modify it under the #
12
+ # terms of the GNU Affero General Public License as published by the Free #
13
+ # Software Foundation; either version 3 of the License, or (at your option) #
14
+ # any later version. #
15
+ # #
16
+ # Lingo is distributed in the hope that it will be useful, but WITHOUT ANY #
17
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS #
18
+ # FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for #
19
+ # more details. #
20
+ # #
21
+ # You should have received a copy of the GNU Affero General Public License #
22
+ # along with Lingo. If not, see <http://www.gnu.org/licenses/>. #
23
+ # #
24
+ ###############################################################################
25
+ #++
26
+
27
+ require 'lingo'
28
+ require 'lingo/web'
29
+
30
+ Lingo::Web.run!
data/de.lang CHANGED
@@ -72,7 +72,7 @@ language:
72
72
  min-avg-part-size: "4"
73
73
  append-wordclass: "+"
74
74
  skip-sequences: [ xx ]
75
-
75
+
76
76
  suffix:
77
77
  # Suffixliste, Stand: 30-06-2005
78
78
  # Suffixklasse: s = Substantiv, a = Adjektiv, v = Verb, e = Eigenwort, f = Fugung
@@ -84,17 +84,6 @@ language:
84
84
  - [f, "s n e en es er ch/che /en"]
85
85
 
86
86
  attendees:
87
- tokenizer:
88
- regulars:
89
- - _char_: '_baslat_|_lat1sp_|_latexa_|_latexb_|_ipaext_'
90
- - NUMS: '[+-]?(\d{4,}|\d{1,3}(\.\d{3,3})*)(\.|(,\d+)?%?)'
91
- - URLS: '((mailto:|(news|http|https|ftp|ftps)://)\S+|^(www(\.\S+)+)|[^\s.]+([\._]\S+)+@\S+(\.\S+)+)'
92
- - ABRV: '(((_char_)+\.)+)(_char_)+'
93
- - WORD: '(_char_|_digit_|\-)+'
94
- - PUNC: '([!,\.:;?]|\xc2\xa1|\xc2\xbf)'
95
- - OTHR: '([\"#$%&\x27()*\+\-/<=>@\[\\\]^_{|}~]|\xc2\xa2|\xc2\xa3|\xc2\xa4|\xc2\xa5|\xc2\xa6|\xc2\xa7|\xc2\xa8|\xc2\xa9|\xc2\xaa|\xc2\xab|\xc2\xac|\xc2\xae|\xc2\xaf|\xc2\xb0|\xc2\xb1|\xc2\xb2|\xc2\xb3|\xc2\xb4|\xc2\xb5|\xc2\xb6|\xc2\xb7|\xc2\xb8|\xc2\xb9|\xc2\xba|\xc2\xbb|\xc2\xbc|\xc2\xbd|\xc2\xbe|\xc3\x97|\xc3\xb7)'
96
- - HELP: '[^ ]*'
97
-
98
87
  variator:
99
88
  variations:
100
89
  - [ ieh, sch ]
@@ -116,6 +105,6 @@ language:
116
105
  - [ fl, st ]
117
106
  - [ li, h ]
118
107
  - [ i, s ]
119
-
108
+
120
109
  sequencer:
121
110
  sequences: [ [AS, "2, 1"], [AK, "2, 1"], [AAK, "3, 1 2"], [AAS, "3, 1 2"] ]
data/en/lingo-irr.txt ADDED
@@ -0,0 +1,266 @@
1
+ #
2
+ # Wörterbuch der unregelmäßigen Verben
3
+ #
4
+ # Stand: 26.05.08 / Thomas Müller
5
+
6
+ ate=eat #v
7
+ awoke=awake #v
8
+ awoken=awake #v
9
+ beat=beat #v
10
+ became=become #v
11
+ become=become #v
12
+ began=begin #v
13
+ begun=begin #v
14
+ bent=bend #v
15
+ beset=beset #v
16
+ bet=bet #v
17
+ bit=bite #v
18
+ bitten=bite #v
19
+ bled=bleed #v
20
+ blew=blow #v
21
+ blown=blow #v
22
+ bore=bear #v
23
+ born=bear #v
24
+ bought=buy #v
25
+ bound=bind #v
26
+ bred=breed #v
27
+ broadcast=broadcast #v
28
+ broke=break #v
29
+ broken=break #v
30
+ brought=bring #v
31
+ built=build #v
32
+ burst=burst #v
33
+ came=come #v
34
+ cast=cast #v
35
+ caught=catch #v
36
+ chose=choose #v
37
+ chosen=choose #v
38
+ clung=cling #v
39
+ come=come #v
40
+ cost=cost #v
41
+ crept=creep #v
42
+ cut=cut #v
43
+ dealt=deal #v
44
+ did=do #v
45
+ done=do #v
46
+ drank=drink #v
47
+ drawn=draw #v
48
+ drew=draw #v
49
+ driven=drive #v
50
+ drove=drive #v
51
+ drunk=drink #v
52
+ dug=dig #v
53
+ eaten=eat #v
54
+ fallen=fall #v
55
+ fed=feed #v
56
+ fell=fall #v
57
+ felt=feel #v
58
+ fit=fit #v
59
+ fled=flee #v
60
+ flew=fly #v
61
+ flown=fly #v
62
+ flung=fling #v
63
+ forbade=forbid #v
64
+ forbidden=forbid #v
65
+ forgave=forgive #v
66
+ forgiven=forgive #v
67
+ forgot=forget #v
68
+ forgotten=forget #v
69
+ forsaken=forsake #v
70
+ forsook=forsake #v
71
+ fought=fight #v
72
+ found=find #v
73
+ froze=freeze #v
74
+ frozen=freeze #v
75
+ gave=give #v
76
+ given=give #v
77
+ gone=go #v
78
+ got=get #v
79
+ gotten=get #v
80
+ grew=grow #v
81
+ ground=grind #v
82
+ grown=grow #v
83
+ heard=hear #v
84
+ held=hold #v
85
+ hidden=hide #v
86
+ hid=hide #v
87
+ hit=hit #v
88
+ hung=hang #v
89
+ hurt=hurt #v
90
+ kept=keep #v
91
+ knelt=kneel #v
92
+ knew=know #v
93
+ knit=knit #v
94
+ know=know #v
95
+ laid=lay #v
96
+ lain=lie #v
97
+ lay=lie #v
98
+ led=lead #v
99
+ left=leave #v
100
+ lent=lend #v
101
+ let=let #v
102
+ lost=lose #v
103
+ made=make #v
104
+ meant=mean #v
105
+ met=meet #v
106
+ mistaken=mistake #v
107
+ mistook=mistake #v
108
+ overcame=overcome #v
109
+ overcome=overcome #v
110
+ overdid=overdo #v
111
+ overdone=overdo #v
112
+ overtaken=overtake #v
113
+ overthrew=overthrow #v
114
+ overthrown=overthrow #v
115
+ overtook=overtake #v
116
+ paid=pay #v
117
+ pled=plead #v
118
+ put=put #v
119
+ quit=quit #v
120
+ rang=ring #v
121
+ ran=run #v
122
+ read=read #v
123
+ ridden=ride #v
124
+ rid=rid #v
125
+ risen=rise #v
126
+ rode=ride #v
127
+ rose=rise #v
128
+ rung=ring #v
129
+ run=run #v
130
+ said=say #v
131
+ sang=sing #v
132
+ sank=sink #v
133
+ sat=sit #v
134
+ saw=see #v
135
+ seen=see #v
136
+ sent=send #v
137
+ set=set #v
138
+ shaken=shake #v
139
+ shed=shed #v
140
+ shone=shine #v
141
+ shook=shake #v
142
+ shore=shear #v
143
+ shorn=shear #v
144
+ shot=shoot #v
145
+ shrank=shrink #v
146
+ shrunk=shrink #v
147
+ shut=shut #v
148
+ slain=slay #v
149
+ slept=sleep #v
150
+ slew=slay #v
151
+ slid=slide #v
152
+ slit=slit #v
153
+ slung=sling #v
154
+ smitten=smite #v
155
+ smote=smite #v
156
+ sold=sell #v
157
+ sought=seek #v
158
+ sped=speed #v
159
+ spent=spend #v
160
+ split=split #v
161
+ spoken=speak #v
162
+ spoke=speak #v
163
+ spread=spread #v
164
+ spun=spin #v
165
+ stank=stink #v
166
+ stolen=steal #v
167
+ stole=steal #v
168
+ stood=stand #v
169
+ stridden=stride #v
170
+ striven=strive #v
171
+ strode=stride #v
172
+ strove=strive #v
173
+ struck=strike #v
174
+ strung=string #v
175
+ stuck=stick #v
176
+ stung=sting #v
177
+ stunk=stink #v
178
+ sung=sing #v
179
+ sunk=sink #v
180
+ swam=swim #v
181
+ swept=sweep #v
182
+ swore=swear #v
183
+ sworn=swear #v
184
+ swum=swim #v
185
+ swung=swing #v
186
+ taken=take #v
187
+ taught=teach #v
188
+ thought=think #v
189
+ threw=throw #v
190
+ thrown=throw #v
191
+ thrust=thrust #v
192
+ told=tell #v
193
+ took=take #v
194
+ tore=tear #v
195
+ torn=tear #v
196
+ trodden=tread #v
197
+ trod=tread #v
198
+ understood=understand #v
199
+ upheld=uphold #v
200
+ upset=upset #v
201
+ wed=wed #v
202
+ went=go #v
203
+ wept=weep #v
204
+ withheld=withhold #v
205
+ withstood=withstand #v
206
+ woken=wake #v
207
+ woke=wake #v
208
+ won=win #v
209
+ wore=wear #v
210
+ worn=wear #v
211
+ wound=wind #v
212
+ written=write #v
213
+ wrote=write #v
214
+ wrung=wring #v
215
+ bade=bid #v
216
+ been=be #v
217
+ bid=bid #v
218
+ bidden=bid #v
219
+ burned=burn #v
220
+ burnt=burn #v
221
+ dived=dive #v
222
+ dove=dive #v
223
+ dreamed=dream #v
224
+ dreamt=dream #v
225
+ foregone=forego #v
226
+ forewent=forego #v
227
+ leaped=leap #v
228
+ learned=learn #v
229
+ learnt=learn #v
230
+ lept=leap #v
231
+ lighted=light #v
232
+ lit=light #v
233
+ misspelled=misspell #v
234
+ misspelt=misspell #v
235
+ mowed=mow #v
236
+ mown=mow #v
237
+ proved=prove #v
238
+ proven=prove #v
239
+ sawed=saw #v
240
+ sawn=saw #v
241
+ sewed=sew #v
242
+ sewn=sew #v
243
+ shaved=shave #v
244
+ shaven=shave #v
245
+ shod=shoe #v
246
+ shoed=shoe #v
247
+ showed=show #v
248
+ shown=show #v
249
+ sowed=sow #v
250
+ sown=sow #v
251
+ spat=spit #v
252
+ spilled=spill #v
253
+ spilt=spill #v
254
+ spit=spit #v
255
+ sprang=spring #v
256
+ sprung=spring #v
257
+ swelled=swell #v
258
+ swollen=swell #v
259
+ thrived=thrive #v
260
+ thriven=thrive #v
261
+ throve=thrive #v
262
+ was=be #v
263
+ weaved=weave #v
264
+ were=be #v
265
+ woven=weave #v
266
+ wove=weave #v