next up previous contents
Next: UNIX-Code für filterall Up: No Title Previous: References

UNIX-Code für trlfilter V1.0

Anmerkung: Ein überlanger regulärer Ausdruck wurde für die Reproduktion umgebrochen; der Umbruch darf im ausführbaren Code nicht vorkommen.

#!/bin/sh ## trlfilter

## Autor: D.Steinbrecher ## Letzte Aenderung: 07.08.1995

## Kurzbeschreibung: ## ## Standardabbildung von Corpus-Orthographie auf Lexikon-Orthographie ## für wortgraphenorientierte Entwicklungen in VERBMOBIL.

## Entwicklung: ## ## 1. Prototyp fuer die Spezifikation der Anforderungen an einen ## standardisierten Transliterationsfilter fuer Gesamt-VERBMOBIL. ## Hierzu wurde Filter-Code von den Partnern freundlicherweise ## zur Verfügung gestellt. Für die Entwicklung des Filters ## wurden Filterprogramme folgender Partner analysiert: ## U Bielefeld, (Gibbon, Steinbrecher) ## TU Braunschweig (Lehning) ## Daimler Benz AG (Fetter) ## Philips (Kneser) ## Siemens (Tropf, Block) ## ## 2. Veraenderung des Prototypen laut Spezifikation und Anregungen ## der VM-Partner.

## Usage: ## trlfilter [-aghiprstuvw] InPath [OutPath] ## ## -a : angle brackets enclosing hesitation particles are not removed ## -g : no generalization of noise, interruptions and breaks (-> Philips) ## -h : header for output files ## -i : removes turnID ## -p : punctuation is not removed ## -r : annotates ambiguous reduced wordforms ## -s : spelling sequences are replaced with <SPELL> ## -t : removes turns containing: ## 1) <;T> technical break ## 2) /- interrupted speech ## 3) +/ /+ restart ## 4) = word fragment ## -u : removes interrupted words (X_ _X constructions) ## -w : interrupted words are joined

## trlfilter bearbeitet alle Dateien mit der Extension TRL oder trl in dem ## Verzeichnis InPath und erzeugt fuer jede Datei eine Ausgabedatei <datei>.fv. ## Ist der Parameter -t gesetzt, wird zusaetzlich eine Datei <datei>.dt ## angelegt, in der evtl. geloeschte Turns gesammelt sind. ## Die Ausgabedateien werden in das Verzeichnis OutPath geschrieben.

##-----------------------------------------------

## Allgemeine Variablendefinitionen

VERSION='trlfilter Version 1.0, 07 August 1995. D. Steinbrecher, D. Gibbon, U Bielefeld (VERBMOBIL standard transliteration to word graph symbol filter)'

USAGE='Usage: trlfilter [-aghiprstuvw] InPath [OutPath]'

HELP_PARAMETER=

TEMP=trlbuffer

OUT_DEFAULT=OUTFILTER

##-----------------------------------------------

## Allgemeine `help'-Defaults

