Technische Universität Dortmund Lehrstuhl Informatik VI Prof. Dr. Joachim Biskup Pflichtmodul Informationssysteme (SS 2012) Prof. Dr. Joachim Biskup Leitung der Übungen: Yury Abelev, Michael Bulinski, Moritz Martens, Marcel Preuß Präsenzübungsblatt Nr. 8 Präsenzaufgabe 1 (Information Retrieval, Precision-Recall-Diagramme) Ein Precision-Recall-Diagramm ist ein 2-dimensionales Diagramm, bei dem zunächst die verschiedenen Recall-Werte eines Information-Retrieval-Systems auf der x-Achse abgetragen werden. Zu jedem Recall-Wert wird dann der größte Precision-Wert, der zusammen mit diesem Recall-Wert auftritt, auf der y-Achse abgetragen. Betrachtet folgende Rangordnungen, die von zwei verschiedenen Information-RetrievalSystemen erstellt wurden: Rang 1 2 3 4 5 6 7 8 Dok.-Nr. 1024 2002 0768 3571 1213 6500 2716 8041 relevant? x x x x Rang 1 2 3 4 5 6 7 8 Dok.-Nr. 1213 2716 0768 1024 8041 3571 6502 2002 relevant? x x x x x 1. Berechnet für die beiden Information-Retrieval-Systeme nach jedem Dokument Precision und Recall. Geht dabei von |REL| = 5 aus. Zeichnet anschließend jeweils ein PrecisionRecall-Diagramm. 2. Bewertet die folgenden Aussagen anhand der Berechnungen aus Teilaufgabe 1: • Die Precision misst die Qualität eines Information-Retrieval-Systems. • Der Recall misst die Qualität eines Information-Retrieval-Systems. Präsenzaufgabe 2 (Information Retrieval, Oracle Text) Beachtet für diese Aufgabe bitte die Informationen zu Oracle Text auf Seite 3 dieses Präsenzübungsblatts. In der Oracle-Datenbank wurde eine Tabelle cocktails mit dem folgenden Befehl angelegt: CREATE TABLE cocktails ( name VARCHAR2(50) PRIMARY KEY, rezept VARCHAR2(4000) ); Pflichtmodul Informationssysteme Präsenzübungsblatt Nr. 8 Dann wurden einige Dokumente in die Tabelle eingefügt und anschließend der folgende Befehl ausgeführt: CREATE INDEX idx_cocktail_ir ON cocktails(rezept) INDEXTYPE IS CTXSYS.CONTEXT; Die Tabelle enthält in der Spalte rezept Cocktailrezepte. Die Spalte name enthält den Namen des Cocktails. 1. Betrachtet die folgenden Oracle-Text-Anfragen und ihre Auswertungen: SELECT name, SCORE(1) FROM cocktails WHERE CONTAINS(rezept,’gemixt’,1) > 0; NAME ------------Cosmopolitan Manhattan Margarita SCORE(1) -------5 5 5 SELECT name, SCORE(1) FROM cocktails WHERE CONTAINS(rezept,’Erdbeersirup’,1) > 0; NAME ------------Margarita SCORE(1) -------6 Sowohl das Wort gemixt als auch das Wort Erdbeersirup kommt im Margarita-Rezept genau einmal vor. Stellt Vermutungen an, warum sich dennoch unterschiedliche SCOREWerte ergeben. 2. Was berechnen die folgenden Anfragen? • SELECT name, SCORE(1) FROM cocktails WHERE CONTAINS(rezept, ’Eis AND (Rum OR Whisky)’, 1) > 0 • SELECT name, SCORE(1) FROM cocktails WHERE CONTAINS(rezept, ’Rum NOT Orange%’, 1) > 0 • SELECT name, SCORE(1) FROM cocktails WHERE CONTAINS(rezept, ’?Whiskey’, 1) > 0 • SELECT name, SCORE(1) FROM cocktails WHERE CONTAINS(rezept, ’$mixen’, 1) > 0 2 Pflichtmodul Informationssysteme Präsenzübungsblatt Nr. 8 Informationen zu Oracle Text: Mit einem Index vom Typ CTXSYS.CONTEXT können Text-Retrieval-Anfragen auf den indizierten Spalten ausgeführt werden. Oracle SQL stellt dafür die beiden Operatoren CONTAINS und SCORE zur Verfügung: • CONTAINS(column, query [, label]) bestimmt, als wie relevant das Dokument in der Spalte column bezüglich der Anfragezeichenkette query angesehen wird. Als Ergebnis wird eine Zahl zwischen 0 (nicht relevant) und 100 (sehr relevant) zurückgegeben. Optional ist es möglich, eine Zahl als label anzugeben, um in der SELECT-Klausel mit dem SCORE-Operator auf das Ergebnis zuzugreifen. • SCORE(label) liefert das gleiche Ergebnis wie der CONTAINS-Operator mit dem gleichen label. R R Genauere Informationen findet man in „Oracle Text Reference“ und „Oracle Text Application Developer’s Guide“. 3