Class: Lingo::Attendee::ObjectFilter
- Inherits:
-
Lingo::Attendee
- Object
- Lingo::Attendee
- Lingo::Attendee::ObjectFilter
- 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
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
79 80 |
# File 'lib/lingo/attendee/object_filter.rb', line 79 def control(*) end |
#init ⇒ Object
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 |