lingo 1.8.5 → 1.8.6
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.
- checksums.yaml +4 -4
- data/ChangeLog +25 -0
- data/README +7 -5
- data/Rakefile +58 -55
- data/{lingo-call.cfg → config/lingo-call.cfg} +1 -1
- data/{lingo.cfg → config/lingo.cfg} +10 -2
- data/{lir.cfg → config/lir.cfg} +10 -2
- data/{de → dict/de}/lingo-abk.txt +0 -0
- data/{de → dict/de}/lingo-dic.txt +0 -0
- data/{de → dict/de}/lingo-mul.txt +0 -0
- data/{de → dict/de}/lingo-syn.txt +0 -0
- data/{de → dict/de}/test_dic.txt +0 -0
- data/{de → dict/de}/test_gen.txt +0 -0
- data/{de → dict/de}/test_mu2.txt +0 -0
- data/{de → dict/de}/test_mul.txt +0 -0
- data/{de → dict/de}/test_sgw.txt +0 -0
- data/{de → dict/de}/test_syn.txt +0 -0
- data/{de → dict/de}/user-dic.txt +0 -0
- data/{en → dict/en}/lingo-dic.txt +0 -0
- data/{en → dict/en}/lingo-irr.txt +0 -0
- data/{en → dict/en}/lingo-mul.txt +0 -0
- data/{en → dict/en}/lingo-syn.txt +0 -0
- data/{en → dict/en}/lingo-wdn.txt +0 -0
- data/{en → dict/en}/user-dic.txt +0 -0
- data/{ru → dict/ru}/lingo-dic.txt +0 -0
- data/{ru → dict/ru}/lingo-mul.txt +0 -0
- data/{ru → dict/ru}/lingo-syn.txt +0 -0
- data/{ru → dict/ru}/user-dic.txt +0 -0
- data/{de.lang → lang/de.lang} +1 -1
- data/{en.lang → lang/en.lang} +0 -0
- data/{ru.lang → lang/ru.lang} +0 -0
- data/lib/lingo.rb +14 -15
- data/lib/lingo/app.rb +4 -2
- data/lib/lingo/attendee.rb +23 -43
- data/lib/lingo/attendee/abbreviator.rb +5 -5
- data/lib/lingo/attendee/debugger.rb +39 -12
- data/lib/lingo/attendee/decomposer.rb +3 -4
- data/lib/lingo/attendee/dehyphenizer.rb +4 -4
- data/lib/lingo/attendee/formatter.rb +1 -3
- data/lib/lingo/attendee/multi_worder.rb +3 -4
- data/lib/lingo/attendee/noneword_filter.rb +8 -12
- data/lib/lingo/attendee/object_filter.rb +6 -3
- data/lib/lingo/attendee/sequencer.rb +5 -5
- data/lib/lingo/attendee/stemmer.rb +3 -2
- data/lib/lingo/attendee/synonymer.rb +3 -4
- data/lib/lingo/attendee/text_reader.rb +39 -38
- data/lib/lingo/attendee/text_writer.rb +10 -10
- data/lib/lingo/attendee/tokenizer.rb +63 -33
- data/lib/lingo/attendee/variator.rb +3 -7
- data/lib/lingo/attendee/vector_filter.rb +132 -65
- data/lib/lingo/attendee/word_searcher.rb +5 -3
- data/lib/lingo/buffered_attendee.rb +1 -3
- data/lib/lingo/call.rb +4 -3
- data/lib/lingo/cli.rb +5 -1
- data/lib/lingo/config.rb +11 -5
- data/lib/lingo/ctl.rb +3 -3
- data/lib/lingo/database.rb +3 -1
- data/lib/lingo/database/crypter.rb +1 -3
- data/lib/lingo/database/source.rb +3 -1
- data/lib/lingo/database/source/key_value.rb +3 -1
- data/lib/lingo/database/source/multi_key.rb +3 -1
- data/lib/lingo/database/source/multi_value.rb +3 -1
- data/lib/lingo/database/source/single_word.rb +3 -1
- data/lib/lingo/database/source/word_class.rb +3 -1
- data/lib/lingo/debug.rb +5 -5
- data/lib/lingo/{agenda_item.rb → deferred_attendee.rb} +21 -12
- data/lib/lingo/error.rb +1 -1
- data/lib/lingo/language.rb +1 -9
- data/lib/lingo/language/dictionary.rb +2 -17
- data/lib/lingo/language/grammar.rb +10 -10
- data/lib/lingo/language/lexical.rb +2 -0
- data/lib/lingo/language/lexical_hash.rb +2 -0
- data/lib/lingo/language/token.rb +17 -3
- data/lib/lingo/language/word.rb +13 -5
- data/lib/lingo/language/word_form.rb +5 -3
- data/lib/lingo/progress.rb +2 -2
- data/lib/lingo/srv.rb +1 -1
- data/lib/lingo/srv/lingosrv.cfg +1 -1
- data/lib/lingo/version.rb +1 -1
- data/lib/lingo/web.rb +1 -1
- data/lib/lingo/web/lingoweb.cfg +1 -1
- data/test/attendee/ts_abbreviator.rb +4 -2
- data/test/attendee/ts_multi_worder.rb +81 -88
- data/test/attendee/ts_noneword_filter.rb +2 -2
- data/test/attendee/ts_object_filter.rb +2 -2
- data/test/attendee/ts_sequencer.rb +40 -20
- data/test/attendee/ts_stemmer.rb +52 -26
- data/test/attendee/ts_text_reader.rb +75 -56
- data/test/attendee/ts_text_writer.rb +6 -4
- data/test/attendee/ts_tokenizer.rb +304 -193
- data/test/attendee/ts_vector_filter.rb +242 -9
- data/test/ref/artikel.non +3 -0
- data/test/ref/artikel.vec +1 -4
- data/test/ref/artikel.vef +940 -0
- data/test/ref/artikel.ven +0 -3
- data/test/ref/artikel.ver +0 -3
- data/test/ref/artikel.vet +2580 -0
- data/test/ref/lir.non +34 -31
- data/test/ref/lir.seq +14 -15
- data/test/ref/lir.vec +37 -37
- data/test/ref/lir.vef +329 -0
- data/test/ref/lir.ven +329 -0
- data/test/ref/lir.ver +329 -0
- data/test/ref/lir.vet +329 -0
- data/test/test_helper.rb +29 -16
- data/test/ts_language.rb +6 -47
- metadata +74 -87
- data/lingo.rb +0 -29
- data/spec/spec_helper.rb +0 -5
@@ -6,9 +6,9 @@ class TestAttendeeNonewordFilter < AttendeeTestCase
|
|
6
6
|
|
7
7
|
def test_basic
|
8
8
|
meet({}, [
|
9
|
-
wd('Eins|IDF'), wd('Zwei|?'), wd('Drei|IDF'), wd('Vier|?'), ai('EOF|')
|
9
|
+
wd('Eins|IDF'), wd('Zwei|?'), wd('Drei|IDF'), wd('Vier|?'), ai('EOF|'), ai('EOT|')
|
10
10
|
], [
|
11
|
-
'vier', 'zwei', ai('EOF|')
|
11
|
+
'vier', 'zwei', ai('EOF|'), ai('EOT|')
|
12
12
|
])
|
13
13
|
end
|
14
14
|
|
@@ -6,9 +6,9 @@ class TestAttendeeObjectFilter < AttendeeTestCase
|
|
6
6
|
|
7
7
|
def test_basic
|
8
8
|
meet({ 'objects' => 'obj.form =~ /^[A-Z]/' }, [
|
9
|
-
wd('Eins|IDF'), wd('zwei|?'), wd('Drei|IDF'), wd('vier|?'), ai('EOF|')
|
9
|
+
wd('Eins|IDF'), wd('zwei|?'), wd('Drei|IDF'), wd('vier|?'), ai('EOF|'), ai('EOT|')
|
10
10
|
], [
|
11
|
-
wd('Eins|IDF'), wd('Drei|IDF'), ai('EOF|')
|
11
|
+
wd('Eins|IDF'), wd('Drei|IDF'), ai('EOF|'), ai('EOT|')
|
12
12
|
])
|
13
13
|
end
|
14
14
|
|
@@ -15,7 +15,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
15
15
|
wd('Der|IDF', 'der|w'),
|
16
16
|
wd('schöne|IDF', 'schön|a'),
|
17
17
|
wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
|
18
|
-
ai('EOF|')
|
18
|
+
ai('EOF|'),
|
19
|
+
ai('EOT|')
|
19
20
|
], [
|
20
21
|
# AS
|
21
22
|
wd('Die|IDF', 'die|w'),
|
@@ -28,7 +29,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
28
29
|
wd('schöne|IDF', 'schön|a'),
|
29
30
|
wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
|
30
31
|
wd('sonnenuntergang, schön|SEQ', 'sonnenuntergang, schön|q'),
|
31
|
-
ai('EOF|')
|
32
|
+
ai('EOF|'),
|
33
|
+
ai('EOT|')
|
32
34
|
])
|
33
35
|
end
|
34
36
|
|
@@ -50,7 +52,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
50
52
|
wd('Der|IDF', 'der|w'),
|
51
53
|
wd('Sonne|IDF', 'sonne|s'),
|
52
54
|
wd('Untergang|IDF', 'untergang|s'),
|
53
|
-
ai('EOF|')
|
55
|
+
ai('EOF|'),
|
56
|
+
ai('EOT|')
|
54
57
|
], [
|
55
58
|
# (AS)
|
56
59
|
wd('Die|IDF', 'die|w'),
|
@@ -72,7 +75,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
72
75
|
wd('Sonne|IDF', 'sonne|s'),
|
73
76
|
wd('Untergang|IDF', 'untergang|s'),
|
74
77
|
wd('sonne untergang|SEQ', 'sonne untergang|q'),
|
75
|
-
ai('EOF|')
|
78
|
+
ai('EOF|'),
|
79
|
+
ai('EOT|')
|
76
80
|
])
|
77
81
|
end
|
78
82
|
|
@@ -85,7 +89,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
85
89
|
wd('Gottes|IDF', 'gott|s'),
|
86
90
|
wd('Turm|IDF', 'turm|s'),
|
87
91
|
tk('.|PUNC'),
|
88
|
-
ai('EOF|')
|
92
|
+
ai('EOF|'),
|
93
|
+
ai('EOT|')
|
89
94
|
], [
|
90
95
|
# MS
|
91
96
|
wd('Der|IDF', 'der|w'),
|
@@ -95,7 +100,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
95
100
|
wd('Turm|IDF', 'turm|s'),
|
96
101
|
tk('.|PUNC'),
|
97
102
|
wd('abbild gottes turm|SEQ', 'abbild gottes turm|q'),
|
98
|
-
ai('EOF|')
|
103
|
+
ai('EOF|'),
|
104
|
+
ai('EOT|')
|
99
105
|
])
|
100
106
|
meet({ 'sequences' => [['MS', '1 2'], ['SS', '1 2'], ['SSS', '1 2 3']] }, [
|
101
107
|
# MS + SS + SS + SSS
|
@@ -109,7 +115,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
109
115
|
wd('Abbild Gottes|MUL', 'abbild gottes|m'),
|
110
116
|
wd('Abbild|IDF', 'abbild|s'),
|
111
117
|
wd('Gottes|IDF', 'gott|s'),
|
112
|
-
ai('EOF|')
|
118
|
+
ai('EOF|'),
|
119
|
+
ai('EOT|')
|
113
120
|
], [
|
114
121
|
# MS + SS + SS + SSS
|
115
122
|
wd('Der|IDF', 'der|w'),
|
@@ -127,7 +134,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
127
134
|
wd('Abbild|IDF', 'abbild|s'),
|
128
135
|
wd('Gottes|IDF', 'gott|s'),
|
129
136
|
wd('abbild gott|SEQ', 'abbild gott|q'),
|
130
|
-
ai('EOF|')
|
137
|
+
ai('EOF|'),
|
138
|
+
ai('EOT|')
|
131
139
|
])
|
132
140
|
end
|
133
141
|
|
@@ -144,7 +152,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
144
152
|
wd('Abbild Gottes|MUL', 'abbild gottes|m'),
|
145
153
|
wd('Abbild|IDF', 'abbild|s'),
|
146
154
|
wd('Gottes|IDF', 'gott|s'),
|
147
|
-
ai('EOF|')
|
155
|
+
ai('EOF|'),
|
156
|
+
ai('EOT|')
|
148
157
|
], [
|
149
158
|
# MS + SS + SS
|
150
159
|
wd('Der|IDF', 'der|w'),
|
@@ -161,7 +170,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
161
170
|
wd('Abbild|IDF', 'abbild|s'),
|
162
171
|
wd('Gottes|IDF', 'gott|s'),
|
163
172
|
wd('abbild gott|SEQ', 'abbild gott|q'),
|
164
|
-
ai('EOF|')
|
173
|
+
ai('EOF|'),
|
174
|
+
ai('EOT|')
|
165
175
|
])
|
166
176
|
end
|
167
177
|
|
@@ -177,7 +187,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
177
187
|
wd('Abbild Gottes|MUL', 'abbild gottes|m'),
|
178
188
|
wd('Abbild|IDF', 'abbild|s'),
|
179
189
|
wd('Gottes|IDF', 'gott|s'),
|
180
|
-
ai('EOF|')
|
190
|
+
ai('EOF|'),
|
191
|
+
ai('EOT|')
|
181
192
|
], [
|
182
193
|
# (MS + SS + SS)
|
183
194
|
wd('Der|IDF', 'der|w'),
|
@@ -189,7 +200,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
189
200
|
wd('Abbild Gottes|MUL', 'abbild gottes|m'),
|
190
201
|
wd('Abbild|IDF', 'abbild|s'),
|
191
202
|
wd('Gottes|IDF', 'gott|s'),
|
192
|
-
ai('EOF|')
|
203
|
+
ai('EOF|'),
|
204
|
+
ai('EOT|')
|
193
205
|
])
|
194
206
|
end
|
195
207
|
|
@@ -206,7 +218,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
206
218
|
wd('Abbild Gottes|MUL', 'abbild gottes|m'),
|
207
219
|
wd('Abbild|IDF', 'abbild|s'),
|
208
220
|
wd('Gottes|IDF', 'gott|s'),
|
209
|
-
ai('EOF|')
|
221
|
+
ai('EOF|'),
|
222
|
+
ai('EOT|')
|
210
223
|
], [
|
211
224
|
# MS + SS + SS
|
212
225
|
wd('Der|IDF', 'der|w'),
|
@@ -223,7 +236,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
223
236
|
wd('Abbild|IDF', 'abbild|s'),
|
224
237
|
wd('Gottes|IDF', 'gott|s'),
|
225
238
|
wd('abbild gott|SEQ', 'abbild gott|q'),
|
226
|
-
ai('EOF|')
|
239
|
+
ai('EOF|'),
|
240
|
+
ai('EOT|')
|
227
241
|
])
|
228
242
|
end
|
229
243
|
|
@@ -236,7 +250,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
236
250
|
wd('Gottes|IDF', 'gott|s'),
|
237
251
|
wd('Turm|IDF', 'turm|s'),
|
238
252
|
tk('.|PUNC'),
|
239
|
-
ai('EOF|')
|
253
|
+
ai('EOF|'),
|
254
|
+
ai('EOT|')
|
240
255
|
], [
|
241
256
|
# MS + SSS + (SS) + SS
|
242
257
|
wd('Der|IDF', 'der|w'),
|
@@ -249,7 +264,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
249
264
|
wd('abbild gott turm|SEQ', 'abbild gott turm|q'),
|
250
265
|
#wd('abbild gott|SEQ', 'abbild gott|q'), # FIXME
|
251
266
|
wd('gott turm|SEQ', 'gott turm|q'),
|
252
|
-
ai('EOF|')
|
267
|
+
ai('EOF|'),
|
268
|
+
ai('EOT|')
|
253
269
|
])
|
254
270
|
end
|
255
271
|
|
@@ -262,7 +278,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
262
278
|
wd('Gottes|IDF', 'gott|s'),
|
263
279
|
wd('Turm|IDF', 'turm|s'),
|
264
280
|
tk('.|PUNC'),
|
265
|
-
ai('EOF|')
|
281
|
+
ai('EOF|'),
|
282
|
+
ai('EOT|')
|
266
283
|
], [
|
267
284
|
# MS + SSS + (SS) + SS
|
268
285
|
wd('Der|IDF', 'der|w'),
|
@@ -275,7 +292,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
275
292
|
wd('sss:abbild^gott^turm|SEQ', 'sss:abbild^gott^turm|q'),
|
276
293
|
#wd('ss:abbild^gott|SEQ', 'ss:abbild^gott|q'), # FIXME
|
277
294
|
wd('ss:gott^turm|SEQ', 'ss:gott^turm|q'),
|
278
|
-
ai('EOF|')
|
295
|
+
ai('EOF|'),
|
296
|
+
ai('EOT|')
|
279
297
|
])
|
280
298
|
end
|
281
299
|
|
@@ -290,7 +308,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
290
308
|
wd('Der|IDF', 'der|w'),
|
291
309
|
wd('schöne|IDF', 'schön|a'),
|
292
310
|
wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
|
293
|
-
ai('EOF|')
|
311
|
+
ai('EOF|'),
|
312
|
+
ai('EOT|')
|
294
313
|
], [
|
295
314
|
# WA + AS
|
296
315
|
wd('Die|IDF', 'die|w'),
|
@@ -305,7 +324,8 @@ class TestAttendeeSequencer < AttendeeTestCase
|
|
305
324
|
wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
|
306
325
|
wd('der schön (wa)|SEQ', 'der schön (wa)|q'),
|
307
326
|
wd('ak: sonnenuntergang, schön|SEQ', 'ak: sonnenuntergang, schön|q'),
|
308
|
-
ai('EOF|')
|
327
|
+
ai('EOF|'),
|
328
|
+
ai('EOT|')
|
309
329
|
])
|
310
330
|
end
|
311
331
|
|
data/test/attendee/ts_stemmer.rb
CHANGED
@@ -13,12 +13,14 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
13
13
|
wd('bla|IDF'),
|
14
14
|
wd('blub|?'),
|
15
15
|
wd('blubs|?'),
|
16
|
-
ai('EOF|')
|
16
|
+
ai('EOF|'),
|
17
|
+
ai('EOT|')
|
17
18
|
], [
|
18
19
|
wd('bla|IDF'),
|
19
20
|
wd('blub|?'),
|
20
21
|
wd('blubs|?', 'blub|z'),
|
21
|
-
ai('EOF|')
|
22
|
+
ai('EOF|'),
|
23
|
+
ai('EOT|')
|
22
24
|
])
|
23
25
|
end
|
24
26
|
|
@@ -27,12 +29,14 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
27
29
|
wd('bla|IDF'),
|
28
30
|
wd('blub|?'),
|
29
31
|
wd('blubs|?'),
|
30
|
-
ai('EOF|')
|
32
|
+
ai('EOF|'),
|
33
|
+
ai('EOT|')
|
31
34
|
], [
|
32
35
|
wd('bla|IDF'),
|
33
36
|
wd('blub|?'),
|
34
37
|
wd('blubs|?', 'blub|w'),
|
35
|
-
ai('EOF|')
|
38
|
+
ai('EOF|'),
|
39
|
+
ai('EOT|')
|
36
40
|
])
|
37
41
|
end
|
38
42
|
|
@@ -42,13 +46,15 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
42
46
|
wd('a|?'),
|
43
47
|
wd('yet|?'),
|
44
48
|
wd('blubs|?'),
|
45
|
-
ai('EOF|')
|
49
|
+
ai('EOF|'),
|
50
|
+
ai('EOT|')
|
46
51
|
], [
|
47
52
|
wd('bla|IDF'),
|
48
53
|
wd('a|?'),
|
49
54
|
wd('yet|?'),
|
50
55
|
wd('blubs|?', 'blub|z'),
|
51
|
-
ai('EOF|')
|
56
|
+
ai('EOF|'),
|
57
|
+
ai('EOT|')
|
52
58
|
])
|
53
59
|
|
54
60
|
meet({ 'mode' => 'all' }, [
|
@@ -56,13 +62,15 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
56
62
|
wd('a|?'),
|
57
63
|
wd('yet|?'),
|
58
64
|
wd('blubs|?'),
|
59
|
-
ai('EOF|')
|
65
|
+
ai('EOF|'),
|
66
|
+
ai('EOT|')
|
60
67
|
], [
|
61
68
|
wd('bla|IDF'),
|
62
69
|
wd('a|?', 'a|z'),
|
63
70
|
wd('yet|?', 'yet|z'),
|
64
71
|
wd('blubs|?', 'blub|z'),
|
65
|
-
ai('EOF|')
|
72
|
+
ai('EOF|'),
|
73
|
+
ai('EOT|')
|
66
74
|
])
|
67
75
|
end
|
68
76
|
|
@@ -74,7 +82,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
74
82
|
wd('ties|?'),
|
75
83
|
wd('caress|?'),
|
76
84
|
wd('cats|?'),
|
77
|
-
ai('EOF|')
|
85
|
+
ai('EOF|'),
|
86
|
+
ai('EOT|')
|
78
87
|
], [
|
79
88
|
wd('S100|IDF'),
|
80
89
|
wd('caresses|?', 'caress|z'),
|
@@ -82,7 +91,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
82
91
|
wd('ties|?', 'ti|z'), # snowball: tie
|
83
92
|
wd('caress|?', 'caress|z'),
|
84
93
|
wd('cats|?', 'cat|z'),
|
85
|
-
ai('EOF|')
|
94
|
+
ai('EOF|'),
|
95
|
+
ai('EOT|')
|
86
96
|
])
|
87
97
|
end
|
88
98
|
|
@@ -95,7 +105,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
95
105
|
wd('bled|?'),
|
96
106
|
wd('motoring|?'),
|
97
107
|
wd('sing|?'),
|
98
|
-
ai('EOF|')
|
108
|
+
ai('EOF|'),
|
109
|
+
ai('EOT|')
|
99
110
|
], [
|
100
111
|
wd('S110|IDF'),
|
101
112
|
wd('agreed|?', 'agre|z'),
|
@@ -104,7 +115,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
104
115
|
wd('bled|?', 'bled|z'),
|
105
116
|
wd('motoring|?', 'motor|z'),
|
106
117
|
wd('sing|?', 'sing|z'),
|
107
|
-
ai('EOF|')
|
118
|
+
ai('EOF|'),
|
119
|
+
ai('EOT|')
|
108
120
|
])
|
109
121
|
end
|
110
122
|
|
@@ -121,7 +133,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
121
133
|
wd('fizzed|?'),
|
122
134
|
wd('failing|?'),
|
123
135
|
wd('filing|?'),
|
124
|
-
ai('EOF|')
|
136
|
+
ai('EOF|'),
|
137
|
+
ai('EOT|')
|
125
138
|
], [
|
126
139
|
wd('S111|IDF'),
|
127
140
|
wd('conflated|?', 'conflat|z'),
|
@@ -134,7 +147,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
134
147
|
wd('fizzed|?', 'fizz|z'),
|
135
148
|
wd('failing|?', 'fail|z'),
|
136
149
|
wd('filing|?', 'file|z'),
|
137
|
-
ai('EOF|')
|
150
|
+
ai('EOF|'),
|
151
|
+
ai('EOT|')
|
138
152
|
])
|
139
153
|
end
|
140
154
|
|
@@ -143,12 +157,14 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
143
157
|
wd('S120|IDF'),
|
144
158
|
wd('happy|?'),
|
145
159
|
wd('sky|?'),
|
146
|
-
ai('EOF|')
|
160
|
+
ai('EOF|'),
|
161
|
+
ai('EOT|')
|
147
162
|
], [
|
148
163
|
wd('S120|IDF'),
|
149
164
|
wd('happy|?', 'happi|z'),
|
150
165
|
wd('sky|?', 'sky|z'),
|
151
|
-
ai('EOF|')
|
166
|
+
ai('EOF|'),
|
167
|
+
ai('EOT|')
|
152
168
|
])
|
153
169
|
end
|
154
170
|
|
@@ -176,7 +192,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
176
192
|
wd('formality|?'),
|
177
193
|
wd('sensitivity|?'),
|
178
194
|
wd('sensibility|?'),
|
179
|
-
ai('EOF|')
|
195
|
+
ai('EOF|'),
|
196
|
+
ai('EOT|')
|
180
197
|
], [
|
181
198
|
wd('S200|IDF'),
|
182
199
|
wd('relational|?', 'relat|z'),
|
@@ -200,7 +217,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
200
217
|
wd('formality|?', 'formal|z'),
|
201
218
|
wd('sensitivity|?', 'sensit|z'),
|
202
219
|
wd('sensibility|?', 'sensibl|z'),
|
203
|
-
ai('EOF|')
|
220
|
+
ai('EOF|'),
|
221
|
+
ai('EOT|')
|
204
222
|
])
|
205
223
|
end
|
206
224
|
|
@@ -214,7 +232,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
214
232
|
wd('electrical|?'),
|
215
233
|
wd('hopeful|?'),
|
216
234
|
wd('goodness|?'),
|
217
|
-
ai('EOF|')
|
235
|
+
ai('EOF|'),
|
236
|
+
ai('EOT|')
|
218
237
|
], [
|
219
238
|
wd('S300|IDF'),
|
220
239
|
wd('triplicate|?', 'triplic|z'),
|
@@ -224,7 +243,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
224
243
|
wd('electrical|?', 'electr|z'),
|
225
244
|
wd('hopeful|?', 'hope|z'),
|
226
245
|
wd('goodness|?', 'good|z'),
|
227
|
-
ai('EOF|')
|
246
|
+
ai('EOF|'),
|
247
|
+
ai('EOT|')
|
228
248
|
])
|
229
249
|
end
|
230
250
|
|
@@ -250,7 +270,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
250
270
|
wd('homologous|?'),
|
251
271
|
wd('effective|?'),
|
252
272
|
wd('bowdlerize|?'),
|
253
|
-
ai('EOF|')
|
273
|
+
ai('EOF|'),
|
274
|
+
ai('EOT|')
|
254
275
|
], [
|
255
276
|
wd('S400|IDF'),
|
256
277
|
wd('revival|?', 'reviv|z'),
|
@@ -272,7 +293,8 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
272
293
|
wd('homologous|?', 'homolog|z'),
|
273
294
|
wd('effective|?', 'effect|z'),
|
274
295
|
wd('bowdlerize|?', 'bowdler|z'),
|
275
|
-
ai('EOF|')
|
296
|
+
ai('EOF|'),
|
297
|
+
ai('EOT|')
|
276
298
|
])
|
277
299
|
end
|
278
300
|
|
@@ -282,13 +304,15 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
282
304
|
wd('probate|?'),
|
283
305
|
wd('rate|?'),
|
284
306
|
wd('cease|?'),
|
285
|
-
ai('EOF|')
|
307
|
+
ai('EOF|'),
|
308
|
+
ai('EOT|')
|
286
309
|
], [
|
287
310
|
wd('S500|IDF'),
|
288
311
|
wd('probate|?', 'probat|z'),
|
289
312
|
wd('rate|?', 'rate|z'),
|
290
313
|
wd('cease|?', 'ceas|z'),
|
291
|
-
ai('EOF|')
|
314
|
+
ai('EOF|'),
|
315
|
+
ai('EOT|')
|
292
316
|
])
|
293
317
|
end
|
294
318
|
|
@@ -297,12 +321,14 @@ class TestAttendeeStemmer < AttendeeTestCase
|
|
297
321
|
wd('S510|IDF'),
|
298
322
|
wd('controll|?'),
|
299
323
|
wd('roll|?'),
|
300
|
-
ai('EOF|')
|
324
|
+
ai('EOF|'),
|
325
|
+
ai('EOT|')
|
301
326
|
], [
|
302
327
|
wd('S510|IDF'),
|
303
328
|
wd('controll|?', 'control|z'),
|
304
329
|
wd('roll|?', 'roll|z'),
|
305
|
-
ai('EOF|')
|
330
|
+
ai('EOF|'),
|
331
|
+
ai('EOT|')
|
306
332
|
])
|
307
333
|
end
|
308
334
|
|
@@ -6,111 +6,130 @@ class TestAttendeeTextReader < AttendeeTestCase
|
|
6
6
|
|
7
7
|
def test_lir_file
|
8
8
|
meet({ 'files' => 'test/lir.txt', 'records' => true, 'fields' => false }, nil, [
|
9
|
-
ai('LIR
|
9
|
+
ai('LIR|'), ai("FILE|#{path = File.expand_path('test/lir.txt')}"),
|
10
10
|
ai('RECORD|00237'),
|
11
|
-
'020: GERHARD.',
|
12
|
-
'025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
13
|
-
'056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
11
|
+
li('020: GERHARD.', 25),
|
12
|
+
li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
|
13
|
+
li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
|
14
|
+
li('', 266),
|
14
15
|
ai('RECORD|00238'),
|
15
|
-
'020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
16
|
-
'025: das DFG-Projekt GERHARD.',
|
16
|
+
li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
|
17
|
+
li('025: das DFG-Projekt GERHARD.', 422),
|
18
|
+
li('', 424),
|
17
19
|
ai('RECORD|00239'),
|
18
|
-
'020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
19
|
-
'056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
20
|
-
ai("EOF|#{path}")
|
20
|
+
li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
|
21
|
+
li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
|
22
|
+
ai("EOF|#{path}"),
|
23
|
+
ai('EOT|')
|
21
24
|
])
|
22
25
|
end
|
23
26
|
|
24
27
|
def test_lir_file_another_pattern
|
25
28
|
meet({ 'files' => 'test/lir2.txt', 'records' => '^\021(\d+)\022', 'fields' => false }, nil, [
|
26
|
-
ai('LIR
|
29
|
+
ai('LIR|'), ai("FILE|#{path = File.expand_path('test/lir2.txt')}"),
|
27
30
|
ai('RECORD|00237'),
|
28
|
-
'020: GERHARD.',
|
29
|
-
'025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
30
|
-
'056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
31
|
+
li('020: GERHARD.', 24),
|
32
|
+
li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 139),
|
33
|
+
li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 263),
|
34
|
+
li('', 265),
|
31
35
|
ai('RECORD|00238'),
|
32
|
-
'020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
33
|
-
'025: das DFG-Projekt GERHARD.',
|
36
|
+
li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 389),
|
37
|
+
li('025: das DFG-Projekt GERHARD.', 420),
|
38
|
+
li('', 422),
|
34
39
|
ai('RECORD|00239'),
|
35
|
-
'020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
36
|
-
'056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
37
|
-
ai("EOF|#{path}")
|
40
|
+
li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 507),
|
41
|
+
li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 631),
|
42
|
+
ai("EOF|#{path}"),
|
43
|
+
ai('EOT|')
|
38
44
|
])
|
39
45
|
end
|
40
46
|
|
41
47
|
def test_lir_file_no_capture
|
42
48
|
meet({ 'files' => 'test/lir.txt', 'records' => '^\[\d+\.\]', 'fields' => false }, nil, [
|
43
|
-
ai('LIR
|
49
|
+
ai('LIR|'), ai("FILE|#{path = File.expand_path('test/lir.txt')}"),
|
44
50
|
ai('RECORD|[00237.]'),
|
45
|
-
'020: GERHARD.',
|
46
|
-
'025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
47
|
-
'056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
51
|
+
li('020: GERHARD.', 25),
|
52
|
+
li('025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
|
53
|
+
li('056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
|
54
|
+
li('', 266),
|
48
55
|
ai('RECORD|[00238.]'),
|
49
|
-
'020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
50
|
-
'025: das DFG-Projekt GERHARD.',
|
56
|
+
li('020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
|
57
|
+
li('025: das DFG-Projekt GERHARD.', 422),
|
58
|
+
li('', 424),
|
51
59
|
ai('RECORD|[00239.]'),
|
52
|
-
'020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
53
|
-
'056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
54
|
-
ai("EOF|#{path}")
|
60
|
+
li('020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
|
61
|
+
li('056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
|
62
|
+
ai("EOF|#{path}"),
|
63
|
+
ai('EOT|')
|
55
64
|
])
|
56
65
|
end
|
57
66
|
|
58
67
|
def test_lir_file_fields
|
59
68
|
meet({ 'files' => 'test/lir.txt', 'records' => true }, nil, [
|
60
|
-
ai('LIR
|
69
|
+
ai('LIR|'), ai("FILE|#{path = File.expand_path('test/lir.txt')}"),
|
61
70
|
ai('RECORD|00237'),
|
62
|
-
'GERHARD.',
|
63
|
-
'Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
64
|
-
'Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
71
|
+
li('GERHARD.', 25),
|
72
|
+
li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
|
73
|
+
li('Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
|
74
|
+
li('', 266),
|
65
75
|
ai('RECORD|00238'),
|
66
|
-
'Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
67
|
-
'das DFG-Projekt GERHARD.',
|
76
|
+
li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
|
77
|
+
li('das DFG-Projekt GERHARD.', 422),
|
78
|
+
li('', 424),
|
68
79
|
ai('RECORD|00239'),
|
69
|
-
'Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
70
|
-
'"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
71
|
-
ai("EOF|#{path}")
|
80
|
+
li('Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
|
81
|
+
li('"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
|
82
|
+
ai("EOF|#{path}"),
|
83
|
+
ai('EOT|')
|
72
84
|
])
|
73
85
|
end
|
74
86
|
|
75
87
|
def test_lir_file_fields_another_pattern
|
76
88
|
meet({ 'files' => 'test/lir.txt', 'records' => true, 'fields' => '^\d+:' }, nil, [
|
77
|
-
ai('LIR
|
89
|
+
ai('LIR|'), ai("FILE|#{path = File.expand_path('test/lir.txt')}"),
|
78
90
|
ai('RECORD|00237'),
|
79
|
-
' GERHARD.',
|
80
|
-
' Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
81
|
-
' Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
91
|
+
li(' GERHARD.', 25),
|
92
|
+
li(' Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
|
93
|
+
li(' Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
|
94
|
+
li('', 266),
|
82
95
|
ai('RECORD|00238'),
|
83
|
-
' Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
84
|
-
' das DFG-Projekt GERHARD.',
|
96
|
+
li(' Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
|
97
|
+
li(' das DFG-Projekt GERHARD.', 422),
|
98
|
+
li('', 424),
|
85
99
|
ai('RECORD|00239'),
|
86
|
-
' Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
87
|
-
' "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
88
|
-
ai("EOF|#{path}")
|
100
|
+
li(' Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
|
101
|
+
li(' "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
|
102
|
+
ai("EOF|#{path}"),
|
103
|
+
ai('EOT|')
|
89
104
|
])
|
90
105
|
end
|
91
106
|
|
92
107
|
def test_lir_file_fields_no_capture
|
93
108
|
meet({ 'files' => 'test/lir.txt', 'records' => '^\[\d+\.\]' }, nil, [
|
94
|
-
ai('LIR
|
109
|
+
ai('LIR|'), ai("FILE|#{path = File.expand_path('test/lir.txt')}"),
|
95
110
|
ai('RECORD|[00237.]'),
|
96
|
-
'GERHARD.',
|
97
|
-
'Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
98
|
-
'Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
|
111
|
+
li('GERHARD.', 25),
|
112
|
+
li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 140),
|
113
|
+
li('Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.', 264),
|
114
|
+
li('', 266),
|
99
115
|
ai('RECORD|[00238.]'),
|
100
|
-
'Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
|
101
|
-
'das DFG-Projekt GERHARD.',
|
116
|
+
li('Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.', 391),
|
117
|
+
li('das DFG-Projekt GERHARD.', 422),
|
118
|
+
li('', 424),
|
102
119
|
ai('RECORD|[00239.]'),
|
103
|
-
'Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
|
104
|
-
'"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
|
105
|
-
ai("EOF|#{path}")
|
120
|
+
li('Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.', 510),
|
121
|
+
li('"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.', 634),
|
122
|
+
ai("EOF|#{path}"),
|
123
|
+
ai('EOT|')
|
106
124
|
])
|
107
125
|
end
|
108
126
|
|
109
127
|
def test_normal_file
|
110
128
|
meet({ 'files' => 'test/mul.txt' }, nil, [
|
111
129
|
ai("FILE|#{path = File.expand_path('test/mul.txt')}"),
|
112
|
-
'Die abstrakte Kunst ist schön.',
|
113
|
-
ai("EOF|#{path}")
|
130
|
+
['Die abstrakte Kunst ist schön.', 31],
|
131
|
+
ai("EOF|#{path}"),
|
132
|
+
ai('EOT|')
|
114
133
|
])
|
115
134
|
end
|
116
135
|
|