Class: Lingo::Attendee::Abbreviator

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

Overview

– Die Erkennung von Abkürzungen kann auf vielfältige Weise erfolgen. In jedem Fall sollte eine sichere Unterscheidung von einem Satzende-Punkt möglich sein. Der in Lingo gewählte Ansatz befreit den Tokenizer von dieser Arbeit und konzentriert die Erkennung in diesem Attendee. Sobald der Abbreviator im Datenstrom auf ein Punkt trifft (Token = :./PUNC:), prüft er das vorhergehende Token auf eine gültige Abkürzung im Abkürzungs-Wörterbuch. Wird es als Abkürzung erkannt, dann wird das Token in ein Word gewandelt und das Punkt-Token aus dem Zeichenstrom entfernt.

Mögliche Verlinkung

Erwartet

Daten des Typs Token z.B. von Tokenizer

Erzeugt

Leitet Token weiter und wandelt erkannte Abkürzungen in den Typ Word z.B. für Wordsearcher

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' }
    - debugger:     { in: abbrev, prompt: 'out>' }

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

out> *FILE('test.txt')
out> :Dies/WORD:
out> :ist/WORD:
out> <ggf. = [(gegebenenfalls/w)]>
out> :eine/WORD:
out> :Abk³rzung/WORD:
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

#control(cmd) ⇒ Object



80
81
82
# File 'lib/lingo/attendee/abbreviator.rb', line 80

def control(cmd, *)
  send_abbr(@abbr) if [:RECORD, :EOF].include?(cmd)
end

#initObject



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

def init
  set_dic
  @abbr = nil
end

#process(obj) ⇒ Object



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/lingo/attendee/abbreviator.rb', line 84

def process(obj)
  if obj.is_a?(Token)
    if obj.form == CHAR_PUNCT
      if @abbr && (abbr = find_word(form = @abbr.form)).identified?
        form << CHAR_PUNCT unless form.end_with?(CHAR_PUNCT)
        send_abbr(abbr)
      else
        send_abbr(@abbr)
        forward(obj)
      end
    else
      send_abbr(@abbr, obj)
    end
  else
    send_abbr(obj)
  end
end