SPRACHTECHNOLOGIE IN SUCHMASCHINEN IR-GRUNDLAGEN HAUPTSEMINAR SUCHMASCHINEN COMPUTERLINGUISTIK SOMMERSEMESTER 2016 STEFAN LANGER STEFAN.LANGER@CIS.UNI -MUENCHEN.DE
Übung (Gruppenarbeit, 10-15 min.) Sie haben ein Korpus mit 5 Millionen Nur-Text-Dokumenten und einer Gesamtgröße von ca 10 GB (auf einer lokal zugänglichen Maschine). Sie haben mit einem Team von 3 Leuten 3 Tage Zeit eine Anwendung zu entwickeln die es erlaubt: 1. möglichst schnell alle Dokumente zu finden, in denen ein bestimmter Term auftaucht 2. Kombinationen aus mehreren Termen, die im Dokument enthalten sind Machen Sie einen Plan. 2
Resultate der Übung - Fertige Suchemaschinenbibliothek (Lucene) Module implementieren: - Crawler - Tokenizer (inkl Normalisierung) - Indexer/Index - Indexabfrage 3
IR Grundlagen - Index Texte durchsuchen: mit grep dies stößt bei größeren Textmengen schnell an die Grenzen des Machbaren Mithilfe eines Indizes: Invertierte Dateien (inverted index) Grundidee der Implementierung: Hash oder Trie (aber Indizes von großen Suchmaschinen sind noch wesentlich optimierter) 4
Invertierter Index Zerlegung des Dokuments in Terme Im einfachsten Fall: Zuordnung von Termen zu Dokument-Ids Dokument 1 Schöne Frauen gehören nach Cannes wie die Aschewolke an den isländischen Himmel Dokument 2 Getrocknetes Wasser, das vom Himmel fällt und Tiere ohne Flügel, die trotzdem fliegen können? Index schöne.d1 frauen.d1. himmel.d1/d2 wasser.d2 fliegen.d2 5
Implementierung eines invertierten Indexes Implementieren Sie einen invertierten Index Zu Übungszwecken: -Verwenden Sie eine in Ihrer Programmiersprache verfügbare Datenstruktur, die schnelles Nachschlagen von Termen (und Zuordnung zu Werten erlaubt) -Z.B. Hash, Trie, (Dictionary) 6
Retrieval mit boolschen Ausdrücken Verknüpfung von Suchtermen mit UND/ODER/NICHT Dokumenten-Ids für jede Teilquery Bilde Schnittmengen (UND) /Differenzmengen (NICHT) / bzw. Vereinigungsmengen (ODER) Effiziente Algorithmen verfügbar S. Abschnitt 1.3 im IR-Buch 7
Boolsche Operatoren UND (AND): beide Teilausdrücke müssen in einem Dokument auftreten Das ist der Default bei allen mir bekannten Websuchmaschinen Beispiel: UND( HAMLET, OPHELIA ) ODER (OR): einer der Teilausdrücke muss im Dokument auftreten Beispiel: ODER( Streichholz, Zündholz ) NICHT (NOT): negiere den dahinterstehenden Ausdruck Beispiel: UND( HAMLET,NOT( OPHELIA )) Kombinationen: z. B. ANDNOT = AND NOT 8
Komplexität von Algorithmen Die Komplexität eines Algorithmus liefert Anhaltspunkte dafür, wie lange ein Programm läuft, in Abhängkeit von den Eingabedaten Wieviele Resourcen (v.a. Prozessorzeit, Speicherplatz) es verbraucht Hierbei unterscheidet man in der Regel nach den Parametern: Schlechtester Fall Durchschnitt Bester Fall Jeder Algorithmus sollte auch für den schlechtesten Fall (falls dieser irgendwie möglich ist), noch mit den vorhandenen Resources zurechtkommen 9
Die O-Notation g(n) = O (f (n) ) z.b. g(n) = O (n 2 ) Hier ist: n die Größe der Eingabedaten. O (f(n)) bezeichnet eine Menge von Funktionen für die gilt: g(n) <= c*f(n) d.h. der Wert von G ist abhängig von f(n) mal einer Konstanten. 10
Schrankenfunktionen (Beispiele) Konstant : O (1) Logarithmisch: O (log N) Linear: O (N) n-log-n: O (N x log N) Quadratisch (polynomial mit Hochzahl 2): O (N 2 ) Exponentiell: O (k n ) 11
Beispiele Komplexität Was ist die Komplexität für Algorithmen zur Lösung der folgenden Aufgaben? Ist der erste Buchstabe eines Strings ein a Stringlänge Wie oft enthält ein String den Buchstaben a Frequenz aller Buchstaben in einem String 12
Beispiel Komplexität Beispiel: Vergleiche zwei Listen von Strings auf gleiche Einträge Parameter: Größe des Lexikons (N), Länge des zu suchenden Eintrags (L). 13
Komplexität Schnittmengenbildung Die Komplexität der Schnittmengenbildung für einen Index (Mengen nach Größe sortiert): - Naiver Ansatz: Vergleiche alle Elemente aus Menge 1 mit allen aus Menge 2: O (n 2 ) - Verbesserter naiver Ansatz: Sortiere die Elemente aus Menge 1 oder schreibe sie in einen Hash/Dictionary. Lookup von allen Elementen aus Menge 2 in Menge 1 (binäre Suche oder Hash-Lookup):O (n log n) (sortieren) - Index-Ansatz: lege die Mengen bereits nach Dokument-ID sortiert ab. Arbeite die sortierten Listen nach Dokument-ID ab. Linear O (N) 14
Trefferquote (Recall) und Genauigkeit (Precision) F A F A D Maß für die Qualität des Retrievals D: Alle Dokumente A: Relevante Dokument F: Gefundene Dokumente Recall = F A/A Precision F A/F 15
F-measure Fmeasure: f = 2 p r p+r Hier ist p: Precision und r: Recall (Harmonisches Mittel zwischen Precision und Recall) 16
Übung (10 min) Welche IR-Szenarien (i.e. welche Anforderungen von Benutzern an die Suche) kann mit einfachen boolschen Ausdrücken (UND/ODER/NICHT) auf einfachen Termen nicht ohne weiteres lösen? Wie könnten Lösungsmöglichkeiten für solche Szenarien aussehen? 17
Ergebnisse der Übung Welche IR-Szenarien lassen sich mit einfacher boolscher Suche nicht lösen: Ranking Termnähe (Phrasen, Terme die nahe beieinander stehen) Berücksichtung der Dokumentengröße und Termhäufigkeit Wichtigkeit eines Dokuments Dokumentenstrukur/Position des Suchterms im Dokument Vektor-Ähnlichkeitsmaße 18
Suche von Termfolgen und Nähe im durchsuchten Dokument Beispiele für Operatoren: PHRASE( Rot, Grün ) NAH(Rot,Grün) NAH(Rot,Grün,<ABSTAND>) GEORDNETES_NAH(Rot,Grün) 19