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.
Daten vom Typ Word (andere werden einfach durchgereicht) z.B. von Wordsearcher
Daten vom Typ Word (erkannte Komposita werden entsprechend erweitert) z.B. für Synonymer, Ocr_variator, Multiworder, Sequencer, Noneword_filter, Vector_filter
Kursiv dargestellte Parameter sind optional (ggf. mit Angabe der Voreinstellung). Alle anderen Parameter müssen zwingend angegeben werden.
siehe allgemeine Beschreibung des Attendee
siehe allgemeine Beschreibung des Attendee
siehe allgemeine Beschreibung des Dictionary
(Standard: all) siehe allgemeine Beschreibung des Dictionary
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|KOM = [(indexierungssystem/k), (indexierung/s), (system/s)]>
out> <mit = [(mit/w)]>
out> <Kompositumerkennung|KOM = [(kompositumerkennung/k), (erkennung/s), (kompositum/s)]>
out> :./PUNC:
out> *EOL('test.txt')
out> *EOF('test.txt')
# File lib/lingo/attendee/decomposer.rb, line 81 def control(cmd, param) report_on(cmd, @gra) end
# File lib/lingo/attendee/decomposer.rb, line 77 def init set_gra end
# File lib/lingo/attendee/decomposer.rb, line 85 def process(obj) if obj.is_a?(Word) && obj.unknown? com = @gra.find_compound(obj.form) obj = com unless com.unknown? end forward(obj) end