Deutsch
Transcription
Deutsch
Informatik / 251-0341-00 / WS06/07 Multimedia Retrieval Kapitel 4: XML Retrieval 4.1 XML – Daten- und Dokumentensicht 4.2 Struktur – was nun? 4.3 Anfrage abhängige Statistiken Dr. Roger Weber, [email protected] 4.1 XML – Daten- und Dokumentensicht Aus Neil Bradley: The XML companion • • • • Vorschlag des World Wide Web Consortiums (W3C) Seit Februar 1998 W3C Recommendation XML definiert – den syntaktischen Aufbau der Dokumente – die Elemente, Attribute, Entities – den Zeichensatz – und die Semantik des Dokumentes mit der Dokumententypdefinition (DTD) Zielsetzung von XML: Format für Austausch, Verarbeitung und Darstellung von Information im Web Anwendungen: – Datenhaltung (ähnlich zu Relationen in Datenbanken) – Markup für Dokumente • Ähnlich wie SQL ermöglichen verschiedene XML Anfragesprachen die Selektion, Verbindung (join) und Projektion von XML Teilbäumen. Dabei stehen vor allem exakte Anfragen im Vordergrund, z.B. alle Bücher des Schriftstellers „Peter Bichsel“. Diese Art von Anfragen unterstützen mittlerweile auch fast alle kommerziellen Datenbanken und einige neue auf XML spezialisierte Produkte (nebst einer grossen Anzahl von Forschungsgruppen im In- und Ausland). • Eine DTD beschreibt die Struktur von XML Dokumenten. In der Daten zentrischen Sicht entspricht die DTD ungefähr einer Schemadefinition in NF2 (Relationen in „nonfirst-normal-form“, d.h. Tupelelemente können neben den Basistypen auch Tabellen sein). In dieser Sichtweise entsprechen XML Dokumente (oder Teilbäume) den Datensätzen (Tupeln) einer Datenbank. • Daten zentrierte Sicht von XML Bsp: Datensätze einer Buchhandlung Flexibilität von XML • Anfragesprachen für Daten orientierte Sicht: – XPath: W3C Standard seit 1999 (Version 1.0). XPath definiert Muster, Funktionen und Ausdrücke, um Elemente, Elementgruppen bzw. Attribute genauer zu identifizieren und zu extrahieren. Grundlegendes Konstrukt sind XPath-Ausdrücke, welche zu Werten von den Typen boolean, number, string oder node-set (ungeordnete Kollektion von Knoten ohne Duplikate) ausgewertet werden. Bsp: • gib das Attribut 'Genre' aller Bücher aus: /bookstore/book/@genre • gib alle Bücher aus, die vom Autor 'Plato' stammen: /bookstore/book[author/name='Plato'] • gib den Nachnamen aller Autoren aus, deren Vorname 'Herman' ist: //author[first-name='Herman']/last-name • liefere den Preis für alle Bücher, die mind. einen Autor mit dem Vornamen 'Benjamin' haben: /bookstore/book[author/first-name='Benjamin']/price – XQuery: Aktueller W3C-Vorschlag für eine Norm-XML-Anfragesprache. XQuery basiert auf XPath, hat Ähnlichkeit zu SQL/OQL, ist eine funktionale Sprache, ist streng typisiert basierend auf XML-Schema, erlaubt zusammengesetzte Ausdrücke und unterstützt die orthogonale Anwendung unterschiedlicher Ausdruckstypen. Das Basiskonstrukt ist der sogenannte FLWR-Ausdruck (steht für FOR-LET-WHERE-RETURN). liefert <book year="1999" isbn="1-X"> <title>Data on the Web</title> <author>Abiteboul</author> <author>Buneman</author> <author>Suciu</author> </book> : Book* FOR $b IN $bib0/book WHERE $b/@year/data() <= 2000 RETURN $b LET $bib0 := <bib> <book year="1999" isbn="1-X"> <title>Data on the Web</title> <author>Abiteboul</author> <author>Buneman</author> <author>Suciu</author> </book> <book year="2001" isbn="1-Z"> <title>XML Query</title> <author>Fernandez</author> <author>Suciu</author> </book>, </bib> : Bib RETURN $bib0 Typ Für unsere Vorlesung wäre einzig die vage Suche auf solchen Dokumenten interessant. Z.B. könnte man sich eine XML Datenbank mit PC Angeboten vorstellen, welche neben dem Preis auch verschiedene technische Daten zu den Computern enthält (z.B. Hauptspeicher, Grafikkarte, etc.). Dabei müsste die Suchmaschine die Angebote so ordnen, dass sich das Angebot, welches am besten zu meinen Zielvorstellungen passt zuoberst in der Liste befindet (z.B. „möchte PC mit 3D Grafik, 256 MB Hauptspeicher, >40GB Harddisk für unter 1000.- Fr.). Die Zielvorstellungen müssen allerdings nicht genau getroffen werden und es soll das beste System eruiert werden (z.B. 3D Grafik, 512MB, 80GB, 1020.- Fr). Diese Art der Suche ist allerdings eng verwandt mit der nächsten Nachbar Suche des nächsten Kapitels. PC3 3D 512MB 120GB 1200.- PC2 3D 256MB 30GB 700.- PC1 3D 512MB 80GB 1020.- Ziel 3D 256MB 40GB 1000.- • Dokumenten zentrierte Sicht • In der Regel ist hier die DTD nicht immer nötig, häufig aber zur Definition der Semantik erwünscht. Im Unterschied zur Daten zentrierten Sicht enthalten solche Dokumente ganze Textdokumente oder Textfragmente in ihren Knoten. Manchmal werden Tags sogar nur als Markup verwendet, ähnlich wie bei HTML. • Als weiterer Unterschied zur Daten zentrierten Sicht möchten Benutzer nun keine exakten Anfragen stellen, sondern gezielt nach dem Inhalt fragen. Z.B. „welche Bücher zum Thema ‚XML Retrieval‘ gibt es in der Bibliothek“. Dabei stellt sich das Problem, dass die Standards diese Art der Anfragen nur rudimentär unterstützen (z.B. contains-Operator). Für geordnetes Retrieval fehlt jede Unterstützung. • Aber: Beim Web-Retrieval (HTML <-> XML) haben wir einfach die Struktur eliminiert und dann über die Termmengen gesucht. Das könnte man ja hier auch machen! – Allerdings (1): schon in HTML hat man spezielle Tags ausgenutzt, um Terme stärker zu gewichten. Das müsste man bei XML unbedingt auch tun. Bei einem Bibliotheksdatensatz, z.B., wäre ein Termvorkommen im Titel wichtiger als in der Zusammenfassung des Buches. Das müsste man berücksichtigen können. – Allerdings (2): die Granularität ist bei XML Dokumenten häufig nicht auf der Dokumentenebene sondern auf der Elementenebene. Z.B. können mehrere Bucheinträge im selben XML Dokument erfasst sein. Der Suchende möchte aber nicht das ganze XML Dokument, sondern nur den relevanten Teilbaum. • Bsp: Bücher einer Bibliothek als XML Teilbäume bookstore medicine book computer-science book title book chapter author book chapter book book book chapter chapter author ... ... ... ... ... ... title section section title title 4.2 Struktur – was nun? Bevor wir Retrieval auf XML Dokumenten anwenden können müssen wir zwei zentrale Probleme im Zusammenhang mit der Struktur von XML lösen: – Definition der Kollektion resp. die Granularität der Antworten – Charakterisierung innerer Knoten, welche nicht direkt „Content“ enthalten • • Definition der Kollektion: Im klassischen Textretrieval bestand eine Kollektion aus einer Menge von Dokumenten, welche mit einer Termmenge charakterisiert werden konnte. In XML Dokumenten möchte man allerdings häufig eine andere Granularität für die Antworten. Betrachte das Dokument auf der vorletzten Seite: – Bei Fragen nach Büchern zu „XML Retrieval“ will man nicht das ganze XML Dokument erhalten sondern nur die relevanten Teilbäume, d.h. Elemente mit dem Label „book“. – Interessieren mich Bücher oder Kapitel in Büchern zum Thema „XML Retrieval“, so ist meine Granularität auf der Stufe „book“ und der Stufe „chapter“, d.h. die Antworten können sich z.T. sogar überlappen. – Bei „XML Retrieval“ brauche ich natürlich nur Bücher im Teilbaum „computerscience“ zu betrachten. Falls ich aber nach „Medical Information Systems“ suche, bin ich an beiden Teilbäumen („medicine“, „computer-science“) interessiert. Im folgenden definieren wir deshalb unsere Kollektion nicht über Dokumente sondern Elemente (Teilbäume in XML Dokumenten). Allerdings gibt es auch XML Datenbanken mit mehr als einem Dokument. Z.B. könnte die Bibliothek die Informatikbücher in einer ersten XML Datei verwalten und die Medizinbücher in einer zweiten Datei. Wie können wir jetzt z.B. das beste Buch zu „Medical Information Systems“ finden? Hierzu „verschmelzen“ wir ganz einfach die Dokumente zu einem „virtuellen Universaldokument“. Dabei können wir die verschiedenen XML Dokumente wiederum in einer „virtuellen“ Hierarchie anordnen (s. nächste Seite). Beispiel: Bibliotheksdaten bookstore medicine book book XML Dokumente aus dem Ordner /data/ComputerScience XML Dokumente aus dem Ordner /data/Medicine book book book computer-science Pfadtypen: Ein Pfadtyp ist durch einen Pfadausdruck innerhalb des XML Dokumentes definiert (hier: Pfad=Konkatenation der Elementnamen). Im folgenden gehen wir nicht unbedingt davon aus, dass es eine DTD zu den Dokumenten der Kollektion gibt (ihr Vorhandensein ist aber auch kein Problem). Die Definition „Pfadtyp“ basiert nur auf dem Pfad von der Wurzel zu den Elementen. Wie deren Teilbäume aussehen und ob sie allenfalls so gar unterschiedlich sind für die Elemente des selben Pfadtyps wollen wir hier nicht weiter definieren oder erzwingen; es spielt für unsere Verwendung von XML keine Rolle (ganz im Gegensatz zu Daten zentrierten Anfragen). – Jedes Element des XML Dokumentes gehört zu genau einem Pfadtyp – Pfadtypen sind gerade die Granularität unseres Retrievalmodells • Elemente: Ein Element entspricht einem Knoten/Teilbaum im XML Dokument. Im folgenden seien Elemente durch eine Dokument weit eindeutige ID gekennzeichnet. Jedes Element hat zudem einen deterministischen XPath-Ausdruck und einen nichtdeterministischen (in Bezug auf das Wiederfinden des Knotens) Pfad von der Wurzel des Dokumentes zur Wurzel des Teilbaumes des Elements. Dieser Pfad entsteht durch die Konkatenation der Namen der Eltern Knoten und des eigenen Namens. – Bsp: der XPath Ausdruck /bookstore/medicine/book[2] kennzeichnet genau einen Teilbaum im Dokument (welches hier einem Buch in der Bibliothek entspricht). Der Pfadausdruck /bookstore/medicine/book beschreibt den nicht-deterministischen Weg von der Wurzel zu diesem Elementknoten. • • Beschreibung der Elemente: Im Textretrieval haben wir verschiedene Retrieval Modelle kennen gelernt. Bei allen Verfahren wurden Dokumente durch einen Vektor (binär oder tf-Komponenten) dargestellt. Analog müssen wir nun Elemente durch Vektoren darstellen. Dabei gehen wir konzeptionell wie folgt vor: – Bei Blattknoten und bei „Mixed Content“ (d.h. Element enthält Text und Tags) zählen wir die Termvorkommen direkt dem Element zu. – Bei inneren Knoten kombinieren wir die Vorkommen von Termen aus SubElementen gemäss eines vorgegebenen Gewichts. Dieses Gewicht soll die Bedeutung des Termvorkommens für das Element beschreiben Ein Beispiel für unterschiedliche Gewichte ergibt sich aus dem vorherigen Beispiel der Bücherkollektion. Für Elemente des Pfadtyps /bookstore/medicine/book sind Terme in den title Sub-Elementen wichtiger als Vorkommen in den chapter/section Sub-Elementen. Also: – Sei dtf(t,e) die Termhäufigkeit von t im Inhalt, der direkt dem Element e zugeordnet ist und sub(e) die Menge der direkten und indirekten Kind-Elemente von e. Dann ist die Termhäufigkeit tf(t,e) rekursiv gegeben als tf(t,e) = dtf(t,e) + Σ∈ s sub(e) w(e,s) dtf(t,s) Wie setzen wir nun die Gewichte? Gewichte: Bei HTML war das relativ „leicht“, da wir uns einmal für Gewichte entscheiden mussten und diese dann für jedes Dokument verwenden können. Bei XML gibt es keine solchen „universalen“ Gewichte. Natürlich können wir uns für bekannte Kollektionen spezielle Gewichte vorstellen. Was aber, wenn die Gewichte davon abhängen, auf welcher Granularität man Anfragen stellt (d.h. welche Pfadtypen zurückgeliefert werden sollen). So ist z.B. die Kapitelüberschrift sehr wichtig falls jemanden nach Buchkapiteln anfragt. Sucht man allerdings nach Büchern, so sind die Kapitelüberschriften nicht mehr so wichtig wie der Titel des Buches. Mit anderen Worten: wir müssen für jedes Termvorkommen in Abhängigkeit zum Pfadtyp ein Gewicht definieren (w(e,s) auf der vorherigen Seite). Der Aufwand wäre allerdings enorm (es gibt sehr viele w(e,s)-Gewichte). – Augmentierung: anstelle einer expliziten Gewichtszuordnung w(e,s) bestimmt man die Gewichte implizit über die Hierarchie. Dazu gewichtet man jede Kante im Elementtypenbaum (DTD, Data Guide) und berechnet das Gewicht w(e,s) durch die Multiplikation der Gewichte entlang des Pfades von e nach s. Dadurch erspart man sich einiges an Aufwand. Konzeptionell bleibt allerdings die Idee, dass ein Termvorkommen innerhalb eines Teilbaumes abhängig vom Pfadtyp und des Ortes des Vorkommens gewichtet wird. Sei child(e) die Menge er direkten KindElemente von e. Damit vereinfacht sich die Formel zu: w(e,s) tf(t,s) s child(e) Σ∈ tf(t,e) = dtf(t,e) + • – Bsp: Augmentierung im Beispiel der Bücherkollektion • e: /bookstore/medicine s: /bookstore/medicine/book/chapter/section w(e,s) = 1.0 * 0.7 * 0.5 = 0.35 bookstore medicine 0.5 computer-science 0.5 1 1 w(e,s) = 0.35 book 0.9 title 0 0.7 author 0.7 chapter 0.9 title book 0.5 section 0 author chapter 0.5 section 0.9 title 0.9 title dynamic structural summary (DataGuides) • Speicherung: Grundsätzlich genügt es, die dtf(t,e)-Werte zu speichern, da die tf(t,e)Werte daraus berechenbar sind. Allerdings wäre es für eine beschleunigte Auswertung der Anfragen wünschenswert, wenn die tf(t,e)-Werte für alle Elemente e vorhanden wären. Als Optimierung kann man auch nur die tf(t,e)-Werte materialisieren, deren Elemente überhaupt in Anfragen resp. Antworten auftauchen können (z.B. bookstore müsste man nicht materialisieren): bookstore medicine book te rm author tf te rm te rm tf te rm te r m tf e le m ... tf book e le m ... te rm tf book e le m ... te r m tf e le m . .. e le m . .. tf te rm e le m ... tf te r m book tf te r m tf e le m ... te r m tf e le m ... te r m tf e le m . .. title te rm tf author e le m ... te r m tf tf te r m title section section te rm chapter e le m ... title te rm book e le m ... chapter e le m . .. e le m . .. e le m .. . tf tf e le m .. . te rm tf e le m .. . te rm tf title e le m ... book e le m . .. tf te r m e le m ... book computer-science • Anfragen: Wie sehen nun Anfragen aus? Grundsätzlich müssen wir beschreiben, welche Elemente (Pfadtypen) wir in der Antwort haben wollen und wie sie geordnet werden sollen. Daraus ergeben sich 4 Anfragebestandteile: 1. Angabe, welche Pfadtypen in der Antwort auftauchen sollen. Dies kann mit Hilfe eines Label-Pfades (z.B. /bookstore/medicine/book) geschehen. Damit wird die Menge der möglichen Antworten auf der „Typ“-Ebene eingeschränkt. 2. Prädikate, welche die Instanzen der Pfadtypen erfüllen müssen. Damit wird die Menge der möglichen Antworten auf der “Instanz”-Ebene eingeschränkt. 1. und 2. können auch durch einen XPath-Ausdruck zusammengefasst werden (z.B. /bookstore/computer-science[author=‘N. Wirth']). 3. Inhaltsbasierter Anfrageteil, welcher die Ordnung der Elemente gemäss der Relevanz zur Anfrage definiert. Dies kann im einfachen Fall eine Liste von Termen sein, oder aber angereichert mit Gewichten. 4. Parameter und Gewichte für das Retrievalmodell. Diese beeinflussen die Art und Weise wie das Retrievalmodell die Elemente ordnet (wir werden dies dann noch genauer im letzten Kapitel unter Relevanz Feedback anschauen). 4.3 Anfrage abhängige Statistiken • Bei den meisten Retrievalmodellen (Vektorraum-, aber auch Probabilistisches Retrieval) haben wir spezielle Statistiken über die Kollektion berechnet, um die Terme gemäss ihrer Ausdrucksstärke zu gewichten. Viele Arbeiten über diese Modelle wissen zu berichten, dass es sehr wichtig ist, dass die Termgewichte (idf, ci) speziell für eine Kollektion bestimmt werden. Universale Gewichte eignen sich nur schlecht, da ein Term wie z.B. „Computer“ unwichtig in Informatikbibliotheken ist, aber sehr charakteristisch wirkt in Medizinbüchern. In diesem Zusammenhang müssen wir uns auch die Frage stellen, wie wir die Statistiken für XML Retrieval berechnen. Wir können z.B. Statistiken über alle Elemente hinweg berechnen und diese für alle Anfragen verwenden. – Allerdings erlaubt XML Retrieval eine explizite Auswahl einer Teilkollektion, welche für das Retrieval betrachtet werden soll. Im Beispiel der Bücherdatei könnte man eine Anfrage nur über den Teilbaum /bookstore/medicine laufen lassen oder über den Teilbaum /bookstore/computer-science. Es ist sofort klar, dass für das Retrieval in Teilkollektionen bessere Statistiken verwendet werden könnten: nämlich Statistiken nur über die Elemente, welche sich überhaupt für die Antwort qualifizieren können. – Anfragen können aber auch auf der Instanzenebene die Elementemenge einschränken. Müssen wir also zuerst alle Elemente bestimmen, welche überhaupt in Frage kommen, um die Statistiken zu bestimmen? Prinzipiell schon. • • Grundsätzlich: – Wir bestimmen die Statistiken wie bei den klassischen Verfahren. Anstelle von Dokumenten sprechen wir aber von Elementen. Damit ändern sich auch die Begriffe: aus „Dokumentenhäufigkeit (df)“ wird „Elementenhäufigkeit (ef)“ und aus „inverser Dokumentenhäufigkeit (idf)“ wird „inverse Elementenhäufigkeit (ief)“. – Die Elementenhäufigkeit ef(t) ist definiert als die Anzahl Vorkommen des Terms t in den ausgewählten Elementen, d.h. in den Elementen, welche aufgrund der Prädikate und des Pfadtyps überhaupt erst in die Antwort kommen können. – Im allgemeinen Fall heisst dies, dass wir die ef / ief Statistiken erst bestimmen können, wenn wir wissen welche Elemente sich überhaupt für die Antwort qualifizieren. Im Gegensatz zum Vektorraumretrieval bedeutet dies einen Mehraufwand. Die Auswertung ist dann wie folgt: 1. Bestimme die Menge A der Elemente, welche sich aufgrund der PfadtypenWahl und Prädikate für die Antwort qualifizieren (Anfragebestandteil 1 + 2). 2. Berechne für alle Terme t∈Q: ef(t) = e∈A, tf(t,e)>0 1 und N = |A| 3. Führe das Retrieval auf den Elementen aus A aus und ordne die Elemente gemäss ihres rsv-Wertes. • Vorherberechnung gewisser Statistiken: Falls keine Prädikate vorhanden sind sondern nur Pfadtypen gewählt werden, so können gewisse Statistiken bereits vorherberechnet werden. Dabei kann man sich auch nur auf Pfadtypen konzentrieren, welche überhaupt in Anfragen verwendet werden. bookstore medicine 0.5 computer-science 0.5 1 1 book te rm … ef 0.9 title te rm … 0.5 te rm … ef section ef te rm … ef te rm … 0.9 ef title section te rm … title te rm … ef 0.5 0.9 author chapter chapter ef 0 ef te rm … ef author 0.7 te rm … 0.7 title 0 0.9 ef te rm … book – Die Vorherberechnung muss aufgrund der tf- Werte der Elemente erfolgen. Es gibt keine einfache Möglichkeit, die ef- Werte für z.B. chapter aufgrund der ef- Werte in section und title zu bestimmen. Dabei wird natürlich davon ausgegangen, dass die tf- Werte aller Elemente materialisiert sind (andernfalls müsste man dies zur Laufzeit durchführen). – Falls eine Anfrage über verschiedene Pfadtypen gestellt wird (z.B. //book, d.h. alle Knoten mit dem Label book), so können die ef-Werte der Pfadtypen durch aufaddieren kombiniert werden. – Das Retrieval vereinfacht sich dahin gehend, dass der erste Schritt der Auswertung entfällt und der zweite Schritt wesentlich günstiger ist (Summe der efwerte der Queryterme über die Menge der selektierten Pfadtypen). 4.4 Literatur und Links Allgemein: XML + Datenbanken – S. Abiteboul, P. Buneman, D. Suciu: Data on the Web: From Relations to Semistructured Data and XML. Morgan Kaufmann 1999 – M. Klettke, H. Meyer: XML und Datenbanken. dpunkt Verlag, 2002 – XML und verwandte Standards: http://www.w3.org – Oracle: http://www.oracle.com/ – DB2: http://www-3.ibm.com/software/data/db2/ – MSSQL: http://www.microsoft.com/sql – Tamino: http://www.softwareag.com/tamino/ – Excelon: http://www.exln.com/ – Natix: http://pi3.informatik.uni-mannheim.de/staff/mitarbeiter/moer/natix.html XML Retrieval – INEX: http://qmir.dcs.qmw.ac.uk/INEX/index.html