scylla 0.5.0 → 0.6.0

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 (58) hide show
  1. data/Gemfile +4 -2
  2. data/Gemfile.lock +16 -1
  3. data/lib/scylla/classifier.rb +1 -1
  4. data/lib/scylla/generator.rb +16 -4
  5. data/lib/scylla/lms/afrikaans.lm +232 -232
  6. data/lib/scylla/lms/arabic.lm +175 -175
  7. data/lib/scylla/lms/bulgarian.lm +225 -225
  8. data/lib/scylla/lms/catalan.lm +309 -309
  9. data/lib/scylla/lms/danish.lm +167 -167
  10. data/lib/scylla/lms/english.lm +398 -398
  11. data/lib/scylla/lms/finnish.lm +237 -237
  12. data/lib/scylla/lms/french.lm +148 -148
  13. data/lib/scylla/lms/german.lm +258 -258
  14. data/lib/scylla/lms/greek.lm +236 -236
  15. data/lib/scylla/lms/hebrew.lm +154 -154
  16. data/lib/scylla/lms/hindi.lm +139 -139
  17. data/lib/scylla/lms/icelandic.lm +239 -239
  18. data/lib/scylla/lms/indonesian.lm +244 -244
  19. data/lib/scylla/lms/italian.lm +248 -248
  20. data/lib/scylla/lms/japanese.lm +90 -90
  21. data/lib/scylla/lms/korean.lm +306 -306
  22. data/lib/scylla/lms/norwegian.lm +193 -193
  23. data/lib/scylla/lms/polish.lm +241 -241
  24. data/lib/scylla/lms/portuguese.lm +232 -232
  25. data/lib/scylla/lms/romanian.lm +246 -246
  26. data/lib/scylla/lms/slovak.lm +242 -242
  27. data/lib/scylla/lms/slovenian.lm +229 -229
  28. data/lib/scylla/lms/spanish.lm +164 -164
  29. data/lib/scylla/lms/swedish.lm +157 -157
  30. data/lib/scylla/lms/tagalog.lm +247 -247
  31. data/lib/scylla/lms/thai.lm +252 -252
  32. data/lib/scylla/lms/turkish.lm +285 -285
  33. data/lib/scylla/lms/vietnamese.lm +250 -250
  34. data/lib/scylla/lms/welsh.lm +248 -248
  35. data/lib/scylla/resources.rb +1 -9
  36. data/lib/scylla.rb +4 -0
  37. data/scylla.gemspec +2 -120
  38. data/source_texts/english.txt +62 -27
  39. data/test/classifier_test.rb +1 -3
  40. data/test/fixtures/lms/danish.lm +173 -173
  41. data/test/fixtures/lms/english.lm +220 -220
  42. data/test/fixtures/lms/french.lm +175 -175
  43. data/test/fixtures/lms/german.lm +254 -254
  44. data/test/fixtures/lms/hindi.lm +139 -139
  45. data/test/fixtures/lms/italian.lm +236 -236
  46. data/test/fixtures/lms/japanese.lm +88 -88
  47. data/test/fixtures/lms/norwegian.lm +182 -182
  48. data/test/fixtures/lms/spanish.lm +164 -164
  49. data/test/fixtures/test_languages/spanish +0 -1
  50. data/test/generator_test.rb +13 -0
  51. data/test/helper.rb +2 -0
  52. metadata +18 -25
  53. data/.document +0 -5
  54. data/lib/scylla/lms/13375P33K.lm +0 -400
  55. data/scylla-0.1.0.gem +0 -0
  56. data/source_texts/13375P33K.txt +0 -199
  57. data/test/fixtures/lms/13375p33k.lm +0 -400
  58. data/test/fixtures/source_texts/13375P33K.txt +0 -199
data/Gemfile CHANGED
@@ -8,10 +8,12 @@ source "http://rubygems.org"
8
8
  group :development do
9
9
  gem "bundler", "~> 1.0.0"
