Konzeption und Implementierung eines Clusteringmechanismus für ein Online Informationssystem Diplomarbeit Daniel Stephan [email protected] 12. August 2005 yellow pages job offers experts networking mail instant messaging communication group mail/forum knowledge group chat tables numeric textual Recommendations graphic graphs visually textually share bibliographies bibster share documents docster ordering by similarity list tree search within search results add links to the cluster(s) the doc. belongs to Orienteering related docs in the net gpg graph Navigation binary auth+xml+doc=sxdoc Usage based Content based data entries images step by step navigating navigate to similar documents authenticate doc p2p publish doc to the net search the net search by example desktop search vivisimo xml+doc=xdoc archive map a:b classify multiple vocabularies Clustering bmj.com Teleporting DataMining nutch specialized system crawl and index only certain websites clusty.com aaas.org Paperball forward query to specialized system grouping search results list clusters to in- or exclude from search Search Engine meta search formulate query crawl flat create set classify page in cluster hierarchical name sets Classification protégé java noname sets alternative thesaurus rich client automate procedure eclipse rcp .NET prediction postnuke purchase need (if like a then like b) PHP goal webobjects springframework struts infer information from data technology jung weka jambalaya description web client java webwork 2 judge information trends java algorithms provide overview aid navigation ii Inhaltsverzeichnis I. Einleitung 1 1. Überblick über Inhalt und Prozesse 3 1.1. Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Der Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3. Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . 5 2. Business Analyse 9 2.1. Ausgangssituation . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2. Ziele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3. Herausforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3. Marktanalyse 15 3.1. Kriterien Auswahl . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2. Konkurrenten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.1. FIZ-Technik e.V. . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.2. FIZ Karlsruhe / STN Online Services . . . . . . . . . . . 19 3.2.3. Deutsches Maritimes Kompetenz Netz (DMKN) . . . . . 20 3.2.4. HWWA - Hamburgisches Welt-Wirtschafts-Archiv . . . . 20 3.2.5. MarineTalk . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.6. MarineNet . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3. Wissenschaftliche Angebote . . . . . . . . . . . . . . . . . . . . . 23 3.3.1. Netacademy, a scientific community . . . . . . . . . . . . 23 3.3.2. SpringerLink . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.3. ACM Portal . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4. Technisch Relevantes . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.4.1. Clusty / Vivı́simo . . . . . . . . . . . . . . . . . . . . . . 29 3.4.2. carrot2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Inhaltsverzeichnis iv II. Definition 33 4. Technische Analyse 35 4.1. Ist-Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.1. Komponenten und Schnittstellen . . . . . . . . . . . . . . 35 4.1.2. Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.3. Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.4. Einschränkungen . . . . . . . . . . . . . . . . . . . . . . . 42 4.2. Prototyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2.1. Oberflächenprototyp . . . . . . . . . . . . . . . . . . . . . 43 4.2.2. Prozess: Cluster erzeugen . . . . . . . . . . . . . . . . . . 45 4.2.3. Datenmodell . . . . . . . . . . . . . . . . . . . . . . . . . 47 4.2.4. Komponenten und Schnittstellen . . . . . . . . . . . . . . 47 5. Wissenschaftliche Analyse 51 5.1. Information Retrieval . . . . . . . . . . . . . . . . . . . . . . . . 51 5.2. Knowledge Discovery in Databases . . . . . . . . . . . . . . . . . 54 5.3. Repräsentation von Dokumenten . . . . . . . . . . . . . . . . . . 56 5.3.1. Einordnung in Situation des ISL . . . . . . . . . . . . . . 57 5.3.2. Das Dokument als Wortsack (aka word-bag) . . . . . . . . 57 5.3.3. Methoden für die Beschränkung auf wesentliche Features 59 5.3.4. Latent Semantic Indexing . . . . . . . . . . . . . . . . . . 62 5.4. Clustering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 III. Umsetzung 69 6. Statisches Modell 71 6.1. Data Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.2. Data Access Objects . . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3. Data Access Commands . . . . . . . . . . . . . . . . . . . . . . . 75 7. Dynamisches Modell 83 7.1. Stoppworte finden . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.2. Term-Dokument-Matrix erstellen . . . . . . . . . . . . . . . . . . 84 7.3. Matrix Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . 87 7.4. Cluster Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 7.5. Cluster Benennung und Matrizen . . . . . . . . . . . . . . . . . . 90 v Inhaltsverzeichnis 8. Verwendung des Programms 93 8.1. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 8.2. Benutzeroberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . 94 8.3. Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 IV. Abschluss 9. Ergebnisse und Fazit 99 101 9.1. Technische Perspektive . . . . . . . . . . . . . . . . . . . . . . . . 101 9.1.1. Testdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.1.2. Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 9.1.3. Qualität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 9.1.4. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 9.2. Fachliche Perspektive . . . . . . . . . . . . . . . . . . . . . . . . . 106 9.2.1. Potentiale . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 9.2.2. Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 9.3. Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Glossar 111 Literaturverzeichnis 115 Inhaltsverzeichnis vi Tabellenverzeichnis 4.1. Dataobject . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.2. Dataobject (Fortsetzung) . . . . . . . . . . . . . . . . . . . . . . 41 9.1. Laufzeit bei 521 Dokumenten . . . . . . . . . . . . . . . . . . . . 102 9.2. Laufzeit bei 1684 Dokumenten . . . . . . . . . . . . . . . . . . . 102 Tabellenverzeichnis viii Abbildungsverzeichnis 1.1. Das Prototypen-Modell . . . . . . . . . . . . . . . . . . . . . . . 5 2.1. ISL-Strategie-Komponenten . . . . . . . . . . . . . . . . . . . . . 10 3.1. Vergleichstabelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2. Beispiel einer MarineNet Suchmaske . . . . . . . . . . . . . . . . 24 3.3. Inhalt von Drewry, angeboten von MarineNet . . . . . . . . . . . 25 3.4. Erweiterte Suche im ACM Portal . . . . . . . . . . . . . . . . . . 28 4.1. System-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 36 4.2. Erfassungsprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.3. Rechercheprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.4. Screenshot der Suchmaske . . . . . . . . . . . . . . . . . . . . . . 41 4.5. Recherche-Formular . . . . . . . . . . . . . . . . . . . . . . . . . 44 4.6. Verweis auf ähnliche Dokumente . . . . . . . . . . . . . . . . . . 45 4.7. Clustering Prozess . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.8. Datenstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.9. System-Komponenten . . . . . . . . . . . . . . . . . . . . . . . . 48 5.1. Tabellarische Darstellung aus [VR79] . . . . . . . . . . . . . . . 54 5.2. KDD Prozess von Fayyad et al. . . . . . . . . . . . . . . . . . . . 55 6.1. Datenobjekte, relationale Sicht . . . . . . . . . . . . . . . . . . . 72 6.2. Datenobjekte, objektorientierte Sicht, Teil 1 . . . . . . . . . . . . 73 6.3. Datenobjekte, objektorientierte Sicht, Teil 2 . . . . . . . . . . . . 74 6.4. DAO Struktur, Teil 1 . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.5. DAO Struktur, Teil 2 . . . . . . . . . . . . . . . . . . . . . . . . . 77 6.6. DAO Struktur, Teil 3 . . . . . . . . . . . . . . . . . . . . . . . . . 78 6.7. Data Access Commands, Teil 1 . . . . . . . . . . . . . . . . . . . 79 6.8. Data Access Commands, Teil 2 . . . . . . . . . . . . . . . . . . . 80 6.9. Beispiel: BatchAssign Command . . . . . . . . . . . . . . . . . . 81 Abbildungsverzeichnis x 7.1. Wort Häufigkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . 84 7.2. Ablauf Text Analyse . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.3. Ablauf Matrix Berechnung . . . . . . . . . . . . . . . . . . . . . . 87 7.4. Ablauf Cluster Analyse . . . . . . . . . . . . . . . . . . . . . . . 89 7.5. Klassendiagramm Cluster Algorithmen . . . . . . . . . . . . . . . 91 7.6. Klassendiagramm für Matrizen und SVD Ergebnisse . . . . . . . 92 8.1. Bildschirmfoto des Cluster Browsers . . . . . . . . . . . . . . . . 94 8.2. Bildschirmfoto des Menüs . . . . . . . . . . . . . . . . . . . . . . 95 8.3. Ausschnitt der Komponentenkonfiguration . . . . . . . . . . . . . 96 Teil I. Einleitung 1. Überblick über Inhalt und Prozesse 1.1. Einleitung Diese Diplomarbeit entsteht in Zusammenarbeit mit dem Institut für Seeverkehrswirtschaft und Logistik (ISL) im Rahmen der neuen sich dort entwickelnden Online-Strategien. Aus den Gesprächen, die mit dem ISL geführt wurden, kristallisierte sich heraus, dass sich das ISL unter anderem als Anbieter für spezialisierte Informationen sehen und auf dieser Basis neuartige Dienstleistungen generieren möchte. Das derzeitig existierende Angebot umfasst die Literaturdatenbank Seabase, dabei soll es jedoch keinesfalls bleiben. Es ist geplant, zusätzlich zu den Literaturhinweisen aus dem Fundus des ISL weitere Quellen zu erfassen und verstärkt Online-Resourcen oder gar Informationen von Partnerunternehmen einzubeziehen. Zudem ergibt die ausschließliche Ausrichtung des ISL auf Literaturhinweise aus den Bereichen Seewirtschaft und Logistik ein vergleichsweise konzentriertes System aus Schlagworten und zugehörigen Literaturhinweisen, so dass deren Unterschiede subtil sind. Die Schwierigkeit für die Nutzer besteht darin, die richtigen Schlagworte oder Deskriptoren auszuwählen, damit die Ergebnisse wirklich für das Suchziel relevant sind. Bei größerem Umfang der angebotenen Information wächst die Anforderung an die Methodik der Recherche, auch bei großen Datenmengen hilfreiche Ergebnisse zu ermöglichen. Aus diesem Grund entschied man sich dafür, den Kontext der Arbeit bei der Recherchemethodik anzusiedeln. Die Arbeit zielt nun darauf ab, einen innovativen Recherche-Mechanismus zu entwickeln. Mehr zum ISL findet sich in Abschnitt 2.1 (Seite 9). Die Arbeit beginnt zunächst mit einer generellen Betrachtung der Umgebung, in der sich das Informationssystem des ISL befindet. Dazu wurden Angebote anderer Firmen kurz betrachtet und beschrieben, um zeigen zu können, wie sich das Angebot des ISL (in Bezug auf die Suchmethodik) im Vergleich darstellt. Dies geschieht in Kapitel 3 (Seite 15). In Kapitel 6 (Seite 71) wird die Architektur der technischen Realisierung 1.2. DER PROZESS 4 beschrieben und Kapitel 9 (Seite 101) erläutert die erzielten Ergebnisse und gibt einen Ausblick auf weitere Möglichkeiten. Sofern in den Formulierungen dieser Arbeit der Nutzer oder beispielsweise der Suchende angesprochen wird, so sei hiermit versichert, dass natürlich auch weibliche Suchende und Nutzer, sprich Nutzerinnen, mit eingeschlossen sind. 1.2. Der Prozess Im Rahmen dieser Arbeit wird ermittelt, wie ein Clustering Verfahren eingesetzt werden kann, um Rechercheergebnisse zu optimieren. Dabei wird eine mögliche Lösung vorgeschlagen, und für diese ein Prototyp (vgl. Seite 116 in [Bal98]) entworfen und dargestellt. Der Prototyp soll die Funktionsfähigkeit des Algorithmus an einem Beispiel mit echten Daten des ISL demonstrieren. Der Ablauf der Arbeit orientiert sich wegen der Forschungsnatur am Prototypen-ProzessModell (vgl. Seiten 114ff in [Bal98]). Das Modell wird laut Quelle unter anderem dann verwendet, wenn sich die Realisierbarkeit nicht vorab garantieren lässt. Das Modell erlaube es zudem, den Auftraggeber von der prinzipiellen Durchführbarkeit der Idee zu überzeugen. Beides sind im Kontext dieser Arbeit zutreffende und überzeugende Argumente. Abbildung 1.1 gibt die Darstellung der Quelle wieder. Der hellblaue Bereich kennzeichnet die Aspekte, die das Prototypen-Modell anderen Modellen hinzufügt. Die Gesamtgrafik zeigt eine Ergänzung der traditionellen Modelle um ” Prototypen.“ (vgl. Seite 118 in [Bal98]) Die vier Kernprozesse finden sich in den traditionellen Modellen ebenso wieder, werden aber jeweils durch PrototypenAspekte erweitert und sind deshalb nur zum Teil in den blauen Bereich gezeichnet. Die Quelle merkt an, eine Voraussetzung für ein erfolgreiches Umsetzen des Modells sei die aktive Beteiligung der Endbenutzer am Prototyping-Prozess, erwähnt aber ebenso, dass die Vorgehensweise letztlich von der untersuchten Fragestellung abhängt. Im Rahmen dieser Diplomarbeit wurde sicherlich weniger Kontakt zu den Nutzern gepflegt, als dies die Erdenker des Modells im Kopf hatten. Aber schließlich handelt es sich hierbei um eine Diplomarbeit und um kein (wirtschaftlich motiviertes) Softwareprojekt. Das zu erreichende Ziel ist viel eher die Darstellung der generellen Anwendbarkeit in dem konkreten Umfeld des ISL. Diese Arbeit vollzieht also keinen vollständigen Entwicklungsprozess, an des- 5 1.3. ENTWICKLUNGSUMGEBUNG Kunde Benutzer Aquirieren Erweiterungen Prototypen-Modell Demo Prototyp Prototyp Labormuster Pilotsystem Planen Definieren Entwerfen Implementieren Durchführbarkeitsstudie Produktmodell Änderungen Produktarchitektur Produkt Änderungen Abbildung 1.1.: Das Prototypen-Modell sen Ende ein einsatzfähiges Produkt steht, denn dies würde den Rahmen der Diplomarbeit sprengen. Der Autor hat sich stattdessen auf die ersten Schritte beschränkt. Es wird geplant, definiert und entworfen, jedoch nicht implementiert. Dementsprechend beschränkt sich die Implementierungsleistung auf die erstellten Prototypen und Labormuster. Es gibt einen Demo-Prototypen, der in Abschnitt 4.2 (Seite 43) dargestellt wird und einen (vertikalen) Prototypen, der in Kapitel 6 (Seite 71) beschrieben wird. 1.3. Entwicklungsumgebung Diese Arbeit entsteht mithilfe von spezialisierten Werkzeugen, die jeweils ihre Aufgabe im Gesamtprozess haben. Beispielsweise werden, um die Gedanken zu strukturieren und zielgerichteter vorzugehen, einige Mindmaps entworfen. Eine 1.3. ENTWICKLUNGSUMGEBUNG 6 Mindmap fixiert ziellos umherirrende Gedanken und ermöglicht oder erleichtert es, nützliche Ideen von solchen zu trennen, die das Thema nicht treffen. Die hierfür verwendete Software heißt FreeMind und ist unter der URL freemind.sourceforge.net1 herunterzuladen. Ein Exemplar einer solchen Map ist auf der Titelseite zu sehen. Während der Ermittlung der Anforderungen des ISL wird das generische Werkzeug Protégé verwendet. Dieses erlaubt, eine beliebige Datenstruktur zu definieren, und bietet automatisch passende Eingabeformulare für die verschiedenen Datenobjekte an. Das Werkzeug ist für die Entwicklung von Ontologien gedacht und spezialisiert sich somit begrifflich auf Dinge wie Klassen, Instanzen und benannte Beziehungen dazwischen. Für die Dokumentation der Anforderungen wird eine passende Datenstruktur mit Protégé definiert. Diese beinhaltet Klassen wie Requirement oder Person und vervollständigt diese mit Beziehungen wie depends-on“ zwischen Requirements oder needs“ zwischen Person und ” ” Requirement. Um das Ergebnis kommunizieren zu können, wird ein einfaches Export-Plugin entwickelt, welches die Daten in eine XML Datei exportiert, die daraufhin mittels XSL-T in eine für gängige Browser lesbare Form (HTML und PDF) umgewandelt werden kann. Auf diese Weise hat der Anforderungsanalyst auf der einen Seite eine strukturierte Eingabemöglichkeit, die die Beziehungen der Anforderungen untereinander in einer logisch formell korrekten Form ablegt, und auf der anderen Seite kann er eine lesbare Form der Anforderungen automatisch erzeugen. Dies ist jedoch durch kommerzielle Produkte, die sich auf die Dokumentation und Verwaltung von Anforderungen spezialisieren, besser möglich. Insbesondere können diese Werkzeuge mehrere Mandanten verwalten und professionell Versionierung betreiben, was mit dieser generischen Art und Weise schlecht bis gar nicht funktioniert. Protégé ist somit zwar kein perfektes Werkzeug für diese Aufgabe, aber es ist kostenlos und durch eigene Plugins erweiterbar. Herunterzuladen auf protege.stanford.edu2 . Das Export-Plugin liegt zusammen mit dem nötigen XSL-T Stylesheet und der verwendeten Klassenstruktur für Protégé unter dieser URL vor: www.danielstephan.com/thesis/ prot-req.zip3 . Zur Unterstützung des Softwaredesigns wird der Enterprise Architect von Sparx Systems4 in der Version 5.0 verwendet. Um Roundtrip-Engineering durchführen 1 WWW WWW 3 WWW 4 WWW 2 Adresse: Adresse: Adresse: Adresse: http://freemind.sourceforge.net http://protege.stanford.edu http://www.danielstephan.com/thesis/prot-req.zip http://www.sparxsystems.com.au/ 7 1.3. ENTWICKLUNGSUMGEBUNG zu können, muss die Software Java-Quellcode erzeugen sowie selbigen mittels Reverse Engineering wieder einlesen können. Vergleichbare Software mit dieser Funktion von Borland (Together 2005 for JBuilder, derzeit für EUR 1740) und NoMagic (MagicDraw Professional, derzeit für EUR 255) erwiesen sich verglichen mit dem Enterprise Architect, USD 95, als zu kostspielig. Die Implementation verwendet die aktuellste Version der Sprache Java (java.sun.com/j2se/1.5.05 ) und wird mit der leistungsfähigen Open-Source Entwicklungsumgebung Eclipse (www.eclipse.org6 ) durchgeführt. Der Text der Arbeit selber wird, der innovativen Natur ihres Inhalts folgend, weder mit einer üblichen Textverarbeitung noch (direkt) mit Latex, des im wissenschaftlichen Umfeldes üblichen Textsatzsystems, verfasst. Stattdessen wird die XML Variante des ursprünglich auf SGML basierenden Formats Docbook verwendet (siehe www.oasis-open.org/docbook7 ). Der Grund für diese Wahl ist in erster Linie die Neugier des Autors. Da es sich um ein XML basiertes Format handelt, wird der Text mit einem XML Editor verfasst. Es handelt sich bei dem XML Editor um <oXygen/>, der unter www.oxygenxml.com8 zu beziehen ist. Die Software liefert sämtliche für Docbook nötigen Stylesheets mit. Die Stylesheets sind alternativ unter docbook.sourceforge.net/projects/xsl/9 zu beziehen. Da der Autor im Rahmen des Schreibens festgestellt hat, dass die mit Docbook erzeugten Ergebnisse nicht ausreichend perfekt gesetzt sind, hat er nach Alternativen gesucht. Das Ergebnis dieser Suche kann auf www.danielstephan.com/ dbp.html10 nachgelesen werden. Somit existiert letztendlich der Text in Form von XML im Docbook Format, der Satz jedoch wird von LATeX durchgeführt. Dank DBP existiert ein funktionierender Prozess von XML über LATeX zu PDF. 5 WWW Adresse: http://java.sun.com/j2se/1.5.0/ WWW Adresse: http://www.eclipse.org/eclipse/ 7 WWW Adresse: http://www.oasis-open.org/committees/tc home.php?wg abbrev= 6 docbook WWW Adresse: http://www.oxygenxml.com 9 WWW Adresse: http://docbook.sourceforge.net/projects/xsl/ 10 WWW Adresse: http://www.danielstephan.com/dbp.html 8 1.3. ENTWICKLUNGSUMGEBUNG 8 2. Business Analyse 2.1. Ausgangssituation Das ISL besitzt nach eigenen Aussagen mit einem Bestand von über 80000 erfassten Einträgen eine der größten Literatur-Datenbanken im Bereich der Seeverkehrswirtschaft. Diese Daten hätten für das ISL bzw. für dessen Kunden einen hohen Wert. Da Informationen per se immer mehr ausschließlich im Internet gesucht würden und sich immer weniger Kunden persönlich in die Räume des Instituts begäben, würde das nicht genutzte Potential der Datenbank immer größer und der Betrieb der Datenbank infolgedessen immer teurer werden. Daher wurde schnell klar, dass der Datenbestand ins Internet gebracht werden muss, um hier der Nachfrage zu begegnen, der offline“ immer seltener entge” gengetreten werden kann. Belegt wurde die Einsicht durch eine Studie [ISL01], die das ISL zusammen mit Roland Berger und PriceWaterhouseCoopers im Auftrage des Bundesministeriums für Wirtschaft und Technologie (BMWi) bis Ende 2001 durchgeführt hatte. Diese Studie belegte insbesondere den gewachsenen Stellenwert des Internets in Bezug auf die Informationsbeschaffung in Unternehmen der maritimen Wirtschaft. Obwohl laut Studie nur 17,5% der Informationen aus dem Internet bezogen würden (der persönliche Kontakt erbringt nach wie vor die meisten relevanten Informationen), wäre das Internet als ein wichtiges Medium der Informationsbeschaffung zu sehen, weil die Tendenz zur online Nutzung immanent gegeben sei. Der Grund der noch eher geringen Nutzung könnte im mangelhaften Angebot liegen. Die Studie stellt fest, dass mehr als 90% der Befragten die übermäßige Informationsflut als Belastung empfänden. Die Menge an Informationen führe zu einem hohen Aufwand bei der Selektion der relevanten Informationen. Zudem seien die Informationen oft nicht aktuell. Diesen Erkenntnissen folgend wurde die Strategie etabliert, Inhalte des ISL im Rahmen eines Portals online anzubieten und ein Geschäftsmodell zu entwickeln, das die erkannten Herausforderungen adressiert. 2.2. ZIELE 10 Business Strategie on Pr of ile Inhal te kti Sele Abbildung 2.1.: ISL-Strategie-Komponenten Ein Ergebnis dieser Bemühungen ist bereits zum jetzigen Zeitpunkt erkennbar. Und zwar werden bereits einige Angebote online verkauft. Für diesen Zweck hat das ISL einen Online-Shop eingerichtet. Dort werden eine Handvoll regelmäßiger Publikationen des ISL angeboten. Diese Publikationen werden nach Aussage des ISL vom Markt nachgefragt. Es handelt sich dabei um vergleichsweise hochwertige Publikationen. Eine Publikationen wie das Jahrbuch kostet zum Beispiel inklusive CD-ROM knapp 300 Euro. Zusätzlich gibt es das Shipping Statistics and Market Review, welches 9 Mal im Jahr erscheint, jeweils mit etwas unterschiedlichen Schwerpunkten. Es kostet inkl. CD-ROM 470 Euro pro Jahr1 . 2.2. Ziele Das übergeordnete strategische Ziel des ISL ist es, Informationen anzubieten und über deren Individualisierung Geld zu verdienen. Dieses Hauptziel lässt sich, wie in Abbildung 2.1 dargestellt, aus drei Komponenten aufbauen, ohne die es nicht oder schwer verwirklicht werden kann. Ein Kernpunkt und somit die erste Komponente sind die Inhalte, die ange1 Stand: Juli 2005 11 2.3. HERAUSFORDERUNGEN boten werden sollen. Hier gilt es, eine ansprechende Auswahl sicherzustellen. In diesem Zusammenhang strebt das ISL eine Zusammenarbeit mit Partnerorganisationen an, deren Inhalte zusammen mit denen des ISL in einem gemeinsamen System angeboten werden sollen. Zudem wurde erkannt, dass die Nutzer die Inhalte in aller Regel unverzüglich erwarten. Sofern möglich sollen somit Inhalte in digitaler Form (Volltexte, Statistiken, Tabellen) vorgehalten und vom zahlenden Kunden auf Knopfdruck abgerufen werden. Das Angebot kann nur dann für die Kunden interessant sein, wenn die Menge an hilfreichen Inhalten groß genug ist. Diese Erkenntnis liefert im Umkehrschluss die Forderung, dass Kunden die gewünschten Inhalte auf einfache Weise aus dem Fundus selektieren können müssen und somit das System entsprechend mächtige Recherchemechanismen aufweist, die die zweite Komponente darstellen. Diese soll die Strukturen der Informationslandschaft offensichtlich machen und geeignete Navigationselemente bereitstellen, damit sich der Kunde zurechtfindet und einfach eine Vielzahl für ihn relevante Inhalte finden kann. Um das Informationsangebot wertvoller zu gestalten, soll es individuell auf den Nutzer zugeschnitten werden, dies schließt den Kreis. Das wiederum setzt die Existenz von individuellen Kundenprofilen voraus, auf deren Basis personalisierte Angebote maßgeschneidert werden können. Diese Angebote beinhalten einen automatischen Benachrichtigungsdienst über neue Dokumente, die zum Kundenprofil passen, der mittels E-Mail realisiert werden soll, sowie eine Möglichkeit, fehlende Informationen (unbefriedigte Nachfrage) online zu bemängeln. Letzte Funktion soll die Kundenwünsche erkennbar machen und das ISL in die Lage versetzen, auf die Nachfrage besser zu reagieren. Auf diese Arbeit bezogen können natürlich nicht alle Ziele des ISL umgesetzt werden. Daher konzentriert sie sich auf die zweite Komponente und entwickelt eine innovative Recherchetechnologie. 2.3. Herausforderungen Um zu verstehen, welche Herausforderungen für die Recherche in Informationssystemen wie dem des ISL existieren, sollte man zunächst wissen, wie eine solche Recherche abläuft. Was ist also Recherche? Recherche wird hier als Oberbegriff für die Suche nach Informationen verstanden. Im Kontext dieser Arbeit sind es speziell die Suchvorgänge, die mit Hilfe eines Informationssystems wie der ISL Seabase durchgeführt werden. Aber betrachten wir einmal, wie das typische 2.3. HERAUSFORDERUNGEN 12 Nutzerverhalten während einer solchen Suche aussieht. Der Ablauf einer typischen Recherche beginnt, sobald ein Nutzer ein Defizit oder ein Interesse entwickelt und nach Informationen sucht, die den neu aufgekommenen Bedarf befriedigen. Der Nutzer wird möglicherweise nicht zuerst das Internet aufsuchen, sondern stattdessen zunächst seine eigenen Bücher, sowie Dateien und Datenbanken durchforsten und eventuell noch jemanden anrufen, aber spätestens danach sucht er das Internet auf und landet hoffentlich zügig auf den Webseiten des ISL. Wie in [TAAK04] von Teevan et al. dargelegt wurde, gibt es für den Nutzer im Internet im groben zwei Methoden, ans Ziel zu gelangen. Die eine Methode besteht darin, eine möglichst exakte Suchanfrage zu formulieren, die die gesuchten Informationen ausreichend exakt beschreibt, so dass das System direkt das Gesuchte liefert. Diese Vorgehensweise nennt das genannte Paper Teleporting. Der Nutzer teleportiert sich im übertragenen Sinne direkt zu der gewünschten Information. Im Buch [RM02] von Rosenfeld und Morville wird es The Perfect Catch genannt und jedoch dargelegt, dass dieses sehr simple Vorgehen alleine oft nicht zum Ziel führt. Dafür gibt es mehrere Gründe, zum einen weiß der Nutzer manchmal nicht genau genug, wonach er sucht. In diesem Falle muss er seine Suche allgemeiner halten, sich erst einmal umschauen und das Angebot spielerisch“ erforschen. ” Anders ausgedrückt: der Nutzer muss sich zunächst orientieren und Teleporting ist für ihn nicht möglich. Und selbst wenn er weiß, wonach er sucht, so ist die Sprache, die er für die Suche verwendet nicht notwendigerweise die selbe, mit der die gesuchte Information erfasst wurde. Dabei ist mit Sprache noch nicht einmal Sprache im Sinne von Französich oder Deutsch, sondern eher die Wortwahl gemeint, die bei unterschiedlichen Menschen unterschiedlich ausfällt. [RM02] fragt in diesem Zusammenhang ’PDA’, ’Handheld’ oder ’Handheld PC’“? ” Alle hier betrachteten Autoren stellen jeweils auf ihre Weise fest, dass ein Nutzer die Schwierigkeiten durch ein mehrschrittiges Vorgehen zu überwinden versucht, bei dem sich Orientierung/Browsen und Direktsuche abwechseln. Teevan et al. nennen dies Orienteering und belegen empirisch dessen bevorzugte Nutzung. [Bat89] nennt es Berrypicking, weil der Nutzer über verschlungene Pfade durch den Informationsraum wandert und auf dem Wege die Beeren pflückt, die ihn interessieren. Im Paper von Teevan et al. wird vermutet, dass diese kombinierte, aus mehreren Schritten bestehende Suche die kognitiven Pro- 13 2.3. HERAUSFORDERUNGEN zesse von Nutzern weniger fordert und deshalb bevorzugt wird. Sie haben empirisch festgestellt, dass Nutzer bevorzugen, einigen Verweisen zu folgen und sich dadurch Schritt für Schritt dem Ziel anzunähern, anstatt eine exakte Anfrage anzugeben und direkt zum Ziel zu gelangen. Das gilt sogar, wenn der Suchende genau weiß, wo das Gesuchte liegt, und er oder sie sogar ohne weiteres in der Lage wäre, die Anfrage exakt genug zu formulieren. Ein Informationssystem sollte folglich ein mehrschrittiges, iteratives Vorgehen erlauben oder gar besonders unterstützen. Das ISL ist dafür bereits gut aufgestellt, denn der gepflegte, ausführliche Thesaurus ist eine gute Grundlage dafür, Orientierungshilfen anbieten zu können. Ein darüber hinausgehendes Clustering kann dies noch verbessern. 2.3. HERAUSFORDERUNGEN 14 3. Marktanalyse 3.1. Kriterien Auswahl Es gilt nun herauszufinden, wie die Suche in online Informationssystemen in der Praxis vom Rest der Welt organisiert wird. Es sollen dadurch übliche Vorgehensweisen demonstriert und der Ansatz dieser Arbeit in einen Kontext gesetzt werden. Dokumente, Webseiten oder Dateien in Datenbanken zu suchen ist ein ganz zentraler Faktor, der sich mit der Zunahme der Menge an Informationen, die sich in den Datenbanken dieser Welt verstecken, an zunehmender Wichtigkeit erfreut. Daher bieten so gut wie alle Informationssysteme mehr oder weniger ausführliche Unterstützung für die Recherche in ihren Systemen an. Die Auswahl der betrachteten Informationssysteme beinhaltet eine Reihe derer, die bereits vom ISL als relevante Konkurrenz auf dem Markt erkannt worden waren. Darüberhinaus werden einige allgemein bekannte Online-Dienste betrachtet, sowie auch solche die ähnliche Ansätze in anderen Märkten verfolgen. All diese Dienste werden hier nach einer Reihe von Kriterien ausgewertet. Die Kriterien stützen sich sowohl auf die technische Umsetzung des Angebots, als auch auf dessen Wirksamkeit in Bezug auf wirtschaftliche Faktoren. Im folgenden sollen die Kriterien aufgelistet und erläutert werden. Community Beinhaltet das Angebot Dienste für eine virtuelle Gemeinschaft? Derartige Dienste erlauben die Wertschöpfung zwischen Kunden und erhöhen somit die Wertigkeit des Angebots mit Hilfe von Netzwerkeffekten. Zielgruppe An wen richtet sich das Angebot in erster Linie? Erfassung Auf welche Weise kommen die Daten ins System? Erfasst der Anbieter selber oder verkauft er den Zugriff auf Datenbanken anderer Firmen? Erfassung durch Kunden Können Kunden eigene Dokumente in das System einpflegen? 3.1. KRITERIEN AUSWAHL 16 Suche mittels boolschen Operatoren Sind Begriffe mittels UND/ODER beliebig kombinierbar? Suche auf der Basis einer Taxonomie Sind die Dokumente mit Schlagworten versehen, die untereinander in einer oder mehreren Spezialisierungsbeziehungen stehen (Taxonomie)? Suche ähnlicher Begriffe möglich Ist das System in der Lage, trotz Tippfehler sinnvolle Ergebnisse zu liefern? Volltextsuche Suche im Volltext des Angebots ist möglich. Clustering Der Suchmechanismus gruppiert die Suchergebnisse automatisch. Angebot ist aktuell Ist das Angebot aktuell? Monate alte Neuigkeiten weisen auf ein schlecht gepflegtes System hin und werden kaum Nutzer anziehen. Viele brandaktuelle Artikel wiederum zeugen von einem erfolgreichen Angebot mit echtem Nutzwert . Angebot beinhaltet digitale Dokumente Sind die Dokumente online zu beziehen und zu lesen? Angebot beinhaltet Reports über Rohdaten Steht hinter dem Angebot eine Datenbank , deren Inhalte in Form von Tabellen und Graphen ohne textliche Beschreibung dargeboten werden? Angebot beinhaltet kostenpflichtige Suchergebnisse Sind die Ergebnisse des verwendeten Suchmechanismus kostenpflichtig? Angebot beinhaltet kostenpflichtige Dokumente Sind einzelne Dokumente käuflich zu erwerben? Angebot beinhaltet kostenpflichtigen Systemzugang Ist der Zugang zum System oder zu Teilen des Systems pauschal kostenpflichtig? Marketingplattform Es besteht eine Möglichkeit für Partner und andere Firmen, auf der Web Site Werbung zu machen. Sei es durch Banner oder sponsored news“. ” Werbefinanziert Die Angebote finanzieren sich hauptsächlich durch Werbung. Yellow Pages Das System beinhaltet Verzeichnisse von Firmen und Produkten. 17 3.2. KONKURRENTEN Die Ergebnisse sind in Abbildung 3.1 (Seite 18) nachzulesen. 3.2. Konkurrenten 3.2.1. FIZ-Technik e.V. FIZ Technik e.V.1 ist ein gemeinnütziger technisch-wissenschaftlicher Verein. Mitglieder sind: VDMA e.V. (Verband Deutscher Maschinenund Anlagenbau), VTDI e.V. (Textil) und FWD e.V. (Werkstoffe) sowie die Industrieunternehmen und Forschungseinrichtungen: Robert Bosch GmbH, Stuttgart, DaimlerChrysler AG, Stuttgart, Siemens AG, München, MAN B&W Diesel AG, Augsburg und FraunhoferGesellschaft, München. Das Fachinformationszentrum Technik erstellt bibliographische Datenbanken und bietet diese in elektronischer Form an. Dazu werden jährlich ca. 120000 Dokumente aus Fachzeitschriften, Tagungsbänden, Forschungsberichten und Dissertationen ausgewertet und gespeichert. Über 300 Mitarbeiter sind mit dieser Aufgabe betreut. Auch hier wird, ebenso wie beim ISL, jedes ausgewertete Dokument mit einem Kurzreferat versehen, in Kategorien einsortiert und verschlagwortet. Der dazugehörige Thesaurus umfasst jeweils etwa 50000 deutsche und englische Begriffe. Die Recherche in den Datenbanken ist prinzipiell kostenpflichtig. Dabei unterscheidet die Preisliste2 zwischen dem normalen Zugriff über die Online-Suche sowie einem speziellen Pauschaltarif für größere Organisationen, die die Recherche aus dem eigenen Intranet heraus erlauben möchten. Der Preis für den normalen Zugriff setzt sich aus der Login-Gebühr von e5,40, die entsprechend bei jedem Login-Vorgang anfällt, einer sog. Anschaltzeit, die auf eine nicht näher spezifizierte Art und Weise aus dem Suchaufwand der Datenbank errechnet wird (durchschnittlicher Preis ca. e100 pro Stunde), sowie einer Dokumentausgabegebühr , die je nach Datenbank und Format zwischen e1,50 und e2,50 schwankt und pro angezeigter Bibliographie abgerechnet wird, zusammen. Die Anschaltzeiten und Dokumentausgabegebühren schwanken je nach abgefragter Datenbank, ebenso wie die Pauschalpreise. Diese schwanken für Großunternehmen von e3885,- bis e65200,- pro Datenbank pro Jahr. KMUs und Fachhoch1 2 WWW Adresse: http://www.fiz-technik.de WWW Adresse: http://www.fiz-technik.de/download/preise.pdf 18 3.2. KONKURRENTEN Community Zielgruppe Erfassung durch Anbieter Erfassung durch Kunden Suche mittels booleschen Operatoren Suche syntaktisch ähnlicher Begriffe möglich Volltextsuche Clusteranalyse Suche auf der Basis einer Taxonomie Angebot ist relativ aktuell Angebot beinhaltet digitale Dokumente Angebot beinhaltet Reports über Rohdaten Angebot beinhaltet kostenpflichtige Suchergebnisse Angebot beinhaltet kostenpflichtige Dokumente Angebot beinhaltet kostenpflichtigen Systemzugang Marketingplattform Werbe finanziert Yellow Pages T : Techniker / Ingenieure W : Wissenschaftler M : Manager ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ TW ☑ www.dmkn.de ☑ ☑ ☑ ☑ ☑ MTW MTW ☑ ☑ ☑ ☑ ☑ ☑ www.hwwa.de ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ M ☑ ☑ TMW ☑ ☑ ☑ ☑ TW ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ ☑ www.clusty.com ☑/- www.marine-net.com ☑ ☑ ☑ portal.acm.org Marktvergleich www.marinetalk.com TMW TMW ☑ ☑ ☑ www.springerlink.com ☑ ☑ ☑ WM www.netacademy.org ☑ Abbildung 3.1.: Vergleichstabelle www.fiz-technik.de 19 3.2. KONKURRENTEN schulen zahlen zwischen e788,- und e13020,-. Es gibt 10 FIZ-Technik-eigene Datenbanken und 16/17 fremde Datenbanken, die FIZ-Technik lizensiert und integriert hat. Der Autor stellt fest, dass das Preissystem auf ihn durch die vielen Einzelposten abschreckend wirkt. Hier wäre eine Mischkalkulation mit weniger einzelnen Posten eventuell eher anzuraten. FIZ Technik nutzt Volltextsuche und erlaubt die Verknüpfung mittels boolschen Operatoren. Zusammen mit dem aufwendigen Thesaurus ist die Methodik recht fortschrittlich, wenn auch kompliziert. Es wird kein Clustering durchgeführt. 3.2.2. FIZ Karlsruhe / STN Online Services Das FIZ Karlsruhe ist eine 1977 gegründete gemeinnützige Gesellschaft mit dem Auftrag, Fachinformationen bereitzustellen. Dieses tut sie insbesondere dadurch, dass sie im Rahmen des STN Online Service in Kooperation mit der American Chemical Society (ACS) und der Japan Science and Technology Corporation (JST) weltweit existierende Datenbanken in ihr System integriert. Ferner werden auch eigene Datenbanken erstellt und gepflegt. Unter anderem zählt hierzu die Zeitschriftendatenbank der Thieme Verlagsgruppe3 sowie das System von vascoda4 . Die Preise5 sind nicht sehr weit von denen von FIZ-Technik entfernt und sind eher etwas höher. Die Anschaltzeit ist auch hier zu finden und scheint ein branchenübliches Phänomen darzustellen. Auffällig ist im Vergleich zu FIZ-Technik, dass die Gebühr für die Anzeige bzw. den Druck (Dokumentausgabegebühr ) drei mal so hoch ist und je nach Datenbank auch Preise von über e20,- für diesen Posten zu sehen sind. Der Fokus liegt hier eher in der Integration von Datenbanken (im Rahmen von STN) sowie im Auftritt als IT Dienstleister. Dadurch ist die Anzahl der Datenbanken wesentlich höher als bei FIZ Technik, deren Hauptarbeit in der Erfassung und Pflege der eigenenen Datenbanken zu stecken scheint. Die genaue Anzahl der Datenbanken geht aus der oben genannten Preisliste, in der jede Datenbank einzeln aufgelistet ist, hervor. 3 WWW Adresse: http://www.thieme-connect.de WWW Adresse: http://www.vascoda.de 5 WWW Adresse: http://www.stn-international.de/service/prices/EUROde.pdf 4 3.2. KONKURRENTEN 20 3.2.3. Deutsches Maritimes Kompetenz Netz (DMKN) Das DMKN hat den Anspruch, Wissen im maritimen Umfeld zu sammeln und verfügbar zu machen. Ins Leben gerufen hat es das Deutsche Marine Institut, die Marine-Offizier-Vereinigung (MOV) e.V. und die Marine-Offizier-Hilfe (MOH) e.V. gemeinsam mit Kooperationspartnern. Auf der Website kann man nach Artikeln, Studien, Berichten und ähnlichen Dokumenten recherchieren und bekommt die Dokumente auch gleich in elektronischer Form auf den Schirm geliefert. Zudem kann man sich im ExpertNet ein Bild von den Experten aus Wirtschaft und Wissenschaft im Bereich der maritimen Wirtschaft und Technik machen. Als eines der wenigen maritimen Angebote im Internet beinhaltet das DMKN auch ein Forum , in dem sich Interessierte untereinander austauschen können. Interessant ist, dass das öffentliche Forum von den Nutzern dieses Systems fast völlig ignoriert wird. Obwohl offenbar die Artikel und sonstigen informativen Beiträge regelmäßig aktualisiert werden und somit von einem lebendigen System zeugen, gibt es keinerlei Interesse am persönlichen Austausch. Die meisten im System verzeichneten Experten sind offenbar damit zufrieden, aufgelistet worden zu sein und haben keine eigenen Beiträge ins System gebracht. Die absolute Mehrheit der Beiträge stammt aus der Zeitschrift MarineForum, die von den Betreibern des DMKN herausgegeben wird. Diese Erkenntnis relativiert den zuerst entstandenen Eindruck eines lebendigen Systems. Offenbar ist der größte und beinahe einzige Anbieter von Informationen im DMKN der Betreiber des DMKNs selber. Seit Ende 2004 beteiligt sich das ISL am DMKN und bietet im Rahmen eines Kompetenzzentrums für die Seeverkehrswirtschaft eigene Inhalte an. Die Recherchemöglichkeiten des DMKN erlauben Anfragen mit boolschen Operatoren (AND/OR). Zusätzlich erlaubt das System die Suche mittels Wort Varianten, sowie mittels einer syntaktischen Ähnlichkeit (dort Fuzzy Suche genannt). 3.2.4. HWWA - Hamburgisches Welt-Wirtschafts-Archiv Das Hamburgische Welt-Wirtschafts-Archiv ist eine wissenschaftliche Serviceeinrichtung, dessen Ziel es ist, Informationen zu sammeln, aufzubereiten, zu bewerten und verfügbar zu machen. Es analysiert weltwirtschaftliche Fragestel- 21 3.2. KONKURRENTEN lungen, informiert und berät. Aktueller Hinweis6 : Das HWWA ist aktuell als Auslaufmodell zu betrachten. Es gehörte lange Zeit zur Leibniz Gemeinschaft und wurde damit öffentlich gefördert. Nach einigen sehr kritischen Evaluierungen hat sich die Gemeinschaft jedoch dazu entschlossen, das Institut nicht weiter zu fördern. Teile des HWWA werden zukünftig im neugegründeten Wirtschaftsinstitut HWWI aufgehen und bleiben daher mindestens zum Teil erhalten. Alle Dienstleistungen des HWWA zu beleuchten, würde zu weit führen. Im Kontext dieser Arbeit ist allerdings der Bereich der Kataloge und der OnlinePublikationen interessant. Das HWWA bietet keine Community Features an. Der online Zugriff wird über die URL http://webopac.hwwa.de/seitevor.htm7 ermöglicht. Kataloge Das HWWA bietet online Nachweise von Büchern, Periodika, und Aufsätzen aus Zeitschriften und Sammelwerken in gedruckter oder elektronischer Form, Firmen und Körperschaften mit weiterführenden Links an. Ausserdem Presseartikel, Geschäftsberichte, Spezialsammlungen etc. Für diesen Zweck existiert ein ausgefeilter Suchmechanismus, der auf einem komplexen Thesaurus basiert. Alle wichtigen Suchfunktionen (Ähnlichkeit, boolsche Operationen, Volltext. . . ) sind vorhanden. Online Publikationen Das Angebot umfasst im Zusammenhang mit dem elektronischen Dokumentenarchiv des HWWA sowohl Nachweise nicht-elektronischer Dokumente als auch solche von elektronischen Dokumenten. Letztere sind im Archiv teilweise im Volltext verfügbar. Dabei unterscheidet der Katalog zwischen frei verfügbaren, HWWA-intern verfügbaren, sowie kostenpflichtig verfügbaren Dokumenten. Falls möglich verweist der Katalog auf den Anbieter des Dokumentes, bei dem es dann bezogen werden kann. Verfügbare Volltexte liegen im PDF-Format auf HWWA-Servern oder beim Anbieter selber. Im letzteren Fall verweist der Katalog auf den Anbieter. Neben den Angeboten, die über den Katalog zu erreichen sind, bietet das HWWA spezielle Informationsdienste an. Häufig sind die Produkte online im 6 7 Pressemitteilung: http://idw-online.de/pages/de/news117649 WWW Adresse: http://webopac.hwwa.de/seitevor.htm 3.2. KONKURRENTEN 22 PDF oder HTML Format verfügbar - teilweise kostenfrei und teilweise kostenpflichtig. 3.2.5. MarineTalk MarineTalk versteht sich als Informationsanbieter im maritimen Sektor. Das Angebot umfasst Informationen über spezielle Produkte und darüber, wer sie herstellt. Zudem werden ca. alle sechs Wochen aktuelle Entwicklungen im maritimen Sektor sowohl über neue Produkte als auch über allgemeine Themen in den News-Bereich eingepflegt. Das Angebot beinhaltet im Rahmen der Wer-Macht-Was-Suche (Buyers Guide) Kurzvorstellungen der Unternehmen, die als Werbe-Möglichkeit für die verzeichneten Unternehmen beworben werden. Den Unternehmen werden verschiedene Werbe-Pakete angeboten, von denen eines gratis, eines 10 USD im Monat und eines 20 USD im Monat kostet. Im letzten Falle wird eine bis zu 6 Seiten umfassende Firmendarstellung angeboten, während in der Gratisversion weder Email noch Homepage des verzeichneten Unternehmens angegeben werden kann und sich ausschließlich auf Adresse und Telefon beschränkt wird. Das mittlere Angebot bietet die Möglichkeit, Verweise auf die Firmen Homepage sowie eine Email Adresse hinzuzufügen und erlaubt zusätzlich, eine textliche Kurzbeschreibung der Firma mit in das Listing aufzunehmen. Diese Beschreibung ist auch für die Suche effektiv. Wie viele Kunden welches Angebot nutzen fällt laut MarineTalk allerdings unter das Geschäftsgeheimnis, so dass auf diese Information verzichtet werden muss. Die Suchfunktion umfasst eine Schlagwortsuche, sowie spezifische Eingrenzungen. Beispielsweise ist es möglich, die Suche nach Anbietern auf ein Land oder auch einen bestimmten Hafen zu beschränken. Firmen, die sich in das Verzeichnis eintragen lassen möchten, haben die Möglichkeit, bis zu 50 Stichworte anzugeben, unter denen sie gefunden werden können. Die Stichworte sind allerdings beliebig und unterliegen keiner festen Struktur, wie es in einem Thesaurus der Fall wäre. Das MarineNet bearbeitet jede Einsendung manuell und prüft insbesondere die gewünschten Schlagwörter auf Duplikate. Je nach Qualität der eingesendeten Artikel/News wird der Beitrag entweder editiert oder auf der Basis der eingesendeten Information neu geschrieben. Dieses Vorgehen garantiert ein gleichbleibend hohes Qualitätsniveau der Beiträge. 23 3.3. WISSENSCHAFTLICHE ANGEBOTE 3.2.6. MarineNet Das MarineNet ist eine japanische Unternehmung, die Informationen und Dienstleistungen für die maritime Wirtschaft anbietet. Der Fokus des Angebots liegt dabei auf dem Zusammenbringen von Käufer und Verkäufer maritimer Produkte und Dienstleistungen. Dem entsprechend bietet das Unternehmen SchiffsAuktionen , Preisinformationen von Gebraucht-Schiffen sowie die Möglichkeit, online nach Chartering-Informationen zu suchen und somit die Frage zu beantworten, ob im Hafen X ein geeignetes Schiff liegt, welches gechartert werden kann. Im letzteren Falle vermittelt MarineNet kostenfrei zwischen dem Suchenden und dem Schiffs-Eigner bzw. stellt mindestens den Kontakt her. Die meisten Funktionalitäten sind nur für Mitglieder des Systems (kostenpflichtig) zu erreichen. Es gab in keinem gratis zu erreichenden Teil des OnlineAngebots eine Suche. Es gibt jedoch in den verschiedenen nach Bezahlung zu erreichenden Bereichen jeweils spezielle, auf das jeweilige Angebot zugeschnittene Suchmethoden. Dezu gehören allerdings keine Schlagwort-Suche oder gar hinterlegte Thesauri . Die Leistungen umfassen meistens Listen, beispielsweise von zu verkaufenden Frachtern oder in der letzten Zeit durchgeführten Besitzänderungen etc. Von Interesse dürfte allerdings sein, dass das MarineNet ausgewählte Statistiken aus dem Fundus der Beratungsfirma Drewry8 in das eigene Angebot integriert. Die Bedingungen des Nutzungsvertrages zwischen MarineNet und Drewry fallen sicherlich unter das Geschäftsgeheimnis, so dass hier auch nicht weiter geforscht wurde. Dazu ist zu bemerken, dass vereinzelt veraltete Inhalte (Statistik überarbeitet 2002. . . ) im System zu finden sind. 3.3. Wissenschaftliche Angebote 3.3.1. Netacademy, a scientific community Die Netacademy ist ein System für wissenschaftliche Gemeinschaften, das vom MCM, Institut für Medien und Kommunikationsmanagement9 ins Leben gerufen wurde und die von den Teilnehmern für die Publikation von Forschungsergebnissen und News genutzt wird. Auf diese Weise soll ein zentrales Repository 8 9 WWW Adresse: http://www.drewry.co.uk WWW Adresse: http://www.mcm.unisg.ch/ 3.3. WISSENSCHAFTLICHE ANGEBOTE Abbildung 3.2.: Beispiel einer MarineNet Suchmaske 24 25 3.3. WISSENSCHAFTLICHE ANGEBOTE Abbildung 3.3.: Inhalt von Drewry, angeboten von MarineNet 3.3. WISSENSCHAFTLICHE ANGEBOTE 26 entstehen, wodurch es Nachfragern erleichtert wird, die Dokumente zu finden. Wissenschaftler bieten ihre Ergebnisse zwar häufig online an, tun dies aber in der Regel über ihre Homepage . Wenn man nun die Menge der wissenschaftlich tätigen Personen zugrunde legt und daraus die Zahl der Homepages ableitet, wird man sicherlich eine stolze Menge an Orten im Internet ermitteln, an denen wissenschaftliche Dokumente abgelegt sein könnten. Die Netacademy konsolidiert nun zumindest schon mal die Ergebnisse der teilnehmenden Wissenschaftler, sofern diese Ihre Dokumente in das System einpflegen. Viele Publikationen sind kostenlos zu bekommen, sofern man sich am System angemeldet hat. Interessant wird es jedoch bei kostenpflichtigen Dokumenten, die ebenso in der Netacademy registriert sind. Konkret handelt es sich dabei um regelmäßig erscheinende Journale, die es einerseits in Form eines Abonnements gedruckt zu kaufen gibt und deren Beiträge andererseits neben einigen weiteren kostenpflichtigen Dokumenten einzeln über das Portal Ingenta10 zu erwerben sind, welches sich auf wissenschaftliche Publikationen spezialisiert hat. Einzeln sind die Dokumente ausschließlich in elektronischer Form zu bekommen. Über die Usability der Netacademy lässt sich streiten, aber das Prinzip des Modells ist klar: Sämtliche kostenpflichtigen elektronischen Inhalte werden über das größere Portal abgewickelt. Dort sind die Dokumente durch die Suchfunktion einer vermutlich größeren Nutzergruppe zugänglich. Zudem werden die Bezahlungsmodalitäten weitgehend von Ingenta übernommen, was den administrativen Aufwand verringert. Die Suchfunktion ist simpel gehalten und erlaubt die freie Eingabe eines oder mehrerer Begriffe. Die Ergebnisse lassen sich auf Dokumentarten einschränken. 3.3.2. SpringerLink Hierbei handelt es sich um das Online Informationssystem des Springer Verlages, der sich in erster Linie an den professionellen und wissenschaftlichen Nutzer wendet und hochwertige Publikationen aus dem wissenschaftlichen und wirtschaftlichen Umfeld verlegt. Das SpringerLink Angebot des Verlages konzentriert sich ausschließlich auf Produkte des Verlages. Es ermöglicht dem Leser, hochwertige wissenschaftliche Journale online zu lesen. Zu diesem Zweck bietet SpringerLink eine ausgefeilte Suchfunktion, sowie den Zugriff auf Abstracts und Inhaltsangaben der Publika10 WWW Adresse: http://www.ingentaselect.com 27 3.3. WISSENSCHAFTLICHE ANGEBOTE tionen kostenfrei an. Volltexte werden ausschließlich kostenpflichtig für 35 USD pro Artikel angeboten. Es gibt keine Community Features, Experten Verzeichnisse o.ä. 3.3.3. ACM Portal Die ACM ist bereits seit langer Zeit (1947 gegründet) in der Informatik eine feste Größe. Sie nennt sich selbst eine Society, also eine Gesellschaft. Sie strebt an, das wissenschaftliche Arbeiten im Computing-Sektor zu unterstützen und bietet ihren Mitgliedern einiges an Unterstützung. Sie finanziert sich vermutlich in erster Linie über die Mitgliedsbeiträge und ihre Publikationen, die sie verlegt und die, so wie zum Beispiel ihr Journal Communications of the ACM“, ” weltweit höchste Anerkennung erlangt haben. Das Angebot umfasst neben einer langen Liste selbstverlegter Journale und Konferenzprotokolle den Zugang zu ausgewählten Büchern und Kursen für Software-Entwickler und Studenten, die für zahlendes Publikum sogar im Volltext vorliegen. Die Bücher sind nicht herunterladbar, aber jederzeit online einsehbar - jedenfalls solange die Subskription der ACM-Mitgliedschaft aktiv ist. Es gibt jedoch auch Netzwerk-Lizenzen für Firmen und Universitäten, die es erlauben, bestimmte IP-Bereiche freizuschalten, so dass alle Zugriffe aus den jeweiligen Netzen heraus automatisch erlaubt sind. Die hiesigen Universitäten nutzen dieses attraktive Angebot in der Regel auch. (Der Autor dieser Zeilen ist dennoch ACM Mitglied, denn so hat er auch von zu Hause direkten Zugriff.) Als besonders interessant im Kontext dieser Arbeit stellt sich das ACM Portal11 dar. Es handelt sich dabei um ein Informationssystem, welches den Zugriff auf Publikationen des ACM mit Hilfe eines Such-Mechanismus erlaubt. Dieses Portal integriert zusätzlich den sogenannten ACM Guide, der das Angebot auf Publikationen anderer Verlage ausdehnt. Laut ACM Angaben beinhaltet der Guide bibliographische Daten von mehr als 800000 Publikationen, die von wissenschaftlichen Anbietern weltweit angeboten werden. Die Integration dieser weltweiten Quellen beschränkt sich auf die Erfassung und Verlinkung der Publikationen. Um auf die Volltexte Zugriff zu haben, muss der Nutzer mit dem jeweiligen Anbieter Kontakt aufnehmen und zum Beispiel das Buch kaufen, wenn es eines ist, oder auch eine kostenpflichtige Mitgliedschaft eingehen. Der Suchmechanismus ist wie üblich zweigeteilt. Es gibt eine einfache Suche, die für alle kostenlos benutzbar ist, und eine erweiterte Suche (siehe Abbildung 11 WWW Adresse: http://portal.acm.org 3.3. WISSENSCHAFTLICHE ANGEBOTE Abbildung 3.4.: Erweiterte Suche im ACM Portal 28 29 3.4. TECHNISCH RELEVANTES 3.4) für den zahlenden Kundenkreis. Bei der Benutzung des Systems fiel bereits auf, dass oft die erweiterte Suche nötig wurde, um die gewünschten Suchergebnisse hinreichend exakt zu beschreiben. Besonders wichtig wird dieses Feature in Zusammenhang mit der Beschränkung auf 200 ausgegebene Publikationen, denn selbst wenn sich das gesuchte Dokument in der Liste befinden müsste, so hat man doch erst darauf Zugriff, wenn es sich unter den ersten 200 befindet. Um das zu garantieren, sind so exakte Suchanfragen nötig, die nur durch die erweiterte Suche möglich sind. Die erweiterte Suche ermöglicht wie in Abbildung 3.4 gezeigt, dass die Suche gezielt auf einzelne Felder wie zum Beispiel Autorname, ISBN oder Titel beschränkt werden kann. Außerdem wird eine Klassifikation angeboten ( CCS“), ” die die Dokumente thematisch in eine hierarchische Struktur einbindet und die natürlich auch für die Suche verwendet werden kann. Volltexte des ACM sind direkt über das Portal online als PDF zu bekommen, sofern es sich um Journal-Artikel oder Konferenzprotokolle handelt. Bücher sind nicht als Volltext vorhanden. Da das ACM sehr anerkannte Journale besitzt und die Artikel durchweg von hoher wissenschaftlicher Qualität sind, sind die Volltexte bei der wissenschaftlichen Auseinandersetzung mit informationstechnischen Themen unabkömmlich. Diese Volltexte stellen also einen deutlich wahrnehmbaren Wert dar. Daher ist der Zugriff auf sie den zahlenden Kunden vorbehalten. Lange Rede kurzer Sinn: das Portal ist zwar zunächst gratis zu testen. Um es aber wirklich effektiv und erfolgreich zu nutzen, benötigt man zwingend eine kostenpflichtige vollwertige Mitgliedschaft. Die Gratisnutzung ist somit ein Köder für Kunden, die durch die spielerische Erforschung des Gratisbereichs des Portals einen Eindruck des Umfanges des Angebots bekommen können. Dieses Vorgehen kann nach Ansicht des Autors auch für das ISL eine mögliche Herangehensweise darstellen. 3.4. Technisch Relevantes 3.4.1. Clusty / Vivı́simo Die Firma Vivı́simo stellt Clustering Software her, die sie (sicherlich nicht billig) unter der Bezeichnung Vivı́simo Clustering Engine (VCE) anbietet. Eine Besonderheit des Vorgehens ist, dass das Clustering on-the-fly ausgeführt wird. Es gibt kein vollständiges Clustering des Datenbestandes. Stattdessen werden 3.4. TECHNISCH RELEVANTES 30 ausschließlich die Such-Ergebnisse einem Ad-Hoc Clustering unterworfen. Da das System darauf ausgerichtet ist, die Ergebnisse einer Suchmaschine zu clustern, betrachtet es Titel und Abstract, den Suchmaschinen üblicherweise automatisch liefern. Laut Vivı́simo beinhaltet der Clustering Algorithmus zwar keinerlei Vorwissen (Thesauri oder Ähnliches), wurde aber von den Entwicklern speziell darauf ausgerichtet Cluster zu erzeugen, die beachten, what users ” wish to see when they examine clustered documents“ (vivisimo.com12 ). Zudem bietet sie ein Produkt namens Clusty13 an. Dabei handelt es sich um eine Meta-Suchmaschine, die verschiedene Suchmaschinen abfragt, deren Ergebnisse sammelt und mittels VCE clustert. Interessanterweise fragt Clusty nicht mehr nur gewöhnliche Suchmaschinen ab, sondern erlaubt zusätzlich die Suche in weiteren Quellen wie zum Beispiel einer Preissuchmaschine (www.bizrate.com14 ) oder einer Bildersuchmaschine (picsearch.com15 ). Es existiert somit eine gemeinsame Oberfläche für die Suche in mehreren unterschiedlichen Quellen. Hervorzuheben ist die Integration der Kategorisierung von bizrate.com. Bizrate hat die Produkte in Kategorien einsortiert, wie zum Beispiel Men’s T-Shirts oder Women’s T-Shirts bei Shirts. Diese Kategorien zeigt es zusätzlich zu den automatisch ermittelten Clustern an. Probier-Link16 Mit Clusty lassen sich sehr einfach eigene Erfahrungen mit Clustering Angeboten sammeln. Das Vorgehen von Clusty wäre nach Meinung des Autors auch für das ISL sehr interessant. 3.4.2. carrot2 Dies17 ist ein Programmierframework in Java, welches sich als Experimentierplattform in Bezug auf das Clustering von Suchergebnissen versteht. Daher passt es sehr gut zur Zielsetzung der Arbeit und soll hier mit aufgeführt werden. Der von carrot2 verwendete Ansatz unterscheidet sich von dieser Arbeit insofern, als dass dort für das Clustern ein eigener Algorithmus (LINGO) verwendet wird. LINGO basiert auf einem durch LSI (siehe auch Abschnitt 5.3.4) erzeugten approximierten Datenraum, der durch die drei Matrizen T S DT dar12 WWW WWW 14 WWW 15 WWW 16 WWW 13 17 Adresse: http://vivisimo.com/docs/howitworks.pdf Adresse: http://clusty.com Adresse: http://www.bizrate.com Adresse: http://picsearch.com Adresse: http://clusty.com/search?v%3aproject=clusty-shopping&query= shirt WWW Adresse: http://www.cs.put.poznan.pl/dweiss/carrot/ 31 3.4. TECHNISCH RELEVANTES gestellt wird. Dabei ist S eine diagonale Matrix (alle Werte auf 0, außer in der Diagonalen), die die Singulärwerte enthält. Der Unterschied ist beim Finden der Cluster am größten. Und zwar errechnet LINGO für jeden Singulärwert einen dazu passenden Begriff, bzw. eine dazu passende Phrase (LINGO sucht auch nach Begriffsgruppen). Jeder gefundene Begriff wird nun flugs zum Cluster erklärt. Dann werden noch die Dokumente entsprechend ihrer Ähnlichkeit zu diesen gefundenen Clustern jeweils einem dieser Cluster zugeordnet, fertig. Das System macht einen sehr guten Eindruck und die Idee hinter LINGO besticht ebenso durch ihre Einfachheit wie durch ihre Effektivität. 3.4. TECHNISCH RELEVANTES 32 Teil II. Definition 4. Technische Analyse 4.1. Ist-Analyse Ziel ist die Klärung der derzeitigen Situation im Kontext des Seabase Informationssystems. Identifikation des aktuellen Datenmodells, Definitionen von existierenden Schnittstellen, Identifikation der beteiligten Software Komponenten sowie insbesondere die Klärung, wie die Prozesse aktuell für Erfassung und Recherche ablaufen. 4.1.1. Komponenten und Schnittstellen Die beiden Systeme, die hauptsächlich zusammenarbeiten, um die Systemfunktionalität bereitzustellen, sind die Software Faust und der Webserver, der eine Apache+PHP Konfiguration nutzt. Bei Faust handelt es sich um ein Datenbanksystem mit einfachen Dokumentenmanagement Funktionen, das für den Einsatz in Bibliotheken und ähnlichen Einrichtungen, in denen bibliographische Objekte (Dokumente, Bücher, Zeitschriften,. . . ) erfasst und verwaltet werden müssen, optimiert ist. Die Dokumenttypen sind sehr weitgehend flexibel definierbar; die für die Erfassung benötigten Felder können frei benannt und angelegt werden. Es erlaubt Verknüpfungen mit Online-Quellen und das Erfassen und Speichern beliebiger digitaler Dokumente. Im ISL werden zwar die digitalen Dokumente sowie die Online-Quellen nach und nach stärker ins Blickfeld gerückt, Literaturhinweise auf Publikationen, die in der ISL-Bibliothek tatsächlich auch in Papierform vorhanden sind, nehmen aber nach wie vor den größten Teil des Datenbestandes ein. Die Schnittstelle zwischen der auf PHP basierenden Suche und der FaustDatenbank definiert sich über eine Textdatei, die durch ein speziell entwickeltes Makro aus Faust heraus produziert wird. Deren Format ist sehr simpel aufgebaut. Es besteht aus einer Textzeile pro bibliographisches Objekt. Die Textzeile wiederum ist wie folgt aufgebaut: 4.1. IST-ANALYSE 36 id Component Model FAUST system «artifact» «executable» Logical Model::Export data Logical Model:: Faust Seabase import script «artifact» Index data search mask Abbildung 4.1.: System-Komponenten Zeile ::= Feld1 "|" ... "|" Feldx "|" Deskriptoren Deskriptoren ::= Deskriptor ";" Deskriptoren | Deskriptor Sie besteht somit aus x durch | getrennten Feldern und einer Liste von durch ; getrennten Deskriptoren. Um welche Felder es sich handelt und in welcher Reihenfolge diese jeweils in den Zeilen zu finden sind ist aus Tabelle 4.1 (Seite 40) und Tabelle 4.2 (Seite 41) ersichtlich. Damit der Zugriff auf die Daten aus der Suche heraus performant ablaufen kann, wird diese Textdatei zunächst eingelesen, es werden die signifikanten Informationen erkannt (Listen von Autoren, Deskriptoren,. . . ) und in für die Suche optimierter Form abgelegt. 4.1.2. Prozesse Es gibt im Wesentlichen zwei Hauptprozesse. Dabei handelt es sich zum einen um den Prozess Erfassung“ und den Prozess Recherche“. Beide sind beim ISL ” ” 37 4.1. IST-ANALYSE aktuell im Einsatz. Die Erfassung wird von Mitarbeitern des ISL durchgeführt. Der Prozess Erfassung (Abbildung 4.2 (Seite 38), Anwendungsfälle sind grün, Systemzustände sind rot dargestellt und produzierte Datenobjekte in blau) beginnt, sobald ein neues Dokument im ISL angeschafft wird oder der Erfassungsbedarf anderweitig aufkommt, z.B. durch eigene Recherchen im Internet. Ein solches Dokument wird zunächst inhaltlich intellektuell analysiert und erfasst. Die Ergebnisse können dann in das Faust-System eingetragen werden. Dabei wird unter anderem eine inhaltliche Zusammenfassung (auch Kurzreferat genannt) des Dokuments im System hinterlegt. Des weiteren werden bibliographische Informationen eingegeben und das Dokument in die Begriffshierarchie des ISL (ISL-Thesaurus) eingegliedert. Sofern sich hierbei der Bedarf ergibt, den Thesaurus zu erweitern, wird das getan. Am Ende eines Arbeitstages dann wird der vierte Anwendungsfall, der Export, angestoßen. Dieser besteht im Wesentlichen aus der Auswahl eines Makros im Faust-System, welches selbständig eine Liste mit den bibliographischen Informationen in eine Textdatei schreibt, die für das online Suchformular zugängig ist. Die Kunden reagieren auf Informationsbedarf mit einer Suchanfrage, die sie im online Suchformular eintragen. Dabei haben sie Zugriff auf eine Schlagwortliste sowie auf eine Liste aller verzeichneten Autoren. Siehe Darstellung des Ablaufs, Abbildung 4.3 (Seite 39). Die Suchmaske, zu sehen in Abbildung 4.4 (Seite 41), erlaubt die Eingabe von Autor, Titel, zwei Schlagworten (Deskriptoren), Erscheinungsjahr, Sachgebiet und der Bibliothekssignatur sowie zusätzlich eines Stichwortes, nach welchem das System in den Zusammenfassungen sucht. Alle Eingaben sind mit UND verknüpft. 4.1.3. Datenmodell Das Datenmodell, welches sich letztlich online wiederspiegelt, wird durch den Export-Vorgang aus der Software Faust heraus erzeugt. Es besteht für jede Publikation aus einer langen Liste an Feldern mit ihren Werten und einer Liste an zugehörigen Deskriptoren. Da die Deskriptoren als Liste exportiert werden, sind die hierarchischen Beziehungen, die im Faust existieren, online nicht mehr verfügbar und tauchen somit auch im Datenmodell nicht auf. Siehe Tabelle 4.1 (Seite 40). 4.1. IST-ANALYSE 38 Neue Publikation liegt vor. Thesaurus aktualisiert Startereignis V Publikation Zusammenfassung und Klassifikation erstellen V Thesaurus XOR Klassifikation ermittelt Thesaurus unzureichend Daten in Faust eintragen Thesaurus erweitern Neue Daten liegen in Faust vor V Geschäftsschluss V Legende Ereignis V oder Datendatei Export anstoßen V Information und Funktion Neue Publikation erfasst Abbildung 4.2.: Erfassungsprozess Endereignis 39 4.1. IST-ANALYSE Anfrage formulieren Suchseite aufrufen Suchbegriffe angeben Anfrage beantworten Hauptsächlich manuelle Aktivität. Nicht extra angegeben aber dennoch vorhanden ist die verfügbare Hintergrundinformation wie der Thesaurus sowie die Liste von Autoren, die das Angeben von Suchbegriffen erleichtert. Datendatei auslesen Zeigt den Ablauf auf dem Server, der anhand der Anfrage eine sinnvolle Antwort erarbeiten muss. Ranking erzeugen Dokument selektieren Liste mit Dokumenten zeigen Diese Aktivität ist wieder in erster Linie manuell. Dokument auswählen Created by Borland® Together® Designer Community Edition Abbildung 4.3.: Rechercheprozess 4.1. IST-ANALYSE 40 Bezeichner Typ Zweck Titel Text Titel des Dokuments Jahr Text Erscheinungsjahr ND Text eindeutige Dokumentnummer, 8-stellig DT Text Dokumenttyp (z.B. J für Journal) LI Text Literature Indicator (z.B. S für Selbst. Einheit) CODE Text 6-stelliger Zeitschriftencode (Dummy) Land Text Erscheinungsland ISSN Text International Standard Serial Number ISBN Text International Standard Book Number Sprache Text Sprache der Publikation Sprache Kurzref. Text Sprache des Kurzreferats Bd. Text Angabe einer Bandnummer H. Text Angabe einer Heftnummer S. Text Angabe einer Seitennummer Abb. Text Anzahl Abbildungen Tab. Text Anzahl Tabellen Lit. Text Literaturangaben (Literaturzitate) Sig. Text Signatur der Bibliothek Auswerter Text Mitarbeiter inhaltliche Erschließung Erfasser Text Mitarbeiter Formalerschließung PLZ Text Postleitzahl des Verlags PZB Text Postzustellbezirk Ländercode Text Land des Erscheinens Sachgebiete Text Liste zugehöriger Sachgebiete Titelübersetzung Text Titelübersetzung des Originaltitels Titelanmerkung Text Titelanmerkung (z.B. Special Report) Verfasser Text Der Verfasser (eine Person) Korp. Verfasser Text Herausgebende Korporation oder Institution Herausgeber Text Name des Herausgebers Zeitschriftentitel Text Titel der Zeitschrift Tabelle 4.1.: Dataobject 41 4.1. IST-ANALYSE Abbildung 4.4.: Screenshot der Suchmaske Bezeichner Typ Zweck Erscheinungsort Text Erscheinungsort Übergeord. Publ. Text Name der Publikation, die das Objekt beinhaltet Verlag Text Name des Verlages Ort Text Ort des Verlages Str./Postf. Text Adresse des Verlages ID-Nr Text unbekannte Nr Freie Begriffe Text Schlagworte, die nicht im Thesaurus vorkommen Kurzreferat Text Kurze Zusammenfassung des Inhalts URL Text Bei online Dokumenten dessen URL Tabelle 4.2.: Dataobject (Fortsetzung) 4.1. IST-ANALYSE 42 4.1.4. Einschränkungen Das oben genannte Vorgehen ist etwas limitiert - alleine schon dadurch, dass die Klassifikation aus dem Literaturerfassungssystem Faust nicht vollständig exportiert wird. Der Export wird mithilfe eines Makros durchgeführt. Dieses Makro kann mithilfe eines Faust-spezifischen Basic Dialekts entwickelt werden. Dabei ist man natürlich generell der Mächtigkeit der API unterworfen, die Faust den Basic Programmen bietet. Wie aus der Dokumentation der API zu entnehmen ist, erlaubt die Sprache das Extrahieren genau eines Oberbegriffes zu einem gefundenen Deskriptor. Falls der Thesaurus die Möglichkeit der Polyhierarchie (das heißt, dass ein Begriff mehrere Oberbegriffe haben und somit zu mehreren Begriffs-Klassen gleichermaßen gehören kann) nutzt, geht diese beim Export verloren. Gewöhnliche Hierarchien dagegen sind jedoch im Prinzip vollständig exportierbar, da Faust Basic durch die Befehle desc down und desc next das Traversieren der Unterbegriffe eines Begriffes erlaubt. Derzeit wird diese Möglichkeit jedoch nicht genutzt. Ein gebräuchliches Mittel, die Recherche in Informationssystemen zu erleichtern, sind sogenannte Synonymringe. Ein solcher Ring besteht aus einem Hauptbegriff, unter welchem die Dokumente erfasst werden, und mehreren Synonymen. Diese Synonyme können dann in der Suche anstatt des eigentlichen Begriffes verwendet werden. Das ist deswegen hilfreich, weil verschiedene Menschen mit verschiedener Vorbildung und einem unter Umständen auch unterschiedlichem Kulturkreis, andere Begriffe für die selbe Sache verwenden. Sofern also bekannt ist, dass Dinge unterschiedlich benannt werden können, so macht es Sinn, diese unterschiedlichen Benennungen als Synonym im System zu hinterlegen. Faust Basic erlaubt das Extrahieren genau eines Synonyms. Sind mehrere Synonyme hinterlegt, wird nur das erste ausgelesen. Derzeit werden gar keine Synonyme ausgelesen. Betrachtet man das System aus der Sicht der Nutzer, fällt einem zunächst auf, dass . . . • . . . offenbar die Felder Stichwort und Deskriptor gleichermaßen nach inhaltlichen Kriterien selektieren, während die genaue Wirkungsweise unklar bleibt. Die Angabe eines Sachgebietes stellt sogar die dritte Möglichkeit dar, wobei diese nur sehr grob selektiert. • . . . um Deskriptoren für die Suche verwenden zu können, der Suchende die 43 4.2. PROTOTYP verfügbaren Deskriptoren kennen muss. Dazu wird eine Liste angeboten, die die Deskriptoren alphabetisch sortiert anzeigt. Diese Liste beinhaltet eine ganze Reihe sehr spezieller Begriffe und ist sehr umfangreich. Benutzer müssen sich folglich durch die langen Listen arbeiten und dort passende Begriffe wählen. Der Autor findet den Prozess aufwändig und abschreckend. • . . . die Signatur den meisten Kunden unbekannt sein dürfte, da sie die Erfassungsmethodik der ISL-Bibliothek wiederspiegelt und deren Kenntnis voraussetzt. Somit werden sie das gleichnamige Feld kaum ausfüllen können und es kann genau so gut entfernt werden, um das Formular übersichtlich zu halten. • . . . keine Volltextsuche existiert. • . . . viele andere Felder des Datenmodells in der Suchmaske nicht angeboten werden. 4.2. Prototyp Zur Erinnerung: es soll ein Clustering Konzept dargestellt werden, mit dessen Hilfe die Suche im System qualitativ verbessert werden kann. Dadurch soll es möglich sein, die Struktur von Suchergebnissen besser zu überblicken und sich aus der (eventuell sehr großen) Menge an Ergebnissen diejenigen zu selektieren, die am ehesten in Frage kommen. 4.2.1. Oberflächenprototyp Zunächst soll ein Modell der Benutzerschnittstelle zur Diskussion gestellt werden. Dies geschieht, um frühzeitig zu demonstrieren, wie sich Abläufe und Designs letztendlich in einem fertigen Produkt wiederspiegeln können. Da in den Gesprächen mit dem ISL häufig erwähnt wurde, dass Personalisierung ein Thema ist, wurde dies in dem nun folgenden Vorschlag mit eingebaut. Abbildung 4.5 zeigt also einen Vorschlag, wie sich Clustering für den Benutzer darstellt. Dieser Vorschlag beinhaltet ein flaches Clustering der Dokumente (keine hierarchischen Cluster). Im Folgenden werden die durch nummerierte gelbe Kreise markierten Bereiche näher erläutert (die Nummer entspricht dem Platz in der folgenden Aufzählung). 4.2. PROTOTYP 44 Abbildung 4.5.: Recherche-Formular 1. Dieser Block beinhaltet die für die Arbeit wesentlichen Ergebnisse, nämlich die ermittelten Cluster. Es werden all die Cluster aufgelistet, dessen Dokumente sich in der Ergebnisliste wiederfinden. Dieser Block erlaubt somit, die Ergebnisliste durch Mausklick (die Namen sind aktive anklickbare Elemente) auf die Dokumente des gewählten Clusters einzuschränken. Ein ähnliches Prinzip nutzt die Suchmaschine Clusty. Siehe auch S. 29 und S. 30. 2. Der Aktionskasten beinhaltet die Möglichkeiten, die der Nutzer hat. Alle Aktionen beziehen sich direkt auf die Ergebnisliste bzw. die selektierten Dokumente der Liste. Anzeigen führt dazu, dass die ausgewählten Dokumente in einer Detail-Ansicht dargestellt werden. Diese Funktionalität besitzt das aktuelle System bereits in ähnlicher Form. Speichern soll dem Nutzer erlauben, die ausgewählten Dokumente zu sichern. Damit dies möglich ist, muss die Web Site personalisierbar sein, denn die Funktion setzt voraus, dass sich der Nutzer in sein Profil einloggen kann und die gewählten Dokumente dort in seinem Profil als Verweise hinterlegt werden. Drucken dagegen entspricht im Wesentlichen der Funktion Anzeigen, mit dem einzigen Unterschied, dass die Anzeige zum Beispiel in einem neuen Fenster auf eine Weise passiert, die für das Ausdrucken optimiert ist. 45 4.2. PROTOTYP Abbildung 4.6.: Verweis auf ähnliche Dokumente Der Druck-Dialog des Browsers öffnet sich automatisch. 3. Das Suchformular ist der Google-Suche nachempfunden worden, da in einem vorhergehenden Gespräch signalisiert wurde, dass die Art und Weise, wie Google das Formular aufbaut, als sehr angenehm verständlich empfunden wurde. Man besitzt auf diese Weise eine sehr intuitive Möglichkeit, Suchbegriffe mit Hilfe boolscher Logik zu kombinieren, ohne dass eine spezielle Anfragesyntax notwenig würde. Möchte der Nutzer jedoch eher nach bibliographischen Gesichtspunkten detailliert nach Autoren, Erscheinungsdatum, Verlag o.ä. suchen, so führt ihn der Verweis Erweiterte Suche zu einem entsprechend komplexeren Suchformular. 4. Die Ergebnisliste ist entsprechend der Angabe im Suchformular auf eine bestimmte Anzahl an Einträgen beschränkt. Sollte die Menge an Ergebnissen die Anzahl übersteigen, kann der Nutzer hier die anzuzeigende Seite auswählen und auf diese Weise in der Ergebnisliste blättern. Um den obigen Vorschlag noch etwas zu erweitern, ließe sich für jedes einzelne gefundene Dokument der dazugehörige Cluster anzeigen, bzw. alle Dokumente des Clusters. In Abbildung 4.6 wird die Zeile mit einem Pfeil markiert, die den Verweis auf den Cluster beinhaltet. 4.2.2. Prozess: Cluster erzeugen Dieser Vorgang soll Cluster in der Datenbank anlegen, so dass jedem Cluster eine Reihe von Dokumenten zugeordnet sind. Er teilt sich in Aktivitäten auf, die denen des KDD Prozesses (siehe Abschnitt 5.2) entsprechen. Die folgenden Absätze beschreiben also diesen Vorgang und entsprechen jeweils einem Ab- 4.2. PROTOTYP 46 Analyse Dokument analysieren nächstes Dokument nein fertig? ja Dokumente analysiert «realize» Selektion Analyse Transformation Cluster Interpretation «realize» Selektion Export aus Faust Import in Seabase DB Anfrage «realize» Cluster Erfasser Cluster erkennen Cluster prüfen ok? Parameter anpassen ja Cluster speichern nein Abbildung 4.7.: Clustering Prozess schnitt des besagten KDD Prozesses. Abbildung 4.7 (Seite 46) zeigt den Ablauf in einem UML Aktivitätsdiagramm. Selektion ist der erste Teil von KDD. In S. 46 ist es die gleichnamige Aktivität ganz zu Beginn. Er besteht aus den Export- und Import-Vorgängen, durch die der Datenbestand des Systems aktualisiert wird, sowie aus dem Selektionsvorgang, der die zu clusternden Daten auswählt. Preprocessing entspricht dem Extrahieren von wesentlichen Merkmalen der Datensätze (Feature Selection) und läuft im Diagramm unter der Bezeichnung Analyse“. (Siehe auch Abschnitt 5.3.3.) Ergebnis dieser Aktivität ist eine Li” ste von Features, die sich als Beschreibung von Datensätzen tauglich erwiesen haben. Zudem wurden die Dokumente bereits auf der Basis dieser Features statistisch ausgewertet, so dass am Ende dieses Schrittes zum Beispiel alle nötigen Statistiken vorliegen. Transformation nennt sich jener Schritt, der die Daten für die Cluster Analyse so vorbereitet, dass der Algorithmus die Daten in einem für ihn passenden 47 4.2. PROTOTYP Format bekommt. Da der gewählte Ansatz auf dem Vektorraummodell (S. 56) basiert, besteht das Ergebnis aus einer Menge von Dokument-Vektoren, die insgesamt die Term-Dokument-Matrix darstellen. Data Mining heißt der vierte KDD Schritt, der hier der Aktivität Cluster“ ” entspricht. Der Algorithmus nimmt die Vektoren als Eingabe und erzeugt eine Reihe von Clustern. Die Anzahl der Cluster wird jedoch fest vorgegeben. Diese Aktivität setzt voraus, dass die Qualität der Cluster überprüft wird, so dass die Möglichkeit besteht, die Clusteranzahl anzupassen und den Algorithmus mit diesem geänderten Parameter erneut laufen zu lassen. Es ist noch nicht ersichtlich, wie die Laufzeit des Algorithmus sein wird. Er hat prinzipiell eine exponentielle Laufzeitcharakteristik, so dass zu erwarten ist, dass er bei großen Datenmengen sehr lange dauert. Dadurch könnte es sich als hilfreich erweisen, wenn diese Zyklen manuell gesteuert werden können, damit nach Ermessen der zuständigen Person die Struktur vorzeitig als ausreichend optimal“ erklärt ” werden kann. Es gilt hier, ein Gleichgewicht zwischen Laufzeit (Geduld) und Qualität herzustellen. Interpretation wird die letzte Aktivität genannt. Sie besteht darin, Namen für die Cluster zu vergeben, die die durch sie repräsentierten Dokumente thematisch am besten identifizieren. Es bietet sich hier an, Begriffe aus dem Thesaurus zu verwenden. Ergebnis dieses letzten Schrittes sind eine Liste von benannten Clustern und deren zugeordneten Dokumenten. 4.2.3. Datenmodell Die im System abzulegenden Informationen umfassen die Dokumente und Autoren sowie Terme (Deskriptoren), wie sie aus dem Faust exportiert wurden. Im Diagramm sind aus Gründen der Übersicht nicht alle Attribute angegeben, sondern nur die für die Cluster-Analyse Wesentlichen (welche Felder insgesamt vorhanden sind, wurde ja bereits in der Ist-Analyse oben aufgelistet). 4.2.4. Komponenten und Schnittstellen Das System besteht zum einen natürlich aus der Faust-Software, die vom ISL für die Erfassung von Dokumenten verwendet wird. Diese Software exportiert wie im Diagramm angegeben seinen Datenbestand, der von einer Import-Komponente eingelesen wird. Im Hintergrund des Ganzen steht eine SQL Datenbank; diese wird von der 4.2. PROTOTYP 48 Cluster - Author name: String - belongsTo firstName: String lastName: String writtenBy Document - faustId: int abstract: String title: String subject: List<String> relatesTo Descriptor parent - Feature name: String language: char[2] Abbildung 4.8.: Datenstruktur FAUST system «artifact» Export data Produces an Index for selected fields, to allow potential search applications to access the clustering data in a quick and optimized manner. «executable» Faust SeaCLUSTER core Importer Indexer Data Access Interpreter Writes all imported and infered data into a SQL database, which can be used by client software afterwards, to make use of the cluster data. Finds names for the clusters. Analyzer Transformer Abbildung 4.9.: System-Komponenten Clusterer 49 4.2. PROTOTYP Data Access Komponente kontrolliert. Auf welche Weise der Zugriff passieren soll, ist an dieser Stelle offen gelassen. (Auf jeden Fall sollte es möglich sein, PostgreSQL als Datenbanksystem zu verwenden. Das ist bei der Wahl zu bedenken.) Das eigentliche Clustering findet in der Analyse Komponente statt, die alle für die Analyse des Datenbestands nötigen Algorithmen beherbergt. Der Indexer baut aus den Inhalten der Datenbank einen Index auf, der Grundlage für zu beantwortende Suchanfragen wird. Der Clusterer ermittelt die Cluster und legt ihre Repräsentation in der Datenbank ab. Der Analyzer ermittelt für die Inhalte der Datenbank passende Features. Siehe dazu auch Abschnitt 5.3.3 (Seite 59). 4.2. PROTOTYP 50 5. Wissenschaftliche Analyse Es ist geplant, einen Clustering Algorithmus einzusetzen, um die Suche in den Daten des ISL effektiver zu gestalten. Die Zielsetzung findet sich im Forschungsbereich Information Retrieval wieder, der in diesem Kapitel zunächst erläutert werden soll. Zudem sollen alternative und/oder einfachere Methoden aufgezeigt werden, die ebenfalls zur Verbesserung einer Suchfunktion beitragen können. Clustering ist eben bei weitem nicht die einzige Methode, so etwas zu erreichen. Weil die Erwähnung des Begriffs häufig Assoziationen hervorruft, die hier nicht passen, sei eine Erläuterung des Begriffs eingeschoben. Der Begriff Clu” ster“ wird in den unterschiedlichsten Kontexten verwendet. Cluster in der Wirtschaft werden als Verbände von Betrieben verstanden, in der Astronomie versteht man unter Clustern Sternhaufen und auch die Physik und die Mathematik verwenden jeweils eigene Bedeutungen des Begriffs. All diese Begriffe haben jedoch eines gemeinsam: sie beschreiben die Gruppierung von etwas. Sei es von Betrieben in der Wirtschaft oder von Sternen in der Astronomie oder gar von Computern in der Informationstechnik, in jedem Fall handelt es sich um eine Gruppierung oder Anhäufung von gleichartigen Dingen. In dieser Arbeit soll Clustering für die Gruppierung von Dokumenten stehen. Die erzeugten Gruppen lassen sich auch als Klassen von Dokumenten betrachten. Die Vorgehensweise passt sich in das Forschungsfeld Information Retrie” val“ ein und wird ebenfalls im Bereich Knowledge Discovery from Databases“ ” (KDD) [FPSS96] eingesetzt. Daher sollen diese beiden Felder kurz vorgestellt werden. 5.1. Information Retrieval Der Forschungsbereich Information Retrieval“ (kurz: IR) existiert in der In” formatik bereits seit vielen Jahren. Das Buch von van Rijsbergen mit dem Titel Information Retrieval“ [VR79] kam beispielsweise in der ersten Ausführung ” bereits 1975 heraus und die Inhalte der Thematik wurden schon vorher in Uni- 5.1. INFORMATION RETRIEVAL 52 versitäten gelehrt. Van Rijsbergen identifiziert die 1940er Jahre als die Zeit, in der man begann, dem IR mehr Aufmerksamkeit zu schenken. Es handelt sich also um eine Problematik, die sehr lange schon eine gewisse Wichtigkeit in der Informatik erlangt hat und die diese nie wirklich verloren hat. Besonders seit dem Aufkommen des Internet und den Suchmaschinen, die oft eher schlecht als recht Dokumente aus den schier unendlichen Dokumentenmengen fischen können, ohne die heute aber niemand auskommen könnte, hat das Thema IR neuen Auftrieb bekommen. IR beschäftigt sich in der Hauptsache damit, mit welchen Mechanismen sich am besten Informationen (insbesondere Dokumente) auffinden lassen. Insbesondere findet sich in der Literatur ([VR79]) die Unterscheidung, dass IR Systeme keine Antworten, die das gesuchte Wissen direkt beinhalten, geben, sondern ausschließlich Hinweise darüber liefern, in welchen Dokumenten jenes am wahrscheinlichsten zu finden sein wird. Somit sind die heutigen Suchmaschinen wie Google, Overture oder Fireball eigentlich ganz klassische IR Systeme. Van Rijsbergen teilt den Bereich IR in drei Teilbereiche auf, die sich für IR als besonders wesentlich herausgestellt haben. Das sind zum einen die inhaltliche Analyse, zum anderen die Informationsstruktur und als drittes die Bewertung. Der erste Teilbereich Analyse“ beschäftigt sich damit, sinnvolle Repräsentatio” nen (siehe auch S. 56) von Dokumenten zu finden, die von Computern verarbeitbar sind. Dies ist deshalb ein wichtiger Aspekt, weil die hier betrachteten Dokumente zum größten Teil von Menschen für Menschen geschrieben wurden und folglich in einer natürlichsprachlichen Form vorliegen. Diese natürlichsprachliche Form dem Computer verständlich zu machen, ist nach wie vor unmöglich. Es gibt sehr viele ambivalente Konstrukte in der Sprache, deren Bedeutung sich dem menschlichen Leser erst im Kontext erschließt und mitunter aktuelles Hintergrundwissen verlangt. Dies ähnelt in gewisser Weise Insider-Witzen“, ” über die nur Personen mit gleichem Hintergrundwissen lachen können. Nichtsdestotrotz gibt es durchaus Bestrebungen, Texte linguistisch zu erfassen und Satzkonstrukte zu erkennen. (An dieser Stelle schneidet sich das Fachgebiet Information Retrieval mit dem der Computerlinguistik. Es lohnt sich somit, interdisziplinär vorzugehen.) Trotz aller Bemühungen und auch trotz aller Erfolge in dem Bereich hat es noch immer wenig damit zu tun, dass der Computer nun den Text verstehen“ könnte, so wie es ein Mensch täte. Das Ziel der Bemühungen ” ist es stattdessen, den Text so zu strukturieren, dass er sich für eine automatisch durchgeführte Auswertung eignet. Dabei werden Informationen aus dem 53 5.1. INFORMATION RETRIEVAL Text extrahiert und in formelle Strukturen überführt. Diese Methoden bauen eine Statistik über die verwendeten Begriffe auf und schlussfolgern auf der Basis dieser Statistik. Sie sind damit zum Beispiel in der Lage, eine Wahrscheinlichkeit zu errechnen, nach der das ausgewertete Dokument mit einer Suchanfrage (oder anderen Dokumenten im Fundus) korreliert. Der zweite Teilbereich, die Informationsstruktur, basiert auf dem Gedanken, dass die unterschiedlichen Dokumente in irgend einer Form in Beziehung zueinander stehen. Zum Beispiel können sie thematische Ähnlichkeiten aufweisen, vom selben Autor verfasst worden sein oder eine andere Eigenschaft aufweisen, die sie in Beziehung stellt. Selbst die Erkenntnis, dass zwei Dokumente keinerlei Ähnlichkeiten aufweisen, stellt eine Art von Beziehung dar. Zu guter Letzt ist eine Metrik von Nöten, die es ermöglicht, dass verschiedene Methoden bewertet und verglichen werden. Es stellt sich die Frage, auf welcher Basis die Effektivität eines IR Systems gemessen werden kann. Diese Frage konnte bereits 1966 von Cleverdon (siehe auch [CMK66]) beantwortet werden, der einen Katalog von mehreren Kriterien aufgestellt hatte, mit deren Hilfe Informationssysteme bewertet werden können. Van Rijsbergen erklärt, dass von den ermittelten Kriterien nur precision und recall für die Effektivität von IR Systemen ausreichende Aussagekraft besitzen, weshalb sich die IR community auf diese beiden beschränkt. Precision gibt das Verhältnis zwischen der Anzahl von tatsächlich relevanten Dokumenten und der Anzahl der insgesamt ermittelten Dokumente an. Eine Precision von 1 hieße demnach, dass alle im Rahmen einer Suchanfrage ermittelten Dokumente tatsächlich relevant wären, während ein Wert von 0 dafür stünde, dass kein Dokument der Ergebnismenge relevant wäre. Das zweite Kriterium, Recall, beschreibt das Verhältnis zwischen der Anzahl relevanter Dokumente in der Ergebnismenge und der Anzahl relevanter Dokumente im System insgesamt. Ein Wert von 0 hieße demnach, dass von allen relevanten Dokumenten keines ausgegeben worden wäre und ein Wert von 1 hieße, dass sich im Gegenteil sämtliche relevanten Dokumente in der Ausgabemenge befänden. Abbildung 5.1 zeigt, welche Kombinationen aus Ergebnissen und dessen Relevanz möglich sind. Diese einzelnen Mengen zueinander in Beziehung gesetzt ergibt eine ganze Reihe mehr oder weniger sinnvolle Maßzahlen, von denen Precision und Recall jeweils eine ist. Als Beispiel sei an dieser Stelle noch zusätzlich der Wert mit der Bezeichnung Fallout definiert, der die gegensätzliche Bedeutung hat, wie Recall. Er ist 1, wenn alle existierenden unrelevanten Dokumente We now leave the speculations about relevance and return to the promised detailed discussion of the measurement of effectiveness. Relevance will once again be assumed to have its broader meaning of 'aboutness' and 'appropriateness', that is, a document is ultimately determined to be relevant or not by the user. Effectiveness is purely a measure of the ability of the system to satisfy the user in terms of the relevance of documents retrieved. Initially, I shall concentrate on measuring effectiveness by precision and recall; a similar analysis could be given for any pair of equivalent measures. 5.2. KNOWLEDGE DISCOVERY IN DATABASES 54 It is helpful at this point to introduce the famous 'contingency' table which is not really a contingency table at all. RELEVANT NON-RELEVANT RETRIEVED A ∩ B A ∩B B NOT RETRIEVED A ∩ B A ∩B B A A N (N = number of documents in the system) Abbildung 5.1.: Tabellarische Darstellung aus [VR79] zurückgeliefert wurden; und er ist entsprechend 0, wenn kein unrelevantes Dokument zurückgeliefert wurde. precision = recall = f allout = |A ∩ B| |B| |A ∩ B| |A| A ∩ B A In aktuellen Forschungsbeiträgen werden die beiden Werte häufig kombiniert und in eine Bewertungsfunktion überführt, die den beiden Werten jeweils eigene Prioritäten gibt, wie es beispielsweise bei einem gewichteten Mittel der beiden Werte der Fall ist. Wie die Gewichtungen verteilt werden, hängt stark von der Domäne, sprich den vorhandenen Dokumenten und deren Struktur, ab. Diese Arbeit beleuchtet nun hauptsächlich den zweiten Teilbereich des IR, der sich um die Beziehungen der Dokumente untereinander kümmert. 5.2. Knowledge Discovery in Databases Bei KDD, wie von Fayyad et. al [FPSS96] vorgeschlagen, handelt es sich um einen Prozess, der darauf abzielt, Muster in Datenmengen zu erkennen. Die Motivation dazu ergibt sich daraus, dass diese Datenmengen immer größer werden, und dass auch Dank des Internets und der globalen Vernetzung der Zugriff auf diese Daten sehr wichtig geworden ist. In der Zeit des Dotcom-Booms hieß es, nicht der Große fresse den Kleinen, sondern der Schnelle den Langsamen. Dies ließe sich ohne weiteres auch so umdichten, dass der Wissende den Unwissenden frisst. Korrekte und aktuelle Informationen zu besitzen ist also ein Wettbe- 55 5.2. KNOWLEDGE DISCOVERY IN DATABASES Abbildung 5.2.: KDD Prozess von Fayyad et al. werbsvorteil. Leider genügt es dazu nicht, haufenweise Rohdaten zu sammeln, denn am Ende muss ein Mensch diese Daten interpretieren können. Große Mengen Rohdaten zu interpretieren und dort befindliche Zusammenhänge zu erkennen, dies ist das Ziel von KDD Prozessen. Im Unterschied zum Information Retrieval suchen KDD Prozesse explizit nach Wissen und nicht nur nach Dokumenten, die (mit einer bestimmten oder unbestimmten Wahrscheinlichkeit) das Wissen enthalten. Abbildung 5.2 (Seite 55) zeigt den Prozess. Der für den Prozess wichtigste Schritt ist das Data Mining. Die Schritte vorher haben zur Aufgabe, die Daten zu selektieren und vorzubereiten, damit die Data Mining Algorithmen überhaupt eine passende Eingabe bekommen, und danach steht nur noch der Schritt Evaluation. Der erste Schritt Selektion soll darstellen, dass es zunächst notwendig ist, aus den Datenmengen eine Auswahl zu treffen, die die zu analysierenden Daten enthält. Welche Daten in die Analyse mit einbezogen werden kann durchaus starke Auswirkungen auf die Ergebnisse haben. Wenn wichtige Informationen ignoriert werden, sind die Ergebnisse möglicherweise nicht repräsentativ, und wenn zu viele unwichtige Daten mit einbezogen werden, können die Ergebnisse verfälscht werden und Aspekte anzeigen, die für den Anwendungsfall uninteressant sind. Zudem steigt häufig die Laufzeit der Algorithmen je nach Größe der Eingabemenge, so dass schon aus rein technischen Gründen eine Eingrenzung der Eingabe sinnvoll wird. Danach kann es nötig sein, die Daten im Schritt Preprocessing zu säubern 5.3. REPRÄSENTATION VON DOKUMENTEN 56 oder zu konsolidieren. Beispielsweise gehört dazu, unvollständige oder fehlerhafte Daten zu erkennen und zu entfernen. Auch können an dieser Stelle Summen gebildet werden, falls diese für den Anwendungsfall anstatt der eigentlichen Daten interessant sind. In jedem Falle wird hier bereits auf simple Weise ein bereinigtes Modell der Daten erzeugt, das der nächste Schritt als Eingabe verwendet. Dabei handelt es sich um den Schritt Transformation. Er ist notwendig, weil der Algorithmus üblicherweise Daten in einem speziellen, für den Ablauf des Algorithmus optimalen, Format benötigt, in das die vorhandenen Daten erst gewandelt werden müssen. Der Algorithmus selber wird durch den darauf folgenden Schritt Data Mining dargestellt. Hier konzentriert sich das Forschungsinteresse, da die anderen Schritte mit wohlbekanntem Programmierhandwerk ohne größere Probleme durchgeführt werden können. Die Probleme in den obigen Schritten sind eher organisatorischer Natur (es müssen gut ausgebildete Mitarbeiter existieren, die nicht nur technisches sondern auch fachliches Know-how besitzen). Daten umzuwandeln ist beispielweise eine inzwischen sehr gut beherrschte Anforderung an Computersysteme. Data Mining Algorithmen dagegen sind häufig mit komplexer Mathematik ausgestattet und lassen sich in das vergleichsweise neue Forschungsfeld der Künstlichen Intelligenz (KI) einordnen (kommerziell erfolgreiche Anwendungen ca. seit Mitte der 1980er Jahre1 ). Der letzte Schritt nach dem Data Mining steht für die Interpretation bzw. Auswertung der Ausgaben des Algorithmus. Diese kann beispielsweise darin münden, dass die Ausgaben als neue, stärker abstrahierte Daten in der Datenbank abgelegt werden, die später in anderen Prozessen Anwendung finden. Es könnte jedoch ebenso eine Art Report erzeugt und präsentiert werden. 5.3. Repräsentation von Dokumenten Auf dem Weg zu Dokumenten-Clustern stehen wir zunächst der Frage gegenüber, auf welche Weise die vorliegenden Dokumente im System repräsentiert werden, so dass die inhaltlichen Aspekte vergleichbar werden. Hier gibt es einige Ansätze, die von sog. Word-Bags bis hin zu linguistischen Systemen reichen. In den meisten Fällen wird für die Repräsentation der Dokumente das Vektorraummodell (Vector Space Model, VSM) verwendet. Dies basiert letzt1 Seite 24 in [RN95] 5.3. REPRÄSENTATION VON DOKUMENTEN 57 endlich auf der Idee, die Dokumente jeweils als multidimensionale Vektoren darzustellen. Definition: Eine Dimension des Vektors wird Feature genannt. Denn jede Dimension beschreibt eine Eigenschaft des Dokuments auf eine zunächst nicht näher spezifizierte Weise. Definition: Im Vektorraummodell repräsentiert der Vektor v ein Dokument d aus der Menge aller Dokumente D auf der Basis von n ausgewählten Features wie folgt: v(d) = {f1 , . . . , fn }, d ∈ D | {z nf eatures (5.1) } 5.3.1. Einordnung in Situation des ISL Im Falle des ISL existiert eine manuell angelegte Klassifikation auf der Basis eines multihierarchischen Thesaurus sowie einer groben Einteilung in Sachgebiete. Dokumente werden klassifiziert, indem sie eine Kombination an Begriffen aus dem Thesaurus sowie ein Sachgebiet zugewiesen bekommen. Eine Klasse definiert sich also durch die Kombination aus Begriffen sowie aus dem Sachgebiet. Um dies formell darzustellen sei nun K die Menge aller Klassen, S die Menge aller Sachgebiete, D die Menge aller Dokumente und T die Menge aller Terme. Dann lässt sich eine Funktion desc definieren, die beschreibt, welche Begriffe aus T einem Dokument D zugeordnet werden. Und mit der Hilfe von desc lässt sich die Menge K wie folgt definieren. P(T ) = {X|X ⊆ T } desc : D → P(T ) K = {(X, s)|s ∈ S, X ∈ P(T ) ∧ ∃d ∈ D, desc(d) = X} (5.2) Die folgenden Abschnitte verwenden die hier eingeführten Bezeichnungen S, T, D und K für die jeweilige dargestellte Problematik. 5.3.2. Das Dokument als Wortsack (aka word-bag) Ein Text besteht aus der Menge seiner Worte. Auch wenn diese Erkenntnis zunächst äußerst naiv klingt, so ist selbst daraus eine einfachste Repräsentation eines Dokuments möglich. In diesem einfachsten Falle ist jedem Wort ein 5.3. REPRÄSENTATION VON DOKUMENTEN 58 Feature zugeordnet. Ein Feature beschreibt dann für sein“ Wort die Häufigkeit ” dessen Auftretens im Text. Dies folgt dem Gedanken, dass Begriffe, die häufig vorkommen, eher dem Inhalt des Textes entsprechen als solche, die nur selten oder gar nie im Text vorkommen. Dieser Logik folgend entsprechen Features, die für ein bestimmtes Dokument mit einem hohen Wert ausgestattet sind, besonders gut dem Inhalt dieses Dokuments. Luhn [Luh58] fügt dieser Idee noch eine weitere hinzu. Und zwar schlägt er vor, zusätzlich noch die relative Position der Wörter im Satz zu bewerten und somit eine kombinierte Bewertung von Begriffen zu verwenden. Das ließe sich zum Beispiel so umsetzen, dass sich benachbarte Begriffe gegenseitig Boni geben. Dadurch erhöht sich die Bewertung eines Begriffs allein dadurch, dass es neben einem stark bewerteten Begriff steht. In der Praxis werden vor der statistischen Verarbeitung die betrachteten Worte mindestens auf ihre Wortstämme reduziert (genannt Stemming“), um die ” vielen Variationen, die aufgrund von Konjugationen oder unterschiedlichen Ausprägungen in Einzahl und Mehrzahl entstehen, auf einen gemeinsamen Begriff zurückzuführen. Zudem werden sogenannte Stoppwörter aus der Menge der betrachteten Begriffe entfernt, die mit ausreichender Sicherheit keine bedeutungstragende Funktion haben. Dabei handelt es sich hauptsächlich um Artikel oder Pronomen sowie einige Verben. Zum Beispiel: ist“, ein“, für“, der“ ” ” ” ” und weitere ähnliche Worte. Spätestens dann hat man eine einfache aber wirksame Repräsentation des Dokumenten-Inhalts geschaffen. Dennoch ist sie natürlich weit davon entfernt, perfekt zu sein. Insbesondere erschließt sich der Sinn eines Wortes mitunter erst aus seinem Kontext. Den Kontext nicht zu berücksichtigen, kann besonders bei kurzen Texten zu falschen Schlüssen führen. Auch das Stemming ist nicht in allen Fällen perfekt. Mitunter reduziert es Begriffe auf die gleichen Wortstämme, die eine völlig andere Bedeutung haben. Auch andersherum wird ein Schuh daraus: es reduziert Begriffe auf unterschiedliche Wortstämme, obwohl sie völlig identische Bedeutungen haben. Weiterhin werden derart ermittelte Feature-Vektoren sehr groß und spannen einen riesigen Raum mit sehr vielen Dimensionen auf. Dadurch werden Berechnungen im Vektorraum sehr rechenintensiv. Folglich entsteht der Wunsch, die Dimensionalität der Vektoren zu verringern und gleichzeitig die inhaltliche Übereinstimmung der Vektoren mit der Zielsetzung des Textes zu erhöhen. 5.3. REPRÄSENTATION VON DOKUMENTEN 59 5.3.3. Methoden für die Beschränkung auf wesentliche Features Aufgrund der genannten Beschränkungen ist es sinnvoll, nach Wegen zu suchen, die Dimensionalität der Feature Vektoren einzuschränken. Yang und Pedersen [YP97] sind eben dieser Frage nachgegangen und haben verschiedene Methoden auf ihre Wirksamkeit hin überprüft. Die Gewinner der Studie sollen an dieser Stelle kurz vorgestellt werden. Inverse Document Frequency Dieser Ansatz wurde bereits in [SJ72] beschrieben, wo er als Collection Fre” quency Weight“ bezeichnet wurde. Die Annahme dahinter ist, dass offenbar solche Begriffe für die Klassifikation besonders nützlich sind, die in einzelnen Dokumenten besonders häufig vorkommen, gleichzeitig aber in der gesamten Sammlung nur selten auftauchen. Solche Begriffe trennen einzelne Dokumente sehr gut von anderen und sind daher von Vorteil. idfi = log N ni (5.3) Rechnerisch kann IDF recht einfach als das Verhältnis zwischen der Zahl an Dokumenten insgesamt (N) und der Anzahl jener Dokumente, in denen der jeweilige Begriff bzw. das Feature i vorkommt (ni ) angegeben werden, so dass letztendlich für jedes einzelne Feature ein entsprechender IDF-Wert existiert. Um entscheiden zu können, welche Features in den meisten Dokumenten vorkommen und welche nicht, wäre ein Schwellenwert denkbar, der die allgemeine Umschreibung die meisten“ expliziert. Features, deren IDF nun über diesem ” Schwellenwert läge, könnten aus der Betrachtung ausgeschlossen werden. Häufiger dürfte IDF jedoch als Mittel zur Gewichtung der ermittelten Häufigkeiten angewandt werden. In dieser Funktion nennt man es auch TF-IDF, kurz für Term Frequency and Inverse Document Frequency. Dabei multipliziert man einfach die ermittelten Häufigkeiten (TF) eines Terms i in einem Dokument j mit der passenden IDF für den Term i. Information Gain Information Gain (IG) beschreibt den Informationsgewinn, der durch ein Feature in Bezug auf die Klassifikation erbracht wird. Um den Gewinn ausdrücken zu können, benötigt man zunächst ein Maß für den Informationsgehalt. Ein 5.3. REPRÄSENTATION VON DOKUMENTEN 60 Begriff, dessen Auftreten oder Nichtauftreten in Dokumenten eine hohe Aussagekraft über die Klassifikation hat, der hat einen hohen Informationsgehalt. Dies lässt sich wie folgt verallgemeinern und formeller ausdrücken. Der Informationsgehalt wurde ursprünglich von Shannon [Sha48] in Bezug auf die Kapazität von Übertragungskanälen betrachtet. Mit Kapazität ist hier die Information, die pro Zeiteinheit maximal durch den Übertragungskanal geleitet werden kann, gemeint. Seine Motivation war, formell mathematisch zu beschreiben, wie sich Rauschen auf die Korrektheit übertragener Daten auswirkt und welche Möglichkeiten es gibt, diesem Effekt entgegenzuwirken. Mit Rauschen sind Fehler gemeint, die bei der Übertragung passieren können. Rauschen hat die Eigenschaft, gleichmäßig verteilt nach einer bestimmten Wahrscheinlichkeit (Signal-to-Noise-Ratio oder kurz SNR) aufzutreten. Die These von Shannon bezüglich der Information ist nun, dass es bei einer bestimmten SNR eine ganz bestimmte Menge an Information gibt, die so durch den teilweise verrauschten Kanal geleitet werden kann, dass am anderen Ende ein rauschfreies fehlerloses Ergebnis steht. Diese Menge an Information ist eine theoretische Größe, die auch durch schlaueste Kodierungsverfahren nicht überschritten werden kann. Es gibt nun eine feste maximale Kapazität, die auf unverrauschte Weise erreicht wird und die systemimmanent und gegeben ist. Wie sich diese Kapazität durch Rauschen erniedrigt, wird durch Shannons Maß für Information (auch Entropie genannt) mathematisch errechnet. Dies hat er in einer Formel wie folgt ausgedrückt2 : H=− n X pi log pi (5.4) i=1 Auf Information Retrieval übertragen lässt es sich derart, dass hierbei nach Wegen gesucht wird, so wenige Features (entsprechend Bits) wie möglich zu verwenden, um so viel Information wie möglich auszudrücken, um damit eine möglichst exakte Klassifizierung zu erreichen. Der Trick dabei ist, Rauschen (in Bezug auf die Klassifikation falsche Begriffe, Fehler, oder gleichmäßig verteilte Begriffe) herauszurechnen. Nun lässt sich die von Shannon ermittelte Formel für den Informationsgehalt verwenden, um den Informationsgewinn auszudrücken, den ein bestimmter Term t (bzw. ein bestimmtes Feature) für die Klassifikation des Dokuments 2 Beweis siehe [Sha48], Seite 28ff 5.3. REPRÄSENTATION VON DOKUMENTEN 61 einbringt. Und zwar wie folgt: G(t) = − m X P (ci ) log P (ci ) i=1 +P (t) +P (t) m X i=1 m X P (ci |t) log P (ci |t) P (ci |t) log P (ci |t) (5.5) i=1 In dieser Formel bezeichnet c eine Klasse aus der Menge aller Klassen (i=1. . . m), denen jeweils ein Dokument entweder zugeordnet wird oder nicht. Dabei ist P(c) die Wahrscheinlichkeit oder Frequenz, mit der ein Dokument dieser Klasse c zugeordnet wird. P(t) ist die Frequenz des Auftretens des Terms/Features t und P(c|t) entsprechend die Frequenz, mit der Dokumente bei vorliegendem Feature t der Klasse c zugeordnet werden. Mutual Information Mutual Information (MI) beschreibt die statistische Korrelation, in diesem Fall zwischen Features und Klassen, und ist folgendermaßen definiert. I(t, c) = log P (t ∧ c) P (t) × P (c) (5.6) Gleichung 5.6 geht auf das Maß des gemeinsamen Informationsgehaltes von Kullback-Leibler [KL51] zurück, das in Gleichung 5.7 dargestellt ist. Es geht von zwei unterschiedlichen Wahrscheinlichkeitsverteilungen über eine gemeinsame Wahrscheinlichkeitsvariable x aus, die in Beziehung gesetzt werden. Besondere Eigenschaften: Dieses Maß ist nicht symmetrisch, so dass es eher als Inklusion verstanden werden kann. Zudem ist zu beachten, dass es unendlich wird, wenn die Wahrscheinlichkeit q für x 0 ist, während dies bei p für x nicht der Fall ist. IKL (p, q) = log p(x) q(x) (5.7) Die Formel, die im allgemeinen unter der Bezeichnung Kullback-LeiblerDivergenz bekannt ist und die auch im folgenden die Grundlage bilden soll, entspricht dem erwarteten gemeinsamen Informationsgehalt. Der Erwartungswert beschreibt den durchschnittlichen Wert einer Wahrscheinlichkeitsverteilung und 5.3. REPRÄSENTATION VON DOKUMENTEN 62 erweitert die Formel zur KL-Divergenz über eine Wahrscheinlichkeitsvariable x mit n Ausprägungen wie folgt: n X p(x) pi log = pi log q(x) qi i KL(p|q) = Ep IKL (p, q) = Ep (5.8) Auf unsere Domäne der Klassifizierung von Termen bezogen wird aus 5.8 und 5.6 die Gleichung 5.9 für Terme t. M I(t) = m X P (t ∧ ci ) log i=1 P (t ∧ ci ) P (t) × P (ci ) (5.9) Dabei beschreibt MI, wie viel Information von P(t) in P(c) und von P(c) in P(t) enthalten ist. Sind die Wahrscheinlichkeitsverteilungen P(c) und P(t) unabhängig voneinander, hat MI den Wert 0, ansonsten ist er positiv. Je höher er ist, um so mehr Information ist beiden Verteilungen gemein. Es existiert eine Abschätzung der obigen Formel auf der Basis der Anzahlen A, B und C, sowie der Gesamtanzahl an Dokumenten N. Die Anzahlen begründen sich durch Korrelationen von t und c wie folgt: t mit c (A), t ohne c (B) sowie c ohne t (C) und münden in der Abschätzung: I(t, c) ≈ log A×N (A + C) × (A + B) (5.10) Anwendung Bei den drei erläuterten Maßen kommt nur DF ohne eine Lernphase aus. Sowohl IG als auch MI basieren auf Wahrscheinlichkeitsverteilungen, die zunächst unbekannt sind. Sie setzen voraus, dass eine Klassifikation existiert, der Dokumente zugeordnet sind und dass eine Menge an Termkandidaten existiert. Nur wenn das der Fall ist, können die nötigen Wahrscheinlichkeitsverteilungen P(c) oder P(t) überhaupt ermittelt werden. Wenn die zugrundeliegenden Daten nicht ausreichen, ist eine Trainingsmenge ausreichender Größe mit repräsentativen Dokumenten anzulegen, damit die nötigen Wahrscheinlichkeitsverteilungen ermittelt werden können. 5.3.4. Latent Semantic Indexing LSI [DFL+ 88] arbeitet ebenso wie die meisten anderen bekannten Verfahren mit dem Vektorraummodell und repräsentiert ein Dokument somit als Feature Vektor. 5.3. REPRÄSENTATION VON DOKUMENTEN 63 LSI extrahiert mit Hilfe von Singular Value Decomposition (SVD) [WRR03] aus einer Dokument-Term-Matrix n orthogonale Faktoren, aus denen die ursprüngliche Matrix durch Linearkombination annähernd wiedergewonnen werden kann. Bei diesem Vorgehen werden Detailinformationen ignoriert, es wird aber davon ausgegangen, dass die den Dokumenten latent“ innewohnende ” Struktur erhalten bleibt. Die prinzipbedingte Unschärfe sei hilfreich, da auch Suchanfragen oft unscharf seien. Die Idee basiert darauf, dass sich jede i*j Matrix X (i Terme, j Dokumente) mittels SVD in die Matrizen T, S und D zerlegen lässt (siehe Gleichung 5.11), so dass T und D zueinander orthogonale Matrizen darstellen. S ist eine diagnonale Matrix aus einzelnen Werten (singular values) und verbindet T und D so, dass sich mittels Linearkombination die Ursprungsmatrix X ergibt. Im Verlaufe des Algorithmus wird die S-Matrix jedoch künstlich verkleinert. Und zwar werden alle kleinsten Werte entfernt, so dass nur noch k (etwa 50-300) Werte übrig bleiben. Die nun entstandene Matrix-Struktur (i*k)(k*k)(k*j) approximiert dann den ursprünglichen Vektorraum. Der gewählte Wert von k ist natürlich kritisch. Wird er zu klein gewählt, werden wichtige Features entfernt, wird er zu groß gewählt, wächst die Dimensionalität und somit die Rechendauer eventuell zu stark. X = T SD x11 · · · x1j .. .. .. . . . xi1 · · · xij = t11 · · · t1m .. . . .. . . . ti1 · · · tim s11 .. . smm d11 .. . ··· .. . d1j .. . dm1 · · · dmj (5.11) Anfragen an das System werden mit LSI als Pseudo-Dokument-Vektor modelliert. In dieser Form existiert ein Abstandsmaß von diesem Dokument zu anderen (echten) Dokumenten im Raum, auf dessen Basis das System die Antwort formulieren kann. Weiterhin können Begriffe, die sich in der Nähe befinden, in dem Zusammenhang als Suchbegriffe vorgeschlagen werden. Ergab die Suche zu wenige Ergebnisse, ist es auch möglich, die Suchanfrage ohne Rückfrage durch ähnliche Terme zu erweitern und so automatisch die Suche breiter gestalten. 5.3. REPRÄSENTATION VON DOKUMENTEN 64 Das Verfahren sei erfolgreicher als übliche Feature Selection Verfahren, müsse aber hinter echten“ Clustering Ansätzen zurückstehen, inbesondere hinter dem ” im Paper von Baker vorgeschlagenen Verfahren Distributional Clustering. [BM98] Andere halten die Kombination eines Clustering Mechanismus mit LSI für sinnvoll. U.a. sind die Autoren des Papers [XLG03] dieser Ansicht: [. . . ] conse” quently, traditional data clustering methods such as K-means have to be applied in the eigenvector spaces to find the final document clusters“(Seite 2). Diesem Rat möchte sich der Autor dieser Arbeit gerne anschließen. Auch LINGO (siehe Abschnitt 3.4.2 (Seite 30) und [Osi03] setzt sein Clustering Verfahren auf LSI auf. Wie kann nun die Berechnung eines Abstandsmaßes im SVD-Raum vonstatten gehen? Um diese Frage zu beantworten, muss man sich zunächst klar machen, dass verschiedene Fragestellungen existieren, die zu verschiedenen Vergleichen und damit zu verschiedenen Berechnungen führen. Zum Beispiel kann man fragen, wie stark ein bestimmter Term mit einem bestimmten Dokument zusammenhängt, oder man kann den Zusammenhang zweier Dokumente untereinander prüfen. Im Folgenden seien alle relevanten Fragestellungen mit ihren Lösungen dargestellt (ebenfalls entnommen aus [DFL+ 88]). Term - Dokument Dies ist an sich die simpelste Frage, die man stellen kann, denn die Antwort ist in der zugehörigen Zelle der Ursprungsmatrix X enthalten. Wenn man nun jedoch davon ausgeht, dass X nicht (mehr) existiert, sondern nur die drei Matrizen T, S und D zur Verfügung stehen, dann muss der Wert durch eine entsprechende Linearkombination der Matrizen errechnet werden. In Gleichung 5.12 sei dies in einer Formel dargestellt. Hier wird der Zusammenhang zwischen dem Term i und dem Dokument j errechnet. |S|−1 X tik skk dkj (5.12) k=0 Term - Term Der Vergleich von Term zu Term findet im Zeilen-Raum statt. Jede Zeile von T entspricht bekanntlich einem Vektor eines spezifischen Terms. Für den Vergleich wird das Skalarprodukt bemüht, daher sieht die einfache Rechnung so aus wie in Gleichung 5.13 dargestellt. Dabei sei angemerkt, dass die Zeilen i und j der 5.3. REPRÄSENTATION VON DOKUMENTEN 65 Term-Matrix T jeweils mit ihren Skalaren multipliziert werden, wodurch die Achsen im Raum ihrer allgemeinen Bedeutung entsprechend verzerrt werden (dies begründet den Faktor s2 in der Formel). |S|−1 X tik s2kk tjk (5.13) k=0 Dokument - Dokument Bei diesem Vergleich gilt das selbe wie bei dem Vergleich zweier Terme, nur dass in diesem Falle statt der Zeilen der Term-Matrix T die Spalten i und j der Dokument-Matrix D’ verwendet werden. Siehe Gleichung 5.14. |S|−1 X dki s2kk dkj (5.14) k=0 Dokument - Pseudo-Dokument Nun gibt es Situationen, in denen man auf Daten trifft, die in der Matrix X nicht verzeichnet waren. Falls man zum Beispiel auf ein neues unbekanntes Dokument mit dessen Vektor vneu trifft und dieses mit den bestehenden Termen oder Dokumenten vergleichen möchte, so muss man den Vektor vneu zunächst in den Raum der Matrix D hinein-transformieren. Auf diese Weise können zudem SVD Strukturen iterativ erweitert werden, ohne dass bei jeder Änderung des Datenbestandes die Matrizen komplett neu berechnet werden müssten. Es genügt in diesem Falle, das neue Dokument in den Vektor-Raum hineinzuprojizieren und den neuen Vektor zu der bestehenden Dokument-Matrix D hinzufügen. Falls das Dokument neue Terme beinhaltet, sind diese ebenfalls auf ähnliche Weise hinein zu projizieren und zu der Matrix T hinzuzufügen. Der Vorgang ist jedoch nicht ganz problemlos, denn bei jeder Änderung der D- oder T-Matrix ohne eine entsprechende Anpassung der Diagonalmatrix S stimmt die Zuordnung ein kleines Stück weniger. Aber gehen wir zurück zur Berechnung des Projektions-Vorganges. Man nehme an, es gäbe nun den besagten Dokument-Vektor vneu , welcher auf die selbe Weise konstruiert wurde wie jene der bestehenden Dokumente in der Originalmatrix X. Er kennt somit für jeden einzelnen Term dessen gewichtete Frequenz oder Auftretenshäufigkeit. Gleichung 5.15 zeigt, wie sich eine passende Repräsentation dneu für den unbekannten Dokument-Vektor vneu errechnen lässt. − → → d neu = − v Tneu T S −1 (5.15) 5.4. CLUSTERING 66 5.4. Clustering Nehmen wir nun an, dass mit den obigen Techniken Feature-Vektoren für die Dokumente so angelegt wurden, dass nur wirklich aussagekräftige Begriffe für die weitere Verarbeitung verwendet werden. Dann sollen hier Algorithmen vorgestellt werden, die diese Vektoren zu Clustern zusammenfassen. Allgemein lassen sich Clustering Algorithmen darin unterscheiden, dass einige eine hierarchische Cluster-Struktur erzeugen, andere jedoch nicht (zum Beispiel K-means). Zudem gibt es unterschiedliche Freiheitsgrade bei der Definition dieser Struktur. Die einfacheren Algorithmen verlangen mindestens eine vorab festgelegte Zahl von Clustern. Andere verwenden Thresholds als Maß, um während des Ablaufs Entscheidungen darüber zu treffen, ob neue Cluster hinzugefügt werden müssen und somit die Anzahl zu erhöhen ist oder nicht. Angenommen, es existiert eine Reihe von Klassen, denen Dokumente zugeordnet werden können. Dann folgt es dem intuitiven Verständnis einer Klassifikation, dass ein Dokument durchaus mehreren Klassen zugeordnet werden kann. Beispielsweise kann ein Dokument sowohl der Klasse Güterverkehr als auch der Klasse Containertransport zugeordnet sein, da es inhaltlich beide Themen anspricht. Um noch einen Schritt weiterzugehen, ist es ebenso wahrscheinlich, dass das Dokument beide Themen zu einem jeweils unterschiedlichen Grad betrachtet. Modell-basierte Clustering Ansätze gehen nun davon aus, dass Modelle existieren, die die Zuordnung eines Dokuments zu einer Klasse beschreiben. Es sind verschiedene Modelle denkbar, am verbreitetsten scheinen jedoch Gaußsche Verteilungen3 zu sein. Diese nennt man auch Normalverteilungen. Charakteristisch für sie ist, dass sie durch eine Reihe voneinander unabhängiger Einflüsse entstehen. Beispielsweise sind Messfehler in der Regel normalverteilt. Eine Reihe gleichartiger Messungen wird jedes Mal einen ähnlichen Wert ergeben, der jedoch vom wahren Wert wegen zufälliger Messungenauigkeiten abweicht, wobei jede Messung von der vorherigen unabhängig ist. Die durchschnittliche Abweichung wird Varianz genannt. Eine Normalverteilung wird somit durch ihre Parameter µ (Erwartungswert) und σ (Varianz) näher definiert und auch als N(µ,σ)-Verteilung bezeichnet. Zudem ist zu jeder Normalverteilung eine sogenannte Wahrscheinlichkeitsdichte ϕ wie folgt definiert. 3 Seite 393 in [DP88] 67 5.4. CLUSTERING ϕ(x; µ; σ) = √ (x−µ)2 1 e− 2σ2 , −∞ < x < ∞ 2πσ (5.16) Jedem Cluster entspricht eine solche Verteilung und eine dazugehörige Dichte. Da ein Dokument zu unterschiedlichen Graden unterschiedlichen Clustern angehören kann, muss für jedes Dokument eine Mischfunktion der unterschiedlichen Wahrscheinlichkeitsdichten existieren, die die verschiedenen Cluster mit unterschiedlicher Gewichtung w zusammengeführt werden. Diese ist, wie von Bradley et al.[BFR99] erläutert, für ein Dokument x über alle k Cluster mit Index h wie folgt definiert. p(x) = k X wh · fh (x|µh , σh ) (5.17) h=1 Die Gewichte w ergeben aufsummiert 1 und entsprechen dem Anteil an Dokumenten, die in Cluster h gehören. Die Funktion f dagegen ist die Wahrscheinlichkeitsdichtefunktion für die Verteilung beliebiger Dokumente x in Bezug auf den Cluster h, parametrisiert mit der nötigen Erwartung und Varianz. Der Algorithmus schätzt diese Formel ab, indem er ihre Parameter (bestehend aus den Gewichten, Erwartungen und Varianzen) mit Hilfe des Maximum Likelihood Verfahrens derart wählt, dass die resultierende Likelihood-Funktion maximal ist. Die Likelihood-Funktion wird über den kompletten DokumentenRaum aufgestellt und stellt die Qualität ( how well the corresponding mixture ” model fits the data“ 4 ) der geschätzten Parameter dar. Hier die Formel, bei der Φ für die Menge aller Parameter steht: L(Φ) = X x∈D log k X ! wh · fh (x|µh , σh ) (5.18) h=1 Der Ablauf besteht im Wesentlichen aus zwei Schritten[LGXZ02] [BFR99], die sich bis zum Erreichen eines Stop-Kriteriums abwechseln und somit iterativ die Lösung optimieren. Der erste Schritt wird häufig als E-Schritt (Gleichung 5.19) bezeichnet, während der Zweite (Gleichung 5.20) dann den M-Schritt darstellt. Während des ersten Schrittes werden die Wahrscheinlichkeiten berechnet, nach der sich Dokument x in Cluster h aufhält. Der zweite Schritt optimiert die Parameter mit Hilfe der Ergebnisse des ersten Schritts. 4 Seite 7 in [BFR99] 5.4. CLUSTERING 68 wj · fh (x|µjh , Σjh ) , h = 1, . . ., k whj (x) = P h j wi · fi (x|µji , Σji ) (5.19) i whj+1 = X whj (x) x∈D P = µj+1 h x∈D whj (x) · x P x∈D P Σj+1 h = x∈D whj (x) j+1 T whj (x)(x − µj+1 h )(x − µh ) P x∈D whj (x) , h = 1, . . ., k (5.20) Die Gleichungen Gleichung 5.19 und Gleichung 5.20 verlangen nach etwas zusätzlicher Erläuterung. Insbesondere wird hier mit dem großen griechischen Zeichen Sigma ein vorher unbenutztes Symbol verwendet. Es ersetzt das bislang verwendete Symbol σ für die Varianz und signalisiert, dass hier dazu übergegangen wurde, mehrdimensionale Gaußsche Wahrscheinlichkeitsverteilungen zu verwenden. Dies ist notwendig, da die zu clusternden Objekte komplexe Textkörper beinhalten, die kaum auf eindimensionale Art und Weise repräsentiert werden können. Daher gehen wir zu mehrdimensionalen Verteilungen über. Der Erwartungswert µ ist analog mehrdimensional geworden und liegt nun in Form eines Vektors vor. Die durch das Sigma dargestellte Varianz ist in der mehrdimensionalen Form eine Kovarianzmatrix. Sonst ändert sich nichts. Das Stopp-Kriterium wird von der oben erwähnten Likelihood Funktion geliefert, sobald diese an einem lokalen Maximum konvergiert. Teil III. Umsetzung 6. Statisches Modell Das System war von Beginn an eine sehr experimentelle Plattform, so dass zu keinem Zeitpunkt eine ausführlich geplante Architektur vorlag. Während der Forschung daran wurden ständig an verschiedenen Aspekten mehrere Alternativen ausprobiert, so dass sich inzwischen einige Design-Aspekte als sinnvoll herauskristallisiert haben, die im Folgenden besprochen werden sollen. 6.1. Data Objects Die Anwendung verwendet durchgehend objektorientierte Prinzipien und macht auch für das Datenmodell keine Ausnahme. Da die Daten in einer relationalen Datenbank abgelegt werden sollen, ist ein relationales Modell trotz grundsätzlich objektorientierter Ausrichtung unausweichlich. Somit gibt es hier zwei Modelle, ein relationales (S. 72) und ein objektorientiertes (S. 73 und S. 74). Es gibt hier für jedes Objekt der objektorientierten Sicht eine Tabelle in der relationalen Sicht, so dass die Umsetzung vom Einen auf das Andere sehr unkompliziert ist. Dank Hibernate lässt sich diese Umsetzung deklarativ bewerkstelligen. Das bedeutet, dass für jedes Objekt eine Mapping Datei im XML Format vorliegt, die von Hibernate ausgewertet wird. Es gibt keinen Code in der Anwendung, der irgendwie Bezug auf die relationale Natur der Datenbasis nimmt, die Umsetzung erledigt Hibernate völlig transparent. 6.2. Data Access Objects Ein wichtiges Ziel bei der Überlegung, auf welche Weise man seinen Datenzugriff strukturieren möchte, ist die möglichst weitgehende Unabhängigkeit der Zugriffsmechanismen von anderen Teilen der Anwendung. Der Grund leuchtet sofort ein: da es so viele verschiedene Möglichkeiten des Zugriffs auf Daten gibt (JDBC, Hibernate, XML, . . . ), die natürlich auch unterschiedliche Vor- und Nachteile besitzen, die sich möglicherweise erst in einer späteren Phase der Entwicklung bemerkbar machen, möchte man in der Lage sein, die Technik später 1 DESCRIPTORS +PK_DESCRIPTORS DOC_DESC_CT +FK_DESCRIPTORS +FK_DOCUMENTS 0..* 0..* (docid = descid descid = desclang) «FK» 1 «PK» PK_DESCRIPTORS(INT, VARCHAR) +PK_DESCRIPTORS Abbildung 6.1.: Datenobjekte, relationale Sicht + + + «FK» FK_DOCUMENTS(INT) «PK» PK_DOC_DESC_CT(INT, INT, VARCHAR) «FK» FK_DESCRIPTORS(INT, INT) *pfK «Column» docid: INT *pfK «Column» descid: INT *PK «Column» desclang: VARCHAR(2) + 1 (parentDescId = descid parentDescLang = desclang) «FK» *PK «Column» descid: INT *PK «Column» desclang: VARCHAR(2) «Column» descname: varchar(64) +PK_DESCRIPTORS (childDescId = descid childDescLang = desclang) «FK» +FK_DESC_CHILD 0..* + + + (docid = docid) «FK» DOCUMENTS + 1 +PK_Collection «PK» PK_Collection(INT) +PK_Collection «FK» FK_TERM_SCHEMA_Collection(INT) «PK» PK_TERM_SCHEMA(INT) Collection STOPWORDS + + «FK» FK_STOPWORDS_Collection(INT) «PK» PK_STOPWORDS(VARCHAR, VARCHAR) *PK «Column» word: VARCHAR(32) *PK «Column» lang: VARCHAR(2) FK «column» collectionid: INT +FK_STOPWORDS_Collection 0..* «FK» FK_CLUSTER_Collection(INT) «PK» PK_DOC_CLUSTER(INT) *PK «Column» clusterid: INT «Column» clustername: varchar(128) «column» idx: INT «Column» indexterms: varchar(2048) FK «column» collectionid: INT (collectionid = collectionid) «FK» 1 1 DOC_CLUSTER +PK_DOC_CLUSTER + +FK_CLUSTER_Collection + *PK «column» collectionid: INT «column» COLLNAME: VARCHAR(80) (collectionid = collectionid) «FK» +FK_TERM_SCHEMA_Collection 0..* TERM_SCHEMA 0..* 0..* (clusterid = clusterid) «FK» +FK_CLUSTER «FK» FK_CLUSTER(INT) «FK» FK_DOCUMENTS(INT) «PK» PK_DOC_CLUSTER_CT(INT, INT) 0..* (collectionid = collectionid) (collectionid = collectionid) «FK» «FK» +PK_Collection 1 +PK_Collection 1 +FK_DOCUMENTS_Collection 1 0..* DOC_CLUSTER_CT *pfK «Column» docid: INT *pfK «Column» clusterid: INT «Column» probability: float(0) + + +FK_DOCUMENTS + (docid = docid) «FK» +PK_DOCUMENTS (subsetid = setid) «FK» 1 «PK» PK_SubSet(INT) +PK_SubSet «FK» FK_DOCUMENTS_Collection(INT) «FK» FK_DOCUMENTS_SubSet(INT) «PK» PK_DOCUMENTS(INT) *PK «column» termid: INT «column» idx: INT «column» termPart1: varchar(50) «column» termPart2: varchar(50) «column» termPart3: varchar(50) FK «column» collectionid: INT + + + +FK_DOCUMENTS_SubSet 0..* 1 SubSet *PK «column» setid: INT «column» SETNAME: VARCHAR(80) *PK «Column» docid: INT «Column» abstract: varchar(40000) «Column» abstract_lang: varchar(2) «Column» title: varchar(256) «column» idx: INT FK «column» collectionid: INT FK «column» subsetid: INT +PK_DOCUMENTS +FK_DESC_PARENT 0..* «FK» FK_DESC_CHILD(INT, VARCHAR) «PK» PK_DESC_RELATIONS(INT, VARCHAR, VARCHAR, INT) «FK» FK_DESC_PARENT(INT, VARCHAR) + + + DESC_RELATIONS «column» parentDescId: INT «column» parentDescLang: VARCHAR(2) «column» childDescLang: VARCHAR(2) «column» childDescId: INT *pfK *pfK *pfK *pfK 6.2. DATA ACCESS OBJECTS 72 73 6.2. DATA ACCESS OBJECTS db::DocumentsSubSet - name: String m_documents: Set<Document> setid: int + + + + + DocumentsSubSet() «property get» getName() : String «property set» setName(String) : void «property get» getSetid() : int «property set» setSetid(int) : void «property get» getDocuments() : Set<Document> «property set» setDocuments(Set<Document>) : void -subset db::Document Serializable - DEFAULT_LANGUAGE: String = Locale.ENGLISH.... abstractLang: String = DEFAULT_LANGUAGE abstractText: String assignments: List<Assignment> descriptors: List<Descriptor> docid: int idx: Integer title: String subset: DocumentsSubSet collection: DocumentCollection + + + + + + + + + + + + + + + + + + + descriptorIterator() : Iterator<String> «property get» getAbstractLang() : String «property get» getAbstractText() : String «property get» getAssignments() : List<Assignment> «property get» getDescriptors() : List<Descriptor> «property get» getDocid() : int «property get» getTitle() : String «property set» setAbstractLang(String) : void «property set» setAbstractText(String) : void «property set» setAssignments(List<Assignment>) : void «property set» setDescriptors(List<Descriptor>) : void «property set» setDocid(int) : void «property set» setTitle(String) : void «property get» getIdx() : Integer «property set» setIdx(Integer) : void «property get» getCollection() : DocumentCollection «property set» setCollection(DocumentCollection) : void «property get» getSubset() : DocumentsSubSet «property set» setSubset(DocumentsSubSet) : void db::AssignmentId # # serialVersionUID: long = 3545796602355855672L docid: int clusterid: int # # # # + + + «property get» getClusterid() : int «property set» setClusterid(int) : void «property get» getDocid() : int «property set» setDocid(int) : void equals(Object) : boolean hashCode() : int createFrom(Cluster, Document) : AssignmentId -id -document db::Assignment - cluster: Cluster document: Document id: AssignmentId probability: double + + + # + + + + + Assignment() «property get» getCluster() : Cluster «property get» getDocument() : Document «property get» getId() : AssignmentId «property get» getProbability() : double «property set» setCluster(Cluster) : void «property set» setDocument(Document) : void «property set» setId(AssignmentId) : void «property set» setProbability(double) : void Abbildung 6.2.: Datenobjekte, objektorientierte Sicht, Teil 1 6.2. DATA ACCESS OBJECTS 74 db::DocumentCollection - name: String documents: Set<Document> terms: Set<Term> stopwords: Set<Stopword> clusters: Set<Cluster> collectionid: int Term db::Term + + + + + + -collection + + + + + DocumentCollection() «property get» getName() : String «property set» setName(String) : void «property get» getDocuments() : Set<Document> «property set» setDocuments(Set<Document>) : void «property get» getCollectionid() : int «property set» setCollectionid(int) : void «property get» getStopwords() : Set<Stopword> «property set» setStopwords(Set<Stopword>) : void «property get» getTerms() : Set<Term> «property set» setTerms(Set<Term>) : void «property get» getClusters() : Set<Cluster> «property set» setClusters(Set<Cluster>) : void -collection -collection -collection - idx: int termid: int collection: DocumentCollection + + + + + + + + + + + + + + Term() Term(com.danielstephan.seacluster.Term) «property get» getIdx() : int «property get» getTermid() : int getTermPart1() : String getTermPart2() : String getTermPart3() : String «property set» setIdx(int) : void «property set» setTermid(int) : void setTermPart1(String) : void setTermPart2(String) : void setTermPart3(String) : void «property get» getCollection() : DocumentCollection «property set» setCollection(DocumentCollection) : void db::Cluster + + + + + + -cluster + + + + + + Serializable clusterid: int assignments: List<Assignment> collection: DocumentCollection name: String idx: int = -1 indexterms: String db::Stopword «property get» getIndexterms() : String «property set» setIndexterms(String) : void «property get» getIdx() : int «property set» setIdx(int) : void «property get» getClusterid() : int «property get» getName() : String «property set» setClusterid(int) : void «property set» setName(String) : void «property get» getAssignments() : List<Assignment> «property set» setAssignments(List<Assignment>) : void «property get» getCollection() : DocumentCollection «property set» setCollection(DocumentCollection) : void - serialVersionUID: long = 3256719593660822325L DEFAULT_LANGUAGE: String = Locale.ENGLISH.... id: Id = new Id() collection: DocumentCollection + + + + + + + + eq(String, String) : boolean hc(Object) : int getLang() : String getWord() : String setLang(String) : void setWord(String) : void «property get» getId() : Id «property set» setId(Id) : void «property get» getCollection() : DocumentCollection «property set» setCollection(DocumentCollection) : void db::Descriptor Serializable db::DescriptorId # # serialVersionUID: long = 3257571689536435251L id: int = -1 DEFAULT_LANGUAGE: String = Locale.ENGLISH.... lang: String = DEFAULT_LANGUAGE # # # # + + «property get» getId() : int «property set» setId(int) : void «property get» getLang() : String «property set» setLang(String) : void equals(Object) : boolean hashCode() : int #id # # # - documents: List<Document> id: DescriptorId = new DescriptorId() word: String parents: List<Descriptor> children: List<Descriptor> + + + + + + + # + + + + «property set» setId(DescriptorId) : void «property get» getDocuments() : List<Document> getLang() : String «property get» getWord() : String «property set» setDocuments(List<Document>) : void setLang(String) : void «property set» setWord(String) : void «property get» getId() : DescriptorId «property get» getChildren() : List<Descriptor> «property set» setChildren(List<Descriptor>) : void «property get» getParents() : List<Descriptor> «property set» setParents(List<Descriptor>) : void Abbildung 6.3.: Datenobjekte, objektorientierte Sicht, Teil 2 75 6.3. DATA ACCESS COMMANDS ändern zu können, ohne dass die gesamte Anwendung davon beeinträchtigt wird. Daher führt man eine Abstraktionsschicht ein, die den Datenzugriff von anderen Teilen der Anwendung abschottet. Diese Schicht besteht hier aus einer Reihe von Zugriffsobjekten. Jedes dieser Objekte bietet die Methoden an, die die Anwendung im Rahmen ihres Ablaufs benötigt, und implementiert sie - spezifisch für eine ausgewählte Technologie. Die hier verwendete Technologie wird durch Hibernate bereitgestellt (ein OpenSource Projekt, es handelt sich dabei um einen objektrelationalen Mapper, kurz ORM, der eine objektorientierte Schnittstelle für relationale Datenbanken bietet). Dies sei am Bespiel des DAOs für das Cluster Objekt dargestellt (in S. 76 und S. 77 zu sehen). Zentral für die Abstraktion ist die Trennung der Implementation (ClusterDaoImpl) von seiner Spezifikation (ClusterDao, erbend von Dao). Die Anwendung arbeitet ausschließlich mit der Schnittstelle ClusterDao. Die verwendete Implementation (in diesem Falle eben ClusterDaoImpl) lässt sich jedoch deklarativ (mit Hilfe einer XML-Datei für die Konfiguration des Systems) jederzeit ändern, ohne dass Anwendungscode davon betroffen ist. Das Basis-Interface Dao wurde eingeführt, nachdem klar wurde, dass viele Methoden in jedem DAO nötig werden würden. So sind diese Gemeinsamkeiten auch in der Struktur dokumentiert. Aus den selben Gründen wurde das Objekt DaoSupport eingeführt, das die Gemeinsamkeiten der verschiedenen DAOs für Hibernate implementiert. 6.3. Data Access Commands Während der Entwicklung hat sich herauskristallisiert, dass in den prinzipiell eher groben Zugriffsmethoden der DAOs zu oft ähnliche Abläufe kodiert waren und die Wiederverwendung dieser Abläufe damit eher schlecht war. Das führte dazu, dass Code in einem DAO weitgehend optimiert wurde, weil die Notwendigkeit dort akut war, während in einem anderen DAO ganz ähnlicher Code noch völlig unoptimiert vorlag. Die Code-Qualität war damit an einigen Stellen unnötigerweise niedriger als an anderen. Somit suchte der Autor nach Möglichkeiten, den Code mobiler“ und die ” Struktur der Datenzugriffsschicht feingranularer zu gestalten. Die Lösung erschien in Form des Command Patterns (siehe dazu auch [GHJV96]). Eigentlich ist das Command Pattern für die Entwicklung von Benutzerschnittstellen ent- 6.3. DATA ACCESS COMMANDS 76 Dao<Assignment> Dao<Cluster> «interface» db::AssignmentDao + «interface» db::ClusterDao + batchAssignment(List<Integer>, List<Integer>, List<Double>) : void getOrCreateById(int) : Cluster «inter db::Desc + + + + findDescriptorsForDocument(Do findSameDescriptors(Descriptor) store(Descriptor) : Descriptor setAsBeingEqualTo(Descriptor, DaoSupport<Assignment> DaoSupport<Cluste db::AssignmentDaoImpl db::ClusterDaoImpl - serialVersionUID: long = 3257001077261023284L - serialVersionUID: long = 3258416122973139766L + + + getEntityName() : String getEntityClass() : Class batchAssignment(List<Integer>, List<Integer>, List<Double>) : void + + + getEntityName() : String getEntityClass() : Class getOrCreateById(int) : Cluster Abbildung 6.4.: DAO Struktur, Teil 1 wickelt worden. Dort sind Aktionen der Benutzer als Commands modelliert, so dass jede Aktion von einem eigenen eigens dafür gestalteten Objekt behandelt wird. Dadurch sind auch hier Implementationen austausch- und beliebig oft, an verschiedenen Stellen, einsetzbar. Schließlich bieten Anwendungen oft mehrere Möglichkeiten an, um die selbe Aktion auszuführen - zum Beispiel sowohl über das Menü als auch über ein Icon. Durch das Command Pattern wird der Code mobil. Diese Eigenschaft wurde hier für Datenzugriffsmechanismen ausgenutzt. Für den Zweck wurde das Muster jedoch erweitert. Man kann in Abbildung 6.8 sehen, dass jedes Command Objekt eine execute() Methode mitbringen muss. Dies entspricht der Vorgabe des Command Patterns. Das AbstractCommand Objekt jedoch wurde bereits Hibernate- und Springframework-spezifisch erweitert. Die getSession() Methode erlaubt den Subklassen den Zugriff auf die Hibernate-Session und die execute(Command) Methode ermöglicht den Subklassen, wiederum andere Commands aufzurufen. Auf diese Weise können Commands sich gegenseitig ausführen und trotzdem jederzeit eine gültige Session 77 6.3. DATA ACCESS COMMANDS Iterable<T> Query<T> «interface» dao::Dao + + + + + + + + + + + + + iterator() : Iterator<T> getObjects() : List<T> objectsByExample(T) : List<T> iterate(IteratingCallback<T>) : void getById(Serializable) : T store(T) : T remove(T) : void removeAll() : void deleteByExample(T) : void getObjectsForCriteria(List<Criterion>) : List<T> getQueryWithName(String) : Query<T> getQuery() : Query<T> execute(Command<S>) : S «realize» T HibernateDaoSupport Serializable Dao<T> dao::DaoSupport Dao<Descriptor> rface» riptorDao ocument, String) : List<Descriptor> r) : List<Descriptor> Descriptor) : void - log: Log = LogFactory.getL... _entityName: String + + + + + + + + + + + + + + + + + + + + + getObjects() : List<T> getFirstObject() : T execute(Command<S>) : S getObjectsForCriteria(List<Criterion>) : List<T> iterate(IteratingCallback<T>) : void getById(Serializable) : T getEntityClass() : Class getEntityName() : String getIdentityName() : String iterator() : Iterator<T> removeById(Serializable) : void store(T) : T objectsByExample(T) : List<T> remove(T) : void removeAll() : void deleteByExample(T) : void getQueryWithName(String) : Query<T> getQuery() : Query<T> addCriterion(Criterion) : Query<T> create(Dao<S>) : Query<S> getDao() : Dao<T> Dao<D «interface» db::DocumentDao + + + updateIdx(Map<Integer, Integer>) : void readDocumentSchema() : Map<Integer, Integer> readDocumentSchema(Query<Document>) : Map<Integer, DaoSupport<Descriptor> DaoSupport<Document> db::DescriptorDaoImpl er> - serialVersionUID: long = 3616727175584233017L + + + + + + + findDescriptorsForDocument(Document, String) : List<Descriptor> findSameDescriptors(Descriptor) : List<Descriptor> generateId() : int setAsBeingEqualTo(Descriptor, Descriptor) : void store(Descriptor) : Descriptor getEntityName() : String getEntityClass() : Class db::DocumentDaoImpl - serialVersionUID: long = 4048795675800384562L log: Log = LogFactory.getL... + + + + getEntityClass() : Class readDocumentSchema() : Map<Integer, Integer> readDocumentSchema(Query<Document>) : Map<Integer, Integer> updateIdx(Map<Integer, Integer>) : void Abbildung 6.5.: DAO Struktur, Teil 2 6.3. DATA ACCESS COMMANDS 78 Dao<Stopword> «interface» db::StopwordDao Document> Integer> + + + + + + Dao<Term> getWordsAsStrings() : List<String> getAll() : List<Stopword> getWordsAsStringsForLanguage(String) : List<String> getAllForLanguage(String) : List<Stopword> store(Stopword) : Stopword iterator() : Iterator<Stopword> «interface» db::TermDao + + getSchema() : TermSchema store(TermSchema) : void DaoSupport<Stopword> DaoSupport<Term> db::StopwordDaoImpl - serialVersionUID: long = 3544389201736120633L + + + + + + + getWordsAsStrings() : List<String> getAll() : List<Stopword> getAllForLanguage(String) : List<Stopword> getWordsAsStringsForLanguage(String) : List<String> iterator() : Iterator<Stopword> store(Stopword) : Stopword getEntityClass() : Class db::TermDaoImpl - serialVersionUID: long = 3258415036430235700L + + + + getSchema() : TermSchema store(TermSchema) : void getEntityName() : String getEntityClass() : Class Abbildung 6.6.: DAO Struktur, Teil 3 voraussetzen. Der Vorgang ist in Abbildung 6.9 etwas vereinfacht dargestellt. Man muss bei der Betrachtung des Diagramms bedenken, dass die Methode execute() jeweils von den Commands spezifisch implementiert wird, während die Methode execute(Command) in AbstractCommand implementiert ist. Der Grund für die Trennung von execute() und execute(Command) liegt darin, dass Hibernate ein Session Objekt benötigt, welches vor der Transaktion geöffnet und nach der Transaktion geschlossen werden muss, und dass kein einzelner Command dieses tun soll, die Session somit transparent im Hintergrund verwaltet werden muss. Dennoch sollen die Commands eventuell Zugriff auf die Session haben (daher die Methode getSession() in AbstractCommand). Will man nun vermeiden, dass die Commands sich gegenseitig irgendwie die Sessions weiterreichen, muss dies im Hintergrund passieren - in diesem Falle geschieht dies in execute(Command) transparent. Der aufmerksame Leser wird beim Studium des Diagrammes in Abbildung 79 6.3. DATA ACCESS COMMANDS T AbstractCommand<T> dao::FetchTemplate FetchTemplate<Document> commands::FetchFromCollection - collectionName: String config: ProcessConfiguration + + + + + «property get» getConfig() : ProcessConfiguration «property set» setConfig(ProcessConfiguration) : void fetch() : void «property get» getCollectionName() : String «property set» setCollectionName(String) : void ~ - queue: BlockingQueue<T> filters: List<Filter<T>> + + + + + + ~ + - put(T) : boolean put(T, long, TimeUnit) : boolean put(List<T>) : boolean execute() : T fetch(FetchTemplate<T>) : void fetch() : void setBlockingQueue(BlockingQueue<T>) : void add(Filter<T>) : void applyFilters(T) : void FetchTemplate<Document> FetchTemplate<Document> commands::QueryForListOfIds commands::FetchWithIdFile - idFileName: String log: Log = LogFactory.getL... + + + + FetchWithIdFile() fetch() : void readIdsFromFile(String) : Set<Serializable> «property get» getIdFileName() : String «property set» setIdFileName(String) : void - log: Log = LogFactory.getL... idList: List<Serializable> batchSize: int = 30 + + + + + + QueryForListOfIds(List<Serializable>) QueryForListOfIds(String) QueryForListOfIds() fetch() : void readIdsFromFile(String) : List<Serializable> «property get» getIdList() : List<Serializable> «property set» setIdList(List<Serializable>) : void FetchTemplate<Document> commands::FetchRandomTemplate - log: Log = LogFactory.getL... collectionName: String config: ProcessConfiguration max: int = Integer.MAX_VALUE + + + + + + + + FetchRandomTemplate() fetch() : void «property get» getCollectionName() : String «property set» setCollectionName(String) : void «property get» getConfig() : ProcessConfiguration «property set» setConfig(ProcessConfiguration) : void getMaxResults() : int setMaxResults(int) : void Abbildung 6.7.: Data Access Commands, Teil 1 6.3. DATA ACCESS COMMANDS 80 «interface» command::Command + execute() : T AbstractCommand<Object> commands::BatchAssign «realize» T Command<T> HibernateCallback - documentIds: List<Integer> clusterIds: List<Integer> probabilities: List<Double> + + BatchAssign(List<Integer>, List<Integer>, List<Double>) execute() : Object command:: AbstractCommand - session: Session + + + «property get» getSession() : Session execute(Command<S>) : S doInHibernate(Session) : Object T AbstractCommand<T> command::FetchObject AbstractCommand<Assignment> - criteria: List<Criterion> persistentClass: Class + + + + FetchObject(List<Criterion>, Class) FetchObject(Class) execute() : T addCriterion(Criterion) : FetchObject<T> commands::FetchAssignment ~ ~ d: Document c: Cluster + + FetchAssignment(Document, Cluster) execute() : Assignment AbstractCommand<Integer> commands::StoreTermSchema ~getAssignmentCommand ~ schema: TermSchema + + StoreTermSchema(TermSchema) execute() : Integer AbstractCommand<Object> commands::Initialize AbstractCommand<Object> commands::AssignDocumentToCluster ~ ~ ~ ~ log: Log = LogFactory.getL... d: Document c: Cluster p: double getAssignmentCommand: FetchAssignment + + + + getFetchAssignmentCommand() : FetchAssignment setFetchAssignmentCommand(FetchAssignment) : void AssignDocumentToCluster(Document, Cluster, double) execute() : Object ~ ~ ~ log: Log = LogFactory.getL... obj: Object prop: String pd: PropertyDescriptor + + Initialize(Object, String) execute() : Object S AbstractCommand<List<S>> command::Fetch ~ log: Log = LogFactory.getL... entityClass: Class + + DeleteAllObjects(Class) execute() : Integer criteria: List<Criterion> persistentClass: Class + + + + Fetch(Class) Fetch(List<Criterion>, Class) execute() : List<S> addCriterion(Criterion) : Fetch<S> S AbstractCommand<Integer> command::DeleteAllObjects - AbstractCommand<List<S>> command::FetchAll - persistantClass: Class + + FetchAll(Class) execute() : List<S> Abbildung 6.8.: Data Access Commands, Teil 2 81 6.3. DATA ACCESS COMMANDS «interface» :Dao Clustering Logic BatchAssign(documentIds,clusterIds,probabilities) batchAssign :BatchAssign execute(batchAssign) execute() AssignDocumentToCluster(document,cluster,probability) assignDoc :AssignDocumentToCluster S:= execute(assignDoc) execute() FetchAssignment(document,cluster) fetchAssignment :FetchAssignment assignment:= execute(fetchAssignment) execute() assignment Abbildung 6.9.: Beispiel: BatchAssign Command 6.8 festgestellt haben, dass AbstractCommand zusätzlich HibernateCallback implementiert. Zur Erklärung: Dies ist die Schnittstelle zum Springframework, und beinhaltet die Methode doInHibernate(Session). Das Springframework und seine Schnittstellen sind in [JH04] beschrieben. Das besprochene Session Management wird zusammen mit der Transaktionsverwaltung vom Springframework transparent durchgeführt. 6.3. DATA ACCESS COMMANDS 82 7. Dynamisches Modell Ohne im Klassenmodell zu stark in die Tiefe zu gehen, soll hier der Ablauf dargelegt werden. Ziel dieses Kapitels soll es sein zu zeigen, welche Komponenten welche Algorithmen ausführen. Die nun folgenden Abschnitte sind entsprechend des Ablaufes vom Rohdokument bis hin zum fertig benannten Cluster sortiert. 7.1. Stoppworte finden Zunächst wird die Textmenge einmal auf der Suche nach Stoppworten durchlaufen. Dabei werden alle Begriffe so gezählt, dass ein Begriff pro Dokument nur einmal gezählt wird. Denn es ist hier vor allem interessant, in wievielen Dokumenten die Begriffe jeweils vorkommen. Wie oft sie in den Dokumenten vorkommen ist nicht relevant. Abbildung 7.1 zeigt die erzielte Wortverteilung im Reuters Korpus. Die Begriffe wurden nach ihrer Häufigkeit sortiert, so dass eine Kurve sichtbar wird. Man kann sehen, dass die allergrößte Menge an Begriffen sehr selten vorkommt. Man kann auch sehen, dass ein paar wenige Begriffe extrem häufig vorkommen, in anderen Worten sieht man die Kurve nach langer Flaute sehr stark hochschnellen, so dass kaum noch eine Kurve zu erkennen ist, sondern das Gebilde eher nach einem leeren Graph mit etwas Schmutz in der rechten unteren Ecke aussieht. (Übrigens: Der am häufigsten auftretende Begriff ist hier the“.) ” Diese Form der Kurve ließ sich für eine einfache Abschätzung von Stoppworten nutzen. Zunächst markiert der Algorithmus alle Worte als Stoppwort, die nur ein oder zwei Mal auftreten, da diese offenbar keine Aussagekraft in Bezug auf die Gemeinsamkeiten von Dokumenten besitzen, die im späteren Clustering relevant werden. Dann, um auch die häufigsten Worte als Stoppwort zu deklarieren, wird die Steigung der Kurve ermittelt. Zusammen mit einem definierbaren Schwellenwert (ein Wert von 2.0 erschien nach einigen Experimenten als sinnvoll) lassen sich dann alle Worte, die rechts von dem durch den Schwellenwert gekennzeichnetet Begriff liegen, als Stoppwort deklarieren. Um kurzfristige Aus- 7.2. TERM-DOKUMENT-MATRIX ERSTELLEN 84 160000 140000 120000 Häufigkeit 100000 80000 60000 40000 20000 0 1 1392 2783 4174 5565 6956 8347 9738 11129 12520 13911 15302 16693 18084 19475 20866 22257 23648 25039 26430 27821 Term Nr Abbildung 7.1.: Wort Häufigkeiten reißer zu ignorieren und somit nicht zu früh einzuschreiten, werden jeweils drei Steigungswerte gemittelt. Sodann hat man eine Liste von Stoppworten, die in der Datenbank abgelegt werden. 7.2. Term-Dokument-Matrix erstellen Die später zu clusternden Texte werden zunächst vorbereitet. Die verfügbaren Daten bestehen bekanntlich aus den Liste von Deskriptoren und Sachgebieten und freien Begriffen, sowie aus den Kurzreferaten, die zu jedem Dokument verfasst werden. Während die Listen bereits in der gewünschten Form vorliegen, so dass jeweils ein Begriff ein Feature darstellt, muss der Text erst in seine Bestandteile aufgebrochen werden. Dies funktioniert folgendermaßen, dass jedes Dokument einzeln zunächst durch einen Lexer läuft, der anhand der Interpunktionszeichen im Text selbigen in einzelne Token aufteilt. Der Lexer ist in der Lage, E-Mails und WWW Adressen zu erkennen und als eigenständige Token zu behandeln. Die Token laufen danach durch einen SentenceDetector. Dies ist ein Objekt, welches Beginn und Ende von Sätzen anhand einer einfachen Abschätzung (die zwar oft zutrifft, aber manchmal irrt) zu erkennen vermag. Derzeit wer- 85 7.2. TERM-DOKUMENT-MATRIX ERSTELLEN Dokumente einlesen start nächstes Dokument verarbeiten Dokument analysieren Token erkennen Satzgrenzen erkennen Wortgruppen erkennen auf Wortstämme reduzieren StoppWorte entfernen Abbildung 7.2.: Ablauf Text Analyse Term-Frequenz-Matrix aufbauen mittels TF-IDFinterpretiert. Damit werden den schlicht beliebigeRoh-Matrix Satzzeichen als Satzgrenzen LSI anwenden anlegen gewichten auch Nebensätze zu eigenständigen Sätzen, ebenso wie eingeklammerte Sätze oder Wörter. Die Erkennung dieser Sätze oder Teilsätze ist lediglich für die Phrasen-Erkennung nötig, denn Wortfolgen mit Satzzeichen dazwischen werden generell nicht als Kandidaten für Phrasen angenommen. Dieser Detector Cluster erkennen erzeugt Sentence Objekte, die als Container für die Token des jeweiligen Satzes fungieren. Danach Dokument Vektoren aus den LSI Ergebnissen wiederum werden selektierenalle Sentence Objekte durchlaufen und auf wie- derkehrende Wortgruppen überprüft. Kommen in einem Dokument bestimmte EM Clustering Worte Wortgruppe ein Objekt Phrase DONE häufiger zusammen vor, wird für diese anwenden angelegt, welches ebenso wie das Sentence Objekt als Container für die der Wortgruppe zugehörigen Worte gilt. Um zu erkennen, ob Worte mehrfach in Cluster benennen der gleichen Folge auftreten, werden Suffix-Arrays (ursprünglich beschrieben von [MM90], ähnlich verwendet von [ZD04]) für die Dokumente aufgebaut. Ein Suffix ist eine Zeichenfolge, mit der ein Text endet. Beispielsweise wären ati- 7.2. TERM-DOKUMENT-MATRIX ERSTELLEN 86 on ebenso wie ion Suffixe des Wortes Information. Somit gibt es für das Wort Information genau elf unterschiedliche Suffixe, eins für jeden Buchstaben. Wie von Zhang et al. dargestellt, werden zwei Suffix-Arrays benötigt - eines normal von links nach rechts (Information, nformation, formation, . . . ), und eines genau umgekehrt von rechts nach links (Information, Informatio, Informati, . . . ; dieses könnte wohl passender Prefix-Array genannt werden). Beide Arrays werden sortiert (das Suffix-Array normal und das Prefix-Array umgekehrt von rechts nach links), so dass die mehrfachen Vorkommen gleicher Wortfolgen in der durch die Sortierung hergestellten Ordnung direkt nacheinander stehen und somit leicht erkannt werden. Der PhraseDetector und der SentenceDetector sind jeweils Producer. Ein Producer erzeugt Objekte, in diesen Fällen eben Phrase oder SentencesAndPhrases Objekte. Die verschiedenen Producer sind zusammen mit dem Tokenizer in Reihe geschaltet. Dieser steht am Anfang der Kette und bildet die Schnittstelle zum Lexer. Er ermöglicht es, über die erkannten Token eines Dokumentes zu iterieren und implementiert dazu die Iterator und Iterable Interfaces. Diese gehören zum Standardumfang der Java-Klassenbibliothek und stellen somit die übliche Art und Weise dar, wie in Java über Datenmengen iteriert wird. Der SentenceProducer nutzt den Tokenizer, um über die Token zu iterieren, und erzeugt eine Reihe von Sentence Objekten. Der PhraseDetector, nach Tokenizer und SentenceDetector das Dritte Objekt in der Kette, ruft die Sentences vom SentenceDetector ab, indem er dessen produce() Methode mehrfach aufruft. Nach diesem Vorgang werden die gesammelten Token mit dem SnowballStemmer1 auf ihre Stammform zurückgeführt. Dadurch werden beispielsweise die ähnlichen Worte laufen“ und läuft“ auf die gleiche Buchstabenfolge re” ” duziert, so dass sie in der später aufgebauten Tabelle dieselbe Stelle besetzen. Dieses ist ein übliches Vorgehen bei solchen und ähnlichen Textklassifizierungsaufgaben. Damit die ursprünglichen Begriffe nicht verloren gehen, wird ein Verzeichnis angelegt, das für jedes gestemte“ Wort die dazugehörigen ursprüngli” chen Begriffe enthält. Dieses wird später für die Benennung wichtig. Danach wiederum werden die Token mit einer Liste von Stoppworten (siehe Abschnitt 7.1) verglichen. Alle Token, die in dieser Liste wiedergefunden werden, werden an dieser Stelle fallen gelassen und tauchen somit in späteren 1 WWW Adresse: http://snowball.tartarus.org Wortgruppen erkennen auf Wortstämme reduzieren StoppWorte entfernen 87 7.3. MATRIX BERECHNUNGEN Term-Frequenz-Matrix aufbauen Roh-Matrix anlegen mittels TF-IDF gewichten LSI anwenden Abbildung 7.3.: Cluster Ablauf Matrix Berechnung erkennen Dokument Vektoren aus den LSI Ergebnissen selektieren Analysen nicht auf. Es bleiben also für das jeweilige betrachtete Dokument eine Menge von Token EM Clustering übrig, sowie möglicherweise die ein oder andere Phrase. Sowohl Token als auch anwenden DONE Phrase nehmen die Stelle von Features ein, wie sie in Abschnitt 5.3 (Seite 56), eingeführt wurden. Token und Phrasen werden nun gleich behandelt und eins Cluster benennen nach dem anderen in eine Matrix einsortiert, die dynamisch wächst. Bei jedem neuen Feature (Token oder Phrase) wird eine Zeile hinzugefügt, während bei jedem neuen Dokument eine neue Spalte hinzugefügt wird. War ein Feature für das jeweilige Dokument bereits in der Matrix registriert, wird nur dessen Zähler um eins erhöht. Auf diese Weise enthält die Matrix nach dem Durchlauf des Algorithmus alle Häufigkeiten des Auftretens der jeweiligen Features in den jeweiligen Dokumenten. 7.3. Matrix Berechnungen Der letzte Schritt des vorherigen Abschnittes, also das Sammeln und zählen der Terme und Phrasen eines Dokumentes, geht nahtlos in den ersten Schritt dieses Abschnittes über. Alle Terme werden direkt in eine dynamisch wachsende zweidimensionale Matrix einsortiert, so dass die Werte in den Zellen jeweils die Häufigkeit des Auftretens eines bestimmten Terms in einem bestimmten Dokument darstellen. Hier muss man bedenken, dass die Matrix generell extrem spärlich besetzt ist. Der größte Teil der Zellen beinhaltet den Wert 0. Das leuchtet ein, wenn man sich vor Augen führt, dass für jeden möglichen Term eine Zeile in der Matrix existieren muss, ebenso wie für jedes mögliche Dokument eine eigene Spalte vorhanden sein muss und dass jedes Dokument nur aus kurzen Zusammenfassungen besteht. Dadurch werden nur eine vergleichsweise geringe Menge an unterschiedichen Begriffen in den jeweiligen Dokumenten verwendet. Es ist zum 7.3. MATRIX BERECHNUNGEN 88 Beispiel nicht ungewöhnlich, 10.000 verschiedene Begriffe verwalten zu müssen, während in den einzelnen Texten vielleicht nur jeweils 100 Worte vorkommen, von denen sich sogar einige wiederholen. 9.900 Zellen wären bei dieser Annahme auf 0, und das pro Dokument. Rechnet man die Dokumente des ISL (>80.000) auf die zu erwartende Größe der Matrix um, so bekommt man bei 20.000 Begriffen und 80.000 Dokumenten, sowie 8 Bytes pro Zelle (es werden double Werte gespeichert, um die Häufigkeitswerte mit double Gewichten multiplizieren zu können, so dass das Ergebnis eine gewisse Genauigkeit behält) eine Datenmenge von 12.800.000.000 Bytes. Diese Zahl sollte Motivation genug sein, die Größe zu beschränken. Die Matrix wird deshalb in einer Baumstruktur abgelegt, die der von Javas TreeMap entspricht. (Dessen Source wurde kopiert und leicht angepasst, sie wurde auf die Datentypen long als Schlüssel und double als Wert beschränkt und optimiert.) Die TreeMap verwendet einen sogenannten Rot-Schwarz-Baum, dessen Laufzeitcharakteristik für die wesentlichen Operationen O(log(n)) entspricht. Sie legt die Daten so unter Schlüsselwerten ab, dass sie nach deren natürlicher Ordnung sortiert sind. Der Schlüssel repräsentiert die Koordinate der Matrix, dessen Werte gespeichert werden sollen. Er wird aus Zeilenindex + X * Spaltenindex berechnet und ist somit bis zu einer Menge von X Dokumenten eindeutig bestimmt (die Dokumente entsprechen den Spalten). Das X darf mit dem maximalen Spaltenindex multipliziert nicht über den Wertebereich von long hinaus. Also muss X auf jeden Fall ein positiver Integer sein. Das dürfte jedoch kaum eine echte Einschränkung darstellen, schließlich ergibt das eine maximale Spalten und Zeilenzahl von jeweils 2 hoch 31. Nachdem diese Matrix fertig aufgebaut ist, wird sie durchlaufen und die verzeichneten Werte jeweils mit Gewichten (TF-IDF, siehe Abschnitt 5.3.3 (Seite 59)) multipliziert. Danach wiederum wird sie im Harwell-Boeing Format [DGL89] auf Platte abgelegt, denn die integrierte LSI-Komponente GTP2 benötigt eine Datei in diesem Format als Eingabe. GTP liest daraufhin die Matrix ein und führt einen SVD Algorithmus aus, der drei Matrizen ergibt, die wie in Abschnitt 5.3.4 (Seite 62) beschrieben zusammen die Ursprungsmatrix approximieren. Die Ergebnisse schreibt GTP wiederum in eine Datei, die nun umgekehrt wieder eingelesen werden muss. Die Ergebnisse landen in einem dafür erstellten Objekt namens SvdResult, dieses Objekt implementiert die nötigen Funktionen, wie Begriffe 2 WWW Adresse: http://www.cs.utk.edu/∼lsi/ Term-Frequenz-Matrix aufbauen Roh-Matrix anlegen 89 mittels TF-IDF gewichten LSI anwenden 7.4. CLUSTER ANALYSE Cluster erkennen Dokument Vektoren aus den LSI Ergebnissen selektieren EM Clustering anwenden DONE Cluster benennen Abbildung 7.4.: Ablauf Cluster Analyse untereinander verglichen werden, Dokumente untereinander verglichen werden und wie neue Dokumente in den Vektor-Raum eingefaltet“ werden, damit sie ” vergleichbar sind. Die Formeln dazu stehen in Abschnitt 5.3.4. 7.4. Cluster Analyse Aus den Ergebnissen werden die Dokumentvektoren extrahiert und an den Clustering Algorithmus übergeben. Danach werden Namen vergeben. Für die Algorithmen, die im Zusammenhang mit dem Clustering nötig waren, wurde das Strategy-Pattern ([GHJV96]) verwendet. Jeder wichtige Algorithmus, sei es für die Zuweisung von Dokumenten zu Clustern (ClusterAssignmentStrategy) oder für das Durchführen des Clustering Algorithmus (ClusterStrategy) wird mit einer Schnittstelle ausgestattet, die ihn von dem Code, der ihn benutzt, entkoppelt. Dadurch ist es möglich, die verwendete Implementation flexibel auszutauschen. Im Diagramm sind beispielsweise zwei ClusterStrategy-Implementationen aufgeführt. Welche davon zur Anwendung kommt, entscheidet sich sobald der ClusterContext erzeugt und mit einer spezifischen Implementation initialisiert wurde. Die EMClusterStrategy Klasse implementiert der Einfachheit halber gleich zwei Schnittstellen und verhält sich als ihr eigenes Ergebnis-Objekt. Durch diese Aufteilung der Schnittstellen ist es möglich, dass der Algorithmus nach der Arbeit ein anderes Objekt erzeugt und dieses als Ergebnis zurückliefert. Es mag, je nach Arbeitsweise des Algorithmus, sinnvoll sein, dies zu tun. In diesem Falle ging es auch so und auf eine Extra-Klasse für die Ergebnisse konnte verzichtet 7.5. CLUSTER BENENNUNG UND MATRIZEN 90 werden. 7.5. Cluster Benennung und Matrizen Zur Benennung der Cluster werden die LSI-Ergebnisse verwendet. Diese finden sich im Code in Form eines SvdResult-Objekts wieder. Man sieht in Abbildung 7.6, dass das SvdResult Objekt Zugriff auf die Term- und Dokument-Matrizen bietet, so wie sie vom LSI Code erzeugt worden waren. Man sieht auf dem Diagramm leider nicht den Verweis auf die DiagonalMatrix Klasse. Daber handelt es sich um eine optimierte Subklasse von Matrix, die ausschließlich Werte auf der Diagonalen hält und zudem ihre Methoden auf die Besonderheiten von diagonalen Matrizen hin optimiert hat, und die hiermit immerhin erwähnt wurde. Um die Benennungen zu finden, wird zunächst aus den Dokumenten, die zu dem jeweiligen Cluster gehören, ein Pseudo-Dokument-Vektor erstellt. Dieses ist der Cluster-Zentroid. Er errechnet sich als einfacher Mittelwert-Vektor. Daraufhin werden zu diesem Pseudo-Vektor die Terme gesucht, die ihm am Ähnlichsten sind. Dazu werden die Methoden (es gibt mehrere, daher Mehrzahl) computeTermDocumentAssociation von SvdResult verwendet. Der erzeugte Cluster befindet sich bereits im SVD-Raum und kann direkt anstatt eines Dokument-Vektors verwendet werden. Im Diagramm ist die Klasse SparseMatrix zu sehen. Diese ist hier der Vollständigkeit halber aufgeführt, denn sie wird nur für das Ausführen des LSIAlgorithmus benötigt. Dieser nimmt die Matrix nur in einem solchen Format entgegen. Daher wird die Matrix vor dem LSI-Durchlauf erst in eine solche SparseMatrix-Implementation gewandelt. 91 7.5. CLUSTER BENENNUNG UND MATRIZEN cluster::ClusterAssignmentStrategy + + + ClusterAssignmentStrategy() assign(double) : ArrayList<Integer> toArray(ArrayList<Integer>) : int[] +m_ClusterAssignmentStrategy cluster::ClusterContext cluster::AssignByThreshold + + + + AssignByThreshold() AssignByThreshold(double) assign(double) : ArrayList<Integer> maxIndex(double) : int + + + DEFAULT_ARFF_FILE_NAME: String = "clusterInput.arff" m_ClusterStrategy: ClusterStrategy m_ClusterAssignmentStrategy: ClusterAssignmentStrategy + + + + + ClusterContext() ClusterContext(ClusterStrategy, ClusterAssignmentStrategy) cluster(Matrix) : ClusteringResult assign(ClusteringResult, int) : int assign(double) : ArrayList<Integer> +m_ClusterStrategy «interface» cluster::ClusteringResult cluster::ClusterStrategy + + + + + ClusterStrategy() findClusterProbabilityDistribution(Reader) : ClusteringResult probabilityDistributionForInstance(Instance) : double[] numberOfInstances() : int instanceAtIndex(int) : Instance InitializingBean cluster::KMeansStrategy cluster::EMClusterStrategy + + + + + findClusterProbabilityDistribution(Reader) : ClusteringResult probabilityDistributionForInstance(Instance) : double[] numberOfInstances() : int instanceAtIndex(int) : Instance afterPropertiesSet() : void + + + + + KMeansStrategy() findClusterProbabilityDistribution(Reader) : ClusteringResult probabilityDistributionForInstance(Instance) : double[] numberOfInstances() : int instanceAtIndex(int) : Instance -wekaInstances analysis:: Instances + Instances() Abbildung 7.5.: Klassendiagramm Cluster Algorithmen 7.5. CLUSTER BENENNUNG UND MATRIZEN «interface» maths::IMatrix + + + + + + + + + + + 92 maths::AbstractMatrix set(int, int, double) : void get(int, int) : double getRowDimension() : int getColumnDimension() : int getRowDescriptors() : List getColumnDescriptors() : List setRowDescriptors(List) : void setColumnDescriptors(List) : void getColumnVector(int) : IMatrix getMaximumValue() : double getMinimumValue() : double + ~ + + + + + + resetMaxMinValues() : void computeMaximalValues(IMatrix) : double[] computeFrobeniusNormal() : double normalize() : void normalizeColumns() : void normalizeRows() : void lengthOfColumn(int) : double lengthOfRowVector(int) : double maths::SparseMatrix + + + + # + + + + + + + + + + + + + createFrom(IMatrix) : SparseMatrix createFrom(IndexedSparseMatrix) : SparseMatrix createFrom(Matrix) : SparseMatrix findNumberOfNonZeroValues(IMatrix) : int SparseMatrix() getNumberOfValues() : long getValues() : double[] getRowIndizes() : long[] getColumnPointer() : long[] SparseMatrix(long, long, long, long, long, double) get(int, int) : double getColumnDimension() : int getRowDimension() : int set(int, int, double) : void toDenseMatrix() : Matrix toGtpGeneralObject() : General getColumnVector(int) : IMatrix equals(Object) : boolean maths::SvdResult maths::Matrix ~ ~ columnDescriptors: List rowDescriptors: List + + + + + + + + + + + + + + + + + + ~ + + + + + + + + + + + + + + + + + + + + + stringWithMinLengthOf(int, String) : String Matrix(double, int) Matrix(double) Matrix(double, int, int) Matrix(int, int) Matrix(int, int, double) Matrix(Jama.Matrix) copy() : Matrix get(int, int) : double set(int, int, double) : void times(Matrix) : Matrix createFromTransposedVector(double) : Matrix createFromVector(double) : Matrix createMatrixFromColumns(int) : Matrix times(DiagonalMatrix) : Matrix solveTranspose(Matrix) : Matrix transpose() : Matrix solve(Matrix) : Matrix getArray() : double[] getColumnPackedCopy() : double[] getColumnVectorArray(int) : double[] getMeanVector(int) : Matrix getSumVector(int) : Matrix getColumnVector(int) : IMatrix toIndexedSparseMatrix() : IndexedSparseMatrix inverse() : Matrix toJamaMatrix() : Jama.Matrix getRowDimension() : int getColumnDimension() : int singularValueDecomposition() : SvdResult toString() : String equals(Object) : boolean equals(IMatrix, IMatrix) : boolean normalize() : void normalizeColumns() : void normalizeRows() : void lengthOfColumn(int) : double lengthOfRowVector(int) : double computeFrobeniusNormal() : double computeOverallSimilarity() : double -sv +v + + + u: Matrix v: Matrix s: DiagonalMatrix + + + + + + + + + + + + + + + + + + + + + + + + + + + + SvdResult(Matrix, DiagonalMatrix, Matrix) SvdResult(Matrix, double, Matrix) SvdResult() dimension() : int get(int, int) : double set(int, int, double) : void getRowDimension() : int getColumnDimension() : int getRowDescriptors() : List getColumnDescriptors() : List setRowDescriptors(List) : void setColumnDescriptors(List) : void rank() : int rowSpaceCompare(int, int) : double columnSpaceCompare(int, int) : double columnSpaceCompare(int, Matrix) : double computeTermDocumentAssociation(int, double) : Double getRootOfS() : double[] computeTermDocumentAssociations(Matrix) : Map<Integer, Double> computeTermDocumentAssociations(int) : Map<Integer, Double> projectVectorInColumnSpace(double) : double[] projectVectorInColumnSpace(Matrix) : Matrix projectVectorInRowSpace(Matrix) : Matrix getColumnVector(int) : IMatrix getSTimesV() : Matrix equals(Object) : boolean getMaximumValue() : double getMinimumValue() : double +u +svdResult cluster::ClusterNamingContext + m_ClusterNamingStrategy: ClusterNamingStrategy + + + ClusterNamingContext(ClusterNamingStrategy) nameClusters() : void nameClusters(Fetch<Cluster>) : void +m_ClusterNamingStrategy cluster::ClusterNamingStrategy + nameCluster(ClusterNamingContext, Cluster) : void strategies::NearestTermsNamingStrategy + nameCluster(ClusterNamingContext, Cluster) : void Abbildung 7.6.: Klassendiagramm für Matrizen und SVD Ergebnisse 8. Verwendung des Programms 8.1. Installation Für die Anwendung existiert ein Installationsprogramm, welches die nötigen Verzeichnisse anlegt. Dieses liegt in Form eines ausführbaren JAR Archives vor, welches unter Windows üblicherweise schlicht mittels Doppelklick gestartet werden kann. Sollte das nicht funktionieren, so ist es auf der Konsole mittels java -jar seacluster-install.jar ausführbar. Dabei ist natürlich zu beachten, dass die java Anwendung im Pfad zugreifbar sein muss. Nachdem es in dem gewählten Verzeichnis installiert wurde, muss es auf die zu verwendende Datenank eingestellt werden. Im Installationsverzeichnis liegt eine .sql Datei, die das erwartete Datenmodell in SQL beinhaltet. Sofern sich die Datenbank nach dem SQL92 Standard richtet, sollte dieses direkt problemlos in der Datenbank ausgeführt werden können und dort die nötigen Tabellen anlegen. Eventuell muss es jedoch auf die Datenbank zugeschnitten werden, dies sollte vorher evaluiert werden. Ist die Datenbank mit den Tabellen versorgt, müssen die JDBC-Einstellungen in der seacluster.properties Datei hinterlegt werden. Diese Datei befindet sich ebenfalls im angelegten Installationsverzeichnis. Alle mit EDITME gekennzeichneten Einstellungen müssen gesetzt werden. Dabei sind keine Gänsefüßchen oder Klammern zu verwenden. Siehe auch Abschnitt 8.3. Der JDBC Treiber für die verwendete Datenbank liegt üblicherweise als JAR vor und muss nur in das lib Verzeichnis kopiert werden. Für FrontBase und PostgreSQL liegen bereits aktuelle JDBC Treiber vor. Nun gilt es, die DOCUMENTS Tabelle in der Datenbank mit Daten zu füllen. Hier existiert kein allgemeingültiger Prozess, dies ist schließlich sehr stark von den lokalen Gegebenheiten abhängig. Die Software-Architektur sieht Import-Dienste vor, die jedoch speziell entwickelt werden müssen. Es existiert ein Import-Dienst für das Datenformat des Reuters Textkorpus (siehe auch Abschnitt 9.1.1 (Seite 101)). Dieser wird, falls Bedarf besteht, 8.2. BENUTZEROBERFLÄCHE 94 Abbildung 8.1.: Bildschirmfoto des Cluster Browsers über einen Flag auf der Kommando-Zeile gestartet. Zunächst müssen die SGML Dateien des Korpus in ein Verzeichnis namens reuters-import kopiert werden. Dann kann SeaCLUSTER folgendermaßen gestartet werden: java -Dservice.importService.load -jar start.jar. Daraufhin werden die Dateien im import Verzeichnis eingelesen, geparst und in die Datenbank geschrieben. Andere Korpora, die im gleichen Format vorliegen, mögen ebenso eingelesen werden können. Für Quellen in anderen Formaten muss ein spezieller Import-Dienst entwickelt werden. Dies ist jedoch nicht sehr aufwendig. Nun kann SeaCLUSTER durch einen Doppelklick auf start.jar oder die Eingabe von java -jar start.jar auf der Kommandozeile gestartet werden. 8.2. Benutzeroberfläche Die GUI beinhaltet zunächst nur ein Menü, aus welchem der Clustering Prozess gestartet werden kann. Wählt man den Cluster Browser () aus, öffnen sich mehrere nebeneinanderliegende Listen und ein Textfeld, in denen jeweils die Daten angezeigt werden. Die Art der Navigation wurde durch den File Viewer des legendären Betriebssystems NEXTSTEP inspiriert, der sich ebenfalls durch nebeneinander angeordnete Listen auszeichnete und keinerlei Baumdarstellung, wie sie in modernen Systemen üblich ist, kannte. 8.2. BENUTZEROBERFLÄCHE 95 Abbildung 8.2.: Bildschirmfoto des Menüs Wählt man einen Cluster in der linken Liste aus, werden die Dokumente in der rechts danebenliegenden Liste angezeigt. Wählt man dort wiederum ein Dokument aus, wird dessen Inhalt im Textfeld daneben angezeigt. Zusätzlich wird wiederum daneben und nun ganz rechts eine Liste mit den Begriffen gefüllt, die laut LSI eine starke Zugehörigkeit zu dem jeweiligen Dokument aufweisen (sortiert nach Zugehörigkeit). Die Statuszeile zeigt einen Wert, der den Zusammenhang des Clusters repräsentiert und die Qualität des jeweiligen Clusters rechnerisch beweisen können soll. Je höher der Wert, desto ähnlicher sind sich die im Cluster befindlichen Dokumente. Abbildung 8.2 zeigt die Möglichkeiten. Der Gesamtprozess des Clusterings wurde in drei Teilschritte aufgeteilt. compute stopwords analysiert den Datenbestand auf Stoppworte und speichert diese in der Datenbank ab. prep analysiert den Datenbestand erneut, nur wird nun der oben besprochene komplette Analyse-Prozess durchgeführt, an dessen Ende der SVD-Algorithmus der LSIKomponente steht. run wiederum führt die eigentliche Clusteranalyse durch, indem es wie angesprochen den EM-Algorithmus des WEKA-Toolkits ausführt. Da der Zustand des Systems nach jedem Schritt vollständig auf Festplatte und in die Datenbank gesichert wird, kann die Anwendung zwischen den Vorgängen geschlossen und neu gestartet werden. Ebenso lässt sich z.B. der Clustering Algorithmus mit verschiedenen Parametern (Zahl der Cluster) mehrfach aufrufen, um die optimale Zahl experimentell zu ermitteln. Der Punkt run complete führt prep und run in direkter Folge aus. Dies ist eine Vereinfachung, da beide Vorgänge eine Weile dauern können und der Nutzer so nicht auf das Ende des ersten Vorgangs warten muss. <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE bean PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> 8.3. KONFIGURATION 96 <bean name="DocumentProducer" class="com.danielstephan.seacluster.tasks.DocumentProducer" destroy-method="interrupt" singleton="false"> <property name="fetchTemplate"> <bean class="com.danielstephan.seacluster.db.commands.FetchRandomTemplate"> <property name="maxResults"> <value>${strategy.documents.number}</value> </property> </bean> <!-- <bean class="com.danielstephan.seacluster.db.commands.FetchWithIdFile"> <property name="idFileName"> <value>${strategy.idListFileName}</value> </property> </bean> --> </property> <property name="dao"> <ref bean="DocumentDao"/> </property> </bean> Abbildung 8.3.: Ausschnitt der Komponentenkonfiguration 8.3. Konfiguration In Abbildung 8.3 wird exemplarisch die Konfiguration einer Komponente gezeigt. Das Format wird vom Spring Framework1 vorgegeben, welches die Komponenten zur Laufzeit mit den jeweiligen Werten versieht und sie wie vorgegeben initialisiert. Es handelt sich dabei um ein auf XML basierendes Format. Der Vorteil, solch eine Konfiguration zu verwenden, liegt in der einfachen nachträglichen Austauschbarkeit zentraler Komponenten. Dargestellt ist in diesem Beispiel die DocumentProducer-Komponente. Diese liest die Dokument-Daten aus der Datenquelle (der Datenbank) ein und legt sie in einer FIFO-Liste (First In, First Out) ab, aus der sich die weiteren (konsumierenden) Komponenten bedienen können. Der DocumentProducer delegiert das eigentliche laden der Dokumente jedoch an eine weitere Komponente, in diesem Falle an das FetchRandomTemplate. Diese Komponente lädt eine bestimmte Anzahl von Objekten in zufälliger Reihenfolge aus der Datenbank. Es ist somit zu erwarten, dass bei jedem Durchlauf andere Objekte aus dem Fundus geladen werden. Man sieht auch, dass die Anzahl an Dokumenten durch eine Variable strategy.documents.number definiert wird. Diese Variable wird aus einer .properties Datei (dies ist ein Standardformat der Java-Plattform für Konfigurationsdateien) eingelesen, die entweder im home“-Verzeichnis des Nutzers oder im aktuellen Arbeitsverzeichnis ” unter dem Namen seacluster.properties erwartet wird. Die Annahme, die für diese Zweiteilung spricht, ist die, dass die Konfigurationsdatei, die durch die 1 WWW Adresse: http://www.springframework.org 97 8.3. KONFIGURATION vielen Komponenten des Systems nur schwer überschaubar ist, selten geändert werden muss, wohingegen die viel übersichtlichere Properties-Datei all jene Werte beinhaltet, die oft angepasst werden. Im Zuge der Entwicklung war es (beispielsweise für die Fehlersuche) notwendig, vergleichbare Ergebnisse zu bekommen. Das ist nun nicht möglich, wenn bei jedem Durchlauf eine zufällige Dokumentenmenge produziert wird. Aus diesem Grund wurde die Komponente FetchWithIdFile entwickelt, deren Konfiguration in Abbildung 8.3 auskommentiert zu sehen ist. Diese erwartet eine Liste von IDs in einer Textdatei und lädt nur die Dokumente, die dort angegeben wurden, in genau der in der Datei vorliegenden Reihenfolge. Um die Anwendung benutzerfreundlicher zu gestalten, wäre es sicherlich anzuraten, für die Konfiguration jeweils Dialoge zu gestalten, die die Änderungen der jeweiligen Datei(en) einfach ermöglicht. Darauf wurde jedoch zunächst verzichtet. db.jdbc.url Die JDBC URL für die Identifikation der Datenbank. Ist abhängig von der jeweiligen verwendeten Datenbank. Beispiel für FrontBase: jdbc:FrontBase://local/seacluster db.jdbc.user Benutzername für die Datenbank db.jdbc.pass Passwort für die Datenbank db.jdbc.driver Klassenname des JDBC Treibers für die verwendete Datenbank. Beispiel für FrontBase: com.frontbase.jdbc.FBJDriver db.hibernate.batchsize Dies kann zur Optimierung der Datenbankzugriffe verwendet werden. Hibernate versucht, bei Bedarf mehrere Objekte in einem Rutsch aus der Datenbank zu lesen. Die Voreinstellung ist 50. db.hibernate.dialect Hibernate besitzt für die meisten Datenbanken optimierte Strategien. Welche Strategie verwendet werden soll, entscheidet sich hier. Beispiel für FrontBase: org.hibernate.dialect.FrontBaseDialect strategy.analysis.refreshTermSchema true, falls die für die Klassifizierung zu verwendeten Terme neu ermittelt werden sollen (Voreinstellung). false sonst. strategy.cluster.number Anzahl zu errechnender Cluster. 8.3. KONFIGURATION 98 strategy.cluster.discretize true, falls die Werte vor dem Clustering in diskrete Klassen eingeteilt werden sollen. false sonst (Voreinstellung). strategy.cluster.shift true, falls die Wertebereiche so verschoben werden sollen, dass der größte positive Wert und der kleinste negative Wert den selben Abstand von 0 besitzen, dass also 0 genau in der Mitte des Wertebereichs liegt. false sonst (Voreinstellung). strategy.cluster.normalize true, falls der Wertebereich gestaucht oder geschrumpft werden soll, so dass er sich innerhalb des Intervalls zwischen -1 und +1 befindet und diesen so gut wie möglich ausfüllt (Voreinstellung). false sonst. strategy.documents.number Anzahl zugrundegelegter Dokumente. -1 bedeutet alle Dokumente“. FetchWithIdFile jedoch ignoriert diese Einstel” lung. strategy.idListFileName Beinhaltet den Dateinamen der Datei, die DokumentIDs zur Verwendung beinhaltet. Wird nur von FetchWithIdFile verwendet. strategy.stopwords.threshold Legt die Steigung der Kurve in Abbildung 7.1 (Seite 84) fest, ab der Worte als Stoppwort einsortiert werden. 2.0 ist Voreinstellung. strategy.stopwords.includefile Legt den Dateinamen der Datei fest, aus der das System solche Begriffe entnimmt, die auf jeden Fall ein Stoppwort sein sollen. strategy.stopwords.excludefile Legt den Dateinamen der Datei fest, aus der das System solche Begriffe entnimmt, die auf keinen Fall ein Stoppwort werden sollen. Hat im Zweifel vor includefile Vorrang. Teil IV. Abschluss 9. Ergebnisse und Fazit 9.1. Technische Perspektive 9.1.1. Testdaten Um die Algorithmen testen zu können, wurde der in der Forschung oft verwendete und frei zugängliche Textkorpus Reuters-21578“ verwendet. Dieser wurde ” 1990 veröffentlicht und besteht aus einer Reihe von Nachrichtentexten, die 1987 im Reuters Nachrichtendienst erschienen sind. Er wird derzeit von David D. Lewis verwaltet und online für Forschungszwecke angeboten, vgl. [Lew96]. Der Korpus besteht aus einer Menge von 21.578 kurzen Texten. Manche beinhalten nicht mehr als drei Sätze, andere entsprechen vom Umfang her einer Schreibmaschinenseite. Die Themen der Texte sind in den Bereichen Wirtschaft und Politik angesiedelt. 9.1.2. Laufzeit Man muss feststellen, dass Clustering mit dem EM-Algorithmus nicht sehr schnell ist. Soviel vorweg. Es wurde zudem bereits im Kapitel Abschnitt 7.3 (Seite 87) angesprochen, dass die Matrix bei großen Datenmengen extrem groß werden kann, so dass die Algorithmen, wie sie hier beschrieben wurden, gar nicht mehr funktionieren. Im Falle des ISL sind die Mengen noch klein genug (unkomprimiert gegen 12GB, komprimiert wenige hundert MB), aber ein Ende ist definitiv in Sicht. Große Datenmengen sind natürlich auch in Bezug auf die Laufzeit ein Problem. Der EM-Algorithmus hat eine exponentielle Laufzeitcharakteristik, so dass die Laufzeit mit wachsender Menge an Daten immer stärker wächst. Dies zeigt sich auch an den gesammelten Statistiken. In Tabelle 9.1 und Tabelle 9.2 seien zwei Laufzeitprotokolle gegenübergestellt. An den beiden Tabellen wird deutlich, dass die Clustering-Zeit deutlich schneller wächst als alle anderen Faktoren. Während sich die Menge an Dokumenten 9.1. TECHNISCHE PERSPEKTIVE 102 Abschnitt Laufzeit Parsing 60 Sek. LSI 7 Sek. Clustering 87 Sek. Zuweisungen in DB sichern 48 Sek. Cluster benennen 12 Sek. Anzahl Features 1837 Terme Tabelle 9.1.: Laufzeit bei 521 Dokumenten Abschnitt Laufzeit Parsing 182 Sek. LSI 13 Sek. Clustering 806 Sek. Zuweisungen in DB sichern 152 Sek. Cluster benennen 37 Sek. Anzahl Features 3709 Terme Tabelle 9.2.: Laufzeit bei 1684 Dokumenten etwa verdreifacht hat, hat sich die Clustering-Zeit in diesem Beispiel verzehnfacht. Es fällt auf, dass der LSI-Algorithmus im Gegensatz dazu sehr gut skaliert. Zur Ehrenrettung des EM-Algorithmus sollte man jedoch erwähnen, dass die verwendete Implementation aus dem WEKA-Toolkit nicht speziell auf die Laufzeit hin optimiert wurde. Es ließe sich dort sicherlich noch etwas verbessern. 9.1.3. Qualität Dies ist ein Sorgenkind. Trotzdem der EM-Algorithmus komplexere Strukturen erkennen kann, als andere, einfachere Varianten, ist es durchaus nicht leicht, ein passendes, sinnvolles Clustering zu erreichen. Die Anzahl an Clustern ist bereits ein Faktor. Diese muss im Falle des EM-Algorithmus zu Beginn feststehen und hat große Auswirkungen auf das Ergebnis. Wieviele sinnvolle Gruppen lassen sich aus einer Dokumentenmenge erzeugen, und was ist überhaupt eine sinnvolle Gruppe? Die Fragen sind bereits für den Fachmann schwer zu beantworten, und ein Clustering Algorithmus beantwortet sie auf seine Weise automatisch, trifft aber nicht immer den Nagel auf den Kopf. 103 9.1. TECHNISCHE PERSPEKTIVE Da die automatisch erzeugten Cluster rein statistisch begründet sind, fällt es mitunter schwer, nachzuvollziehen warum nun eine bestimmte Menge an Dokumenten zusammengruppiert wurde. Das ist immer dann der Fall, wenn Eigenschaften bzw. Begriffe zum Clustern herangezogen wurden, die wenig inhaltliche Aussagekraft haben. Um also qualitativ hochwertige, sinnvolle Cluster erzeugt zu bekommen, ist es von Nöten, die Begriffe manuell zu überprüfen und all diese als Stoppwort zu deklarieren, die generell wenig über den Inhalt der Texte aussagen. Um dies zu belegen, seien nun einige Beispiele dargestellt, die jeweils in ein und demselben Cluster zusammegefasst wurden. Das erste Beispiel zeigt den Beginn eines Textes, der offenbar vom leicht gefallenen Dollarkurs handelt und dass sich die Händler wegen der unklaren Situation zurückgehalten haben. The dollar opened slightly lower in quiet trading, with dealers holding back ” ahead of the outcome of this week’s top-level international monetary talks in Washington. The dollar began here at 1.5128/5138 Swiss francs, down from the previous 1.5185/5195 close and the 1.5180/5190 francs in New York. However, dealers were sceptical that anything other than a mere reaffirmation of February’s Paris Accord was likely to emerge from Washington.“ Der nächste Absatz dagegen spricht von Schweinen. Deren Marktpreis sei gestiegen. Hog prices are expected steady to 0.50 dlr higher on estimated receipts of ” 2,000 head, private sources said. Top seen at 51.00 to 51.50 dlrs per cwt. Sources said the market closed stronger late yesterday and was expected to carry over into today’s session. Farmers are getting in the fields here,& they said. Also, ” little if any country movement was expected, they added.“ Im selben Cluster befanden sich noch Texte, die über den Börsenwert beispielsweise eines Unternehmens im Markt der Kaffee-Röster berichteten. Die Begriffe, die der Algorithmus als besonders zentral für diese Gruppierung erachtet hatte, waren higher“, openly“, lowers“ und Dealers“. (Diese Begriffe ” ” ” ” werden für jeden Cluster automatisch auf der Basis der durch SVD hergestellten Matrizen errechnet und als Bennungsvorschlag angeboten.) Man sieht daran, dass die Veränderung von Preisen der relevante Aspekt für diese Gruppierung war. In Bezug auf die Qualität der Cluster muss hier beachtet werden, ob dieser Cluster, bzw. der Aspekt der ihm zugrundeliegt, auch dem Ziel entspricht, das man mit dem Clustering ursprünglich verfolgt hat. Möglicherweise wäre es hier interessanter, die Dokumente nach den Objekten zu gruppieren (also alles über 9.1. TECHNISCHE PERSPEKTIVE 104 Schweine gegen alles über den Dollar als Objekt, z.B.). Würde man nun die Begriffe lowers“ und higher“ als Stoppwort deklarieren, ” ” dann würde der Algorithmus diesen Aspekt nicht mehr sehen und die Cluster anders zusammensetzen. Dass die sich neu ergebende Struktur wirklich besser ist, bleibt jedoch im Einzelfall zu prüfen. Der Prozess läuft vollautomatisch ab und kann durch Stoppworte und der vorgegebenen Anzahl von Clustern nur begrenzt beeinflusst werden. Dies ist sowohl seine Stärke wie auch seine Schwäche. Stärke, weil er wenige manuelle Eingriffe erfordert. Bei großen Datenmengen ist es schließlich nicht mehr praktikabel, die Cluster manuell anzulegen, weil es zuviel Aufwand erfordert. Schwäche, weil er kaum manuelle Eingriffe ermöglicht und somit das Ziel einer perfekten Clusterstruktur verfehlen kann. Es bleibt ein Trade-Off. Nach all der Kritik soll aber nicht verschwiegen werden, dass mit einer mittleren Anzahl von Clustern und einer automatisch definierten Menge an Stoppworten auch eine ganze Reihe von subjektiv sinnvollen Clustern erzeugt werden konnten. 9.1.4. Ausblick Was lässt sich noch verbessern? Es ließe sich ein Algorithmus implementieren, der besser skaliert. Bradley et al. schlagen in ihrem Paper [BFR99] einen optimierten Ablauf vor, der mit deutlich weniger Hauptspeicher auskommt, da er blockweise arbeitet und daher immer nur einen bestimmten Block im Speicher halten muss. Es würde im Sinne der Skalierbarkeit sicherlich helfen, wenn der Algorithmus auf mehreren Rechnern verteilt ablaufen könnte. Das gleiche gilt für die LSI-Implementation, mit dem Unterschied, dass es tatsächlich schon online verfügbar ist, nur nicht in Java. Die parallele LSI-Implementation nennt sich PGTP und ist ebenso wie die normale GTP Variante auf www.cs.utk.edu/ lsi1 in der Software-Rubrik zu finden. Es gibt zudem Stimmen, die den EM-Algorithmus für den Zweck, Texte zu clustern, nicht als optimal erachten. Breunig et al. [BKKS01] beispielsweise schlagen eine alternative Methode vor, die sogenannte Data Bubbles“ zusam” men mit dem OPTICS Algorithmus [ABKS99] verwendet, um auf effizientere Art und Weise zu einer Clusterstruktur zu gelangen, die hierarchisch sortiert ist. Dieses Verfahren ist speziell darauf ausgelegt, auch bei großen Datenmen1 WWW Adresse: http://www.cs.utk.edu/∼lsi 105 9.1. TECHNISCHE PERSPEKTIVE gen noch gut genug zu funktionieren. Ein (qualitativer) Vergleich mit dem EMAlgorithmus wäre für die Zukunft interessant. Ferner: Um die verwendeten Begriffe exakter spezifizieren zu können, wäre es denkbar, ein begriffliches Netz wie das WordNet [Mil95] zu integrieren. Damit könnten thematisch ähnliche Begriffe automatisch vor dem Clustering auf den selben Term reduziert werden. Die Hoffnung dabei ist natürlich, dass dadurch ein qualitativ hochwertigeres Ergebnis entsteht. Zuletzt sei die Anmerkung erlaubt, dass die aktuelle Entwicklung im Internet von den traditionellen Klassifikationsmechanismen weggeht. Hierzu sei [Shi05] als Lektüre genannt. Shirky erklärt hier sehr schön, welche Probleme bei festen Klassifikationssysteme mit einem fest definierten Thesaurus auftreten. Er nennt aber auch Eigenschaften, die für ein solches festes Klassifikationssystem sprechen: • Geringer Umfang des Dokumentkorpus • Formelle Kategorien • Stabile Konzepte • Eingeschränkte Konzepte • Klare Domänengrenze • Katalogisierer ist Experte im Fachgebiet • Autoritative Quelle • Bestimmte Nutzergruppe • Nutzer sind Experten bzgl. der Kategorisierung Einige dieser Eigenschaften treffen für das ISL tatsächlich zu. Beispielsweise ist der Umfang und die betrachtete Domäne begrenzt (verglichen mit den Datenmengen, die Google oder Yahoo verwalten). Die Domänengrenzen ändern sich so gut wie nie, denn das ISL hat sich auf Seeverkehrswirtschaft und Logikistik spezialisiert. Die Klassifikation wird von Fachleuten des ISL verfasst und befindet sich in einer wohldefinierten, hierarchischen Struktur und kann somit als formell bezeichnet werden. Das ISL fungiert als autoritative Oberaufsicht auf die Klassifikation. 9.2. FACHLICHE PERSPEKTIVE 106 Die Nutzer sind jedoch nicht fest bestimmt, es hat eine unbestimmte Menge an Nutzern weltweit Zugriff auf das System. Es gab somit auch keine expliziten Schulungen bezüglich der Klassifikation. Man kann nicht von Expertentum auf Seiten der Nutzer ausgehen. Die meisten Faktoren sind im Falle des ISL zwar für eine feste Klassifikation ausgerichtet, die unbestimmte und ungeschulte Nutzergruppe ist aber ein wichtiger Faktor, der dagegen spräche. Hier sind noch weitere Forschungen sinnvoll. 9.2. Fachliche Perspektive 9.2.1. Potentiale Angenommen, es wurden einige sinnvolle Cluster in der Datenbank angelegt. Welche Möglichkeiten eröffnet das eigentlich? Sei nun angenommen, dass Nutzer zu wenige Ergebnisse zu ihren Suchanfragen bekommen. In diesem Falle könnte man dem entgegen wirken, in dem man die Ergebnisliste durch jene Dokumente anreichert, die in den gleichen Clustern wie die Dokumente der ursprünglichen Ergebnisliste verzeichnet sind. Zusammen mit einem sinnvollen Ranking kann diese Erweiterung der Ergebnismenge das Such-Erlebnis verbessern. Gibt es im Gegensatz dazu eher zu viele Ergebnisse, so können zusätzlich, wie in Abbildung 4.5 (Seite 44) dargestellt, die Cluster daneben aufgelistet werden. So kann der Suchende die Ergebnisse auf eine beliebige Gruppe ähnlicher Dokumente einschränken. Er sieht so mindestens sofort, welche Cluster wahrscheinlich nicht interessant sind, und kann sich auf die verbliebenen interessanten Cluster konzentrieren. Es gibt ihm auch einen Hinweis darauf, welche Daten im System vorhanden sind, so dass er beim zweiten Versuch eine gezieltere Anfrage formulieren kann. Hat der Nutzer bereits ein relevantes Dokument gefunden, so kann das System ihm durch den Verweis zu dem Cluster, dem das Dokument angehört, den direkten Zugang zu anderen (hoffentlich) ebenso relevanten Dokumenten bieten. Auch diese Variante wurde bereits angesprochen, siehe Abbildung 4.6 (Seite 45). Sofern zusätzlich zum Such-Formular ein Verzeichnis mit hierarchischen Kategorien angelegt werden soll, so ließe sich ein automatisch durchgeführtes Clustering als Roh-Form verwenden und die Grundlage für das Verzeichnis bilden. Die Fachleute des ISL würden sicherlich einige Cluster zusammenfassen, sowie 107 9.2. FACHLICHE PERSPEKTIVE andere auflösen und dessen Dokumente per Hand anderweitig zuweisen, aber dies wäre sicherlich nicht bei jedem Cluster nötig - viele wären bereits automatisch richtig zusammengestellt und müssten nur noch in die richtige Kategorie einsortiert werden. Es wäre also eine Arbeitserleichterung für das Erstellen eines Verzeichnisses. Als letzte Nutzungsmöglichkeit soll das sogenannte Scatter/Gather-Vorgehen angesprochen werden. Dies besteht letztendlich daraus, dass sich der Nutzer schrittweise seinem Ziel annähert und bei jedem Schritt neue Cluster angelegt werden, aus denen der Nutzer einige auswählt. Diese Auswahl wird dann wieder neu geclustert. Siehe dazu auch [HP96]. 9.2.2. Ausblick An dieser Stelle möchte der Autor über den Tellerrand hinausschauen und aktuelle Ereignisse im Online Publishing ansprechen, die nicht direkt mit Clustering Techniken verknüpft sind, die im Zusammenhang mit zukünftigen Strategien für Online-Publishing jedoch beachtet werden sollten. Vertrieb Das Clustering selber hat in erster Linie Auswirkungen auf die Suche und kann wie angesprochen das Such-Ergebnis und -Erlebnis unabhängig vom gewählten Geschäftsmodell verbessern (erhöht somit den Wert des Angebots). An dieser Stelle soll kurz dargestellt werden, wie der Autor die Möglichkeiten des ISL im Zusammenhang mit dem Darbieten und Verkaufen von Informationen sieht. Die bisherigen hier betrachteten Angebote des ISL bestehen aus dem OnlineZugriff auf die Seabase Literaturdatenbank sowie aus den über den Online-Shop vertriebenen Publikationen wie das Jahrbuch, siehe auch Abschnitt 2.1 (Seite 9). Was kann das ISL also tun, um neue Kunden zu gewinnen? Es ist noch zu ermitteln, ob und inwieweit es sinnvoll ist, die Granularität des Angebots zu verkleinern und die großen Publikationen in einzelne Reviews oder auch einzelne Pakete aktueller Statistiken aufzubrechen. Diese könnten dann jeweils einzeln zum kostenpflichtigen Download angeboten werden. Dies sollte geschehen, sobald das Review geschrieben wurde oder sobald die Statistiken vollständig vorliegen, um einen Zeitvorteil gegenüber der großen Publikation zu erwirken. Schließlich ist jede der großen Publikationen beim Erscheinen schon mindestens 9.2. FACHLICHE PERSPEKTIVE 108 einen halben Monat alt. Als Vorbild und Inspiration für diesen Vorschlag gilt SpringerLink2 , siehe auch Abschnitt 3.3.2 (Seite 26). Der Springer-Verlag verkauft seine Publikationen dort nicht nur komplett, sondern hält für den (gut) zahlenden Kunden auch einzelne Artikel bereit. Außerdem ist der Zugriff auf die Seabase Datenbank in eine kostenlose und eine kostenpflichtige Zugangsart aufteilbar. Der kostenlose Zugang kann sich auf einige wenige Suchmittel (insbesondere keine Cluster) und auf eingeschränkte Ergebnisdetails beschränken. Auf diese Weise können Interessenten einen Einblick in das Angebot bekommen und - ähnlich wie bei der ACM, beschrieben in Abschnitt 3.3.3 (Seite 27) - für eine professionelle Nutzung der Datenbank auf eine kostenpflichtige Variante des Systems zurückgreifen. Blogging Es mag sich zudem zukünftig auszahlen, das derzeit aufkommende Publishingmodell der sogenannten Weblogs, kurz Blogs, zu beobachten und es auf seine wirtschaftlichen Potentiale hin zu überprüfen. Dieses Modell ließe sich beispielsweise als Ersatz oder Erweiterung von Newslettern einsetzen. Blogs zeichnen sich durch ihre Aktualität aus und werden oft täglich erweitert. Sie referenzieren sich häufig gegenseitig mit Hilfe sogenannter Permalinks“. Ein solcher Link ” verweist direkt auf einen spezifischen Artikel eines Blogs. Besonders sind hier weniger die Inhalte oder die Eigenschaft der Verlinkung selber, die Besonderheit ist die standardisierte Technik. Der Aufwand, ein solches Weblog anzubieten, ist dadurch sehr stark reduziert worden. Es ist nicht einmal mehr die Kenntnis der Beschreibungssprache HTML notwendig. Dadurch ist eine besondere Dynamik entstanden. Etwas Hintergrund über die typischen Inhalte von Blogs zeigt [BI04] auf, während der Artikel von Rebecca Blood in CACM [Blo04] eine sehr lesenswerte generelle Einführung in die Thematik gibt. Auch Nardi et al. [NSG04] geben eine ausführliche Charakterisierung des Blogging-Phänomens. Sie konzentrieren sich stärker darauf, welche Motivationen dahinterstehen, ein Blog zu führen. Es gibt noch wenig Hintergründe dazu, in welcher Form Blogs ihren Platz in der wirtschaftlich motivierten Strategie von Unternehmen einnehmen können. Aber das mag sich ändern. Gut geschriebene Blogs mit interessanten Inhalten ziehen Leser an und können nach der Meinung des Autors dieser Arbeit auch als Werbung für den Anbieter verstanden werden, sowie als Kommunikations2 WWW Adresse: http://www.springerlink.com 109 9.2. FACHLICHE PERSPEKTIVE kanal des Unternehmens zu seinen Kunden dienen. Die noch unbewiesene These des Autors lautet, dass ein Blog die Aufmerksamkeit der Nutzer auf das Unternehmen und seine Dienstleistungen lenken kann. Es bleibt noch offen, ob und wie sich weitere Erlöse mit diesem Modell generieren lassen. Aktuell werden die meisten Blogs von Privatpersonen ohne wirtschaftliche Hintergedanken verfasst. Andere stammen von Verlagen, die ihre Informationsangebote durch Blogs anreichern, wie zum Beispiel blog.computerwoche.de3 und hiermit derzeit Erfahrungen sammeln. Auch die Tagesschau hat inzwischen ein Blog, siehe blog.tagesschau.de4 . In diesem Umfeld erscheinen in den letzten Wochen und Monaten zusätzlich Audio-Blogs, auch Podcasts genannt. Diese erlauben dem Nutzer, die Beiträge mit einem MP3-Player wie dem iPod von Apple5 beispielweise im Zug oder im Auto nebenbei zu hören. Diese Technik erfreut sich immer größerer Beliebtheit. Schließlich hat man hier, in Zug und Auto, oft sehr viel Zeit, die auf diese Weise leicht gefüllt werden kann. Mit anderen Worten: hier haben Nutzer ein Zeitfenster, das noch nicht so vollständig mit Aktivitäten ausgefüllt ist. Nach Ansicht des Autors sind Nutzer in dieser Zeit eher dazu bereit, aus persönlichem Interesse heraus etwas anzuhören. Es gibt hierzu noch keine fundierten Forschungen, es ist ein brandneues Phänomen. Als Einstieg für weitere Informationen sei hier Adam Curry’s Weblog auf www.curry.com6 genannt. Noch brandaktueller sind sogenannte Videologs, kurz Vlogs. Diese erweitern den Blog-Gedanken um Audio und Video. Wie mögliche Modelle in diesem Bereich aussehen können, muss die Zukunft erst noch zeigen. Es gibt jedoch bereits eine steigende Anzahl von mobilen Geräten, die in der Lage sind, Filme (z.B. Nachrichtensendungen, Schulungsunterlagen oder Dokumentationen zu speziellen Themen) in hoher Qualität wiederzugeben. Dazu wird in Kürze wahrscheinlich auch der iPod gehören, und das obwohl Apple die letzten Jahre wiederholt betont hatte, dass Video für den iPod keine Rolle spielen würde. Die Playstation Portable7 von Sony ist bereits in der Lage, Filme abzuspielen, andere Hersteller wie Archos haben ebenfalls geeignete Produkte im Portfolio, die dann ohne den Spielcharakter der Playstation auskommen und ein professionelleres Image haben. In welcher Form sich ein Vlog in eine Firmenstrategie 3 WWW WWW 5 WWW 6 WWW 7 WWW 4 Adresse: Adresse: Adresse: Adresse: Adresse: http://blog.computerwoche.de http://blog.tagesschau.de http://www.apple.com/de/ipod http://www.curry.com http://www.yourpsp.com 9.3. FAZIT 110 einbinden lässt, werden zukünftige Forschungen zeigen müssen. Der Autor ist der Ansicht, dass das ISL diese neuartigen Technologien zwar nicht sofort bedenkenlos einsetzen, aber sie dennoch beobachten sollte. Die technologischen Voraussetzungen für einen Podcast oder ein Blog sind gering, die nötige Software ist in den meisten Fällen kostenlos zu beziehen, der Einsatz ist nach einer kurzen Einarbeitungszeit unkompliziert. 9.3. Fazit Diese Diplomarbeit hat die technischen und fachlichen Implikationen eines Clustering Ansatzes für ein Online Informationssystem wie das des ISL betrachtet. Dabei wurde klar, dass der Ansatz schlecht skaliert. Hoher Hauptspeicherbedarf und Laufzeit verlangen generell nach leistungsfähiger Hardware. Die exponentielle Laufzeitcharakteristik des hier verwendeten Clustering Algorithmus begrenzt die sinnvolle Menge an analysierten Dokumenten auf ca. 20.000. Fachlich wurde angesprochen, dass Clustering den Suchenden eine bessere Übersicht über die Struktur der im Bestand befindlichen Dokumente ermöglicht. Zudem wurde vorgeschlagen, eine automatisch erzeugte Cluster-Struktur als Basis für ein darauf aufbauendes manuell verwaltetes Verzeichnis zu verwenden. Zuletzt gab es noch den Hinweis, Blogs hinsichtlich der zukünftigen PublishingStrategie des ISL zu beobachten. Hier mögen sich moderne und wenig aufwändige Möglichkeiten in Bezug auf die technische Umsetzung auftun, um aktuelle Inhalte darzubieten. Glossar API Abkürzung für Application Programming Interface. Dabei handelt es sich um eine Programmierschnittstelle, die eine Reihe von Funktionen oder Klassen umfasst, mit deren Hilfe auf Daten oder Funktionalitäten des jeweiligen Systems zugegriffen werden kann. Siehe auch 8 . Faust 5 Softwaresystem zur Erfassung von Literaturdaten, Hersteller ist Landwehr Software GmbH. Lastenheft Das Lastenheft umschreibt die fachlichen Anforderungen des Auftraggebers umfassend. Dabei geht es technisch jedoch nicht ins Detail. Die Norm DIN 69905 formuliert, es umfasse die Gesamtheit der Anforderungen des Auftraggebers an die Lieferungen und Leistungen eines Auftragnehmers. Kernaussage ist das Was im Gegensatz zum Wie. web-basiert Auf WWW-Techniken basierende Benutzerschnittstelle habend. Web-basierte Software wird somit in erster Linie mit dem Browser bedient. relationale Datenbank Weit verbreiteter Datenbanktypus. Dem liegt der Gedanke zugrunde, dass die zu speichernden Daten in Tabellen abgelegt und über spezielle Schlüssel in Relation gesetzt werden. Siehe auch de.wikipedia.org/ wiki/Relationale Datenbank9 MySQL Eine in kleineren Projekten wegen ihrer Einfachheit und ihrer Schnelligkeit sehr beliebte Open Source Datenbanksoftware (DBMS), die immer dann gerne zum Einsatz kommt, wenn die keine für das Unternehmen kritischen Daten gespeichert werden. PostgreSQL Eine weitere Open Source Datenbanksoftware, die nach eigenen Angaben mehr Funktionen als MySQL hat und besser mit komplexen Da8 9 WWW Adresse: http://de.wikipedia.org/wiki/Application Programming Interface WWW Adresse: http://de.wikipedia.org/wiki/Relationale Datenbank 112 tenmodellen umgehen kann. Sie positioniert sich ausdrücklich als Datenbank für kritische Daten wegen der besseren Implementation von Transaktionssicherheit. Workflow Ein Workflow ist ein Prozess (alternativ Geschäftsvorfall oder allgemein Vorgang), der aus einzelnen Aktivitäten aufgebaut ist, die sich auf Teile eines Geschäftsprozesses oder andere organisatorische Vorgänge beziehen. Quelle: de.wikipedia.org/wiki/Workflow10 Speziell auf dieses Projekt bezogen ist ein Workflow bzw. Vorgang ein in sich geschlossenes Objekt, welches alle Aktionen, die in Bezug auf ein bestimmtes Dokument durchgeführt werden, zusammenfassend darstellt. Content Management System Ein CMS ist eine Software zur Verwaltung von beliebigen Inhalten. Häufig (so auch hier) wird der Begriff inzwischen synonym für WCMS (Web Content Management System) genutzt. Dieses konzentriert sich auf die Verwaltung der Inhalte von Websites. Siehe auch de.wikipedia.org/wiki/Cms11 Thesaurus Bei einem Thesaurus handelt es sich um eine Sammlung von Begriffen. Das Wort stammt aus dem Lateinischen und bedeutet dort soviel wie Schatz. Anders als ein Wörterbuch beschreibt ein Thesaurus auch die Beziehung der Wörter untereinander. Der Thesaurus des ISL zum Beispiel erlaubt hierarchische Beziehungen und erlaubt mehrere Oberbegriffe. Inbox Mit Inbox ist in Bezug auf die Email-Kommunikation der Posteingang gemeint. Allgemein ist die Inbox ein Container, in dem alle neuen Nachrichten gelistet werden. Jeder Nutzer des Systems bekommt Zugriff auf eine solche Inbox, so dass er oder sie auch ohne Email am System teilnehmen kann. Token Als Token bezeichnet man im Zusammenhang mit Parsern zusammengehörige Zeichenketten, die als solche für die Syntax der analysierten Sprache eine Bedeutung haben. Lexer Lexer ist eine Kurzform des Begiffs Lexikalischer Scanner. Dieser wird häufig als Vorstufe eines Parsers verwendet. Der Scanner nutzt einfache 10 11 WWW Adresse: http://de.wikipedia.org/wiki/Workflow#Workflow WWW Adresse: http://de.wikipedia.org/wiki/Cms 113 Zeichensetzungsregeln, um einen Text in Token einzuteilen. Welche Token extrahiert werden oder was überhaupt als Token gilt, hängt von der Syntax der Eingabe ab, die daher vorher definiert worden sein muss. Use-Case Der Begriff Use-Case“ ist oftmals gleichzusetzen mit dem im deut” schen Sprachgebrauch eher geläufigen Begriff Geschäftsprozess“ oder auch ” Geschäftsvorfall“. Der Begriff ist in Zusammenhang mit der formellen vi” suellen Darstellungssprache UML aufgekommen. 114 Literaturverzeichnis [ABKS99] Ankerst, Mihael ; Breunig, Markus M. ; Kriegel, Hans-Peter ; Sander, Jörg: OPTICS: ordering points to identify the clustering structure. In: SIGMOD ’99: Proceedings of the 1999 ACM SIGMOD international conference on Management of data. New York, NY, USA : ACM Press, 1999. – ISBN 1–58113–084–8, S. 49–60 [Bal98] Balzert, Helmut: Lehrbuch der Softwaretechnik - Software-Management, SoftwareQualitätssicherung, Unternehmensmodellierung. Heidelberg, Berlin : Spektrum Akademischer Verlag GmbH, 1998 [Bal00] Balzert, Helmut: Lehrbuch der Softwaretechnik - Software-Entwicklung. Heidelberg, Berlin : Spektrum Akademischer Verlag GmbH, 2000 [Bat89] Bates, Marcia J.: The Design of Browsing and Berrypicking Techniques for the Online Search Interface. In: Online Review 13 (1989), October, Nr. 5, 407–424. http://www.gseis.ucla.edu/faculty/bates/berrypicking. html [BFR99] Bradley, Paul S. ; Fayyad, Usama M. ; Reina, Cory A.: Scaling EM (Expectation-Maximization) Clustering to Large Databases / Microsoft Research. Redmond, WA : Microsoft Corporation, October 1999 (Technical Report MSR–TR–98–35). – Forschungsbericht. Der vollständige Report kann mit Hilfe folgender Literaturverzeichnis URL 116 als PDF–Dokument heruntergeladen werden: http://citeseer.ist.psu.edu/bradley99scaling.html [BI04] Bar-Ilan, Judit: An outsider’s view on ”topic-oriented blogging”. In: WWW Alt. ’04: Proceedings of the 13th international World Wide Web conference on Alternate track papers & posters. New York, NY, USA : ACM Press, 2004. – ISBN 1–58113–912–8, S. 28–34 [BKKS01] Breunig, Markus M. ; Kriegel, Hans-Peter ; Kröger, Peer ; Sander, Jörg: Data bubbles: quality preserving performance boosting for hierarchical clustering. In: SIGMOD Record (ACM Special Interest Group on Management of Data) 30 (2001), Nr. 2, 79–90. http://citeseer.ist.psu.edu/breunig01data.html [Blo04] Blood, Rebecca: How blogging software reshapes the online community. In: Commun. ACM 47 (2004), Nr. 12, S. 53–55. http://dx.doi.org/10.1145/1035134.1035165. – DOI 10.1145/1035134.1035165. – ISSN 0001–0782 [BM98] Baker, L. D. ; McCallum, Andrew K.: Distributional clustering of words for text classification. In: Croft, W. B. (Hrsg.) ; Moffat, Alistair (Hrsg.) ; Rijsbergen, Cornelis J. (Hrsg.) ; Wilkinson, Ross (Hrsg.) ; Zobel, Justin (Hrsg.): Proceedings of SIGIR-98, 21st ACM International Conference on Research and Development in Information Retrieval. ACM Press, New York, US, 96–103 [CMK66] Cleverdon, Cyril W. ; Mills, Jack ; Keen, Michael: Factors determining the performance of indexing systems. Bedford, England : College of Aeronautics, Cranfield University, 1966 (Aslib Cranfield research project Volume 1–Design, Part 1–Text). – Forschungsbericht. Der vollständige Report kann mit Hilfe folgender 117 Literaturverzeichnis URL als PDF–Dokument heruntergeladen werden: http://hdl.handle.net/1826/861 [DFL+ 88] Dumais, S. T. ; Furnas, G. W. ; Landauer, T. K. ; Deerwester, S. ; Harshman, R.: Using latent semantic analysis to improve access to textual information. In: CHI ’88: Proceedings of the SIGCHI conference on Human factors in computing systems, ACM Press, 1988. – ISBN 0–201–14237–6, S. 281–285 [DGL89] Duff, I. S. ; Grimes, Roger G. ; Lewis, John G.: Sparse matrix test problems. In: ACM Trans. Math. Softw. 15 (1989), Nr. 1, S. 1–14. http://dx.doi.org/10.1145/62038.62043. – DOI 10.1145/62038.62043. – ISSN 0098–3500 [DP88] Dörfler, Willibald ; Peschek, Werner: Einführung in die Mathematik für Informatiker. München, Wien : Carl Hanser Verlag, 1988 [FPSS96] Fayyad, Usama M. ; Piatetsky-Shapiro, Gregory ; Smyth, Padhraic: From Data Mining to Knowledge Discovery in Databases. In: AI Magazine 17 (1996), Nr. 3, S. 37–54 [GHJV96] Gamma, Erich ; Helm, Richard ; Johnson, Ralph ; Vlissides, John: Entwurfsmuster : Elemente wiederverwendbarer objektorientierter Software. Addison-Wesley-Longman, 1996. – ISBN 3893199500 [HP96] Hearst, Marti A. ; Pedersen, Jan O.: Reexamining the cluster hypothesis: scatter/gather on retrieval results. In: SIGIR ’96: Proceedings of the 19th annual international ACM SIGIR conference on Research and development in information retrieval. New York, NY, USA : ACM Press, 1996. – Literaturverzeichnis 118 ISBN 0–89791–792–8, S. 76–84 [ISL01] Vernetzungspotenziale innerhalb der maritimen Wertschöpfungsketten am Schiffbau-, Seeschifffahrts- und Hafenstandort Deutschland. Version: November 2001. http://www.bmwa.bund.de/Redaktion/Inhalte/Pdf/Homepage 2Fdownload 2Fbranchenfocus 2FVernetzungspotenziale. pdf,property=pdf.pdf. – Endbericht [JH04] Johnson, Rod ; Hoeller, Juergen: Expert One-on-One J2EE Development without EJB. John Wiley & Sons, 2004. – ISBN 0764558315 [KL51] Kullback, S. ; Leibler, R.A.: On Information and Sufficiency. In: The Annals of Mathematical Statistics 22 (1951), March, Nr. 1, S. 79–86 [Lew96] Lewis, David D.: Reuters-21578, Distribution 1.0. http://www.daviddlewis.com/resources/testcollections/ reuters21578. Version: 1996. – Copyright resides with Reuters Ltd. [LGXZ02] Liu, Xin ; Gong, Yihong ; Xu, Wei ; Zhu, Shenghuo: Document clustering with cluster refinement and model selection capabilities. In: SIGIR ’02: Proceedings of the 25th annual international ACM SIGIR conference on Research and development in information retrieval, ACM Press, 2002. – ISBN 1–58113–561–0, S. 191–198 [Luh58] Luhn, H. P.: The automatic creation of literature abstracts. In: IBM Journal of Research and Development 2 (1958), Nr. 2, S. 159–165. – 119 Literaturverzeichnis ISSN 0018–8646 [Mil95] Miller, George A.: WordNet: a lexical database for English. In: Commun. ACM 38 (1995), Nr. 11, S. 39–41. http://dx.doi.org/10.1145/219717.219748. – DOI 10.1145/219717.219748. – ISSN 0001–0782 [MM90] Manber, Udi ; Myers, Gene: Suffix arrays: a new method for on-line string searches. In: SODA ’90: Proceedings of the first annual ACM-SIAM symposium on Discrete algorithms. Philadelphia, PA, USA : Society for Industrial and Applied Mathematics, 1990. – ISBN 0–89871–251–3, S. 319–327 [NSG04] Nardi, Bonnie A. ; Schiano, Diane J. ; Gumbrecht, Michelle: Blogging as social activity, or, would you let 900 million people read your diary? In: CSCW ’04: Proceedings of the 2004 ACM conference on Computer supported cooperative work. New York, NY, USA : ACM Press, 2004. – ISBN 1–58113–810–5, S. 222–231 [Osi03] Osiński, Stanislaw: An Algorithm For Clustering Of Web Search Results, Poznań University of Technology, Diplomarbeit, June 2003 [RM02] Rosenfeld, Louis ; Morville, Peter ; LeJeune, Lorrie (Hrsg.): Information Architecture for the World Wide Web. 2. O’Reilly Media Inc., 2002 [RN95] Russell, Stuart J. ; Norvig, Peter: Artificial Intelligence: A Modern Approach. Englewood Cliffs, NJ : Prentice-Hall, 1995 [Sch02] Schienmann, Bruno: Kontinuierliches Anforderungsmanagement - Prozesse, Techniken, Werkzeuge. Literaturverzeichnis 120 München/Deutschland : Addison Wesley Verlag, ein Imprint der Pearson Education Deutschland GmbH, 2002 [Sha48] Shannon, Claude E.: A Mathematical Theory of Communication. In: The Bell System Technical Journal 27 (1948), July, October, S. 379–423, 623–656 [Shi05] Shirky, Clay: Ontology is Overrated: Categories, Links, and Tags. http://shirky.com/writings/ontology overrated.html. Version: 2005. – gesehen am 10. August 2005 [SJ72] Sparck Jones, Karen: A statistical interpretation of term specificity and its application in retrieval. In: Journal of Documentation 28 (1972), Nr. 1, S. 11–21. – ISSN 0022 0418 [TAAK04] Teevan, Jaime ; Alvarado, Christine ; Ackerman, Mark S. ; Karger, David R.: The perfect search engine is not enough: a study of orienteering behavior in directed search. In: CHI ’04: Proceedings of the 2004 conference on Human factors in computing systems, ACM Press. – ISBN 1581137028, 415–422 [VR79] Van Rijsbergen, C. J.: Information Retrieval, 2nd edition. Version: 1979. http://www.dcs.gla.ac.uk/Keith/Preface.html. – Online Ressource, Abruf: 2005-07-07 [WRR03] Kapitel Singular value decomposition and principal component analysis. In: Wall, Michael E. ; Rechtsteiner, Andreas ; Rocha, Luis M.: A Practical Approach to Microarray Data Analysis. Norwell, MA : Kluwer, 2003, S. 99–109 [XLG03] Xu, Wei ; Liu, Xin ; Gong, Yihong: 121 Literaturverzeichnis Document clustering based on non-negative matrix factorization. In: SIGIR ’03: Proceedings of the 26th annual international ACM SIGIR conference on Research and development in informaion retrieval. New York, NY, USA : ACM Press, 2003. – ISBN 1–58113–646–3, S. 267–273 [YP97] Yang, Yiming ; Pedersen, Jan O.: A comparative study on feature selection in text categorization. In: Fisher, Douglas H. (Hrsg.): Proceedings of ICML-97, 14th International Conference on Machine Learning. Nashville, US : Morgan Kaufmann Publishers, San Francisco, US, 1997, S. 412–420 [ZD04] Zhang, Dell ; Dong, Yisheng: Semantic, Hierarchical, Online Clustering of Web Search Results. In: Yu, Jeffrey X. (Hrsg.) ; Lin, Xuemin (Hrsg.) ; Lu, Hongjun (Hrsg.) ; Zhang, Yanchun (Hrsg.): Advanced Web Technologies and Applications 6th Asia-Pacific Web Conference, APWeb 2004 Bd. 3007. Springer-Verlag GmbH. – ISBN 3–540–21371–6, 69–78 Literaturverzeichnis 122 Index Abonnement, 26 Clusty, 29, 44 Abstandsmaß, 63 Computerwoche, 109 Algorithmus, 47 Clustering, allg., 66 LSI, 63 Analyse, 49 Anbieter, 3 Angebot interessantes, 11 Anschaltzeit, 17, 19 Ansicht, 44 Attribut, 47 Auktion von Schiffen, 23 Data Bubbles, 104 Data Mining, 47, 55, 56 Dateiformat, 35 Datenbank, 15–17, 19, 47 Literatur-, 9 Datenmenge, 54, 101 Datenmodell, 37 Design, 43 Deskriptor, 36, 37 Dienstleistung, 3 Dimensionalität, 58, 59 Distributional Clustering, 64 Benachrichtigungsdienst, 11 DMKN, 20 Benutzerschnittstelle, 43 Dokumentausgabegebühr, 17, 19 Bewertungsfunktion, 54 Dokumentenarchiv, 21 Blog, 108 Download, 107 boolsche Logik, 45 Drucken, 44 Boolscher Operator, 21 Effektivität (von IR), 53 Browser, 45 Entropie, 60 Cluster, 47, 106 Clustering, 43, 47, 51, 64, 66 hierarchisch, 104 Konzept, 43 Laufzeit, 101 Qualität, 102 Erfassung, 17, 27, 37 Ergebnisliste, 44, 106 Erwartungswert, 61, 66 Evaluation, 55 Export, 37, 46 Faust, 35, 37, 47 Index Feature, 46, 49, 57, 58, 61, 66 124 Journal, 26, 27 Feld, 47 Fireball, 52 FIZ Karlsruhe, 19 Forschungsergebnisse, 23 Forum, 20 Framework, 30 Frequenz, 61 K-Means, 66 Künstliche Intelligenz (KI), 56 Kapazität, 60 Kategorisierung, 30 Klassifikation, 29, 57, 59, 60, 62, 66 Knowledge Discovery from Databases, 51 Gaußsche Verteilung, 66 Kommunikationskanal, 109 Gaussian Mixture Model, 67 Konferenzprotokoll, 27 Gebraucht-Schiffe, 23 Konkurrenz, 15 Geschäftsmodell, 107 Kontext, 52, 58 Gewichtung, 59 Korrektheit, 60 Google, 45, 52 Korrelation, 61 Granularität des Angebots, 107 Kriterien, 15 Kullback-Leibler, 61 Hierarchie, 43 Homepage, 26 HTML, 108 Index, 49 Individualisierung, 10 Information Gain, 59 Information Retrieval, 51, 60 Informationsangebote, 109 Informationsbeschaffung, 9 Informationsgehalt, 59 Kullback-Leibler-Divergenz, 61 Kundenprofil, 11 Kurzreferat, 37 Laufzeitcharakteristik, 47 Lernphase, 62 Linearkombination, 63 LINGO, 30 linguistisch (Texte erfassen), 52 Literaturhinweis, 3 LSI, 30, 104 Informationsgewinn, 59 Informationssystem, 3 Möglichkeiten, 106 Integration, 27 Matrix, 31, 63 Interesse (persönlich), 109 orthogonal, 63 Interpretation, 47, 56 Mitgliedschaft, 27 Inverse Document Frequency, 59 Model-based Clustering, 66 iPod von Apple, 109 MP3-Player, 109 ISL, 11, 30 Mutual Information, 61 Jahrbuch, 107 Nachfrage, 11 125 Index Netacademy, 23 Schlagwort, 3, 16, 17, 22, 23 Netzwerk-Lizenz, 27 Schwellenwert, 59 Netzwerkeffekt, 15 Seabase, 107 Newsletter, 108 Selektion, 46, 55 Normalverteilung, 66 Shannon, 60 Nutzwert, 16 Signal-to-Noise-Ratio, 60 Singular Value Decomposition (SVD), Online Strategien, 3 Online-Publishing, 107 Online-Shop, 107 OPTICS, 104 Overture, 52 63, 103 Skalierbarkeit, 104 Sony, 109 Stemming, 58 Stoppwort, 58, 103 Pauschalpreis, 17 Strategie, 3, 10, 109 Permalink, 108 Studie, 9 Personalisierung, 11, 43, 44 Suchanfrage, 37 Playstation Portable, 109 Suche, 17, 63 Portal, 26, 27, 29 Suchfunktion, 21, 22, 26 Potential, 108 Suchmaschine, 30, 52 Potentiale, 106 Suchmechanismus, 27 Precision, 53 Preisliste, 19 Preissystem, 19 Preprocessing, 46, 55 Profil, 44 Prototyp, 43 Prozess, 55 Publikation, 23, 26, 27 Qualität, 22, 47 Rauschen, 60 Recall, 53 Recherche, 3, 11, 36 Repräsentation, 52, 56, 57 Reuters, 101 Tagesschau, 109 Tellerrand, 107 Textkorpus, 101 TF-IDF, 59 Thesaurus, 17, 21–23, 37, 47, 57 Threshold, 66 Trainingsmenge, 62 Transformation, 46, 56 Varianz, 66 Vektor, 47, 58, 59 Vektorraum, 62 Verkaufen, 107 Verzeichnis, 22, 106 Videolog, 109 virtuelle Gemeinschaft, 15 Scatter/Gather, 107 Vivı́simo, 29 Index Vlog, 109 Volltext, 11, 21, 27 Wahrscheinlichkeit, 53, 61 Wahrscheinlichkeitsdichte, 66 Wahrscheinlichkeitsverteilung, 61, 62 Weblog, 108 Werbe-Möglichkeit, 22 Werbung, 16 Wertschöpfung, 15 Wissen, 20 WordNet, 105 Wortstamm, 58 Zeitfenster, 109 Zugangsart, 108 126