16.12.2012 Aufrufe

Zusammenfassung - Otto-von-Guericke-Universität Magdeburg

Zusammenfassung - Otto-von-Guericke-Universität Magdeburg

Zusammenfassung - Otto-von-Guericke-Universität Magdeburg

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!