sastrawi 0.1.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +50 -0
- data/.travis.yml +8 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +70 -0
- data/Rakefile +6 -0
- data/data/kata-dasar.txt +29932 -0
- data/lib/sastrawi/dictionary/array_dictionary.rb +33 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule10.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule11.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule12.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule13a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule13b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule14.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule15a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule15b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule16.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule17a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule17b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule17c.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule17d.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule18a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule18b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule19.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule1a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule1b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule2.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule20.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule21a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule21b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule23.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule24.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule25.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule26a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule26b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule27.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule28a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule28b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule29.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule3.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule30a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule30b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule30c.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule31a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule31b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule32.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule34.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule35.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule36.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule37a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule37b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule38a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule38b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule39a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule39b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule4.rb +11 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule40a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule40b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule41.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule42.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule5.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule6a.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule6b.rb +17 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule7.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule8.rb +19 -0
- data/lib/sastrawi/morphology/disambiguator/disambiguator_prefix_rule9.rb +19 -0
- data/lib/sastrawi/morphology/invalid_affix_pair_specification.rb +24 -0
- data/lib/sastrawi/stemmer/cache/array_cache.rb +25 -0
- data/lib/sastrawi/stemmer/cached_stemmer.rb +33 -0
- data/lib/sastrawi/stemmer/confix_stripping/precedence_adjustment_specification.rb +20 -0
- data/lib/sastrawi/stemmer/context/context.rb +170 -0
- data/lib/sastrawi/stemmer/context/removal.rb +17 -0
- data/lib/sastrawi/stemmer/context/visitor/dont_stem_short_word.rb +17 -0
- data/lib/sastrawi/stemmer/context/visitor/prefix_disambiguator.rb +46 -0
- data/lib/sastrawi/stemmer/context/visitor/remove_derivational_suffix.rb +28 -0
- data/lib/sastrawi/stemmer/context/visitor/remove_inflectional_particle.rb +26 -0
- data/lib/sastrawi/stemmer/context/visitor/remove_inflectional_possessive_pronoun.rb +26 -0
- data/lib/sastrawi/stemmer/context/visitor/remove_plain_prefix.rb +26 -0
- data/lib/sastrawi/stemmer/context/visitor/visitor_provider.rb +157 -0
- data/lib/sastrawi/stemmer/filter/text_normalizer.rb +15 -0
- data/lib/sastrawi/stemmer/stemmer.rb +85 -0
- data/lib/sastrawi/stemmer/stemmer_factory.rb +45 -0
- data/lib/sastrawi/stop_word_remover/stop_word_remover.rb +24 -0
- data/lib/sastrawi/stop_word_remover/stop_word_remover_factory.rb +152 -0
- data/lib/sastrawi/version.rb +3 -0
- data/lib/sastrawi.rb +12 -0
- data/sastrawi.gemspec +25 -0
- metadata +173 -0
@@ -0,0 +1,33 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Dictionary
|
3
|
+
class ArrayDictionary
|
4
|
+
attr_accessor :words
|
5
|
+
|
6
|
+
def initialize(words = [])
|
7
|
+
@words = []
|
8
|
+
|
9
|
+
add_words(words)
|
10
|
+
end
|
11
|
+
|
12
|
+
def contains?(word)
|
13
|
+
@words.include?(word)
|
14
|
+
end
|
15
|
+
|
16
|
+
def count
|
17
|
+
@words.length
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_words(new_words)
|
21
|
+
new_words.each do |word|
|
22
|
+
add(word)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def add(word)
|
27
|
+
return if word == ''
|
28
|
+
|
29
|
+
@words.push(word)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule10
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^me([lrwy])([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1] << matches[2]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule11
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^mem([bfv])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule12
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^mempe(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'pe' << matches[0]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule13a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^mem([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'm' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule13b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^mem([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'p' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule14
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^men([cdjstz])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule15a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^men([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'n' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule15b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^men([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 't' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule16
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^meng([g|h|q|k])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule17a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^meng([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule17b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^meng([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'k' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule17c
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^menge(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule17d
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^meng([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'ng' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule18a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^meny([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'ny' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule18b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^meny([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 's' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule19
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^memp([abcdfghijklmopqrstuvwxyz])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'p' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule1a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^ber([aiueo].*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule1b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^ber([aiueo].*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'r' << matches[0]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule2
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^ber([bcdfghjklmnpqrstvwxyz])([a-z])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return if /^er(.*)$/.match(matches[2])
|
12
|
+
|
13
|
+
return matches[0] << matches[1] << matches[2]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule20
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pe([wy])([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1] << matches[2]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule21a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^per([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule21b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pe(r[aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule23
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^per([bcdfghjklmnpqrstvwxyz])([a-z])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return if /^er(.*)$/.match(matches[2])
|
12
|
+
|
13
|
+
return matches[0] << matches[1] << matches[2]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule24
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^per([bcdfghjklmnpqrstvwxyz])([a-z])er([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return if matches[0] == 'r'
|
12
|
+
|
13
|
+
return matches[0] << matches[1] << 'er' << matches[2] << matches[3]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule25
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pem([bfv])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule26a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pem([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'm' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule26b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pem([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'p' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule27
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pen([cdjstz])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule28a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pen([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'n' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule28b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pen([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 't' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule29
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^pen([bcdfghjklmnpqrstvwxyz])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule3
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^ber([bcdfghjklmnpqrstvwxyz])([a-z])er([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return if matches[0] == 'r'
|
12
|
+
|
13
|
+
return matches[0] << matches[1] << 'er' << matches[2] << matches[3]
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule30a
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^peng([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Sastrawi
|
2
|
+
module Morphology
|
3
|
+
module Disambiguator
|
4
|
+
class DisambiguatorPrefixRule30b
|
5
|
+
def disambiguate(word)
|
6
|
+
contains = /^peng([aiueo])(.*)$/.match(word)
|
7
|
+
|
8
|
+
if contains
|
9
|
+
matches = contains.captures
|
10
|
+
|
11
|
+
return 'k' << matches[0] << matches[1]
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|