39
10.01.2008 PG 520 - L-Tree - Martin Böhm er 1 Der Lexical Tree und Der Lexical Tree und seine Freunde seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

Embed Size (px)

Citation preview

Page 1: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 1

Der Lexical Tree und Der Lexical Tree und seine Freundeseine Freunde

Ein Crashkurs zur Erstellung eines großen Wort-Indexes

Page 2: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 2

AgendaAgenda

• Lexical Tree– Grundlagen und Datenstruktur– Implementierung– Experiment Bundestagsprotokolle– Speicherplatz-Problematik

• Inverted Files– Prinzip– im Lexical Tree

• Fazit

Page 3: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 3

Lexical TreeLexical TreeGrundlagen und Grundlagen und DatenstrukturDatenstruktur

Page 4: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 4

Der Lexical TreeDer Lexical Tree

• auch kurz „L-Tree“ genannt• Datenstruktur zur Indexierung• Vorteile:

– sehr kompakte Datenhaltung– eignet sich auch für große Datenmengen

• Anwendungen:– Spracherkennung (Indexierung von

Lauten)– Wörterbuch-Index (Dokumente finden)

Page 5: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 5

Die Datenstruktur:Die Datenstruktur:IdeeIdee

„Das was aus Bestandteilen so zusammengesetzt ist, dass es ein einheitliches Ganzes bildet, nicht nach Art eines Haufens, sondern wie eine Silbe, das ist offenbar mehr als bloß die Summe seiner Bestandteile.“ - Aristoteles

Page 6: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 6

Die Datenstruktur:Die Datenstruktur:IdeeIdee

• Zerlege Daten, so dass– ihre Gemeinsamkeiten nur einmal

gespeichert werden– sich die Teile zu einem Ganzes

zusammenfügen

• Das ist mehr als die Summe der Bestandteile!– Speicherplatz sparen: weniger ist mehr– Zusatzinformationen verwalten

Page 7: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 7

Die Datenstruktur:Die Datenstruktur:Von Bäumen, Knoten und Von Bäumen, Knoten und

Kindern…Kindern…• L-Tree ist eine Baum-Datenstruktum

(engl. „tree“ = Baum)

• Baum T = (V, E)– Kontenmenge V mit |V| = n– Kanten E = { (vi, vj) | vi, vj € V} mit |E| = m– T ist zusammenhängend und es gilt: m = n - 1

• Pfad P = {v1, …, vk € V |(vi, vi+1) € E für alle i = 1, …, k-1}Länge des Pfads: k

• Tiefes eines Baum: Längster Pfad von Wurzel zu Blatt

Knoten

Kinder

Elter

Wurzel(-knoten)

Page 8: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 8

Die Datenstruktur:Die Datenstruktur:L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-

IndexIndex• Menge von Dokumenten D, bestehend aus

Wörtern• Speichere Wort w = b1, …, bn (Buchstaben):

– Ein Konten v speichert bifür i = n speichere Dokumente in denen w vorkommt

– Elter von v speichert bi-1

– Ein Kind von v speichert bi+1

• Maximale Anzahl an Kindern:59 (A-Z, a-z, Ää, Öö, Üü, ß)

• Tiefe des L-Tree:Längstes Wort {d € D | b1…bn € d}

b1

bn

Page 9: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 9

d1d1, d2d2

d2

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

Ein BeispielEin Beispiel

d1: Grottenolme sind Lurche.d2: Lurche singen laut lachend

in der Grotte.

-

d

e

r

d2

c

h

e

n

d

d1

G

r

o

t

t

e

n

o

l

m

e

d2

i

n

L

u

r

c

h

e

d2

l

a

u

td1

i

s

n

d

d2

g

e

n

Page 10: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 10

Lexical TreeLexical TreeImplementierungImplementierung

Page 11: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 11

KlassenKlassenÜberblickÜberblick

• LexcialTreeImplemntierung des L-Tree

• LexcialTreeNodeImplentierung eines Baumknoten

• LexicalTreeBuilderAufbau oder Laden des L-Trees aus Datei

• FileSpider / WordSplitterFastDatei-Enumerator / Wort-Enumerator

Page 12: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 12

KlassenKlassenJava Datentypen in Java Datentypen in LexicalTreeNodeLexicalTreeNode

{d € D | b1…bn € d}

b1

bn

charHashmap<character, LexicalTreeNode>

Hashmap<<docIdType>, Integer>

Page 13: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 13

Nutzung des L-TreeNutzung des L-TreeErstellungErstellung

• Nutze Klasse LexicalTreeBuilder• Aufbau des L-Tree

LexicalTree<String> ltree = LexicalTreeBuilder.buildLTree(<docPath>, <stopwordfile>);ltree.saveToFile("ltree_full.dat");

• Laden des L-TreeLexicalTree<String> ltree = LexicalTreeBuilder.loadFromFile("ltree.dat");

Page 14: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 14

