class Zenlish::Lang::Lemmatizer

Attributes

trie[R]

@return [Trie:Trie] Trie (aka prefix tree) with all word forms from dictionary.

Public Class Methods

new(aLexicon) click to toggle source
# File lib/zenlish/lang/lemmatizer.rb, line 11
def initialize(aLexicon)
  @trie = Trie::Trie.new
  initialize_trie(aLexicon)
end

Public Instance Methods

lemmatize(aWordForm, _hints = nil) click to toggle source
# File lib/zenlish/lang/lemmatizer.rb, line 16
def lemmatize(aWordForm, _hints = nil)
  node = trie.search(aWordForm)
  node&.value
end

Private Instance Methods

initialize_trie(aLexicon) click to toggle source
# File lib/zenlish/lang/lemmatizer.rb, line 23
def initialize_trie(aLexicon)
  aLexicon.entries.each do |ent|
    citation_form = ent.lemma
    ent.lexemes.each do |lxm|
      if lxm.wclass.kind_of?(Zenlish::WClasses::WordClass)
        if lxm.wclass.invariable?
          trie.add(citation_form, lxm)
        else
          w_forms = lxm.all_inflections
          w_forms.each { |form| trie.add(form, lxm) }
        end
      end
    end
  end
end