Zusammenfassung - Otto-von-Guericke-Universität Magdeburg
Zusammenfassung - Otto-von-Guericke-Universität Magdeburg
Zusammenfassung - Otto-von-Guericke-Universität Magdeburg
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
6 Suche mit Fehlern<br />
Buchstaben durch andere (»Alphsbet«). Lowrance und Wagner kombinierten diese Beobachtung<br />
mit dem <strong>von</strong> Levenshtein in [Lev66] eingeführten Editierabstand zur so genannten<br />
Damerau-Levenshtein-Distanz [LW75]. Neben den Operationen Einfügen, Löschen und Ersetzen<br />
wird also zusätzlich das Vertauschen <strong>von</strong> benachbarten Zeichen berücksichtigt. Die<br />
Bestimmung der Damerau-Levenshtein-Distanz kann auf ähnliche Weise erfolgen wie die des<br />
klassischen Editierabstandes (siehe Gleichungen 6.2 bis 6.6). Hierfür wird eine Distanzmatrix<br />
DT der Größe (m + 1) × (n + 1) bestimmt, mit m = |r| und n = |s|, für die gilt [Hyy01]:<br />
⎧<br />
i falls j = 0,<br />
⎪⎨ j falls i = 0,<br />
DTi, j = DTi−1, j−1<br />
falls ri = s j,<br />
⎪⎩<br />
min � �<br />
DTi−2, j−2,DTi−1, j,DTi, j−1 + 1 falls (i, j > 1) ∧ (ri−1...i R = s j−1... j),<br />
min � �<br />
DTi−1, j−1,DTi−1, j,DTi, j−1 + 1 sonst.<br />
(6.13)<br />
Der Ausdruck ri−1...i R steht für die Umkehrung der Teilzeichenkette ri−1...i. Es gilt also<br />
(ri−1...i R = s j−1... j) ⇔ (ri−1 = s j ∧ ri = s j−1). Die Damerau-Levenshtein-Distanz distanceDL<br />
zweier Zeichenketten r und s ergibt sich durch distanceDL(r,s) = DTm,n.<br />
Die Damerau-Levenshtein-Distanz ist keine Distanzfunktion im engeren Sinne, da die Dreiecksungleichung<br />
nicht erfüllt ist. Dies kann an einem einfachen Beispiel gezeigt werden<br />
[Boi01]: die Damerau-Levenshtein-Distanz der Zeichenketten »no« und »on« beträgt offensichtlich<br />
eins, ebenso wie die zwischen »on« und »orn«; der Abstand zwischen »no« und<br />
»orn« ist jedoch drei.<br />
6.2 Approximative Stringsuche mittels dynamischer<br />
Programmierung<br />
Wie bereits erwähnt, wird die Suche nach Worten, nach Gruppen oder Teilen <strong>von</strong> Worten<br />
oder nach Symbolen in handschriftlichen Dokumenten dadurch realisiert, dass sowohl aus<br />
den Sucheingaben als auch aus den zu durchsuchenden Dokumenten Merkmale in Form <strong>von</strong><br />
Sequenzen extrahiert (siehe Kapitel 5) und anschließend die Merkmalssequenzen der Dokumente<br />
durchsucht werden nach solchen Teilsequenzen (engl. subsequence oder substring), die<br />
mindestens eine festgelegte Ähnlichkeit oder, mit anderen Worten, höchstens eine festgelegte<br />
Distanz zur Merkmalssequenz der Sucheingabe haben; dies wird auch als Suche mit Fehlern<br />
(engl. fuzzy string searching) bezeichnet.<br />
Der naive Ansatz für diese Suche mit Fehlern wäre es, für jede Teilsequenz der Merkmalssequenzen<br />
der Dokumente die Ähnlichkeit zur Merkmalssequenz der Sucheingabe zu<br />
bestimmen. Da eine Sequenz der Länge l jedoch ∑ l i=1 i = l·(l+1) /2 <strong>von</strong>einander verschiedene<br />
Teilsequenzen hat und die Bestimmung der Ähnlichkeit zweier Sequenzen, etwa mittels des<br />
Editierabstandes, eine quadratische Zeitkomplexität aufweist, ist sehr schnell einsichtig, dass<br />
dieser Ansatz nicht praktikabel ist.<br />
Um das Problem des naiven Ansatzes zu umgehen ist ein anderes Vorgehen nötig. Die<br />
einfachste Möglichkeit hierfür besteht darin, die Gleichungen 6.2 bis 6.6 zur Bestimmung des<br />
Editierabstandes wie folgt zu ändern [Sel80]:<br />
76