Übung 2 - Web Mining

Suchmaschinen - Ab­ga­beter­min: Son­ntag, den 20.05.2012
  1. (3 Punkte) Entwickeln Sie auf der Basis der in Übungsblatt 1, Aufgabe 4 herausgefundenen Statistiken über Sprachen ein einfaches Verfahren, mit dem es möglich ist, die Sprache eines Textes anhand der Häufigkeiten von Buchstaben und Buchstabenpaaren vorherzusagen. 
    Erweitern Sie unser kleines KE-Firefox-Plugin aus Aufgabe 5 dahingehend, daß es mithilfe Ihres Verfahrens in der Lage ist, die Sprache (Deutsch - Englisch - Spanisch) einer Web-Seite zu ermitteln. Hierfür müssen sie wieder die Funktion student(text) in der Datei lib/student.js in Ihrem Sinne erweitern. Beachten Sie dabei die zusätzlichen nützlichen Funktionen in lib/utility.js in der aktualisierten Version des Plugins (http://www.ke.tu-darmstadt.de/lehre/ss12/web-mining/keaddon2.zip). Das Plugin soll dabei nicht fähig sein, zu lernen. Sie sollen Ihr Sprachenmodell sozusagen in die Funktion hardcoden.
    1. Erklären Sie kurz ihr Verfahren z.B. auch mittels Pseudocode.
    2. Gehen Sie auf http://www.ke.tu-darmstadt.de/lehre/ss12/web-mining/u2languagechallenge.html und ermitteln Sie die Sprache der 10 dort erhältlichen Webseiten. Die ersten Fünf erhalten nur eine Liste von Buchstaben, die letzten 5 Buchstabenpaare. Schreiben für jeden Text das Ergebnis zeilenweise in eine Datei namens challenge.txt im Format "Seitennummer Sprache\n". Bedenken Sie für die ersten 5 Seiten, daß Ihr Verfahren auch funktionieren soll, falls nur Buchstaben und keine Buchstabenpaare vorliegen.
  2. (7 Punkte) Schreiben Sie einen ein­fachen Crawler. Die in der Vor­lesung be­han­del­ten Ver­fahren zur Op­ti­mierung brauchen Sie dabei nicht zu berücksichtigen. Der Crawler sollte
    • keine URLs dop­pelt be­suchen, d.h. Sie soll­ten URLs kanon­isieren
    • die Serv­er nicht zu sehr in Anspruch nehmen, z.B. könnten Sie den Bot nach jedem Re­quest auf dem gleichen Host eine kurze Pause machen lassen.
    • eine randomisierte Breadth-First-Strategie verfolgen, d.h. neue Links werden hinten in die Queue einsortiert, aber der nächste anzusteuernde Link wird zufällig gewählt.
    • Zähler führen, die die Auf­stel­lung fol­gen­der Statis­tiken er­lauben:
    1. Ver­gle­ichen Sie die An­zahl der URLs einer Seite mit der An­zahl der­jeni­gen, die davon neu sind, d.h. nicht schon mal ge­fun­den wurden. Entschei­den sie selb­st, wie sie diesen Ver­g­le­ich er­stellen (z.B. an­hand eines Streudi­a­gramms mit einem Punkt pro Seite oder dop­pel­ten Balk­endi­a­gramms mit einer geeign­eten x-Achse, etc.).
    2. Er­stellen Sie ein His­togramm über die An­zahl der URLs pro Seite (wie beim er­sten Übungs­blatt mit den Worthäufigkeit­en, auch log­a­rith­misch)
    3. Er­stellen Sie ein His­togramm mit den Häufigkeit­en des Auftretens von Hy­per­links (d.h., wie viele Links treten 1-mal auf, wie viele 2-mal, ...)
    4. Überlegen Sie sich ein einfaches Verfahren, um Duplikate festzustellen, und beschreiben Sie es. Das Verfahren sollte dabei z.B. Datenbank-generierte Seiten, bei der sich nur kurze Passagen wie Zeitangaben, Navigationsleisten, Werbeeinblendungen unterscheiden, als Duplikate erkennen. Wenden Sie ihr Verfahren nachträglich auf die heruntergeladenen Seiten an und ermitteln Sie die Anzahl der gefundenen Duplikate. Verifizieren Sie Ihr Verfahren stichprobenartig und zeigen Sie ein repräsentatives Beispiel auf.
    5. Verwenden Sie Ihr Verfahren aus der ersten Aufgabe, um die Sprache der heruntergeladenen Seiten zu ermitteln. Geben Sie die Verteilung über die gefundenen Sprachen an.
    6. Schreiben Sie auch eine kurze Zusam­men­fas­sung über Ihre Er­fahrun­gen bzw. etwaige Prob­leme mit dieser Auf­gabe.

Starten Sie den Crawler an einer Seite Ihrer Wahl, lassen Sie ihn eine Weile (zu­min­d­est 1000 Seit­en) laufen und er­stellen Sie die genan­nten Statis­tiken.

Bedenken Sie, daß ein Crawl eine beträchliche Zeit in Anspruch nehmen kann, die Sie auch nicht direkt beeinflussen können. Es ist auch nicht ungewöhnlich, daß Sie z.B. aufgrund von Problemen und Fehlerbereinigungen mehrere Anläufe benötigen. Starten Sie deshalb Ihren ersten Crawl rechtzeitig.

 

 

Hinweise

 

Hil­fre­iche Mod­ule:

Zweck Python
Laden einer Web-Seite LWP::Sim­ple url­lib
Ex­trahieren von Hy­per­links HTML::LinkEx­tor SGML­Pars­er (Beispiel), html­da­ta
Queue­ing collections.deque
Kanon­isierung von URLs URI url­pars­er

Die meis­ten der genan­nten Perl-Mod­ule sind im Modul Bun­dle::LWP en­thal­ten.

A A A | Drucken | Impressum | Sitemap | Suche | Mobile Version
zum Seitenanfangzum Seitenanfang