540 likes | 720 Views
New Indices for Text: PAT Trees and PAT Arrays Ruprecht - Karls - Universität Heidelberg Lehrstuhl für Computerlinguistik HS Information Retrieval Dozentin: Dr. Karin Haenelt Referenten: Maria Tzolova, Fatih Ekrem Genc 13.01.2003.
E N D
New Indices for Text:PAT Trees and PAT ArraysRuprecht - Karls - Universität Heidelberg Lehrstuhl für Computerlinguistik HS Information Retrieval Dozentin: Dr. Karin HaeneltReferenten: Maria Tzolova, Fatih Ekrem Genc13.01.2003
Diese Arbeit orientiert sich an dem Aufsatz „New Indices for Text: PAT-Trees und PAT-Arrays“ von G. Gonnet, R. Baeza-Yates und T. Snider in „Information Retrieval: Data Structure and algorithms“. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Inhalt PAT – Tree – Einführung PAT – Tree - Definition PATRICIA Tree Semi-infinite Strings PAT- Tree Suchalgorithmen auf PAT-Trees Erstellen von PAT Trees als PATRICIA Trees - Bucketing - Supenodes PAT Array Operationen mit PAT-Array - Verbinden kleiner mit großen Arrays - Verbinden größeren Dateien Literatur Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-TREE - Einführung EinPAT-Tree ist eine Datenstruktur zur effizienten Datenspeicherung und Textsuche in großen Dokumentkollektionen. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Tree – Definition Ein PAT-Tree ist • ein Patricia Tree (Practical Algorithm To Retrieve Information Coded In Alphanumeric) • über allen Sistrings eines Textes. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PATRICIA Tree Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PATRICIA Tree Patricia trees are a practical and efficient solution for handling variable length or very long keys; they are particulary well suited for text searching. Note that the problem generated by verylong common prefixes virtually disappears for Patricia trees. (G.Gonnet,R.Baeza-Yates 1991) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PATRICIA-Tree • Ein PATRICIA-Tree ist ein binärer Digitalbaum, in dem die Verzweigung der Knoten von den Bits der Schlüssel bestimmt wird(bei 0 nach links, bei 1 nach rechts ). • Ein binärer Digitalbaum ist ein Baum, in dem die Knoten höchstens zwei Nachfolger haben. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PATRICIA Tree vs. Binär Baum In einem PATRICIA Tree: • werden die internen Knoten, die nur einen Nachfolger haben, eliminiert und damit wird weniger Speicherplatz gebraucht. • enthalten nur die externen Knoten Schlüsselwerte. • haben die internen Knoten einen Index, der die Position des Bits angibt, das zum Verzweigen benutzt wird. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Binär Baum -Beispiel 0 1 1 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 2 2 0 0 1 1 3 3 3 2 0 1 0 1 10 7 4 5 1 4 1 10 0 5 3 0 6 1 Knoten mit nur einem Nachfolger 4 8 - externer Knoten - interner Knoten Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PATRICIA-Tree-Beispiel 0 1 1 Bit 1 Bit 2 Bit 3 und 4 Bit 5 2 2 0 1 00 1 3 3 4 2 0 10 0 1 0 1 7 5 5 1 6 3 0 1 Hier wurden die Knoten mit nur einem Nachfolger eliminiert 4 8 • interner Knoten - externer Knoten (G.Gonnet,R.Baeza-Yates, T.Snider 1992) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Sistring Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
semi – infinite Strings (Sistrings) • Ein Text wird als ein einziger String als Array von Zeichen dargestellt. • Ein semi – infiniter String ist eine Folge von Zeichen dieses Strings (Text), • er beginnt an einer bestimmten Position und • dehnt sich unbegrenzt weit nach rechts aus(längstens bis zum Textende) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Semi-infinite Strings- Beispiel Text: Position: Ein kleiner Text....... 1234...8910....16...... Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
semi-infinite Strings-Beispiel • Sistring 1:Ein kleiner Text ... • Sistring 2:in kleiner Text ... • Sistring 3:n kleiner Text ... • Sistring 4:kleiner Text ... • Sistring 5:leiner Text ... • Sistring 10:er Text ... • Sistring 15:xt ... Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Semi – infinite Strings • Semi – infinite Strings kann man als abstrakte Datenstruktur bezeichnen • Die wichtigste Operation mit Sistrings ist der lexikographische Vergleich von Sistrings. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT - Tree Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Tree-Aufbau • Die Zeichen aller Zeichenketten des Textes werden als ein Baum gespeichert. • Dabei werden die Zeichenkette jeweils als Pfad von der Wurzel bis zu den externen Knoten gespeichert. • Die Wurzel entspricht dem ersten Zeichen,die Nachfolger dem zweiten Zeichen usw. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-TreeSuche nach „00101“ 0 0 10 1 in Binärdarstellung (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT - Tree • Für einen Text der Größe n hat der PAT - Tree n externeund n-1 interne Knoten. • Der PAT - Tree präsentiert den Text als einen einzigen String. • An jeder Position im String(Text) beginnt ein semi – infiniter String (Sistring). Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Suchalgorithmen 1. Präfix Suche 2. Nährungssuche 3. Bereichssuche 4. Häufigkeitssuche 5. Längste-Wiederholung-Suche 6. Suchen nach regulären Ausdrücken Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Präfix Suche • Bei Präfix Suche werden alle Sistrings, die ein gemeinsames Präfix haben, gesucht. • Man sucht nach einem Präfix, bis es gefunden ist oder ein externer Knoten erreicht wird. • Zeitbedarf: O(log n), n=Anzahl der externen Knoten. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Präfix Suche 0 0 10 0 1 Suche alle Wörter die mit „001“ beginnen. (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Nährungssuche • Es werden alle Positionen gesucht, bei denen ein String s1 eine bestimmte Anzahl von Zeichen von einem andern String s2entfernt ist. • Zeitbedarf: (m1 +m2)log m1 ,für m1 < m2 Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Nährungssuche 0 0 1 10 1 0 S1=01100,S2=00100,m=4 (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Bereichssuche • Gesucht werden alle Strings, die entsprechend der lexikographischen Ordnung zwischen zwei gegebenen Strings liegen. • Zeitbedarf: O(log n). Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Bereichssuche 0 0 1 Suche alles zwischen „00“ und „01“. (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Häufigkeitssuche • Gesucht wird der String,der am häufigsten vorkommt. • Bei der Suche nach dem häufigsten String der Länge n , wird der größten Teilbaum, der eine Distanz von n zur Wurzel aufweist, durch-sucht. • Zeitaufwand: O(n/a), a= durchschnittliche Antwortgröße Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Häufigkeitssuche 0 1 0 1 0 1 0 10 0 1 Bsp: Häufigster String von 2 Zeichen (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Längste-Wiederholung-Suche • Es wird nach dem längsten Sistring gesucht, der zweimal im Text vorkommt. • Bei einem PAT-Tree entspricht dies dem höchsten Unterbaum. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Längste-Wiederholung-Suche 0 0 10 Suche längste Wiederholung zwischen „1“ und „8“ (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Suchen nach regulären Ausdrücken • Der reguläre Ausdruck wird zuerst in einem minimalen deterministischen endlichen Automat umgewandelt. • Dieser Automat wird dann in einen binären Automat konvertiert, der der Binärcodierung des verwendeten Zeichensatzes entspricht. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Suchen nach regulären Ausdrücken • Der endliche Automat wird auf dem binären Baum simuliert. Die Wurzel entspricht dabei dem Startzustand des Automaten. • Bei jedem Knoten, der einem Endzustand des Automaten entspricht wird dabei der gesamte darunter liegenden Teilbaum als Resultat ausgegeben. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Erstellen PAT-Trees als Patricia Bäume • PAT- Trees werden als Patricia Bäume implementiert. • Patricia Bäume haben zwei große Nachteile: • Hoher Speicherbedarf für Daten der inneren Knoten • Hohe Anzahl von Diskzugriffe bei großen Datensätze. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Erstellen PAT-Trees als Patricia Bäume • Diese Probleme werden gelöst durch : • Bucketing von externen Knoten • Das Einteilen des Baumes im Speicher in Superknoten (Supernodes) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Bucketing • Bucketing ist das Zusammenfassen von externen Knoten, um interne Knoten einzusparen. • Buckets von b externen Knoten sparen b-1 innere Knoten. • Bei der Suche in einem Bucket werden die externen Knoten, die im Bucket sind, einzeln durchsucht. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Bucketing • In den Buckets sind die externen Knoten unsortiert und das kann die Suchzeit verschlechtern. • Die Buckets haben einen Füllzustand von b N, aber wegen der Baumstruktur werden die Buckets nicht immer völlig gefüllt. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Bucketing (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Supernodes (Superknoten) • Supernodes bringen Vorteile im Zugriff und Platzbedarf. • Es wird so viel wie möglich vom Baum in die Plattensektoren eingeteilt, solange bis jeder Sektor einen bestimmten Eintragspunkt erreicht hat. • Ein Supernode hat die Größe eines Festplattensektors. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Supernodes (Superknoten) • Jeder Supernode endet entweder in einem externen Konten oder in einem Zeiger zu einem anderen Supernode. • Die Zeiger der internen Knoten zeigen entweder auf einen anderen Supernode oder auf einen Knoten in dem selben Supernode und so werden die Speicherungskosten reduziert. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Supernodes (Superknoten) (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Tree als PAT-Array • Für große Datenmengen passt der PAT-Tree nicht in dem Hauptspeicher, deshalb werden PAT-Arrays entwickelt, die weniger Speicherplatz brauchen. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Array PAT arrays are an efficient implementation of PAT trees, and support a query language more pauerfull than do traditional structures based on keywords and Boolean operations. (G.Gonnet, R.Baeza-Yates,T.Snider, 1992) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Array • PAT-Array enthält Pointer auf Sistrings • Speicherbedarf - nur ein Speicherwort pro Sistring. • Es wird Binärsuche durchgeführt. • Suchzeit: O(log2n) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Array • PAT-Arrays werden bei der Bildung von großen Indizes verwendet. • In einem PAT-Array sind die externen Knoten innerhalb eines Buckets sortiert. • PAT-Arrays sind aber völlig unsortiert, was die Position der Sistrings innerhalb des Textes betrifft und das führt zu viele Festplattenzugriffen. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT-Array (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
PAT - Array (S.Olk, PAT-Trees/PAT-Arrays, 1997/98) Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Operationen mit PAT-Array - Verbinden kleiner mit großen Arrys - Verbinden großer Dateien Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Verbinden kleiner mit großen Arrays • Es werden ein kleiner und ein großer Text mit ihren zugehörigen Pat-Arrays vorausgesetzt. • Der kleine Text, sein Pat-Array und ein Zählarray sind in dem Hauptspeicher gespeichert. • Sequentielles Einlesen des großen Textes. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees
Verbinden kleiner mit großen Arrays • Das Zählarray speichert, wie viele Sistrings des großen Textes zwischen Indexpaare des kleinen Textes gehören. • Für jeden Sistrings des großen Textes wird geprüft, zwischen welches Indexpaar des kleinen Textes er einsortiert werden muß. • Die Verbindung der Arrays findet anhand der Werte des Zählarrays statt. Maria Tzolova, Fatih Ekrem Genc, PAT-Trees