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.
Roh-Matrix<br />
anlegen<br />
Term-Frequenz-Matrix aufbauen<br />
mittels TF-IDF<br />
gewichten<br />
LSI anwenden<br />
89 7.4. CLUSTER ANALYSE<br />
DONE<br />
Dokument<br />
Vektoren aus den<br />
LSI Ergebnissen<br />
selektieren<br />
Cluster erkennen<br />
EM Clustering<br />
anwenden<br />
Abbildung 7.4.: Ablauf Cluster Analyse<br />
Cluster benennen<br />
untereinander verglichen werden, Dokumente untereinander verglichen werden<br />
<strong>und</strong> wie neue Dokumente in den Vektor-Raum ” eingefaltet“ werden, damit sie<br />
vergleichbar sind. Die Formeln dazu stehen in Abschnitt 5.3.4.<br />
7.4. Cluster Analyse<br />
Aus den Ergebnissen werden die Dokumentvektoren extrahiert <strong>und</strong> an den Clu-<br />
stering Algorithmus übergeben. Danach werden Namen vergeben.<br />
Für die Algorithmen, die im Zusammenhang mit dem Clustering nötig<br />
waren, wurde das Strategy-Pattern ([GHJV96]) verwendet. Jeder wichti-<br />
ge Algorithmus, sei es für die Zuweisung von Dokumenten zu Clustern<br />
(ClusterAssignmentStrategy) oder für das Durchführen des Clustering Algo-<br />
rithmus (ClusterStrategy) wird mit einer Schnittstelle ausgestattet, die ihn<br />
von dem Code, der ihn benutzt, entkoppelt. Dadurch ist es möglich, die verwen-<br />
dete Implementation flexibel auszutauschen. Im Diagramm sind beispielsweise<br />
zwei ClusterStrategy-Implementationen aufgeführt. Welche davon zur An-<br />
wendung kommt, entscheidet sich sobald der ClusterContext erzeugt <strong>und</strong> mit<br />
einer spezifischen Implementation initialisiert wurde.<br />
Die EMClusterStrategy Klasse implementiert der Einfachheit halber gleich<br />
zwei Schnittstellen <strong>und</strong> verhält sich als ihr eigenes Ergebnis-Objekt. Durch diese<br />
Aufteilung der Schnittstellen ist es möglich, dass der Algorithmus nach der<br />
Arbeit ein anderes Objekt erzeugt <strong>und</strong> dieses als Ergebnis zurückliefert. Es mag,<br />
je nach Arbeitsweise des Algorithmus, sinnvoll sein, dies zu tun. In diesem Falle<br />
ging es auch so <strong>und</strong> auf eine Extra-Klasse für die Ergebnisse konnte verzichtet