Entwicklung eines Dokumenten- Management-Systems Diplomarbeit Studiengang Informatik der Fachhochschule Mannheim Hochschule der Technik und Gestaltung Jan Löffler Betreuer: Prof. Dr. Rainer Gerten Mannheim, Dezember 2003
Kurzfassung 2 Kurzfassung Gegenstand der hier vorgestellten Arbeit ist ein Dokumenten-Management-System für das Institut für Multimedia-Systeme des Fachbereichs Informatik der Fachhochschule Mannheim Hochschule der Technik und Gestaltung. Das Dokumenten-Management-System DMS stellt ein Angebot dar, das von den Studierenden genutzt werden kann, um Dokumente, wie zum Beispiel Skripte der besuchten Vorlesungen, schnell und effizient im Intranet zu finden. Für die Professorenschaft wird mit Hilfe des DMS der Verwaltungsaufwand ihrer veröffentlichten Dokumente geringer, da das DMS die Verwaltung der Dokumente übernimmt. Des Weiteren können Studenten automatisch per Email über Updates informiert werden. Hauptbestandteil ist das Indexieren von Dokumenten, welches von einem eigenständigen Server durchgeführt wird. Dieser Server extrahiert den Fliesstext aus gegebenen Dokumenten (*.doc, *.pdf, *.xls, ) und entfernt Formatierungen und Symbole. Der übrig gebliebene Text wird in Wörter zerlegt, die durch sprach-spezifische Algorithmen bearbeitet werden, bevor sie in den Index aufgenommen werden. Um einen schnellen Abruf zu gewährleisten, besteht dieser Index aus Datenbanktabellen. Zugriff auf die Dokumente erhalten die Studenten über den Outputserver, der als Java Servlet implementiert ist. Die eingesetzte Retrieval Methode besteht aus dem Vektorraum Modell, kombiniert mit der Booleschen Logik. Optional werden Methoden aus der Fuzzy Logik und Wahrscheinlichkeitsrechnung hinzugefügt. Auch werden sowohl beim Indexieren, als auch bei der Suche Stemming- 1 und Spracherkennungsalgorithmen verwendet, um die Qualität der Suchergebnisse zu verbessern. Die Ergebnisse werden in Form eines Rankings (nach Relevanz geordnete Ergebnisliste) an den Benutzer zurück geliefert. Durch die Möglichkeit Kategorien zu abonnieren und persönliche Lesezeichen zu verwalten, wird die Vielseitigkeit der Suchmaschine angedeutet. Auch werden aufgerufene Dokumente protokolliert und zur Verbesserung zukünftiger Suchanfragen in Form des Relevance Feedback Modells 2 benutzt. 1 Stemming: Zerlegt Worte in ihre Grundform. Beispiel: gegangen gehen 2 Relevance Feedback Modell: Siehe 6.3.1
Das System beherrscht den Import und Export aller Daten als XML Knoten. Somit liefert der Webserver auch nur XML Dokumente zurück, die mit XSL Stylesheets zu HMTL transformiert werden. Diese Funktionen machen das System flexibel. Sicherheitskopien und Designänderungen sind problemlos möglich. 3 Schlagwörter: Dokumenten-Management-System, Information Retrieval, Text Mining, Vektorraum Modell, Suchmethoden
Abstract 4 Abstract Object of the presented work is a document-management-system for the Institute of Multimedia Systems of Informatics of the Fachhochschule Mannheim Hochschule der Technik und Gestaltung. The document-management-system DMS is an offer, which can be used by students to find documents e.g. scripts, of the lectures quickly and efficiently in the intranet. For the professors the amount of administration will be reduced with the help of the DMS, as DMS will organize the administration of the documents. Furthermore, students can be automatically informed of updates by email. Main part is the indexing of documents, which will be processed by an independent server. This server extracts the plaintext of given documents (*.doc, *.pdf, *.xls, ) and removes formatted text and symbols. The remaining text will divided into words, which will be prepared by language specific algorithms, before being included in the index. This index consists of database tables to guarantee a better performance. Access of the documents can be obtained by the output server, which is implemented as a Java server. The used retrieval method consists of the vector space model combined with the Boolean logic. It is an option to add methods concerning the fuzzy logic and probability calculus. Furthermore, in order to improve the quality of the search results, stemming- 3 and language recognizing algorithms will be used while indexing as well as searching. The results of a request will be returned to the user as a ranking (sorted by relevance). The diversity of the search machine is pointed out by the possibility of booking categories and organizing personal bookmarks. Called documents will be recorded in the database and used by the relevance feedback model 4 to improve future search inquiries. 3 Stemming: Divides words into their basic form. Example: went go 4 Relevance Feedback Model: See 6.3.1
Abstract 5 It is a feature of the system to import and export all data by XML nodes. As a consequence, the web server returns only XML documents, which will be transformed by XSL style sheets to HTML. These functions make the system flexible. Backups and design changes are therefore no problem. Keywords: document-management-system, information retrieval, text mining, vector space model, search methods
Inhaltsverzeichnis 6 Inhaltsverzeichnis Kurzfassung...2 Abstract... 4 Inhaltsverzeichnis... 6 Vorwort... 9 1 Überblick... 10 2 Motivation... 11 3 Konzept... 12 4 Information Retrieval... 15 4.1 Volltextsuche... 15 4.2 Boolesche Suche... 16 4.3 Fuzzy Logik... 16 4.4 Vektorraum Modell... 18 4.5 Neuronale Netzwerke... 19 4.6 Fazit... 21 5 Funktionsweise des Indexers... 23 5.1 Aufbereitung der Dokumente... 24 5.1.1 Parser... 24 5.1.2 Wortextraktion... 25 5.1.3 Stoppwort Eliminierung... 26 5.1.4 Stemming... 27 5.2 Gewichtungen... 29 5.2.1 Lokale Gewichte... 31 5.2.2 Globale Gewichte... 32 5.2.3 Normalisierungsgewichte... 33 6 Die Suchmaschine... 34 6.1 Die Sicht des Benutzers... 35 6.2 Umwandlung des Suchtextes... 35 6.2.1 Erkennung von Booleschen Ausdrücken... 36 6.2.2 Wortzerlegung... 36 6.2.3 Stemming... 36 6.2.4 Gewichtung... 37
Inhaltsverzeichnis 7 6.2.5 Datenbankabfrage... 37 6.3 Verbesserung der Ergebnisse... 40 6.3.1 Relevance Feedback... 40 6.3.2 Pseudo Relevance Feedback... 40 6.3.3 Fazit... 41 7 Evaluierung... 42 7.1 Precision... 43 7.2 Recall... 43 7.3 Beurteilung... 43 8 Eingeschlagener Realisierungsweg... 45 8.1 Entwicklungsumgebung... 45 8.1.1 IDE... 46 8.1.2 Webserver... 47 8.1.3 Datenbanksystem... 48 8.1.4 Datenintegrität... 48 8.1.5 Projektplanung... 48 8.2 Framework... 49 8.2.1 Datenbankzugriff... 51 8.2.2 Interne Datenverwaltung... 52 8.2.3 Indexieren von Dokumenten... 53 8.3 Indexserver... 55 8.4 Administrationsapplikation... 57 8.5 Webinterface... 58 8.5.1 Indexservlet... 59 8.5.2 Searchservlet... 60 8.5.3 Downloadservlet... 62 8.6 Spezielle Probleme... 62 8.6.1 Speicherverwaltung... 62 8.6.2 Datenbankverbindungen... 63 8.7 Importierte Algorithmen und Programme... 63 8.8 Erweiterbarkeit... 64 9 Zusammenfassung und Ausblick... 66 Anhang A: Beispiel für das Indexieren eines Textes... 68 A.1 Eingabetext... 68 A.2 Verarbeitung... 68 A.3 Gewichtung... 69 Anhang B: Beispiel für die Suche... 70
Inhaltsverzeichnis 8 Anhang C: Dateiübersicht... 72 Anhang D: Import und Export von Daten... 73 Abbildungsverzeichnis... 75 Algorithmenverzeichnis... 76 Tabellenverzeichnis... 76 Abkürzungsverzeichnis... 77 Glossar... 78 Literaturverzeichnis... 80 Stichwortverzeichnis... 82 Erklärung... 83
Vorwort 9 Vorwort Die Idee ein Dokumenten-Management-System zu entwickeln entstand während der Vorlesung Fuzzy-Logik und Expertensysteme bei Frau John. Schon vor zwei Jahren befasste ich mich während meines Praktikums bei der Firma bebit IT GmbH mit dem Thema Informationssuche und entwickelte eine Metasuchmaschine mit Java Servlets. Nun wollte ich im Rahmen meiner Diplomarbeit eine eigene Suchmaschine entwickeln, die nicht auf Suchergebnisse anderer Suchmaschinen angewiesen ist. Mein Diplomarbeitsbetreuer Professor Dr. Rainer Gerten erweiterte mein Konzept um die Eigenschaft der intelligenten Suche, die dem Benutzer schon vorab für ihn abgestimmte Ergebnisse präsentieren soll. Ein Nutzer orientiertes User Interface soll das Konzept abrunden. Auch sollten nicht nur HTML-Dokumente, sondern alle gängigen Office- und Dokument-Formate mit in die Suche einbezogen werden. Ein besonderer Dank gilt meinem Kommilitonen Kim Wegerle, der mich in die Benutzung von IBM Eclipse und in die Anwendung von XML und XSL mit Java einarbeitete. Des Weiteren möchte ich Jörn Löttgers danken. Durch ihn konnte ich bei diversen Projekten sehr viel Erfahrung in der objektorientierten Programmierung sammeln. Ganz besonders danke ich Herrn Professor Dr. Gerten und seinem Assistenten Herrn Gerweck für die technische Unterstützung während der Entwicklungsphase.
1 Überblick 10 1 Überblick In der heutigen Zeit ist das Ziel bei der Informationssuche aus der Vielzahl der Angebote treffsicher nur relevante Dokumente zu finden und nicht, überhaupt etwas zu finden. Zum Vergleich, die Internet-Suchmaschine Google (http://www.google.de) hat in ihrer Datenbank circa 3,3 Mrd. Webseiten 5 gelistet. Das Problem für den Suchenden ist nun, auf Anhieb die Dokumente zu finden, die genau die Information liefern, die der Besucher sucht. Der erste Ansatz, Daten zur Verfügung zu stellen, sind Datenbanksysteme (DBS). In Datenbanken können jedoch nur strukturierte Daten abgelegt werden, z.b. Preise und Produkte. Aber wie kann man Text-Dokumente in den verschiedensten Dokumentformaten hinterlegen, um sie später mit Suchwörtern wieder zu finden? Folgendes SQL Statement 6 würde alle Datensätze finden, in denen in irgendeiner Spalte eines Datenbanksystems der Textauszug fussball vorkommt. SELECT * FROM * WHERE * like %fussball% ; Solche Datenbankabfragen sind heute noch nicht möglich. Deshalb benötigt man andere Verfahren, um die gewünschte Information zu finden. Es gibt inzwischen eine Vielzahl von Suchmethoden aus den Bereichen Mathematik und Informatik, die teilweise seit Jahren erprobt sind. Die Problematik ist die Umsetzung dieser Methoden in die Praxis. Die Aufgabe eines Dokumenten-Management-Systems (DMS) ist es eine effiziente Suchmöglichkeit, mit Hilfe dieser Methoden, die zum Teil auch parallel betrieben werden, für eine große Dokumentenbasis zu bieten. Der Unterschied eines Dokumenten-Management-Systems und einer Internet- Suchmaschine liegt darin, dass primär im Intranet gespeicherte Dokumente, wie Word- Dokumente, Excel-Arbeitsmappen oder PowerPoint-Präsentationen durchsucht werden und keine im Internet verteilten Webseiten. Die Problematik der Hyperlink-Verfolgung entfällt hier. 5 Stand 2003, siehe http://www.google.de 6 SQL: Anfragesprache für Datenbanksysteme
2 Motivation 11 2 Motivation Ziel dieser Arbeit ist es, ein effizientes Dokumenten-Management-System für das Institut für Multimedia-Systeme des Fachbereichs Informatik der Fachhochschule Mannheim Hochschule der Technik und Gestaltung zu entwickeln, welches der Professorenschaft die Möglichkeit bietet, Dokumente, wie zum Beispiel Skripte, mit wenig Aufwand in die Dokumentenbasis der Suchmaschine zu importieren. Des Weiteren sollen Studenten die Möglichkeit erhalten, diese Dokumente passend zu ihren Vorlesungen oder Interessensgebieten angezeigt zu bekommen, ohne danach suchen zu müssen. Darüber hinaus soll dieses System persönlich favorisierte Dokumente beobachten und sobald ein Update vorliegt, den Benutzer informieren. Das Ziel der vorliegenden Arbeit betrifft insbesondere die Qualitätssicherung, die Arbeitserleichterung und die Interessenorientierung. Ein wesentliches Ziel dieser Arbeit besteht in der Qualitätssicherung der Suchergebnisse, durch effiziente Ranking-Algorithmen. Ein weiteres Ziel besteht in der Arbeitserleichterung bei der Suche für den Benutzer. Das System soll mit verschiedenen Inhaltssprachen der Dokumente, als auch der Sprache der Suchanfrage zurechtkommen. Auch die Bewertung der einzelnen Suchwörter wird primär der Suchmaschine überlassen, wobei dem Benutzer zusätzliche Parameter zur erweiterten Suche bereitstehen. Das Angebot der Dokumente soll benutzerorientiert sein und benutzerrelevante Dokumente ohne Zutun des Suchenden anzeigen. In den folgenden Kapiteln wird zuerst die Theorie des Information Retrievals erläutert, um einen theoretischen Überblick zu erlangen. Anschließend werden die beiden Hauptkomponenten eines Dokumenten-Management-Systems aufgezeigt. Diese gliedern sich in den Indexserver, der für das Aufbereiten des Indexes zuständig ist, und in die Suchmaschine, mit der gesuchte Dokumente gefunden werden. Darauf folgen die Darstellung des eingeschlagenen Realisierungswegs und die eigentliche Entwicklung des Systems. Ein Ausblick in die Zukunft und auf die Erweiterbarkeit des Dokumenten-Management- Systems wird im letzten Kapitel besprochen.
3 Konzept 12 3 Konzept In diesem Kapitel wird die grobe Funktionsweise des Dokumenten-Management- Systems erläutert. Da ich mich am Anfang meiner Arbeit noch nicht für ein Retrieval Modell entschieden habe, legte ich sehr viel Wert auf Schnittstellen. Zunächst fertigte ich eine Anforderungsanalyse (Pflichtenheft) an, um die gewünschten Funktionen festzulegen. Hier sind die wichtigsten Anforderungen aufgelistet: Professoren sollen Dokumente via Webbrowser hochladen können Ein Rechte Management muss existieren, um unbefugte Zugriffe abzufangen Es gibt Manager für User, Upload und Category. Nur diese haben einen Datenbankzugriff (Sicherheit und Integrität). Das System soll auf mehrere Server verteilt werden, um einen kontinuierlichen Zugriff zu gewährleisten. Neue Dokumente werden vom Inputserver entgegengenommen und kommen zunächst in eine Queue, die vom Indexserver zyklisch abgefragt wird. Dieser verarbeitet die Dokumente, um die Leistung der Suchmaschine nicht zu beeinträchtigen. Der Outputserver speichert Aktionen des Benutzers und bezieht diese in spätere Abfragen mit ein. Der Outputserver gibt alle Daten in XML zurück, das mit XSL in HTML transformiert wird. (Flexibilität) Es bestehen somit Schnittstellen zwischen der Datenbank und den Objekten User, Upload und Category. Eine Klasse User hat somit keine Möglichkeit, seine Attribute 7 aus der Datenbank zu laden. Hierfür muss der User Manager eingesetzt werden, der Zugriff auf den Connection Manager hat. Dieser wiederum ist die Schnittstelle zur Datenbank. Mit diesem System wird die Fehleranfälligkeit verringert. Ein Überblick der Manager Klassen gibt folgende Grafik wider: 7 Attribute der Klasse User : ID, Name, Username, Passwort, Emailadresse, Matrikelnummer, Rechte
3 Konzept 13 Abbildung 1: Klassendiagramm "Framework" Das Klassendiagramm stellt die Grundfunktion des Frameworks dar. Jeder Benutzer wird als Objekt der Klasse User angesehen. Um einen Benutzer in der Datenbank zu suchen oder anzulegen, benötigt man den User Manager, der eine Schnittstelle zum Connection Manager enthält. Dieser wiederum führt Datenbank abfragen aus und liefert die Ergebnisse an den User Manager zurück. Analog funktioniert der Ablauf bei Uploads und Categories. Der Content Manager hat alleinigen Zugriff auf den Index und dient der Indexierung und Suche von Dokumenten. Zum Parsen 8 von Dateien benötigt er die Klasse FileConverter, welcher aus bestimmten Dateitypen (*.doc, *.pdf, *.xls, ) den Fließtext extrahieren kann. Die Klasse ContentConnectionManager ist vom ConnectionManager abgeleitet und bietet einen schnelleren Zugriff mit Hilfe von prepared Statements. 8 Parsen: Extrahieren des Textes aus Dokumenten
3 Konzept 14 Die folgende Grafik beschreibt die Funktionsweise des Dokumenten-Management- Systems. Die Pfeile deuten den Datenfluss an. Der Redakteur fügt Dokumente über den Inputserver hinzu, die der Indexserver verarbeitet und in die Datenbank einpflegt. Der Benutzer kann über den Outputserver Dokumente suchen und bekommt anhand seines Profils, das auch in einer Datenbank gespeichert wird, vorab für ihn interessante Dokumente angeboten. Welche Dokumente für einen Benutzer interessant sind, entscheidet der Outputserver anhand der Häufigkeit, mit der Dokumente von anderen ähnlichen Benutzern aufgerufen wurden. Abbildung 2: Funktionsweise des Dokumenten-Management-Systems
4 Information Retrieval 15 4 Information Retrieval In diesem Kapitel werden die verschiedenen Verfahren zur Informationssuche aufgezeigt und verglichen. Folgende Grafik zeigt die einzelnen Retrieval Techniken: Abbildung 3: Übersicht der Retrieval Techniken 4.1 Volltextsuche Als Volltextsuche bezeichnet man die naive Suche nach einem Wort oder einer Phrase in einem Text. Kombinationen aus mehreren Schlüsselwörtern sind im Grundmodell nicht möglich, da sich der Suchalgorithmus nur auf das Auffinden einer Phrase konzentriert. Der am häufigsten verwendete Algorithmus wird Boyer-Moore-Algorithmus genannt und verbessert die Laufzeit des String Matchings 9. 9 String Matching: Suche einer Phrase in einem Text.
4 Information Retrieval 16 4.2 Boolesche Suche Die meisten Suchmaschinen (z.b. Google) implementieren die Boolesche Suche. Besonders häufig werden solche Systeme für Bibliotheken und Literaturrecherchen eingesetzt. Der Suchende kann für mehrere Felder Forderungen der Form Wort x muss enthalten sein oder Wort x darf nicht enthalten sein festlegen. Die Antwort ist eine ungeordnete Liste von Treffern. Jedoch ist der Suchende hierbei selbst für die Qualität der Suchergebnisse verantwortlich. Eine Boolesche Anfrage setzt sich aus Suchtermen und logischen Operatoren zusammen. Beispiel: Übertakten AND (CPU OR Prozessor) AND NOT Pentium Das Boolesche Retrieval unterscheidet nicht die Wichtigkeit der verschiedenen Terme und ordnet die Ergebnisse auch nicht nach ihrer Relevanz. 4.3 Fuzzy Logik Die Fuzzy Logik versucht vage Ausdrücke zu bewerten und die Schwäche der Booleschen Logik zu kompensieren. Gibt es für einen Term bei der Booleschen Suche nur die zwei Möglichkeiten wahr oder falsch, so ist es in der Fuzzy Logik möglich, einen Zugehörigkeitsgrad und somit auch Zwischenwerte wie sehr wahr und etwas wahr festzulegen. Beispiel: Suchanfrage: Ich suche einen schnellen PC für ca. 1000 Euro. Relevant: 3 GHz, 999, 3,2 GHz, 1099, 2,6 GHz, 899 Nicht relevant: 1,6 GHz, 750, 3 GHz, 4000 Zwar wäre es auch möglich eine Anfrage im Booleschen Retrieval in Form von 800 Euro Preis 1200 Euro einzuschränken, jedoch würden Produkte für 799 Euro verworfen werden. Wo soll also die Grenze sein?
4 Information Retrieval 17 Abbildung 4: Beispiel der Fuzzy Logik Das Beispiel zeigt eine Suchanfrage aus mehreren vagen Termen (schneller PC, ungefährer Preis). Um die Relevanz zu bewerten, werden Gewichte für jeden Term vergeben. Wird ein PC mit einer Taktfrequenz von über 2.6 GHz gefunden, bekommt das Dokument einen Zugehörigkeitswert von 1 für die Taktfrequenz. Liegt die Taktfrequenz unter 2 GHz, so wird eine 0 festgelegt, ansonsten ein Zwischenwert. Um nur relevante Dokumente zu erhalten, werden zusätzlich Mengenoperationen angewandt. Schnittmenge: µ ( document) = min( µ ( document), ( document)) A B A µ B Vereinigung: µ ( document) = max( µ ( document), ( document)) A B A µ B Komplement: µ ( document) = 1 ( document) µ A A Beispiel: 3 GHz, 999 min (1.0, 0.99) = 0.99 2.5 GHz, 920 min (0.6, 0.87) = 0.6 1.5 GHZ, 1000 min (0.0, 1.0) = 0.0 Dieses Verfahren sortiert die Ergebnisse nach Relevanz. Im Beispiel würde der 3 GHz PC für 999 Euro zu 99% der Suchanfrage entsprechen, der 920 Euro teure 2.5 GHz Rechner dagegen nur zu 62%.
4 Information Retrieval 18 4.4 Vektorraum Modell Das Vektorraum Modell wurde in den 60iger Jahren von Gerard Salton, Professor für Computerwissenschaften an der Cornell University in Harvard entwickelt und wird heute in sehr vielen Suchmaschinen eingesetzt. Die Suchmaschine SMART implementiert dieses Modell schon seit langem. Die Idee des Modells besteht darin, Dokumente als Vektoren in einem n-dimensionalen Raum darzustellen, wobei n für die Anzahl aller Terme steht. Beispiel: document j weight weight =... weight 1, j 2, j n, j weight weight query =... weight 1, q 2, q n, q Jeder Term wird hierbei mit einem Gewicht 10 (weight i,j ) bewertet. Ist ein Term in dem Dokument j nicht vorhanden, so erhält er das Gewicht 0. Je häufiger der Term im Text vorkommt, desto höher ist sein Gewicht. Abbildung 5: Beispiel für das Vektorraum Modell 11 10 Geeignete Gewichtungsverfahren, siehe 5.2 11 Quelle: [4] Burger (1984), S. 7
4 Information Retrieval 19 Um zu einer Suchanfrage q alle relevanten Dokumente zu finden, vergleicht man die Ähnlichkeit der Vektoren. Je geringer der Abstand zweier Vektoren ist, desto ähnlicher sind die beiden betreffenden Dokumente. Bei dem Vergleich zwischen der Suchanfrage und einem Dokument, sprechen wir von Relevanz: cos α = r r a b r r a b r r d j q sim( document j, query) = r r = d q j n i= 1 n i= 1 weight weight 2 i, j i, j weight n i= 1 i, q weight 2 i, q Besteht keine Ähnlichkeit zwischen einem Dokument d und der Anfrage q, so sind die Vektoren orthogonal und somit der Cosinus-Wert 0. Der größte Vorteil des Vektorraum-Modells ist die Rankingfunktion der Ergebnisse. Dokumente werden nach absteigender Relevanz sortiert. Die Strategie der partiellen Übereinstimmung ermöglicht es, Dokumente zu finden, die der Suchanfrage nahe kommen. 4.5 Neuronale Netzwerke Die Idee des neuronalen Netzwerkes ist es, das System dem menschlichen Gehirn nachzuempfinden. Der Mensch erforscht seine Umwelt, indem er Information zueinander in Relation setzt. Damit ein neuronales Netzwerk funktioniert, wird es mit Trainingsmustern in Form von Vektoren initialisiert. Je mehr Trainingstexte das System bekommt, desto besser werden die Ergebnisse. Durch die Erlernung der Zuordnungen von Trainingsmustern auf Zahlen, erlangt das neuronale Netzwerk die Fähigkeit der Generalisierung. Stellt man eine Suchanfrage in Form eines Anfragetextes an das neuronale Netzwerk, so findet es Dokumente, die dem Anfragetext ähnlich sind.
4 Information Retrieval 20 Ein bekanntes Modell ist das COSIMIR-Modell (Cognitive Similarity learning in Information Retrieval), das auf dem Backpropagation-Algorithmus 12 beruht. COSIMIR nutzt bereits gefällte Entscheidungen von Benutzern in Form von Relevanzbeurteilungen, um eine adaptive Ähnlichkeitsfunktion zu realisieren. Dieses vermeidet so die heuristische Auswahl der Ähnlichkeitsfunktion im Information Retrieval. Als Trainingsmuster gehen menschliche Urteile über Ähnlichkeiten zwischen Anfragen und Dokumenten ein. Die im Indexierungsprozess gewonnenen Gewichte werden als Eingabedaten des neuronalen Netzwerkes benutzt. Die meisten bestehenden Verfahren nutzen die Mächtigkeit neuronaler Netze, wie sie etwa der Backpropagation Algorithmus bietet, nicht aus, sondern beschränken sich auf Spreading-Activation-Netze, die formal sehr stark dem Vektorraum Modell ähneln. Sie integrieren das Wissen, das während der Indexierungsphase gewonnen wurde, indem sie die Verbindungen des Netzwerkmodells mit den Termgewichten aus der Dokument- Term-Matrix gewichten. Abbildung 6: Beispiel eines Neuronalen Netzwerks 13 Weitere neuronale Netzwerkmodelle, die im Bereich Information Retrieval zum Einsatz kommen, sind die selbst organisierenden Kohonen Karten. Der Nachteil eines neuronalen Netzwerkes ist allerdings, dass es oftmals unrelevante Ergebnisse zurück liefert, falls keine relevanten Dokumente vorhanden sind. Dieser Punkt ist ein KO-Kriterium für das Information Retrieval. 12 Weitere Informationen: [20] Rädle (2002): Vorlesung Neuronale Netzwerke 13 Je dicker die Linien, desto stärker ist das Verhältnis zwischen Dokumenten und Termen
4 Information Retrieval 21 4.6 Fazit Volltextsuchen bieten lediglich die Möglichkeit einzelne Wörter oder Phrasen zu suchen. Als Suchmaschine eignet sich das Verfahren jedoch nur in Kombination mit der Booleschen Suche, um mehrere Suchwörter zu kombinieren. Die Boolesche Suche ist die älteste und einfachste Methode des Retrievals. Sie erlaubt kein effizientes Ranking der Dokumente und ist für natürlichsprachige Anfragen ungeeignet. Der Vorteil dieser Systeme liegt in der einfachen Implementierung. Die Fuzzy Logik bietet die Möglichkeit, ein sehr gutes Ranking zu erstellen und vage Aussagen zu interpretieren. Dies ist allerdings nur bei strukturierten Daten ohne weiteres möglich, indem Zahlenwerte (z.b. Preis, Zeit, Gewicht, etc.) bewertet werden. Geeignet ist dieses Modell vor allem für Produkt-Kataloge, als Erweiterung der Booleschen Suche. Kombiniert man die Fuzzy Suche mit dem Vektorraum-Modell, so erhält man die besten Ergebnisse, da die Stärken beider Systeme zusammenwirken. Das Vektorraum-Modell (VSM = Vector Space Model) beherrscht das Ranking von Dokumenten am besten, da alle Terme nach ihrer Bedeutung gewichtet werden. Somit stellen auch natürlichsprachige Anfragen kein Problem dar. Das VSM ist mit der Booleschen Suche, Wahrscheinlichkeiten und Fuzzy Logik kombinierbar. Damit entsteht eine der leistungsfähigsten Suchmethoden. Das Neuronale Netzwerk (NNW) als Suchmaschine einzusetzen, ist ein sehr guter Ansatz. Allerdings treten zwei Probleme auf: Falsche Ergebnisse: Rechenleistung: Das NNW liefert immer Ergebnisse zurück. Das bedeutet, falls keine relevanten Dokumente vorliegen, erhält der Benutzer unrelevante Dokumente. Das NNW erstellt ein riesiges Netzwerk aus Knoten, die die Terme der Dokumentenbasis repräsentieren. Rechnen wir mit nur tausend Dokumenten à 50.000 Termen, so wächst das Netzwerk exponentiell und es wird zu viel Rechenleistung benötigt, um das Netzwerk zu trainieren.
4 Information Retrieval 22 Der Vorteil des Neuronalen Netzwerkes besteht in der Fähigkeit, eigenständig zu lernen und zu generalisieren. Besonders häufig wird es deshalb für Spam Filter eingesetzt. Die vorgestellten Verfahren gliedern sich nach Qualität, wie folgt: Qualität Volltextsuche ( z.b. Boyer-Moore-Algorithmus) Boolesches Retrieval ( AND, OR, *,? ) Fuzzy Retrieval ( Gewichtung, Häufigkeit ) Vektorraum Retrieval ( Dokumente als Vektoren ) Neuronales Netzwerk ( Distanzkarte ) Tabelle 1: Vergleich der Retrieval Modelle Eigenschaft Volltextsuche Boolesche Suche Fuzzy Suche Vektorraum Modell Neuronales Netzwerk Ranking Gewichtung Natürliche analysieren und Sprache Vage Ausdrücke interpretieren Einfache Implementierung Geringe Rechenleistung benötigt + ++ ++ ++ + + ++ ++ + O + + ++ ++ + ++ O Bewertung: nicht möglich O schlecht + gut ++ sehr gut
5 Funktionsweise des Indexers 23 5 Funktionsweise des Indexers Um möglichst schnell in Dokumenten suchen zu können, benötigt man einen Index, in dem alle Schlüsselwörter hinterlegt sind. Um diesen Index zu erzeugen, extrahiert man den Klartext aus dem jeweiligen Dokument, entfernt unwichtige Wörter, wandelt eventuell ähnliche Wörter in ihre Grundform und speichert diese Wörter dann als gewichtete Terme in einer Datenbank oder Datei ab. Die Speicherung des Indexes in einer Datei nennt man Inverse Datei. Der Nachteil gegenüber einem Datenbanksystem zeigt sich in der schlechten Performance, da sehr viele Festplattenzugriffe notwendig sind. Abbildung 7: Funktionsweise eines Indexers 14 14 Quelle: [5] Gerhard Möller (1996)
5 Funktionsweise des Indexers 24 5.1 Aufbereitung der Dokumente Um ein Dokument in den Index aufzunehmen, müssen zuerst die einzelnen Wörter des Textes mit einem Parser und einem Tokenizer 15 extrahiert werden, um sie anschließend weiter zu bearbeiten. Abbildung 8: Aufbereitung der Dokumente 1) Parsen, Text extrahieren 2) Stoppwörter eliminieren 3) Terme bestimmen 4) Stemming und Silbenzerlegung 5) Schlüsselwörter zuordnen 5.1.1 Parser Der Parser ist ein Algorithmus, der den Inhalt verschiedener Dateiformate in Klartext umwandelt. Dies ist notwendig, um Schlüsselwörter aus den Dokumenten zu extrahieren, die anschließend in den Index aufgenommen werden. 15 Zerlegt Text in einzelne Wörter
5 Funktionsweise des Indexers 25 Ein Dokumenten-Management-System sollte vor allem folgende Dateitypen auslesen können: Tabelle 2: Unterstützte Dateiformate Erweiterung Dateiformat Besonderheit txt Textdatei Klartext rtf Richtext Dokument Enthält Formatierungen htm, html Webseite Enthält Tags xml, xsl XML-Datei Enthält Tags doc Microsoft Word Dokument Kodiert xls Microsoft Excel Arbeitsmappe Kodiert ppt, pps PowerPoint Präsentation Kodiert pdf Adobe PDF Dokument Textbausteine, aber kein Fliesstext ps GhostScript Druckvorstufe Zukünftig wird es auch Parser für Multimedia-Formate, wie z.b. Bilder, Videos und Tonbandaufnahmen geben. Hieran wird jedoch noch gearbeitet. 5.1.2 Wortextraktion Aus den vom Parser gewonnenen Klartexten, werden alle einzelnen Worte herausgelöst, um sie anschließend weiter zu verarbeiten. Dieser Vorgang wird mit einem StreamTokenizer realisiert, der Worte anhand von einstellbaren Separatoren erkennt. Beispiel: Separatoren: Text: Erkannte Token: \n\t,.;:!?+-_()[]{}* Ein Wort-Zerleger ( Tokenizer ) z.b. Lex Ein, Wort, Zerleger, Tokenizer, z, B, Lex Um die gewünschten Ergebnisse zu erzielen, muss die Separatoren-Liste an die geforderten Bedürfnisse angepasst werden. Möchte man z.b. Internetadressen (www.irgendwas.de) als ein Wort behalten, muss der Tokenizer darauf trainiert werden, dass er den Punkt nur als Separator erkennt, wenn darauf ein Leerzeichen folgt.
5 Funktionsweise des Indexers 26 Für das Retrieval ist es allerdings sinnvoller, Internetadressen in einzelne Wörter zu trennen, um dem Benutzer die Suche zu erleichtern. Beispiel: Suchpattern: Ergebnisse: fussball.de www.fussball.de, www.fussball.com, aber auch Fußbälle zu verschenken 5.1.3 Stoppwort Eliminierung Stoppwörter sind Wörter mit geringer Aussagekraft, die in fast allen Dokumenten vorkommen. Solche Wörter verschlechtern Suchergebnisse und erhöhen den Speicheraufwand, deshalb werden sie nicht indexiert. Beispiele: Deutsch: der, die, das, ich, er, sie, dann, denn, Englisch: the, he, she, it, do, at, by, when, then, Französisch: le, la, les, il, elle, moi, je, tu, toi, vous, nous, Stoppwörter können anhand einer vordefinierten Stoppwortliste identifiziert werden. Man kann Stoppwörter allerdings auch aufgrund ihrer statischen Verteilung erkennen. Der Mathematiker Zipf fand 1949 heraus, dass das Produkt aus der Häufigkeit eines Wortes in einem Text und dem Rang bei absteigender Häufigkeit, konstant bleibt. d.h. frequency ( word ) rank( word ) = const k Kommt ein Term in einem Dokument count(word) -mal vor, so besitzt er den Rang: rank( word, document) = const k wordcount( document) count( word )
5 Funktionsweise des Indexers 27 Im Allgemeinen sind nach Zipf s Gesetz ca. 20 30% Wortvorkommen in einem Text Stoppwörter, abhängig von der Sprache. Durch die Eliminierung der Stoppwörter wird der Speicheraufwand reduziert, was sich auf die Performance der Suchmaschine auswirkt. Abbildung 9: Verteilung der Termhäufigkeiten 16 Ebenso werden seltene Wörter eliminiert, da nach ihnen sehr selten gesucht wird. Dieser Schwellenwert sollte jedoch nicht zu hoch liegen, um seltene wichtige Wörter nicht zu ignorieren. 5.1.4 Stemming Stemming ist eine vereinfachte Stammformreduktion. Dies ist für die Suche notwendig, um verschieden konjugierte Worte zu ihrer Grundform (Infinitiv) zusammenzufassen. Beispiel: gehen geh, ging, gegangen, gehend, begehen Haus Häuser, hausieren, hausen 16 Quelle: [7] Wolfgang Stock (2002), S. 10
5 Funktionsweise des Indexers 28 Wegen der starken Konjugation und Deklination, benötigt man vor allem in der deutschen Sprache ein Wörterbuch, um die Grundform zu bilden. Da die Pflege eines solchen Wörterbuches sehr aufwendig ist, benötigt man ein einfaches Verfahren, welches Wortformen in eine Pseudo-Grundform umwandelt. Der bekannteste Algorithmus ist der Porter-Algorithmus, der mit Hilfe von Präfix- und Suffix-Listen englische Wörter umwandelt. Abbildung 10: Auszug aus dem Porter-Algorithmus 17 Diesen Algorithmus kann man in abgeänderter Form für alle Sprachen einsetzen, wobei die Qualität der Ergebnisse von dem jeweiligen grammatikalischen Aufbau der Sprache abhängt. Beispiel: geh haus gehen, gehend, begehen Haus, Häuser, hausen, hausieren, gehaust Sonderformen, wie ging können mit diesem Algorithmus nicht in ihre Grundform reduziert werden, und werden als eigene Wörter gespeichert, was die Suchleistung wiederum verschlechtert. 17 Quelle: [11] M. F. Porter (1980)
5 Funktionsweise des Indexers 29 Homonyme (gleiche Wörter mit unterschiedlicher Bedeutung) und Synonyme (unterschiedliche Wörter mit gleicher Bedeutung) stellen ein weiteres Problem dar. Dieses Problem kann nur durch ein Wörterbuch gelöst werden. Beispiel: Synonyme schön, hübsch, lieblich, ansehnlich Homonyme kosten (schmecken), kosten (wert sein) Hyponyme Frucht Apfel (Spezialisierung) Hyperonyme Apfel Frucht (Generalisierung) 5.2 Gewichtungen Eine gute Gewichtung kann die Leistung des Vektorraum-Modells sehr stark verbessern. Beispielsweise werden lange Texte ohne Gewichtung immer bevorzugt, da sie die Suchterme häufiger enthalten, als kurze Texte. Dem kommt ein Normalisierungsgewicht entgegen. Auch sind häufig auftretende Schlüsselwörter, wie Computer in einer Dokumentenbasis für Informatiker wenig von Bedeutung für die eigentliche Relevanz der Suche. Selten vorkommende Schlüsselwörter sind zur Bewertung der Relevanz vorzuziehen. Beispiel: Suchanfrage: Relevant: Nicht relevant: Computer, CPU, übertakten Prozessor übertakten beim Pentium IV Der Computerbranche fehlen Hardware-Spezialisten Um relevante Ergebnisse zu bevorzugen, müssen die Wörter CPU und übertakten höher bewertet werden, als das häufig vorkommende Wort Computer. Dies erledigen lokale und globale Gewichte.
5 Funktionsweise des Indexers 30 Die Gewichtung jedes einzelnen Terms kann durch folgende Formel ausgedrückt werden: Weight( Term, Document ) = Local i j ij Global Normalization i j Die folgenden Kapitel zeigen einige Gewichtungsverfahren, die sich als sehr effizient erwiesen haben. Es gibt jedoch noch einige Methoden, die ich nicht implementiert und getestet habe. Ausführliche Tests und weitere Gewichtungsmethoden können in [2] Erica Chisholm, Tamara Kolda (1999) nachgelesen werden.
5 Funktionsweise des Indexers 31 5.2.1 Lokale Gewichte Lokale Gewichte sind mit jedem Term eines Dokumentes verknüpft. Das bekannteste und einfachste Gewichtungsverfahren ist das within-document frequency Verfahren FREQ, bei dem die Häufigkeit des jeweiligen Terms eines Dokumentes das Gewicht ist. Das binäre Verfahren (BNRY) gewichtet einen Term mit 1, falls er mindestens einmal im Text vorkommt. Dies entspricht dem Booleschen Modell und führt jedoch zu unbefriedigenden Ergebnissen, da jeder Term eines Textes das gleiche Gewicht erhält. Bessere Ergebnisse erreichen Verfahren, die das FREQ Verfahren logarithmisch abändern, da somit sehr häufige Terme, z.b. Stoppwörter, nicht zu viel Gewicht bekommen. Zwei gute Methoden für lokale Gewichte sind das LOGA Verfahren und das SQRT Verfahren. Tabelle 3: Lokale Gewichtungsverfahren 18 Formel Name Abkürzung L ij 1 = 0 für für f f ij ij > 0 = 0 Binary BNRY L ij = f ij Within-document frequency FREQ L ij 1 + log( fij ) = 0 für für f f ij ij > 0 = 0 Log LOGA L ij 1+ = 0 f ij 0.5 für für f f ij ij > 0 = 0 Square root SQRT Anmerkung: f ij Häufigkeit des Terms i in Dokument j 18 Quelle: [2] Erica Chisholm, Tamara Kolda (1999), S. 7 und S. 12
5 Funktionsweise des Indexers 32 5.2.2 Globale Gewichte Globale Gewichte bewerten Schlüsselwörter für die gesamte Dokumentenbasis. Wörter, die in allen Dokumenten sehr häufig vorkommen, sind für die Unterscheidung der Dokumente weniger bedeutend, als Wörter, die sehr selten vorkommen, jedoch in wenigen Dokumenten häufig auftreten. Alle Verfahren für globale Gewichte basieren auf dem inverse document frequency Verfahren IDF, welches die Terme nach der aufsteigenden Häufigkeit in der gesamten Dokumentenbasis bewertet. Das heißt, je seltener der Term auftritt, desto höher ist das Gewicht. Tabelle 4: Globale Gewichtungsverfahren 19 Formel Name Abkürzung G = i log N n i N ni G = i log ni Inverse document frequency Prohabilistic inverse IDFB IDFP G = i Fi n i Global frequency IDF IGFF G i = Fi n i 0.9 Square root global frequency IDF IDFS Anmerkung: N Anzahl aller Dokumente n i Anzahl aller Dokumente, die Term i enthalten F j Häufigkeit des Terms i in allen Dokumenten 19 Quelle: [2] Erica Chisholm, Tamara Kolda (1999), S. 9 und S. 13
5 Funktionsweise des Indexers 33 5.2.3 Normalisierungsgewichte Um lange Texte gegenüber kurzen nicht zu bevorzugen, benutzt man ein Normalisierungsgewicht für das jeweilige Dokument. Je kürzer der Text, desto höher ist das Gewicht. Dieses Verfahren nennt man Document-length Verfahren DL. Nachteil des Verfahrens ist, dass vor allem kurze Dokumente bevorzugt werden. Um dieses Problem zu kompensieren, benutzt man das Cosine normalization Verfahren COSN. Diese Methode kombiniert alle lokalen und globalen Gewichte eines Dokumentes. Tabelle 5: Normalisierungsverfahren 20 Formel Name Abkürzung 1 N j = length( Document ) j Document length DL N j = n ( Gi Lij ) i= 0 1 Cosine normalization COSN 2 Anmerkung: G i Globales Gewicht des Terms i L ij Lokales Gewicht des Terms i in Dokument j n Anzahl aller Terme 20 Quelle: [2] Erica Chisholm, Tamara Kolda (1999), S. 10
6 Die Suchmaschine 34 6 Die Suchmaschine Um relevante Dokumente zu einer Suchanfrage zu finden, gibt es zwei Möglichkeiten: Alle Dateien direkt durchsuchen Index durchsuchen Die erste Methode ist am schnellsten zu implementieren, enthält jedoch keine Möglichkeit der Relevanz-Bezogenen Gewichtung. Der Hauptnachteil ist, dass diese Suche sehr langsam ist, da Festplattenzugriffe am meisten Zeit kosten. Auch wird sehr viel Rechenleistung und Arbeitsspeicher für dieses Verfahren benötigt. Die Suche im Index ist dagegen effizienter, da keine Dokumente durchsucht werden, sondern eine Tabelle mit allen im Index enthaltenen Schlüsselwörtern. Diese Tabelle gibt Aufschluss darüber, welche Dokumente relevant für die Suche sind. Darüber hinaus kann aus diesen Ergebnissen ein Ranking erstellt werden, das die gefundenen Dokumente nach ihrer Relevanz absteigend sortiert. Der Index kann sowohl in einer Datei ( invertierte Datei ), als auch in einer Datenbank gespeichert sein. Die Datenbank ist der Datei jedoch wegen der bessern Zugriffszeit zu bevorzugen.
6 Die Suchmaschine 35 Abbildung 11: Funktionsweise des Retrievals 21 6.1 Die Sicht des Benutzers Der Suchende benutzt die Suchmaschine als Blackbox, d.h. er gibt seine Anfrage an die Suchmaschine weiter und erwartet Ergebnisse, weiß jedoch nicht, wie seine Anfrage intern verarbeitet wird. Um die Qualität der Ergebnisse zu beeinflussen, kann der Benutzer zusätzliche Boolesche Operatoren 22 zu seiner Anfrage hinzufügen. 6.2 Umwandlung des Suchtextes Die Umwandlung des Suchtextes erfolgt analog zu dem in der Indexierung verwendeten Verfahren. Zusätzlich müssen aber noch Boolesche Ausdrücke ausgewertet werden. 21 Quelle: [5] Gerhard Möller (1996) 22 Boolesche Operatoren, siehe 4.2
6 Die Suchmaschine 36 6.2.1 Erkennung von Booleschen Ausdrücken Der Suchtext kann diverse Boolesche Operatoren enthalten. Um die Suchanfrage richtig zu interpretieren, müssen diese Operatoren erkannt und angewandt werden. 6.2.2 Wortzerlegung Der Suchtext wird genau wie beim Indexieren eines Dokumentes in Wortterme zerlegt, nach denen anschließend in der Datenbasis gesucht wird. Auch hier werden Stoppwörter entfernt, da diese nicht in der Datenbank vorkommen. 6.2.3 Stemming Da alle Schlüsselwörter in der Datenbank von einem Stemming Algorithmus bearbeitet wurden, ist es notwendig, auch die Suchwörter zu bearbeiten, da es sonst keine Ü- bereinstimmungen geben würde. Beispiel: Dokumenttext: er spielte Fußball Schlüsselwörter: spiel, fussball Suchwörter: fussball, spielen Abfrageserver: spiel spielen 23 Werden die Suchwörter einer Anfrage durch einen Stemming Algorithmus verändert, so haben sie die gleiche Form, wie die Schlüsselwörter in der Datenbank. Dies ermöglicht es, die Suchwörter auch mit Pluralendungen, etc. zu finden. Um eine Suchanfrage auszuführen, bei der die Sprache der Dokumente nicht von Interesse ist, werden die Suchwörter mit jedem für die jeweilige Sprache entsprechenden Stemming Algorithmus bearbeitet und anschließend mit einer ODER Verknüpfung zusammengefügt. So wird die Chance erhöht, z.b. englische relevante Dokumente mit einem deutschen Suchwort zu finden. 23 spiel und spielen werden beim String Vergleich nicht als Treffer gesehen
6 Die Suchmaschine 37 6.2.4 Gewichtung Die Gewichtung bei der Suchanfrage spielt eine geringere Rolle als beim Indexieren, da alle Suchwörter meistens die gleiche Wichtigkeit haben. Man kann jedoch auch Wörter in Form von Gewichten mehr oder weniger hervorheben. Diese Vorgehensweise hat einen direkten Einfluss auf die Qualität der Suchergebnisse. Die Suchmaschine Google bewertet alle Suchwörter nach ihrer Reihenfolge, d.h. das erste Wort wird am höchsten gewichtet, alle anderen gemäß ihrer Position im Suchtext. Vertauscht man die Suchwörter, so ergibt sich eine Veränderung der Ergebnis- Reihenfolge. 6.2.5 Datenbankabfrage Liegen die Suchwörter in aufbereiteter Form vor, wird in der Datenbank oder Datendatei danach gesucht. Die Speicherung in einer Datei nennt man Inverse Datei und kommt ohne Datenbanksystem aus. Der Nachteil zeigt sich in der schlechten Performance, da sehr viele Festplattenzugriffe notwendig sind. Im Folgenden wird die Abfrage beim Vektorraum-Modell durch ein Datenbanksystem aufgezeigt. Die jeweiligen Daten sind in einer relationalen Datenbank gespeichert, was eine Abfrage mit einem einzigen SQL Statement erlaubt. Alle Dokumente werden in der Datenbanktabelle files mit ihrem Gewicht weight gespeichert, das die Suchergebnisse normalisiert 24. In der Tabelle querytable befindet sich die Suchanfrage. Die Tabelle indextable beinhaltet alle Assoziationen zwischen Dokumenten und Schlüsselwörtern. Das Attribut weight stellt das lokale Gewicht dar, während die Gewichte der Schlüsselwort- Tabelle keywords die globalen Gewichte repräsentieren. 24 Normalisierungsverfahren: Siehe 5.2.3
6 Die Suchmaschine 38 Table: files Table: querytable id filename date author weight keyword weight 1 Harry Potter Band 1.pdf 2 Harry Potter Band 2.pdf 01.10.2003 Löffler 0,20342 03.10.2003 Gerten 0,11254 harry 0,70000 potter 1,00000 Table: indextable Table: keywords fileid keyword weight 1 harry 0,13352 1 potter 0,36549 1 dumbledore 0,81123 1 london 0,73442 1 zauberer 0,62321 keyword frequency weight harry 1302 0,21332 potter 7033 0,37623 dumbledore 34 0,79823 london 320 0,73421 zauberer 350 0,79123 2 harry 0,13676 2 potter 0,34768 2 dumbledore 0,81342 2 london 0,72132 2 zauberer 0,62344 Abbildung 12: Datenbankstruktur 25 Mit folgenden Datenbankabfragen in der Sprache SQL werden alle relevanten Dokumente mit Hilfe ihrer ID als Ergebnis gefunden. Durch das erste Statement werden die Suchwörter in der Tabelle querytable gespeichert. Die Gewichtung ist im Allgemeinen der Wert 1, damit jedes Suchwort die gleiche Gewichtung hat. Das zweite Statement sucht alle Dokumente, in denen mindestens ein Suchwort vorkommt und sortiert diese nach Relevanz. Auf diese Weise wird ein Recall (Siehe Recall) von fast 100% erreicht. Jedoch ist die Qualität der Ergebnisse (Precision) umso geringer. Um die Qualität zu steigern, werden ab einem bestimmten Schwellenwert alle schlechter bewerteten Dokumente nicht ins Ranking aufgenommen. 25 Die Gewichte der Spalten weight sind aus dem System genommen und hängen von den Gewichtungsverfahren ab.
6 Die Suchmaschine 39 SQL-Statements: // Suchwort in Abfragetabelle einfügen INSERT INTO querytable VALUES( fussball,1); // Suchabfrage SELECT i.docid, SUM(q.weight * k.weight * i.weight * f.weight) FROM querytable q, indextable i, keywords k, files f WHERE q.keyword=k.keyword AND i.keyword=k.keyword AND i.docid=f.id GROUP BY i.docid ORDER BY 2 DESC; Algorithmus 1: Suchabfrage als SQL Statement In Worten sucht obiges Beispiel nach allen Dokumenten, die mindestens ein Schlüsselwort der Suchanfrage enthalten. Die Ergebnisse werden nach Relevanz sortiert zurückgegeben. Die Gewichtung eines Dokumentes ergibt sich aus der Summe der Relevanzen jedes gesuchten Schlüsselwortes. Die Relevanz eines Wortes ergibt sich wiederum aus dem Produkt des eigentlichen Dokumentgewichtes f.weight, dem Termgewicht k.weight und dem lokalen Gewicht i.weight. Eventuell können die Terme der Suchanfrage auch schon gewichtet sein und bei der Relevanzberechnung mit q.weight berücksichtigt werden. Boolesche Operatoren können durch das Suchtermgewicht q.weight ausgedrückt werden, indem man für die Negation einen Minuswert (q.weight= -1 ) und für die Schnittmenge ein hohes Gewicht festlegt (q.weight= 5 ). Dies bedeutet, dass alle Dokumente, die ein ausgeschlossenes Suchwort enthalten, negative Werte erlangen. Bei der Schnittmenge ist das Gegenteil der Fall, - hier gilt für das Suchwort die 5-fache Wertung.
6 Die Suchmaschine 40 6.3 Verbesserung der Ergebnisse Um die Qualität der Ergebnisse weiter zu verbessern, werden Relevanz-Beurteilungen des Benutzers mit einbezogen. Dieses Verfahren nennt man Relevance Feedback Modell. Abbildung 13: Relevance Feedback Modell 6.3.1 Relevance Feedback Das Relevance Feedback Modell dient der Steigerung der Ergebnisqualität, indem Bewertungen von Benutzern in das Ranking mit einfließen. Eine Möglichkeit ist, Dokumente, die häufig aufgerufen werden, höher zu bewerten, als Dokumente, die nur sehr selten angezeigt werden. Diese Idee ist das Grundkonzept des von Larry Page und Sergey Brin 26 entwickelten Ranking Algorithmus von Google. Eine andere Möglichkeit ist, den Benutzer angezeigte Dokumente bewerten zu lassen, um diese Bewertung als Gewicht in neue Anfragen einwirken zu lassen. Um diese Bewertungsentscheidung dem Benutzer abzunehmen, wurde das Pseudo Relevance Feedback Modell entwickelt. 6.3.2 Pseudo Relevance Feedback Das Pseudo Relevance Feedback Modell ist eine abgeänderte Form des Relevance Feedback Modells, um dem Benutzer die Bewertungsentscheidung abzunehmen. Dies erledigt die Suchmaschine selbst, indem die Dokumente nach ihrer Position im Ranking bewertet werden. Durch diese Methode können aber auch niedrig gewichtete relevante Dokumente aussortiert werden, während dagegen höher gewichtete nicht relevante Dokumente automatisch an Wichtigkeit gewinnen, ohne dass das System den Fehler merkt. Neutralisieren kann man diesen Fehler, indem die Häufigkeit der Dokument-Aufrufe 26 Larry Page, Sergey Brin: Gründer von Google
6 Die Suchmaschine 41 mit in die Bewertung einbezogen wird. Dennoch kann dieses Modell nie die Qualität einer manuellen Expertenbewertung erreichen. 6.3.3 Fazit Das manuelle Relevance Feedback Modell mit Benutzerbefragung ist ein sehr ausgereiftes System, um die Suchqualität enorm zu steigern. Beliebte Dokumente bekommen hierbei eine bessere Position als uninteressante Texte. Der Nachteil des Systems ist jedoch, dass der Benutzer sehr viel Zeit in die Bewertung der Dokumente stecken muss. Das Pseudo Relevance Feedback Modell nimmt dem Benutzer dagegen die Arbeit ab, erreicht aber schlechtere Ergebnisse und kann in seltenen Fällen auch Qualitätsverschlechterungen verursachen. Deshalb ist es besser, sich auf ein leistungsfähiges Gewichtungsverfahren zu konzentrieren, um die Qualität der Ergebnisse zu steigern.
7 Evaluierung 42 7 Evaluierung Die Evaluierung von Verfahren spielt in der Informatik eine große Rolle. Im Information Retrieval gibt es jedoch auf Grund der Komplexität der Aufgabenstellung keine vernünftigen nicht-experimentellen Methoden zur Beurteilung von Retrievalverfahren. Um die Qualität der Ergebnisse eines Retrievals zu beurteilen, bewertet man die Relevanz eines Dokumentes zu einer Suchanfrage. Diese Relevanz wird von Hand durch Experten ausgewertet. Die beiden wichtigsten Größen bei der Bestimmung der Qualität sind Precision (Genauigkeit der Treffer) und Recall (Anzahl der Treffer). Abbildung 14: Precision and Recall 27 Anmerkung: A = Relevante gefundene Dokumente B = Gefundene Dokumente C = Relevante Dokumente D = Nicht relevante und nicht gefundene Dokumente 27 Quelle: [15] Bernhard Bakavac (2001), S. 15
7 Evaluierung 43 7.1 Precision Die Größe Precision stellt die Qualität der Ergebnisse dar. Sie ergibt sich aus dem Verhältnis der gefundenen relevanten Dokumente (A) und der Anzahl aller gefunden Dokumente (A B). Hierbei kann Precision einen Wert zwischen 0 und 1 annehmen. Wobei 0 bedeutet, dass keine relevanten Dokumente gefunden wurden. Werden nur relevante Dokumente gefunden, nimmt Precision den Wert 1 an. Zahl der gefundenen relevanten Dokumente Precision = Zahl der gefundenen Dokumente = A A B 7.2 Recall Recall ist die zweite wichtige Größe und gibt Aufschluss über die Quantität der Ergebnisse. Ein 100%-iges Recall gibt an, dass alle relevanten Dokumente gefunden wurden. Liefert das Recall den Wert 0, so wurden keine relevanten Dokumente gefunden. Somit ergibt sich die Größe Recall aus dem Verhältnis der relevanten gefundenen Dokumente (A) und allen relevanten Dokumenten (A C). Zahl der gefundenen relevanten Dokumente Recall = Zahl der relevanten Dokumente = A A C 7.3 Beurteilung Es existiert eine gegenseitige Abhängigkeit zwischen den Größen Recall und Precision, die Inverse Relation genannt wird. Diese Relation wirkt sich wie folgt aus: Maßnahmen zur Erhöhung des Recalls bewirken eine Reduktion der Precision Maßnahmen zur Erhöhung der Precision bewirken ein Absinken des Recalls
7 Evaluierung 44 Abbildung 15: Vergleich Precision und Recall Beispiel: Eine Suche, die alle Dokumente einer Datenbank findet, erzielt 100% Recall bei einer Precision nahe bei 0. Eine Suche, die genau ein relevantes Dokument von 100 in der Datenbank vorhandenen relevanten Dokumenten findet, erzielt 100% Precision bei einem Recall von 1%. Möglichkeiten, um das Recall zu verbessern sind zum Beispiel Stemming und Trunkierungen. Eine Phrasensuche erhöht die Precision, senkt aber zugleich das Recall. Beispiel: 28 Alle Dokumente: 1000 Relevante Dokumente zum Thema: 80 Gefundene Dokumente: 105 Gefundene relevante Dokumente: 70 Precision = 70 / 105 = 66,66 % Recall = 70 / 80 = 87,5 % Fazit: Das Ziel bei der Entwicklung von Retrieval Systemen sollte es sein, bei möglichst vielen Suchanfragen einen guten Recall bei einer akzeptablen Precision zu erreichen. Es ist jedoch in der Praxis fast nicht möglich, beide Kriterien perfekt zu erfüllen. 28 Zahlen sind aus dem System genommen.
8 Eingeschlagener Realisierungsweg 45 8 Eingeschlagener Realisierungsweg In diesem Kapitel wird der eingeschlagene Realisierungsweg erläutert und auf aufgetretene Probleme hingewiesen. 8.1 Entwicklungsumgebung Um ein großes Projekt professionell anzugehen, sollte man schon im Vorfeld eine Anforderungsanalyse anfertigen, bevor man mit der Auswahl der Entwicklungsumgebung und somit in erster Linie mit der Auswahl der Programmiersprache beginnt. Da das Dokumenten-Management-System hautsächlich im Intranet verfügbar sein soll, eignet sich eine Webapplikation, die von jeder Workstation erreichbar ist. Die Skript- Sprache PHP könnte sehr leicht für das Webinterface benutzt werden, jedoch macht es keinen Sinn, den Indexserver als PHP Skript zu implementieren, obwohl diese Variation eines Dokumenten-Management-Systems bereits existiert. Eine Mixtur aus mehreren Entwicklungsumgebungen (Beispiel: PHP für das Webinterface und C++ für den Indexserver) macht keinen Sinn, da der Aufwand enorm ansteigt und die Wiederverwendbarkeit von Quelltexten sinkt. Auch würde die Fehleranfälligkeit des Systems steigen, da mehr Schnittstellen nötig sind. Die Sprache sollte kurz gesagt folgende Eigenschaften besitzen: Parsen von XML und Transformation mit XSL Webapplikation oder Webserver Parsen verschiedener Dateiformate (doc, pdf, xls, etc.) Datenbankanbindung Ausführen von Anwendungen (*.exe) Flexibilität Objektorientiertheit Stabilität Niedrige oder keine Lizenzkosten
8 Eingeschlagener Realisierungsweg 46 Optional sind folgende Eigenschaften: Open Source Produkte verfügbar Plattformunabhängigkeit Gute Performance Die Sprache, mit der sich ein solches System am besten entwickeln lässt, ist momentan Java. Java ist plattformunabhängig, kostenlos, Open Source und stellt Packages zu allen oben genannten Anforderungen bereit. Die Sprachen C++, C# und Delphi wären auch in Frage gekommen, dennoch hat Java die Nase vorn, da Java die einzige kostenfreie Variante darstellt. Tabelle 6: Vergleich Java, C++, Delphi, PHP Eigenschaft Java C++ Delphi PHP XML, XSL ++ ++ ++ ++ Webapplikation ++ + + ++ Datei-Parser + ++ ++ 29 Objektorientiert ++ + ++ O Open Source ++ 30 ++ Plattformunabhängig ++ + 31 ++ Flexibel ++ + + Performance + ++ ++ O Bewertung: nicht möglich O schlecht + gut ++ sehr gut 8.1.1 IDE Die nächste Aufgabe ist die Suche nach einer leistungsfähigen und flexiblen Entwicklungsumgebung für Java. Für ein professionelles Entwicklungsumfeld ist eine leistungsstarke integrierte Entwicklungsumgebung, kurz IDE, unverzichtbar. 29 Nur Parser für *.xml, *.txt, *.html, *.pdf vorhanden. 30 Nur IDE kostenpflichtig, Komponenten sind meist Open Source 31 Delphi ist für Linux als Kylix verfügbar, jedoch nicht für andere Systeme (z.b. Unix)
8 Eingeschlagener Realisierungsweg 47 Das Eclipse Projekt (http://www.eclipse.org) 32 ist ein Open Source Projekt, das sich der Entwicklung einer robusten und umfassenden Entwicklungsplattform verschrieben hat, die für den kommerziellen Einsatz tauglich ist. Das Grundgerüst des Projektes bildet die Eclipse Plattform, die eine erweiterbare auf Java basierende IDE darstellt. Sie zeichnet sich neben ihren eigenen Features durch einen starken Integrationscharakter aus, der das Einbinden externer Tools ermöglicht. Abbildung 16: Der Eclipse Editor 8.1.2 Webserver Zum Beispiel lässt sich das Jakarta Projekt Tomcat (http://jakarta.apache.org/tomcat) direkt in Eclipse einbinden, welches als Webserver für die Applikation benutzt wird. Trotz ehemaliger Probleme zwischen Apache und Tomcat ist die Verschmelzung der beiden Produkte inzwischen ein Kinderspiel. 32 Als Alternative wäre auch Borland JBuilder in Frage gekommen.
8 Eingeschlagener Realisierungsweg 48 8.1.3 Datenbanksystem Als Datenbank eignet sich die kostenlose Open Source Datenbank MySQL (http://www.mysql.com) hervorragend, da sie im Bereich Webapplikationen sehr weit verbreitet ist. Die Datenbanksysteme Oracle und MSSQL sind dagegen sehr teuer, bieten aber mehr Funktionsumfang. Für das Dokumenten-Management-System werden diese zusätzlichen Funktionen jedoch nicht benötigt. Da es das Ziel war, das System auch möglichst kostengünstig zu entwickeln, liegt die Entscheidung nahe, MySQL zu benutzen. 8.1.4 Datenintegrität Um die Integrität des Projektes zu bewahren, empfiehlt sich ein CVS Server, dessen Anbindung direkt in Eclipse integriert ist. CVS steht für Concurrent Versions System und bietet die Möglichkeit Quelltextdateien desselben Projektes von mehreren Benutzern gleichzeitig zu sichern, ohne dass es zu Datenverlust kommt. Sichern mehrere Benutzer die gleiche Datei, werden die Änderungen zusammengeführt, ohne die Integrität des Projektes zu gefährden. Als externes Tool kommt das Open Source Programm WinCVS (http://www.wincvs.org) in Frage. Die Alternative von Microsoft stellt Microsoft Source Safe dar. 8.1.5 Projektplanung Um das Projekt zu planen, benötigt man ein UML 33 Tool, mit dem man graphisch arbeiten kann. Auch hier gibt es sehr viele gute Produkte. Eines davon ist UML Studio von PragSoft. Der Vorteil zeigt sich in der Code Generierung, das heißt es können Klassendiagramme direkt in die gewünschte Programmiersprache konvertiert werden. Diese Arbeitserleichterung ist unerlässlich für große Projekte. 33 UML: Unified Modeling Language. Dient zum Erstellen von Klassendiagrammen
8 Eingeschlagener Realisierungsweg 49 Abbildung 17: PragSoft UML Studio 8.2 Framework Um das Projekt flexibel zu gestalten, entwickelte ich zuerst ein Framework, welches alle Projektspezifischen Funktionen implementiert. Für grafische Oberflächen, wie die Administrationsapplikation oder das Webinterface gibt es eigene Packages, die auf das Framework zurückgreifen. Das Framework besteht aus Manager Klassen, die sich um das Anlegen, Ändern, Löschen und Speichern von Objekten kümmern.
8 Eingeschlagener Realisierungsweg 50 Abbildung 18: Klassendiagramm "Framework" Das Klassendiagramm zeigt die Grundfunktionen des Frameworks. Um einen Benutzer als Objekt der Klasse User zu speichern, benötigt man den User Manager, der eine Schnittstelle zum Connection Manager enthält. Dieser wiederum führt Datenbank abfragen aus und liefert die Ergebnisse an den User Manager zurück. Analog funktioniert der Ablauf bei Uploads und Categories. Alle Datenspeichernde Klassen implementieren das Interface IElement, welches einen XML Knoten repräsentiert. Mit Hilfe der Methode toelement() wird ein neuer Knoten erzeugt, der alle Informationen zu diesem Objekt enthält.
8 Eingeschlagener Realisierungsweg 51 Bei einem Objekt der Klasse User gibt die Methode folgenden Knoten zurück: Abbildung 19: User als XML Knoten Auf diese Funktionen greifen auch alle Objektlisten ( UserList, UploadList, ) und alle Manager zurück, um Import- und Export-Methoden zu implementieren. 8.2.1 Datenbankzugriff Die Datenbankverbindung wird über den ConnectionManager hergestellt, der die einzige Schnittstelle zum Datenbankserver enthält. Der Zugriff erfolgt über folgende Methoden, die einen SQL Befehl als Parameter erwarten: public boolean executeupdate(string strsql) public ResultSet executequery(string strsql) public int executequerygetint(string strfield, String strsql)... Die Klasse ContentConnectionManager ist vom Connection Manager abgeleitet und enthält vordefinierte Datenbankabfragen, so genannte Prepared Statements, die den Datenbankzugriff enorm beschleunigen. Beispiele hierfür sind: public boolean insertkeyword(string strkeyword, int nfrequency) public boolean updatefileweight(int nfileid, double dweight) public ResultSet searchquery(int nuserid)...
8 Eingeschlagener Realisierungsweg 52 8.2.2 Interne Datenverwaltung Generell werden Daten (Benutzer, Dokumentbeschreibungen, Kategorien, ) in der Datenbank gespeichert. Intern gibt es jedoch für jeden Typ eine eigene Klasse, die alle Attribute und dazugehörigen Methoden enthält. Um mehrere Objekte eines Typs zu verarbeiten, existiert für jede Klassen eine Objektliste, welche von der Klasse java.util.arraylist abgeleitet ist. Auch die Objektlisten implementieren das Interface IElement, um XML Knoten zu erstellen. Der betreffende Manager holt die jeweiligen Daten aus der Datenbank und verpackt sie als Objekte in eine Objektliste. Folgendes Klassendiagramm zeigt diese Abhängigkeit im Beispiel User : Abbildung 20: Klassendiagramm "User" Ebenso gibt es Abhängigkeiten für die Klassen Upload, Category, Bookmark und SearchResult.
8 Eingeschlagener Realisierungsweg 53 Abbildung 21: Klassendiagramm "Upload" 8.2.3 Indexieren von Dokumenten Um ein Dokument zu indexieren, wird es zunächst mit Hilfe des Upload Managers in die Datenbank aufgenommen. Der Content Manager implementiert die Methode addupload ( Upload upload ), mit der ein Dokument indexiert wird. Hierbei wird wie folgt vorgegangen: 1. ContentManager.addUpload ( Upload upload ) Überprüfung des Dateiformates a. FileConverter.parse ( String strfilename ) Extrahieren des Inhalts als Text. Je Dateiformat ist ein Parser vorhanden, der das Interface IConverter implementiert. b. ContentManager.indexText ( StringBuffer strplaintext, Upload upload ) i. Zerlegen des Textes in Wörter mit Hilfe der Klasse StringTokenizer und Entfernen aller Stoppwörter. ii. Analyse der Sprache anhand der Stoppwörter
8 Eingeschlagener Realisierungsweg 54 iii. Stemming der Wörter iv. Entfernen von seltenen und sehr häufigen Wörtern (Lower-, UpperCutOff) v. Wörter zum Index hinzufügen Das Gewichten der Dokumente und Schlüsselwörter funktioniert über die manuell aufzurufende Methode adjustweights() des Content Managers. Die Gewichte werden in der Reihenfolge 1. Lokale Gewichte 2. Globale Gewichte 3. Normalisierungsgewichte bearbeitet. Es sind mehrere Verfahren 34 implementiert, jedoch haben folgende Methoden die besten Ergebnisse 35 geliefert. Tabelle 7: Benutzte Gewichtungsverfahren Formel Name Abkürzung Typ L ij 1+ = 0 f ij 0.5 für für f f ij ij > 0 = 0 Square root SQRT Lokal G = i log N n i Inverse document frequency IDFB Global N j = n ( Gi Lij ) i= 0 1 Cosine normalization 2 COSN Normalisierung Anmerkung: f ij Häufigkeit des Terms i in Dokument j N Anzahl aller Dokumente n i Häufigkeit des Terms i n Anzahl aller Terme 34 Gewichtungsverfahren, siehe 5.2 35 Ergebnisse wurden durch manuelle Tests des DMS ausgewertet
8 Eingeschlagener Realisierungsweg 55 8.3 Indexserver Der Indexserver stellt das Herzstück des Systems dar und benutzt alle Manager Klassen des Frameworks zugleich. Damit das Indexieren von Dokumenten kontrolliert im Hintergrund abläuft, wird der Server als ein eigener Thread ausgeführt. Der Server stellt die Klasse IndexEngine bereit, die folgende drei Threads verwaltet: AdjustWeightsThread: Justieren der Gewichte für Schlüsselwörter IndexThread: Indexieren von Dokumenten ImportUploadsThread: Automatisches Importieren von Verzeichnissen Die Threads sind von der Klasse Monitor abgeleitet, welche die MVC 36 Funktionen implementieren. Als Gegenstück implementieren die IndexEngine und der IndexServer das Interface IViewer, um bei Änderungen informiert zu werden. Startet die Engine einen Thread, registriert sie sich bei ihm über die Methode registerviewer ( IViewer viewer ). Sobald eine Änderung vorliegt, z.b. ein fertig gestellter Indexierungsvorgang, ruft der Thread bei allen Viewern die Funktion statehaschanged() auf. So hat die Administrationsapplikation immer den aktuellen Stand des Indexierungsprozesses. Abbildung 22: Klassendiagramm "IndexEngine"
8 Eingeschlagener Realisierungsweg 56 Der für die Indexierung verantwortliche IndexThread läuft in einer Endlosschleife ab. Um OutOfMemory Exceptions zu vermeiden, wird vor jeder Indexierung der Speicher geprüft. Der Upload Manager liefert das nächste Dokument in der Warteschleife, sofern diese nicht leer ist. In diesem Fall legt sich der Thread für eine bestimmte Zeit schlafen. Indexiert wird ein Dokument mit der Methode addupload ( Upload currentupload) des Content Managers, der im Fehlerfalle eine ParsingFailedException wirft. Anschließend wird das Dokument aus der Warteschleife genommen und die Methode statehaschanged() bei allen Viewern aufgerufen. while ( true ) { // Wait until enough memory is available, otherwise sleep } waitformemory(); // Get next scheduled upload in queue currentupload = uploadmanager.getnextscheduledupload(); if ( currentupload!= null ) { try { // Index document by content manager contentmanager.addupload ( currentupload ); } catch ( ParsingFailedException e ) { Logger.logWarning ("File could not be prepared"); } // Remove from queue uploadmanager.checkinupload ( currentupload ); // Inform viewers about changes statehaschanged(); } else // When queue is empty { // Wait some time and check again sleep ( getenginesleeptime() ); // seconds } Algorithmus 2: IndexThread Der Ablauf der Indexierung wurde bereits in 8.2.3 erläutert. 36 Model View Controller
8 Eingeschlagener Realisierungsweg 57 8.4 Administrationsapplikation Die Administrationsapplikation ist eine grafische Oberfläche, um den Indexserver zu verwalten. Des Weiteren sind folgende Funktionen implementiert: Import, Export, Anlegen, Ändern, Löschen von Benutzern Import, Export, Anlegen, Ändern, Löschen von Kategorien Import, Export, Hinzufügen, Ändern, Löschen, Indexieren von Dokumenten Import, Export, Anlegen, Ändern, Löschen von Stoppwörtern Die Oberfläche läuft in einem anderen Thread wie der Indexserver, um eine ständige Bedienung des Programms zu ermöglichen. Das MVC 37 Konzept sorgt für die automatische Aktualisierung von Panes 38 bei Datenänderungen. Abbildung 23: Grafische Oberfläche des Administrationstools 37 Siehe 8.3 38 Panes: Oberflächen, die Objekte anzeigen (z.b. UserEditPane, UploadEditPane, )
8 Eingeschlagener Realisierungsweg 58 8.5 Webinterface Der Zugang zur Suchmaschine wird den Studenten und Professoren über das Webinterface ermöglicht, welches als Java Servlet auf einem Apache Tomcat Server läuft. Auch der Indexserver bekommt hier eine grafische Oberfläche, um die Administration zu erleichtern. Das Index Servlet implementiert den Indexserver genauso, wie die Administrationsapplikation, bietet aber weniger Funktionen. Es sind genau drei Servlets im Einsatz: SearchServlet: Suchmaschine und Uploadportal IndexServlet: Indexserver und Administration DownloadServlet: Download Manager für Dokumente Bei allen Servlets wird viel Wert auf Sicherheit gelegt. Somit ist es für einen Benutzer mit einfachen Leserechten nicht möglich, Dokumente hochzuladen oder zu verändern. Um die Sicherheit zu gewährleisten, sind alle sicherheitsrelevanten Funktionen bereits im Framework implementiert. Jeder Benutzer hat einen Accesstype, der die Werte None, Guest, Read, Write oder Full annehmen kann. Vor jedem Vorgang wird der Benutzer auf seine Rechte geprüft, um unbefugte Zugriffe abzuwehren. Betritt ein Benutzer das Web Portal, wird er aufgefordert sich einzuloggen. Ist dieser Vorgang erfolgreich, wird eine Session erzeugt, mit welcher der Benutzer jederzeit eindeutig identifiziert werden kann. Das dient auch der Protokollierung von Suchanfragen zur Verbesserung zukünftiger Suchvorgänge. Damit keine Sessions offen bleiben, wird jede Session serverseitig nach einem Timeout wieder geschlossen. Durch die Techniken XML und XSL ist das Webinterface flexibel und erweiterbar gestaltet. Die Servlets generieren kein HTML sondern leiten die Anfragen an die Report Klassen weiter. Diese drei Reports 39 sind vom Interface IReport abgeleitet und implementieren die Methode producereport ( HTTPServletRequest request ). ProduceReport generiert einen XML Baum, anhand der im Framework benutzen Methode toelement(). Soll zum Beispiel eine Liste von Suchergebnissen ausgegeben werden, genügt es, an der Ergebnisliste SearchResultList die Methode toelement() 39 Jedes Servlet besitzt einen Report zum generieren der Seiten: IndexReport, SearchReport, DownloadReport
8 Eingeschlagener Realisierungsweg 59 aufzurufen. Damit wird ein Baum aus Dokumentbeschreibungen als XML Knoten erstellt. Da alle Datenspeichernden Klassen vom Interface IElement abgeleitet sind, ist dieser XML Export bei allen Objekten möglich. Reiner XML Text ist jedoch nicht besonders gut zu lesen. Deshalb wird eine Transformation des XML Baums mit Hilfe eines XSL Stylesheets durchgeführt, um eine formatierte HTML Seite zu erzeugen. Dies hat den Vorteil, dass das Stylesheet jederzeit ausgetauscht werden kann, ohne den Server neu zu starten. Auch unterschiedliche Layouts mit mehreren Stylesheets sind denkbar. Ein weiterer Vorteil kann im Datenexport gesehen werden. XML wird heutzutage von den meisten Office Produkten unterstützt und erlaubt so eine Weiterbearbeitung der Ergebnisse mit Microsoft Excel oder Microsoft Word. Auch kann der Webserver jederzeit durch einen PDF Writer erweitert werden, der die erzeugten Seiten direkt in Adobe PDF Dokumente wandelt. 8.5.1 Indexservlet Das Indexservlet bietet Administratoren die Möglichkeit, Benutzer und Kategorien hinzuzufügen oder zu ändern. Zum zweiten werden Information über den aktuellen Indexierungsprozess dargestellt, der als Thread im Hintergrund läuft. Tritt ein Fehler beim Parsen von Dokumenten auf, kann der Administrator diesen sofort anhand der Error Liste erkennen und beheben. Dieser Informationsfluss wird durch die Methode toelement() des vom Interface IElement abgeleiteten IndexThreads realisiert. Damit ist es möglich jederzeit aktuelle Daten über den Indexierungsprozess zu bekommen, ohne diese direkt anzufordern.
8 Eingeschlagener Realisierungsweg 60 Ein Knoten kann wie folgt aussehen: Abbildung 24: XML Export der IndexEngine 8.5.2 Searchservlet Der wichtigste Teil des Webinterfaces stellt das Searchservlet dar. Die Suchmaske erlaubt es dem Benutzer beliebige Suchanfragen zu erstellen. Der Suchtext kann mit Booleschen Ausdrücken in Form von + und modifiziert werden, um genauere Ergebnisse zu erhalten. Optional können die maximale Anzahl der Ergebnisse, die Sprache der Dokumente, das gesuchte Dateiformat und das Dateialter angegeben werden. Durch die Checkbox Websearch wird zusätzlich über Google gesucht, wobei die erhaltenen Suchergebnisse an das eigene Ranking angehängt werden. Die Bookmarkliste zeigt die persönlichen Lesezeichen und besonders interessante Dokumente. Dazu gehören: Häufig aufgerufene Dokumente Zuletzt aufgerufene Dokumente Von ähnlichen Benutzern häufig aufgerufene Dokumente
8 Eingeschlagener Realisierungsweg 61 Die Ähnlichkeit der Benutzer ergibt sich aus der größten Übereinstimmung der persönlich ausgewählten Kategorien. Diese Kategorien können von Benutzern beliebig abonniert werden, um eine Auswahl zu dem jeweiligen Thema angezeigt zu bekommen. Limitiert sind die Ergebnisse einer Kategorie standardmäßig auf fünf Dokumente. Durch den Button More results können alle Ergebnisse der jeweiligen Kategorie angezeigt werden. Wählt ein Benutzer zum Beispiel die Kategorie Künstliche Intelligenz, so werden die fünf relevantesten Ergebnisse zum Thema Künstliche Intelligenz angezeigt. Die Suchanfrage bezieht sich auf die jeweils vom Administrator gewählten Schlüsselwörter der Kategorie. Im Beispiel Künstliche Intelligenz wären das Tiefensuche, Breitensuche, Heuristik, Künstliche Intelligenz, KI, AI, A-Stern, Bestensuche, Backtracking. Auch für diese Schlüsselwörter gilt die Boolesche Logik zur Verbesserung der Ergebnisse. Abbildung 25: Suchmaske des Searchservlets Das Framework bietet zusätzlich die Möglichkeit, Dokumente im Voraus einer Kategorie automatisch während des Indexierungsprozesses zuzuordnen. Auch können Kategorien beim Hochladen von Dokumenten durch Professoren bestimmt werden. Diese Zuordnung wird momentan jedoch nicht von der Suchmaschine benutzt, da diese Methode den Relevanzvergleich beim Ranking außer Kraft setzt. Im Klartext bedeutet dies, dass zu einer Kategorie gehörende Dokumente von der Suchmaschine selbst gefunden und als Ranking ausgegeben werden. Nicht gefunden werden Dokumente, die zu
8 Eingeschlagener Realisierungsweg 62 einer Kategorie manuell zugeordnet wurden, jedoch keine relevanten Informationen 40 enthalten. 8.5.3 Downloadservlet Das Downloadservlet hat die Funktion, angefragte Dokumente zum Download bereitzustellen und gleichzeitig diese Aktionen zu Protokollieren. Diese Information Wer lädt was wann herunter? wird zur Verbesserung zukünftiger Suchanfragen verwendet, indem die beliebtesten Dokumente ähnlichen Benutzern angeboten werden. Bei der direkten Suche können diese Informationen für das Relevance Feedback Modell genutzt werden, um häufig aufgerufene Dokumente stärker zu gewichten. Hierfür gilt die Downloadrate je Monat, um neue Dokumente nicht negativ zu beeinflussen. Als Erweiterung ist auch ein Load Balancer 41 einsetzbar, der einen Lastenausgleich vornehmen kann, indem er Anfragen auf mehrere Server verteilt. 8.6 Spezielle Probleme 8.6.1 Speicherverwaltung Bei der Entwicklung des Systems stellte sich das Speichermanagement von Java als nachteilig heraus. Das Problem liegt darin, dass man keinen Speicher von Hand freigegeben kann, sondern auf den Garbage Collector angewiesen ist. Der Garbage Collector läuft als Thread ab und sucht nicht referenzierte Variablen, deren Speicher er frei gibt. Dieses Verfahren hat den Vorteil, dass der Entwickler sich nicht mehr um das Speichermanagement kümmern muss. Während der Entwicklung des Indexservers traten jedoch häufig nach sehr großen Dokumente (> 10 MB) java.lang.outofmemory Exceptions auf. Das Problem lag darin, dass der Garbage Collector nicht alle unbenötigten Variablen aufspüren konnte und somit immer mehr Speicher belegt wurde. Man muss wissen, dass Java nicht auf den 40 Relevante Informationen ergeben sich bei Kategorien aus den jeweiligen Schlüsselworten. 41 Load Balancer: Verteilt die Last auf mehrere Server
8 Eingeschlagener Realisierungsweg 63 Hauptspeicher des Computers direkt zugreift, sondern einen gewissen Teil davon für die Virtuelle Maschine reserviert. Dieser Wert liegt in der Standardeinstellung bei 63,5 MB. Wird dieser Wert überschritten, wirft die Java Applikation eine java.lang.outofmemory Exception. Das Problem habe ich gelöst, indem ich die Speichergröße auf ca. 200 MB erhöht habe. Um aber wirklich ganz sicher zu gehen, habe ich im Indexierungsthread eine Methode waitformemory() implementiert, die erst mit der Indexierung eines Dokuments beginnt, wenn ausreichend Speicher vorhanden ist 42. 8.6.2 Datenbankverbindungen Der MySQL Server hat eine Sicherheitsfunktion, die Verbindungen zur Datenbank automatisch trennt, sofern sie acht Stunden lang nicht benutzt worden sind. Dies hat den Vorteil, dass bei einem Programmabsturz keine Ports durch verwaiste Datenbankverbindungen unnötig belegt werden. Der Nachteil zeigte sich bei dem ersten offiziellen Test des Dokumenten-Management- Systems. Nachdem das System am Tag der Bekanntmachung gut funktionierte, konnte man sich am nächsten Morgen nicht mehr anmelden. Ein Blick in die Logdatei zeigte, dass der MySQL Server die Verbindung getrennt hatte. Gelöst habe ich das Problem, indem ich die Server Variable wait_timeout in der Datei C:\Windows\My.ini von 28.800 (8 Stunden) auf 604.800 (7 Tage) erhöht habe. Das bewirkt, dass der Server erst nach 7 Tagen Nichtbenutzung die Verbindungen frei gibt. Anmerkung: Der Wert der Variable wait_timeout kann beliebig erhöht werden. 8.7 Importierte Algorithmen und Programme Die verwendeten Parser wurden nicht von mir persönlich entwickelt, sondern teilweise nur abgeändert und erweitert. Die Verwendung von vorhanden Algorithmen und Tools erleichterte die Implementierung des Systems. 42 Indexierunsprozess mit waitformemory() Methode: Siehe 8.2.3
8 Eingeschlagener Realisierungsweg 64 Tabelle 8: Importierte Parser Name Form Verwendung Anmerkung chm2html.exe EXE CHM Dateien, Import über Einlesen des stdout 43 C++ Tool umprogrammiert ppt2html.exe EXE PPT Dateien, Import der generierten HTML Datei ps2text.exe EXE PostScript Dateien, Import über Einlesen des stdout PDFBox-0.6.2.jar JAR PDF Dateien, Algorithmus integriert tm-extractors- 0.2.jar JAR Word Dokumente, Algorithmus integriert xlrd.jar JAR Excel Sheets, Algorithmus integriert Tabelle 9: Importierte Algorithmen Name Verwendung Anmerkung GermanStemmer.java Stemming für deutsche Wörter Modifiziert EnglishStemmer.java Stemming für englische Wörter Modifiziert googleapi.jar Externe Suche bei Google 8.8 Erweiterbarkeit Eines der Hauptziele war es, das System so flexibel und erweiterbar wie möglich zu implementieren. Durch den konsequenten Einsatz von Interfaces können dem Projektweitere Programmbausteine hinzugefügt werden. Im Bereich Linguistik sind momentan Stemmer 44 für die Sprachen Deutsch, Englisch und Französisch vorhanden. Um weitere Sprachalgorithmen zu ergänzen, müssen diese lediglich das Interface IStemmer implementieren, welches die Methode stem ( String 43 stdout: Standardausgabe. Kann über die Klasse StreamCatcher ausgelesen werden 44 Stemmer: Siehe 5.1.4
8 Eingeschlagener Realisierungsweg 65 strword ) vorschreibt. Dabei muss der Algorithmus kein Stemming Algorithmus sein, sondern kann eine beliebige Transformation des Parameters strword::string vornehmen. Für weitere Dateiparser 45 ist das Interface IConverter vorgesehen. Alle Parser implementieren die Methode parse ( String strfilename ), die den extrahierten Text der als Parameter angegebenen Datei zurückliefert. Es spielt demnach keine Rolle, ob die Funktion eine reine Java Funktion ist, oder eine externe Datei per ShellExecute aufruft. So können Parser auch als C- oder Pascal-Programm erstellt und deren Bildschirmausgaben als extrahierten Text gewertet werden. Die Parser PPT2Text, PS2Text, CHM2Text sind nach diesem Prinzip konzipiert. Durch die strikte Trennung von graphischer Oberfläche und Verarbeitung kann die Benutzeroberfläche ohne Änderungen am Framework ausgetauscht werden. 45 Parser: Siehe 5.1.1
9 Zusammenfassung und Ausblick 66 9 Zusammenfassung und Ausblick Die größte Schwäche der Suchmaschinen liegt in ihrer Arbeitsweise: Sie gleichen senilen Bibliothekaren, die die Regale ablaufen, bei der Datenmenge aber nicht mehr in der Lage sind, das Relevante herauszufiltern. 46 Dieses Zitat beschreibt die Schwäche der heutigen Retrieval Methoden. Auch das hier entwickelte Dokumenten-Management-System vermag nur Dokumente anhand von Schlüsselwörtern zu finden. Das ist für das Finden von relevanten Dokumenten (Recall 47 ) vollkommen ausreichend, für die Unterscheidung von relevant und nicht relevant (Precision 48 ) jedoch noch zu simple. Das System kann den Text nicht analysieren und somit nicht verstehen. Daher kennt die Suchmaschine auch keinen Unterschied bei Homonymen: Beispiel: Gesucht: Wieviel kostet der DVD-Brenner? Gefunden:, nachdem ich das Fleisch gekostet hatte. Die Fähigkeit Texte zu verstehen, dient der Eliminierung von nicht relevanten gefundenen Dokumenten und somit der Steigerung der Precision. Der erste Schritt ist die Einführung eines Wörterbuchs (Thesaurus) und der semantischen Analyse der Texte. Das Dokumenten-Management-System DMS stellt die Schnittstellen für zukünftige Weiterentwicklungen schon bereit. Auch die Indexierung von multimedialen Dokumenten, wie zum Beispiel Audio- (mp3, wav), Video- (avi, mpg) und Bild-Dateien (jpg, gif) stellt demnach seitens des DMS keine Probleme dar. Hierfür fehlen allerdings noch die entsprechenden Algorithmen und Programme. 46 Zitat: [17] CHIP Magazin (2004), Ausgabe 01 2004, S. 35 Suchmaschinen Macht 47 Recall: Siehe 7.2 48 Precision: Siehe 7.1
9 Zusammenfassung und Ausblick 67 Abbildung 26: Modell eines modernen Dokumenten-Management-Systems 49 Solche Dokumenten-Management-Systeme gibt es bereits heute. An der Universität von Alabama wurde das NASA Projekt 50 entworfen, welches diesen Anforderungen genügt. 49 Quelle: [18] Isabel John (2003): Skript zur Vorlesung Fuzzy Logik und Expertensysteme 50 Quelle: [19] Scott Hawker (2003): NASA Standards Advisor Project
Anhang A: Beispiel für das Indexieren eines Textes 68 Anhang A: Beispiel für das Indexieren eines Textes Das nachfolgende Beispiel, zeigt die einzelnen Verarbeitungsschritte beim Indexieren. A.1 Eingabetext Dies ist ein Beispieltext, um den Indexierungsprozess zu verfolgen. Zuerst wird der Text in Wörter zerlegt und Stoppwörter werden entfernt. Anschließend werden die Schlüsselwörter mit einem deutschen Stemmer bearbeitet und in den Index aufgenommen. A.2 Verarbeitung Nachdem alle Stoppwörter entfernt wurden sieht der Text wie folgt aus: beispieltext indexierungspro verfolgen text worter zerlegt stoppworter entfernt anschliessend schlusselworter deutschen stemmer bearbeitet index aufgenommen Beim Wort Indexierungsprozess kann man erkennen, dass das Wort ab dem 15. Zeichen abgeschnitten wird. Dieser Wert kann in der Config Datei eingestellt werden. Nun wird der Stemmer für die deutsche Sprache angewendet: beispieltex indexierungspro verfolg tex wor zerleg stoppwor entf anschliess schlusselwor deutsch stemm bearbei index aufgenomm Bei der Endung t kann man mehrere Fehler (z.b. wor für wort ) in dem Text erkennen, die jedoch keine Probleme bei der Suche hervorrufen, da beim Suchen derselbe Stemming Algorithmus durchlaufen wird. Bevor die Wörter in den Index gelangen, werden noch seltene und zu häufige Wörter entfernt und die restlichen Schlüsselwörter aus Performance Gründen alphabetisch sortiert. Das Eliminieren von seltenen Wörtern wird allerdings erst bei längeren Texten durchgeführt. Der Schwellenwert ist in der Config Datei gespeichert.
Anhang A: Beispiel für das Indexieren eines Textes 69 A.3 Gewichtung Da alle Gewichtungsverfahren nach dem gleichen Schema arbeiten, werde ich nur die von mir gewählte Methode für lokale Gewichte aufzeigen: rs = executequery ( "SELECT fileid, keywordid, frequency " + "FROM indextab;"); // Iterate over the ResultSet while ( ( rs!= null ) && rs.next() ) { // SQRT Method double dweight = 1.0 + Math.sqrt( rs.getint("frequency") + 0.5); } updateindexweight ( rs.getint("fileid"), rs.getint("keywordid"), dweight); Algorithmus 3: Lokales Gewichtungsverfahren "SQRT" Die Werte der folgenden Tabelle sind aus dem echten System entnommen und zeigen einen Auszug aus der Assoziationstabelle indextab. Lediglich die Spalte keyword wurde zur besseren Übersicht nachträglich eingefügt. Tabelle 10: Beispielrechnung für lokale Gewichte fileid keywordid Keyword frequency weight 4993 694730 Grammatik 170 14,05756 4993 694766 Parsertabell 3 2,87082 4993 694796 Teilbaum 21 5,63680 4993 695028 Codier 120 11,97724 4993 695030 Compil 5597 75,81644 4993 695124 Kontextsensitiv 31 6,61248
Anhang B: Beispiel für die Suche 70 Anhang B: Beispiel für die Suche Folgendes Beispiel demonstriert die Vorgehensweise einer Suchanfrage nachdem die Suchwörter der Tabelle querytable hinzugefügt wurden: Table: files Table: querytable id filename date author weight keyword weight 1 Harry Potter Band 1.pdf 2 Harry Potter Band 2.pdf 01.10.2003 Löffler 0,20342 03.10.2003 Gerten 0,11254 harry 0,70000 potter 1,00000 Table: indextable Table: keywords fileid keyword weight 1 harry 0,13352 1 potter 0,36549 1 dumbledore 0,81123 1 london 0,73442 1 zauberer 0,62321 keyword frequency weight harry 1302 0,21332 potter 7033 0,37623 dumbledore 34 0,79823 london 320 0,73421 zauberer 350 0,79123 2 Harry 0,13676 2 Potter 0,34768 2 dumbledore 0,81342 2 London 0,72132 2 zauberer 0,62344 Abbildung 27: Datenbankstruktur 51 51 Die Gewichte der Spalten weight sind aus dem System genommen und hängen von den Gewichtungsverfahren ab.
Anhang B: Beispiel für die Suche 71 // Suchabfrage SELECT i.docid, SUM(q.weight * k.weight * i.weight * f.weight) FROM querytable q, indextable i, keywords k, files f WHERE q.keyword=k.keyword AND i.keyword=k.keyword AND i.docid=f.id GROUP BY i.docid ORDER BY 2 DESC; Algorithmus 4: Suchabfrage als SQL Statement Tabelle 11: Ranking aus Beispielsuche document keyword query weight keyword weight index weight file weight result ranking value 1 harry 0,70000 0,21332 0,13352 0,20342 0,00405 1 potter 1,00000 0,37623 0,36549 0,20342 0,02797 0,03202 2 harry 0,70000 0,21332 0,13676 0,11254 0,00229 2 potter 1,00000 0,37623 0,34768 0,11254 0,01472 0,01701 Demnach ist das Dokument 1 ( Harry Potter Band 1.pdf ) mit einem Relevantwert von 0,03202 besser bewertet als Dokument 2 mit einer Relevanz von 0,01701. Entsprechend wird Dokument 1 vor Dokument 2 im Ranking platziert.
Anhang C: Dateiübersicht 72 Anhang C: Dateiübersicht Das Projekt kann auf jedem System mit Windows 2000/XP direkt, ohne es neu zu kompilieren, eingerichtet werden. Benötigt wird lediglich MySQL Server, Apache Tomcat und Java J2SDK1.4 inkl. J2RE1.4. Folgende Änderungen müssen vorgenommen werden: MySQL: Das data Verzeichnis der Konfigurationsdatei C:\Windows\my.ini muss auf D:\DMS\Datenbank\data gesetzt werden, damit der MySQL Server die Datenbankdateien findet. Environment: Folgende Umgebungsvariablen sind zu setzen: o set JAVA_HOME= C:\Programme\Java\j2re1.4 o set TOMCAT_HOME= D:\Tomcat o set DMS_HOME= D:\DMS Das Verzeichnis D:\DMS gliedert sich in folgende Unterverzeichnisse: Startdateien Eclipse Konfiguration Datenbankdateien XML Backupdateien SQL Scripts JavaDoc Dokumentation Externe JARs und Tools Webserver root Webapplikation root Stylesheets Grafiken Dokumentenbasis Servlet Klassen Klassen Quelltexte Abbildung 28: Dateiübersicht
Anhang D: Import und Export von Daten 73 Anhang D: Import und Export von Daten Der Export von Daten, wie zum Beispiel Benutzern, Kategorien oder Dokumenten, erfolgt generell über das Webinterface mit dem Parameter showxml=true. Dieser Parameter veranlasst den Server, nur ein XML Dokument zu generieren. Sollen alle Uploads exportiert werden, geben wir einfach folgende Anfrage im Browser ein: HTTP - Request: http://141.19.146.112/dms/search?showxml=true&site=upload&showfiles=true Für Kategorien und Benutzer funktioniert es analog, jedoch mit dem Indexservlet DMS/index. Um diesen Schritt einzusparen, gibt es zusätzlich ein Servlet Exportservlet, welches alle Daten direkt exportieren kann. Der Aufruf ist im Administrationsbereich des Indexservlets verlinkt. Der Import von Dokumenten via XML Datei geschieht in zwei Schritten: 1. Dateien per FTP Verbindung in das Verzeichnis D:\preload kopieren. 2. XML Datei erstellen und im Upload Bereich des Searchservlets auswählen. Die XML Datei muss dabei folgende Form aufweisen: Abbildung 29: XML Beispiel für Dokument Import
Anhang D: Import und Export von Daten 74 Wichtig: Es dürfen keine Felder fehlen! Sind Kategorie, Sprache oder Priorität unbekannt, so ist das Attribut id auf -1 zu setzen. Das Datumsfeld muss das Datum in Millisekunden sein dem 01.01.1970 als Attribut time enthalten. Der Text dahinter spielt keine Rolle. Das Feld filename muss den absoluten Pfad der Datei auf dem Server enthalten. Weitere Dokumente werden analog an den Knoten uploads gehängt. Noch einfacher funktioniert der Import und Export über die Administrationsapplikation. Im Menü File->Import gibt es für jeden Objekttyp eine Importmöglichkeit. Für Dokumente ist der Directory Import am einfachsten, da man lediglich das zu importierende Verzeichnis angeben muss. Der Import läuft eigenständig als gesonderter Thread im Hintergrund ab und fügt alle erlaubten Dateien der Warteschleife hinzu. Abbildung 30: Import eines Verzeichnisses
Abbildungsverzeichnis 75 Abbildungsverzeichnis Abbildung 1: Klassendiagramm "Framework"... 13 Abbildung 2: Funktionsweise des Dokumenten-Management-Systems... 14 Abbildung 3: Übersicht der Retrieval Techniken... 15 Abbildung 4: Beispiel der Fuzzy Logik... 17 Abbildung 5: Beispiel für das Vektorraum Modell... 18 Abbildung 6: Beispiel eines Neuronalen Netzwerks... 20 Abbildung 7: Funktionsweise eines Indexers... 23 Abbildung 8: Aufbereitung der Dokumente... 24 Abbildung 9: Verteilung der Termhäufigkeiten... 27 Abbildung 10: Auszug aus dem Porter-Algorithmus... 28 Abbildung 11: Funktionsweise des Retrievals... 35 Abbildung 12: Datenbankstruktur... 38 Abbildung 13: Relevance Feedback Modell... 40 Abbildung 14: Precision and Recall... 42 Abbildung 15: Vergleich Precision und Recall... 44 Abbildung 16: Der Eclipse Editor... 47 Abbildung 17: PragSoft UML Studio... 49 Abbildung 18: Klassendiagramm "Framework"... 50 Abbildung 19: User als XML Knoten... 51 Abbildung 20: Klassendiagramm "User"... 52 Abbildung 21: Klassendiagramm "Upload"... 53 Abbildung 22: Klassendiagramm "IndexEngine"... 55 Abbildung 23: Grafische Oberfläche des Administrationstools... 57 Abbildung 24: XML Export der IndexEngine... 60 Abbildung 25: Suchmaske des Searchservlets... 61 Abbildung 26: Modell eines modernen Dokumenten-Management-Systems... 67 Abbildung 27: Datenbankstruktur... 70 Abbildung 28: Dateiübersicht... 72 Abbildung 29: XML Beispiel für Dokument Import... 73 Abbildung 30: Import eines Verzeichnisses... 74
Algorithmenverzeichnis 76 Algorithmenverzeichnis Algorithmus 1: Suchabfrage als SQL Statement... 39 Algorithmus 2: IndexThread... 56 Algorithmus 3: Lokales Gewichtungsverfahren "SQRT"... 69 Algorithmus 4: Suchabfrage als SQL Statement... 71 Tabellenverzeichnis Tabelle 1: Vergleich der Retrieval Modelle... 22 Tabelle 2: Unterstützte Dateiformate... 25 Tabelle 3: Lokale Gewichtungsverfahren... 31 Tabelle 4: Globale Gewichtungsverfahren... 32 Tabelle 5: Normalisierungsverfahren... 33 Tabelle 6: Vergleich Java, C++, Delphi, PHP... 46 Tabelle 7: Benutzte Gewichtungsverfahren... 54 Tabelle 8: Importierte Parser... 64 Tabelle 9: Importierte Algorithmen... 64 Tabelle 10: Beispielrechnung für lokale Gewichte... 69 Tabelle 11: Ranking aus Beispielsuche... 71
Abkürzungsverzeichnis 77 Abkürzungsverzeichnis CVS DB DBS DMS FREQ HTML IDE IDF IDFB IDFP IDFS IGFF IR MVC NNW PHP SQL UML VSM XML XSL Concurrent Versions System Datenbank Datenbanksystem Dokumenten-Management-System Frequency - Gewichtungsverfahren für lokale Gewichte Hypertext Markup Language Entwicklungsumgebung Inverse document frequency, globales Gewichtungsverfahren siehe IDF Prohabilistic IDF, globales Gewichtungsverfahren Square root global frequency IDF, globales Gewichtungsverfahren Global Frequency IDF, globales Gewichtungsverfahren Information Retrieval Model View Controller Neuronales Netzwerk Skriptsprache Structured Query Language, Befehlsprache für Datenbankabfragen Unified Modeling Language Vector space model, Information Retrieval Modell Extensible Markup Language Extensible Style Language
Glossar 78 Glossar Applikation: Eine Applikation ist ein Programm, das selbständig auf einem Computer abläuft, im Fall von Java-Programmen innerhalb der Java Virtual Machine. Exception: Eine Ausnahme vom normalen Programmablauf; außerdem eine Klasse, die (mit zahlreichen Unterklassen) solche Ausnahmen beschreibt. Garbage Collector: Der Garbage Collector ist ein Programmteil, der den von Objekten nicht mehr benötigten Speicherbereich für neue Objekte frei macht. Der Name kommt vom englischen Wort für Müllsammler. HTML: Hypertext Markup Language Sprache zur Formatierung von Inhalten. Webseiten sind normalerweise als HTML Seiten implementiert. Ein Markup ist dabei ein Textauszeichnung (Ist der Text fett, kursiv, usw.). Der Begriff Hyper in Hypertext meint dabei das sich der Text aus mehreren verteilten Texten zusammensetzt die über Links zu erreichen sind. Klasse: Eine Klasse stellt eine Menge von gleichartigen Objekten und ein Programm dar, das die Eigenschaften von solchen Objekten beschreibt. Package: Ein Package gruppiert eine Menge von Daten- und Entitätstypen. MVC: Das Model View Controller Modell ist ein Design für die Benutzeroberfläche, das aus Smalltalk stammt. In MVC werden die Daten für ein Anzeigeelement Modell (model) genannt. Eine Ansicht (view) zeigt eine bestimmte Darstellung des Modells an. Ein Controller bietet Benutzerinteraktionen mit beidem.
Glossar 79 Open Source: Das bekannteste Open Source Projekt ist Linux im Wesentlichen geht es bei der Open Source Bewegung darum, Software zum einen kostenlos (per download) und zum anderen in Form von Quellcode zur Verfügung zu stellen: Dieser Quellcode kann von anderen verändert werden auf diese Weise soll die Beseitigung von Fehlern (und auch das Aufspüren von Fehlern) in der Software beschleunigt werden. PHP: Eine PHP Seite ist eine HTML Seite die Scripts enthält. Die Scripts sind in der Sprache PHP verfasst und werden auf dem Server ausgeführt, bevor die Seite an den Browser gesendet wird. PHP ist eine ähnliche Methode zur Erzeugung dynamischer Webseiten wie ASP von Microsoft. Scheduler: Der Scheduler ist ein Programm, das sich um das regelmäßige Abarbeiten von Kommandos, bzw. um deren regelmäßiges Aufrufen kümmert. Sinn des Ganzen ist es, bestimmte Aufgaben wie zum Beispiel die Datensicherung möglichst stark zu automatisieren. Servlet: Ein Servlet ist ein Java-Programm, das innerhalb eines Web- Servers abläuft und die Ausgabe an einen Web-Browser sendet. SQL: Structured Query Language ist eine Sprache für die Datenabfragen und Datenänderungen in Datenbanken. Thread: Ein Thread ist ein Programmteil, der zeitlich unabhängig von anderen Programmteilen abläuft, und eine Klasse, mit der solche Abläufe gesteuert werden können; vom englischen Wort für Faden. XML: Extensible Markup Language eine Sprache zur Beschreibung von Inhalten und Strukturen. Das extensible meint dabei, das die Sprache um Elemente erweiterbar ist, sofern diese Elemente anhand einer vorgegebenen Art und Weise definiert werden. Der Nachfolger von HTML wird in XML implementiert werden.
Literaturverzeichnis 80 Literaturverzeichnis [1] Norbert Fuhr (1993): Information Retrieval Scriptum zur Vorlesung im SS 93. http://ls6-www.informatik.uni-dortmund.teaching/courses/ir/ [2] Erica Chisholm, Tamara Kolda (1999): New term weighting formulas for the vector space method in information retrieval [3] Gerhard Salton, C. Buckley (1988): Term weighting approaches in automatic text retrieval. Information processing and Management. [4] Cyrill Burger (1984): Moderne Konzepte - SMART. [5] Gerhard Möller (1996): Diplomarbeit BREVIS Benutzerprofile für das Information Retrieval [6] Thorsten Käter (1999): Diplomarbeit Evaluierung des Text Retrievalsystems Intelligent Miner for Text von IBM [7] Wolfgang Stock (2002): Information Retrieval [8] Alexandra Bünzli (2001): Information Retrieval Eine Einführung in das Indexieren. [9] C. J. van Rijsbergen (1995): Information Retrieval [10] Thomas Mandl (1999): Das COSIMIR-Modell für Information Retrieval mit neuronalen Netzen. [11] M. F. Porter (1980): An Algorithm for Suffix Stripping
Literaturverzeichnis 81 [12] Karin Haenelt (2001): Information Retrieval Modelle [13] Ricardo Baeza-Yates (1999): Modern Information Retrieval. Addison Wesley [14] Norbert Fuhr (2000): Information Retrieval Skriptum zur Vorlesung im WS 00/01. [15] Bernhard Bakavac (2001): Skript zum Kurs Information Retrieval im WS 01/02 [16] A. B. Cremers (2002): IR Modelle [17] CHIP Magazin (2004): Artikel Suchmaschinen-Macht [18] Isabel John (2003): Skript zur Vorlesung Fuzzy Logik und Expertensysteme [19] Scott Hawker (2003): NASA Standards Advisor Project [20] Rädle (2002): Vorlesung Neuronale Netzwerke
Stichwortverzeichnis 82 Stichwortverzeichnis Arbeitserleichterung 11 Boolesche Suche 15, 16 CVS Server 48 Datenbanksystem 10, 48 Eclipse 47 Entwicklungsumgebung 45 Erweiterbarkeit 64 Evaluierung 42 Framework 49 Fuzzy Logik 16 Gewichtungen 29 Globale Gewichte 32 Google 10 IDE 46 Importierte Algorithmen 63 Indexer 23 Indexserver 55, 57 Informationssuche 15 Inputserver 59, 60 Interessenorientiertheit 11 Klartext 23 Lokale Gewichte 31 Mengenoperationen 17 MySQL 48 Neuronale Netzwerke 19 Normalisierungsgewichte 33 Outputserver 62, 63 Parser 24 Precision 43 Probleme 62 Programmiersprache 45 Pseudo Relevance Feedback 40 Qualitätssicherung 11 Realisierungsweg 45 Recall 43 Relevance Feedback 40 Schlüsselwörter 23 SMART 18 Stemming 27 Stoppwörter 26 Suchmaschine 34 Trainingsmuster 19 Vagheit 17 Vektoren 19 Vektorraum Modell 18 Webinterface 58 Webserver 47 WinCVS 48 Wortextraktion 25 Zipf s Gesetz 27
Erklärung Hiermit erkläre ich, dass ich die vorliegende Diplomarbeit selbständig angefertigt habe. Es wurden nur die in der Arbeit ausdrücklich benannten Quellen und Hilfsmittel benutzt. Wörtlich oder sinngemäß übernommenes Gedankengut habe ich als solches kenntlich gemacht. Ort, Datum Unterschrift