6. Übungsblatt - Web Mining
Datenextraktion mit LR-Wrapper
- Abgabe: bis 29.6.2008
-
Schreiben Sie einen einfachen LR-Wrapper. Dieser hat zwei Komponenten LR-exec und LR-induce.
- LR-exec bekommt als Eingabe eine Liste von Delimiter-Paaren ( (l_1,r_1), ..., (l_m,r_m) ) und Ordner mit Dokumenten und extrahiert aus jedem dieser Dokumente die ersten m substrings c_1,...,c_m die zwischen den entsprechenden Delimitirn liegen.
- LR-induce dient dazu, anhand von Beispielen eine geeignete Delimiter-Liste zu erstellen. Es bekommt eine Ordner mit Dokumente als Eingabe, in denen die Textstücke c_1 bis c_m jeweils klar markiert sind.
Z.B. können die Textstücke in doppelten eckigen Klammern gefasst sein, denen das jeweilige label angehängt ist: "... [[Hochschulstrasse]]_strasse ... [[Hans Clarin]]_name ...", wobei "..." für beliebigen Text oder Code außer "[[" bzw "]]" steht.
Die in den Vorlesungsfolien vorgestellte Version des LR-Extraktors ist für Dokumente gedacht, in denen mehrere m-Tupel vorkommen, die extrahiert werden sollen. Hier soll er nur das erste m-Tupel extrahieren, das er findet, und dann aufhören.
- Wenden sie Ihr LR-System an einen einfachen Fall an. Dafür bieten sich etwa die Mitarbeiterseiten eines Fachgebiet des FB Informatik wie die der Arbeitsgruppe Prof. Mezini (http://www.st.informatik.tu-darmstadt.de/public/Staff.jsp) an.
Extrahieren Sie Name und Telefonnummer aus den Seiten der zwölf aktuellen staff-Mitglieder, indem Sie zwei Seiten per Hand mit Markierungen versehen, LR-induce auf diese anwenden und die so erstellte Delimiter-Liste zusammen mit den unmarkierten Mitarbeiterseiten an LR-exec übergeben.
Hat das Verfahren funktioniert? Lassen Sie die induzierten Delimiter sowie die damit extrahierten Daten ausgeben. Probieren Sie aus, was passiert, wenn man nur ein Beispiel vorgibt und was, wenn man mehr als zwei vorgibt. - Suchen Sie zwei weitere Familien von Seiten aus dem Netz, von denen Sie glauben, dass das Verfahren funktioniert. Extrahieren Sie Daten Ihren Wahl (m > 1). Berichten Sie Ihre Erfahrungen und Ergebnisse.
- Bei html/xhtml-Dokumenten kann es hilfreich sein, in einem preprocessing-Schritt die Dokumente zu kanonisieren, indem man einen string zwischen zwei Tags löscht, wenn er aussschließlich aus whitespaces besteht.
- LR-induce sammelt die Präfixe von c_i in den markierten Beispieldokumenten und wählt ihren längsten gemeinsamen Suffix als l_i aus (entsprechendes für r_i). Es zeigt sich, daß sehr lange Delimiter unzuverlässig sind. Eine einfache Heuristik, um die Korrektheit der Extraktion zu erhöhen, ist die Delimiter-Länge auf z.B. 20 zu beschränken.
- LR-exec extrahiert die Daten sequentiell, d.h. nachdem es ein c_i gefunden hat, schneidet es das Dokument bis zu diesem c_i ab und extrahiert aus dem verbleibenden Dokument weiter. LR sollte entsprechend vorgehen.
- Wenn (im Fall l_i) der gewählte Suffix nicht proper ist, siehe Folien, bedeutet dies, dass er sich auf den Beispieldokumenten nicht als Delimiter eignet, da er zu früh extrahiert. Zum Lösen der Aufgabe kann man diese Überprüfung auch weglassen. Zum Einen ist es zumindest bei längeren Delimitern unwahrscheinlich, dass sie nicht proper sind, zum Anderen nimmt die Überprüfung nur vorweg, dass das Verfahren bei den gegebenen Daten nicht funkioniert.