Nutzung des L-TreeNutzung des L-TreeWichtige AbfragenWichtige Abfragen

• Ist das Wort „Grottenolm“ im L-Tree?– Aufruf: ltree.containsWord("Grottenolm")– Rückgabe: boolean

• Welche Dokumente enthalten „Grottenolm“?– Aufruf: ltree.getDocumentIds("Grottenolm")– Rückgabe: Set<String>

• Welche Dokumente enthalten „Grottenolm“ und wie oft kommt das Wort dort vor?– Aufruf: ltree.getDocumentIds("Grottenolm")– Rückgabe: Hashmap<String,Integer>

Page 15: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 15

Fragen zur Fragen zur Implementation?Implementation?Zur Benutzung?Zur Benutzung?

Sourcecode zeigen?Generische Typen genauer

erklären?

Page 16: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 16

Lexical TreeLexical TreeExperiment Experiment

BundestagsprotokolleBundestagsprotokolle

Page 17: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 17

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

ExperimentExperiment• L-Tree Aufbau mit

Bundestagsprotokollen (BTP) der Wahlperioden 13 - 16

• Anzahl Dokumente: 50.363• Anzahl Wörter im L-Tree: ca.

470.000• Längstes Wort: 67

Buchstaben

Page 18: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 18

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

Wörter Anzahl (BTP)Wörter Anzahl (BTP)

Page 19: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 19

BTP - Das QuizBTP - Das QuizRunde 1Runde 1

• 37-Zeichen Frage:Was wird im Bundestag durchgeführt, wenn sich mal wieder keine Einigung findet?

Konsensfindungserleichterungs-maßnahme

Page 20: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 20

BTP - Das QuizBTP - Das QuizRunde 2Runde 2

• 51-Zeichen Frage:Wie lautet das komplizierteste Adjektiv?Tipp: Es geht um Geld…

arbeitgeberbeitragsfondssteuer-ergänzungsfinanzierte

Page 21: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 21

Lexical TreeLexical TreeSpeicherplatzproblematSpeicherplatzproblemat

ikik

Page 22: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 22

Heap-Size der JVM Heap-Size der JVM erhöhenerhöhen

-Xmx1600m -Xms1600m

Xmx = maximale Größe, Xms = Startgröße, 1600m = 1600 MB

Page 23: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 23

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

Speicherplatz (BTP)Speicherplatz (BTP)• Zur Verfügung: 1600 MB Arbeitsspeicher• Testlauf 1:

– L-Tree, wie vorgestellt– Speicher nach 25.000 Dokumenten voll

(Abbruch)• Testlauf 2: (Dauer 15min)

– L-Tree ohne Dokument-Listen– L-Tree Dateigröße: 150 MB

Dokumentenliste muss besser organisiert

werden

Page 24: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 24

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

SpeicherplatzredukltionSpeicherplatzredukltionWas tun?• Unterscheidung zwischen Groß- und

Kleinschreibung aufheben Informationsverlust

• Stemming: Wörter auf ihren Wortstamm reduzieren Informationsverlust

• Wörter ausschließen– Wörter die in allen Dokumenten vorkommen– Stopwörter: Wörter, die keine Information

tragenz.B. der/die/das/dieser/dieses/

• Dokumentenlisten auslagern

Page 25: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 25

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

Wörter reduzierenWörter reduzierenWort Abs. H. Rel. H. Wort Abs. H. Rel. H.Bundestag 50278 99,8% zu 48687 96,7%Deutscher 50278 99,8% ist 48467 96,2%den 49551 98,4% für 48082 95,5%der 49389 98,1% das 47972 95,3%von 49384 98,1% des 47615 94,5%und 49188 97,7% auf 47516 94,3%die 49169 97,6% nicht 47357 94,0%in 48760 96,8% Summe 731693 2,8%

Häufigkeit des Vorkommens eines Wortesin den 50.363 BTP Dokumenten

Page 26: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 26

L-Tree als Wort-Dokument-L-Tree als Wort-Dokument-Index:Index:

Wörter reduzierenWörter reduzieren• Maßnahmen

– offensichliche Stopwörter:der, die , das, dass, dieses, diese, einer, vor

– Analyse Worthäufigkeit:Deutscher, Bundestag, haben, werden, sind, Sie, deshalb, …

• Ergebnis:– insgesamt 250 Stopwörter– Ersparnis von ca. 22% der Dokumentenverweise– L-Tree Datei-Größe: 350 MB!– Erstellungsdauer: 40min, Ladedauer: 10min Geht das mit Auslagerung noch besser?

Page 27: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 27

BTP - Das QuizBTP - Das QuizRunde 3Runde 3

• 56-Zeichen Frage:Ich würde gerne 100km Autobahn bauen! Wie finde ich heraus, ob sich die Bedingungen dazu zu meinem Nachteil ändern können?

Fernstraßenbauprivatfinanzierungs-gesetzesänderungsgesetz

