class Lingo::Attendee::Dehyphenizer

Der Dehyphenizer … muss noch dokumentiert werden

Mögliche Verlinkung

Erwartet

Daten vom Typ Word z.B. von Wordsearcher, Decomposer, Ocr_variator, Multiworder

Erzeugt

Daten vom Typ Word (mit Attribut WA_MULTIWORD). Je erkannter Mehrwortgruppe wird ein zusätzliches Word-Objekt in den Datenstrom eingefügt. Z.B. für Ocr_variator, Sequencer, Noneword_filter, 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

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' }
    - word_searcher: { in: abbrev, out: words, source: 'sys-dic' }
    - decomposer:    { in: words, out: comps, source: 'sys-dic' }
    - multi_worder:  { in: comps, out: multi, source: 'sys-mul' }
    - debugger:      { in: multi, prompt: 'out>' }

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

out> *FILE('test.txt')
out> <Sein = [(sein/s), (sein/v)]>
out> <Name = [(name/s)]>
out> <ist = [(sein/v)]>
out> <johann van siegen|MUL = [(johann van siegen/m)]>
out> <Johann = [(johann/e)]>
out> <van = [(van/w)]>
out> <Siegen = [(sieg/s), (siegen/v), (siegen/e)]>
out> :./PUNC:
out> *EOL('test.txt')
out> *EOF('test.txt')

Protected Instance Methods

control(cmd, param) click to toggle source
# File lib/lingo/attendee/dehyphenizer.rb, line 81
def control(cmd, param)
  control_multi(cmd)
end
init() click to toggle source
# File lib/lingo/attendee/dehyphenizer.rb, line 72
def init
  set_dic
  set_gra

  @skip = get_array('skip', '', :downcase)

  @expected_tokens_in_buffer, @eof_handling = 2, false
end
process_buffer() click to toggle source
# File lib/lingo/attendee/dehyphenizer.rb, line 85
def process_buffer
  a, b, h = *ab = @buffer.values_at(0, 1), '-'

  if ab.all? { |i| i.is_a?(Word) } && a.form[-1, 1] == h && !(
    (c = b.get_class(%r./).first) && @skip.include?(c.attr)
  )
    a, b = ab.map!(&:form)

    word = dehyphenize(a.chomp(h) + b)
    word = dehyphenize(a          + b) unless dehyphenized?(word)

    if dehyphenized?(word)
      @buffer[0] = word
      @buffer.delete_at(1)
    end
  end

  forward_number_of_token(1, false)
end

Private Instance Methods

dehyphenize(form) click to toggle source
# File lib/lingo/attendee/dehyphenizer.rb, line 107
def dehyphenize(form)
  find_word(form, &:identified?)
end
dehyphenized?(word) click to toggle source
# File lib/lingo/attendee/dehyphenizer.rb, line 111
def dehyphenized?(word)
  word.identified? || word.full_compound?
end