greek_stemmer 1.1.10 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +5 -3
- data/benchmarks/stemming_sample.txt +33 -31
- data/config/stemmer.yml +18 -1
- data/lib/greek_stemmer.rb +29 -14
- data/lib/greek_stemmer/version.rb +1 -1
- data/spec/greek_stemmer_spec.rb +16 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7d74d733ad6b73cb5ef7dd799abddaa9968723838d5905da7c087792fd62cbe3
|
4
|
+
data.tar.gz: e4041de586528a85eeff003e894ffa4d6062dd696e87e144e362345f2b01da19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 481525b1f4c37ee929722bdcf8aec5ff6003e0cac65c4c3300a8eb51d12272305b71b257ae48c80affc9e25e5b9ee19cb4c08d5e5528a0a5fed6411b372881db
|
7
|
+
data.tar.gz: efbc852c6a17d5a03d6c35a6edbfec7d809bb19cfcd26d7db4e1a63af0ff2b9de51a4b9c0723b294d6acc6608cd69e73428a0e2b6ff31466663fb729af1db6bc
|
data/README.md
CHANGED
@@ -41,9 +41,11 @@ Original work: [bandito](https://github.com/bandito)
|
|
41
41
|
|
42
42
|
1. Fork it ( http://github.com/<my-github-username>/greek_stemmer/fork )
|
43
43
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
44
|
-
3.
|
45
|
-
|
46
|
-
|
44
|
+
3. Perform changes and run `bundle exec rake update_greek_stemming_sample` to
|
45
|
+
update the stemming samples
|
46
|
+
4. Commit your changes (`git commit -a`)
|
47
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
48
|
+
6. Create new Pull Request
|
47
49
|
|
48
50
|
## License
|
49
51
|
|
@@ -2732,7 +2732,7 @@
|
|
2732
2732
|
ΒΕΡΕΝΙΚ,ΒΕΡΕΝΙΚ
|
2733
2733
|
ΒΕΡΕΝΙΚΗΣ,ΒΕΡΕΝ
|
2734
2734
|
ΒΕΡΜΟΥΔΑ,ΒΕΡΜΟΥΔ
|
2735
|
-
|
2735
|
+
ΒΕΡΜΟΥΔΕΣ,ΒΕΡΜΟΥΔ
|
2736
2736
|
ΒΕΡΝ,ΒΕΡΝ
|
2737
2737
|
ΒΕΡΝΑ,ΒΕΡΝ
|
2738
2738
|
ΒΕΡΝΤ,ΒΕΡΝΤ
|
@@ -4196,9 +4196,9 @@
|
|
4196
4196
|
ΔΙΑΦΟΡΕΤΙΚΑ,ΔΙΑΦΟΡΕΤ
|
4197
4197
|
ΔΙΑΦΟΡΕΤΙΚΟΣ,ΔΙΑΦΟΡΕΤ
|
4198
4198
|
ΔΙΑΦΟΡΙΚ,ΔΙΑΦΟΡΙΚ
|
4199
|
-
|
4200
|
-
|
4201
|
-
|
4199
|
+
ΔΙΑΦΟΡΙΚΕΣ,ΔΙΑΦΟΡΙΚ
|
4200
|
+
ΔΙΑΦΟΡΙΚΗ,ΔΙΑΦΟΡΙΚ
|
4201
|
+
ΔΙΑΦΟΡΙΚΟΣ,ΔΙΑΦΟΡΙΚ
|
4202
4202
|
ΔΙΑΦΟΡΩΝ,ΔΙΑΦΟΡ
|
4203
4203
|
ΔΙΑΦΥΛΛΙΚ,ΔΙΑΦΥΛΛΙΚ
|
4204
4204
|
ΔΙΑΦΥΛΛΙΚΕΣ,ΔΙΑΦΥΛΛ
|
@@ -7711,7 +7711,7 @@
|
|
7711
7711
|
ΚΑΝΙΑΡΗΣ,ΚΑΝΙΑΡ
|
7712
7712
|
ΚΑΝΝΑΒΗ,ΚΑΝΝΑΒ
|
7713
7713
|
ΚΑΝΝΑΒΙΣ,ΚΑΝΝΑΒΙΣ
|
7714
|
-
|
7714
|
+
ΚΑΝΟ,ΚΑΝΟ
|
7715
7715
|
ΚΑΝΟΝ,ΚΑΝΟΝ
|
7716
7716
|
ΚΑΝΟΝΕΣ,ΚΑΝΟΝ
|
7717
7717
|
ΚΑΝΟΝΙΚ,ΚΑΝΟΝΙΚ
|
@@ -7867,7 +7867,7 @@
|
|
7867
7867
|
ΚΑΡΦ,ΚΑΡΦ
|
7868
7868
|
ΚΑΡΦΙ,ΚΑΡΦ
|
7869
7869
|
ΚΑΡΦΩΤΑ,ΚΑΡΦΩ
|
7870
|
-
|
7870
|
+
ΚΑΡΦΩΤΟ,ΚΑΡΦΩ
|
7871
7871
|
ΚΑΡΦΩΤΟΙ,ΚΑΡΦΩΤ
|
7872
7872
|
ΚΑΡΩ,ΚΑΡ
|
7873
7873
|
ΚΑΣ,Κ
|
@@ -8859,7 +8859,7 @@
|
|
8859
8859
|
ΚΡΕΒΑΤΙΑ,ΚΡΕΒΑΤ
|
8860
8860
|
ΚΡΕΜΑΜΕΝ,ΚΡΕΜΑΜΕΝ
|
8861
8861
|
ΚΡΕΜΑΜΕΝΟΣ,ΚΡΕΜΑΜΕΝ
|
8862
|
-
|
8862
|
+
ΚΡΕΜΑΣ,ΚΡΕΜΑ
|
8863
8863
|
ΚΡΕΜΑΣΜΕΝ,ΚΡΕΜΑΣΜΕΝ
|
8864
8864
|
ΚΡΕΜΑΣΜΕΝΟΙ,ΚΡΕΜΑΣΜΕΝ
|
8865
8865
|
ΚΡΕΜΑΣΟΥΝ,ΚΡΕΜΑΣ
|
@@ -9668,7 +9668,7 @@
|
|
9668
9668
|
ΜΑΓΙΚΟ,ΜΑΓ
|
9669
9669
|
ΜΑΓΙΚΟΣ,ΜΑΓ
|
9670
9670
|
ΜΑΓΙΚΟΥ,ΜΑΓ
|
9671
|
-
|
9671
|
+
ΜΑΓΙΟ,ΜΑΓΙΟ
|
9672
9672
|
ΜΑΓΙΟΡΚ,ΜΑΓΙΟΡΚ
|
9673
9673
|
ΜΑΓΙΟΡΚΑ,ΜΑΓΙΟΡΚ
|
9674
9674
|
ΜΑΓΙΣΣ,ΜΑΓΙΣΣ
|
@@ -9976,8 +9976,8 @@
|
|
9976
9976
|
ΜΑΤ,ΜΑΤ
|
9977
9977
|
ΜΑΤΑΚΙΑ,ΜΑΤΑΚ
|
9978
9978
|
ΜΑΤΑΚΙΑΣ,ΜΑΤΑΚ
|
9979
|
-
|
9980
|
-
|
9979
|
+
ΜΑΤΙ,ΜΑΤΙ
|
9980
|
+
ΜΑΤΙΑ,ΜΑΤΙ
|
9981
9981
|
ΜΑΤΙΑΣ,ΜΑΤ
|
9982
9982
|
ΜΑΤΙΕΣ,ΜΑΤ
|
9983
9983
|
ΜΑΤΣΑΔ,ΜΑΤΣΑΔ
|
@@ -10718,6 +10718,8 @@
|
|
10718
10718
|
ΜΟΝΟΦΑΣΙΚΟΣ,ΜΟΝΟΦΑΣ
|
10719
10719
|
ΜΟΝΟΦΘΑΛΜ,ΜΟΝΟΦΘΑΛΜ
|
10720
10720
|
ΜΟΝΟΦΘΑΛΜΟΣ,ΜΟΝΟΦΘΑΛΜ
|
10721
|
+
ΜΟΝΟΦΩΤΑ,ΜΟΝΟΦΩ
|
10722
|
+
ΜΟΝΟΦΩΤΟ,ΜΟΝΟΦΩ
|
10721
10723
|
ΜΟΝΡΟ,ΜΟΝΡ
|
10722
10724
|
ΜΟΝΡΟΕ,ΜΟΝΡΟ
|
10723
10725
|
ΜΟΝΤ,ΜΟΝΤ
|
@@ -12451,7 +12453,7 @@
|
|
12451
12453
|
ΠΑΝΕΠΙΣΤΗΜΙΟΥ,ΠΑΝΕΠΙΣΤΗΜ
|
12452
12454
|
ΠΑΝΕΠΙΣΤΗΜΙΩΝ,ΠΑΝΕΠΙΣΤΗΜ
|
12453
12455
|
ΠΑΝΕΣ,ΠΑΝ
|
12454
|
-
|
12456
|
+
ΠΑΝΙ,ΠΑΝΙ
|
12455
12457
|
ΠΑΝΙΕΡ,ΠΑΝΙΕΡ
|
12456
12458
|
ΠΑΝΙΕΡΟΣ,ΠΑΝΙΕΡ
|
12457
12459
|
ΠΑΝΙΚΟ,ΠΑΝΙΚ
|
@@ -13042,9 +13044,9 @@
|
|
13042
13044
|
ΠΕΡΙΣΣΟΤΕΡΟ,ΠΕΡΙΣΣ
|
13043
13045
|
ΠΕΡΙΣΤΑΤ,ΠΕΡΙΣΤΑΤ
|
13044
13046
|
ΠΕΡΙΣΤΑΤΙΚΑ,ΠΕΡΙΣΤΑΤ
|
13045
|
-
|
13046
|
-
|
13047
|
-
|
13047
|
+
ΠΕΡΙΣΤΡΟΦΙΚΗ,ΠΕΡΙΣΤΡΟΦΙΚ
|
13048
|
+
ΠΕΡΙΣΤΡΟΦΙΚΟ,ΠΕΡΙΣΤΡΟΦΙΚ
|
13049
|
+
ΠΕΡΙΣΤΡΟΦΙΚΟΣ,ΠΕΡΙΣΤΡΟΦΙΚ
|
13048
13050
|
ΠΕΡΙΤΟΝΑΙΚ,ΠΕΡΙΤΟΝΑΙΚ
|
13049
13051
|
ΠΕΡΙΤΟΝΑΙΚΗ,ΠΕΡΙΤΟΝΑΙΚ
|
13050
13052
|
ΠΕΡΙΦΕΡΕΙΑΚ,ΠΕΡΙΦΕΡΕΙΑΚ
|
@@ -13078,7 +13080,7 @@
|
|
13078
13080
|
ΠΕΤΑ,ΠΕΤ
|
13079
13081
|
ΠΕΤΑΕΙ,ΠΕΤ
|
13080
13082
|
ΠΕΤΑΛ,ΠΕΤΑΛ
|
13081
|
-
|
13083
|
+
ΠΕΤΑΛΟ,ΠΕΤΑΛΟ
|
13082
13084
|
ΠΕΤΑΛΟΥΔ,ΠΕΤΑΛΟΥΔ
|
13083
13085
|
ΠΕΤΑΛΟΥΔΑ,ΠΕΤΑΛΟΥΔ
|
13084
13086
|
ΠΕΤΑΛΟΥΔΑΣ,ΠΕΤΑΛΟΥΔ
|
@@ -13636,7 +13638,7 @@
|
|
13636
13638
|
ΠΟΛΥΦΩΝΑ,ΠΟΛΥΦΩΝ
|
13637
13639
|
ΠΟΛΥΦΩΝΙΚΑ,ΠΟΛΥΦΩΝ
|
13638
13640
|
ΠΟΛΥΦΩΤΑ,ΠΟΛΥΦΩ
|
13639
|
-
|
13641
|
+
ΠΟΛΥΦΩΤΟ,ΠΟΛΥΦΩ
|
13640
13642
|
ΠΟΛΥΦΩΤΩΝ,ΠΟΛΥΦΩ
|
13641
13643
|
ΠΟΛΥΧΡΩΜ,ΠΟΛΥΧΡΩΜ
|
13642
13644
|
ΠΟΛΥΧΡΩΜΑ,ΠΟΛΥΧΡΩΜ
|
@@ -14460,9 +14462,9 @@
|
|
14460
14462
|
ΡΟΙΔΙΚΗΣ,ΡΟΙΔ
|
14461
14463
|
ΡΟΚ,ΡΟΚ
|
14462
14464
|
ΡΟΛ,ΡΟΛ
|
14463
|
-
|
14465
|
+
ΡΟΛΑ,ΡΟΛΑ
|
14464
14466
|
ΡΟΛΟ,ΡΟΛ
|
14465
|
-
|
14467
|
+
ΡΟΛΟΓΙΑ,ΡΟΛ
|
14466
14468
|
ΡΟΛΟΙ,ΡΟΛ
|
14467
14469
|
ΡΟΛΟΣ,ΡΟΛ
|
14468
14470
|
ΡΟΛΣ,ΡΟΛΣ
|
@@ -14939,7 +14941,7 @@
|
|
14939
14941
|
ΣΚΗΠΤΡΟ,ΣΚΗΠΤΡ
|
14940
14942
|
ΣΚΗΤ,ΣΚΗΤ
|
14941
14943
|
ΣΚΗΤΗ,ΣΚΗΤ
|
14942
|
-
|
14944
|
+
ΣΚΙ,ΣΚ
|
14943
14945
|
ΣΚΙΑ,ΣΚΙ
|
14944
14946
|
ΣΚΙΑΘ,ΣΚΙΑΘ
|
14945
14947
|
ΣΚΙΑΘΟΣ,ΣΚΙΑΘ
|
@@ -15189,10 +15191,10 @@
|
|
15189
15191
|
ΣΠΟΝΔ,ΣΠΟΝΔ
|
15190
15192
|
ΣΠΟΝΔΗ,ΣΠΟΝΔ
|
15191
15193
|
ΣΠΟΡ,ΣΠΟΡ
|
15192
|
-
|
15194
|
+
ΣΠΟΡΑ,ΣΠΟΡΟ
|
15193
15195
|
ΣΠΟΡΑΔ,ΣΠΟΡΑΔ
|
15194
15196
|
ΣΠΟΡΑΔΕΣ,ΣΠΟΡΑΔ
|
15195
|
-
|
15197
|
+
ΣΠΟΡΟΣ,ΣΠΟΡΟ
|
15196
15198
|
ΣΠΟΥΔ,ΣΠΟΥΔ
|
15197
15199
|
ΣΠΟΥΔΑΙ,ΣΠΟΥΔΑ
|
15198
15200
|
ΣΠΟΥΔΑΙΑ,ΣΠΟΥΔΑΙ
|
@@ -16169,8 +16171,8 @@
|
|
16169
16171
|
ΤΕΤΡΑΓΩΝΟ,ΤΕΤΡΑΓΩΝ
|
16170
16172
|
ΤΕΤΡΑΔ,ΤΕΤΡΑΔ
|
16171
16173
|
ΤΕΤΡΑΔΙ,ΤΕΤΡΑΔ
|
16172
|
-
|
16173
|
-
|
16174
|
+
ΤΕΤΡΑΔΙΑ,ΤΕΤΡΑΔΙ
|
16175
|
+
ΤΕΤΡΑΔΙΟ,ΤΕΤΡΑΔΙ
|
16174
16176
|
ΤΕΤΣ,ΤΕΤΣ
|
16175
16177
|
ΤΕΤΣΗΣ,ΤΕΤΣ
|
16176
16178
|
ΤΕΧΝ,ΤΕΧΝ
|
@@ -16266,10 +16268,10 @@
|
|
16266
16268
|
ΤΗΛΕΠΙΚΟΙΝΩΝΙΕΣ,ΤΗΛΕΠΙΚΟΙΝΩΝ
|
16267
16269
|
ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ,ΤΗΛΕΠΙΚΟΙΝΩΝ
|
16268
16270
|
ΤΗΛΕΣΚΟΠΙΑ,ΤΗΛΕΣΚΟΠ
|
16269
|
-
|
16270
|
-
|
16271
|
-
|
16272
|
-
|
16271
|
+
ΤΗΛΕΣΚΟΠΙΚΗ,ΤΗΛΕΣΚΟΠΙΚ
|
16272
|
+
ΤΗΛΕΣΚΟΠΙΚΟ,ΤΗΛΕΣΚΟΠΙΚ
|
16273
|
+
ΤΗΛΕΣΚΟΠΙΚΟΙ,ΤΗΛΕΣΚΟΠΙΚ
|
16274
|
+
ΤΗΛΕΣΚΟΠΙΚΟΣ,ΤΗΛΕΣΚΟΠΙΚ
|
16273
16275
|
ΤΗΛΕΣΚΟΠΙΟ,ΤΗΛΕΣΚΟΠ
|
16274
16276
|
ΤΗΛΕΣΚΟΠΙΟΥ,ΤΗΛΕΣΚΟΠ
|
16275
16277
|
ΤΗΛΕΦΩΝ,ΤΗΛΕΦ
|
@@ -17161,7 +17163,7 @@
|
|
17161
17163
|
ΦΕΓΓΑΡΟΠΛΕΚΤ,ΦΕΓΓΑΡΟΠΛΕΚΤ
|
17162
17164
|
ΦΕΓΓΑΡΟΠΛΕΚΤΗ,ΦΕΓΓΑΡΟΠΛΕΚΤ
|
17163
17165
|
ΦΕΓΓΑΡΟΦΩΤ,ΦΕΓΓΑΡΟΦΩΤ
|
17164
|
-
|
17166
|
+
ΦΕΓΓΑΡΟΦΩΤΟ,ΦΕΓΓΑΡΟΦΩ
|
17165
17167
|
ΦΕΓΓΑΡΟΨΗΜΕΝ,ΦΕΓΓΑΡΟΨΗΜΕΝ
|
17166
17168
|
ΦΕΓΓΑΡΟΨΗΜΕΝΕΣ,ΦΕΓΓΑΡΟΨΗΜΕΝ
|
17167
17169
|
ΦΕΓΓΙΤ,ΦΕΓΓΙΤ
|
@@ -17524,8 +17526,8 @@
|
|
17524
17526
|
ΦΥΤΕΜΑ,ΦΥΤΕΜ
|
17525
17527
|
ΦΥΤΕΥ,ΦΥΤΕ
|
17526
17528
|
ΦΥΤΕΥΩ,ΦΥΤΕΥ
|
17527
|
-
|
17528
|
-
|
17529
|
+
ΦΥΤΙΚΑ,ΦΥΤΙΚ
|
17530
|
+
ΦΥΤΙΚΗ,ΦΥΤΙΚ
|
17529
17531
|
ΦΥΤΟΛΟ,ΦΥΤΟΛ
|
17530
17532
|
ΦΥΤΟΛΟΓΙΑ,ΦΥΤΟΛΟΓ
|
17531
17533
|
ΦΥΤΟΠΑΘΟΛΟ,ΦΥΤΟΠΑΘΟΛ
|
@@ -17580,7 +17582,7 @@
|
|
17580
17582
|
ΦΩΤΙΣΤΙΚΑ,ΦΩΤΙΣΤ
|
17581
17583
|
ΦΩΤΙΣΤΙΚΗ,ΦΩΤΙΣΤ
|
17582
17584
|
ΦΩΤΙΣΤΙΚΟΙ,ΦΩΤΙΣΤ
|
17583
|
-
|
17585
|
+
ΦΩΤΟ,ΦΩ
|
17584
17586
|
ΦΩΤΟΒΟΛΤΑΙΚ,ΦΩΤΟΒΟΛΤΑΙΚ
|
17585
17587
|
ΦΩΤΟΒΟΛΤΑΙΚΑ,ΦΩΤΟΒΟΛΤΑΙΚ
|
17586
17588
|
ΦΩΤΟΓΡΑΦ,ΦΩΤΟΓΡΑΦ
|
data/config/stemmer.yml
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
step_0_exceptions:
|
2
|
+
ΡΟΛΟΓΙΑ: ΡΟΛ
|
3
|
+
ΛΑΔΟΥΣΑ: ΛΑΔΟΥΣ
|
4
|
+
ΣΚΙ: ΣΚ
|
5
|
+
ΚΡΕΜΑΣ: ΚΡΕΜΑ
|
6
|
+
ΒΕΡΜΟΥΔΕΣ: ΒΕΡΜΟΥΔ
|
7
|
+
ΜΑΤΙΑ: ΜΑΤΙ
|
8
|
+
ΜΑΤΙΩΝ: ΜΑΤΙ
|
1
9
|
step_1_exceptions:
|
2
10
|
ΦΑΓΙΑ: ΦΑ
|
3
11
|
ΦΑΓΙΟΥ: ΦΑ
|
@@ -30,6 +38,7 @@ step_1_exceptions:
|
|
30
38
|
ΦΩΤΟΣ: ΦΩ
|
31
39
|
ΦΩΤΑ: ΦΩ
|
32
40
|
ΦΩΤΩΝ: ΦΩ
|
41
|
+
ΦΩΤΟ: ΦΩ
|
33
42
|
ΚΑΘΕΣΤΩΣ: ΚΑΘΕΣΤ
|
34
43
|
ΚΑΘΕΣΤΩΤΟΣ: ΚΑΘΕΣΤ
|
35
44
|
ΚΑΘΕΣΤΩΤΑ: ΚΑΘΕΣΤ
|
@@ -133,6 +142,7 @@ protected_words:
|
|
133
142
|
- ΚΑΘΩΣ
|
134
143
|
- ΚΑΙ
|
135
144
|
- ΚΑΝ
|
145
|
+
- ΚΑΝΟ
|
136
146
|
- ΚΑΠΟΤΕ
|
137
147
|
- ΚΑΠΟΥ
|
138
148
|
- ΚΑΤΑ
|
@@ -144,7 +154,10 @@ protected_words:
|
|
144
154
|
- ΚΚΕ
|
145
155
|
- ΚΟΛΑΝ
|
146
156
|
- ΚΥΡΙΩΣ
|
157
|
+
- ΚΡΕΜΑ
|
147
158
|
- ΚΩΣ
|
159
|
+
- ΜΑΓΙΟ
|
160
|
+
- ΜΑΓΙΩ
|
148
161
|
- ΜΑΚΑΡΙ
|
149
162
|
- ΜΑΛΙΣΤΑ
|
150
163
|
- ΜΑΛΛΟΝ
|
@@ -152,6 +165,7 @@ protected_words:
|
|
152
165
|
- ΜΑΟ
|
153
166
|
- ΜΑΟΥΣ
|
154
167
|
- ΜΑΣ
|
168
|
+
- ΜΑΤΙ
|
155
169
|
- ΜΕΘΑΥΡΙΟ
|
156
170
|
- ΜΕΣ
|
157
171
|
- ΜΕΣΑ
|
@@ -194,14 +208,17 @@ protected_words:
|
|
194
208
|
- ΠΑΛΙ
|
195
209
|
- ΠΑΝ
|
196
210
|
- ΠΑΝΟ
|
211
|
+
- ΠΑΝΤΕΛΟΝΑ
|
197
212
|
- ΠΑΝΤΟΤΕ
|
198
213
|
- ΠΑΝΤΟΥ
|
199
214
|
- ΠΑΝΤΩΣ
|
200
215
|
- ΠΑΝΩ
|
201
216
|
- ΠΑΡΑ
|
217
|
+
- ΠΑΝΙ
|
202
218
|
- ΠΕΡΑ
|
203
219
|
- ΠΕΡΙ
|
204
220
|
- ΠΕΡΙΠΟΥ
|
221
|
+
- ΠΕΤΑΛΟ
|
205
222
|
- ΠΙΑ
|
206
223
|
- ΠΙΟ
|
207
224
|
- ΠΙΣΩ
|
@@ -215,13 +232,13 @@ protected_words:
|
|
215
232
|
- ΠΡΟΧΤΕΣ
|
216
233
|
- ΠΡΟΧΘΕΣ
|
217
234
|
- ΡΟΔΙ
|
235
|
+
- ΡΟΛΑ
|
218
236
|
- ΠΩΣ
|
219
237
|
- ΣΑΙ
|
220
238
|
- ΣΑΣ
|
221
239
|
- ΣΑΝ
|
222
240
|
- ΣΕΙΣ
|
223
241
|
- ΣΙΑ
|
224
|
-
- ΣΚΙ
|
225
242
|
- ΣΟΙ
|
226
243
|
- ΣΟΥ
|
227
244
|
- ΣΡΙ
|
data/lib/greek_stemmer.rb
CHANGED
@@ -21,9 +21,6 @@ module GreekStemmer
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
# Transformations for step 1 words
|
25
|
-
STEP_1_EXCEPTIONS = load_settings("step_1_exceptions")
|
26
|
-
|
27
24
|
# Protected words
|
28
25
|
PROTECTED_WORDS = load_settings("protected_words")
|
29
26
|
|
@@ -37,13 +34,14 @@ module GreekStemmer
|
|
37
34
|
def stem(word)
|
38
35
|
return word if word.length < 3
|
39
36
|
stem = word.dup
|
37
|
+
|
40
38
|
return stem if PROTECTED_WORDS.include?(stem) || !greek?(word)
|
41
39
|
|
42
|
-
|
40
|
+
return step_0_exceptions[stem] if step_0_exceptions.include?(stem)
|
43
41
|
|
44
42
|
# step 1
|
45
|
-
stem.scan(
|
46
|
-
stem = st +
|
43
|
+
stem.scan(step_1_regex) do |st, suffix|
|
44
|
+
stem = st + step_1_exceptions[suffix]
|
47
45
|
end
|
48
46
|
|
49
47
|
# step 2a
|
@@ -85,8 +83,8 @@ module GreekStemmer
|
|
85
83
|
ΑΕΡ|ΑΘΛ|ΑΚΟΥΣ|ΑΞ|ΑΣ|Β|ΒΙΒΛ|ΒΥΤ|Γ|ΓΙΑΓ|ΓΩΝ|Δ|ΔΑΝ|ΔΗΛ|ΔΗΜ|
|
86
84
|
ΔΟΚΙΜ|ΕΛ|ΖΑΧΑΡ|ΗΛ|ΗΠ|ΙΔ|ΙΣΚ|ΙΣΤ|ΙΟΝ|ΙΩΝ|ΚΙΜΩΛ|ΚΟΛΟΝ|ΚΟΡ|
|
87
85
|
ΚΤΗΡ|ΚΥΡ|ΛΑΓ|ΛΟΓ|ΜΑΓ|ΜΠΑΝ|ΜΠΕΤΟΝ|ΜΠΡ|ΝΑΥΤ|ΝΟΤ|ΟΠΑΛ|ΟΞ|ΟΡ|ΟΣ|
|
88
|
-
|
89
|
-
|
86
|
+
ΠΑΝ|ΠΑΝΑΓ|ΠΑΤΡ|ΠΗΛ|ΠΗΝ|ΠΛΑΙΣ|ΠΟΝΤ|ΡΑΔ|ΡΟΔ|ΣΚ|ΣΚΟΡΠ|ΣΟΥΝ|ΣΠΑΝ|
|
87
|
+
ΣΤΑΔ|ΣΥΡ|ΤΗΛ|ΤΕΤΡΑΔ|ΤΙΜ|ΤΟΚ|ΤΟΠ|ΤΡΟΧ|ΦΙΛ|ΦΩΤ|Χ|ΧΙΛ|ΧΡΩΜ|ΧΩΡ)$/ux
|
90
88
|
stem << "ΑΙ" if st =~ /^(ΠΑΛ)$/u
|
91
89
|
end
|
92
90
|
|
@@ -94,12 +92,13 @@ module GreekStemmer
|
|
94
92
|
stem.scan(/^(.+?)(ΙΚΟΣ|ΙΚΟΝ|ΙΚΕΙΣ|ΙΚΟΙ|ΙΚΕΣ|ΙΚΟΥΣ|ΙΚΗ|ΙΚΗΣ|ΙΚΟ|ΙΚΑ|ΙΚΟΥ|ΙΚΩΝ|ΙΚΩΣ)$/u) do |st, suffix|
|
95
93
|
stem = st
|
96
94
|
stem << "ΙΚ" if ends_on_vowel?(st) || st =~ /^(ΑΔ|ΑΛ|ΑΜΑΝ|ΑΜΕΡ|ΑΜΜΟΧΑΛ|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
95
|
+
ΑΝΗΘ|ΑΝΤΙΔ|ΑΠΛ|ΑΤΤ|ΑΦΡ|ΒΑΣ|ΒΡΩΜ|ΓΕΝ|ΓΕΡ|Δ|ΔΙΑΦΟΡ|ΔΙΚΑΝ|
|
96
|
+
ΔΥΤ|ΕΙΔ|ΕΝΔ|ΕΞΩΔ|ΗΘ|ΘΕΤ|ΚΑΛΛΙΝ|ΚΑΛΠ|ΚΑΤΑΔ|ΚΟΥΖΙΝ|ΚΡ|ΚΩΔ|
|
97
|
+
ΛΑΔ|ΛΟΓ|Μ|ΜΕΡ|ΜΟΝΑΔ|ΜΟΥΛ|ΜΟΥΣ|ΜΠΑΓΙΑΤ|ΜΠΑΝ|ΜΠΟΛ|ΜΠΟΣ|ΜΥΣΤ|
|
98
|
+
Ν|ΝΙΤ|ΞΙΚ|ΟΠΤ|ΠΑΝ|ΠΕΡΙΣΤΡΟΦ|ΠΕΤΣ|ΠΙΚΑΝΤ|ΠΙΤΣ|ΠΛΑΣΤ|ΠΛΙΑΤΣ|
|
99
|
+
ΠΟΝΤ|ΠΟΣΤΕΛΝ|ΠΡΩΤΟΔ|ΣΕΡΤ|ΣΗΜΑΝΤ|ΣΤΑΤ|ΣΥΝΑΔ|ΣΥΝΟΜΗΛ|ΤΕΛ|
|
100
|
+
ΤΕΧΝ|ΤΗΛΕΣΚΟΠ|ΤΡΟΠ|ΤΣΑΜ|ΥΠΟΔ|Φ|ΦΙΛΟΝ|ΦΥΛΟΔ|ΦΥΣ|ΧΑΣ|ΦΥΤ)
|
101
|
+
$/ux || st =~ /(ΦΟΙΝ)$/u
|
103
102
|
end
|
104
103
|
|
105
104
|
# step 5a
|
@@ -261,6 +260,21 @@ module GreekStemmer
|
|
261
260
|
|
262
261
|
private
|
263
262
|
|
263
|
+
# Top-level stemming exceptions for full words
|
264
|
+
def step_0_exceptions
|
265
|
+
@step_0_exceptions ||= load_settings("step_0_exceptions")
|
266
|
+
end
|
267
|
+
|
268
|
+
# Transformations for step 1 suffixes
|
269
|
+
def step_1_exceptions
|
270
|
+
@step_1_exceptions ||= load_settings("step_1_exceptions")
|
271
|
+
end
|
272
|
+
|
273
|
+
# Regex matching terms having step 1 exceptions as suffix
|
274
|
+
def step_1_regex
|
275
|
+
@step_1_regex ||= /(.*)(#{step_1_exceptions.keys.join("|")})$/u
|
276
|
+
end
|
277
|
+
|
264
278
|
def ends_on_vowel?(word)
|
265
279
|
word =~ /[ΑΕΗΙΟΥΩ]$/u
|
266
280
|
end
|
@@ -278,6 +292,7 @@ module GreekStemmer
|
|
278
292
|
ΟΝΤΑΙ|ΟΝΤΑΝ|ΟΝΤΟΥΣΑΝ|ΟΣ|ΟΣΑΣΤΑΝ|ΟΣΑΣΤΕ|ΟΣΟΥΝ|ΟΣΟΥΝΑ|ΟΤΑΝ|ΟΥ|ΟΥΜΑΙ|ΟΥΜΑΣΤΕ|
|
279
293
|
ΟΥΝ|ΟΥΝΤΑΙ|ΟΥΝΤΑΝ|ΟΥΣ|ΟΥΣΑΝ|ΟΥΣΑΤΕ|Υ||ΥΑ|ΥΣ|Ω|ΩΝ|ΟΙΣ)$/ux) do |st, suffix|
|
280
294
|
word = st
|
295
|
+
word << "Ο" if st =~ /^(ΣΠΟΡ)$/u && suffix != ''
|
281
296
|
end
|
282
297
|
word
|
283
298
|
end
|
data/spec/greek_stemmer_spec.rb
CHANGED
@@ -5,6 +5,8 @@ require "yaml"
|
|
5
5
|
describe GreekStemmer do
|
6
6
|
describe "#stem" do
|
7
7
|
let(:words) { YAML.load_file('spec/fixtures/examples.yml') }
|
8
|
+
let(:config) { YAML.load_file('config/stemmer.yml') }
|
9
|
+
|
8
10
|
it "stems words correctly" do
|
9
11
|
words.each_pair do |word, stem|
|
10
12
|
expect(described_class.stem(word)).to eq(stem)
|
@@ -16,5 +18,19 @@ describe GreekStemmer do
|
|
16
18
|
expect(described_class.stem("englishΟΣ")).to eq("englishΟΣ")
|
17
19
|
end
|
18
20
|
end
|
21
|
+
|
22
|
+
context 'exceptions' do
|
23
|
+
it 'does not stem protected words' do
|
24
|
+
config['protected_words'].each do |word|
|
25
|
+
expect(described_class.stem(word)).to eq(word)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'correctly stems 0-level exceptions' do
|
30
|
+
config['step_0_exceptions'].each_pair do |word, stem|
|
31
|
+
expect(described_class.stem(word)).to eq(stem)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
19
35
|
end
|
20
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: greek_stemmer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tasos Stathopoulos
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2018-08-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
110
|
version: '0'
|
111
111
|
requirements: []
|
112
112
|
rubyforge_project:
|
113
|
-
rubygems_version: 2.
|
113
|
+
rubygems_version: 2.7.6
|
114
114
|
signing_key:
|
115
115
|
specification_version: 4
|
116
116
|
summary: A simple Greek stemmer
|