Page 28: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 28

Inverted Files zur Inverted Files zur AuslagerungAuslagerung

Page 29: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 29

Dokumentenlisten Dokumentenlisten auslagernauslagern

• Wir haben gesehen:– Wortmenge nach oben beschränkt– Dokumentenlisten bestimmen Platzbedarf

• Idee:– Lagere Teile oder alle Dokumentenlisten in Dateien

aus.– Erweiterung: Halte nur Listen für häufig abgefragte

Wörter im Speicher (statische Auswahl)– Erweiterung 2: Lernender Algorithmus, der mit

jeder Abfrage die Auswahl der gecachten Listen anpasst

Page 30: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 30

Inverted IndexInverted Index

• Situation: Suche nach einer Menge von Wörtern

• Forward Index– Zu jedem Dokument wird die Menge der

enthaltenen Wörter verwaltet– alle Dokumente müssen durchsucht werden

• Inverted Index (oder Inverted Files)– Zu jedem Wort wird die Menge der

Dokuemente, in denen es vorkommt, gespeichert

– Wörter sind sortiert (schnelle Suche)

Page 31: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 31

Inverted Files BeispielInverted Files Beispiel

Inverted File :der {1} Grottenolme {1, 3}Grotte {2}in {2}lachend {2}laut {2}Lurche {1, 2}nicht {3}sind {1}singen {2, 3}

d1: Grottenolme sind Lurche.d2: Lurche singen laut lachend

in der Grotte.d3: Grottenolme singen nicht.

Page 32: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 32

d1: <Häufigkeit von b1…bn in d1>

dm: <Häufigkeit von b1…bn in dm>

Inverted Files im L-TreeInverted Files im L-TreeVariante 1Variante 1

• Speichere für jedes Wort eine Textdatei mit seinen Dokumenten und Häufigkeiten

{d € D | b1…bn € d}

b1

bn

Nachteil: Für jedes Wort eine Datei

Page 33: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 33

Inverted Files im L-TreeInverted Files im L-TreeVariante 2Variante 2

• Seien if1, …, ifp Inverted Files• Jedes ifj verwaltet eine disjunkte

Teilmenge aller Wörter und deren Dokumente

• Hashfunktion– H: Wort → j, j = 1, …, p– ordnet einem bei der Erstellung des L-Tree

jedem Wort ein Inverted File zu

d1: <Dokumente zu d1>d5: <Dokumente zu d5>

d99: <Dokumente zu d99>

d1: <Dokumente zu d1>d5: <Dokumente zu d5>

d99: <Dokumente zu d99>

d1: <Dokumente zu d1>d5: <Dokumente zu d5>

d99: <Dokumente zu d99>

Page 34: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 34

Inverted Files im L-TreeInverted Files im L-TreeVariante 2Variante 2

• Vorteil:– wenige Dateien– Dateien können einzeln gecacht werden– Hashfunktion könnte Wörter nach

Relevanz ordnen, so dass alle häufig abgefragten Wörter in einem Inverted File im Cache liegen.

• Bis jetzt leider nicht beantwortet:– Wie viele Inverted Files sind optimal?– Wie lautet die Hashfunktion?

Page 35: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 35

FazitFazit

• L-Tree dient als sehr kompakter Index für große Dokumentensammlungen

• Speicherreduktion durch Stopwörter und häufigste Wörter

• Weitere Verbesserung durch die Auslagerung der Dokumentenlisten in Inverted Files

Page 36: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 36

BTP - Das QuizBTP - Das QuizRunde 4Runde 4

• 59-Zeichen Frage:Wer hilft mir eigentlich, wenn ich meine Krankenkasse in die Luft sprengen will?

Bundeskrankenversicherungs-explosionsbeschleunigungsmi

nister

Page 37: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 37

LiteraturverzeichnisLiteraturverzeichnis

• „Datenstrukturen und Datenbanken“, Schäfer 1989, Vieweg

• Wikipedia - „Inverted Index“http://en.wikipedia.org/wiki/Inverted_index

• „Indexierung für Suchmaschinen“, Vortrag von Emel Günal im Rahmen der PG520 am Lehrstuhl für Informatik 8, Universität Dortmund

Page 38: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 38

BTP - Das QuizBTP - Das QuizRunde 5Runde 5

• 67-Zeichen Frage:Wo wird geregelt, wie ich meinen Nachbarn für den 40-Tonner in meinem Garten verantwortlich machen kann?

Grundstücksverkehrsgenehmigungs-

zuständigkeitsübertragungsverordnung

Page 39: 10.01.2008PG 520 - L-Tree - Martin Böhmer1 Der Lexical Tree und seine Freunde Ein Crashkurs zur Erstellung eines großen Wort-Indexes

10.01.2008 PG 520 - L-Tree - Martin Böhmer 39

Vielen Dank für die Vielen Dank für die Aufmerksamkeit!Aufmerksamkeit!