Sha256: 494f17383590e8392f79c7e8e0a4e7eccd9fdfbd448bc2eded2dea151b6306ca
Contents?: true
Size: 1.28 KB
Versions: 1
Compression:
Stored size: 1.28 KB
Contents
class Rule attr_accessor :pattern, :suffix, :rule_num def initialize(pattern, suffix, rule_num) @pattern = pattern @suffix = suffix @rule_num = rule_num end def suffix_size @suffix.size end def handle(word) [word.remove_suffix(@suffix_size), @rule_num] if word =~ @pattern end end class EndingRule < Rule def handle(word) [word.remove_suffix(@suffix_size), @rule_num] if word.ends_with?(@pattern) end end class ConcatenatingEndingRule < EndingRule attr_accessor :new_suffix def initialize(pattern, suffix_size, rule_num, new_suffix) super(pattern, suffix_size, rule_num) @new_suffix = new_suffix end def handle(word) [word.remove_suffix(@suffix_size) + @new_suffix, @rule_num] if word.ends_with?(@pattern) end end class CustomRule < Rule def initialize(pattern, suffix_size, rule_num) super(pattern, suffix_size, rule_num) end def handle(word) [stem_with_duplicate_character_check(word, @suffix_size), @rule_num] if word =~ @pattern end protected def stem_with_duplicate_character_check(word, suffix_size) new_suffix_size = word.ends_with?('s') ? suffix_size + 1 : suffix_size stemmed_word = word.remove_suffix(new_suffix_size) stemmed_word.chop! if stemmed_word =~ /.*(\w)\1$/ stemmed_word end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ealdent-uea-stemmer-0.9.0 | lib/rule.rb |