Intelligente Informationssuche und Organisation von handwerksrelevanten Webseiten für das Handwerkerinformationsportal (HIP) Diplomarbeit von Thomas Michels angefertigt in der Arbeitsgruppe von Prof. Dr. Gerhard Weikum am Lehrstuhl von Herrn Prof. Dr. Gerhard Weikum innerhalb der Fachrichtung 6.2, Informatik, Universität des Saarlandes 09.03.2005 Inhaltsverzeichnis: 1. Einführung und Themenbeschreibung 3 1.1 Motivation ........................................................................................... 3 1.2 Aufgabenstellung ................................................................................. 7 1.3 Problemspezifische Schwierigkeiten ..................................................... 7 1.4 Aufgabenbereiche der Diplomarbeit ...................................................... 8 2 Vorüberlegungen 9 2.1 Analyse bestehender Suchmaschinen................................................... 9 2.2 Analyse manuell gepflegter Systeme .................................................. 11 2.3 Welche Vorteile kann das „HIP“ bieten ................................................ 12 2.4 Gibt es eine „freie Software“, die man als Basis nutzen kann. ............... 13 3. Das Framework 15 3.1 Die Systemarchitektur........................................................................ 15 3.2 Bingo – Bookmark Induced Gathering of Information............................ 17 3.2.1 Die Komponenten des Bingo-Systems.......................................... 18 3.2.2 Vorgehen des fokussierten Crawlers............................................. 21 3.2.3 Vorgehen des Document Analyzer ............................................... 22 3.2.4. Benutzte Methoden der Feature Selection.................................... 23 3.2.5. Support Vector Machines Klassifizierer ........................................ 28 3.2.6. Benutzte Ranking Methoden ....................................................... 31 3.3 Der Webbereich ................................................................................ 34 3.3.1 Die Suchmaschine ...................................................................... 34 3.3.2 Der Administrationsbereich.......................................................... 39 4. Implementierung 44 4.1 Technische Daten.............................................................................. 44 4.2 Die Initialisierungs-, Optimierungsphase.............................................. 45 4.3 Die Datenbank................................................................................... 48 4.3.1 ERM der wichtigsten Relationen: .................................................. 49 5. Experimente 50 5.1 Websuche des HIP-Crawlers .............................................................. 50 5.2 Micro-, Macro-Scores des HIP ............................................................ 51 5.3 Gütevergleich google.de – HIP anhand ausgewählter Queries .............. 53 5.3.1 Key-Words: erhalt meister............................................................ 53 5.3.2 Key-Words: erhalt meister handwerk ............................................ 55 5.3.3 Key-Words: beruf müller .............................................................. 56 5.3.4 Zusammenfassung ...................................................................... 58 5.3 Lastprofile der HIP-Suchmaschine ...................................................... 58 6. Weitere aufgetretene Schwierigkeiten 60 6.1 Timeouts........................................................................................... 60 6.2 Garbage-Collection ............................................................................ 60 6.3 Dateninkonsistenzen durch neue Crawls ............................................. 61 7. Zusammenfassung und Ausblick 62 8. Anhang A (Pflichtenheft - Funktionalitäten von HIP) 64 9. Anhang B (Spezifizierung der Funktionen der Diplomarbeit) 72 10. Anhang C (API-Dokumentation) 75 11. Anhang D – (Das Datenbankschema) 101 12. Literaturverzeichnis 105 Seite 2 von 105 1. Einführung und Themenbeschreibung 1.1 Motivation Das Internet ist ein weltweites Computer-Netzwerk in dem Daten unter a nderem in Form von Dokumenten zur Verfügung gestellt werden. Eine Besonderheit der Internetdokumente sind so genannte Hyperlinks, die den Nutzer zu weiteren Dokumenten leiten. Man kann das Internet daher als einen großen Graphen bzw. ein Netzwerk von Dokumenten und Daten ansehen. Die Diplomarbeit beschränkt sich auf die Betrachtung des Teils des Internets, das sich aus dem Informationsangebot in Form von Dokumenten darstellt. Durch das exponentiell wachsende Informationsangebot in Form von Dokumenten wird das Auffinden von gewünschten Informationen zusehends schwieriger und wird zum Hauptproblem der Internetnutzung. Dies stellt insbesondere für einen ungeübten Internetnutzer eine besondere Herausforderung dar, denn es gilt bei der Suche mehrere Probleme zu bewältigen. Das erste Problem besteht darin, genau zu definieren, wonach gesucht wird, denn oftmals hat der Benutzer nur eine wage Vorstellung von den gewünschten Inhalten. Nachdem er diese intellektuelle Leistung erbracht hat, steht er vor dem technischen Problem, wie er die gewünschten Informationen in der Flut der Internetdokumente ausfindig machen kann. Oftmals kennt er nur wenige interessante Internetadressen, die nur einen kleine n Ausschnitt der verfügbaren Informationen repräsentieren. Um weitere Dokumente aufzufinden bietet das Internet ihm mehrere Möglichkeiten. Einerseits kann er diverse Suchmaschinen mit unterschiedlich hoher „Intelligenz“ benutzen oder aber auch so gena nnte „Kataloge“ durchforsten, die manuell erstellt und gepflegt werden. Dabei bilden die Suchmaschi nen einen umfassenderen Ausschnitt aus dem Internet ab, als die Kataloge. Die Kataloge hingegen bieten durch die manuelle Erstellung der Themenhierarchie (auch Ontologie genannt) und die manuelle Selektion der Dokumente eines Themas eine höhere Güte der Inhalte der Dokumente bezüglich des gesuchten Themas. Die manuelle Pflege verlangt einen hohen personellen Aufwand und kann durch den zeitlichen Pflegeaufwand keine hohe Aktualität der eingetragenen Dokumente garantieren. Seite 3 von 105 Moderne Suchmaschinen wie google.de versuchen diese beiden Strategien durch ein automatisiertes Durchforsten des Internets nach Dokumenten (Crawlen) und eine automatische Klassifikation der Ergebnisse in eine Ontologie zu vereinen. Dadurch stellen sie einen Zusammenhang von Themen und Dokumenten her und vermögen die Qualität der Suchergebnisse maßgeblich zu verbessern. Die Ausgabe der Ergebnisse einer Suche erfolgt bei den verschiedenen Suchmaschinen nach suchmaschinenspezifischen Kriterien in so genannten Ranglisten. Die meisten Suchmaschinen verwenden für die Erstellung der Ranglisten der gefundenen Treffer Autoritätswerte, die durch Linkanalyse-Verfahren auf repräsentativen Web-Ausschnitten erstellt werden. Bei Massenanfragen hat sich diese Methode sehr bewährt, bei der Suche spezifischer Informationen hingegen werden nur schlechte Ranglisten erzeugt, da das Ranking auch Bereiche verwendet, die mit dem gesuchten Thema in keinem direkten Zusammenhang stehen. Gegenstand dieser Diplomarbeit ist der Aufbau des Pilotprojekt „HIP - Handwerker Informations Portal“. In diesem Projekt gilt es automatisiert Dokumente zu handwerksspezifischen Themen zu finden und diese automatisch in eine Ontologie einzuordnen. Aus technischer Sicht wird ein fokusiertes Crawlen nach handwerksrelevanten Informationen und ein Klassifizierer mit automatischer Erweiterung der Trainingsbasis kombiniert. Darüber hinaus bietet die integrierte Suchmaschine die Ausgabe der Ergebnisse der professionellen Suche nach diversen Rankingmöglichkeiten. Durch die Einschränkung der Dokumentenbasis auf Dokumente mit „handwerksrelevante n Informationen“ ergibt sich ein besseres Ranking bei der Suche nach einem handwerksspezifischen Thema, da sich keine oder nur wenige fachfremde Dokumente in der Datenbank befinden. Des Weiteren crawlen gängige Suchmaschinen weder Portale noch Webseiten, die mit Hilfe von Datenbanken generiert werden und können meist nicht in Passwort geschützte Bereiche vordringen. Das führt dazu, dass oftmals wirklich informative Seiten nicht gefunden und daher auch nicht aufgenommen werden. Seite 4 von 105 Im Folgenden betrachten wir diese Problematik am konkrete n Beispiel eines Jugendlichen, der eine Ausbildung im Handwerk anstrebt. Der Jugendliche wird sich zuerst über die Berufe des Handwerks allgemein informieren wollen, um sich einen Überblick über die in Frage kommenden Berufe zu verschaffen. In Kürze werden sich diese Berufsbezeichnungen ändern. In Folge dessen beinhalten die großen Suchmaschinen eine Menge alter Dokumente über die „Berufe im Handwerk“. Weil es eine große Anzahl an Webseiten gibt, die auf diese alten Seiten verweisen, werden diese durch das Autoritätsranking der Suchmaschinen ganz oben in der Trefferliste stehen. (Das Autoritätsranking geht davon aus, dass Webseiten auf die viele Links verweisen auch potentiell gut sind). Dies sind aber nicht die Dokumente, die der Jugendliche gerade benötigt. Die aktuellen Seiten, auf die zuerst noch wenige Links verweisen werden, sind die Dokumente, die der Jugendliche sucht. Bei den konventionelle n Suchmaschinen ist es nicht möglich, die Ergebnismenge nach der Aktualität zu sortieren. Das „HIP“ bietet die Möglichkeit, die Daten sowohl nach der Aktualität a ls auch nach dem Autoritätsranking zu sortieren. Zur Flexibilisierung werden auch weitere Sortierkriterien hinzugefügt, wie z.B. die Klassifikationsgüte, die Relevanz bezüglich der eingegebenen Suchbegriffe oder aber auch die Sortierung nach den Bewertungen, die von Handwerkern für diese Seiten abgegeben werden. Haben sich z.B. schon bereits einige Jugendliche durch die gefundenen Dokumente gearbeitet und diese positiv oder negativ bewertet, so ist es für den interessierten Jugendlichen sicherlich von Vorteil, sich zuerst die Dokumente anzusehen, die von anderen Interessenten als besonders positiv bewertet wurden. Dies wird von den wenigsten Suchmaschinen angeboten. Auch wenn dies von z.B. google.de angeboten wird, so ist dies keine relevante Bewertung aus der Sicht des Handwerkers, da dort handwerksrelevante Dokumente auch von vielen „Nichthandwerkern“ bewertet werden. Dies kommt dadurch zu Stande, dass diese Dokumente auch als Treffer bei „nichthandwerksrelevanten Suchen“ vorkommen können. Dadurch erhalten diese Dokumente möglicherweise viele Negativbewertungen, weil sie nicht der Klasse der gesuchten Dokumente entsprechen. Seite 5 von 105 Ein besonderes Problem haben die konventionellen Suchmaschinen, wenn Begriffsdoppeldeutigkeiten vorliegen. Interessiert sich der Jugendliche z.B. für die Lehre als Müller, so erhält er bei google.de mit den Suchbegriffen „lehre müller“ weit über 120.000 Ergebnisse. Aber unter den ersten Seiten ist kein brauchbares Dokument vorhanden. Dies liegt unter anderem daran, dass Müller auch ein gängiger Name ist und somit BegriffsDoppeldeutigkeiten bestehen. Der Klassifizierer des „HIP“ hingegen kann anhand seiner Trainingsdokumente schon vorab entscheiden, ob die gefundenen Dokumente für die Datenbank geeignet sind oder ausgeschlossen werden sollen. Dies kann z.B. über die relative Termhäufigkeit erfolgen. Dabei werden die im Bezug zur Gesamtmenge der Terme relativ häufigsten Terme eines Trainingsdokumentes zur Klassifizierung eines anderen Dokumentes benutzt. Wenn wir also ein Dokument zur Ausbildung zum Müller in der Trainingsbasis haben, so werden dort auch Begriffe wie Handwerk, A usbildung oder Meister vorkommen. Diese Begriffe kommen aber in den meisten Dokumenten der Ergebnismenge der google-Suche nicht vor. Dadurch werden diese von google.de gefunden Dokumente von unserem Klassifizierer negativ bewertet. Das „HIP “ schließt also schon beim Klassifizieren solche Dokumente aus der Datenbank aus und fügt sie der Negativtrainingsbasis zu, anhand deren auch andere Dokumente herausgefiltert werden können. Hinzu kommt der Trend zur Kommerzialisierung der großen freien Suchmaschinen. Die angeblich objektiv gefundenen Trefferlisten werden verändert. Nicht die besten Dokumente stehen an erster Stelle, sondern die best bezahlteste n Ergebnisse stehen in der Trefferliste ganz oben. Dadurch erhält man z.B. bei google.de nach der Eingabe „müller handwerk“ an erster Stelle einen Link zu www.neckermann.de mit der Überschrift „Handwerk - Alles für Haus und Garten bei Neckermann!!!“. Dies wird für die freien Suchmaschinen auch immer mehr zur Eigenfinanzierung genutzt werden und die Ergebnisgüte auf längere Sicht hin verschlechtern. Aus all diesen Gründen ist es für die Zukunft wichtig Suchmaschinen zu erzeugen, die dem User die kontextbezogenen wichtigen Seiten aus der stetig wachsenden Dokumentenflut vorab herausfiltern, und die Ergebnisgüte der gestellten Suchanfragen optimieren. Darüber hinaus müssen zukünftige Suchmaschinen intelligente Mechanismen zur Bearbeitung der gefundenen Treffermenge anbieten. So sollte der Nutzer die gefundenen Seite 6 von 105 Treffer nach verschiedenen Kriterien, wie z.B. Aktualität, Güte des Dokumentes oder Güte der Klassifikation zu einem Thema umsortieren können. 1.2 Aufgabenstellung Es ist ein Internet-Portal namens „HIP“ (Handwerker Informationsportal) zu erstellen. Dieses Portal soll ausgehend von einer vorgegebenen Ontologie mit wenigen guten Referenzseiten für jedes Thema selbstständig weitere Seiten im Internet suchen und Themen bezogen klassifizieren. Darüber hinaus soll eine Suchmaschine integriert werden, die eine einfache und professionelle Suche anbietet. Die professionelle Suche soll dabei verschiedene logische Kombinationsmöglichkeiten der Suchbegriffe und diverse Rankingmöglichkeiten zur Ordnung der gefundenen Ergebnisse zur Verfügung stellen. Die Pflege des Systems soll über Webinterfaces erfolgen. 1.3 Problemspezifische Schwierigkeiten Folgende Probleme bei der Erstellung des „HIP“ waren bereits vorab zu erkennen: • • • • • Es werden in dem Portal Dokumente der unterschiedlichsten Kategorien aufgenommen. Dadurch wird es bei einem automatischen Crawl auch vorkommen, dass fachfremde Seiten in die Dokumentenbasis aufgenommen werden und sich die Güte der Dokumentenbasis dadurch verringert. Die hohe Anzahl an Kategorien erschwert einem einzelnen Portaladministrator die manuelle Pflege der Ontologie. Zu jedem Thema der Ontologie müssen ausreichend viele „gute“ Dokumente als Trainingsdokumente gefunden werden, um eine hohe Güte der Dokumentenbasis zu garantieren. Viele inhaltlich wertvolle Dokumente befinden sich in abgeschlossenen oder Kennwort geschützten Bereichen und können nur schwer gecrawlt werden. Um diese dennoch zu indexieren müssen spezielle Wrapper geschrieben werden. Die manuell angelegte Ontologie muss den unterschiedlichsten Usergruppen mit den unterschiedlichsten Bedürfnissen gleichermaßen genügen. (Meister, Lehrlinge, …) Seite 7 von 105 1.4 Aufgabenbereiche der Diplomarbeit Die Diplomarbeit umfasste folgende Komplexe: • Bedarfsanalyse/Pflichtenhefterstellung Da die Angaben des Projektauftrages nur sehr allgemein waren, musste zunächst eine genaue Bedarfsanalyse durchgeführt werden. Dazu mussten folgende Aspekte genauer analysiert werden: 1. Was sind handwerksrele vante Informationen und gibt es bereits bekannte Referenzseiten dazu? 2. Was ist eine einfache Suche? 3. Was ist eine eingeschränkte Suche? 4. Was ist eine professionelle Suche? 5. Welche Klassen legen wir dem System zu Grunde? 6. Was soll im Administrator-Bereich eingestellt werden können? 7. Was soll der User an weitergehenden Möglichkeiten geboten bekommen? 8. Kann ein Administrator alle Möglichkeiten bedienen, oder soll es Administratoren für bestimmte Bereiche geben? • Erstellen der Datenbank (Anlegen des Datenbankschemas) Während der Implementierungsphase musste eine Datenbank angelegt und mehrmals gemäß auftretender Anforderungen modifiziert werden. • • • • Bereitstellen der Schnittstelle zwischen Crawler und GUI Bereitstellen der Schnittstelle zwischen Classifier und GUI Bereitstellen der Schnittstelle zwischen Datenbank und GUI Erstellung einer manuellen Ontologie mit entsprechenden Referenzdokumenten als Trainingsbasis Der Schwerpunkt der Diplomarbeit lag auf der Erstellung der API zwischen der Datenbank, der Suchmaschine und den Portalbereichen. Seite 8 von 105 2 Vorüberlegungen 2.1 Analyse bestehender Suchmaschinen Um eine Beurteilung zu treffen, wurden die drei großen Suchmaschinen altavista .de, lycos.de und google.de verglichen und einem „Gütetest“ bezüglich der Ergebnisse einer Anfrage aus dem Bereich Handwerk unterzogen. Als Güte -Maß bei der Untersuchung diverser Information-Retrieval Systeme haben sich in der Vergangenheit die Recall- und Precision- Bewertungsverfahren [1] bewährt. Recall = Anzahl der relevanten Dokumente im Ergebnis Gesamtzahl der relevanten Dokumente (2.1) Precision = Anzahl der relevanten Dokumente im Ergebnis Gesamtzahl der Dokumente im Ergebnis (2.2) Da die Anzahl der relevanten Dokumente einer Suchanfrage in einem System nicht bekannt war, konnte das Recall-Maß nicht eingesetzt werden. Daher wurde das Precision-Maß in einer abgewandelten Form benutzt und nach den zehn experimentellen Anfragen ein Mirco- und Macro-Score wie folgt berechnet. Micro-Score: 1 * S Anzahl relevanter Dokumente der ersten Ergebnisseite m Anzahl der Dokumente der ersten Ergebnisseite (2.3) Der Micro-Score gibt an, wie hoch das Verhältnisses der relevanten Dokumente zu den irrerelevanten Dokumenten im durchschnitt ist. Es ist also ein Maß dafür, wie viele relevante Dokumente sich durchschnittlich auf der ersten Ergebnisseite befinden. Macro-Score: 1 Ausgabeanzahl * S Anzahl relevanter Dokumente der ersten Ergebnisseite S Anzahl der gefundenen Dokumente Der Macro-Score veranschaulicht, wie hoch das Verhältnis der relevanten Dokumente auf der ersten Ergebnisseite zu den Seite 9 von 105 (2.4) gefundenen Dokumenten ist. Dieses Maß besagt also wie hoch der Anteil relevanter Dokumente an der gefundenen Ergebnismenge ist. Da die Anzahl der Ergebnisse auf der ersten Ergebnisseite variieren müssen wir das Ergebnis noch durch die Ausgabeanzahl dividieren, um einen Vergleich machen zu können. Um eine repräsentative Menge von Daten zu bekommen wurden zehn Queries gestellt. Konkret wurden hierbei die möglicherweise aufkommenden Fragen eines Schülers betrachtet, der sich im Müllerhandwerk selbstständig machen will. Suchbegriffe altavista.de E G P Lycos.de E G P Google.de E G P 16 25.039 2 10 73.828 1 10 84.900 3 handwerk berufe 16 90.122 0 10 136.636 0 10 249.000 0 müller lehre 16 76.777 0 10 224.288 2 10 161.000 2 müller ausbildung 16 6 0 10 2.373 6 10 4.970 4 handwerksorganisationen 16 25.234 0 10 102.370 1 10 67.800 4 handwerk meister 16 4.124 4 10 3.917 4 10 9.640 9 handwerk bafög 16 89 1 10 19.545 9 10 60.500 10 handwerk existenzgründung 16 5.015 2 10 4.982 3 10 5.640 10 innung müller 16 62 0 10 55 0 10 76 2 übernahme müllerei 16 22.281 0 10 21.321 0 10 48.700 1 müller verordnungen 0,26 0,45 Micro-Score: 0,05625 0,000002261315 0,0000044132499 0,00001392214735 Macro-Score: Abbildung 2-1: Analysewerte der Suchmaschinen und vergleichbare Micro-und Macro-Scores E = Anzahl der Dokumente auf der ersten Ergebnisseite G = Anzahl gefundener Dokumente P = Anzahl relevanter Dokumente auf der ersten Ergebnisseite Seite 10 von 105 Der Vergleich dieser Suchmaschinen in weiteren Anfragen und der Bewertung gefundener Webseiten, offenbarte dass google.de die qualitativ besten Ergebnisse liefert. Daher wird in zukünftigen Vergleichstest google.de als Referenz-Suchmaschine herangezogen. Recherchen haben ergeben, dass Google hauptsächlich ein Autoritätsranking in Kombination mit einer Relevanzmessung bzgl. der gestellten query benutzt. Neben den Suchmaschinen sind auch manuell gepflegte Systeme im Internet verfügbar. 2.2 Analyse manuell gepflegter Systeme Um eine Aussage über die Relevanz der Güte der Zuordnung von Dokumenten zu Klassen erstellen zu können, werden neben den allgemeinen Suchmaschinen auch manuell gepflegte Systeme betrachtet. Bei diesen Systemen werden Webseiten oder Dokumente von Redakteuren begutachtet und manuell in eine Ontologie eingeordnet. Als exemplarische Beispiele für manuell gepflegte Systeme werden das Verzeichnis von yahoo.de und die Online Enzyklopädie wikipedia.de benutzt. Suchbegriffe E handwerk berufe müller lehre müller ausbildung handwerksorganisationen handwerk meister handwerk bafög handwerk existenzgründung innung müller übernahme müllerei müller verordnungen Micro-Score: Macro-Score: yahoo.de G P 20 23 20 0 20 5 20 1 20 19 20 1 20 2 20 0 20 0 20 0 0,035 0,00686274509 Seite 11 von 105 2 0 0 1 3 1 0 0 0 0 E wikipedia.de G P 0 0 0 0 0 0 0 0 0 0 0,00 0,00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Abbildung 2-2: Analysewerte der manuell gepflegten Systeme inkl. vergleichbarer Micro- Macro-Scores Diese Beispiele zeigen, dass manuell gepflegte Systeme qualitativ und quantitativ große Unterschiede aufweisen können. Dies hängt stark von der Anzahl und den Fähigkeiten der eingesetzten Redakteure ab. An Hand der Tabelle n lässt sich leicht erkennen, dass manuell gepflegte Systeme wie das Verzeichnis von yahoo.de zwar insgesamt weniger Dokumente finden, aber im Verhältnis zu der Menge gefundener informativer Dokumente eine bessere Ausbeute haben als die herkömmlichen Suchmaschinen. Es lässt sich das Fazit ziehen, dass es nicht auf die Größe der Dokumente nbasis allein ankommt, sondern auf die Güte der Dokumente der Datenbasis bzgl. des gewünschten Themas und die Qualität der Ergebnisse bei einfachen Suchanfragen. Daraus ergab sich dann die Überlegung, was das Ziel des HIP´s sein soll. 2.3 Welche Vorteile kann das „HIP“ bieten Die Analyse der Suchmaschinen zeigte bereits, dass google.de die besten Ergebnisse liefert. Dennoch kommt es bei Doppeldeutigkeiten von Suchbegriffe n vor, dass die google -Suche komplett neben den gewünschten Ergebnissen liegt (siehe Anfrage 1: müller lehre). Ebenso findet man bei ungenauen Anfragen nur wenig spezifische Dokumente bei google.de. Dies kann im HIP reduziert werden, da nur handwerksrele vante Dokumente aufgenommen werden und Doppeldeutigkeiten außerhalb des Handwerker-Kontextes vom Klassifizierer vorab eliminiert werden. Des Weiteren ermöglicht die integrierte Suchmaschine durch den impliziten Kontext des Handwerks auch unerfahrenen Anwendern die erfolgreiche Suche, da der Kontext mit seinen vielfältigen Sparten ständig in die Anfragen mit einfließt. Dadurch werden die Ergebnismengen unqualifizierter Anfragen gegenüber anderen Suchmaschinen um ein vielfaches reduziert. Weiterhin bietet das „HIP“ die Möglichkeit die Suchergebnisse nach der Aktualität der Dokumente sortieren zu lassen. Dies bieten die wenigsten Seite 12 von 105 Suchmaschinen an. Dennoch kann dies ein wichtiges Kriterium für die Güte eines Dokumentes sein. Ein weiterer, nicht unwesentlicher Vorteil des „HIP“ liegt in der möglichen Bewertung der Dokumente durch die Anwender. Da in der Suchmaschine vorwiegend handwerksinteressierte Anwender suchen werden, werden die Dokumente auch immer kontextspezifisch bewertet werden. Es wird nicht vorkommen, dass ein Biologe, der nach einem Prof. Müller sucht, ein handwerksrelevantes Dokument zum Thema „Lehre Müller“ negativ bewertet, weil es nicht zu seinem gewünschten Ergebnis passt. Große Suchmaschinen können nicht automatisch in geschützten Portalen crawlen oder Webservices wie z.B. patentamt.de nutzen. Durch die Integration diverser Wrapper kann das „HIP“ also gute Dokumente finden, die in den großen Suchmaschinen nicht indexiert sind. Als wichtigster Punkt gilt es, den unerfahrenen und professionellen Nutzern geeignete Werkzeuge an die Hand zu geben, um gewünschte Ergebnisse einfach zu finden und nach bestimmten Kriterien umsortieren zu lassen. Dadurch erhält der Nutzer unterschiedliche Sichten auf die gleiche Ergebnismenge. Zusammengefasst besteht das Ziel des HIP´s also darin, handwerkspezifische Dokumente zu finden und zu repräsentieren. Darüber hinaus sollen dem Benutzer der Suchmaschine die besten Ergebnisse in einer optimalen Ergebnisdarstellung verfügbar gemacht werden. Die Darstellung und Bearbeitungsmöglichkeiten der Ergebnisse der Suchmaschinen werden gemäß den ermittelten Bedürfnissen in der Analysephase angeboten. 2.4 Gibt es eine „freie Software“, die man als Basis nutzen kann. Auf Grund der bisherigen Vorüberlegungen galt es nun herauszufinden, ob eine freie Software verfügbar ist, die entsprechende Möglichkeiten bietet und modifiziert werden kann, oder ob das ganze System von der Basis auf erstellt werden muss. Es fand sich das System „Bingo“, das in Java geschrieben, frei verfügbar und modifizierbar ist. Seite 13 von 105 Die Anpassung des Bingo-Systems an die Gegebenheiten des Projektes wurde von Herrn Sergej Sizow übernommen. Die Datenbankstruktur wurde von mir gemäß den späteren Bedürfnissen der Funktionalitäten angepasst. Seite 14 von 105 3. Das Framework 3.1 Die Systemarchitektur Das System setzt sich aus technischer Sicht aus drei Komponenten zusammen: a) Bingo-System b) Datenbank c) Suchmaschine und Administrationskomponenten Diese Ebenen beeinflussen sich gegenseitig und stellen in der Gesamtheit die Güte des Systems dar. Dadurch gilt es, auf jeder Ebene die bestmögliche Performance und Userfreundlichkeit zu erzielen. Die Abbildung auf der folgenden Seite illustriert den Aufbau und die wichtigsten Komponenten des „HIP -Frameworks“: a) Der fokusierte Crawler für die automatische Suche nach thematisch relevanten Informationen im Web b) Der Dokumentanalyzer, der das Parsen der gefundenen Dokumente übernimmt und die Feature-Vektoren generiert c) Der hierarchische Klassifizierer mit seinen Trainingsdaten d) Der Linkanalyzer für das Autoritätsranking e) Das Web-Interface für die Steuerung der Administration des Systems f) Die Suchmaschine für den gesammelten Datenbestand Aus der Sicht der Softwarekomponenten gilt es die zwei Module a) Bingo-System b) Suchmaschine und Administrationskomponenten mit der gemeinsamen Datenbank zu erstellen. Seite 15 von 105 Der Aufbau des Frameworks: Suche im Web Bingofokussierter Crawler Crawler Feature Selection Classifier Document Analyzer Link Analyzer Re-Training Startdaten Datenbank Webserver Suchmaschine Portal-/ System Admin Abbildung 3-1: Aufbau des Systems aus technischer Sicht Seite 16 von 105 3.2 Bingo – Bookmark Induced Gathering of Information Das in dieser Arbeit benutzte Bingo-System [2-4] ist ein thematisch fokussierter Crawler, der gefundene Dokumente automatisch klassifizieren und in eine benutzerspezifische Themenhierarchie (Ontologie) einordnen kann. Dabei dienen dem Crawler Trainingsdaten (Trainingsdokumente in der Ontologie) als Basis zur Klassifizierung. Genau dies ist der „Kritische Punkt“ des Systems, der maßgeblich die Qualität der Klassifizierung beeinflusst. Je „besser“ die Trainingsdokumente der einzelnen Klassen sind und je mehr davon pro Klasse vorhanden sind, desto besser kann Bingo die neuen Dokumente klassifizieren. Die Dokumente der Nachbarkategorien benutzt Bingo dabei als Negativbeispiele. Dabei werden für die Klassen Feature-Vektoren berechnet und die Dokumente in einem Vektorraum positioniert, an Hand dessen entschieden werden kann, zu welcher Klasse ein Dokument gehört. Bingo versucht dabei die Grenzen der Trainingsbasis zu überwinden und diese selbstständig durch „bessere Dokumente“ zu ersetzen (Wachstumsphase). Danach kann Bingo durch Neutrainieren des Klassifizierers die Klassifizierungsgüte verbessern, indem es die relevanten Terme der Klassen verändert. Das Bingo-System besteht aus den folgenden Komponenten: • • • • • • Crawler Document Analyzer Classifier Link Analyzer Feature Selection Re-Training Bingo berechnet für die Dokumente so genannte FeatureVektoren, an Hand deren die Dokumente im Feature-Raum angeordnet und einzelnen Klassen zugeordnet werden können. Seite 17 von 105 3.2.1 Die Komponenten des Bingo-Systems Der fokussierte Crawler: Im HIP wird der fokussierte Crawler des „Bingo-Systems“ verwendet. Dieser Crawler ist das Herzstück des Bingo Systems und dient der Erweiterung der Dokumentenbasis und der klassenspezifischen Feature-Räume. Dem Crawler dienen eine Menge von HTML-Dokumenten p 1,..,p n als Ausgangsbasis in einem gerichteten Netzgraphen G. Der Crawler liest den Inhalt dieser Dokumente und extrahiert die darin enthaltenen Hyperlinks zu referenzierten Nachfolgedokumenten. Diese extrahierten Links werden in eine Prioritätenschlange (engl. Priority Queue) mit einer zugehörigen Priorität in Form einer reellen Zahl eingereiht. Nachdem der Crawler alle Startdokumente auf diese Art und Weise abgearbeitet hat, liest der Crawler die Links gemäß Ihrer Prioritätenreihenfolge aus der Prioritätenschlange, beginnend mit dem Link mit der höchsten Priorität, bis ein Abbruchkriterium erfüllt ist, oder die Prioritätenschlange leer ist. Da in einem HTML-Dokument in der Regel mehrere Links vorhanden sind, steigt die Anzahl der extrahierten Links exponentiell. Damit steigt auch die Anzahl der zu besuchenden Dokumente und die Größe der Queue ebenfalls exponentiell mit der erreichten Tiefe im Netzgraphen. Der Crawler muss also riesige Datenmengen einlesen und verarbeiten können, was hohe Hardwareressourcen voraus setzt. Die Qualität der gefundenen Dokumente hängt maßgeblich von der Qualität der Startdokumente ab. Darüber hinaus enthalten aber auch gute Startdokumente (Hubs) viele Links zu irrelevanten Dokumenten, die mit dem eigentlichen Thema in keinem Zusammenhang stehen. Daher ist die gezielte Steuerung und Auswahl von Dokumenten ein wichtiger Faktor für die Effizienz des Crawlers, da sonst die Anzahl der besuchten „schlechten Dokumente“ ebenfalls exponentiell steigt. Als Kernaktivität gilt es also aus einer riesigen Menge von Dokumenten bereits während des Crawlens die guten Dokumente von den schlechten Dokumenten zu trennen und festzulegen welche Links mit welcher Priorität überhaupt erst weiterverfolgt werden sollen. Dabei übernimmt der Crawler von Bingo nur solche Dokumente, die sich in allen Auswahlkriterien ausreichend qualifizieren konnten. Seite 18 von 105 Dieses Ziel wird auf zwei Arten erreicht. Zum eine n durch eine klassenspezifische Fokussierung auf Seiten, die genauso wie das Startdokument klassifiziert wurden, zum Anderen werden die Links eines positiv klassifizierten Dokumentes extrahiert und in Abhängigkeit vom Wert des Klassifikationsergebnisses des Vaterlinks priorisiert und in die Queue gestellt. Links, die nicht in das fokussierte Schema passen, werden nicht weiter verfolgt und Links mit guten Klassifikationsergebnissen werden vom Crawler bevorzugt behandelt. Document Analyzer: Die Dokumente werden von dem Dokument-Analysator, einem Parser für HTML, PDF und andere gängige Dateitypen, verarbeitet. Dabei werden die HTML-Steuerzeichen, Sonderzeichen und Stoppworte anhand vordefinierter StoppwortListen entfernt. Die verbleibenden Terme werden durch einen Ste mmer (Porter Stammer) auf die morphologische Stammform reduziert. Der Klassifizierer: Dem Klassifizierer dienen Term-basierte Gewichtsvektoren mit RTF oder TF*IDF Gewichtung als Gütekriterien. Die geladenen Dokumente werden an den Klassifizierer übergeben der entscheidet, ob das Dokument in die Themenhierarchie eingeordnet werden kann. Zur Klassifikation verwendet „Bingo“ einen Support Vector Machines Klassifizierer. Um ein Dokument zu klassifizieren wandert dieser Klassifizierer rekursiv durch den Themenbaum und entscheidet in jedem Knoten durch eine binäre SVM-Klassifikation welchen Nachfolger er nehmen muss. Dokumente, die an einer Stelle keinem Nachfolger mehr zugeordnet werden konnten werden in eine Themengruppe „OTHERS“ aufgenommen. Durch diese SVM-Klassifikation erhält man auch gleichzeitig ein Ranking bezüglich der Güte eines Dokumentes i nnerhalb eines Themas. Link Analyzer: Die Links der positiv klassifizierten Dokumente werden der URLQueue zum weiteren Crawlen hinzugefügt. Zusätzlich zu diesem SVM-Score Ranking berechnet Bingo auch gleich noch ein Authoritäts- und ein HUB-Ranking. Dazu analysiert Bingo gemäß dem „HITS -Algorithmus“ die Verlinkung der Dokumente untereinander und zählt die Links innerhalb jeden Dokumentes. Hierbei wird die Annahme getroffen, das Dokumente auf die viele Seite 19 von 105 andere informative, zum Thema gehörigen Dokumente verweisen potentiell bessere Dokumente bezüglich des entsprechenden Themas sind, als Dokumente auf die nur wenige andere Dokumente verweisen. Feature Selection: Aus allen Eingabedokumenten eines Hierarchieknoten werden Feature-Vektoren für diesen Knoten bestimmt. Zur Feature Selektion wird von Bingo die Berechnung der Kullback-Leibler Distanz (Mutual Information, MI) als statistisches Maß zur Berechnung der Diskriminationsgüte im Blick auf die verfügbaren Klassen einer Baumstufe der Ontologie benutzt. Die extrahierten Links dienen zur Initialisierung der URL-Queue des Crawlers. Re-Training: Wenn Bingo eine ausreichend große Menge neuer Dokumente gesammelt hat, kann der Klassifizierer anhand der neuen Dokumente automatisch trainiert werden. Dabei nimmt er neue Dokumente, die eine höhere relative Termhäufigkeit der repräsentierenden Terme eines Themas haben in die Basis der Trainingsdokumente eines Themas der Ontologie auf. Wird die Anzahl der Trainingsdokumente zu groß, so verwirft Bingo diejenigen Trainingsdokumente, deren repräsentative Terme relativ gesehen am wenigsten vorkommen. Auf diese Art und Weise kann Bingo seinen Klassifizierer selbstständig verbessern. Dieses Retraining des Klassifizierer kann automatisch gestartet werden, wenn die Füllmenge der Archetypen eines Themas eine Grenze Nmax erreicht. Um hierbei einen Themen-Trift zu vermeiden werden die besten Dokumente aus HITS n SVM genommen. Seite 20 von 105 3.2.2 Vorgehen des fokussierten Crawlers Ein Dokument p wird durch seine URL identifiziert. Da sich der Inhalt eines Dokumentes mit der Zeit verändern kann, wird zur Vereinfachung angenommen, dass das WWW über einen gewissen Zeitraum konstant bleibt. Diese Annahme stellt für den Zeitraum des Crawls keine Einschränkung dar, da sowieso nur ein Teilgraph des WWW von Interesse ist. Der Inhalt eines Dokumentes wird als content(p) bezeichnet. Dieser Inhalt kann leer sein, wenn es keine Antwort gibt, eine Fehlermeldung zurückgegeben wird oder eine Zeitüberschreitung vorliegt. Das WWW wird dann als einen gerichteten Graphen G=(V,E) definiert, wobei V die Menge aller existierender Webseiten und E c (VxV), die Menge der gerichteten Kanten oder Links zwischen diesen Dokumenten ist. Ein Link link(p,q) zeigt also von seinem Quelldokument p auf ein Zieldokument q, wobei die relative URL-Verweise durch absolute URLs ersetzen, da q durch absolute URLs identifizieren werden soll. Für jede URL kann der Host host(p) aus dem Teil zwischen dem Protokollbezeichner und dem Verzeichnis mit dem Dateinamen bestimmt werden. Da sich das WWW ständig ändert, ist nicht bekannt, ob das Zieldokument q wirklich existiert. Als Crawling bezeichnet man den Vorgang der suk zessiven Transformation eines Teilgraphen G0 von G, der durch E0={p1,…,p n}, der Menge der Startdokumente, mit n>=1, V 0?Leere Menge definiert wird, zu den Teilgraphen G1,G2,…,G M von G, so dass genau in jedem Schritt genau eine Kante und höchstens ein Knote n aus G zu G i angefügt wird, um Gi+1 zu erhalten. Das fokussierte Crawlen setzt mindestens zwei Klassen voraus, eine Klasse mit guten Dokumenten und eine Klasse mit schlechten Dokumenten in Abhängigkeit vom Interesse des Benutzers. Dabei liegt das Ziel des Crawlers darauf, möglichst viele gute Dokumente zu klassifizieren und möglichst wenig schlechte Dokumente in den Graphen einzufügen. Es ist offensichtlich, dass die Güte des Crawlers stark von der Güte der Startdokumente abhängt. Da man das WWW als gerichteten Graphen ansehen kann, spricht man im Bezug auf das Crawler Modell von einer Graphensuche. Dabei kann durch entsprechende Steuerung der Queue sowohl Seite 21 von 105 eine Breite-Zuerst- als auch eine Tiefe-Zuerst-Suche simuliert werden. Benutzt man das FIFO-Prinzip (First in First out) so wird eine Breite-Suche , bei dem LIFO-Prinzip (Last in First out) eine Tiefensuche simuliert. Um die Suche effektiver zu gestalten kann diese Priorisierung durch weitere Funktionen überlagert werden. Bei der Bearbeitung eines Netzgraphen wäre es möglich, dass man in eine Endlosschleife gelangt. Dies wird verhindert, indem man bereits besuchte URLs in eine Liste einträgt, und zu besuchende URLs mit dieser Liste abgleicht. Darüber hinaus macht es auch Sinn, die Tiefe der Suche zu beschränken, so dass Dokumente einer bestimmten Tiefe nur noch als Blätter ohne Nachfolger angesehen werden. 3.2.3 Vorgehen des Document Analyzer Der Document Analyzer liest zunächst die Dokumente ein und extrahiert mit Hilfe eines Parsers alle darin entha ltenen Worte. Dabei werden alle HTML-Steuerzeichen (TAGS) entfernt und nur noch reine Textpassagen verarbeitet. Danach teilt ein Tokenizer Worteinheiten mit Trennzeichen in weitere Worte auf, die nur noch aus Buchstabenfolgen bestehen und keine Sonderzeichen oder Zahlenziffern mehr enthalten. Dadurch wird die Anzahl unterschiedlicher Worte reduziert. Im letzten Schritt werden alle Stoppworte, die nur zu einer geringen Klassifikationsgüte führen würden aus den Termen entfernt. Diese Stoppworte sind Worte wie „und“, „an“, „dem“ …, die in vielen Dokumenten häufig vorkommen, aber keine Klassifizierung eines Dokumentes zu gewissen Themen erlauben. Diese Stoppworte befinden sich in einer separaten Liste und können jederzeit ergänzt werden. aber anderr because can about anders before could again are behind da all around bei damit alle art bestimmt dann allem as between das allen at bin dass aller auch bis dasselbe alles auf bist dazu als aus but dein also away by deine Abbildung 3-2: Auszug aus der Stopwordliste Seite 22 von 105 deinem deinen deiner deines dem demselben den denn denselben der … 3.2.4. Benutzte Methoden der Feature Selection Die durch den Document Analyzer erhaltene Termmenge eines Dokumentes, in der noch immer gleiche Terme mehrmals vorkommen können, dient nun als Grundlage der Berechnung der Features, die keine Term-Wiederholungen mehr enthalten. Für jeden Term eines Dokumentes kann jetzt ein Gewicht bezüglich des Dokumentes berechnet werden. 3.2.4.1. Berechnung von Gewichtsvektoren durch TF (Term Frequenc y) Bei diesem Verfahren wird zu jedem Term ti eines Dokumentes d j eine Gewichtung w ij zugeordnet. Der Gewichtungswert besteht bei Bingo aus der Termhäufigkeit tf ij des Ausgangsterms ti im Dokument d j: Wij:= tfij= Anzahl der Terme ti im Dokument d j Anza hl der Terme im Dokument d j Gegebenfalls ist auch eine Normierung der Gewichte durch die L2-Norm des ursprünglichen Gewichtvektores sinnvoll: _____ Wij ;= wij / v? k wkj2 Diese einfache Form der Termgewichtung ergibt sich direkt durch zählen der Häufigkeit eines Termes in der Termliste eines Dokumentes. Seite 23 von 105 (3.1) (3.2) 3.2.4.2. Berechnung von Gewichtsvektorn durch TF*IDF (Term Frequency*Inverse Document frequenzy) Die Berechnung der Gewichtsvektoren nach TF sagt nur etwas über die Güte eines Termes bzgl. eines Dokumentes aus. Eine erweiterte Form der Termgewichtung berücksichtigt zusätzlich, welche Güte ein Term bzgl. der Klasse aufweist, in der das Dokument eingeordnet wurde. Je nach angewandter Termgewichtung ist also der Gewichtungswert w ij noch zusätzlich abhängig von der Häufigkeit der Dokumente einer Klasse, die diesen Term enthalten. Die Document Frequency d fi eines Termes ti ist die Anzahl der Dokumente einer Kategorie und deren Unterkategorien, die den Term t i enthalten. dfi := Anzahl der Dokumente mit Term ti Zusätzlich wird dieser Wert mit der Anzahl N der Dokumente der Kategorie und Ihrer Unterkategorien normiert und invertiert, so dass wir die sogenannten Inverse Document Frequency idfi des Terms t i erhalten. N Anzahl der Dokumente idfi:= dfi = Anzahl der Dokumente mit Term t i (3.3) Bezieht man nun den idf-Wert eines Termes ti in die Gewichtung mit ein, so kann man ein Feature X ij=(ti ,w ij ) in Abhängigkeit seiner Häufigkeit im Dokument d j und seiner Häufigkeit innerhalb einer Klasse gewichten: (3.4) Wij:=tfij * idfi Die Idee besteht also darin, dass Terme, die sehr selten in den Dokumenten einer Klasse vorkommen, nicht sehr relevant für eine Klassifikation sind. Durch Elimination dieser Terme kann man evtl. ein „Rauschen“ vermeiden. Es gilt dabei zu beachten, keine zu starke Reduktion vorzunehmen, da auch weniger häufig auftretende Terme sehr charakteristisch für eine Kategorie sein können. Seite 24 von 105 3.2.4.3 MI (Mutual Information-Kreuzentropie) Das Ziel bei der Feature Selektion besteht darin, themenspezifisch Terme zu selektieren und diese dann einzelnen Kategorien derart zuzuordnen, dass eine Kategorie sich von den anderen Kategorien mit dem gleichen Vater optimal abgrenzt. Es werden also die Terme einer Klasse benötigt, die die Klasse am besten von den Nachbarklassen unterscheiden. MI ist ein Maß für den Betrag der Information, die eine Zufallsvariable über eine andere enthält. Das MI-Maß ist wie folgt definiert [5]: Seien X und Y diskrete Zufallsvariablen, die spezifische Werte annehmen, die wir mit x,y bezeichnen, dann wird Mutual Information (MI) zwischen diesen Variablen wie folgt definiert: MI(X,Y)=SSPr(x,y)log Pr(x,y) xy Pr(x)Pr(y) (3.5) Hierbei ist Pr(x,y) die Kurzform für Pr(X=x /\ Y=y) und beschreibt die Wahrscheinlichkeit, dass X den Wert x und Y den Wert y annimmt. Das MI-Maß wurde im Rahmen der Informationstheorie entwickelt. In unserem Kontext besteht die Idee darin, für jede Klasse die Terme zu ermitteln, die die Klasse besonders gut von Ihren Nachbarklassen diskriminieren. Da das MI-Verfahren nicht Teil der Diplomarbeit ist, soll nur kurz die Anwendung des Verfahrens auf unseren Kontext der Dokumentenverarbeitung übertragen werden. Seien xi ein Term und K eine Klasse, dann berechnet sich MI(xi,K) wie folgt: MI(xi ,K)= Pr(xi,K) log Pr(xi ,K) Pr(xi )Pr(K) Pr(xi,K) ist dabei die Wahrscheinlichkeit, dass ein Dokument der Trainingsmenge zu K gehört und den Term xi enthält. Pr(xi) ist die Wahrscheinlichkeit, dass ein Dokument den Term xi enthält. Seite 25 von 105 (3.6) Pr(K) ist die Wahrscheinlichkeit, dass ein Dokument zur Klasse K gehört. Der MI-Wert eines Termes xi und einer Klasse K ist ein Maß dafür, wie viel Information durch das Vorhandensein des Termes xi in einem Dokument über das Vorhandensein dieses Dokumentes in der Klasse K gegeben ist. Dabei besteht die Idee darin, dass Terme xi mit großen MI-Werten für K gut geeignet sind, K von seinen Nachbarklassen zu unterscheiden. Man wählt dann pro Klasse eine Anzahl w von Termen mit den höchsten MI-Werten. Um die Effizienz zu steigern, kann man eine Vorab-Selektion nach dem TF*IDF Verfahren durchführen und auf die verbliebene Menge das MI-Verfahren anwenden. 3.2.4.4 Manuelle Nachbearbeitung der Feature-Vektoren Es war festzustellen, dass die automatische Feature-Selektion bei wenigen Trainingsdokumenten einer Klasse auch schlechte oder nichts sagende Terme aufnimmt. Dadurch wird die Güte der Klassifikation verschlechtert. fuer gewaehr bundesanstalt ausbildung beruf daten arbeit berufenet fakten neue hilfe druckversion angaben suche innen Abbildung 3-3: Auszug aus den unbearbeiteten Feature-Vektoren der Klasse Dachdecker, sortiert nach MI Um dem entgegen zu wirken wird ein Interface hinzugefügt, mit dem man sich die besten Terme einer Klasse nach deren Güte ansehen kann. Mit diesem Interface besteht auch die Möglichkeit, diese Terme nachträglich positiv oder negativ zu bewerten. fachrichtungen aussenwaenden dach wand daechern abdichtungstechnik errichten umfasst reetdachtechnik bauwerken abdichten dachdecker flaechen Abbildung 3-4: Auszug aus den bearbeiteten Feature-Vektoren der Klasse Dachdecker, sortiert nach MI Seite 26 von 105 Der Aufwand der manuellen Nachbearbeitung hängt stark von der Anzahl und der Güte der Trainingsdokumenten der Klasse ab. Die Klassifizierung wird durch die manuelle Selektion der guten Features optimiert. Dadurch werden nach einigen Iterationen nur noch positive Terme zur Klassifizierung benutzt werden und die negativen Terme aus der Klassifizierung ausgeschlossen werden. 3.2.4.5 Hinweise Die Gesamtheit aller Features der Dokumente einer Klasse bildet den Feature Raum dieser Klasse. Dabei ist es in der Regel aus Effizienz-Gründen erstrebenswert nur einen Teil der gesamten Features zur Klassifikation heranzuziehen. (Z.B. die 100 besten Features einer Klasse). Seite 27 von 105 3.2.5. Support Vector Machines Klassifizierer Als Klassifizierer ist der Support-Vector-Machine -Algorithmus [6] in Bingo integriert. Der Support-Vector-Machine -Algorithmus wurde 1979 zum ersten Mal von Vapnik vorgestellt und hat sich in vielen neueren Arbeiten zur Textklassifikation bewährt. Wir wollen hier nur einen einführenden Überblick über die Theorie des SVM-Verfahrens geben, da diese Theorie nicht der Gegenstand dieser Arbeit ist. Das SVM ist in der linearen Form ein System von Stützvektoren, das zwei Klassen von Trainingsdaten C und + C mit maximalem Euklidischen Abstand d trennt. Dabei liegen den beiden Klassen Trainingsvektoren xi zu Grunde, die sich auf eine Menge von Positivbeispielen von C und eine Menge von Negativbeispielen von + C aufteilen. Die Trainingsvektoren werden gemäß Ihrer Klassen mit {xi,yi } beschriftet, wobei i=1,…,l; yie{-1,+1}; xi e Rd sind. Geht man davon aus, dass es eine trennende Hyperebene gibt, die die positiven von den negativen Beispielen trennt, dann erfüllen alle Punkte, die direkt auf der Hyperebene liegen die Bedingung w+x+b=0, wobei w e Rd der Normalenvektor der Hyperebene ist. Mit ||w|| wird die Euklidische Norm von w bezeichnet, so dass |b|/||w|| der Abstand der Hyperebene zum Ursprung ist. Sei d der kürzeste Abstand des nächsten positiven bzw. negativen Beispiels zur Hyperebene, dann beträgt der Randbereich 2d. Die Vektoren mit dem Abstand d zur Hyperebene bezeichnet man als Stützvektoren (engl. support vectors). Durch diese Stützvektoren wird die Lage der Hyperebene definiert und die Hyperebene charakterisiert. Eine Veränderung dieser Stützvektoren würde unmittelbar zur Veränderung der Hyperebene führen, wobei die Änderung anderer Vektoren keinen Einfluss auf die Hyperebene hat. Seite 28 von 105 Abbildung 3-5: Schaubild SVM-Klassifikation mit Stützvektoren Das Problem besteht jetzt darin, die trennende Hyperebene w*x+b=0, bzw. den Normalenvektor w zu berechnen, die die Trainingsbeispiele aus C und + C optimal separiert und den Euklidischen Mindestabstand d zu allen Trainingsvektoren maximiert. Die Berechnung der Hyperebene ist ein Optimierungsproblem, das nach La Grange gelöst werden kann. Wenn dieser Normalenvektor w für eine Menge von Daten gefunden ist, kann ein Testvektor z e Rd durch einfache Skalarproduktbildung klassifiziert werden. SVM-Klassifikation: Um zu entscheiden, ob ein Testvektor z e Rd zu einer Klasse C oder einer Klasse + C gehört, teste: d f(z)=(w*z)+b= ? wi zi+b>0 i=1 (3.7) Seite 29 von 105 Das Vorzeichen sgn(f(z)) gibt Auskunft darüber, auf welcher Seite der Hyperebene ein Testvektor z liegt. Das Klassifikationsergebnis f(z) kann als Gütemaß angesehen werden und wird für den SVMRank benutzt. Auf Grund der Abhängigkeit des SVM-Ranks von der Gewichtung der Eingabevektoren, lässt sich kein Gütevergleich zwischen Dokumente n unterschiedlicher Klassen erstellen. Insbesondere die lineare Form des SVM hat sich bei Textklassifikation sehr bewährt und wird daher in dem BingoSystem eingesetzt. Seite 30 von 105 3.2.6. Benutzte Ranking Methoden 3.2.6.1. HITS Algorithmus (Autoritäts- und HUB-Ranking) Der HITS-Algorithmus (hyperlink -induced topic search) [7] wurde erstmals von Jon M. Kleinberg eingeführt. Er ging davon aus, dass die Dokumente eines Themas grob in zwei Gruppen eingeteilt werden kann. Der ersten Gruppe werden Dokumente mit gutem Inhalt bezüglich des Themas zugeordnet (Autoritäten genannt). Die zweite Gruppe enthält verzeichnisähnliche Dokumente, die viele Links zu nützlichen Seiten enthalten. Betrachtet man die Menge der gefundenen Dokumente als einen gerichteten Netzgraphen G, so entsprechen die Dokumente den Knoten der Graphen. Die gerichteten Kanten entsprechen den Links der Dokumente untereinander. Geht man nun davon aus, dass ein Dokument besonders gut ist, wenn viele gute Dokumente darauf verweisen, so kann ein Autoritätsranking an Hand der Anzahl der eingehenden Kanten und der Güte der Verweis-Knoten berechnet werden. Formal lässt sich das Autoritätsranking für jedes Dokument p wie folgt ermitteln: Ap = S Hq q(q,p) e G (3.8) Das Hub -Ranking geht genau wie das Autoritätsranking von dem Modell eines gerichteten Netzgraphen aus. Dabei werden jetzt aber nicht die Anzahl der eingehenden Kanten und die Güte der zugehörigen Verweis-Knoten betrachtet, sondern die Anzahl der ausgehenden Kanten und die Güte der Ziel-Knoten. Ein Dokument, das auf viele andere gute Dokumente verweist ist zwar nicht unbedingt als ein gutes Dokument b zgl. des Inhaltes zu beurteilen, aber ein Dokument mit vielen Links zu guten Dokumenten ist ein guter Startpunkt zum Auffinden neuer Dokumente, die mit hoher Wahrscheinlichkeit auch zu dem Thema des Startdokumentes gehören. Das HUB-Ranking wird wie folgt berechnet: Hp = S Aq q(p,q) e G (3.9) Seite 31 von 105 Der Autoritätswert des Dokumentes p entspricht also der Summe der HUB-Werte aller Seiten, die auf p verweisen und Der HUBWert einer Seite entspricht dem Wert der Summe der Autoritätswerte aller Dokumente, auf die das Dokument p verweist. Abbildung 3-6: HITS-Algorithmus Kleinberg ging davon aus, dass die Dokumente mit den höchsten Autoritätswerten auch den besten Inhalt bzgl. des Themas enthalten. Generell gibt es bei großen diffusen Dokumentenmengen das Problem, dass es zu schlechten Berechnungen der Autoritätswerte kommen kann, weil themenfremde Dokumente in der Datenbasis vorhanden sind. Legt man aber einen fokussierten Crawler zu Grunde, der themenfremde Dokumente schon vorab eliminiert, so kann man von guten Autoritäts- und HUB-Werten ausgehen. 3.2.6.2 Zugriffs-Ranking Dieses Verfahren orientiert sich an den Zugriffszahlen auf ein Dokument. Dazu wird beim Aufruf eines Dokumentes aus der Suchmaschine heraus ein Zähler für das entsprechende Dokument erhöht. Auf diese Art und Weise wird ein Ranking nach der vom User an Hand seines Previews geschätzten Wichtigkeit eines Dokumentes erzeugt. Zugriffs-Ranking = S Klicks auf den Link zur Seite Seite 32 von 105 (3.10) 3.2.6.3 User-Ranking Den Usern wird die Möglichkeit einer direkten Bewertung der Güte eines Suchergebnisses angeboten. Dabei kann der User sowohl eine positive als auch ein negative Bewertung abgeben. Das Ranking errechnet sich wie folgt: Rank= S pos/( S neg+ S pos +000000,1) (3.11) Dabei entsprechen S pos der Anzahl der positiven Bewertungen und S neg der Anzahl der negativen Bewertungen. Der letzte Wert 000000,1 dient lediglich der Vermeidung einer unerlaubten Division durch null. Man erhält so den positiven Anteil der UserBewertungen. 3.2.6.4 Relevanz-Ranking Das Relevanz-Ranking der gefundenen Ergebnisse bezüglich der gestellten Query wird als Skalarprodukt realisiert: |F| Sim(dj,q) := ? d ij q j j=1 (3.12) Dabei geht man davon aus, dass alle Suchbegriffe gleich wichtig sind woraus sich qj=1/#Suchbegriffe ergibt. D ij sind hierbei die RTF-Werte der entsprechenden Suchbegriffe bezüglich des gefundenen Dokumentes. 3.2.6.5 Weitere Ranking-Möglichkeiten Da in Bingo bereites die meisten Ranking-Werte vor berechnet und in der Datenbank gespeichert werden, ist es bei diesem System auch möglich weitere kombinierte Rankingmöglichkeiten einzuführen. Ein Beispiel dafür wäre eine Kombination mit Gewichtung a us SVM-, AuthScore und Feedback-Werten. Dabei kann man die einzelnen Kriterien noch zusätzlich durch Gewichtsfaktoren hervorheben. Wenn z.B. das Feedback doppelt so hoch bewertet werden soll wie die anderen Werte so lässt sich ein Ranking wie folgt berechnen: Rank= SVM-Score + AuthScore + 2 * Feedback 4 4 4 Seite 33 von 105 (3.13) 3.3 Der Webbereich 3.3.1 Die Suchmaschine Es wird von zwei Typen Nutzer der Suchmaschinen ausgegangen. Zum einen wird es unerfahrene Nutzer geben, die einfach nur Begriffe in die Suchmaschine eingeben wollen, zum anderen wird es Nutzer geben, die Erfahrung mit Suchmaschinen aufweisen und die Ergebnismenge auf verschiedenste Art und Weise bearbeiten wollen. Daher wurde entschieden, wie bei anderen Suchmaschinen auch, zwei Suchinterfaces anzubieten. 3.3.1.1 Das Suchinterface für unerfahrene Benutzer. Das erste Interface wendet sich an den unerfahrenen Nutzer und bietet daher auch keine unnötige Auswahlmöglichkeiten an, die den Nutzer verunsichern könnten. Dazu wird ihm ein einfaches Eingabefeld angeboten, indem er seine Suchbegriffe eingeben kann. Abbildung 3-7: Einfache Suchmaske Darüber hinaus hat er im unteren Bereich die Möglichkeit durch den Themenkatalog zu blättern. Die Auswahl eines Themas führt zu einer Folgeseite, die die weiteren Unterkategorien und die Dokumente der entsprechenden Kategorie anzeigt. Dort kann er dann entweder eines der Dokumente anklicken oder weiter den Unterkategorien folgen. Seite 34 von 105 Abbildung 3-8: Themenkatalog der Suchmaschine Nach der Sichtung einer Seite erhält er auf der Ergebnisseite zusätzlich die Möglichkeit, die angesehene Seite zu bewerten, in dem er auf den neu erscheinenden Link „Ihre Meinung“ klickt. Abbildung 3-9: Bewertungsmöglichkeit des Nutzers Wenn der Nutzer ein g utes Dokument gefunden hat, so kann er durch einen Klick auf den Link „Ähnliche Seiten“ sich weitere Seiten anzeigen lassen, die ähnlich klassifiziert wurden. Seite 35 von 105 3.3.1.2 Das Suchinterface für den erfahrenen Benutzer Dem erfahrenen Benutzer muss eine professionelle Suche mit verschiedenen Einstellungsmöglichkeiten zu Verfügung stehen. Durch Anklicken des Linkes „Erweiterte Suche“ gelangt er von der normalen S uchmaske zur professionellen Suche. Abbildung 3-10: Professionelle Suche Der erfahrene Anwender hat hier die Möglichkeit diverse Einstellungen zu tätigen: • • • • • • Einschränkung der Suche auf einen Themenbereich Verknüpfungsart der Suchbegriffe (und/oder) Anzahl der Dokumente auf einer Ergebnisseite Begriffe, die nicht in dem Dokument vorkommen dürfen Datentyp der gefundene n Dokumente Sortierkriterium bei der Ausgabe gefundener Dokumente Hier kann der erfahrene Nutzer Dokumente suchen, die einige Suchbegriffe oder alle Suchbegriffe beinhalten. Dabei kann er in dem Feld „auszuschliessende Wörter“ auch Begriffe eingeben, die nicht in dem Dokument enthalten sein dürfen. Seite 36 von 105 Mit dem Popup „Wahl des Datentyps“ kann er die Menge der Ergebnisse auf bestimmte Dokumenttypen wie PDF - oder Word Dokumente einschränken. Die Idee besteht darin, dass PDF- oder Word-Dokumente qualitativ hochwertiger sind, als die HTMLDokumente, die oftmals nur einen Teil eines ursprünglichen PDF oder Word-Dokumentes wiedergeben. Durch das Ändern des Sortierkriteriums kann er seine Suchanfrage neu geordnet ausgeben lassen. Dies ist besonders wichtig, weil man z.B. aktuelle Pressemitteilungen immer ganz am Ende finden würde, da diese nur bei der Sortierung nach Aktualität nach oben gelangen können. Alle anderen Sortierverfahren würden diese benachteiligen. Abbildung 3-11: Sortiermöglichkeiten der professionellen Suche Die Sortierung nach Relevanz stellt eine Bewertung der Ergebnisse bezüglich der eingegebenen Suchbegriffe dar. Das Konfidenz-Ranking entspricht der Sortierung nach dem SVMScore, also der Güte des Dokumentes bezüglich einer Klasse. Darüber hinaus entspricht die Sortierung nach der Autorität dem Ranking der Güte und Anzahl an Dokumenten, die auf diese Ergebnisse verweisen. Dabei wird davon ausgegangen, dass ein Dokument potentiell besser ist, wenn viele andere informative Dokumente darauf verweisen. Seite 37 von 105 Die Sortierung nach Bewertung ist ein weiteres wichtiges Kriterium, da diese Bewertung von den Nutzern der Suchmaschine abgegeben wird und so eine menschliche Bewertung von Dokumenten entsteht. So kann man leicht solche Dokumente finden, die von vielen Nutzern für gut bewertet wurden. Dies müssen nicht automatisch auch diejenigen Webseiten sein, die von dem Klassifi zierer als gut bewertet werden. Da man aber davon a usgehen kann, dass tatsächlich nur wenige Nutzer eine Webseite bewerten werden, bietet die Sortierung nach der Häufigkeit der Besuche einer Seite ein weiteres menschliches Kriterium. Dieses Kriterium spiegelt die Einschätzung der Nutzer wieder, wie gut ein Dokument an Hand seiner Kurzbeschreibung sein könnte. Wenn ein Nutzer ein Dokument besucht wird ein interner Zähler für dieses Dokument erhöht und abgespeichert. Die technischen Details der Ranking-Verfahren wurden bereits unter 3.2 erläutert. Die Wichtigkeit der verschiedenen Ranking -Arten lässt sich an unserem anfänglichen Beispiel des Jugendlichen verdeutlichen, der auf der Suche nach einer Lehre ist. Kennt der Jugendliche sich bereits etwas aus und weiß genau wonach er sucht, so ist sicherlich das Ranking nach Relevanz für ihn sinnvoll. Wenn er seine Suchbegriffe gut gewählt hat, so erhält er damit die besten Ergebnisse im Bezug der Dokumente auf seine eingegebenen Begriffe. Hat der Jugendliche hingegen nur eine wage Vorstellung von dem wonach er sucht, so steht ihm mit dem Konfidenz-Ranking eine Möglichkeit zur Verfügung, die besten Dokumente einer Klasse mit diesen Begriffen einzusehen. Gleichermaßen geeignet ist auch das Autoritäts-Ranking für den unerfahrenen Jugendlichen. Hierbei erhält er die potentiell informativsten Inhalte, denn viele andere Dokumente verweisen auf diese Dokumente. Geht man davon aus, dass es viele weitere Personen gibt, die sich für das gleiche Thema interessieren, so ist eine Bewertung nach der Anzahl der Besuche der Dokumente ein subjektives Ranking. Wenn viele andere Nutzer dieses Dokument besucht haben, könnte es auch für unseren Jugendlichen interessant sein, denn Dokumente die von vielen Personen besucht wurden sind Seite 38 von 105 potentiell informative Dokumente. Wenn die Besucher der Dokumente noch zusätzlich eine Bewertung für die Webseite abgegeben haben, so kann der Jugendliche sich auch die subjektiv informativsten Dokumente durch das BewertungsRanking an die oberste Position bringen lassen. Das Aktualitä ts-Ranking bietet dem Jugendlichen die Sortierung nach der Aktualität der Dokumente. Insbesondere bei der Suche nach Informationen die sich erst innerhalb eines kurzen Zeitraumes geändert haben, stellt dieses Ranking ein hilfreiches Mittel dar, an aktuelle und nicht veraltete Dokumente zu gelangen. Ein anschauliches Beispiel dafür ist die Änderung der Berufsbezeichnungen im Handwerk. Sucht der Jugendliche Dokumente mit Berufsbezeichnung, so erhält er meist veraltete Dokumente, weil diese bei anderen Ranking -Methoden in der Trefferliste weiter vorn liegen. Nur bei der Sortierung nach Aktualität hat er überhaupt die Chance die neuesten Informationen zu bekommen. 3.3.2 Der Administrationsbereich Man unterscheidet bei den Administratoren zwei Typen von Administratoren: • • der einfache Portaladministrator, der über keine technische Kenntnisse verfügt der Systemadministrator, der Einblick in das System haben muss, um systemspezifische Einstellungen zu ändern Dementsprechend komfortabel oder einfach können auch die Einstellungsmöglichkeiten gehalten werden. Seite 39 von 105 3.3.2.1 Der Portaladministrationsbereich Der Portaladministrator hat grundsätzlich die gleichen Optionen wie der Anwender, damit er bei der Recherche oder Überprüfung von Meldungen nicht ständig zwischen der Administration und der normalen Suchmaschine wechseln muss. Zusätzlich hat er noch die für Ihn wichtigen Menüpunkte in der GUI integriert, mit denen er die Portaladministrationsarbeiten erfüllen kann. Abbildung 3-12: Administrationsinterface des Portaladministrators mit einfacher Suche Wichtig war es hierbei, es dem technisch unerfahrenen Administrator möglichst leicht zu machen, die verschiedenen Einstellungen zu tätigen. Genau wie auch der Nutzer, kann der Portaladministrator ebenfalls die erweiterte Suche innerhalb der Administratorbereiches benutzen. Seite 40 von 105 Abbildung 3-13: Administrationsinterface des Portaladministrators mit professioneller Suche Der Portaladministrator kann folgenden Tätigkeiten ausführen: • • • • • • • • • • von Nutzern vorgeschlagene URLs übernehmen Meldungen über falsch kategorisierte URLs bearbeiten Einstellen der Ausgabeanzahl der Dokumente auf den Ergebnisseiten Einstellen des Standardsortierverfahren Statistische Informationen einsehen Trainingsdokumente bearbeiten Crawldokumente bearbeiten Klassen bearbeiten Externe Anfragen bearbeiten Features einer Klasse bearbeiten Wenn ein Nutzer des Portals eine gute Seite zu einem Thema kennt, kann er diese dem Portaladministrator melden. Dabei wird die URL in einer temporären Tabelle mit der vorgeschlagenen Kategorie gespeichert. Der Portaladminstrator kann diese über sein Interface frei schalten. Zusätzlich zum Melden einer neuen URL kann der Nutzer aber auch ein falsch kategorisiertes Dokument melden. Bei der Meldung kann er seinen eigenen Kategorievorschlag mitteilen. Der Portaladministrator hat die Seite 41 von 105 Möglichkeit diese Dokumente in die neue Kategorie einzuordnen, oder aber auch die Meldung zu löschen. Bei der Einstellung des Standardsortierverfahrens gibt der Portaladministrator vor, welche Sortierung bei der einfachen Suche benutzt werden soll. Ebenso kann der Administrator einstellen, wie viele gefundene Dokumente bei der einfachen Suche auf einer Seite dargestellt werden. Ansonsten gibt es weitere Interfaces für die Arbeiten an dem Datenbestand der Trainingsdokumente, Crawldokumente und der Ontologie. Bei den Arbeiten in diesen Bereichen werden die Daten in der Datenbank geändert und gespeichert. Das Bingo-System aktualisiert sich und seine Funktionen an Hand der Daten der Datenbank. 3.3.2.2 Der Systemadministrationsbereich Da der Systemadministrator nur technische Parameter variiert, benötigt dieser keine grafisch aufwendige Oberfläche oder Suchmöglichkeiten. Dementsprechend einfach und übersichtlich werden die Parameter thematisch gruppiert auf einer Seite zur Modifizierung angeboten. Der Systemadministrator kann folgende Einstellungen treffen: • • • • • • • • • • • • • • • Benutzter Haup tspeicher Hostname der Datenbank Datenbankname Benutzername der Datenbank Passwort der Datenbank Crawler starten/anhalten Crawlermodus Crawlertiefe Recrawlintervall Anzahl der maximalen Crawlerthreads Klassifizierer starten/anhalten Klassifizierungsart Klassifizierungsgrad DNS-Server Maximale Größe eines Datentyps Seite 42 von 105 Abbildung 3-14: Administrationsinterface des Systemadministrators Seite 43 von 105 4. Implementierung 4.1 Technische Daten Das HIP wurde auf einem PC mit Intel 3.0 GHz installiert. Dieses System verfügt über 2GB Hauptspeicher. Das eingesetzte Betriebssystem ist Windows 2000 Server in Verbindung mit einer MYSQL-Datenbank. Zur Initialisierung der Ontologie wurden 10-15 Trainingsdokumente zu jedem Thema eingefügt. In der Initialisierungsphase wird die Suche auf die Hosts der Trainingsdokumente und eine maximale Tiefe von drei Ebenen beschränkt. Nach dem Retraining wird der Crawler ohne weitere Restriktionen gestartet. Dabei kann der fokussierte Crawler bis zu 1000 parallele Download-Prozesse mit anschließender Verarbeitung und Klassifikation durchführen. Pro Durchlauf werden innerhalb von zwölf Stunden etwa zehn Millionen Webseiten besucht und ausgewertet. Dabei werden ca. 10000 positiv klassifizierte Dokumente in die Datenbasis aufgenommen. Die Auffrischung des HIP -Datenbestandes soll wöchentlich erfolgen. Seite 44 von 105 4.2 Die Initialisierungs-, Optimierungsphase In der Initialisierungsphase galt es zunächst festzulegen, welche übergreifende Bereiche für den Handwerksbetrieb oder den handwerk interessierten Nutzer von Bedeutung sind. Dabei sollten auf der obersten Ebene der Ontologie nur wenige Kategorien bereitgestellt werden. Nach reiflicher Überlegung wurde von Hand eine drei stufige Ontologie mit vier Hauptgruppen erstellt. Die vier Hauptgruppen sind: • • • • Beruf&Karriere Berufe des Handwerks Ihr Betrieb Sonstige Dokumente In dem Bereich „Beruf&Karriere“ sollen alle Dokumente zu den Themen Aus- und Weiterbildung im Handwerk archiviert werden. Wohingegen im Bereich „Berufe des Ha ndwerks“ alle Dokumente eingeordnet werden sollen, die ein Bild der einzelnen Handwerksberufe widerspiegeln. Unter der Rubrik „Ihr Betrieb“ sollen alle Informationen eingeordnet werden, die den laufenden Betrieb betreffen. Darunter fallen Informationen, wie die Betriebsgründung, Betriebsführung, Finanzen, Recht&Steuern, Marketing aber auch das Thema „Computer&Internet in Handwerksbetrieben“ und einiges mehr. In der Kategorie „Sonstige Dokumente“ werden weitere handwerksrelevante Dokumente abgelegt, die nicht in die anderen Kategorien eingeordnet werden konnten. Diese Hauptgruppen wurden zum Teil wieder in ca. sechs Untergruppen eingeteilt. Dabei befanden sich in der dritten Stufe der Hauptgruppe „Berufe des Handwerks“ ca. 96 weitere Berufskategorien (nach der offiziellen Handwerksverordnung über die Berufe des Handwerks). Für jede Kategorie gab es lediglich ein bis drei Trainingsdokumente. Das Ergebnis der Klassifikation im Anschluss des ersten Crawls war dabei eher unbefriedigend. Dies war darin begründet, dass verschiedene Handwerksberufe sehr nah verwandt waren und die Dokumente daher nur unzureichend klassifiziert werden konnten. Im nächsten Schritt wurden verwandte Berufe zu Berufsgruppen zusammengefasst. Seite 45 von 105 Nach einem erneuten Crawl wurde deutlich, dass immer noch einige Dokumente völlig falsch klassifiziert wurden. Die Analyse der Features einer Klasse ergab, dass sich durch die geringe Anzahl der Trainingsdokumente falsche oder nichts sagende Terme unter den besten hundert Features einer Klasse befanden. Es war klar zu erkennen, dass die besten Features die Klasse nicht gut beschrieben, und es galt zu überlegen, wie diese Features einer Klasse bereinigt werden könnten. Die Selektion weiterer Trainingsdokumente von Hand lieferte ein besseres Ergebnis, aber bei der Vielzahl der Unterkategorien, war der personelle Aufwand gegenüber der Ergebnisverbesserung nicht vertretbar. Die Feature-Tabelle wurde um ein weiteres Flag „gut“-„schlecht“ erweitert und ein Interface ergänzt, mit dessen Hilfe alle Features einer Klasse in absteigender Folge angesehen und von Hand bewerten werden konnte n. Dies wurde für die zu Grunde liegende Ontologie durchgeführt. Die manuelle Nachbearbeitung der Features einer Klasse verbesserte die Qualität der Klassifizierung erheblich. Ein weiteres Problem bestand darin, dass die Startdokumente des Crawlers sich zum Teil in einem „schlechten Umfeld“ befanden. Einige Dokumente waren zwar sehr gute Dokumente, waren dafür aber in einem Webbereich eingegliedert, der viele Informationen über nicht handwerksrelevante Themen beinhaltete. Es galt die Startdokumente zu kategorisieren, um unnötigen Ballast und Crawl-Aufwand zu vermeiden. Es wurde ein weiteres Flag in der Tabelle der Startdokumente eingefügt, die den Crawler im Zusammenhang mit der einzelnen URL steuern sollte. Die drei möglichen Flags haben folgende Bedeutung: • • • periodisch recrawlen immer crawlen, aber nur in bestimmter Tiefe oder Breite immer vollständig crawlen Es gibt „Gute Dokumente in schlechtem Kontext“, die sich aber nur selten ändern. Diese muss man nur periodisch besuchen, um die Aktualität zu überprüfen. Es gibt aber auch „Gute Dokumente Seite 46 von 105 in schlechtem Kontext“, die sich häufig ändern und evtl. auch gute Links aufweisen. Ein Beispiel hierfür ist der handwerkliche Wirtschaftsteil einer Online -Zeitung. Diese Dokumente müssen immer gecrawlt werden. Als letzte Möglichkeit gibt es auch gute Handwerksportale wie handwerk.de, deren Inhalte sich ständig ändern. Diese Portale müssen natürlich vollständig gecrawlt werden. Der Crawler wurde dann gemäß dieser Tabelle in der Funktionsweise angepasst und ein Webinterface zur Erstellung und Kategorisierung der Startdokumente geschrieben. Verschiedene Portale wurden zunächst einzeln gecrawlt und so der Dokumentenbasis hinzugefügt. Letztendlich verblieb immer noch das Problem der geringen Anzahl an Startdokumenten. Daher fiel die Entscheidung , die Crawlerbasis mit Hilfe der Ergebnisse guter „Suchmaschinen“ zu verbessern. Wie schon zu Beginn durch die Analyse verschiedener Suchmaschine n herausgefunden wurde, liefert google.de bei „guten Anfragen“ auch sehr gute Ergebnisse. Daher wurde die Datenbank um eine Tabelle „extern_search_keys“ erweitert. Damit zukünftig auch Ergebnisse weiterer Systeme integriert werden können, wurde diese Tabelle mit den Feldern „id“, „provider“ und „search_keys “ angelegt. Im Feld „provider“ wird die Identifikation des Systems eingetragen, während das Feld „search_keys“ die gewünschte Anfrage beinhaltet. Diese Tabelle wurde mit entsprechenden Queries gefüllt. Es wurden (durch Herr Sizow) zu dem Bingo-System entsprechende Suchmaschinenwrapper hinzugefügt, die die Webservices der Suchmaschine über die Sprache WSDL (Web Service Definition Language) abfragte n und die Ergebnisse in die Startdatenbank einfügte n. Auf diese Art und Weise wurden schnell eine große Anzahl guter Dokumente in die Startdatenbank aufgenommen. Da im „HIP“ auf großen Datenmengen gesucht wird, ist es wichtig, bei den Suchanfragen die Queries zu optimieren. Daher wurden in der Initialisierungs- und Optimierungsphase dynamisch nur die wirklich benötigten Relationen als joins in die Queries aufgenommen. In Folge dessen stellten sich die Queries in Abhängigkeit von den gewählten Optionen völlig unterschiedlich dar. Anhand der Analyse der Queries und den benötigten Zeiten konnte dann durch Anlegen weiterer Indizes auch die Ausführung Seite 47 von 105 der Queries noch einmal beschleunigt werden, wodurch zumeist Suchzeiten unter einer Sekunde erreicht werden konnten. 4.3 Die Datenbank Die Datenbank wurde zunächst gemäß den Anforderungen des Bingo-Systems übernommen. Im Laufe der Entwicklung des HIP wurde diese gemäß dem Bedarf modifiziert und neue Relationen hinzugefügt. Da es Performance-Probleme mit der Datenbank gab mussten die problematischen Queries analysiert und passende Indizes angelegt werden um diese zu beschleunigen. In der Datenbank befinden sich in der Relation start_urls sowohl die Dokumente für den Crawler, als auch die Trainingsdokumente der Klassen. In der Tabelle classes befindet sich die Ontologie des Systems. Es werden zwei Arten von Crawl-Dokumenten unterschieden: • • einfache Crawldokumente als Startpunkt für unspezifische Crawls Crawldokumente, deren komplette Server gecrawlt werden sollen Auch bei den Trainingsdokumenten gibt es zwei Arten von Trainingsdokumenten: • • fest vorgegebene Trainingsdokumente Trainingsdokumente, die durch automatisches Retraining gefunden werden Die Ontologie bildet einen hierarchischen Baum . In der Kombination mit den fest vorgegebenen Trainingsdokumenten und Crawldokumenten stellen diese Relationen die Startumgebung des Bingo-Systems dar. Wie bereits zuvor erwähnt hängt die Güte des HIP maßgeblich von der Güte der Inhalte dieser Relationen ab. Seite 48 von 105 4.3.1 ERM der wichtigsten Relationen: Im Folgenden sind die wichtigsten Beziehungen zwischen den für die Diplomarbeit relevanten Relationen dargestellt. Abbildung 4-1: Auszug aus dem ERM des Systems Die zentralen Relationen sind „crawldocuments“ und „archivedocuments“. In der Relation „archivedocuments“ sind die Ursprungs-Angaben über das archivierte Dokument enthalten und die Relation „crawldocuments“ beinhaltet die Ranking- und Status Scores. Das komplette Datenbankschema ist im Anhang D beschrieben. Seite 49 von 105 5. Experimente 5.1 Websuche des HIP-Crawlers Die Versuchsreihen des Crawlers mit den Zeiten 90 Minuten und 12 Stunden lieferte folgende Ergebnisse. Laufzeit 90 Min. Laufzeit 12 Std. Besuchte URL´s 130.726 8.221.399 Besuchte Hosts 4.254 18.106 Links extrahiert 1.434.228 82.224.710 Positiv klassifiziert 12.711 216.091 Max. Crawlingtiefe 9 98 Tabelle 5-1: Ergebnisse der Versuchsreihen mit dem Crawler Wie an Hand der Tabelle zu erkennen ist, steigt der Anteil der positiv klassifizierten Dokumente nicht linear zu der Anzahl besuchter URL´s. Innerhalb des Intervalls von 90 Minuten wurden ca. 10% der besuchten Dokumente positiv klassifiziert. In dem zwölf Stunden Intervall wurden hingegen nur noch ca. 3% der Dokumente positiv klassifiziert. Es gilt also nicht eine möglichst große Dokumentenmenge sondern eine möglichst gute Dokumentenmenge zu indexieren und diese optimal in die Ontologie einzuordnen. Wichtig ist es, dem Nutzer eine gute Treffermenge nach seinen Eingaben und gewählten Rankingverfahren zu liefern. Nach dem der Crawler mehrere Millionen Dokumente fokussiert gecrawlt und in die „HIP -Datenbank“ eingefügt hat, wurden die folgenden Experimente durchgeführt. Seite 50 von 105 5.2 Micro-, Macro-Scores des HIP Um das HIP aus rein technischer Sicht mit den analysierten Suchmaschinen und manuell gepflegten Ontologien zu vergleichen werden zunächst die gleichen Anfragen wie in der Abbildung 2-1 gestellt und anschließend die Micro- und MacroScores der Systeme berechnet und verglichen. Suchbegriffe E HIP G P 25 18.401 14 handwerk berufe 25 555 0 müller lehre 25 6.249 2 müller ausbildung 25 89 9 handwerksorganisationen 25 17.773 3 handwerk meister 25 16.846 2 handwerk bafög 25 16.846 0 handwerk existenzgründung 25 358 1 innung müller 25 0 0 übernahme müllerei 25 256 1 müller verordnungen 0,128 Micro-Score: 0,0000165432386 Macro-Score: Tabelle 5-2: Micro- und Macro-Scores der ursprünglichen Versuchsreihe mit dem HIP E = Anzahl der Dokumente auf der ersten Ergebnisseite G = Anzahl gefundener Dokumente P = Anzahl relevanter Dokumente auf der ersten Ergebnisseite MicroScore MacroScore Altavista 0,05625 Lycos 0,26 Google 0,45 Yahoo 0,035 Wikipedia 0,00 HIP 0,128 0,0000023 0,0000044 0,000014 0,00686 0,00 0,000017 Tabelle 5-3: Vergleich der Micro-, Macro-Scores der Systeme (gerundet) Es ist zu erkennen, dass sich das Hip im Micro-Score mit den großen Suchmaschinen messen kann und im Macro-Score besser als alle Suchmaschinen ist und den von Hand gepflegten Systemen näher kommt. Seite 51 von 105 Der Micro-Score gibt an, wie hoch das Verhältnisses der relevanten Dokumente zu den irrerelevanten Dokumenten im durchschnitt ist. Beim Hip befinden sich also annähernd so viele relevante Dokumente auf der ersten Seite, wie bei den großen Suchmaschinen. Darüber hinaus zeigt der Macro-Score wie hoch das Verhältnis der relevanten Dokumente auf der ersten Ergebnisseite zu der Anzahl der gefundenen Dokumenten ist. Der Macro-Score des Hip kommt also nah an die manuell gepflegten Systeme heran, obwohl keine Dokumente manuell eingepflegt werden, sondern nur die Features der Klassen bearbeitet werden. Dieses Ergebnis lässt sich durch weitere Retrainings und manuelle Bearbeitungen der Features aller Klassen noch weiter verbessern. Das System kann also wie erwartet die Lücke zwischen den großen Suchmaschinen mit automatisierten Crawlern und den manuell gepflegten redaktionellen Systemen schließen. Es bietet eine geringere, aber dafür bessere Treffermenge als die herkömmlichen Suchmaschinen, benötigt aber im Vergleich zu den manuell gepflegten anderen Systemen nur geringen manuellen Pflege-Aufwand. Seite 52 von 105 5.3 Gütevergleich google.de – HIP anhand ausgewählter Queries Die Micro-, und Macro-Scores sind technische Mittel um einen Vergleich zwischen verschiedenen Systemen zu ermöglichen. Darüber hinaus entscheidet aber letztendlich der Nutzer an Hand seiner Präferenzen, wie gut ein System ist. Daher wird noch ein direkter Vergleich zwischen den Ergebnissen ausgewählter Queries bei google.de und dem HIP exemplarisch dargestellt. 5.3.1 Key-Words: erhalt meister Da das aktuelle Thema des Ha ndwerks die Abschaffung des Meisters in verschiedenen Bereichen ist, sollten aktuelle Informationen dazu gefunden werden. Das Ergebnis der Anfrage an google .de liefert folgende Ergebnisse: Abbildung 5-1: Ergebnis der google-Suche nach „erhalt meister“ Seite 53 von 105 Es ist unschwer zu erkennen, dass google.de auf der ersten Seite keinen einzigen guten Treffer liefert. Zum Vergleich wurde die gleiche Anfrage an das „HIP“ gestellt, welches folgende Ergebnisse lieferte: Abbildung 5-2: Ergebnis der HIP -Suche nach „erhalt meister“ Es ist klar zu erkennen, dass das „HIP“ bereits auf der ersten Seite mehrere „Gute Dokumente“ zu dem Thema „erhalt meisterbrief“ liefert. Die Ergebnisse des „HIP“ waren besser, weil nach dem Kriterium Aktualität sortieren wurde. Dies ist bei google.de nicht möglich und unterscheidet das HIP maßgeblich von anderen Suchmaschinen. Seite 54 von 105 5.3.2 Key-Words: erhalt meister handwerk In einem weiteren Schritt wurde überprüft, ob das schlechte Ergebnis von google.de nur auf dem fehlenden Kontext des Handwerks beruhte. Dazu wurde der Kontext handwerk in der Suchanfrage ergänzt, was zu folgenden Ergebnissen führte: Abbildung 5-3: Ergebnis der google-Suche nach „erhalt meister handwerk“ Auch hier ist zu erkennen, dass google.de auch im Kontext des Handwerks keine guten Treffer auf der ersten Seite lieferte. Dies lag wahrscheinlich an der Aktualität des Themas. Entweder hatte google.de die aktuellen Seiten noch nicht gecrawlt, oder aber das Bewertungsschema bevorzugte andere Seiten, da die neuen Seiten noch nicht oft besucht oder verlinkt wurden. Seite 55 von 105 5.3.3 Key-Words: beruf müller Bei der Suche nach Informationen zu dem Beruf „Müller“ lieferte google.de folgende Dokumente: Abbildung 5-4: Ergebnis der google-Suche nach „beruf müller“ Anhand der URL´s ist auch hier ersichtlich, dass kein gutes Dokument auf der ersten Seite angezeigt wird. Dies ist auf den fehlenden Kontext des Handwerks und die Doppeldeutigkeit des Terms „Müller“ zurückzuführen, da Müller auch ein gängiger Familienname ist. Seite 56 von 105 Das „HIP“ lieferte bei der gleichen Anfrage folgende Ergebnisse: Abbildung 5-5: Ergebnis der HIP -Suche nach „beruf müller“ Es werden auch hier mit der bestehenden Datenbasis zu diesem Zeitpunkt keine Dokumente mit dem „Beruf Müller“ gefunden, aber das System führt den Nutzer immerhin noch zu Webseiten, die sich mit dem Thema der Berufe beschäftigt. Das Ergebnis ist also dennoch besser zu bewerten, als das Ergebnis von google.de. Seite 57 von 105 5.3.4 Zusammenfassung Wie bereits vor Beginn der Erstellung des „HIP“ analysiert wurde, liegen die Stärken des HIP in dem automatischen Kontext des Handwerkes und dem fokussierten Crawler, der nur Webseiten zu den vorhandenen Themen in die Datenbank aufnimmt. Dadurch können auch Doppeldeutigkeiten von Termen reduziert werden, da die Terme im Kontext zum Handwerk stehen. Durch die verschiedenen Möglichkeiten der Sortierung der Ergebnisse erzielt man einen weiteren großen Vorteil gegenüber anderen Suchmaschinen. 5.3 Lastprofile der HIP-Suchmaschine Es wurden Tests bezüglich der Last und der Antwortzeiten der Suchmaschine durchgeführt. Zuerst wurden die Antwortzeiten einzelner Anfragen mit unterschiedlichen Ranking -Kriterien gemessen: Suchebgriffe Verknüpfung Rank Ergebniszahl ausbildungsverordnung lehrling handwerkskammer saarland angebot ausbildungsverordnung lehrling handwerkskammer saarland angebot ausbildungsverordnung lehrling handwerkskammer saarland angebot ausbildungsverordnung lehrling handwerkskammer saarland angebot oder AuthScore 195 Antwortzeit (ms) 927 oder AuthScore 23767 12283 oder Lastmod 195 6 oder Lastmod 23767 3726 und AuthScore 3 2 und AuthScore 14 686 und Lastmod 3 2 und Lastmod 14 752 Tabelle 5-4: Auszug aus der Versuchs -Tabelle zu den Antwortzeiten des HIP Seite 58 von 105 Anschließend wurden unterschiedliche Anfragen an die Suchmaschine in Form paralleler Threads ausgeführt. Anfragen parallel Anz. Suchbegriffe Anz. Treffer Antwortzeit Max (ms) Antwortzeit Min (ms) Antwortzeit Avg (ms) 1 1 15508 15250 47 170 1 3 22492 16984 78 330 5 1 16185 110547 78 738 5 3 10798 248984 78 1527 5 6 19876 303891 219 4575 10 1 14053 298781 93 1319 10 3 11924 290718 422 3886 Tabelle 5-5: Auszug aus der Versuchs -Tabelle zu Antwortzeiten mit parallelen Threads Es ist ersichtlich, dass die Antwortzeiten der mysql Datenbank mit der Anzahl der parallelen Anfragen in Kombination mit der Anzahl der Suchbegriffe steigen. Die Suchmaschine sollte daher schon bei der Eingabe weniger Suchbegriffe gute Treffer liefern, damit die Gesamtantwortzeiten gering gehalten werden. Seite 59 von 105 6. Weitere aufgetretene Schwierigkeiten 6.1 Timeouts Durch die Extraktion aller wichtigen Terme inkl. der entsprechenden Positionen der Terme innerhalb des Dokumentes kommt es schon bei wenigen Dokumenten zu einer extrem großen Termmenge. (Bei 217 Dokumenten waren ca. 110932 Terme in der Term-Tabelle eingetragen). Dadurch kam es insbesondere bei der Teilstring-Suche mit der logischen Und-Verknüpfung der Suchbegriffe zu Timeouts der Datenbank, weil ein Self-Join über die Anzahl dieser Suchbegriffe notwendig war. Zusätzlich griffen durch die Teilstringsuche die Indizes der Datenbank nicht mehr. Ein noch größeres Problem wurde durch die „Nicht-Suchbegriffe“ erzeugt. Denn um die Nicht-Suchbegriffe in die Query aufzunehmen hätte man einen Self-Join der Termtabelle über die Anzahl aller Terme eines einzelnen Dokumentes tätigen müssen. Da bei großen Dokumenten aber auch große Termmengen vorhanden sind, hatten diese Self-Joins schnell die Ressourcen gesprengt. Dieses Problem wurde gelöst, indem zunächst die gültigen Dokumente mit den entsprechenden Suchbegriffen selektiert wurden. Im Anschluss daran wurde alle Dokumente selektiert, die die Nichtsuchbegriffe beinhalteten und dann die Differenz der entsprechenden Dokumentenmengen gebildet. 6.2 Garbage-Collection Im Zuge der Realisierung der eingeschränkten Suche (Fortgesetzte Suche auf bereits gefundenen Ergebnissen) mit Zwischenspeicherung von Ergebnissen oder Suchanfragen bestand die Gefahr des Garbage-Collection bei fehlerhaften Ausführungen. Von der Speicherung vorhandener Suchergebnisse oder der auszuführenden Queries in der Datenbank wurde daher abgesehen. Stattdessen wurde die eingeschränkte Suche durch Weitergabe der vorherigen Suchbegriffe und anschließender Kombination mit den neuen Suchbegriffen realisiert. Das mehrfache Absenden gleicher Queries konnte ebenfalls sowohl serverseitig über die Speicherung der Session-IDs und zugehöriger Queries abgefangen werden, als auch über ein Seite 60 von 105 clientseitiges Javascript welches das mehrfache Betätigen des Absenden-Buttons ohne Query-Veränderungen abfängt. Wegen der Gefahr der Garbage-Collection wurde diese Option in der Javascript-Variante implementiert. Ein zusätzlicher Vorteil durch die gewählte Realisierungsart dieser Optionen besteht in der Reduzierung der Datenbanklast. 6.3 Dateninkonsistenzen durch neue Crawls Da ein Crawl zusammen mit den anfallenden Berechnungen einen Zeitraum von 10-15 Stunden umfassen kann besteht die Gefahr von Inkonsistenzen in der Originaldatenbank. Ebenso könnte ein „fehlerhafter Crawl“ die Datenbestände vernichten. Um dies auszuschließen wurde eine zweite Datenbank-Instanz für den Crawler angelegt, die nach Beendigung aller Vorgänge in die Original-Datenbank überführt wird. Dabei wird vor Einspielen der neuen Daten eine Sicherung des alten Datenbestandes erstellt. Seite 61 von 105 7. Zusammenfassung und Ausblick State of the Art sind manuell gepflegte oder crawlende, automatisch klassifizierende Suchmaschine n. Da die manuelle Pflege sehr zeitaufwendig und die automatische Klassifizierung kontextinsensitiv sind, liefern diese insbesondere bei der Suche nach spezifischen Informationen durch unerfahrene Benutzer meist schlechte oder eine nicht ausreichende Anzahl Ergebnisse. Die Idee der Diplomarbeit besteht in der Erstellung eines fokussierten Crawlers in Kombination mit einer intelligenten Suchmaschine. Hierbei steht insbesondere die auf das Thema Handwerk bezogene Suche releva nter Dokumenten und die optimale Darstellung der gefundenen Ergebnisse einer Suche nach verschiedenen Ranking-Möglichkeiten im Mittelpunkt. Dadurch gelingt es verschiedene Sichtweisen auf die gefundenen Dokumente einer Suchanfrage zu realisieren und den Ansprüchen verschiedener Nutzer gerecht zu werden. Konkret wurden diese Ansätze der Diplomarbeit in dem Pilotprojekt „HIP“ (Handwerker Informations Portal) realisiert. Das Framework des HIP besteht aus einem „fokussierten Crawler“ (Bingo-System), einer mysql-Datenbank, einer professionellen Suchmaschine mit verschiedenen Optionen und Rankingmöglichkeiten, sowie den web basierten Administrationsbereichen. Der thematisch fokussierte Crawler nimmt an Hand vorhandener Trainingsdokumente thematisch positiv klassifizierte Dokumente in die Datenbasis auf. Dadurch fließt automatisch das fokussierte Thema als Kontext in die Anfragen der Suchmaschine ein. Die Suchmaschine bietet eine einfache Suche für unerfahrene Benutzer und ein professionelles Interface für erfahrene Benutzer an. Durch den einfließenden Kontext des fokussierten Themas liefert bereits die einfache Suche „gute“ Ergebnisse. Die professionelle Suche bietet mit den verschiedenen logischen Verknüpfungen, die Einschränkung auf verschieden Dokumenttypen sowie den diversen Rankingmöglichkeiten ein optimales Werkzeug für die Suche auf den Datenbeständen. Insbesondere lassen sich zu den bereits vielfältigen RankingMöglichkeiten leicht weitere kombinierte Rankingmöglichkeiten erstellen. Dadurch lässt sich dieses System leicht an weitere Anforderungen anpassen. Seite 62 von 105 Geplant ist es zukünftig die Präzision der Expertensuche zu verbessern und alternative Verfahren für das automatische Clustering und autonomes Generieren von neuen Kategorievorschlägen hinzuzufügen. Des Weiteren werden die bestehenden Funktionen analysiert und überarbeitet, um die Antwortzeiten bei Suchanfragen zu optimieren. Da die Tabelle Terms jeden Term eines Dokumentes mit seiner Position innerhalb des Dokumentes abspeichert kommt es vor dass ein Term eines Dokumentes mehrfach eingetragen ist. Die Größe dieser Tabelle wäre durch Duplikatelimination zu reduzieren. Alternativ könnte man den „porter-Stemmer“ für php erstellen und die Termsuche über die Dokumentfeatures statt über die Term-Relation laufen lassen. Eventuell wird das „HIP“ auch von der langsamen beschränkten mysql-Datenbank auf eine Oracle-Datenbank umgestellt und einzelne Programmteile in die Oracledatenbank integriert. So ließe sich der java-Porter-Steammer in der Oracle -Datenbank integrieren. Die in dem HIP angewandten Technologien kann man zur Erstellung beliebiger Themen bezogener Informationsportale verwenden. Besonders gut geeignet ist das System für sehr spezifische Bereiche, die spezielle n Fachjargon beinhalten. Daher wird in Betracht gezogen diese Technologie für weitere bundesweite Informationsportale einzusetzen. Seite 63 von 105 8. Anhang A (Pflichtenheft - Funktionalitäten von HIP) Zur Vereinfachung und Gruppierung der Funktionalitäten wurden alle User des Systems in drei Gruppen eingeteilt: a) Die Handwerker Diese stellen die primäre Klientel als Anwender des Systems dar. Es wird vorausgesetzt, dass diese zumeist unerfahren sind und möglichst wenig an direkten Optionen zur Verfügung haben. b) Der Portaladministrator Dieser soll leichte administrative Aufgaben ausführen, ohne besondere systemspezifische Kenntnisse besitzen zu müssen c) Der Systemadministrator Dieser Administrator muss tiefer gehende Kenntnisse des Gesamtsystems besitzen, da er die Möglichkeit besitzt viele systeminterne Parameter zu kalibrieren. Nach der Bestimmung aller beteiligten Gruppen, wurden nach Absprache mit den entscheidenden Personen folgender Funktionsumfang für die einzelnen Gruppen festgelegt. 8.1 Aktivitäten für den Handwerker (Benutzer) Die Aktivitäten der User (Benutzer) liegen in den folgenden Bereichen: a) Suchmöglichkeiten innerhalb der Dokumentdatenbank b) Mitteilungsmöglichkeiten (Neue URL, falsche URL, ...) c) Bewertungsmöglichkeiten Seite 64 von 105 8.1.1 Suchen Es sollen generell zwei Möglichkeiten bestehen, sich in der Suchmaschine zu bewegen. Zum einen soll es wie in den Katalogsystemen möglich sein, in den Kategorien zu blättern und zu stöbern, zum anderen soll es auch möglich sein, direkt zu suchen und diese Suche auch weiter einzuschränken, bzw. ähnliche Seiten zu finden. Der Katalog muss dabei dynamisch aus der Datenbank generiert werden. Die Suche soll zwei geteilt realisiert werden. Auf der Startseite soll sich immer ein einzelnes Suchfeld befinden. Unter einem speziellen Unterpunkt kann die Profisuche für erfahrene Benutzer angeboten werden. Anforderungen: - Baumartige Struktur zum Blättern nach Themen (Katalog) Soll dynamisch erzeugt werden, ohne unnötige Serverlast zu erzeugen - Suchfunktionen: i) Einfache Suche: Eingabefeld für mehrere Suchbegriffe, getrennt d urch Leerzeichen. Zusätzlich wählbar: Suche im aktuellen Teilbaum, oder auf bereits gefundenen Ergebnissen ii) Profisuche: Eingabefeld für Suchbegriffe Selektionsfeld: „Und/Oder“ Eingabefeld für nichtenthaltene Suchbegriffe Zusätzlich wählbar: Suche im Teilbaum iii) ähnliche Seiten: Bei gefundenen Seiten soll ein Button „ähnliche Seiten finden“ verfügbar sein, der Seiten mit ähnlichem Inhalt fndet. Seite 65 von 105 8.1.2 Mitteilen relevanter URL´s Dem Handwerker muss eine Möglichkeit geschaffen werden, für Ihn subjektiv wichtige URL´s zu melden. Diese sollte dem Portaladministrator vorgelegt werden, der entscheiden kann, was mit der URL geschehen soll. Anforderungen: - Melden von URL´s in einem bestimmten Katalogkontext Der Handwerker muss wie in anderen Katalogsystemen, die Möglichkeit haben, sich durch den Katalog zu bewegen. Gelangt er in eine n Bereich des Kataloges, in dem er eine Seite anmelden will, so muss er dort kontextbezogen seine URL an den Portaladministrator übermitteln können. Er muss eine Bestätigung der Aktion erhalten und der Eintrag soll in eine temporäre Datenbank geschrieben werden, die periodisch von dem Portaladministrator abgearbeitet werden muß. - Melden von URL`s ohne Kontext Äquivalent zum vorherigen Verfahren, sollte der Handwerker auch eine URL melden können, ohne diese selbst zu klassifizieren. Dabei soll das System automatisch eine Klassifizierung vorschlagen, um dem Portaladministrator die Arbeit zu erleichtern. Seite 66 von 105 8.1.3 Bewerten von URL´s durch den Handwerker Der Handwerker muss die Möglichkeit haben, aktiv in das Bewertungsschema einzugreifen, um die Güte der Ergebnisse subjektiv zu verbessern. Dazu muss er zum einen melden können, wenn eine URL falsch klassifiziert wurde, zum anderen muss er aber auch eine Bewertung zu einer Seite abgeben können. Anforderungen: - Melden falsch zugeordneter URL´s Wenn ein Benutzer in dem Katalog blättert, muss er die Möglichkeit bekommen, bestimmte URL´s melden zu kann, wenn diese nach seiner Meinung nicht an dieser Stelle in den Katalog gehören. Dazu muss er optional aus dem Katalog einen Pfad auswählen können, der ihm sinnvoll erscheint. Diese Meldung muss in einer temporären Datenbank gespeichert werden und dem Portaladministrator vorgelegt werden. - Bewerten einer URL bzgl. des Themas Generell gibt es zwei Möglichkeiten der Bewertung durch den Handwerker: i) indirekte Bewertung durch das Anklicken eines Links Bei dieser Methode wird ein interner Zähler pro Dokument in der Datenbank geführt (clicks). Mit dieser Methode kann man statistische Daten sammeln, ohne den User zu einer Aktivität zu zwingen. Dabei geht man davon aus, dass Seiten, die öfter angewählt werden auch von besserer Güte sind. ii) Direkte Bewertungsmöglichkeit Wenn der Handwerker eine Seite anklickt und diese für gut oder schlecht befindet, soll er diese Wertung mitteilen können. Dies ist realisierbar, indem man entweder die angeklickte Seite in einem geteilten Frame darstellen lässt, wobei z.B. in einem schmalen oberen Streifen die Bewertung stattfinden könnte, oder aber ein Popupfenster geöffnet wird, indem die Bewertung abgegeben werden kann. Seite 67 von 105 8.2 Aktivitäten des Portaladministrators Der Portaladministrator soll in der Lage sein systemunspezifische administrative Einstellungen und Arbeiten zu tätigen: a) Hinzufügen/Suchen/Löschen von URL´s in der Crawlerdatenbank Der Portaladministrator muss neue Dokumente in die Grunddatenbank des Crawlers einfügen, bestehende URL´s suchen und löschen können. Dies muss über ein einfach zu bedienendes Interface realisiert werden. b) Hinzufügen/Suchen/Löschen von URL´s in der URLDatenbank Äquivalent zum Punkt a) muss der Portaladministrator die gleichen Möglichkeiten haben, um URL´s in die URLDatenbank einzutragen, zu suchen und löschen zu können. Zusätzlich muss aber hier auch die Möglichkeit bestehen, einzelne URL´s anderen Kategorien zuordnen zu können, falls diese falsch klassifiziert wurden. b) Freischalten von Dokumenten die fehlerhaft gemeldet wurden Der Portaladministrator muss die falsch zugeordneten Dokumente sichten können und mit einem bestimmten Pfad freischalten können. c) Freischalten/Löschen vom User gemeldeter URL´s Der Portaladministrator muss vom User gemeldete URL´s sichten, mit einem bestimmten Pfad freischalten oder auch gänzlich löschen können. Dabei muss Ihm entweder der Kategorievorschlag des Users oder falls nicht vorhanden ein Kategorievorschlag durch den Classifier unterbreitet werden. Dieser kann er dann akzeptieren oder selbst einen Pfad auswählen. f) Testen der Url´s beim Darstellen aktivieren/deaktivieren Der Portaladministrator sollte die Möglichkeit haben, eine Einstellung zu tätigen, ob vor dem Darstellen einer URL als Suchergebnis, diese auf Existenz getestet werden soll. Seite 68 von 105 g) Aktivieren des Crawlers Weiterhin muss der Portaladministrator den Crawler aktivieren können. h) Aktivieren des Klassifiers Äquivalent zum Crawler, muss der Portaladministrator auch im Stande sein, die Klassifizierung erneut anzuwerfen. i) Ergänzende Einstellungen der Suchfunktion des Handwerkers Zu den für den Handwerker sichtbaren Einstellungen der Suche, muss der Portaladministrator noch weitere Parameter einstellen können. Zu diesen „unsichtbaren Einstellungen“ gehören: • • Wieviele Ergebnisse sollen als Standard auf eine Seite dargestellt werden ? Sollen URL´s auf Existenz geprüft werden, bevor sie dargestellt werden? Seite 69 von 105 8.3 Aktivitäten des erfahrenen Systemadministrators Es muss einem erfahrenen Systemadministrator möglich sein, diverse Parameter des Systems einstellen zu können. Dabei kann man die folgenden Bereiche unterscheiden: a) Einstellen der Hardwareoptionen Der erfahrene Systemadministrator muss das System gemäß der vorhandenen Hardwaregegebenheiten konfigurieren können - verfügbarer Arbeitsspeicher verfügbarer Plattenspeicher b) Einstellen der Datenbankoptionen Es muss dem Systemadministrator auch möglich sein, die Datenbank -Daten anzupassen, wenn ein Wechsel des Datenbankservers stattfindet. - Hostname Datenbankname Username Passwort c) Einstellen der Crawleroptionen Diverse Crawleroption sollten hier ebenfalls konfigurierbar sein: - Wahl Depth / Breadth Crawlen Maximale Tiefe Maximale Crawler Roots pro Klasse Wann soll eine bereits gecrawlte Adresse neu gecrawlt werden Wieviele Threads maximal Welcher Timeout soll benutzt werden d) Einstellen der Klassifieroptionen Aquivalent zur vorherigen Option, muß der Systemadmin auch den Klassifier konfigurieren können - Maximale Trainingsdokumente pro Klasse Wähle Featuregewichtung (TF max[TF])*(log1+IDF) .... Wann wird ein Dokument verworfen Seite 70 von 105 e) Sicherung der Datenbank als Dumpschema oder auch als Datenbankdateien und Zwischenspeichern auf einer zusätzlichen Platte Da sich im Laufe der Zeit große Datenmengen mit wichtigen statistischen Daten ansammeln können, sollte der Administrator diese Daten auch sichern können. Dazu geeignet wäre ein Dumpschema der Datenbereiche, oder auch das Sichern der eigentlichen Datenbankdateien auf einem zweiten Medium. f) Sonstige Einstellungsmöglichkeiten Folgende weitere Einstellungen sollten von dem Systemadministrator eingestellt werden können - Wieviele Zeichen der URL als Übersichtstext in der Datenbank gespeichert werden sollen Maximale Größe der Datentypen, die durchsucht werden dürfen Welcher DNS-Server soll benutzt werden 8.4 Schlußbemerkung zur Systemadministration: Der Suchmaschinenwrapper muss als eigenes Modul generiert werden, da dieses evtl. häufiger ausgetauscht werden muss. Dieser Austausch muss durch reines physikalisches Ersetzen des Moduls geschehen und darf keine Auswirkung auf die Funktionalität des Systems haben. Daher müssen die zurückgegebenen Parameter stets gleichförmig bleiben. Seite 71 von 105 9. Anhang B (Spezifizierung der Funktionen der Diplomarbeit) Nach der Erstellung das Pflichtenheft und der Entscheidung für das System Bingo als Grundlage, galt es, alle Funktionen bereitzustellen, damit eine GUI programmiert werden konnte, ohne auf die Datenbank oder Bingo direkt zugreifen zu müssen. Dazu mussten zunächst die benötigten Funktionen in den verschiedenen Bereichen gefunden und definiert werden. Dies führte zu folgendem Ergebnis: 9.1 Benötigte Funktionen für den Bereich der Benutzer function get_classes_for_path($path) function get_class_for_ID($Class_ID) function get_docs_for_path($path,$order) function get_doc_for_id($id) function get_class_id_for_doc_id($id) function get_docs_for_simple_search($search_string,$order,$path,$sessionid) function get_docs_for_limited_simple_search($search_string,$sessionid) function delete temp_query($sessionid) function get_docs_for_professional_search($search_string1,$bool1, $search_string2, $order,$path) function insert_user_doc_to_katalog($url,$Class_ID) function insert_user_doc($url) function insert_user_doc_error($id,$ Prop_Class_ID) function insert_click_evaluation($id) function insert_user_doc_evaluation($id,$type) function get_authscore_for_id($id) function get_clicks_for_id($id) function get_evaluation_for_id($id) 9.2 Benötigte Funktionen für den Bereich des Portaladministrators function search_crawler_doc($url) function get_crawler_doc_id($url) function delete_crawler_doc($id) function add_crawler_doc($url) function search_docs($url) function search_abc($url) function get_doc_id($url) Seite 72 von 105 function delete_doc($id) function add_doc($url) function get_error_urls() function get_error_url_info($Temp_ID) function get_new_urls() function get_new_url_info($Temp_ID) function activate_new_url($id,$path) function delete_temp_url($Temp_ID) function classify_url($url) function get_url_test_mode() function set_url_test_mode($type) function test_url($url) function activate_crawler() function activate_classifier() function change_class_for_id($id,$path) function get_user_search_mode() function set_user_search_mode($type) function get_number_search_results() function set_number_search_results($amount) 9.3 Benötigte Funktionen für den Bereich des erfahrenen Systemadministrators function get_usable_memory() function set_usable_memory($amount) function get_usable_harddisk() function set_usable_harddisk($amount) function get_db_hostname() function set_db_hostname($hostname) function get_db_name() function set_db_name($dbname) function get_db_username() function set_db_username($dbuser) function get_db_password() function set_db_password($dbpassword) function get_crawler_mode() function set_crawler_mode($mode) function get_crawler_maxdepth($depth) function set_crawler_maxdepth($depth) function get_crawler_maxroot_class() function set_crawler_maxroot_class($number) function get_crawler_doc_recrawl_time() function set_crawler_doc_recrawl_time($day) function get_crawler_maxthreats() function set_crawler_maxthreats($threats) function get_classifier_maxtraindocs_class() function set_classifier_maxtraindocs_class($traindocs) Seite 73 von 105 function get_classifier_feature_mode() function set_classifier_feature_mode($mode) function get_classifier_drop_mode() function set_classifier_drop_mode($mode) function get_doc_summary_amount() function set_doc_summary_amount($amount) function get_doc_types() function get_doc_type_max_size($mime) function set_doc_type_max_size($mime,$max_size) function get_dns_server() function set_dns_server($url) Die komplette API-Refrenz befindet sich im Anhang C. Seite 74 von 105 10. Anhang C (API-Dokumentation) function get_classes_for_path($path) Beschreibung: Funktion zur Rückgabe der ID´s aller Unteräste eines bestimmten Astes Benötigte Parameter: • Klassenpfad des aktuellen Astes Rückgabewerte: • 0, wenn kein Ergebnis gefunden wurde • Array, wenn Ergebnis gefunden wurde Im übergebenen Array werden die Class_ID´s der gefundenen Äste gespeichert function get_class_for_ID($Class_ID) Beschreibung: Funktion zur Rückgabe des Klassennamens einer bestimmten Class_ID Benötigte Parameter: • Class_ID Rückgabewerte: • 0, wenn kein Ergebnis gefunden werden konnte • Name der Klasse, falls Ergebnis gefunden wurde function get_docs_for_path($path,$order) Beschreibung: Funktion zur Rückgabe der ID´s aller Dokumente, die in einem bestimmten Ast als Blätter eingetragen sind Benötigte Parameter: • Klassenpfad des aktuellen Astes • Ordnungskriterium Das Ordnungskriterium wird wie folgt definiert: 0 alphabetisch 1 AuthScore (Anzahl der Seiten die hierauf verweisen) 2 SvmScore (Klassifizierungsgüte) 3 Klicks 4 User-Bewertungen Rückgabewerte: • 0, falls keine Ergebnisse gefunden wurden • Array, falls Ergebnisse gefunden wurden In dem übergebenen Array werden die ID´s der im Ast gefundenen Dokumente gespeichert Seite 75 von 105 function get_doc_for_id($id) Beschreibung: Funktion zur Rückgabe der Daten eines Dokumentes mit bestimmter ID Benötigte Parameter: • ID des Dokumentes Rückgabewerte: • 0, falls kein Ergebnis gefunden werden konnte • Array, falls Ergebnis gefunden wurde Im ersten Feld des Arrays wird die „URL“ abgespeichert und im zweiten Feld das „summary“ function get_class_id_for_doc_id($ID) Beschreibung: Funktion zur Rückgabe der Class-ID zu einer zugehörigen Doc-ID Benötigte Parameter: • ID des Dokumentes Rückgabewerte: • 0, falls kein Ergebnis gefunden werden konnte • Class-ID, falls gefunden function delete temp_query($sessionid) Beschreibung: Funktion um gespeicherte temporäre Queries eines Users zu löschen Benötigte Parameter: • Sessionid des Users dessen temporäre Query gelöscht werden kann Rückgabewerte: • 1, falls Löschen erfolgreich Seite 76 von 105 function get_docs_for_professional_search ($search_string1,$bool1, $search_string2,$order,$path) Beschreibung: Funktion zur Rückgabe der ID´s aller Dokumente, die bestimmte Suchbegriffe enthalten und andere Suchbegriffe nicht enthalten. Dabei kann bei den enthaltenen Suchbegriffen die boolsche Operationen „alle“ (and) oder „eins“ (or) selektiert werden. Benötigte Parameter: • Suchstring1 für enthaltene Begriffe • Boolsche Operation auf den enthaltenen Suchbegriffe: 0 alle Begriffe müssen enthalten sein 1 einer der Begriffe muß enthalten sein • Suchstring2 für nichtenthaltene Begriffe • Ordnungskriterium Das Ordnungskriterium wird wie folgt definiert: 0 alphabetisch 1 AuthScore (Seiten die hierauf verweisen) 2 Klicks 3 POSevaluation SvmScore und User-Bewertung machen bei kontextfreier Suche keinen Sinn • Pfad des Unterbaumes in dem gesucht werden soll Soll die Suche nicht auf einen Teilbereich eingeschränkt werden, so soll hier einfach „/root“ übergeben werden. Rückgabewerte: • 0, falls kein Ergebnis gefunden werden konnte • Array, falls Ergebnisse gefunden wurde In dem übergebenen Array werden die ID´s der gefundenen Dokumente gespeichert. Seite 77 von 105 function insert_user_doc_to_katalog($url,$Class_ID) Beschreibung: Funktion zum Katalog bezogenen Eintragen einer URL eines Users in die temporäre Datenbank. Diese wird dem Portaladministrator innerhalb des Kataloges zur Freischaltung angeboten. Benötigte Parameter: • URL des Dokumentes • Pfad des Unterbaumes in den die URL eingeordnet werden soll. Rückgabewert: • 0, wenn nicht eingetragen werden konnte • 1, wenn Eintragung erfolgreich war. function insert_user_doc($url) Beschreibung: Funktion zum Eintragen einer URL eines Users in die temporäre Datenbank. Diese wird dem Portaladministrator innerhalb des Kataloges zur Freischaltung angeboten. Benötigte Parameter: • URL des Dokumentes Rückgabewert: • 0, wenn nicht eingetragen werden konnte • 1, wenn Eintragung erfolgreich war. Dem Portaladministrator kann je nach Einstellung über den Neueintrag per Mail informiert werden. function insert_user_doc_error($id,$ Prop_Class_ID) Beschreibung: Mit dieser Funktion kann der User melden, dass ein Dokument falsch kategorisiert wurde. Dabei kann er einen Pfad vorschlagen, in den das Dokument passen könnte. Diese Meldung wird in einer temporären Datenbank zwischengespeichert und dem Portaladministrator vorgelegt. Benötigte Parameter: • ID des falschen Dokumentes • Class_ID des vorgeschlagenen Pfades Rückgabewerte: • 0, falls Meldung fehlgeschlagen • 1, falls Meldung erfolgreich Seite 78 von 105 function insert_click_evaluation($id) Beschreibung: Mit dieser Funktion kann die Anzahl der Klicks für ein Dokument erhöht werden. Benötigte Parameter: • ID des zu bewertenden Dokumentes Rückgabewerte: • 0, falls Eintragung fehlgeschlagen • 1, falls Eintragung erfolgreich function insert_user_doc_evaluation($id,$type) Beschreibung: Mit dieser Funktion kann die User-Bewertung für ein Dokument eingetragen werden. Dabei werden positive und negative Bewertungen separat gezählt. Benötigte Parameter: • ID des zu bewertenden Dokumentes • Typ der Bewertung: 0 negative Bewertung 1 positive Bewertung Rückgabewerte: • 0, falls Eintragung fehlgeschlagen • 1, falls Eintragung erfolgreich function get_authscore_for_id($id) Beschreibung: Mit dieser Funktion kann ausgelesen werden welcher AuthScore ein Dokument hat Benötigte Parameter: • ID des Dokumentes, dessen AuthScore gesucht ist Rückgabewerte: • 0, falls Eintragung fehlgeschlagen • Wert, falls AuthScore vorhanden Seite 79 von 105 function get_clicks_for_id($id) Beschreibung: Mit dieser Funktion kann ausgelesen werden wie viele Clicks ein Document hat Benötigte Parameter: • ID des Dokumentes, dessen Clicks gesucht ist Rückgabewerte: • 0, falls Eintragung fehlgeschlagen • Wert, falls Clicks vorhanden function get_evaluation_for_id($id) Beschreibung: Mit dieser Funktion kann ausgelesen werden welche Bewertung (NEGevaluation, POSevaluation ) ein Document hat Benötigte Parameter: • ID des Dokumentes, dessen Evaluation gesucht ist Rückgabewerte: • 0, falls Eintragung fehlgeschlagen • array mit Werten, falls Bewertungen vorhanden, mit NEGevaluation im ersten Feld und POSevaluation im zweiten Feld function search_crawler_doc($url) Beschreibung: Diese Funktion gibt in einem Feld alle ID´s der Crawlerdokumente zurück, die die angegebene URL als Teilstring enthalten. Benötigte Parameter: • URL, die gesucht werden soll Rückgabewerte: • 0, falls keine Dokumente gefunden werden konnten • Array mit den gefundenen ID´s, falls Dokumente gefunden wurden Seite 80 von 105 function get_crawler_doc_id($url) Beschreibung: An Hand dieser Funktion kann man die ID eines Crawler-Dokuments mit einer bestimmten URL ermitteln. Benötigte Parameter: • URL des Crawler-Dokuments Rückgabewerte: • 0, wenn kein Dokument gefunden wurde • ID des Dokumentes, wenn es gefunden wurde. function delete_crawler_doc($id) Beschreibung: Mit dieser Funktion kann man das Dokument mit einer bestimmten ID aus der Crawler-Datenbank löschen. Benötigte Parameter: • ID des zu löschenden Dokuments Rückgabewerte • 0 , wenn Dokument nicht gelöscht werden konnte • 1 ,wenn Löschen erfolgreich war function add_crawler_doc($url) Beschreibung: Das Hinzufügen eines Dokuments in die Crawler-Datenbank wird mit dieser Funktion realisiert. Benötigte Parameter: • Die URL, die in die Crawler-Datenbank aufgenommen werden soll Rückgabewerte: • 0 ,wenn Eintrag fehlgeschlagen • 1 ,wenn Eintrag erfolgreich war Seite 81 von 105 function search_docs($url) Beschreibung: Diese Funktion sucht alle ID´s der Dokumente, die die angegebene URL als Teilstring enthalten. Benötigte Parameter: • URL, die gesucht werden soll Rückgabewerte: • 0, falls keine Dokumente gefunden werden konnten • Array, falls Ergebnisse gefunden wurden In dem übergebenen Array werden die ID´s der gefundenen Dokumente gespeichert. function search_abc($url) Beschreibung: Diese Funktion sucht alle ID´s der Dokumente, die die angegebene URL als Teilstring am Anfang enthalten. Benötigte Parameter: • URL, die gesucht werden soll Rückgabewerte: • 0, falls keine Dokumente gefunden werden konnten • Array, falls Ergebnisse gefunden wurden In dem übergebenen Array werden die ID´s der gefundenen Dokumente gespeichert. function get_doc_id($url) Beschreibung: An Hand dieser Funktion kann man die ID eines Dokuments mit einer bestimmten URL ermitteln. Benötigte Parameter: • URL des Dokuments Rückgabewerte: • 0, wenn kein Dokument gefunden wurde • ID des Dokumentes, wenn es gefunden wurde. Seite 82 von 105 function delete_doc($id) Beschreibung: Mit dieser Funktion kann man das Dokument mit einer bestimmten ID aus der Datenbank löschen. Benötigte Parameter: • ID des zu löschenden Dokuments Rückgabewerte • 0 , wenn Dokument nicht gelöscht werden konnte • 1 ,wenn Löschen erfolgreich war function add_doc($url) Beschreibung: Das Hinzufügen eines Dokuments in die Datenbank wird mit dieser Funktion realisiert. Benötigte Parameter: • Die URL, die in die Datenbank aufgenommen werden soll Rückgabewerte: • 0 ,wenn Eintrag fehlgeschlagen • 1 ,wenn Eintrag erfolgreich war function get_error_urls() Beschreibung: Durch Aufruf dieser Funktion erhält man alle Temp_ID´s der Dokumente, die in der temporären Datenbank als falsch zugeordnet gespeichert wurden. Benötigte Parameter: • Keine Rückgabewerte: • 0, falls keine Dokumente gefunden werden konnten • Array mit den gefundenen Temp_ID´s Seite 83 von 105 function get_error_url_info($Temp_ID) Beschreibung: Hier erhält man die Informationen, zu welcher Klasse das Dokument gehört, welche Klasse vom User vorgeschlagen wurde, welche ID und Temp_id das Dokument hat, falls der User einen Vorschlag gemacht hat und letztlich auch die URL Benötigte Parameter: • ID des fehlerhaften Dokumentes Rückgabewerte: • 0, falls keine Informationen gefunden werden konnten • Array mit der aktuellen Klasse, der vorgeschlagenen Klasse, die ID des Datensatzes, die Temp_ID und die URL function get_new_urls() Beschreibung: Durch Aufruf dieser Funktion erhält man alle Dokumente, die in der temporären Datenbank als neu aufzunehmen eingetragen wurden. Benötigte Parameter: • Keine Rückgabewerte: • 0, falls keine Dokumente gefunden werden konnten • Array mit den temporären ID´s der neuen Einträge function get_new_url_info($Temp_ID) Beschreibung: Hier erhält man die Informationen, welche URL eingetragen ist und welche Klasse vorgeschlagen wurde. Benötigte Parameter: • Temp_ID des neuen Dokumentes Rückgabewerte: • 0, falls keine Informationen gefunden werden konnten • Array mit der URL und der vorgeschlagenen Klasse Seite 84 von 105 function activate_new_url($id,$path) Beschreibung: Diese Funktion aktiviert eine URL, die neu eingetragen wurde und weist Ihr den angegebenen Pfad zu. Benötigte Parameter: • ID des Dokumentes, das freigeschaltet werden soll Rückgabewerte: • 0, falls nicht freigeschaltet werden konnte • 1, falls freigeschaltet werden konnte function delete_temp_url($Temp_ID) Beschreibung: Mit dieser Funktion kann man einen Eintrag aus der temporären Datenbank löschen. Benötigte Paramter: • ID des temporären Eintrags Rückgabewerte: • 0, wenn Löschen fehlgeschlagen ist • 1, wenn erfolgreich gelöscht wurde function classify_url($url) Beschreibung: Diese Funktion lässt eine URL automatisch klassifizieren und gibt den klassifizierten Pfad zurück. Benötigte Parameter: • URL Rückgabewerte: • 0, falls nicht klassifiziert werden konnte • 1, der vorgschlagene Pfad, wenn erfolgreich klassifiziert wurde Seite 85 von 105 function get_url_test_mode() Beschreibung: Mit dieser Funktion kann ausgelesen werden, ob die URL´s vor der Rückgabe getestet werden sollen. Benötigte Parameter: • Keine Rückgabewert: • 0 nicht testen • 1 testen function set_url_test_mode($type) Beschreibung: Mit dieser Funktion kann festgelegt werden, ob die URL´s vor der Rückgabe getestet werden sollen. Benötigte Parameter: • Typ: 0 nicht testen 1 testen Rückgabewerte: • 0, falls Eintragung fehlgeschlagen • 1, falls Eintragung erfolgreich function test_url($url) Beschreibung: Mit dieser Funktion kann getestet werden, ob eine URL noch existiert. Benötigte Parameter: • URL des Dokumentes, das überprüft werden soll Rückgabewerte: • 0 falls Dokument nicht mehr existiert • 1 falls Dokument abrufbar ist Seite 86 von 105 function activate_crawler() Beschreibung: Aktivieren des Crawlers. Benötigte Parameter: • Keine Rückgabewerte: • 0, falls Crawler nicht gestartet werden konnte • 1, falls Crawler gestartet werden konnte function activate_classifier() Beschreibung: Aktivieren des Classifiers. Benötigte Parameter: • Keine Rückgabewerte: • 0, falls Classifiers nicht gestartet werden konnte • 1, falls Classifiers gestartet werden konnte function change_class_for_id($id,$path) Beschreibung: Mit dieser Funktion kann man einem Dokument eine andere Klasse zuweisen. Benötigte Parameter: • ID des Dokumentes, dessen Klasse geändert werden soll • Neue Klasse die dem Dokument zugewiesen werden soll Rückgabewerte: • 0, wenn Änderung der Klasse fehlgeschlagen ist • 1, wenn Änderung der Klasse erfolgreich war Seite 87 von 105 function get_user_search_mode() Beschreibung: Mit dieser Funktion können die Parameter der Suche des Users ausgelesen werden. Benötigte Parameter: • Keine Rückgabewerte: • Typ des Suchmodus, der für die Suche eingestellt werden soll: 0 nur interne Daten verwenden 1 nur externe Daten (externe Suchmaschine) verwenden 2 interne und externe Daten verwenden function set_user_search_mode($type) Beschreibung: Mit dieser Funktion können die Parameter der Suche des Users vom Portaladministrator beeinflußt werden. Benötigte Parameter: • Typ des Suchmodus, der für die Suche eingestellt werden soll: 0 nur interne Daten verwenden 1 interne und externe Daten verwenden Rückgabewerte: • 0, wenn Eintragung der Parameter fehlgeschlagen • 1, wenn Eintragung der Parameter erfolgreich function get_number_search_results() Beschreibung: Mit dieser Funktion kann die Anzahl der Ergebnisse ermittelt werden, die bei einer erfolgreichen Suche auf einer Seite angezeigt werden sollen. Benötigte Parameter: • Keine Rückgabewert: • Anzahl der gleichzeitig darzustellenden Ergebnisse Seite 88 von 105 function set_number_search_results($amount) Beschreibung: Mit dieser Funktion kann die Anzahl der Ergebnisse gesetzt werden, die bei einer erfolgreichen Suche auf einer Seite angezeigt werden sollen. Benötigte Parameter: • Anzahl der darzustellenden Ergebnisse Rückgabewert: • 0, wenn setzen fehlgeschlagen • 1, wenn erfolgreich function get_usable_memory() Beschreibung: Mit dieser Funktion kann die Menge des benutzbaren Hauptspeichers ausgelesen werden. Benötigte Parameter: • Keine Rückgabewerte: • Anzahl Megabytes, die das interne System vom Hauptspeicher nutzen darf function set_usable_memory($amount) Beschreibung: Mit dieser Funktion kann die Menge des benutzbaren Hauptspeichers eingestellt werden. Benötigte Parameter: • Anzahl Megabytes, die das interne System vom Hauptspeicher nutzen darf Rückgabewerte: • 0, wenn Eintragung der Parameter fehlgeschlagen • 1, wenn Eintragung der Parameter erfolgreich Seite 89 von 105 function get_usable_harddisk() Beschreibung: Mit dieser Funktion kann die Menge des benutzbaren Plattenplatzes ausgelesen werden. Benötigte Parameter: • Keine Rückgabewerte: • Anzahl Megabytes, die das interne System als Plattenplatz nutzen darf function set_usable_harddisk($amount) Beschreibung: Mit dieser Funktion kann die Menge des benutzbaren Plattenplatzes eingestellt werden. Benötigte Parameter: • Anzahl Megabytes, die das interne System als Plattenplatz nutzen darf Rückgabewerte: • 0, wenn Eintragung der Parameter fehlgeschlagen • 1, wenn Eintragung der Parameter erfolgreich function get_db_hostname() Beschreibung: Mit dieser Funktion kann der Hostname eingestellt werden, der zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Keine Rückgabewerte: • 0, wenn nicht ermittelt werden konnte • Hostname des Datenbankrechners, sonst Seite 90 von 105 function set_db_hostname($hostname) Beschreibung: Mit dieser Funktion kann der Hostname eingestellt werden, der zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Hostname des Rechners, auf dem die Datenbank installiert ist Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_db_name() Beschreibung: Mit dieser Funktion kann der Datenbankname ausgelesen werden, der zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Keine Rückgabewerte: • Datenbankname function set_db_name($dbname) Beschreibung: Mit dieser Funktion kann der Datenbankname eingestellt werden, der zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Name der Datenbank auf die zugegriffen werden soll. Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich Seite 91 von 105 function get_db_username() Beschreibung: Mit dieser Funktion kann der Datenbankuser ausgelesen werden, der zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Keine Rückgabewerte: • Username function set_db_username($dbuser) Beschreibung: Mit dieser Funktion kann der Datenbankuser eingestellt werden, der zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Name des Users, der bei der Datenbank angemeldet werden soll. Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_db_password() Beschreibung: Mit dieser Funktion kann das Datenbank-Passwort ausgelesen werden, das zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Keine Rückgabewerte: • Eingestelltes Passwort Seite 92 von 105 function set_db_password($dbpassword) Beschreibung: Mit dieser Funktion kann das Datenbank-Passwort eingestellt werden, das zur Datenbankanfrage genutzt werden soll. Benötigte Parameter: • Passwort das bei der Datenbank verwendet werden soll. Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_crawler_mode() Beschreibung: Mit dieser Funktion wird der Modus des Crawlers ausgelesen. Benötigte Parameter: • Keine Rückgabewerte: • Modus des Crawlers function set_crawler_mode($mode) Beschreibung: Mit dieser Funktion wird der Modus des Crawlers eingestellt. Benötigte Parameter: • Modus des Crawlers: 0 Tiefe zuerst 1 Breite zuerst Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich Seite 93 von 105 function get_crawler_maxdepth($depth) Beschreibung: Mit dieser Funktion wird die maximale Tiefe des Crawlers ausgelesen. Benötigte Parameter: • Keine Rückgabewerte: • 0, wenn nicht ermittelbar • maximale Tiefe des Crawlers function set_crawler_maxdepth($depth) Beschreibung: Mit dieser Funktion wird die maximale Tiefe des Crawlers eingestellt. Benötigte Parameter: • maximale Tiefe des Crawlers Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_crawler_maxroot_class() Beschreibung: Mit dieser Funktion wird die maximale Anzahl an Crawler-Root-Dokumenten pro Klasse ausgelesen werden. Benötigte Parameter: • Keine Rückgabewerte: • maximale Anzahl an Crawler-Root-Dokumenten pro Klasse Seite 94 von 105 function set_crawler_maxroot_class($number) Beschreibung: Mit dieser Funktion wird die maximale Anzahl an Crawler-Root-Dokumenten pro Klasse eingestellt. Benötigte Parameter: • maximale Anzahl an Crawler-Root-Dokumenten pro Klasse Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_crawler_doc_recrawl_time() Beschreibung: Diese Funktion dient dem Auslesen des Zeitraumes, wann ein Dokument erneut gecrawlt werden soll. Dazu wird der Zeitraum in Tagen angegeben. Benötigter Parameter: • Keine Rückgabewerte: • Anzahl Tage function set_crawler_doc_recrawl_time($day) Beschreibung: Diese Funktion dient dem Einstellen des Zeitraumes, wann ein Dokument erneut gecrawlt werden soll. Dazu wird der Zeitraum in Tagen angegeben. Benötigter Parameter: • Anzahl der Tage, nachdem ein Dokument erneut gecrawlt werden soll. Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich Seite 95 von 105 function get_crawler_maxthreats() Beschreibung: Mit dieser Funktion wird die maximale Anzahl der Threats des Crawlers ausgelesen. Benötigte Parameter: • Keine Rückgabewerte: • maximale Anzahl der Threats des Crawlers function set_crawler_maxthreats($threats) Beschreibung: Mit dieser Funktion wird die maximale Anzahl der Threats des Crawlers eingestellt. Benötigte Parameter: • maximale Anzahl an Threats des Crawlers Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_classifier_maxtraindocs_class() Beschreibung: Mit dieser Funktion wird die maximale Anzahl der Trainingsdokumente pro Klasse des Classifiers ausgelesen. Benötigte Parameter: • Keine Rückgabewerte: • maximale Anzahl der Trainingsdokumente pro Klasse des Classifiers function set_classifier_maxtraindocs_class($traindocs) Beschreibung: Mit dieser Funktion wird die maximale Anzahl der Trainingsdokumente pro Klasse des Classifiers eingestellt. Benötigte Parameter: • maximale Anzahl an Trainingsdokumenten pro Klasse Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich Seite 96 von 105 function get_classifier_feature_mode() Beschreibung: Mit dieser Funktion kann man auslesen, welche Gewichtung der Klassifier benutzen soll. Benötigte Parameter: • Keine Rückgabewerte: • Featuregewichtung: 0 IDF*TF 1 relative Termhäufigkeit function set_classifier_feature_mode($mode) Beschreibung: Mit dieser Funktion kann man einstellen, welche Gewichtung der Klassifier benutzen soll. Benötigte Parameter: • Featuregewichtung: 0 IDF*TF 1 relative Termhäufigkeit Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_classifier_drop_mode() Beschreibung: Mit dieser Funktion kann man auslesen, welchen Grad der Klassifier benutzen soll, um ein Dokument zu verwerfen. Benötigte Parameter: • Keine Rückgabewerte: • Drop-Mode: 0 soft 1 middle 2 strong Seite 97 von 105 function set_classifier_drop_mode($mode) Beschreibung: Mit dieser Funktion kann man einstellen, welchen Grad der Klassifier benutzen soll, um ein Dokument zu verwerfen. Benötigte Parameter: • Drop-Mode: 0 soft 1 middle 2 strong Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich function get_doc_summary_amount() Beschreibung: Mit dieser Funktion kann man auslesen, wieviele Zeichen als summary zu einem Dokument abgespeichert werden sollen. Benötigte Parameter: • Anzahl der Zeichen, die als summary gespeichert werden sollen Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • Anzahl der Zeichen, die als summary gespeichert werden sollen, wenn Auslesen des Parameters erfolgreich function set_doc_summary_amount($amount) Beschreibung: Mit dieser Funktion kann man einstellen, wieviele Zeichen als summary zu einem Dokument abgespeichert werden sollen. Benötigte Parameter: • Anzahl der Zeichen, die als summary gespeichert werden sollen Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich Seite 98 von 105 function get_doc_types() Beschreibung: Diese Funktion gibt in einem Array die Datentypen zurück, die durchsucht werden können. Benötigte Parameter: • Keine Rückgabewerte: • 0, wenn Auslesen fehlgeschlagen • Array mit vorhandenen Datentypen function get_doc_type_max_size($mime) Beschreibung: Diese Funktion gibt die maximale Größe eines Datentyps zurück Benötigte Parameter: • Datentyp (mime) Rückgabewerte: • 0, wenn Auslesen fehlgeschlagen • Max Groesse, wenn erfolgreich function set_doc_type_max_size($mime,$max_size) Beschreibung: Durch Aufruf dieser Funktion lässt sich die maximale Dokumentgröße eines Dokumenttyps ändern. Benötigte Parameter: • Dokumenttyp • Maximale Größe dieses Typs Rückgabewerte: • 0, wenn Eintragen fehlgeschlagen • 1, wenn Eintragen erfolgreich Seite 99 von 105 function get_dns_server() Beschreibung: Mit dieser Funktion kann ausgelesen werden, welcher DNS-Server benutzt werden soll. Benötigter Parameter: • Keine Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • URL des DNS-Server, wenn Auslesen des Parameters erfolgreich function set_dns_server($url) Beschreibung: Mit dieser Funktion kann eingetragen werden, welcher DNS -Server benutzt werden soll. Benötigter Parameter: • URL des DNS-Servers Rückgabewerte: • 0, wenn Eintragung des Parameters fehlgeschlagen • 1, wenn Eintragung des Parameters erfolgreich Seite 100 von 105 11. Anhang D – (Das Datenbankschema) Seite 101 von 105 Seite 102 von 105 Seite 103 von 105 Seite 104 von 105 12. Literaturverzeichnis [1] Andreas Henrich: „Information Retrieval: Grundlagen, Modelle, Implementierung und Anwendungen“, Praktische Informatik, Fakultät Sozial- und Wirtschaftswissenschaften Otto-Friedrich Universität Bamberg, 96045 Bamberg; http://ai1.inf.unibayreuth.de/lehre/ws_2001_2002/information_retrieval/vorlesungs script/ir.pdf [2 ] Martin Theobald: “Bingo! Ein thematisch fokussierender Crawler zur Generierung personalisierter Ontologien“, Datenbanken und Informationssysteme Universität des Saarlandes WS 2001/02 [3] Sergej Sizov, Stefan Siersdorfer, Martin Theobald, Gerhard Weikum: „The Bingo! Focused Crawler: From Bookmarks to Archtypes“, University of the Saarland, Saarbruecken, Germany [4] Sergej Sizov, Stefan Siersdorfer, Martin Theobald, Gerhard Weikum: „Bingo! Bookmark-Induced Gathering of Information“, University of the Saarland, Saarbruecken, Germany [5] Soumen Chakrabarti: „Minig the web: Discovering Knowledge from Hypertext Data “ [6] Stefan Siersdorfer: „Konstruktion von Featureräumen zur SVM -Klassifikation von HTML-Dokumenten“, Datenbanken und Informationssysteme - Universität des Saarlandes, April 2002 [7] Liang Xu, Xueqi Cheng, Wensi Xi: „TREC10 ¨C HITS“, Information Storage and Retrieval, Dezember 2001 http://csgrad.cs.vt.edu/~lixu1/work/CS5604/hits.htm#Introduction% 20to%20HITS Seite 105 von 105