Class: Lingo::Attendee::Variator
- Inherits:
-
Lingo::Attendee
- Object
- Lingo::Attendee
- Lingo::Attendee::Variator
- Defined in:
- lib/lingo/attendee/variator.rb
Overview
– Der Variator ermöglicht bei nicht erkannten Wörtern den listenbasierten Austausch einzelner Wortteile einchließlich erneuter Wörterbuchsuche zur Verbesserung der Worterkennungsquote.
Ursprünglich wurde der Variator entwickelt, um die mangelnde Qualität bei der OCR-Erkennung altdeutscher ‘s’-Konsonanten zu optimieren. Er kann ebenso bei alternativen Umlautschreibweisen z.B. zur Wandlung von ‘Koeln’ in ‘Köln’ dienen.
Mögliche Verlinkung
- Erwartet
-
Daten vom Typ Word (andere werden einfach durchgereicht) z.B. von Wordsearcher
- Erzeugt
-
Daten vom Typ Word zur Weiterleitung z.B. an Synonymer, Decomposer, Multiworder, Sequencer oder 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
- ^check
-
(Standard: WA_UNKNOWN) Gebrenzt die zu variierenden Worttypen
- marker
-
(Standard: ‘*’) Kennzeichnung durch Variation erkannter Wörter
- max-var
-
(Standard: ‘10000’) Begrenzung der maximal zu prüfenden Permutationen bei der vollständigen Kombination aller auf ein Wort anzuwendenen aufgelisteten Wortteile.
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 }
- word_searcher: { in: abbrev, out: words, source: 'sys-dic' }
- variator: { in: words, out: varios, source: 'sys-dic' }
- debugger: { in: varios, prompt: 'out>' }
ergibt die Ausgabe über den Debugger: lingo -c t1 test.txt
out> *FILE('test.txt')
out> <*Dies = [(dies/w)]>
out> <*ist = [(ist/t)]>
out> <ein = [(ein/t)]>
out> <*Tisch = [(tisch/s)]>
out> :./PUNC:
out> *EOL('test.txt')
out> *EOF('test.txt')
++
Constant Summary
Constants inherited from Lingo::Attendee
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
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
#control ⇒ Object
92 93 |
# File 'lib/lingo/attendee/variator.rb', line 92 def control(*) end |
#init ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/lingo/attendee/variator.rb', line 77 def init @marker = get_key('marker', '*') @max = get_int('max-var', max = 10000) @max = max unless @max > 0 @var = get_key('variations') raise MissingConfigError.new(:variations) if @var.empty? @check = Hash.new(false) get_ary('check', WA_UNKNOWN).each { |s| @check[s.upcase] = true } set_dic set_gra end |
#process(obj) ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/lingo/attendee/variator.rb', line 95 def process(obj) if obj.is_a?(Word) && @check[obj.attr] vars, max = [obj.form], @max @var.each { |args| variate(vars, *args) break unless vars.length < max } vars.each { |var| next if (word = find_word(var)).unknown? || ( word.attr == WA_COMPOUND && word.lexicals.any? { |lex| lex.attr.start_with?(LA_TAKEITASIS) } ) return forward(word.tap { word.form = @marker + var }) } end forward(obj) end |