if [ # -lt 1 -o 1 = h -o BUFFER in a) A_PARAMETER=BUFFER;; h) H_PARAMETER=BUFFER;; p) P_PARAMETER=BUFFER;; s) S_PARAMETER=BUFFER;; u) U_PARAMETER=BUFFER;; w) W_PARAMETER=BUFFER;; esac done shift `expr HELP_PARAMETER ] then echo VERSION echo USAGE echo Öption Description''; echo '' [-a] Angle brackets enclosing hesitation particles ''; echo äre not removed''; echo '' [-g] No generalization of noise, interruptions and breaks''; echo '' [-h] Header (including IN_DIR, OUT_DIR, FILENAME, flags)''; echo '' [-i] Removes turnID''; echo '' [-p] Punctuation is not removed''; echo '' [-r] Annotates ambiguous reduced wordforms''; echo '' [-s] Converts spelling sequences to <SPELL>''; echo '' [-t] Removes turns containing technical breaks, ''; echo ïnterrupted speech, word fragments, restarts''; echo '' [-u] Removes interrupted words (X_ _X constructions)''; echo '' [-v] Version''; echo '' [-w] Interrupted words are joined''; echo Öther flags: Help message''; echo ; echo ''(Refer to man page for details)ëxit fi

if [ VERSION exit fi

##-----------------------------------------------

IN_DIR=2

##-----------------------------------------------

## Test des Eingabeparameters

if [ # -gt 2 ] then echo Wrong number of command line parameters. echo IN_DIR ] then echo Input parameter USAGE exit fi

##-----------------------------------------------

## Test des Ausgabeparameters ## ggf. Erstellung eines Default-Verzeichnisses

if [ OUT_DEFAULT OUT_DIR=OUT_DIR ] then echo Creating new output directory OUT_DIR fi

##-----------------------------------------------

## Rekursive Abarbeitung fuer jede Datei mit der Extension TRL oder trl ## Anm.: Die Schleife endet ganz am Ende der Datei

for datei in `ls datei`

echo NEWFILE ## wenn es laenger dauert ...

##-----------------------------------------------

## removes global comments ## removes lineBreaks within a turn

gawk '/^[ ]*;/ next; /^[A-Z][A-Z][A-Z0-9][0-9][0-9][0-9]: / { printf( n { printf('' END printf(n''); ' datei > TEMP.0

##-----------------------------------------------

## Ableitung einer neuen TurnID aus Dateinamen und alter TurnID if [ TEMP.0 > TEMP.0 > U_PARAMETER ] then gawk '/^TEMP.1 > W_PARAMETER ] then gawk '/^TEMP.1 > TEMP.1 > G_PARAMETER ] then ## Bearbeitung von techn. Abbruechen, Abbruechen, Wiederaufnahmen und ## Wortfragmenten: <;T>, /-, +/ /+, = ## -t: on Loeschen entsprechender Turns ## -t: off Entfernen von Abbruechen, Wiederaufnahmen if [ TEMP.2 | gawk ' # Entfernen nichtartikulator. Graeusche gsub(/<#[^>]*>/,); # Entfernen artikulator. Graeusche gsub(/<[A-Z][^>]+>/,); print; ' > / print; print; next; /[^ ]*<;T>[^ ]*/ || /[^ ]*-/ || /[^ ]*/ || /[^ ]+/ || /[^ ]+=/ printf('' END printf(n''); ' TEMP._dt else # Entfernen von Neologismen (*) gawk ' for (i=1; i<=NF; i++) if (/) printf('' printf(n''); ' TEMP.3 fi else gawk ' # Generalisiert werden gsub(/<[A-Z][^>]+>/,<<NIB>''); # nonverbale Produktion gsub(/<#[^>]*>/,<<NIB>''); # nichtartikulator. Graeusch gsub(/[^ ]*<;T>[^ ]*/,<<UNK>''); # techn. Abbruch gsub(/[^ ]+/,<<UNK>''); # Unwoerter und Neologismen gsub(/[^ ]+=[^ ]*/,<<UNK>''); # Wortfragmente print; ' TEMP.3 fi

##-----------------------------------------------

## Fuer dan Fall das -g -t nicht gesetzt war: ## Entfernen von Abbruechen und Wiederaufnahmen

gawk ' # Entfernen von Abbruechen (/-) gsub(/-/,); # Entfernen von Wiederaufnahmen (+/ /+) gsub(//,); gsub(//,); print; ' TEMP.4

##-----------------------------------------------

## Entfernung der Kennzeichnung von Ueberlappung von Redebeitraegen (@ @) ## Entfernung der Kennzeichnung fuer Gleichzeitigkeit von Schallereignissen <: :> ## Entfernen von Notationen fuer Aussprachevarianten <! > ## Entfernen lokaler Kommentare <; > ## Entfernen der Markierung fuer Schwerverstaendlich und Unverstaendliches ## Entfernen von <A>, <P>, <Z>

gawk ' gsub(//,); gsub(/[]/,); gsub(/<:/,); # Gleichzeitigkeit gsub(/:>/,); gsub(/<\![0-9] [^><]*>/, ); # Aussprachevarianten gsub(/<;[^><]*>/, ); # lokale Kommentare gsub(/< gsub(/ gsub(/<[APZ]>/,); # <A>, <P>, <Z> print; ' TEMP.5

##-----------------------------------------------

## Bearbeitung von Haesitationen ## <äh>, <ähm>, <hm>, <häs> if [ TEMP.5 TEMP.5 > P_PARAMETER ] then gawk 'gsub(/·/,. ''); gsub(/,/,'' , ''); gsub(//,? ''); print ' TEMP.7 else gawk 'gsub(/[·,]/,);print' TEMP.7 fi

##-----------------------------------------------

## Wiederherstellung reduzierter Wortformen ## -r: on Ambige reduzierte Wortformen werden markiert: ## 'm -> einemVdem ; 'n -> einenVden ## -r: off 'm -> einem ; 'n -> einen

gawk ' gsub(/^/,); gsub(//,); print; ' TEMP.8

if [ TEMP.8 > TEMP.8 > A P P --> A-P-A doppel P --> A-doppel-A zwei P --> A-zwei-U S A-Reise --> U-S-[Ä-Z]) handelt. ## Die Fkt. 'needsahyphen' testet, ob es sich um eine Sequenz handelt, ## Sie in einer Buchstabiersequenz auftreten darf (z.B. Umlaut, doppel, zwei) ## Fuer diese Folgen liefert die Fkt. ein 'true'. ## (Moegliche andere Strings koennen durch Erweiterung der `match'-Zeile ## in der Funktion 'needsahyphen' ebenfalls bearbeitet werden.) ## (b) Die Hauptprozedur testet, ob die FKt. 'needsahyphen' fuer zwei ## aufeinanderfolgenede Woerter den Wert 'true' liefert. Ist dies der ## Fall, werden die Woerter durch ein '-' miteinander verbunden.

gawk ' n = split(TEMP.10

##-----------------------------------------------

## Ersetzung von Buchstabiersequenzen durch <SPELL>

if [ TEMP.10 > TEMP.10 TEMP.11> TEMP.12 > H_PARAMETER ] then if [ OUT_DIR/IN_DIR >> NEWFILE.dt echo '## 'Ausgabepfad: OUT_DIR/NEWFILE >> NEWFILE.dt echo '## 'Bearbeitungsdatum: `date` >> NEWFILE.dt echo '##' >> NEWFILE.dt echo '##' Liste geloeschter Turns>> NEWFILE.dt echo '##' >> NEWFILE.dt

echo '##' > NEWFILE.fv echo '## 'Eingabepfad: OUT_DIR/OUT_DIR >> NEWFILE.fv echo '## 'Bearbeitete Datei: NEWFILE >> OUT_DIR/OUT_DIR/OUT_DIR/OUT_DIR/A_PARAMETER\ H_PARAMETER\ P_PARAMETER\ S_PARAMETER\ U_PARAMETER\ OUT_DIR/OUT_DIR/OUT_DIR/IN_DIR >> NEWFILE.fv echo '## 'Ausgabepfad: OUT_DIR/NEWFILE >> NEWFILE.fv echo '## 'Datum: `date` >> NEWFILE.fv echo '##' >> NEWFILE.fv echo '##' Bearbeitete Transliterationsdatei>> NEWFILE.fv echo '##' Verwendete Parameter:\ G_PARAMETER\ I_PARAMETER\ R_PARAMETER\ T_PARAMETER\ W_PARAMETER\ >> NEWFILE.fv echo '##' >> NEWFILE.fv fi fi

##-----------------------------------------------

## Erzeugen der Ausgabedateien <datei>.fv und <datei>.dt ## Entfernen ueberfluessiger Leerzeilen: ## Pro Zeile ein Turn, Turns sind durch eine Leerzeile voneinander getrennt.

if [ T_PARAMETER ] then gawk '/^TEMP._dt >> NEWFILE.dt gawk '/^TEMP.13 >> NEWFILE.fv else gawk '/^TEMP.13 >> NEWFILE.fv fi else if [ / next; /^./ { printf( n { printf('' END printf(n''); ' OUT_DIR// next; /^./ { printf( n { printf('' END printf(n''); ' OUT_DIR// next; /^./ { printf( n { printf('' END printf(n''); ' OUT_DIR/TEMP*

##-----------------------------------------------

## Ende des Transliterationsverarbeitungszyklus

done

##----------------ENDE DER DATEI----------------------



next up previous contents
Next: UNIX-Code für filterall Up: No Title Previous: References



Dafydd Gibbon
Fri Sep 1 19:46:49 MET DST 1995