Class: Lingo::Attendee::Decomposer

Inherits:
Lingo::Attendee show all
Defined in:
lib/lingo/attendee/decomposer.rb

Overview

– Komposita, also zusammengesetzte Wörter, sind eine Spezialität der deutschen Sprache (z.B. Indexierungssystem oder Kompositumerkennung). Könnte man alle Kombinationen in den Wörterbüchern hinterlegen, dann würde der Wordsearcher die Erkennung bereits erledigt haben. Die hohe Anzahl der möglichen Kombinationen verbietet jedoch einen solchen Ansatz aufgrund des immensen Pflegeaufwands, eine algorithmische Lösung erscheint sinnvoller. Der Decomposer wertet alle vom Wordsearcher nicht erkannten Wörter aus und prüft sie auf Kompositum.

Mögliche Verlinkung

Erwartet

Daten vom Typ Word (andere werden einfach durchgereicht) z.B. von Wordsearcher

Erzeugt

Daten vom Typ Word (erkannte Komposita werden entsprechend erweitert) z.B. für

Synonymer, Ocr_variator, Multiworder, Sequencer, Vector_filter

Parameter

Kursiv dargestellte Parameter sind optional (ggf. mit Angabe der Voreinstellung). Alle anderen Parameter müssen zwingend angegeben werden.

in

siehe allgemeine Beschreibung des Attendee

out

siehe allgemeine Beschreibung des Attendee

source

siehe allgemeine Beschreibung des Dictionary

mode

(Standard: all) siehe allgemeine Beschreibung des Dictionary

Beispiele

Bei der Verarbeitung einer normalen Textdatei mit der Ablaufkonfiguration t1.cfg

meeting:
  attendees:
    - text_reader:   { out: lines, files: '$(files)' }
    - tokenizer:     { in: lines, out: token }
    - abbreviator:   { in: token, out: abbrev, source: 'sys-abk' }
    - word_searcher: { in: abbrev, out: words, source: 'sys-dic' }
    - decomposer:    { in: words, out: comps, source: 'sys-dic' }
    - debugger:      { in: comps, prompt: 'out>' }

ergibt die Ausgabe über den Debugger: lingo -c t1 test.txt

out> *FILE('test.txt')
out> <Lingo|?>
out> :,/PUNC:
out> <ein = [(ein/w)]>
out> <Indexierungssystem|COM = [(indexierungssystem/k), (indexierung/s), (system/s)]>
out> <mit = [(mit/w)]>
out> <Kompositumerkennung|COM = [(kompositumerkennung/k), (erkennung/s), (kompositum/s)]>
out> :./PUNC:
out> *EOL('test.txt')
out> *EOF('test.txt')

++

Constant Summary

Constants inherited from Lingo::Attendee

DEFAULT_SKIP, TERMINALS

Constants included from Language

Language::CHAR_PUNCT, Language::LA_SORTORDER, Language::TA_ABBREVIATION, Language::TA_HELP, Language::TA_HTML, Language::TA_NUMBER, Language::TA_OTHER, Language::TA_PUNCTUATION, Language::TA_SKIP, Language::TA_SPACE, Language::TA_URL, Language::TA_WIKI, Language::TA_WORD, Language::WA_COMPOUND, Language::WA_IDENTIFIED, Language::WA_MULTIWORD, Language::WA_SEQUENCE, Language::WA_UNKMULPART, Language::WA_UNKNOWN, Language::WA_UNSET

Instance Attribute Summary

Attributes inherited from Lingo::Attendee

#lingo, #subscribers

Instance Method Summary collapse

Methods inherited from Lingo::Attendee

#command, #forward, #initialize

Constructor Details

This class inherits a constructor from Lingo::Attendee

Instance Method Details

#controlObject



83
84
# File 'lib/lingo/attendee/decomposer.rb', line 83

def control(*)
end

#initObject



79
80
81
# File 'lib/lingo/attendee/decomposer.rb', line 79

def init
  set_gra
end

#process(obj) ⇒ Object



86
87
88
89
90
91
92
93
94
95
# File 'lib/lingo/attendee/decomposer.rb', line 86

def process(obj)
  if obj.is_a?(Word) && obj.unknown?
    com = @gra.find_compound(obj.form)
    com.token = obj.token

    obj = com unless com.unknown?
  end

  forward(obj)
end