Class: Lingo::Attendee::ObjectFilter

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

Overview

– Der ObjectFilter ermöglicht es, beliebige Objekte aus dem Datenstrom herauszufiltern. Um die gewünschten Objekte zu identifizieren, sind ein paar Ruby-Kenntnisse und das Wissen um die Lingo Klassen notwendig. Hier sollen kurz die häufigsten Fälle angesprochen werden:

Filtern nach einem bestimmten Typ, z.B. Token oder Word wird beispielsweise durch den Ausdruck 'obj.kind_of?(Word)' ermöglicht. Token und Words haben jeweils ein Attribut attr. Bei Token gibt attr an, mit welcher Tokenizer-Regel das Token erkannt wurde. So können z.B. alle numerischen Token mit dem Ausdruck 'obj.kind_of?(Token) && obj.attr==“NUMS”' identifiziert werden. Wie bereits gezeigt, können Bedingungen durch logisches UND (&&) oder ODER (||) verknüpft werden. Das Attribut form kann genutzt werden, um auf den Text eines Objektes zuzugreifen, z.B. 'obj.form==“John”'.

Mögliche Verlinkung

Erwartet

Daten beliebigen Typs von allen Attendees

Erzeugt

Daten, die der als Parameter übergebenen Bedingung entsprechen

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

objects

(Standard: true) Gibt einen Ruby-Ausdruck an, der, wenn der Ausdruck als Wahr ausgewertet wird, das Objekt weiterleitet und ansonsten filtert.

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: token, out: words, source: 'sys-dic' }
    - object_filter: { in: words, out: filtr, objects: 'obj.kind_of?(Word) && obj.lexicals.size>0 && obj.lexicals[0].attr==LA_NOUN' }
    - debugger:      { in: filtr, prompt: 'out>' }

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

out> *FILE('test.txt')
out> <Indexierung = [(indexierung/s)]>
out> <Indexierung = [(indexierung/s)]>
out> *EOL('test.txt')
out> *EOF('test.txt')

++

Constant Summary

Constant Summary

Constants inherited from Lingo::Attendee

DEFAULT_SKIP, Multi_worder, Multiworder, Noneword_filter, Nonewordfilter, Object_filter, Objectfilter, Text_reader, Text_writer, Textreader, Textwriter, Vector_filter, Vectorfilter, Word_searcher, Wordsearcher

Constants included from Language

Language::CHAR_PUNCT, Language::LA_SORTORDER, Language::TA_OTHER, Language::TA_PUNCTUATION, 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



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

def control(*)
end

#initObject



75
76
77
# File 'lib/lingo/attendee/object_filter.rb', line 75

def init
  @obj_eval = get_key('objects', 'true')
end

#process(obj) ⇒ Object



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

def process(obj)
  forward(obj) if eval(@obj_eval)
end