10
10
  gem "jeweler", "~> 1.6.4"
11
+ gem "mail"
12
+ gem "sanitize"
11
13
  end
12
14
 
13
15
  group :test do
14
16
  gem "shoulda", ">= 0"
15
- gem "mocha", "~> 0.9.12", :require => nil
16
- gem "ruby-debug", "~> 0.10.4"
17
+ gem "mocha"
18
+ gem "ruby-debug", "~> 0.10.4"
17
19
  end
data/Gemfile.lock CHANGED
@@ -3,13 +3,21 @@ GEM
3
3
  specs:
4
4
  columnize (0.3.4)
5
5
  git (1.2.5)
6
+ i18n (0.6.0)
6
7
  jeweler (1.6.4)
7
8
  bundler (~> 1.0)
8
9
  git (>= 1.2.5)
9
10
  rake
10
11
  linecache (0.46)
11
12
  rbx-require-relative (> 0.0.4)
13
+ mail (2.3.0)
14
+ i18n (>= 0.4.0)
15
+ mime-types (~> 1.16)
16
+ treetop (~> 1.4.8)
17
+ mime-types (1.16)
12
18
  mocha (0.9.12)
19
+ nokogiri (1.4.7)
20
+ polyglot (0.3.2)
13
21
  rake (0.9.2)
14
22
  rbx-require-relative (0.0.5)
15
23
  ruby-debug (0.10.4)
@@ -17,7 +25,12 @@ GEM
17
25
  ruby-debug-base (~> 0.10.4.0)
18
26
  ruby-debug-base (0.10.4)
19
27
  linecache (>= 0.3)
28
+ sanitize (2.0.3)
29
+ nokogiri (>= 1.4.4, < 1.6)
20
30
  shoulda (2.11.3)
31
+ treetop (1.4.10)
32
+ polyglot
33
+ polyglot (>= 0.3.1)
21
34
 
22
35
  PLATFORMS
23
36
  ruby
@@ -25,6 +38,8 @@ PLATFORMS
25
38
  DEPENDENCIES
26
39
  bundler (~> 1.0.0)
27
40
  jeweler (~> 1.6.4)
28
- mocha (~> 0.9.12)
41
+ mail
42
+ mocha
29
43
  ruby-debug (~> 0.10.4)
44
+ sanitize
30
45
  shoulda
@@ -5,7 +5,7 @@ module Scylla
5
5
  # limit : Up to how many matching language results should be displayed
6
6
  # ngrams : The total number of ngrams that are stored for each language
7
7
  # threshold: The threshold score for matches
8
- def initialize(limit = 10, ngrams = 400, threshold = 1.06)
8
+ def initialize(limit = 10, ngrams = 400, threshold = 1.05)
9
9
  @limit = limit
10
10
  @ngrams = ngrams
11
11
  @threshold = threshold
@@ -1,3 +1,6 @@
1
+ require 'sanitize'
2
+ require 'cgi'
3
+
1
4
  module Scylla
2
5
  class Generator
3
6
  attr_accessor :dirtext, :dirlm, :minsize
@@ -10,7 +13,7 @@ module Scylla
10
13
  @minsize = minsize
11
14
  end
12
15
 
13
- # This loads all the .txt files in the specified source training text folder
16
+ # Loads all the .txt files in the specified source training text folder
14
17
  # and creates language maps using ngram frequencies. The maps are stored in
15
18
  # lib/scylla/lms as .lm files
16
19
  def train
@@ -26,7 +29,7 @@ module Scylla
26
29
  # lib/scylla/lms
27
30
  def write_lm(path)
28
31
  text = ""
29
- File.open(path).each { |line| text += line.strip }
32
+ File.open(path).each { |line| text += clean(line) }
30
33
  p "Creating language map for " + path
31
34
  lm = create_lm(text, true)
32
35
  lmname = File.join(@dirlm, File.basename(path, ".txt") + ".lm")
