Konzeption und Implementierung eines ... - Stephan, Daniel
Konzeption und Implementierung eines ... - Stephan, Daniel
Konzeption und Implementierung eines ... - Stephan, Daniel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
7.3. MATRIX BERECHNUNGEN 88<br />
Beispiel nicht ungewöhnlich, 10.000 verschiedene Begriffe verwalten zu müssen,<br />
während in den einzelnen Texten vielleicht nur jeweils 100 Worte vorkommen,<br />
von denen sich sogar einige wiederholen. 9.900 Zellen wären bei dieser Annahme<br />
auf 0, <strong>und</strong> das pro Dokument.<br />
Rechnet man die Dokumente des ISL (>80.000) auf die zu erwartende Größe<br />
der Matrix um, so bekommt man bei 20.000 Begriffen <strong>und</strong> 80.000 Dokumenten,<br />
sowie 8 Bytes pro Zelle (es werden double Werte gespeichert, um die Häufig-<br />
keitswerte mit double Gewichten multiplizieren zu können, so dass das Ergebnis<br />
eine gewisse Genauigkeit behält) eine Datenmenge von 12.800.000.000 Bytes.<br />
Diese Zahl sollte Motivation genug sein, die Größe zu beschränken. Die Ma-<br />
trix wird deshalb in einer Baumstruktur abgelegt, die der von Javas TreeMap<br />
entspricht. (Dessen Source wurde kopiert <strong>und</strong> leicht angepasst, sie wurde auf<br />
die Datentypen long als Schlüssel <strong>und</strong> double als Wert beschränkt <strong>und</strong> opti-<br />
miert.) Die TreeMap verwendet einen sogenannten Rot-Schwarz-Baum, dessen<br />
Laufzeitcharakteristik für die wesentlichen Operationen O(log(n)) entspricht.<br />
Sie legt die Daten so unter Schlüsselwerten ab, dass sie nach deren natürlicher<br />
Ordnung sortiert sind. Der Schlüssel repräsentiert die Koordinate der Matrix,<br />
dessen Werte gespeichert werden sollen. Er wird aus Zeilenindex + X * Spalten-<br />
index berechnet <strong>und</strong> ist somit bis zu einer Menge von X Dokumenten eindeutig<br />
bestimmt (die Dokumente entsprechen den Spalten). Das X darf mit dem maxi-<br />
malen Spaltenindex multipliziert nicht über den Wertebereich von long hinaus.<br />
Also muss X auf jeden Fall ein positiver Integer sein. Das dürfte jedoch kaum ei-<br />
ne echte Einschränkung darstellen, schließlich ergibt das eine maximale Spalten<br />
<strong>und</strong> Zeilenzahl von jeweils 2 hoch 31.<br />
Nachdem diese Matrix fertig aufgebaut ist, wird sie durchlaufen <strong>und</strong> die ver-<br />
zeichneten Werte jeweils mit Gewichten (TF-IDF, siehe Abschnitt 5.3.3 (Seite<br />
59)) multipliziert.<br />
Danach wiederum wird sie im Harwell-Boeing Format [DGL89] auf Platte<br />
abgelegt, denn die integrierte LSI-Komponente GTP 2 benötigt eine Datei in<br />
diesem Format als Eingabe. GTP liest daraufhin die Matrix ein <strong>und</strong> führt einen<br />
SVD Algorithmus aus, der drei Matrizen ergibt, die wie in Abschnitt 5.3.4 (Seite<br />
62) beschrieben zusammen die Ursprungsmatrix approximieren. Die Ergebnisse<br />
schreibt GTP wiederum in eine Datei, die nun umgekehrt wieder eingelesen<br />
werden muss. Die Ergebnisse landen in einem dafür erstellten Objekt namens<br />
SvdResult, dieses Objekt implementiert die nötigen Funktionen, wie Begriffe<br />
2 WWW Adresse: http://www.cs.utk.edu/ ∼ lsi/