Konzeption und Implementierung eines ... - Stephan, Daniel
Konzeption und Implementierung eines ... - Stephan, Daniel
Konzeption und Implementierung eines ... - Stephan, Daniel
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
7.2. TERM-DOKUMENT-MATRIX ERSTELLEN 86<br />
on ebenso wie ion Suffixe des Wortes Information. Somit gibt es für das Wort<br />
Information genau elf unterschiedliche Suffixe, eins für jeden Buchstaben. Wie<br />
von Zhang et al. dargestellt, werden zwei Suffix-Arrays benötigt - <strong>eines</strong> nor-<br />
mal von links nach rechts (Information, nformation, formation, . . . ), <strong>und</strong> <strong>eines</strong><br />
genau umgekehrt von rechts nach links (Information, Informatio, Informati,<br />
. . . ; dieses könnte wohl passender Prefix-Array genannt werden). Beide Arrays<br />
werden sortiert (das Suffix-Array normal <strong>und</strong> das Prefix-Array umgekehrt von<br />
rechts nach links), so dass die mehrfachen Vorkommen gleicher Wortfolgen in<br />
der durch die Sortierung hergestellten Ordnung direkt nacheinander stehen <strong>und</strong><br />
somit leicht erkannt werden.<br />
Der PhraseDetector <strong>und</strong> der SentenceDetector sind jeweils Producer.<br />
Ein Producer erzeugt Objekte, in diesen Fällen eben Phrase oder<br />
SentencesAndPhrases Objekte. Die verschiedenen Producer sind zusammen<br />
mit dem Tokenizer in Reihe geschaltet. Dieser steht am Anfang der Ket-<br />
te <strong>und</strong> bildet die Schnittstelle zum Lexer. Er ermöglicht es, über die er-<br />
kannten Token <strong>eines</strong> Dokumentes zu iterieren <strong>und</strong> implementiert dazu die<br />
Iterator <strong>und</strong> Iterable Interfaces. Diese gehören zum Standardumfang der<br />
Java-Klassenbibliothek <strong>und</strong> stellen somit die übliche Art <strong>und</strong> Weise dar, wie in<br />
Java über Datenmengen iteriert wird.<br />
Der SentenceProducer nutzt den Tokenizer, um über die Token zu iterieren,<br />
<strong>und</strong> erzeugt eine Reihe von Sentence Objekten. Der PhraseDetector, nach<br />
Tokenizer <strong>und</strong> SentenceDetector das Dritte Objekt in der Kette, ruft die<br />
Sentences vom SentenceDetector ab, indem er dessen produce() Methode<br />
mehrfach aufruft.<br />
Nach diesem Vorgang werden die gesammelten Token mit dem Snowball-<br />
Stemmer 1 auf ihre Stammform zurückgeführt. Dadurch werden beispielsweise<br />
die ähnlichen Worte ” laufen“ <strong>und</strong> ” läuft“ auf die gleiche Buchstabenfolge re-<br />
duziert, so dass sie in der später aufgebauten Tabelle dieselbe Stelle besetzen.<br />
Dieses ist ein übliches Vorgehen bei solchen <strong>und</strong> ähnlichen Textklassifizierungs-<br />
aufgaben. Damit die ursprünglichen Begriffe nicht verloren gehen, wird ein Ver-<br />
zeichnis angelegt, das für jedes ” gestemte“ Wort die dazugehörigen ursprüngli-<br />
chen Begriffe enthält. Dieses wird später für die Benennung wichtig.<br />
Danach wiederum werden die Token mit einer Liste von Stoppworten (sie-<br />
he Abschnitt 7.1) verglichen. Alle Token, die in dieser Liste wiedergef<strong>und</strong>en<br />
werden, werden an dieser Stelle fallen gelassen <strong>und</strong> tauchen somit in späteren<br />
1 WWW Adresse: http://snowball.tartarus.org