Übungsblatt 03 - Institut für Informatik
Transcription
Übungsblatt 03 - Institut für Informatik
Universität Augsburg, Institut für Informatik Prof. Dr. W. Kießling Dr. A. Huhn, M. Endres SS 2009 07. Mai. 2009 Übungsblatt 3 Suchmaschinen Aufgabe 1: Fuzzy IR-Modell Betrachten Sie die Dokumente aus Aufgabe 1: • D1 ={Hähnchen, Rezept, Poularden} • D2 = {Hähnchen, Fleisch, Geschmack} • D3 = {Geschmack, Brühe, Fleisch} • D4 = {Kalorien, Hähnchen, Fett} 1) Bestimmen Sie die Koeffizientenmatrix für die Dokumente Dj , j = 1, ..., 4. 2) Berechnen Sie die Fuzzy-Werte µTi (Dj ) für jeden Term Ti von Dokument Dj . 3) Bestimmen Sie das Ergebnis der Queries Qi , i = 1, ..., 6 aus Aufgabe 1 im Fuzzy-Modell. Aufgabe 2: Relevance Feedback 1) Relevance Feedback basiert immer auf ein Feedback des Benutzers. Dazu müssen die Anwender aufwendige Formulare zur Anfrage ausfüllen, was i.A. unerwünscht ist. Deshalb benutzen heutige Web-Suchmaschinen (normalerweise) kein klassisches Relevance Feedback oder Anfrageerweiterung. Welche Ansätze von Relevance Feedback oder Anfragveränderung /-erweiterung können in modernen Web-Suchmaschinen umgesetzt werden, ohne ein kompliziertes Interface zu benutzen? 2) Anfrageerweiterung zielt darauf ab, durch Veränderung der Anfrage mehr relevante Dokumente aus einem gegebenen Korpus zu finden. Sehen Sie eine Parallele (oder Symmetrie) zwischen dieser Idee und der Arbeit von Suchmaschinenoptimierern? Aufgabe 3: Phonetik-Algorithmen Der Soundex-Algorithmus dient zur Auffindung von Homophonen, d. h. Wörtern mit gleicher Aussprache. Der Algorithmus wurde für die Indizierung von Familiennamen in den USA bereits im Jahr 1918 entwickelt. Er bildet jedes Wort auf seinen Anfangsbuchstaben (als Großbuchstabe) und drei darauf folgende Ziffern ab. Die Abbildung auf Ziffern folgt dabei den folgenden Regeln: • Die in der Tabelle vorkommenden Buchstaben werden durch die entsprechende Ziffer erstetzt. Andere Buchstaben entfallen. Beispiel: Suchmaschine wird zu S252. Ziffer 1 2 3 4 5 6 ersetzte Buchstaben B, F, P, V C, G, J, K, Q, S, X, Z D, T L M, N R 1 • Das scharfe S (ß) wird durch ein einfaches und damit durch ’2’ ersetzt. • Aufeinanderfolgende Buchstaben, die gleich sind oder durch die gleiche Ziffer ersetzt werden, werden nur durch eine Ziffer codiert. • Wurden weniger als drei Ziffern gebildet, wird mit Nullen aufgefüllt. Auch bei längeren Wörtern werden nicht mehr als drei Ziffern gebildet. Zusätzlich vorhandene Buchstaben werden abgeschnitten. 1. Implementieren Sie den Algorithmus in Java. 2. Unter http://wortschatz.uni-leipzig.de/Papers/top10000de.txt finden Sie eine (nach Häufigkeit sortierte) Wortliste. Für ein gegebenes Wort sollen Worte mit gleicher Soundex-Codierung gelesen und als Array zurückgegeben werden. Wählen Sie Datenstrukturen und Methodensignaturen geeignet aus und implementieren Sie ein Kommandozeilen-Programm, das die angegebene Funktionalität besitzt. 3. Soundex wurde vor allem für englische Homophone entwickelt. Für die deutsche Sprache gibt es die Kölner Phonetik. Eine ausführliche Beschreibung des Algorithmus finden Sie in der Wikipedia (zumindest in der Version vom 21.04.2008). Implementieren Sie die Kölner Phonetik und vergleichen Sie die Ergebnisqualität bei einer Suche mit der von Soundex. Aufgabe 4: Apache Lucene Apache Lucene ist eine Open-Source-Software zur Erzeugung und zum Durchsuchen von VolltextIndices. Laden Sie die entsprechende Java-Bibliothek und die command-line Demo-Anwendung von der Apache-Lucene-Homepage herunter. Darin finden Sie Code-Beispiele für das Erstellen von Indices und ihre Verwendung bei der Suche. Jeder Eintrag im Index erhält bei einer Suche einen Score. Einträge mit einem Score größer null werden als Ergebnisse zurückgeliefert. • Lucene betrachtet jeden Text im Index als ein Document. Neben dem eigentlichen Inhalt können zu einem Document noch beliebige Meta-Daten als Field gespeichert werden. Die entsprechenden Klassen sind im Paket org.apache.lucene.document enthalten. • Field besitzt u. a. zwei Konstruktoren: – Field(String id, Reader rd), wobei id gleich "contents" sein muss und rd einen Reader auf den Inhalt darstellt, der in den Index aufgenommen wird. – Field(String id, String value, Field.Store st, Field.Index ind) wobei id den Namen der Meta-Information und value die Meta-Information selbst (z. B. Adresse der Datei) angibt. st lässt den Programmierer wählen, ob und wie die Information im Index gespeichert wird. ind ermöglicht es, den Meta-Daten-Inhalt direkt als Index-Inhalt zu verwenden. Weitere Informationen finden Sie in den Javadoc-Dateien für Lucene. Bearbeiten Sie nun die folgenden Aufgaben: 1. Erstellen Sie einen Volltext-Index auf die Apache-Demo-Quellcode-Dateien. Jede Datei soll ihren Pfad, ihre Größe und ihr Modifikationsdatum als Meta-Informationen erhalten. 2. Durchsuchen Sie den Index nach dem Begriff String und geben Sie für jedes Ergebnis den Score und die Meta-Daten formatiert aus. 2