5.1.  Tokenisierer

5.1.1.  Grundproblem

Grundproblem: Vom Zeichenstrom zur Folge von Tokens 

Rohdaten

Rohe, elektronische Sprachdaten liegen in Dateien vor, welche nichts anderes als eine Folge von Einzelzeichen, d.h. ein kontinuierlicher Zeichenstrom sind.

Token: Einheit der Textsegementierung

Tokens sind die grundlegenden Analyseeinheiten nachgeschalteter sprachtechnologischer Systeme wie Wortartenbestimmung, Wortkorrektur, morphologische Analyse, Lexikonzugriff, syntaktische Analyse.

Grundfunktionen eines Programmes zur Tokenisierung (EVA-Prinzip)

5.1.2.  Zeichenkodierung

Was ist ein Zeichen auf dem Computer? 

Was ist ein Zeichen auf dem Computer? 

Textkonversion mit iconv

Verlustbehaftete Konversion

Nebst der Konversion zwischen unterschiedlichen Zeichenkodierungen lässt sich auch Text-Normalisierung durch “Transliteration” durchführen.

$ echo "Klößchen" | iconv -f ISO_8859-1  -t ASCII//TRANSLIT  
Klosschen

Das Löschen von nicht-repräsentierbaren Zeichen ist meist weniger nützlich:

$ echo "Klößchen" | iconv -f ISO_8859-1  -t ASCII//IGNORE  
Klchen

5.1.3.  Markup

5.1.4.  Programme

Typische Beispiele für Tokenisierer 
Tokenisierung aus einem Zeichenstrom oder einer Zeichenkette in eine Datenstruktur einer Programmiersprache

Beispiel 5.1.1 (Covingtons Tokenizer [Covington 2003]).
Tokenisierer in Prolog für Englisch: Konsumiere eine Textdatei oder eine Benutzereingabe und produziere daraus eine Prolog-Liste.

Joe’s brother doesn’t owe us $4,567.89.

[ w([j,o,e]),                      % w = Wort  
  w([s]),  
  w([b,r,o,t,h,e,r]),  
  w([d,o,e,s,n,t]),  
  w([o,w,e]),  
  w([u,s]),  
  s(’$’),                           % s = Symbol  
  n([’4’,’5’,’6’,’7’,’.’,’8’,’9’]), % n = Zahl  
  s(’.’) ]

Typische Beispiele für Tokenisierer 
Tokenisierung mit rein textuellem Output: Lese eine Textdatei ein und erzeuge daraus

Beispiel 5.1.2 (Schmids Tokenizer im UNIX-Stil [Schmid 2006]).
Sprachunabhängiger Tokenisierer mit Befehlszeilen-Schnittstelle und Abkürzungsdatei


$ cat file.txt
"Bach’sche Musik
mag Dr. Fritz.  Ja."
$ cat ger-abbrev
Dr.
usw.


$ separate-punctuation +1 +s +l ger-abbrev file.txt
"
Bach’sche
Musik
mag
Dr.
Fritz
.

Ja
.
"

Typische Beispiele für Tokenisierer 
Auf die Textsorte manuell angepasste Tokenisierer in einer Programmiersprache wie PERL, Python oder Xerox Finite State Tools, welche einen einfachen Umgang mit regulären Ausdrücken erlauben.

Definition 5.1.3 (Reguläre Ausdrücke (engl. regular expressions)). Ein regulärer Ausdruck ist eine relativ standardisierte Kurz-Notation, um Zeichenketten mit bestimmten Eigenschaften zu beschreiben.

Praktisch eingesetzt werden sie für die nicht-wörtliche Suche (engl. pattern matching), Suchen-und-Ersetzen und Segmentieren von Zeichenketten.

Einführung in reguläre Ausdrücke

Z.B. in unserem CLab: http://www.cl.uzh.ch/clab/regex

Typische Beispiele für Tokenisierer 
Tokenisierung mit XML-Output (ev. aus XML-Input), d.h. in einer Auszeichnungssprache (engl. markup language).

Beispiel 5.1.4 (Der LT-TTT2 Tokenizer [Grover 2008]).

  1. Rohtext
    This is an example. There are two sentences.

  2. XML-Input für Tokenisierer (Vortokenisierung)
    <document>  
       <text>  
          <p>  
             This is an example. There are two sentences.  
          </p>  
       </text>  
    </document>

  3. XML-Tokenisat
<document>  
<text>  
<p>  
<s id="s1">  
<w id="w3" c="w" pws="yes">This</w> <w id="w8" c="w" pws="yes">is</w>  
<w id="w11" c="w" pws="yes">an</w> <w id="w14" c="w" pws="yes">example</w>  
<w id="w21" pws="no" sb="true" c=".">.</w>  
</s>  
<s id="s2">  
<w id="w23" c="w" pws="yes">There</w> <w id="w29" c="w" pws="yes">are</w>  
<w id="w33" c="w" pws="yes">two</w> <w id="w37" c="w" pws="yes">sentences</w>  
<w id="w46" pws="no" sb="true" c=".">.</w>  
</s>  
</p>  
</text>  
</document>

Hinweis: Für Darstellungszwecke mit zusätzlichen Layoutzeichen angereichert.