In diesem Kapitel beschreibe ich das von mir entwickelte System IP4W3, seinen Aufbau und die einzelnen Komponenten. Die Implementierung und die Bedienung lasse ich hier aus, da beides in späteren Kapitel ausführlich erläutert wird.
Im Konzept von IP4W3 gibt es drei Personen, den Autor, der das zu veröffentlichende Material stellt, den Benutzer (»Web-Surfer«), der das Material einsehen möchte, sowie den Administrator, der den Server betreibt und die technische Wartung übernimmt.
Während die Trennung zwischen dem Benutzer auf der einen Seite und Autor/Administrator auf der anderen Seite sofort einleuchtend ist, verdient die Einteilung in Autor und Administrator einige Erklärungen: Der Autor soll im Idealfall nichts weiter tun als seinen Text liefern. Er soll nicht mit den technischen Details belastet werden, die die Veröffentlichung im Web mit sich bringt. Statt dessen soll der Administrator diese Aufgaben erledigen. Bis zu diesem Punkt entspricht das dem üblichen Szenario des Webpublishing. Neu ist in diesem Fall die Aufgabe, die Konfiguration von IP4W3 zu übernehmen. Dazu muß der Administrator in der Lage sein, (a) eine strukturelle Beschreibung von Textstellen auf Basis der DTD zu formulieren, in denen der Benutzer suchen können soll und (b) Instanzen der DTD in HTML zu transformieren. Letzteres ist keine Besonderheit von IP4W3, sondern ist auch bei der »herkömmlichen« Vorgehensweise notwendig; IP4W3 sieht hierfür DSSSL als Formatierungssprache vor. Der Administrator muß daher neben Grundkenntnissen von SGML/XML auch Vorwissen über DSSSL mitbringen.
Um das vorliegende IP4W3-System zu verstehen, bietet sich zunächst die Erklärung aus Benutzersicht an (vgl. Abbildung 5). Der Benutzer erhält mit IP4W3 die Möglichkeit, innerhalb von Texten nicht einfach eine Volltextsuche durchzuführen, sondern den gesuchten Begriff in einer von mehreren Kategorien suchen zu lassen. Als Ergebnis bekommt er eine von Suchmaschinen bekannte Liste der Treffer. Bei den Treffern handelt es sich jedoch nicht um verschiedene Dateien, die den Suchbegriff enthalten, sondern es sind Ausschnitte eines einzelnen durchsuchten Textes. Aus dieser Liste kann er eine oder mehrere Textstellen aussuchen und »vollständig«13 anzeigen lassen. Die Größe der dargestellten Textausschnitte kann er weiter kontrollieren, bis er schließlich ein für ihn zufriedenstellendes Ergebnis vor sich hat. Prinzipiell besteht keine Einschränkung des Ausgabeformats.
Darüber hinaus kann der Benutzer die Resultate mehrerer Suchanfragen zusammenfassen. Zu diesem Zweck bietet IP4W3 eine an Warenkorb-Systemen orientierte Schnittstelle an: Hat der Benutzer einen Ausschnitt gefunden, der seinen Ansprüchen genügt, so kann er den Browser anweisen, sich den Ausschnitt zu »merken«. Er kann ihn in seinen virtuellen Warenkorb legen und eine weitere Suche starten. Nach und nach füllt er seinen Warenkorb mit Dokumentausschnitten. Hat er alles was er braucht, so kann er alle »gemerkten« Ausschnitte zusammen anzeigen und drucken lassen. Formularelemente, die sonst zur Steuerung in die Webseite integriert sind, werden bei der Anzeige der »gemerkten« Ausschnitte unterdrückt.
Die Informationen, die das System aus dem Verhalten des Benutzers, insbesondere dem Verwerfen bzw. dem Behalten von Textausschnitten, gewinnt, werden die Grundlage darstellen, um mit Mitteln des maschinellen Lernens Verbesserungen des Suchergebnisses zu erzielen. Für diese Weiterentwicklung schafft meine Diplomarbeit die Basis (die Umsetzung ist nicht Teil meiner Arbeit; siehe dazu auch Kapitel 7).

