5.1
 Tokenisierer

5.1.1
 Grundproblem

Datei-Inhalte 

Beispiel 5.1.1 (Folge von Zeichenkodes).

Wieviele und welche Wörter enthält der folgende Datei-Inhalt?

57 61 73 20 62 65 69 6E 68 61 6C 74 65 74 20 73 69 65 3F 0A

(Der Dateiinhalt ist als Dump im Hexadezimalformat wiedergegeben, d.h. jedes Zeichen in Form seines Zeichenkodes als Hexadezimalzahl.)

Grundproblem: Vom Zeichenstrom zur Folge von Tokens 

Rohdaten

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

Token: Einheit der Textsegmentierung

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  
Kl"osschen

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.2 (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.3 (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.4 (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.5 (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.