Database Reference
In-Depth Information
Die Funktion sim ist ein domänen- und typspezifisches Ähnlichkeitsmaß für ein
einzelnes Attribut. In den folgenden Unterkapiteln werden solche Ähnlichkeits-
maße beschrieben.
2.4.1 Edit-basierte Ähnlichkeitsmaße
Edit-basierte Ähnlichkeitsmaße vergleichen zwei Zeichenketten buchstabenwei-
se. Je mehr Buchstaben übereinstimmen, desto ähnlicher sind sich die Zeichen-
ketten. Ein weit verbreitetes Edit-basiertes Ähnlichkeitsmaß ist die Levenshtein-
Distanz 27 bzw. Edit-Distanz. Sie ist definiert als die minimale Anzahl von Edit-
Operationen, um eine Zeichenkette in eine andere Zeichenkette zu transformieren.
Edit-Operationen sind Einfügen, Löschen und Ersetzen eines Buchstabens.
Zur Berechnung der Levenshtein-Distanz existieren verschiedene Algorithmen.
Der in diesem Kapitel vorgestellte Algorithmus basiert auf der dynamischen Pro-
grammierung 28 . Gegeben sind zwei Zeichenketten x und y , für die die Edit-Distanz
ed
gesucht wird. Es wird eine Matrix C 0 ..| x |, 0 ..| y | erzeugt, wobei C i , j die mi-
nimale Anzahl an Edit-Operationen darstellt, um x 1 .. i in y 1 .. j zu konvertieren 29 .
Die Werte der Matrix können mit einer Rekursionsgleichung 30 formuliert werden:
C i , 0 =
(
x
,
y
)
i
C 0 , j =
j
,
=
[
C i 1 , j +
,
Ci
j
min
1
C i , j 1 +
,
C i 1 , j 1 +
1
d
(
x i ,
y j )]
mit
d
(
x i ,
y j )=
0
wenn x i =
y j
=
1
ansonsten
j bezeichnen
die Edit-Distanz zwischen einer Zeichenkette der Länge i bzw. j und einer leeren
Zeichenkette. In diesem Fall werden für die Konvertierung i bzw. j Löschoperatio-
nen benötigt 31 . Für zwei nicht leere Zeichenketten der Länge i , j betrachtet man
die letzten Buchstaben x i und y j . Gilt x i =
Für die Edit-Distanz gilt dann ed
(
x
,
y
)=
C | x |,| y | . C i , 0 =
i und C 0 , j =
y j , so ist keine Edit-Operation für den
letzten Buchstaben notwendig und die Edit-Distanz entspricht derjenigen für die
27 vgl. [20]
28 vgl. hierzu und zum Folgenden [35] S. 171 f.
29 x 1 .. i ist ein Präfix der Länge i von der Zeichenkette x . Analog ist y 1 .. j ist ein Präfix der Länge j von
der Zeichenkette y .
30 vgl. hierzu und zum Folgenden [25], S. 43 f.
31 Aus Sicht der leeren Zeichenkette können auch i , j Einfüge-Operationen verwendet werden.
Search WWH ::




Custom Search