Abbildung 5: Konzeptskizze von IP4W3
Hinter den Kulissen spielt sich folgendes ab: Die Kategorien, in denen der Benutzer suchen kann, sind Elemente des Textes, die sich in einem bestimmten Kontext befinden. Zum Beispiel kann ein Element »Name« eine andere Bedeutung haben, je nach dem, ob es im Element »Adressat« oder im Element »Absender« enthalten ist. In IP4W3 werden solche Konstellationen als Suchmuster bezeichnet. Ein Suchmuster gibt an, in welchem Element nach dem fraglichen Begriff gesucht werden soll und in welchem Kontext dieses Element stehen muß.
Die Aufgabe des Administrators ist es, Suchmuster auf Grundlage der DTD zu formulieren und sie als Kategorien zu beschreiben, die für den Benutzer verständlich sind. Die Bezugnahme auf die DTD sorgt dafür, daß die Arbeit nur einmal pro DTD, also nicht für jedes Dokument erledigt werden muß und daß alle Instanzen dieser DTD anschließend ohne zusätzlichen Aufwand in IP4W3 veröffentlicht werden können.
Nach der Auswahl der gewünschten Textstellen durch den Benutzer erfolgt die Formatierung mit Hilfe der DSSSL-Maschine Jade (James' DSSSL Engine). Zu diesem Zweck muß der Administrator (oder der Autor) ein DSSSL-Stylesheet zur Verfügung stellen.
Eine zentrale Frage besteht darin, welcher Textausschnitt zu einem Treffer ausgegeben werden soll. Es ist sicher nicht sinnvoll, nur das Element auszugeben, in dem der Suchbegriff gefunden wurde. Im Einzelfall könnte es sich dabei nämlich allein um den Begriff handeln. Die Idee zur Lösung dieses Problems besteht in der Annahme, daß es zu jedem Treffer einen gewissen inhaltlichen Kontext gibt, der für sich allein verständlich ist und der das vom Benutzer gewünschte Ergebnis darstellt. Diesem inhaltlichen Kontext sollte je nach Güte der DTD (und auch der Instanz) ein struktureller Kontext entsprechen, der benutzt werden kann, um ebenfalls auf Basis der DTD zu formulieren, welcher Textausschnitt zu einem Treffer zurückgeliefert werden soll. Ein solcher Textausschnitt wird in diesem Zusammenhang als Atom bezeichnet. Ein Atom ist also ein Stück Text, das nicht weiter unterteilt werden soll, um das Verständnis des Textstücks zu gewährleisten.
Zusammenfassend möchte ich noch einmal die Begriffe »Suchmuster« und »Atom« voneinander abgrenzen: Das Suchmuster dient dazu, einen strukturellen Ausschnitt von Instanzen zu beschreiben, in denen nach Begriffen gesucht wird. Ist eine solche Stelle erst einmal gefunden worden, so muß zu diesem Treffer ein Textausschnitt als Ergebnis geliefert werden, der alleinstehend verständlich ist - das ist das Atom.
![]() | In der vorliegenden Implementation von IP4W3 wird der Spezialfall realisiert, daß das Atom mit dem Suchmuster übereinstimmt. Das heißt, daß das Suchmuster zwei Funktionen erfüllt. Bei einem Treffer bestimmt es nicht nur, ob der Treffer im »richtigen« Kontext stattgefunden hat, sondern im positiven Fall auch, daß dieser Kontext das Suchergebnis darstellt. |
Dieser Abschnitt beschreibt, aus welchen Komponenten IP4W3 besteht und welche Funktionen sie erfüllen. Bei den Komponenten handelt es sich um Suchmuster/Atome, Formatierungs-Rahmen und -Rumpf, Stichwortindex, Formularmasken und CGI-Skripte.
Bei der Suche wird ein vorgegebener Elementkontext berücksichtigt. Dieser Kontext wird hier als Suchmuster bezeichnet, angelehnt an die Patterns in der XSL-Note [W3C97E] (siehe auch Abschnitt 5.1). Ein Suchmuster besteht aus einem Zielelement, das in eine Umgebung anderer Elemente eingebettet ist. Die Umgebung erfüllt zwei Funktionen:
IP4W3-Suchmuster werden als SGML-Instanz formuliert14. Das Zielelement (target-element) bildet den Kern des Suchmusters. In diesem Element wird später bei der Suche nach dem vom Benutzer eingegebenen Begriff gesucht. Eingebettet ist dieses Zielelement in eine Umgebung weiterer Elemente eines festzulegenden Typs (element type="..."). Soll der Typ nicht festgelegt werden, so steht dafür die Angabe any, was bedeutet, daß im Dokument ein Element eines beliebigen Typs stehen darf. Zur Veranschaulichung ein einfaches Beispiel:
![]() | <!-- Suchmuster -->
<element type="absatz">
<target-element type="definition">
</target-element>
</element> |
Obiges Suchmuster sucht eine Definition (target-element type="definition"), die in einem Absatz (element type="absatz") direkt eingebettet ist. Zum Beispiel paßt dazu ein Dokumentausschnitt der folgenden Form:
<absatz> ... <definition>Ein Begriff</definition> ... </absatz>
Falls Elemente des Typs definition in Absätzen auch tiefer verschachtelt werden dürfen, empfiehlt sich folgendes Suchmuster:
<!-- Suchmuster -->
<element type="absatz">
<any>
<target-element type="definition">
</target-element>
</any>
</element>Dieses Suchmuster würde, im Gegensatz zum ersten Suchmuster, zu den folgenden beiden Ausschnitten passen:
<absatz> ...
<em>
<definition>Ein Begriff</definition> ...
</em>
</absatz>
<absatz> ...
<strong>
<definition>Ein Begriff</definition> ...
</strong>
</absatz>Das Element em in der ersten Instanz paßt in diesem Fall zu dem Element any im Suchmuster. Gleiches gilt für strong im unteren Teil.
Elemente können in Suchmustern beliebig tief verschachtelt werden. Sollen zusätzlich auch noch Attributwerte von Elementen in der Instanz überprüft werden, so ist dies mit dem leeren Element attribute in einem Suchmuster möglich. Es besitzt ein notwendiges Attribut name, das den Attributtyp bezeichnet, sowie ein optionales Attribut value, das den Wert angibt. Ein Beispiel für ein solches Suchmuster:
![]() | <!-- Suchmuster -->
<element type="absatz">
<attribute name="art" value="einleitung">
<any>
<target-element type="definition">
</target-element>
</any>
</element> |
Ein dazu passender Ausschnitt aus einem Dokument ist etwa:
<absatz art="einleitung"> ...
<em>
<definition>Ein Begriff</definition> ...
</em>
</absatz>Hier werden also nur »einleitende« Absätze betrachtet.
Im Suchmuster ist die Angabe des Attributwerts optional. Folgendes Suchmuster ist deshalb zulässig und paßt zu allen Absätzen, die ein Attribut id besitzen, unabhängig von dessen Wert:
![]() | <!-- Suchmuster -->
<element type="absatz">
<attribute name="id">
<any>
<target-element type="definition">
</target-element>
</any>
</element> |
Ein passender Dokumentausschnitt:
<absatz id="x345f"> ...
<em>
<definition>Ein Begriff</definition> ...
</em>
</absatz>Unten folgende Tabelle 1 zeigt alle Elementtypen, die in Suchmustern vorkommen, im Überblick.
Suchmuster stellen die interne Repräsentation der Kategorien dar, in denen der Benutzer später suchen kann. Für die Suche wird aus den Suchmustern ein HTML-Formular erzeugt, das den Zugriff über einen Web-Browser gestattet. Zu diesem Zweck muß der Administrator zusätzliche Informationen angeben, die IP4W3 mitteilen, wie ein Suchmuster in ein Formularelement umzuwandeln ist. Diese Informationen bilden den Inhalt des Elements target-element. Im einzelnen handelt es sich um
Letzteres ist ganz einfach realisiert: Innerhalb von target-element muß als erstes ein Element vom Typ beschreibung enthalten sein. Darin ist einfacher Text (PCDATA) enthalten. Etwas komplexer kann das nachfolgende Element form ausfallen. Zwei Möglichkeiten stehen dem Administrator zur Verfügung:
Für die Texteingabe gibt es den Elementtyp textinput. Er besitzt das Attribut wertebereich, dessen mögliche Werte beliebig, buchstaben und posinteger sind. Der Vorgabewert ist beliebig.
Der Aufzählungstyp ist durch den Elementtyp select realisiert, der fast identisch zum gleichnamigen Typ aus HTML ist. Ein select-Element nimmt ein oder mehrere Optionen auf (option). Der Inhalt dieser Elemente wird als der Wert des Formularfelds angenommen, es sei denn, das Attribut value gibt explizit einen anderen Wert an.
![]() | Wann immer die Menge der möglichen Begriffe einer bestimmten Kategorie bekannt ist, sollte der Aufzählungstyp verwendet werden, da die browserseitige Benutzerschnittstelle in diesem Fall keine Fehleingaben zuläßt. |
Es folgen zwei Beispiele für vollständige Suchmuster, die auch die Beschreibungen und Formularangaben enthalten:
![]() |
<!-- Suchmuster -->
<suchmuster id="def">
<element type="absatz">
<any>
<target-element type="definition">
<beschreibung>Begriffsdefinitionen</beschreibung>
<form>
<textinput wertebereich="beliebig">
</form>
</target-element>
</any>
</element>
</suchmuster>
<!-- Suchmuster -->
<suchmuster id="def">
<element type="absatz">
<any>
<target-element type="definition">
<beschreibung>Begriffsdefinitionen</beschreibung>
<form>
<select>
<option>Intelligenz</option>
<option>Bewußtsein</option>
<option>Verstand</option>
<option value="Bewußtsein">consciousness</option>
</form>
</target-element>
</any>
</element>
</suchmuster> |
| Elementtyp | Beschreibung | Inhaltsmodell |
|---|---|---|
| suchmuster | Wurzelelement für ein Suchmuster | Enthält entweder ein element oder ein target-element. |
| element | Steht für ein Element, dessen Elementtyp über das Attribut type angegeben werden kann. | Enthält die Angabe ein oder mehrerer attribute, gefolgt von entweder einem element oder any oder einem target-element. |
| any | Steht für ein Element beliebigen Typs. | Wie element, aber ohne Kindelemente attribute. Die Angabe von Attributen macht keinen Sinn, da sie fast immer an einen bestimmten Elementtyp gebunden sind. |
| attribute | Gibt an, welches Attribut ein Element im Dokument besitzen muß und gegebenenfalls, welchen Wert dieses Attribut besitzen muß. | Leer |
| target-element | Das Zielelement bei der Suche. Der Begriff, den der Benutzer in das Webformular eingibt, wird in diesem Element gesucht. | Eine beschreibung zur Ausgabe auf der Webseite, die Angabe, welches Formularelement (form) für das Zielelement generiert werden soll und eine optionale Folge von attributen. |
| beschreibung | Textuelle Beschreibung der Kategorie, die durch das Suchmuster repräsentiert wird. | Text (PCDATA) |
| form | Enthält Informationen über die Formulardarstellung des Suchmusters. | Entweder textinput oder select. |
| textinput | Bewirkt, daß für das Suchmuster ein Texteingabefeld im Formular erzeugt wird. Der wertebereich läßt sich über das gleichnamige Attribut steuern. | Leer |
| select | Bewirkt, daß für das Suchmuster ein Auswahlfeld im Formular erzeugt wird. | Ein oder mehrere optionen. |
| option | Stellt eine option innerhalb eines select-Elements dar. Als Wert wird der Inhalt des Elements benutzt, es sei denn, das Attribut value überschreibt diesen. | Text (PCDATA) |
Unter dem Begriff Atom verstehe ich hier den strukturellen Kontext eines Elements, genauer eines Zielelements aus einem Suchmuster, der hinreichend ist, um alleinstehend verstanden zu werden. Es handelt sich um ein zentrales Konzept dieser Diplomarbeit. Mit ihm ist die Idee verbunden, umfangreiches Textmaterial in kleine Stücke, die Atome, zu zerlegen, die für den Benutzer eine möglichst optimale Antwort auf seine Anfrage darstellen. In diesem Zusammenhang heißt optimal, daß die Antwort so klein wie möglich, aber so groß wie nötig ausfällt. Wie bereits zuvor erwähnt (vgl. 3.1), werden in der vorliegenden Implementation von IP4W3 Atome direkt aus den Suchmustern abgeleitet.
Die von IP4W3 gefundenen Textstellen werden mit Hilfe des DSSSL-Formatierers Jade in HTML transformiert. Zu diesem Zweck muß der Administrator (oder der Autor) ein DSSSL-Stylesheet (hier DSSSL-Rumpf genannt) für jede in IP4W3 benutzte DTD zur Verfügung stellen. Dieses Stylesheet führt die Formatierung durch. Ein Bestandteil von IP4W3, der DSSSL-Rahmen, sorgt dafür, daß genau die Ausschnitte formatiert werden, die der Benutzer sehen möchte15.
Zu jedem in IP4W3 integrierten Dokument gibt es einen Stichwortindex, der dazu verwendet wird, die Wortsuche durchzuführen. Die Suche liefert eine Liste von Elementen zurück, die zu der Suchanfrage passen. Elemente werden über eine interne ID eindeutig bezeichnet. Der Administrator kommt bei der normalen Benutzung des Systems nicht mit dem Stichwortindex in Berührung.
Wie bereits im Abschnitt über Suchmuster erwähnt, erzeugt ein Formulargenerator aus den Informationen, die in den Suchmustern enthalten sind, automatisch ein HTML-Formular. Das Formular selbst muß vom Administrator nicht verändert werden. Jedoch ist es üblicherweise sinnvoll, die HTML-Seite, in der das Formular enthalten ist, manuell zu erstellen, um etwa Farben, Schriften und erläuternden Text zu ergänzen. IP4W3 erzeugt nur das Formular ohne Verzierungen.
Die generierten HTML-Seiten enthalten JavaScript-Anweisungen, die die Eingabe des Benutzers auf offensichtliche Fehler prüfen. Um gefundene Dokumentausschnitte client-seitig zu speichern, verwendet IP4W3 JavaScript und Frames. Die Anforderungen an den Browser umfassen daher JavaScript 1.1 und HTML 4 (darin sind Frames und JavaScript-Attribute definiert). Falls der Browser diesen Anforderungen nicht genügt, ist die Suche in IP4W3 aber uneingeschränkt möglich. Auf das Merken von Dokumentausschnitten und Eingabeüberprüfung muß der Benutzer dann aber verzichten.
IP4W3 arbeitet mit jedem beliebigen WWW-Server zusammen, der das Common Gateway Interface (CGI) unterstützt. Die Schnittstelle zwischen Web-Server und den Programmen von IP4W3 (Stichwortsuche, Formatierer usw.) bilden zwei CGI-Skripte. CGI wurde von den Entwicklern des CERN- und des NCSA-Servers entwickelt [NCSA98], um Programme, die von einem Web-Server aufgerufen werden, zwischen den beiden Servertypen austauschen zu können. Es handelt sich dabei um eine Konvention, wie Daten, die z.B. in einem Formular eingegeben werden, vom Browser an den Server und von diesem an ein Programm übergeben werden. Heute beherrschen alle bekannten Web-Server das Common Gateway Interface.
Bei den beiden CGI-Skripten von IP4W3 handelt es sich um ein Skript, das die Stichwortsuche durchführt und die Trefferliste ausgibt und eines, das die Formatierung erledigt. Beide Skripte rufen andere Programme von IP4W3 auf, die den »schwierigen« Teil der Arbeit übernehmen.
| 13 | Die Bedeutung dieses Begriffs muß später genau geklärt werden. Sie spielt hier eine wichtige Rolle. |
| 14 | Im Gegensatz zu den Patterns der XSL-Note, die XML-Syntax nutzen. Ich halte mich hier an die Reference Concrete Syntax von SGML, da sich dadurch die Angabe einer SGML-Deklaration beim Parsing erübrigt. |
| 15 | In Kurzfassung: Der Rahmen führt den Transformationsprozeß durch, der Rumpf den Formatierungsprozeß. |
