07.01.2013 Aufrufe

Konzeption und Implementierung eines ... - Stephan, Daniel

Konzeption und Implementierung eines ... - Stephan, Daniel

Konzeption und Implementierung eines ... - Stephan, Daniel

MEHR ANZEIGEN
WENIGER ANZEIGEN

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/

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!