@@ -41,12 +44,21 @@ module Scylla
41
44
  end
42
45
  end
43
46
 
44
- # This creates a language map for a given input string.
47
+ def clean(string)
48
+ string.strip!
49
+ string = Sanitize.clean(string)
50
+ string = CGI.unescapeHTML(string)
51
+ string.gsub!(/(?:http|https):\/\/[a-z0-9]+(?:[\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(?:(?::[0-9]{1,5})?\/[^\s]*)?/, "")
52
+ string.gsub!(/[\*\^><!\"#\$%&\'\(\)\*\+:;=\?@\{\}\[\]|-]/,"")
53
+ string.strip
54
+ end
55
+
56
+ # Creates a language map for a given input string.
45
57
  # The frequencies boolean specifies whether or not the method should
46
58
  # return the freqencies of the ngrams, or simply an array in sorted order
47
59
  def create_lm(input, frequencies = false)
48
60
  text = ""
49
- input.each_line {|line| text += line.strip }
61
+ input.each_line {|line| text += clean(line) }
50
62
  input = text
51
63
  ngram = Hash.new
52
64
  input.split(/[\d\s\[\]]/).each do |word|
@@ -8,26 +8,27 @@ r 224
8
8
  t 206
9
9
  s 202
10
10
  d 190
11
- e_ 141
11
+ e_ 144
12
12
  l 126
13
13
  g 125
14
14
  m 124
15
15
  ie 123
16
16
  k 122
17
- n_ 111
17
+ n_ 112
18
18
  t_ 92
19
19
  h 89
20
- an 83
21
20
  er 83
21
+ an 83
22
22
  v 82
23
23
  y 81
24
24
  _d 76
25
+ ie_ 76
25
26
  aa 75
26
- ie_ 74
27
- _h 73
27
+ _h 74
28
28
  w 73
29
29
  di 73
30
30
  s_ 71
31
+ _n 69
31
32
  _v 66
32
33
  en 65
33
34
  . 62
@@ -38,7 +39,6 @@ u 59
38
39
  _di 58
39
40
  _s 57
40
41
  et 56
41
- _n 56
42
42
  _m 53
43
43
  die 51
44
44
  b 50
@@ -47,354 +47,354 @@ ee 47
47
47
  ni 46
48
48
  _w 46
49
49
  in 46
50
- _die 45
51
50
  die_ 45
51
+ _die 45
52
52
  an_ 45
53
53
  et_ 44
54
- _e 43
55
54
  p 43
55
+ _e 43
56
56
  de 42
57
57
  _die_ 41
58
58
  _o 40
59
- ._ 36
59
+ ._ 38
60
60
  nd 36
61
- _g 35
62
- el 35
63
61
  ar 35
64
62
  at 35
65
- nie 34
63
+ _g 35
64
+ el 35
66
65
  oe 34
67
66
  k_ 34
68
67
  wa 34
69
- _ni 33
68
+ nie 34
70
69
  , 33
70
+ g_ 33
71
71
  _a 33
72
+ _ni 33
72
73
  he 32
73
74
  oo 32
74
- g_ 32
75
75
  _nie 32
76
+ ,_ 31
76
77
  ek 30
77
- ,_ 30
78
- om 29
79
78
  _i 29
80
- en_ 28
79
+ om 29
80
+ _wa 28
81
81
  me 28
82
- va 28
83
- _k 28
82
+ en_ 28
84
83
  _he 28
84
+ _k 28
85
+ va 28
85
86
  aan 28
86
- _wa 28
87
87
  is 27
88
- _en 26
89
88
  f 26
89
+ _en 26
90
90
  at_ 26
91
91
  _ge 26
92
- es 25
93
92
  or 25
94
- it 24
95
- as 24
96
- _t 24
97
- ma 24
93
+ es 25
98
94
  er_ 24
95
+ it 24
99
96
  on 24
97
+ het 24
100
98
  _b 24
101
- m_ 24
99
+ ma 24
100
+ _t 24
102
101
  l_ 24
103
- het 24
102
+ m_ 24
104
103
  aar 24
104
+ as 24
105
105
  d_ 23
106
106
  van 23
107
- li 22
108
- _het 22
109
- ou 22
110
107
  ra 22
108
+ ou 22
109
+ _het 22
110
+ li 22
111
111
  _va 21
112
- be 21
113
112
  het_ 21
114
- " 21
115
- _het_ 20
116
- rd 20
117
- ng 20
113
+ be 21
114
+ da 20
118
115
  om_ 20
119
116
  al 20
120
- da 20
121
- _van 19
117
+ ng 20
118
+ _het_ 20
119
+ rd 20
120
+ te_ 19
122
121
  st 19
123
- ke 19
124
- ' 19
125
122
  _en_ 19
123
+ _van 19
124
+ ke 19
125
+ van_ 18
126
+ is_ 18
126
127
  sy 18
127
128
  ag 18
128
- is_ 18
129
129
  sy_ 18
130
- van_ 18
131
- te_ 18
132
- re 17
133
- and 17
134
- aar_ 17
135
- se 17
130
+ _van_ 17
136
131
  ro 17
137
132
  - 17
138
- _van_ 17
139
- hy 17
140
- le 17
141
- der 17
133
+ aar_ 17
134
+ _ma 17
142
135
  ar_ 17
136
+ re 17
137
+ nie_ 17
143
138
  nde 17
144
- _ma 17
139
+ se 17
140
+ le 17
141
+ and 17
142
+ der 17
143
+ hy 17
144
+ as_ 16
145
145
  _hy 16
146
- _me 16
147
146
  H 16
148
- we 16
149
- as_ 16
150
147
  ei 16
148
+ _me 16
149
+ _H 16
151
150
  aan_ 16
152
- ns 15
153
- ik 15
151
+ _nie_ 16
152
+ we 16
154
153
  ho 15
155
- em 15
156
- so 15
157
- nie_ 15
158
154
  _sy_ 15
159
- _sy 15
160
- _' 15
161
- ko 15
162
155
  it_ 15
163
- _H 15
156
+ ko 15
157
+ em 15
158
+ ns 15
164
159
  ig 15
165
- 'n 14
160
+ ik 15
161
+ so 15
162
+ _sy 15
163
+ rs 14
164
+ in_ 14
166
165
  hy_ 14
167
- mo 14
168
166
  ha 14
167
+ si 14
168
+ vo 14
169
+ nt 14
169
170
  vi 14
171
+ mo 14
170
172
  ve 14
171
- nt 14
172
- _nie_ 14
173
- vo 14
174
- rs 14
175
- si 14
176
- in_ 14
177
- ou_ 13
178
- 'n_ 13
179
- _in 13
180
- _be 13
181
- _'n 13
182
- _'n_ 13
183
173
  no 13
184
- _vi 13
185
- _hy_ 13
186
174
  rt 13
175
+ _n_ 13
176
+ ou_ 13
187
177
  u_ 13
178
+ _in 13
179
+ eer 13
180
+ _hy_ 13
181
+ wo 13
182
+ e, 13
188
183
  ag_ 13
184
+ _be 13
185
+ e,_ 13
186
+ _vi 13
189
187
  op 13
190
- e, 13
191
- wo 13
192
- eer 13
193
- ed 12
194
- ing 12
195
- ne 12
196
- e,_ 12
197
- ver 12
198
- ew 12
199
- _te_ 12
200
188
  ek_ 12
201
189
  _vo 12
202
- _is 12
203
- was 12
204
- _te 12
205
- _om 12
190
+ _te_ 12
191
+ ew 12
192
+ ver 12
206
193
  _om_ 12
207
- wat 12
194
+ ne 12
195
+ was 12
196
+ _is 12
197
+ e. 12
208
198
  al_ 12
199
+ wat 12
200
+ ing 12
201
+ _om 12
202
+ _te 12
203
+ ed 12
204
+ _so 11
209
205
  _is_ 11
206
+ vir_ 11
207
+ ord 11
210
208
  bl 11
209
+ vir 11
210
+ ka 11
211
+ _ko 11
211
212
  ta 11
212
- _mo 11
213
- _no 11
214
- _so 11
215
- moe 11
216
- ord 11
217
213
  met 11
218
- maa 11
214
+ wat_ 11
219
215
  _was 11
220
- ka 11
221
- vir 11
222
- ir 11
223
216
  _on 11
224
- vir_ 11
225
- _ko 11
226
- ir_ 11
227
- _p 11
228
- wat_ 11
229
- e. 11
217
+ _mo 11
218
+ ir 11
219
+ moe 11
220
+ maa 11
230
221
  S 11
222
+ _p 11
223
+ _ha 11
224
+ _no 11
225
+ ir_ 11
231
226
  met_ 10
232
- sie 10
233
- p_ 10
234
- nge 10
235
- was_ 10
236
- vr 10
237
- _aa 10
227
+ sta 10
228
+ _aan 10
238
229
  to 10
239
- _ha 10
240
- ers 10
241
- raa 10
230
+ f_ 10
231
+ nder 10
232
+ sie 10
242
233
  _in_ 10
243
234
  oor 10
244
- ri 10
245
- nder 10
246
- eg 10
247
- lik 10
235
+ _vir 10
248
236
  E 10
237
+ _vir_ 10
249
238
  ui 10
250
239
  _da 10
240
+ was_ 10
241
+ ers 10
242
+ vr 10
243
+ ri 10
244
+ _was_ 10
245
+ lik 10
246
+ raa 10
247
+ _aa 10
251
248
  _ve 10
252
- sta 10
253
249
  nk 10
254
- f_ 10
255
- _vir 10
256
- _was_ 10
257
- _aan 10
258
- _vir_ 10
259
- _ver 9
250
+ nge 10
251
+ eg 10
252
+ p_ 10
253
+ A 9
254
+ de_ 9
260
255
  ges 9
256
+ _wat 9
257
+ pr 9
261
258
  ie. 9
262
259
  ll 9
263
- man 9
264
- _met 9
265
- de_ 9
260
+ _ver 9
266
261
  _ho 9
267
- _vr 9
268
- _moe 9
269
- pr 9
270
262
  el_ 9
263
+ _vr 9
264
+ _Hy 9
265
+ _met 9
266
+ man 9
271
267
  _ek 9
268
+ _met_ 9
269
+ _se 9
272
270
  _maa 9
273
- Hy 9
274
- _wat 9
275
271
  og 9
276
- ." 9
277
- _se 9
278
- A 9
279
- _met_ 9
272
+ Hy 9
273
+ _moe 9
274
+ wor 8
280
275
  rte 8
281
- _l 8
282
- _my 8
283
276
  aat 8
284
- M 8
285
- wor 8
286
- _Hy 8
287
- _my_ 8
288
- ga 8
289
277
  my_ 8
290
- een 8
291
- my 8
278
+ ak 8
279
+ j 8
292
280
  es_ 8
293
- Hy_ 8
281
+ _al 8
294
282
  _op 8
295
- din 8
296
- kl 8
297
- _Hy_ 8
298
- taa 8
299
283
  _ek_ 8
300
- ewe 8
284
+ nie. 8
285
+ _Hy_ 8
286
+ D 8
287
+ _l 8
301
288
  _to 8
302
- j 8
303
- eu 8
304
- ak 8
305
- sk 8
289
+ my 8
290
+ ga 8
306
291
  _nie. 8
292
+ _my_ 8
293
+ taa 8
294
+ Hy_ 8
307
295
  _r 8
308
- word 8
309
- nie. 8
296
+ din 8
297
+ M 8
310
298
  na 8
311
- _al 8
312
- _wat_ 8
313
299
  pa 8
314
- D 8
315
- le_ 7
316
- erd 7
317
- uit 7
318
- br 7
319
- staa 7
320
- a_ 7
321
- op_ 7
322
- _pr 7
300
+ _wat_ 8
301
+ word 8
302
+ sk 8
303
+ ewe 8
304
+ eu 8
305
+ _my 8
306
+ kl 8
307
+ een 8
323
308
  ier 7
309
+ ke_ 7
310
+ _dit 7
311
+ op_ 7
312
+ og_ 7
313
+ gaa 7
324
314
  er. 7
325
- lin 7
315
+ dit 7
316
+ gaan 7
326
317
  _maar 7
327
- oe_ 7
328
- nd_ 7
329
- id 7
330
- do 7
331
- ders 7
332
- ke_ 7
333
318
  _ges 7
334
319
  r. 7
335
- gew 7
336
- ie,_ 7
320
+ ur 7
321
+ wee 7
337
322
  end 7
323
+ oe_ 7
324
+ staa 7
325
+ _pr 7
326
+ e._ 7
327
+ ste 7
338
328
  _st 7
339
- O 7
329
+ ie,_ 7
330
+ la 7
331
+ gew 7
332
+ ie, 7
333
+ maar_ 7
334
+ id 7
335
+ nd_ 7
336
+ do 7
337
+ a_ 7
338
+ lin 7
340
339
  tee 7
341
- ur 7
342
- dit 7
343
- gaan 7
344
- _ne 7
345
- wee 7
346
- ger 7
347
- oet 7
340
+ ti 7
341
+ le_ 7
348
342
  s. 7
343
+ ders 7
344
+ ger 7
345
+ br 7
346
+ erd 7
349
347
  maar 7
350
- ie, 7
351
- maar_ 7
352
- gaa 7
353
- _dit 7
354
- og_ 7
355
- la 7
356
- ste 7
348
+ O 7
349
+ uit 7
350
+ ng_ 7
351
+ _ne 7
352
+ oet 7
353
+ rs_ 6
354
+ ns_ 6
355
+ ent 6
357
356
  nog 6
357
+ dat 6
358
+ _wi 6
359
+ nig 6
360
+ rm 6
361
+ oet_ 6
358
362
  eer_ 6
359
- _bl 6
360
- _hier 6
361
- _hi 6
362
- ns_ 6
363
- gaan_ 6
364
- toe 6
365
- yd 6
366
- lle 6
367
363
  ens 6
368
- eur 6
369
- _u 6
370
- nders 6
371
- dat_ 6
372
- os 6
373
- hi 6
374
- eid 6
364
+ inde 6
375
365
  _wo 6
376
- t. 6
377
- _uit 6
378
- ert 6
379
- _as 6
366
+ _hie 6
367
+ _hi 6
368
+ eke 6
369
+ il 6
370
+ _ui 6
371
+ ie._ 6
372
+ wi 6
380
373
  nda 6
374
+ _hier 6
375
+ ing_ 6
376
+ lle 6
377
+ hie 6
378
+ toe 6
379
+ os 6
380
+ eni 6
381
381
  aak 6
382
- ng_ 6
383
- ind 6
384
- dat 6
382
+ dat_ 6
383
+ yd 6
384
+ hi 6
385
385
  mer 6
386
- oet_ 6
387
- nie, 6
388
- _nie, 6
389
- rs_ 6
390
- nig 6
386
+ kom 6
387
+ hier 6
388
+ _uit 6
391
389
  lo 6
392
- e._ 6
393
- r,_ 6
394
- ie._ 6
390
+ _nog 6
395
391
  ad 6
396
- hier 6
397
- am 6
398
- eke 6
399
- ige 6
392
+ s._ 6
393
+ eid 6
400
394
  eli 6
395
+ _nie, 6
396
+ r, 6
397
+ _bl 6
398
+ gaan_ 6
399
+ ige 6
400
+ am 6