scylla 0.5.0 → 0.6.0

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