Ü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