car cheap insurance michigan

Transcrição

car cheap insurance michigan
4. Implemen*erung von IR-­‐Systemen
Rückblick
✦
✦
✦
✦
IR-­‐Modelle bieten formale Repräsenta/on von Anfragen und Dokumenten und bes*mmen welche Dokumente zu einer Anfrage in welcher Rangfolge zurückgeliefert werden
Boolesches Retrieval und Vektorraum-­‐Modell als tendenziell heuris*sche Ansätze
Probabilis/sches IR und Language Models als theore*sch fundierte probabilis*sche Ansätze
Latent Seman/c Indexing als theore*sch fundierter algebraischer aber nur bedingt prak*kabler Ansatz
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
2
Mo*va*on
Premature optimization
is the root of all evil
[Donald E. Knuth]
✦
Wie implemen*ert man ein IR-­‐System, welches die gemäß verwendeten IR-­‐Modells zu einer Anfrage zurückzuliefernden Dokumente möglichst effizient findet?
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
3
Inhalt
(1) Architektur eines IR-­‐Systems
(2) Inver*erter Index
(3) Sta*sche Indexierung
(4) Anfragebearbeitung und -­‐op*mierung
(5) Kompression
(6) Caching
(7) Dynamische Indexierung
(8) Verteile IR-­‐Systeme
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
4
4.1 Architektur eines IR-­‐Systems
Anfrage
Ergebnis
Anfragebearbeitung
Indexe
Sta*s*ken
Indexierung
(sta/sch & dynamisch)
Dokumentensammlung
Informa*on Retrieval (SS 2011)
Cache
+
-­‐
Einfügen & Löschen
4. Implemen*erung von IR-­‐Systemen
5
Aktuelle Hardware
Hauptspeicher
✦
✦
Typische Kapazität 8 GB
✦
Zugriffszeit (latency) 10 ns = 10 x 10-­‐9 s ✦
Datenübertragungsrate (bandwidth) 10 GB/s
©brutalSoCal@flickr
Sekundärspeicher (Magnetspeicher)
✦
✦
Typische Kapazität 1 TB ✦
Zugriffszeit (latency oder seek 4me) ✦
Datenübertragungsrate (bandwidth) 125 MB/s 5 ms = 5 x 10-­‐3 s
© Uncle Saihul@flickr
Sekundärspeicher (Solid State)
✦
✦
✦
✦
Typische Kapazität 256 GB
Zugriffszeit (latency) 100 μs = 100 x 10-­‐6 s
Datenübertragungsrate (bandwidth) 250 MB/s
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
© Andreas@flickr
6
Hardwaretrends
✦
✦
✦
✦
Geschwindigkeit von CPUs wächst weiterhin schneller als
Bandbreite von magne*schem Sekundärspeicher
2000 – 2010: CPU (> 50x) vs. HDD (< 2x)
Mehrere Kerne (mul4 core) pro CPU stan schnelleren CPUs enhalten ihr volles Poten*al bei paralleler Programmierung
Grafikprozessoren (GPUs) werden für allgemeine massiv parallele Berechnungen zweckenhremdet
Netzwerkbandbreite nimmt weiter zu, so dass es immer anrak*ver wird, auf den Hauptspeicher eines enhernten Rechners anstelle auf lokalen Sekundärspeicher zuzugreifen
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
7
4.2 Inver/erter Index
Wörterbuch
clooney
george
d1
d4
d6
d9
d11
d34
d66
d89
d4
d5
d7
d9
d13
d14
d34
d99
Indexlisten
Inver/erter Index (inverted index) besteht aus
✦
✦
Wörterbuch (dic4onary) mit allen bekannten Termen
✦
Indexlisten (pos4ng lists) mit Informa*onen zu Termvorkommen
✦
Wörterbuch wird meist im Hauptspeicher gehalten
✦
Indexlisten werden meist auf Sekundärspeicher abgelegt
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
8
Indexeinträge
✦
✦
Indexlisten enthalten Indexeinträge (pos4ngs), deren Inhalt vom verwendeten IR-­‐Modell bzw. Art der Anfragen abhängt
Boolesches Retrieval benö*gt nur eine Dokumentennummer (document iden4fier)
did
✦
b.idf-­‐Varianten benö*gten zusätzlich die Term-­‐Häufigkeit !t,d oder vorberechneten Wert (score contribu4on) !t,d x idfd
did !t,d
✦
did !t,d x idfd
Phrasen-­‐Anfragen benö*gen die Posi*onen (offsets), an denen der Term im Dokument vorkommt
did {12, 46, 78, 98}
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
9
Sor*erung der Indexlisten
✦
✦
Sor/erung der Indexlisten (d.h. Reihenfolge der enthaltenen Indexeinträge) hängt vom verwendeten Verfahren zur Anfragebearbeitung ab und beeinflusst ihre Komprimierbarkeit
nach Dokumentennummer (document-­‐ordered)
d2 4 d5 2 d8 7 d12 1 d55 1
z.B. sinnvoll wenn Anfrage konjunk*v interpre*ert wird
✦
nach Wert (z.B. Term-­‐Häufigkeit) (score-­‐ordered)
d8 7 d2 4 d5 2 d12 1 d55 1
z.B. sinnvoll für effiziente Top-­‐k Anfragebearbeitung
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
10
Wörterbuch
✦
Wörterbuch enthält für jeden Term einen Verweis (pointer) auf die zugehörige Indexliste und evtl. zusätzliche Informa/onen (z.B. die Dokumenten-­‐Häufigkeit dft)
Term t
auto
car
devil
✦
✦
dft
6
12
9
Verweis
7,765
2,098
8,755
Anfragebearbeitung schlägt zuerst die Anfrageterme im Wörterbuch nach und greiq dann, minels der erminelten Verweise, auf die entsprechenden Indexlisten zu
Wie kann das Wörterbuch so im Hauptspeicher implemen*ert werden, dass dieses Nachschlagen effizient möglich ist?
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
11
Hash-­‐basiertes Wörterbuch
✦
Implemen*erung minels Hashtabelle mit Verkefung
0
h(car) = 0
h(auto) = 2
h(insurance) = m
✦
✦
car 12 2098
devil 9 8755
wild 12 2765
1
2
auto 6 7765
3
/ger 10 1762
m
insurance 3 7762
Nachschlagen eines Terms t in Zeitkomplexität O(1) (erwartet) durch Berechnen seines Hashwertes h(t) und lineare Suche in der verkeneten Liste an dieser Posi*on
Keine Präfix-­‐, Infix-­‐ oder Suffixsuche (z.B. sea*, fa*us, *logy)
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
12
Sor*er-­‐basiertes Wörterbuch
✦
Implemen*erung minels mehrerer sor*erter Arrays
T(erme)
a
u
t
P(osi/on)
0
4
7 12
V(erweise)
DF
✦
✦
o
7,765
6 12 9
c
a
d
e
v
i
l
i
n
s
u
r
a
…
…
2,098
3
r
8,755
7,762
…
…
Nachschlagen eines Terms t in Zeitkomplexität O(log |V|) durch binäre Suche auf den Arrays P und T Unterstützt Präfixsuche (z.B. sea*) und kann erweitert werden, so dass Infix-­‐ und Suffixsuche (z.B. fa*us und *logy) möglich ist
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
13
4.3 Sta/sche Indexierung
✦
✦
Wie kann man eine sta/sche Dokumentensammlung indexieren, d.h., einen inver/erten Index dafür erstellen?
Beim Einlesen (Tokenisieren & Normalisieren) der Dokumente sieht man Termvorkommen pro Dokument (token stream)
d1 the d1 world d1 has d3 brand d3 new d3 world
✦
Zum Erstellen des inver*erten Index müssen Termvorkommen pro Term erminelt werden
brand d3 has d1 new ✦
d1 the d1 world d1
world d3
Termvorkommen müssen also neu sor/ert (inver*ert) werden
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
14
Naïve Indexierung
✦
✦
Für sehr kleine Dokumentensammlungen kann man alle Termvorkommen im Hauptspeicher halten und dort sor*eren
Frage: Wie groß darf eine Dokumentensammlung sein, damit dieser Ansatz mit 2 GB Hauptspeicher noch prak*kabel ist?
term did
~
32 Bytes
∅ Dokumentenlänge
~
2,000 Terme
Lösung: 33,554 Dokumente
✦
✦
Dokumentensammlungen passen i.d.R. nicht in Hauptspeicher!
Verfahren zur Indexierung sor/eren Termvorkommen daher unter Zuhilfenahme von Sekundärspeicher (external memory)
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
15
External Memory Sort
✦
✦
Wahlfreie Zugriffe (random access) sind auf Sekundärspeicher deutlich teurer als sequen/elle Zugriffe (sequen4al access)
Generelles Vorgehen zum Sor/eren mit Sekundärspeicher
Mergesort
Schrin 1: Erstelle sor/erte Teilfolgen (runs) mit Quicksort, deren Länge vom verfügbaren Hauptspeicher M bes*mmt wird, und speichere diese auf Sekundärspeicher ab Schrin 2: Verschmelze jeweils F sor*erte Teilfolgen und speichere Ergebnis als neue Teilfolge auf Sekundärspeicher ab
Wiederhole Schrin 2 bis nur noch eine Folge übrig ist
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
16
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: Ebene 0:
✦
N = 8 x 107 M = 107
F = 2
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: N = 8 x 107 M = 107
F = 2
Ebene 1:
Ebene 0:
✦
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: N = 8 x 107 M = 107
F = 2
Ebene 1:
R1,0
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: N = 8 x 107 M = 107
F = 2
Ebene 1:
R1,0
R1,1
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: R1,1
N = 8 x 107 M = 107
F = 2
Ebene 1:
R1,0
R1,2
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: R1,1
R1,2
N = 8 x 107 M = 107
F = 2
Ebene 1:
R1,0
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: R1,1
R1,2
N = 8 x 107 M = 107
F = 2
Ebene 1:
R1,0
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: N = 8 x 107 M = 107
F = 2
Ebene 2:
✦
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: Ebene 2:
✦
N = 8 x 107 M = 107
F = 2
R2,0
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: Ebene 2:
✦
R2,0
N = 8 x 107 M = 107
F = 2
R2,1
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: Ebene 2:
✦
R2,0
N = 8 x 107 M = 107
F = 2
N/M/F2
R2,1
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: N = 8 x 107 M = 107
F = 2
Ebene 3:
Ebene 2:
✦
R2,0
N/M/F2
R2,1
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: Ebene 3:
Ebene 2:
✦
N = 8 x 107 M = 107
F = 2
R3,0
R2,0
N/M/F2
R2,1
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
External Memory Sort
✦
Beispiel:
Termvorkommen in Dokumentensammlung: Kapazität des Hauptspeichers: Fan-­‐In: Ebene 3:
Ebene 2:
✦
N = 8 x 107 M = 107
F = 2
N/M/F3
R3,0
R2,0
N/M/F2
R2,1
Ebene 1:
R1,0
R1,1
R1,2
R1,3
Ebene 0:
R0,0 R0,1 R0,2 R0,3 R0,4 R0,5 R0,6 R0,7
N/M/F
N/M
Zahl der Ebenen ist �logF N/M�
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
17
Indexierung mit External Memory Sort
Verfahren zur Indexierung können danach unterschieden werden, ob sie einen (single pass) oder mehrere (mul4 pass)
Durchläufe über die Dokumentensammlung benö*gen
✦
Blocked Sort-­‐Based Indexing (BBSI)
✦
✦
✦
Erstelle Wörterbuch mit term → /d in einem ersten Durchlauf
Erstelle sor/erte Teilfolgen von Termvorkommen ( did, /d ) als Ebene 0 von External Memory Sort in zweitem Durchlauf
Single-­‐Pass In-­‐Memory Indexing (SPIMI)
✦
✦
Erstelle in einem einzigen Durchlauf entsprechend verfügbaren Hauptspeichers Teilindexe (Wörterbuch + Indexlisten), welche dann analog zu External Memory Sort verschmolzen werden
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
18
4.4 Anfragebearbeitung und -­‐op/mierung
IR-­‐Modelle aus Kapitel 3 lassen sich wie folgt abstrahieren
�
w(q, d) =
widf (t) · wtf (t, d)
✦
t∈q
Beobachtungen:
✦
✦
Es müssen nur Anfrageterme betrachtet werden
✦
idf-­‐Gewicht widf (t) hängt nur vom Anfrageterm t ab
✦
h-­‐Gewicht w! (t,d) hängt von Anfrageterm t und Dokument d ab
Wie kann man, mit Hilfe eines inver*erten Index effizient
✦
✦
den Wert w(q,d) für alle Dokumente ermineln?
✦
die Top-­‐k Dokumente mit den höchsten Werten w(q,d) bes*mmen?
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
19
Term-­‐at-­‐a-­‐Time (TAAT)
✦
Term-­‐at-­‐a-­‐Time liest Indexlisten der Anfrageterme sukzessive
✦
Die Sor/erung der Indexlisten spielt hierbei keine Rolle
✦
✦
✦
Für jedes Dokument d wird ein Akkumulator (accumulator)
verwaltet, in dem sukzessive der Wert w(q,d) aggregiert wird
Zu jedem Zeitpunkt wird ein einziger Anfrageterm t betrachtet und sein Beitrag widf (t) * w! (t,d) für alle Dokumente erminelt
Die Top-­‐k Dokumente mit höchstem Wert w(q,d) können z.B. mit Hilfe einer Priority Queue erminelt werden, nachdem die Indexlisten für alle Anfrageterme gelesen wurden
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
20
Term-­‐at-­‐a-­‐Time Pseudo-­‐Code
A ← new HashMap()
foreach term t in query q
Lt ← InvertedIndex.getIndexList( t )
widf ← InvertedIndex.getIDF( t )
foreach posting ( d, wtf ) in Lt
A[ d ] ← A[ d ] + widf * wtf
R ← new SizeConstrainedPriorityQueue( k )
foreach document d in A
R.add( A[ d ], d )
// Akkumulatoren
// Indexliste für t
// idf-Gewicht für t
// Top-k Ergebnisse
return R
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
21
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 22
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 22
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 A
d2 d5 d8 d12 d55 0.8
0.4
1.4
0.2
0.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
22
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 A
d2 d5 d8 d12 d55 0.8
0.4
1.4
0.2
0.2
d1 d2 d5 d8 d12 d55 Informa*on Retrieval (SS 2011)
1.2
1.6
0.4
4.2
0.2
0.2
4. Implemen*erung von IR-­‐Systemen
22
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 A
d2 d5 d8 d12 d55 0.8
0.4
1.4
0.2
0.2
d1 d2 d5 d8 d12 d55 Informa*on Retrieval (SS 2011)
1.2
1.6
0.4
4.2
0.2
0.2
d1 d2 d5 d8 d12 d55 d68 1.2
2.5
0.5
4.4
0.3
0.3
0.2
4. Implemen*erung von IR-­‐Systemen
22
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 A
d2 d5 d8 d12 d55 0.8
0.4
1.4
0.2
0.2
d1 d2 d5 d8 d12 d55 Informa*on Retrieval (SS 2011)
1.2
1.6
0.4
4.2
0.2
0.2
d1 d2 d5 d8 d12 d55 d68 1.2
2.5
0.5
4.4
0.3
0.3
0.2
4. Implemen*erung von IR-­‐Systemen
22
Term-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 d5 d8 d12 d55 widf (insurance) = 0.4 d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
A
widf (car) = 0.2 widf (cheap) = 0.1 R (k = 3)
0.8
0.4
1.4
0.2
0.2
d1 d2 d5 d8 d12 d55 Informa*on Retrieval (SS 2011)
1.2
1.6
0.4
4.2
0.2
0.2
d1 d2 d5 d8 d12 d55 d68 1.2 d8 4.4
2.5 d2 2.5
0.5 d1 1.2
4.4
0.3
0.3
0.2
4. Implemen*erung von IR-­‐Systemen
22
Document-­‐at-­‐a-­‐Time (DAAT)
✦
Document-­‐at-­‐a-­‐Time liest Indexlisten für Anfrageterme parallel
✦
Indexlisten sind hierbei nach Dokumentennummer sor/ert
✦
✦
✦
Zu jedem Zeitpunkt wird ein einziges Dokument d betrachtet und sein Wert w(q,d) aus allen Indexlisten aggregiert
Sobald der Wert w(q,d) für das Dokument d erminelt wurde, kann entschieden werden, ob es in die Top-­‐k gehört
Die Top-­‐k Dokumente mit höchstem Wert w(q,d) können damit während des Lesens der Indexlisten erminelt werden
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
23
Document-­‐at-­‐a-­‐Time Pseudo-­‐Code
L ← new ArrayList()
IDF ← new HashMap()
foreach term t in query q
L[ t ] ← InvertedIndex.getIndexList( t )
IDF[ t ] ← InvertedIndex.getIDF( t )
// Indexlisten
// idf-Gewichte
R ← new SizeConstrainedPriorityQueue( k )
foreach document d in ascending order of identifier
w ← 0.0
foreach term t in query q
if ( L[ t ] points to document d ) then
( d, wtf ) ← L[ t ].read()
w ← w + (wtf * IDF[ t ])
L[ t ].movePast( d )
R.add( w, d )
// Top-k Ergebnisse
return R
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
24
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
2 4 d5 2 d8 7 d12 1 d55 1
d
1 3 d2 2 d8 7
d
2 9 d5 1 d8 2 d12 1 d55 1 d68 1
d
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
2 4 d5 2 d8 7 d12 1 d55 1
d
1 3 d2 2 d8 7
d
2 9 d5 1 d8 2 d12 1 d55 1 d68 1
d
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 R (k = 3)
d1 1.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
2 4 d5 2 d8 7 d12 1 d55 1
d
d1 3 d
2 2 d8 7
2 9 d5 1 d8 2 d12 1 d55 1 d68 1
d
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 R (k = 3)
d1 1.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
2 4 d5 2 d8 7 d12 1 d55 1
d
d1 3 d
2 2 d8 7
2 9 d5 1 d8 2 d12 1 d55 1 d68 1
d
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5
d1 1.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d
5 2 d8 7 d12 1 d55 1
d1 3 d
2 2 d8 7
d2 9 d
5 1 d8 2 d12 1 d55 1 d68 1
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5
d1 1.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d
5 2 d8 7 d12 1 d55 1
d1 3 d
2 2 d8 7
d2 9 d
5 1 d8 2 d12 1 d55 1 d68 1
R (k = 3)
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5
d1 1.2 d1 1.2
d5 0.5
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d5 2 d 8 7 d12 1 d55 1
d1 3 d2 2 d 8 7 d2 9 d5 1 d
8 2 d12 1 d55 1 d68 1
R (k = 3)
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5
d1 1.2 d1 1.2
d5 0.5
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d5 2 d 8 7 d12 1 d55 1
d1 3 d2 2 d 8 7 widf (insurance) = 0.4 d2 9 d5 1 d
8 2 d12 1 d55 1 d68 1
R (k = 3)
R (k = 3)
widf (car) = 0.2 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5 d8 4.4
d1 1.2 d1 1.2 d2 2.5
d5 0.5 d1 1.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d5 2 d8 7 d 12 1 d55 1
d1 3 d2 2 d8 7
widf (insurance) = 0.4 d2 9 d5 1 d8 2 d 12 1 d55 1 d68 1
R (k = 3)
R (k = 3)
widf (car) = 0.2 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5 d8 4.4
d1 1.2 d1 1.2 d2 2.5
d5 0.5 d1 1.2
d12 0.3
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d5 2 d8 7 d12 1 d 55 1 d1 3 d2 2 d8 7
widf (insurance) = 0.4 d2 9 d5 1 d8 2 d12 1 d
55
1 d68 1
R (k = 3)
R (k = 3)
widf (car) = 0.2 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5 d8 4.4
d1 1.2 d1 1.2 d2 2.5
d5 0.5 d1 1.2
d12 0.3
d55 0.3
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
widf (insurance) = 0.4 d2 9 d5 1 d8 2 d12 1 d55 1 d
68
1 R (k = 3)
R (k = 3)
widf (car) = 0.2 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5 d8 4.4
d1 1.2 d1 1.2 d2 2.5
d5 0.5 d1 1.2
d12 0.3
d55 0.3
d68 0.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Document-­‐at-­‐a-­‐Time
car
insurance
cheap
R (k = 3)
d2 4 d5 2 d8 7 d12 1 d55 1
d1 3 d2 2 d8 7
widf (insurance) = 0.4 d2 9 d5 1 d8 2 d12 1 d55 1 d68 1
R (k = 3)
R (k = 3)
widf (car) = 0.2 widf (cheap) = 0.1 R (k = 3)
d1 1.2 d2 2.5 d2 2.5 d8 4.4
d1 1.2 d1 1.2 d2 2.5
d5 0.5 d1 1.2
d12 0.3
d55 0.3
d68 0.2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
25
Top-­‐k Anfragebearbeitung mit NRA
✦
✦
✦
✦
Wie kann man die Anfragebearbeitung frühzei/g beenden (d.h. ohne Indexlisten vollständig zu lesen) und dennoch die korrekten Top-­‐k Dokumenten finden?
Ein Algorithmus hierzu ist NRA (No Random Accesses) aus der Familie der Threshold-­‐Algorithmen (TA) von Fagin et al.
NRA ist ein allgemeines Verfahren, welches für alle monotonen Aggrega/onsfunk/onen f anwendbar ist
∀ i : xi ≤ yi ⇒ f(x) ≤ f(y)
Man kann zeigen, dass NRA instanz-­‐op/mal (instance op4mal) unter allen Indexlisten sequen*ell lesenden Verfahren ist Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
26
Top-­‐k Anfragebearbeitung mit NRA
✦
NRA liest Indexlisten für Anfrageterme parallel
✦
Indexlisten sind hierbei absteigend nach Wert sor/ert ✦
NRA verwaltet während des Lesens der Indexlisten
✦
✦
✦
✦
✦
eine momentane Top-­‐k der besten Dokumente, deren Wert w(q,d) bereits vollständig erminelt wurde
eine Menge von Kandidaten C, die noch nicht in allen Indexlisten gesehen wurden und für die w(q,d) damit noch unvollständig ist
Schwellwert (threshold) für Einzug in die momentane Top-­‐k
Schranken (bounds) für die Werte w(q,d) von Kandidaten und bisher unbekannten Dokumenten
für jeden Kandidaten d die Menge seen(d) der Indexlisten, in denen er bereits gesehen wurde
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
27
Top-­‐k Anfragebearbeitung mit NRA
d8 7 d
2 4 d5 2 d12 1 d55 1
car
d8 7 d
1 3 d2 2
insurance
d2 9 d
8 2 d5 1 d12 1 d55 1 d68 1
cheap
✦
R (k = 1 )
C
d8 4.4
d2 1.7 {car, insurance}
d1 1.2 {insurance}
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 mink Kleinster Wert w(q,d) in der momentanen Top-­‐k
Hier: mink = 4.4
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
28
Top-­‐k Anfragebearbeitung mit NRA
d8 7 d
2 4 d5 2 d12 1 d55 1
car
d8 7 d
1 3 d2 2
insurance
d2 9 d
8 2 d5 1 d12 1 d55 1 d68 1
cheap
✦
R (k = 1 )
C
d8 4.4
d2 1.7 {car, insurance}
d1 1.2 {insurance}
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 high(t) Zuletzt gesehener Wert in Indexliste für Term t
Hier: high(car) = 4 high(insurance) = 3 high(cheap) = 2
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
29
Top-­‐k Anfragebearbeitung mit NRA
car
insurance
cheap
✦
d8 7 d
2 4 d5 2 d12 1 d55 1
d8 7 d
1 3 d2 2
d2 9 d
8 2 d5 1 d12 1 d55 1 d68 1
R (k = 1 )
C
d8 4.4
d2 1.7 {car, insurance}
d1 1.2 {insurance}
worst(d) Hier: Informa*on Retrieval (SS 2011)
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 Untere Schranke für aggregierten Wert von Kandidat d
worst(d1) = 1.2 worst(d2) = 1.7
4. Implemen*erung von IR-­‐Systemen
30
Top-­‐k Anfragebearbeitung mit NRA
car
insurance
cheap
✦
d8 7 d
2 4 d5 2 d12 1 d55 1
d8 7 d
1 3 d2 2
d2 9 d
8 2 d5 1 d12 1 d55 1 d68 1
R (k = 1 )
C
d8 4.4
d2 1.7 {car, insurance}
d1 1.2 {insurance}
best(d) Hier: Informa*on Retrieval (SS 2011)
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 Obere Schranke für aggregierten Wert von Kandidat d
best(d1 ) = worst(d1 ) + 0.2 * 4 + 0.1 * 2 = 2.2 best(d2 ) = worst(d2 ) + 0.1 * 2 = 1.9
4. Implemen*erung von IR-­‐Systemen
31
Top-­‐k Anfragebearbeitung mit NRA
car
insurance
cheap
✦
d8 7 d
2 4 d5 2 d12 1 d55 1
d8 7 d
1 3 d2 2
d2 9 d
8 2 d5 1 d12 1 d55 1 d68 1
R (k = 1 )
C
d8 4.4
d2 1.7 {car, insurance}
d1 1.2 {insurance}
unseen Hier: Informa*on Retrieval (SS 2011)
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 Obere Schranke für aggregierten Wert bisher unbekannten Dokuments
unseen = 0.2 * 4 + 0.4 * 3 + 0.1 * 2 = 2.2 4. Implemen*erung von IR-­‐Systemen
32
Top-­‐k Anfragebearbeitung mit NRA
NRA verwendet also folgende Schwellwerte und Schranken
✦
✦
✦
✦
high(t) zuletzt gesehener Wert in Indexliste für Term t als obere Schranke für bisher nicht gesehene Werte
mink niedrigster aggregierter Wert in der momentanen Top-­‐k
worst(d) untere Schranke für aggregierten Wert von Dokument d
�
t ∈ seen(d)
✦
best(d) widf (t) · wtf (t, d)
obere Schranke für aggregierten Wert von Dokument d
worst(d) +
�
t ∈ q\seen(d)
✦
unseen Informa*on Retrieval (SS 2011)
widf (t) · high(t)
untere Schranke für aggregierten Wert bisher unbekannten Dokumentes
4. Implemen*erung von IR-­‐Systemen
33
Top-­‐k Anfragebearbeitung mit NRA
NRA nutzt folgende Beobachtungen aus um festzustellen, ob es die Anfragebearbeitung einstellen kann
✦
✦
✦
✦
Sobald unseen ≤ mink gilt, kann es kein bisher unbekanntes Dokument in die Top-­‐k schaffen
Sobald für einen Kandidaten best( d ) ≤ mink gilt, kann es dieses Dokument nicht mehr in die Top-­‐k schaffen
Kann es kein unbekanntes Dokument und kein Kandidat mehr in die Top-­‐k schaffen, so ist diese endgül*g und NRA kann die Anfragebearbeitung einstellen
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
34
Top-­‐k Anfragebearbeitung mit NRA
car
insurance
cheap
✦
d8 7 d
2 4 d5 2 d12 1 d55 1
d8 7 d
1 3 d2 2
d2 9 d
8 2 d5 1 d12 1 d55 1 d68 1
R (k = 1 )
C
d8 4.4
d2 1.7 {car, insurance}
d1 1.2 {insurance}
widf (car) = 0.2 widf (insurance) = 0.4 widf (cheap) = 0.1 Ist man an der Top-­‐1 interessiert, kann NRA an diesem Punkt die Anfragebearbeitung einstellen, da weder d2 noch d1 noch bisher unbekannte Dokumente besser als d8 werden können
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
35
NRA Pseudo-­‐Code
R ← new SizeConstrainedPriorityQueue( k )
C ← new HashMap()
// Top-k
// Kandidaten
L ← new ArrayList()
IDF ← new HashMap()
foreach term t in query q
L[ t ] ← InvertedIndex.getIndexList( t )
IDF[ t ] ← InvertedIndex.getIDF( t )
// Indexlisten
// idf-Gewichte
while !finished()
foreach term t in query q
( d, wtf ) ← L[ t ].read()
c ← C.getOrCreateCandidate( d )
c.updateScore( t, wtf * IDF[ t ] )
if c.isEvaluated() then
R.add( c.best( ), c )
C.remove( c )
return R
Informa*on Retrieval (SS 2011)
// Lese Indexlisten Round-Robin
boolean finished()
finished ← true
foreach candidate c in C
if c.best() > mink then
finished ← false
break
finished ← finished ∧ unseen > mink
return finished
4. Implemen*erung von IR-­‐Systemen
36
4.5 Kompression
Kompressionsverfahren bes*mmen kompakte Repräsenta/on, die weniger Speicherplatz als die Rohdaten benö*gt
✦
Man unterscheidet verlustbehauete Kompressionsverfahren (z.B. JPEG) und verlusbreie Kompressionsverfahren (z.B. GIF)
✦
Vorteile durch Anwendung von Kompression in IR-­‐System
✦
✦
✦
✦
✦
Geringerer Speicherbedarf für die Speicherung von Indexlisten
Höhere Cache-­‐Effek/vität, da mehr Daten gecacht werden können
Performanz-­‐Gewinn, da es auf moderner Hardware oq schneller ist, Daten komprimiert zu lesen und dann zu dekomprimieren
Kein effizientes IR-­‐System ohne Kompression!
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
37
Kompression des Inver*erten Index
✦
Wörterbuch und Indexlisten werden separat komprimiert
✦
Komprimierung von Indexlisten basierend auf folgenden Ideen
✦
✦
Verwende weniger Speicher, um kleine Zahlen zu repräsen*eren ✦
Nutze aus, dass Indexlisten eine bekannte Sor/erung haben
Beispiel: Naïve Repräsenta*on einer Indexliste mit 32-­‐bit Dokumentennummern und 32-­‐bit Term-­‐Häufigkeiten
d2 19
d5 7
d8 250
d130 30
00000000 00000000 00000000 00000010 00000000 00000000 00000000 00010011 …
Insgesamt: 256 bit = 32 bytes
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
38
Variable-­‐Byte Codes
Variable-­‐Byte Encoding verwendet pro Byte
✦
✦
das höchstwer*ge Bit als Forsetzungs-­‐Bit (con4nua4on bit)
✦
die übrigens sieben Bits als “Nutzlast” (payload)
payload
con*nua*on bit
7
6
5
4
3
2
1
0
✦
Zahl n wird binär im “Nutzlast”-­‐Teil der Bytes repräsen*ert
✦
Fortsetzungs-­‐Bit gibt an, ob nächstes Byte auch zu n gehört
✦
Man benö*gt msb(n) / 7 + 1 Bytes zur Repräsenta*on der Zahl n, mit msb(n) = log2 n als höchstwer*gem Bit
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
39
Variable-­‐Byte Codes
✦
Beispiel: Die Zahl 4711 hat folgende 32-­‐bit Binärdarstellung
00000000 00000000 00010010 01100111
Mit Variable-­‐Byte Encoding erhält man
00100100 11100111
und benö*gt zwei staf vier Bytes zu ihrer Repräsenta*on ✦
Beispiel: Repräsenta*on einer Indexliste d2 19
00000010
d5 7
00010011
d8 250
00000101
d130 30
00000111
00001000
11111010 00000001 …
Insgesamt: 10 Bytes
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
40
Gap Encoding
✦
✦
✦
✦
Indexlisten haben eine bekannte und einheitliche Sor/erung
Sind Indexlisten nach Dokumentennummern sor*ert, bilden die Dokumentennummern eine monoton steigende Folge
Gap Encoding speichert für die zweite und folgenden Dokumentennummern nur die Differenz zum Vorgänger (gap)
� n1 , n2 , n3 , . . . � → � n1 , (n2 − n1 ), (n3 − n2 ), . . . �
Diese Differenzen sind kleinere Zahlen als die ursprünglichen Dokumentennummern und lassen sich somit kompakter repräsen/eren (z.B. mit Variable-­‐Byte Codes)
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
41
Gap Encoding
✦
Beispiel: Indexliste
d2 19
d5 7
d8 250
d130 30
wird repräsen*ert als
2 19
3 7
3 250
122 30
bei Verwendung von Variable-­‐Byte Encoding erhält man
00000010
00010011
00000011
00000111
00000011
11111010 00000001 …
Insgesamt: 9 Bytes
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
42
Gamma Codes
Variable-­‐Byte Encoding repräsen*ert Zahl als Folge ganzer Bytes, d.h., pro Zahl wird mindestens ein Byte verwendet
✦
Effek/vere Speicherausnutzung möglich durch Repräsenta*on auf Bit-­‐Ebene, d.h., Zahl wird als Folge von Bits dargestellt
✦
Unär-­‐Encoding repräsen*ert Zahl n als Folge von n 1-­‐Bits gefolgt von einem 0-­‐Bit (z.B. 8 = 111111110)
✦
γ-­‐Encoding repräsen*ert Zahl n in zwei Komponenten
✦
✦
Länge gibt höchstwer*ges Bit msb(n) =
✦
Offset gibt Wert n -­‐ 2 msb(n) in Binär-­‐Code an
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
log2 n in Unär-­‐Code an
43
Gamma Codes
✦
Beispiel: Die Zahl 4711 hat folgende 32-­‐bit Binärdarstellung
00000000 00000000 00010010 01100111
mit γ-­‐Encoding erhält man
Länge: 1111111111110 Offset: 001001100111
✦
✦
✦
γ-­‐Encoding repräsen*ert die Zahl n mit 2 x
log2 n
+ 1 Bits
γ-­‐Codes sind präfixfrei, d.h. Folge von γ-­‐Codes kann eindeu*g interpre*ert werden und es sind keine Trennzeichen nö*g
Repräsenta*on durch γ-­‐Codes ist höchstens konstanten Faktor (< 3 ) von einer op/malen Repräsenta/on enhernt
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
44
Gamma Codes
✦
Beispiel: Repräsenta*on einer Indexliste
d2 19
d5 7
d8 250
d130 30
mit γ-­‐Codes (ohne Gap-­‐Encoding)
10 0
11110 0011
110 01
110 11
1110 000
11111110 1111010 …
Insgesamt: 76 Bit (10 Byte)
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
45
4.6 Caching
Caching hält Daten für schnellen Zugriff im Hauptspeicher vor und reduziert dadurch die Antwortzeiten eines IR-­‐Systems
✦
Drei Ebenen von Daten, für die Caching sinnvoll sein kann:
✦
✦
✦
✦
Anfrageergebnisse, damit häufige Anfragen ohne weitere Bearbeitung direkt beantwortet werden können
Teilergebnisse, damit Anfragen mit häufig angefragten Kombina/onen von Termen schneller bearbeitet werden können
Indexlisten, damit Anfragen mit häufig angefragten Termen schneller bearbeitet werden können
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
46
Caching Strategien
Caching-­‐Strategie (caching policy) entscheidet für gegebene Kapazität, welche Elemente im Cache gehalten werden
✦
Universelle Caching-­‐Strategien sind:
✦
✦
✦
✦
Least Recently Used (LRU) scha} Platz für neues Element, indem es das am längsten unbenutzte Element enhernt
Least Frequently Used (LFU) scha} Platz für neues Element, indem es das am seltensten benutzte Element enhernt
Kostenbasierte Caching-­‐Strategien vergleichen Kosten (z.B. Größe des Ergebnis) mit erwartetem Nutzen (z.B. Häufigkeit der Anfrage * Anzahl gelesener Pos4ngs ihrer Bearbeitung)
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
47
Caching in der Praxis
✦
Häufigkeitsverteilung der Anfragen in realen IR-­‐Systemen lässt sich oq durch eine Zipf-­‐Verteilung beschreiben
f(q) = c · i −α mit α ≈ 1
✦
✦
✦
Es gibt aber eine große Zahl von Anfragen, die nur einmal vorkommen und daher nicht vom Caching profi*eren können
Analyse eines Query-­‐Logs von yahoo.co.uk über ein Jahr hinweg [2] zeigt, dass 88% der Anfragen nur einmal gestellt wurden. Diese machen 44% des Anfrage-­‐Volumes aus.
Cache-­‐Hit Ra/o als Prozentsatz der Anfragen, die aus dem Cache beantwortet werden können in der Praxis < 50%
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
48
4.7 Dynamische Indexierung
Interessante Dokumentensammlungen sind meist dynamisch
✦
✦
✦
✦
✦
The New York Times – ca. 250 neue Ar/kel pro Tag
World Wide Web – ca. 8% neue Webseiten pro Woche – ca. 80% der Webseiten nach einem Jahr verschwunden [8]
twiner – ca. 45 Millionen neue Tweets pro Tag
Wie kann man einen inver/erten Index anpassen, wenn sich die zugrundeliegende Dokumentensammlung verändert?
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
49
Naïver Ansatz
Ein naïver Ansatz könnte sein, für jedes neue, geänderte oder gelöschte Dokument die betroffenen Indexlisten anzupassen
✦
Dies ist kein prak/kabler Ansatz u.a. aus folgenden Gründen
✦
✦
✦
✦
Indexlisten liegen auf magne*schem Sekundärspeicher und haben damit eine Zugriffszeit von ca. 5 ms (d.h. für 1,000 Terme = 0.5 s)
Sor*erung der Indexlisten soll erhalten bleiben, d.h. man muss die gesamte Indexliste lesen und in veränderter Form schreiben Größe der Indexlisten ändert sich, so dass es zu Fragmen*erung und/oder erhöhtem Platzbedarf des Index kommt
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
50
Re-­‐Indexierung
Regelmäßige Re-­‐Indexierung (d.h. vollständiger Neuau€au des inver*erten Index) ist prak*kable Lösung
✦
✦
für kleine oder wenig dynamische Dokumentensammlungen
✦
wenn veraltete Anfrageergebnisse akzeptabel sind
Nachteile der regelmäßigen Re-­‐Indexierung sind ✦
✦
✦
Ineffizienz – beim Neuau€au werden auch die unveränderten Dokumente erneut eingelesen und verarbeitet
Speicherbedarf – während des Neuau€aus exis*eren i.d.R. sowohl der alte als auch der neue unfer*ge Index
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
51
Delta-­‐Index
✦
✦
✦
✦
✦
Idee: Indexiere Veränderungen der Dokumentensammlung
Neue und geänderte Dokumente werden in einem zusätzlichen inver*erten Index im Hauptspeicher indexiert
Gelöschte Dokumente werden in einer Liste vermerkt
Während der Anfragebearbeitung werden für jeden Anfrageterm die Indexlisten aus Haupt-­‐ und Delta-­‐Index verschmolzen und dabei gelöschte Dokumente ausgefiltert
Konsolidierung des Haupt-­‐Index durch “Einschmelzen” des Delta-­‐Index in regelmäßigen Abständen oder nach Bedarf
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
52
Delta-­‐Index
car d2 d12 d27
insurance d1 d22 d37
Informa*on Retrieval (SS 2011)
+ d42 : automobile insurance prices
-­‐ d1
4. Implemen*erung von IR-­‐Systemen
53
Delta-­‐Index
car d2 d12 d27
insurance d1 d22 d37
+ d42 : automobile insurance prices
-­‐ d1
car d2 d12 d27
automobile d42
insurance d1 d22 d37
insurance d42
DELETIONS d1
prices d42
Haupt-­‐Index
Informa*on Retrieval (SS 2011)
Delta-­‐Index
4. Implemen*erung von IR-­‐Systemen
53
Delta-­‐Index
car d2 d12 d27
insurance d1 d22 d37
+ d42 : automobile insurance prices
-­‐ d1
car d2 d12 d27
automobile d42
insurance d1 d22 d37
insurance d42
DELETIONS d1
prices d42
Haupt-­‐Index
Delta-­‐Index
insurance d1 d22 d37 d42
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
53
Delta-­‐Index
✦
Beim bisherigen Ansatz werden Haupt-­‐ und Delta-­‐Index bis zu T/n mal miteinander verschmolzen bei Kapazität des Delta-­‐
Index von n und Gesamtzahl T von Indexeinträgen
✦
Jedes Verschmelzen liest und schreibt bis zu T Indexeinträge
✦
Zeitkomplexität zum Au€au des inver*erten Index damit in
O( T 2 /n)
✦
Wie kann man verhindern, dass Indexeinträge bei jedem Verschmelzen gelesen und geschrieben werden?
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
54
Logarithmisches Verschmelzen
Logarithmisches Verschmelzen verwaltet Indexe I0 , I1 , …
✦
✦
✦
✦
✦
✦
✦
Index I0 hat Platz für n Indexeinträge und liegt im Hauptspeicher
Index Ii hat Platz für 2 i x n Indexeinträge
Index Ii wird bei Überlauf mit Index Ii+1 verschmolzen
Für T Indexeinträge entstehen somit
bis zu log2 T/n Indexe Ii I0
Beim Verschmelzen wird jeder Indexeintrag bis zu log2 T/n mal gelesen und geschrieben
I1
I2
I3
…
Zeitkomplexität zum Au€au der inver*erten
Indexe ist damit in O( T log2 T/n)
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
55
Logarithmisches Verschmelzen
✦
✦
✦
Logarithmisches Verschmelzen ist ein effizienter Ansatz zur dynamischen Indexierung, der auch in der Praxis (z.B. in Apache Lucene) zum Einsatz kommt
Ein Nachteil des logarithmischen Verschmelzens ist, dass zur Anfragebearbeitung für jeden Anfrageterm bis zu log2 T/n Indexlisten betrachtet werden müssen
Die Idee hinter logarithmischen Verschmelzen findet sich auch in anderen log-­‐strukturierten Daten-­‐ und Indexstrukturen z.B. Binomial Heap, LSM-­‐Tree und LHAM
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
56
4.8 Verteilte IR-­‐Systeme
Verwendung eines Clusters mehrerer Rechner z.B. sinnvoll
✦
✦
✦
✦
✦
✦
für große Dokumentenkollek/onen (z.B. World Wide Web)
um die Zeit zum Au~au des inver/erten Index zu reduzieren
bei hoher Anfragelast (z.B. Suche in populärer Website)
Welche Möglichkeiten gibt es, einen inver*erten Index verteilt auf mehreren Rechnern abzulegen?
Wie kann man mehrere Rechner dazu verwenden, einen inver*erten Index schneller aufzubauen?
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
57
Cluster
Cluster von m ähnlich ausgestafeten Rechnern aus, die miteinander über ein schnelles Netzwerk verbunden sind
✦
Man unterscheidet folgende Arten von Rechner-­‐Knoten
✦
✦
Master – verteilt und koordiniert Aufgaben
✦
Slaves – führt vom Master zugeteilte Aufgaben aus
Andere Arten von Verbünden mehrerer Rechner sind z.B.
✦
✦
✦
Grid – loser jedoch koordinierter Zusammenschluss mehrerer heterogener geographisch verteilter Rechner
Peer-­‐to-­‐Peer – loser unkoordinierter Zusammenschluss mehrerer heterogener, geographisch verteilter gleichberech*gter Rechner
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
58
Verteilter Inver*erter Index
car
auto
insurance
has
d1
10
2
10
1
d2
2
0
0
2
d3
5
0
5
2
d4
2
0
0
1
d5
0
5
5
1
Inver*erter Index kann entlang zwei Dimensionen par//oniert und auf mehrere Rechner-­‐Knoten verteilt werden
✦
✦
✦
Term-­‐par//onierter inver/erter Index – jeder Rechner-­‐Knoten speichert inver*erten Index für eine Teilmenge der Terme
Dokument-­‐par//onierter inver/erter Index – jeder Rechner-­‐
Knoten speichert inver*erten Index für Teilmenge der Dokumente
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
59
Verteilter Inver*erter Index
car
auto
insurance
has
d1
10
2
10
1
d2
2
0
0
2
d3
5
0
5
2
d4
2
0
0
1
d5
0
5
5
1
Inver*erter Index kann entlang zwei Dimensionen par//oniert und auf mehrere Rechner-­‐Knoten verteilt werden
✦
✦
✦
Term-­‐par//onierter inver/erter Index – jeder Rechner-­‐Knoten speichert inver*erten Index für eine Teilmenge der Terme
Dokument-­‐par//onierter inver/erter Index – jeder Rechner-­‐
Knoten speichert inver*erten Index für Teilmenge der Dokumente
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
59
Verteilter Inver*erter Index
car
auto
insurance
has
d1
10
2
10
1
d2
2
0
0
2
d3
5
0
5
2
d4
2
0
0
1
d5
0
5
5
1
Inver*erter Index kann entlang zwei Dimensionen par//oniert und auf mehrere Rechner-­‐Knoten verteilt werden
✦
✦
✦
Term-­‐par//onierter inver/erter Index – jeder Rechner-­‐Knoten speichert inver*erten Index für eine Teilmenge der Terme
Dokument-­‐par//onierter inver/erter Index – jeder Rechner-­‐
Knoten speichert inver*erten Index für Teilmenge der Dokumente
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
59
Term-­‐Par**onierter Inver*erter Index
Slaves halten inver*erte Indexe für Teilmengen von Termen
✦
Master bearbeitet Anfragen, indem er für jeden der Anfrageterme die Indexliste vom zuständigen Slave anfordert
✦
Vorteil:
✦
✦
Master kommuniziert zur Anfragebearbeitung mit wenigen Slaves
Nachteil:
✦
✦
fällt ein Slave aus, so können Anfragen nicht mehr bearbeitet werden, wenn sie Terme dieses Slaves beinhalten
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
60
Dokument-­‐Par**onierter Inver*erter Index
Slaves halten inver*erten Index für Teilmenge der Dokumente
✦
Anfrage wird von allen Slaves bearbeitet und deren lokale Ergebnisse vom Master in ein globales Ergebnis kombiniert
✦
Vorteil:
✦
✦
fällt ein Slave aus, so können weiterhin alle Anfragen bearbeitet werden, es fehlen lediglich einige Ergebnisse
Nachteil:
✦
✦
Master kommuniziert zur Anfragebearbeitung mit allen Slaves
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
61
Verteilte Indexierung
Indexierung einer Dokumentensammlung ist parallelisierbar
✦
✦
✦
✦
Einlesen und Tokenisieren verschiedener Dokumente ist unabhängig voneinander – kann somit ohne Probleme parallel auf verschiedenen Rechnern sta•inden
Sor/eren der Wortvorkommen verschiedener Terme ist unabhängig voneinander – kann somit ohne Probleme parallel auf verschiedenen Rechnern sta•inden
MapReduce ist ein von Google entwickelter Ansatz zur parallelen Verarbeitung sehr großer Datenmengen
auf einem Cluster gewöhnlicher (commodity) Rechner
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
62
MapReduce als System
MapReduce unterscheidet zwei Arten von Rechner-­‐Knoten
✦
✦
✦
✦
✦
Master (JobTracker) koordiniert Bearbeitung eines Jobs
✦
Slaves (TaskTracker) führen Teilberechnungen (tasks) durch
MapReduce verwendet ein verteiltes Dateisystem, welches Dateien in großen Blöcken (> 64 MB) speichert und Replikas dieser Blöcke auf mehreren Rechner-­‐Knoten (> 2) speichert
Stärke von MapReduce ist seine Toleranz für Rechner-­‐Ausfälle, da der Master fehlende Teilberechnungen erneut starten kann Apache Hadoop ist eine verbreitete Open-­‐Source Implemen*erung des verteilten Dateisystems und MapReduce Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
63
MapReduce zur Problemlösung
MapReduce erzwingt Problemlösung mifels zwei Funk/onen, die aus der funk*onalen Programmierung entliehen sind:
✦
✦
map() erhält Eingabe und gibt eine Menge von Schlüssel-­‐Wert-­‐Paaren < K1 , V1 > aus ✦
reduce() erhält als Eingabe Schlüssel-­‐Wertliste-­‐Paare < K1 , List<V1> > in Reihenfolge des Schlüssels K1 und gibt Schlüssel-­‐Wert-­‐Paare < K2 , V2 > aus ✦
Zwischen map() und reduce() findet im Verborgenen eine Gruppierung und Sor/erung (shuffle) der Schlüssel-­‐Wert-­‐
Paare < K1, V1 > anhand des Schlüssels K1 stan
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
64
WordCount in MapReduce
✦
Problem: Berechne für jeden Term t seine Häufigkeit cft in der Dokumentensammlung, verwende hierzu m Rechner
map( document d )
foreach term t in document d
emit < t, d >
+-/"
'()"*+,-."
/012$"314"
5+&67"
18)0"'()"
9:;<"=1>"
+0/"
'()"*+,-."
/012$"
=1>"5+&67"
18)0"'()"
9:;<"314"
!"#$
!"#"
!"$"
Informa*on Retrieval (SS 2011)
reduce( term t, list of integers l )
emit < t, l.length() >
%&'()$
?'()@"=#A"?*+,-.@"=#A""
?/012$@"=#A"B"
?'()@"=CA"?*+,-.@"=CA""
?/012$@"=CA"B"
*)+',)$
-$
-$
.$
-$
-$
.$
.$
.$
4. Implemen*erung von IR-­‐Systemen
314"D"E=#@"=CF"
*+,-."D"E=#@"=CF"B"
/012$"D"E=#@"=CF"
=1>"D"E=#@"=CF"B"
%"#"
%"&"
1'2-/"
314"D"C"
*+,-."D"C"
B"
"
"
1'20/"
/012$"D"C"
=1>"D"C"
B"
"
"
65
Indexierung in MapReduce
✦
Problem: Erstelle inver*erten Index, der für jeden Term t eine dokument-­‐sor*erte Indexliste mit Term-­‐Häufigkeiten enthält. Verwende hier zu m Rechner
map( document d )
foreach term t in document d
emit < t, < d, tft,d >>
reduce( term t, list of document-frequency pairs l )
L ← new IndexList()
l.sortByDocumentIdentifier()
foreach document-frequency pair < d, tft,d > in l
L.add(new Posting( d, tft,d ))
emit < t, L >
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
66
MapReduce Skalierbarkeit
✦
✦
✦
MapReduce bietet einen Rahmen, um Probleme parallel auf einer sehr großen Zahl von Rechner bearbeiten zu können
Im Idealfall erreicht man hierbei lineare Skalierbarkeit, d.h. eine Verdopplung der Zahl von Rechnern führt zu einer Halbierung der benö/gten Zeit zur Lösung des Problems
Für Probleme mit einfacher Struktur (z.B. WordCount und Indexierung) erreicht man diese lineare Skalierung (linear scale-­‐out) in der Praxis
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
67
Zusammenfassung
✦
Inver/erter Index als wich*ge Indexstruktur im IR
✦
External Memory Sort als Schlüssel zur effizienten Indexierung
✦
Anfragebearbeitung auf dokument-­‐sor*erten Indexlisten (TAAT + DAAT) und wert-­‐sor*erten Indexlisten (NRA)
✦
Kompression von Indexlisten wich*g für kurze Antwortzeiten
✦
Dynamische Indexierung mit logarithmischem Verschmelzen
✦
Verteile IR-­‐Systeme auf Clustern mehrerer Rechner zur schnelleren Indexierung und Anfragebearbeitung
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
68
Quellen & Literatur
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] R. Baeza-­‐Yates and B. Ribeiro-­‐Neto: Modern Informa4on Retrieval,
Addison-­‐Wesley, 2011
R. Baeza-­‐Yates, A. Gionis, F. Junqueira, V. Murdock, V. Plachouras, F. Silvestri: The Impact of Caching on Search Engines, SIGIR 2007.
S. Büncher, C. L. A. Clake and G. V. Cormack: Informa4on Retrieval,
MIT Press, 2010.
T. H. Cormen, C. Stein, C. E. Leiserson and R. L. Rivest: Introduc4on to Algorithms
B & T, 2001.
W. B. Croq, D. Metzler and T. Strohman: Search Engines
Addison-­‐Wesley, 2010. (Kapitel 5)
R. Fagin, A. Lotem and M. Naor: Op4mal Aggrega4on Algorithms for Middleware,
Journal of Computer and System Sciences 66(4), 2003.
C. D. Manning, P. Raghavan and H. Schütze: IntroducVon to InformaVon Retrieval, Cambridge University Press, 2008. (Kapitel 4 + 5 + 6 + 7)
N. Ntoulas, J. Cho and C. Olston: What’s new on the Web: The Evolu4on of the Web from a Search Engine Perspec4ve, WWW 2004
I. H. Winen, A. Moffat and T. C. Bell: Managing Gigabytes,
Morgan Kaufmann Publishing, 1999.
J. Zobel and A. Moffat: Inverted Files for Text Search Engines,
ACM Compu*ng Surveys 38(2), 2006.
Informa*on Retrieval (SS 2011)
4. Implemen*erung von IR-­‐Systemen
69

Documentos relacionados