# Soundex

Soundex ist ein phonetischer Algorithmus zur Indizierung von Wörtern und Phrasen nach ihrem Klang in der englischen Sprache. Gleichklingende Wörter (Homophone) und ähnlichklingende Wörter (Homöophone) sollen dabei zu einer identischen Zeichenfolge kodiert werden.
Der Soundex-Algorithmus erbringt aber häufig auch für die deutsche Sprache gute Ergebnisse.
Soundex wurde von Robert C. Russell und Margaret King Odell für die Indizierung der Familiennamen im United States Census entwickelt und 1918 patentiert (US-Patent 1,261,167). Der Soundex-Code für ein Wort besteht aus seinem ersten Buchstaben, gefolgt von drei Ziffern, die die nach dem Anfangsbuchstaben folgenden Konsonanten des Wortes repräsentieren. Ähnliche Laute besitzen den gleichen Code (B, F, P und V werden z. B. alle mit der Ziffer „1“ codiert).

## Grundregeln

Jeder Soundex-Code besteht aus einem Buchstaben gefolgt von drei Ziffern, z. B. W-213 für Wikipedia. Hat das zu codierende Wort so viele Buchstaben, dass man mehr Ziffern erzeugen könnte, bricht man nach der dritten Ziffer ab. Hat das Wort zu wenige Buchstaben, füllt man die letzten Ziffern mit Nullen auf. Der asiatische Name Lee wird also als L-000 codiert.

### Buchstabencodes

| Ziffer | Repräsentierte Buchstaben |
| 1 | B, F, P, V |
| 2 | C, G, J, K, Q, S, X, Z |
| 3 | D, T |
| 4 | L |
| 5 | M, N |
| 6 | R |
Die Vokale A, E, I, O und U und die Konsonanten H, W und Y sind außer beim ersten Zeichen zu ignorieren. Erweiternd für die deutsche Sprache kann definiert werden: Die Umlaute Ä, Ö und Ü sind zu ignorieren, das „scharfe S“ ß wird wie das einfache S codiert.
Haben mehrere im ursprünglichen Wort aufeinanderfolgende Buchstaben den gleichen Soundex-Code, erscheint dieser im Ergebnis nur einmal, aus abfx wird also etwa A120 (a bleibt, weil erster Buchstabe, b und f ergeben beide den gleichen Code 1, x ergibt 2, am Ende wird eine Null angehängt, um vier Zeichen zu erhalten).
Mit dem Verfahren wird zum Beispiel den (nicht gleich-, aber ähnlichklingenden) Namen "Robert" und "Rupert" derselbe Code R163 zugewiesen. Somit werden mit dem Verfahren beide Namen zueinander als Homöophon gewertet.
Bei der praktischen Anwendung des Soundex-Verfahrens werden hauptsächlich zwei Punkte kritisiert: Zum einen ist es sehr auf die englische Sprache ausgerichtet, zum anderen bietet es nur eine sehr grobe Analyse.
Dennoch ist festzuhalten, dass es sich bei dem dargestellten Algorithmus wohl um den am häufigsten angewendeten zur phonetischen Suche handelt. Mit dazu beigetragen hat sicherlich, dass für die Datenbank Oracle bereits sehr früh ein entsprechender PL/SQL-Standardbefehl implementiert wurde.
Es wurden später verschiedene Varianten speziell für andere Sprachen entwickelt. So ist beispielsweise unter SAP neben dem Standard-Soundex-Verfahren auch das sogenannte „Kölner Verfahren“ (oder auch „Kölner Phonetik“) für deutsche Belange implementiert.
In letzter Zeit hat sich das folgende Beispiel als Demonstration der sehr groben Analyse etabliert: Gemäß dem Soundex-Verfahren sind die Begriffe Britney Spears und bewährten Superzicke phonetisch identisch:
| Britney → BRTN → B635 | bewährten → BRTN → B635 |
| Spears → SPRS → S162 | Superzicke → SPRZCK → S16222 → S162 |

## Soundex für die deutsche Sprache

Der Soundex-Algorithmus kann durch eine Anpassung der Buchstabencodes auch für die Deutsche Sprache benutzt werden.

### Buchstabencodes für die deutsche Sprache

| Ziffer | Repräsentierte Buchstaben |
| 0 | a, e, i, o, u, ä, ö, ü, y, j, H |
| 1 | b, p, f, v, w |
| 2 | c, g, k, q, x, s, z, ß |
| 3 | d, t |
| 4 | l |
| 5 | m, n |
| 6 | r |
| 7 | ch |
Am offensichtlichsten ist wohl, dass das deutsche Alphabet mit den Umlauten “ä”, “ö” und “ü” sowie dem “ß” über Buchstaben verfügt, die im Englischen nicht existieren. Da die deutschen Umlaute aus phonetischer Hinsicht nichts anderes als Vokale sind, werden “ä”, “ö” und “ü” auch genauso wie die anderen Vokale behandelt und bei der Codierung zunächst durch Nullen ersetzt und später eliminiert. Das “scharfe ß” wird wie das einfache “s” durch die Ziffer 2 repräsentiert.
Ein weiterer Unterschied zwischen dem Deutschen und dem Englischen liegt in der Funktion des Buchstaben “j”. Während das “j” im Englischen (wie in “just” oder “join”) als Zischlaut ausgesprochen wird, der im Deutschen durch die Buchstabenfolge “dsch” repräsentiert wird, erfüllt das “j” im Deutschen die gleiche Funktion wie im Englischen das “y” (vgl. “Yes” und “Ja”) und muss demnach in die Gruppe der Vokale und Halbvokale fallen.
Ähnlich verhält sich der Buchstabe “w”, der im Englischen als Halbvokal (wie in “what”) oder als stummer Buchstabe (wie in “awesome”) auftritt, im Deutschen aber als stimmhafter Gegenpart zu den Buchstaben “f” oder “v” gebraucht wird. Deshalb muss das “w” im Deutschen mit 1 codiert werden.
Eine Besonderheit der deutschen Sprache ist außerdem die Buchstabenfolge “ch”, die Laute wie in “ich” oder “ach” repräsentiert. Beide Laute existieren in der englischen Sprache nicht. Da “ch” in keine der vorhandenen Kategorien passt, wird eine siebte Kategorie geschaffen.
Als weitere Anpassung an die deutsche Sprache wäre noch zu untersuchen, ob die Länge der Codewörter, die auf drei Ziffern beschränkt ist, für die deutsche Sprache angemessen ist, da im Deutschen die Wortlänge tendenziell länger ist als im Englischen.