26
Chamer Phonetik ein Verfahren zum Auffinden ähnlicher deutscher Familiennamen Autor: Franz Mühlbauer München 2010, 2011

Chamer Phonetik

Embed Size (px)

DESCRIPTION

Ein Verfahren zum Auffinden ähnlicher deutscher Familiennamen

Citation preview

Page 1: Chamer Phonetik

Chamer Phonetik

ein Verfahren zum Auffinden ähnlicher deutscherFamiliennamen

Autor: Franz Mühlbauer

München 2010, 2011

Page 2: Chamer Phonetik

Inhaltsverzeichnis1 Übersicht.............................................................................................................................32 Motivation und Problemstellung.........................................................................................43 Bekannte existierende Verfahren.........................................................................................5

3.1 Übersichtsdarstellungen zu Suchverfahren...................................................................53.2 Phonetische Algorithmen.............................................................................................53.3 Algorithmen, die auf Abstands- oder Ähnlichkeitsmaßen beruhen...............................63.4 Verfahrensauswahl vor dem Hintergrund der Problemstellung....................................6

4 Der Algorithmus..................................................................................................................74.1 Grundsätzliches............................................................................................................74.2 Regelwerk....................................................................................................................84.3 Ablauf...........................................................................................................................94.4 Erweiterbarkeit.............................................................................................................94.5 Die Implementierung....................................................................................................9

5 Vergleich verschiedener Suchverfahren...............................................................................95.1 Datenbasis....................................................................................................................95.2 Verglichene Suchverfahren.........................................................................................105.3 Vorgehen.....................................................................................................................105.4 Ergebnisse und Bewertung.........................................................................................11

5.4.1 Telefonbuch-Namensdatenbank..........................................................................115.4.1.1 Generelles....................................................................................................115.4.1.2 Ausgewählte einzelne Namen......................................................................11

5.4.2 Historische Namensdatenbank............................................................................126 Weitere Anmerkungen.......................................................................................................13

6.1 Namensgebung...........................................................................................................136.2 Performanz.................................................................................................................136.3 Präzisere Phonetik aus der Analyse des Bestandes an Familiennamen.......................13

7 Anhang..............................................................................................................................157.1 Implementierung des Algorithmus in PHP.................................................................15

7.1.1 Übersicht.............................................................................................................157.1.2 Schnittstellenklasse.............................................................................................157.1.3 Generische Klasse zur Berechnung phonetischer Codes.....................................177.1.4 Abgeleitete Klasse zur Berechnung von Codes der Chamer Phonetik.................197.1.5 Aufruf-Beispiele..................................................................................................21

7.2 Referenzen.................................................................................................................24

2 / 26

Page 3: Chamer Phonetik

Übersicht

1 ÜbersichtDer Beitrag stellt ein phonetisches Suchverfahren zur Ermittlung ähnlicher deutschsprachiger Familiennamen vor.

Der Abschnitt Motivation und Problemstellung bietet eine kurze Einführung in die Thematik aus Anwendersicht.

Im Abschnitt Bekannte existierende Verfahren wird auf einige bislang bekannte Verfahren und Vertreter zur Ähnlichkeitssuche hingewiesen. Dabei werden auch einige Vor- und Nachteile der Verfahren erwähnt.

Der Abschnitt Der Algoritmus geht auf grundlegende Überlegungen sowie Einzelheiten der Realisierung der Chamer Phonetik ein.

Eine konkrete Implementierung der Chamer Phonetik ist im Anhang aufgelistet. Enthalten ist dort auch ein Beispiel zur Erweiterung des Verfahrens mit eigenen Regeln.

Unter dem Abschnitt Vergleich verschiedener Suchverfahren wird das Verfahren der Chamer Phonetik mit einigen ausgewählten bekannten phonetischen Verfahren verglichen. Als Basis für den Vergleich dienen eine Datenbank mit etwa 830.000 deutschen Familiennamen sowie eine Sammlung historischer Schreibungen von Familiennamen.

Im Abschnitt Weitere Anmerkungen wird auf einige weiterführende Themen hingewiesen.

Der abschließende Abschnitt Referenzen listet im Anhang einige ausgewählte Quellenzur Thematik auf. Die Auswahl erhebt keinen Anspruch auf Vollständigkeit oder Repräsentativität.

3 / 26

Page 4: Chamer Phonetik

Motivation und Problemstellung

2 Motivation und ProblemstellungAngenommen, jemand möchte mehr über die eigenen Vorfahren in Erfahrung bringen. Dann könnte zum Beispiel in einer Datenbank oder mittels einer Internet-Suchmaschine nach dem Familiennamen, den Geburtsnamen der Mutter oder Großmutter gesucht werden.

Als Resultat der Suche sollten möglichst alle relevanten Inhalte zum Familiennamen schnell gefunden werden (in nicht mehr als wenigen Sekunden). Doch häufig ist es nicht so einfach, die gewünschten Ergebnisse zu erhalten: Einerseits ergibt die Suche möglicherweise eine Vielzahl an irrelevanten Resultaten, andererseits wären im Datenbestand noch weitere Informationen enthalten, die im Suchergebnis nicht erwähnt werden. So wird es bei den meisten Namen notwendig sein, nach Schreibweisen des Namens zu suchen, die Tippfehler enthalten. Häufig gibt es ältere Schreibweisen des Familiennamens, die von den Suchverfahren nicht berücksichtigt werden, weil sie dem Familiennamen nicht ähnlich genug sind.

In früheren Jahrhunderten gab es in den heutigen deutschsprachigen Gebieten keine einheitlichen Vorgaben für die Rechtschreibung. Wie Texte und insbesondere Namen geschrieben wurden, hing auch vom jeweiligen Bildungsstand des Schreibers und herrschenden regionalen Dialekten ab.

Letztendlich gestaltet sich die Suche im allgemeinen sehr aufwendig. Obwohl sich die Such-Technologien in den vergangenen Jahrzehnten deutlich verbessert haben, istimmer noch eine Menge Zeit und Wissen zu investieren, um das Ziel zu erreichen.

Es gibt eine Reihe unterschiedlicher Suchverfahren, die bei Suchmaschinen sowie beider Suche in Datenbanken zum Einsatz kommen. Die Suchverfahren wurden für verschiedene Einsatzgebiete entwickelt. Doch gerade für den hier geschilderten Einsatzfall - Schreibweisen deutscher Familiennamen, auch unter Berücksichtigung der historischen Entwicklung - gibt es noch Verbesserungspotential. Hier möchte die Chamer Phonetik ansetzen. Ein Teil der Familiennamen in Deutschland ist nicht-deutschen Ursprungs. Um die Komplexität der Problemstellung einzugrenzen, beschränkt sich die Untersuchung auf deutsche Familiennamen (auch wenn die Zuordnung im Einzelfall nicht immer leicht zu treffen ist).

Ein wesentlicher Punkt ist die Einsetzbarkeit des Verfahrens unter Berücksichtigung begrenzter Rechner-Kapazitäten. Damit scheiden Verfahren aus, die im Prinzip Ergebnisse besserer Qualität liefern würden, deren Einsatz aber zu aufwendig ist.

4 / 26

Page 5: Chamer Phonetik

Bekannte existierende Verfahren

3 Bekannte existierende VerfahrenInzwischen gibt es eine ganze Reihe unterschiedlicher Verfahren zur Ähnlichkeitssuche. Gegenstand von Untersuchungen sind nicht mehr nur die englische Sprache, sondern auch die deutsche Sprache. Neben der Standardschreibung beschäftigen sich Untersuchungen ebenso mit regionalen oder historischen Schreibvarianten sowie mit Spezialthemen wie Eigennamen. Es gibt sogar Ansätze, Verfahren der Bioinformatik bei den Sprachwissenschaften einzusetzen.

3.1 Übersichtsdarstellungen zu Suchverfahren

Übersichten zu und Bewertungen von Verfahren sind insbesondere bei /Kempken2005/ sowie bei /Wilz/ und /List2010/ zu finden.

3.2 Phonetische Algorithmen

Ein Teil der Verfahren orientiert sich an der Aussprache der Worte. Diese phonetischen Verfahren nehmen an, dass gleich oder ähnlich ausgesprochene Worte einander ähnlich sind, auch wenn die Orthographie sich unterscheidet. Charakteristisch für diese Verfahren ist, jedem Wort durch Ersetzungsschritte ein Code-Wort zuzuordnen (manchmal auch zwei). Ist der phonetische Code zweier zu vergleichender Worte identisch, gelten die Worte als ähnlich.

Bekannte Vertreter dieser Sparte sind etwa Soundex, Phonix, Metaphone, Double Metaphone, Daitch-Mokotoff, Wilde-Meyer (alias Phonem), Kölner Phonetik und Phonet (alias Hannoveranver Phonetik). Die für englischsprachige Texte entwickeltenAlgorithmen Soundex, Phonix und Metaphone sind zwar weit verbreitet, aber für die Problemstellung ungeeignet. Daitch-Mokotoff setzt den Schwerpunkt auf jüdische Worte und osteuropäische Sprachen. Betrachtenswert sind für die Problemstellung hier nur die Kölner Phonetik und Phonet, die beide für deutschsprachige Texte entworfen wurden. Mit seinen hunderten von Regeln deckt Phonet zusätzlich ausländische Einflüsse ab. /Wilz/ kommt in seiner Untersuchung zu deutschen Familiennamen zum Ergebnis, dass die Kölner Phonetik zwar den Großteil ähnlicher Familiennamen findet, jedoch andererseits die Fehlerrate ziemlich hoch ist; die Kölner Phonetik weist also viele Namen als ähnlich aus, die es nicht sind. In diesem Sinne ist das Verfahren vorrangig dazu geeignet, bei einem Vergleich eine Vorauswahl zu treffen. Phonet dagegen findet zwar einen etwas geringeren Anteil derkorrekterweise als ähnlich eingestuften Namen als die Kölner Phonetik, die Fehlerrate ist jedoch gering.

In der neueren Forschung scheinen rein phonetische Verfahren immer mehr ins Hintertreffen zu geraten. Ein wesentlicher Einwand gegen phonetische Verfahren ist,

5 / 26

Page 6: Chamer Phonetik

Bekannte existierende Verfahren

dass für gute Suchergebnisse sehr viel phonetisches Wissen über die jeweilige Sprache oder den jeweiligen Dialekt einfließen muss. Zur Erreichung einer hohen Ergebnisqualität gestaltet sich das Regelsystem sehr komplex und aufwendig. Ein mögliches Einsatzgebiet der phonetischen Verfahren könnte jedoch sein, für die nachfolgenden Verfahren eine Vorauswahl bei größeren Mengen zu vergleichender Texte zu bieten.

3.3 Algorithmen, die auf Abstands- oder Ähnlichkeitsmaßen beruhen

Jenseits der phonetischen Verfahren gibt es Verfahren, die sich beim Vergleich zweierWorte auf die Unterschiede oder die Gemeinsamkeiten konzentrieren. Hier geht es vorrangig darum, Abstands- oder Ähnlichkeitsmaße zu definieren, um Worte vergleichen zu können. Bei den Abstandsmaßen werden in der Regel Bearbeitungsschritte definiert, um ein Wort in ein anderes zu überführen. Ein grundlegender und bekannter Vertreter ist hier die Levenshtein-Distanz mit dessen Wagner-Fischer-Implementierung. Es gibt eine Reihe weiterer Verfahren, die teilweise Mischformen sind oder zusätzlich auf phonetisches Wissen zurückgreifen. Zu nennen sind hier etwa: Levenshtein-Damerau, Needleman-Wunsch, Smith-Waterman, Jaro, Jaro-Winkler, N-Gramme, Editex, ALINE, ASJP, Covington, ipadist,und weitere. /Kempken2005/ kommt in seiner Untersuchung zum Einsatz derartiger Verfahren bei regionalen und historischen Schreibweisen mit Editex zu guten Ergebnissen. Vor allem wird dort aber das Verfahren von Ristad und Yanilos hervorgehoben, das den übrigen Verfahren deutlich überlegen sein soll. Es handelt sich um ein stochastisches Verfahren, das vor dem eigentlichen Einsatz trainiert werden muss.

3.4 Verfahrensauswahl vor dem Hintergrund der Problemstellung

Obwohl phonetische Verfahren in der aktuellen Forschung nicht mehr präferiert werden, setzt die vorliegende Untersuchung vor dem Hintergrund der Aufgabenstellung nach wie vor darauf. Insbesondere bei großen Datenmengen bieten phonetische Verfahren durchaus Vorteile. Im vorliegenden Fall kommt eine vorab vorhandene und unveränderliche Datenbasis aus über 830.000 deutschen Familiennamen zum Einsatz. Bereits bevor die Familiennamen in einer Applikation zum Einsatz kommen, können die phonetischen Codes aller Familiennamen errechnetwerden. Sucht ein Nutzer in seiner Applikation nach einem bestimmten Familiennamen, ist nur noch für diesen einen Familiennamen der phonetische Code zu ermitteln, und dieser Code via Datenbank-Abfrage mit den vorhandenen Codes abzugleichen. Die hierfür notwendigen Verarbeitungsschritte können leicht in Echtzeit geschehen.

Bei den Verfahren auf Basis von Abstands- oder Ähnlichkeitsmaßen könnte eine zeitkritische Applikation nicht so verfahren. Der eingegebene Name müsste mit allen

6 / 26

Page 7: Chamer Phonetik

Bekannte existierende Verfahren

vorhandenen Familiennamen einzeln auf Ähnlichkeit überprüft werden. Um akzeptable Antwortzeiten zu liefern, müssten zur Realisierung der Applikation schon sehr schwere Geschütze aufgefahren werden (Hardware, Software, Caching, ...).

Vorabberechnungen der Distanzen aller Familiennamen untereinander sind ebenfalls aus Performanz-Gründen nur mit außerordentlich hohem Aufwand durchführbar.

4 Der Algorithmus

4.1 Grundsätzliches

Im Prinzip ist der hier vorgestellte Algorithmus zur Chamer Phonetik ähnlich wie andere phonetische Verfahren aufgebaut. Dem Algorithmus wird ein Wort übergeben. Auf das Wort werden eine Reihe von Anpassungen und Regeln in einer bestimmten Reihenfolge angewendet, die es in ein anderes Wort überführen - den phonetischen Code des Wortes.

Der phonetische Code besteht bei der Chamer Phonetik aus Buchstaben unseres Alphabets; Ziffern kommen nicht vor. Die Länge des phonetischen Codes ist variabel;sie ist zumeist kürzer als das Ursprungswort. Die Beschränkung auf Buchstaben soll vor allem eine bessere Lesbarkeit des resultierenden Codes bewirken, und es erleichtern, weitere Kodierungsschritte durchzuführen.

Die Anwendung der Regeln führt zu einem reduzierten Alphabet. Während das Ausgangswort aus 30 verschiedenen Zeichen (a bis z sowie die deutschen Umlaute ä,ö, ü und ß) bestehen kann, ist der phonetische Code auf ein Alphabet mit 15 Zeichen beschränkt. Dieses reduzierte Alphabet lässt weniger Buchstabenkombinationen zu, enthält demgemäß in einem gewissen Sinne weniger Redundanz als das Ausgangsalphabet.

Die Regeln zielen vor allem auf die Verarbeitung deutscher Familiennamen ab. Es spricht jedoch nichts dagegen, den Algorithmus auch zum Beispiel bei anderen Eigennamen oder generell auf Texte der deutschen Sprache anzuwenden - nur wurdenim Rahmen der vorliegenden Untersuchung in dieser Richtung keine Tests vorgenommen.

Ein weiteres Ziel des Ansatzes ist es, auch Schreibvarianten jenseits der Standardschreibung einzubeziehen. Das trifft vor allem bei historischen Texten zu. Familiennamen wurden früher nicht einheitlich geschrieben. Wegen der vielen regionalen Unterschiede mit den Einflüssen verschiedener Dialekte sowie ihrer zeitlichen Veränderungen ist es schwer möglich, dieses Wissen in einem überschaubaren Satz an Regeln festzuhalten. Praktikabel erscheint es dem Autor zu sein, für spezielle Anwendungsgebiete eigene Regeln zu ergänzen. Aus diesem Grunde können dem Algorithmus auf einfache Weise Regeln nach Bedarf

7 / 26

Page 8: Chamer Phonetik

Der Algorithmus

hinzugefügt werden. Diese zusätzlichen Regeln setzen nicht auf den Ausgangsworten,sondern auf den phonetischen Codes mit deren reduziertem Alphabet auf. Auf dem Code, der aus der ersten Verarbeitungsstufe resultiert (Code 1), wird mit den zusätzlichen Regeln eine weitere Verarbeitungsstufe ausgeführt. Das Ergebnis ist ein weiterer Code (Code 2). Die folgende Abbildung gibt das Prinzip der mehrstufigen Kodierungsschritte wieder:

4.2 Regelwerk

Einzelheiten des Regelwerkes sind der PHP-Implementierung im Anhang zu entnehmen. Die Regeln sind gesammelt am Anfang des Algorithmus in Form eines Arrays (Hash) notiert.

Die Anwendung der Regeln ist in mehrere Schritte unterteilt. Bei jedem Schritt setzendie Regeln auf den Ergebnissen des vorherigen Schrittes, und damit auf dem bis zu diesem Schritt erreichten reduzierten Alphabet, auf. Im Ergebnis genügt so eine relativ kleine Anzahl an Regeln.

Hinsichtlich der Wahl der Regeln gibt es bei der Chamer Phonetik im Vergleich zur Kölner Phonetik einige wesentliche Gemeinsamkeiten sowie Unterschiede. So werden etwa die Buchstaben b und p, d und t, s und z, g, k und q sowie f und v gleichgesetzt. Der Buchstabe c wird ähnlicherweise entweder zu einem k oder einem s überführt. Im Unterschied zur Kölner Phonetik werden hier die Buchstaben f und w sowie m und n nicht mehr gleichgesetzt. Außerdem werden Vokale zwar auf weniger Vokale zusammengeführt, aber nicht mehr ignoriert.

8 / 26

Page 9: Chamer Phonetik

Der Algorithmus

Neben der einfachen kontextfreien Ersetzung von Teilzeichenketten oder Buchstaben kommen bei der Chamer Phonetik auch kontextsensitive Ersetzungen mittels regulärer Ausdrücke zum Einsatz.

4.3 Ablauf

Der Algorithmus wandelt das Ausgangswort zunächst in ein klein geschriebenes Wortum. Anschließend werden die Ersetzungsregeln in mehreren Stufen ("Schichten") angewendet. Nach jeder Stufe wird eine Normierung durchgeführt, indem bei mehrfach hintereinander auftretenden gleichen Zeichen die überzähligen gelöscht ("gekürzt") werden. Jede Stufe setzt auf das Ergebnis der vorausgehenden Stufe auf.

4.4 Erweiterbarkeit

Zur Erweiterung des Algorithmus um zusätzliche Regeln werden dem Algorithmus die neuen Regeln vorab bekannt gemacht. Um eine bestimmte Reihenfolge der Abarbeitung sicherzustellen, können aufeinander folgende Schichten festgelegt werden. Nach jeder Abarbeitung einer Schicht wird eine Normierung durchgeführt sowie zusätzlich das Ergebnis des Abarbeitungsschrittes als eigener phonetischer (Zwischen-)Code festgehalten. Im Ergebnis erhält ein Aufrufer zu einem Wort neben dem originären phonetischen Code noch zusätzlich die weiteren phonetischen Codes für die selbst definierten Schichten.

4.5 Die Implementierung

Eine Beispiel-Implementierung der Chamer Phonetik in der Programmiersprache PHP nebst Aufruf-Beispiel ist im Anhang abgedruckt.

5 Vergleich verschiedener SuchverfahrenUm eine Vorstellung von der Leistungsfähigkeit der Chamer Phonetik zu erhalten, wurden einige Experimente durchgeführt, und die Ergebnisse ausgewählter phonetischer Verfahren verglichen.

5.1 Datenbasis

Für die Experimente wurden zweierlei Datenbasen verwendet:

Zum einen wurde auf einen Bestand von etwa 830.000 deutschen Familiennamen zurück gegriffen, der aus einer Telefonbuch-CD aus dem Jahre 1997 gewonnen wurde (siehe /DInfo1997/). Diese Datenbasis wird im folgenden als Telefonbuch-Namensdatenbank bezeichnet.

9 / 26

Page 10: Chamer Phonetik

Vergleich verschiedener Suchverfahren

Zum anderen wurden aus verschiedensten Textquellen aus vergangenen Jahrhunderten zu etwa 270 Familiennamen über 1300 Schreibvarianten gesammelt. Schwerpunktmäßig handelt es sich um Schreibvarianten des heutigen bayerischen Raumes. Diese Datenbasis wird im folgenden als historische Namensdatenbank bezeichnet.

5.2 Verglichene Suchverfahren

Neben ein paar grundlegenden Vergleichstests mit den Verfahren Soundex und Metaphone beschränkt sich die Untersuchung auf Vergleiche der Chamer Phonetik mit den Verfahren Kölner Phonetik sowie Phonet.

Der Soundex-Algorithmus wird bereits mit PHP als eigene Funktion soundex mitgeliefert. Dasselbe gilt auch für das Metaphone-Verfahren: Hier gibt es in PHP dieFunktion metaphone.

Bei der Kölner Phonetik wurde auf eine im Internet verfügbare Implementierung zurück gegriffen1 (siehe /KoelnerImpl2008/).

Bei Phonet wurde aus Aufwandsgründen der Perl-Code von /Heise/ verwendet, obwohl möglicherweise die Implementierungen in anderen Programmiersprachen eine aktuellere Version des Algorithmus beinhalteten. /Wilz/ bezeichnet eine nicht genauer bezeichnete Perl-Implementierung als nicht ganz fehlerfrei; es könnte also sein, dass die beste Implementierung bessere Resultate erzeugt als die in der Untersuchung verwendete.

5.3 Vorgehen

Für alle genannten Verfahren wurde der phonetische Code zu den Namen der beiden Datenbasen berechnet. Ob die Namen, die jeweils demselben phonetischen Code zugeordnet sind, tatsächlich einander ähnlich sind, bleibt letztlich der subjektiven Entscheidung des Autors überlassen. Jedenfalls ist dem Autor kein einfaches, objektives Entscheidungskriterium bekannt (wenn es das gäbe, wären phonetische und andere Verfahren hinfällig!).

1 Später stellte sich heraus, dass diese Implementierung der Kölner Phonetik nicht vollständig korrekt ist (das trifft auch auf ein paar weitere im Internet angegebene Implementierungen zu). Dementsprechend könnten die Ergebnissedes Vergleiches geringfügig andere Werte liefern, wenn eine korrekte Implementierung der Kölner Phonetik verwendet wird. Der Autor geht davon aus, dass sich die Ergebnisse bei modifizierter Implementierung nicht wesentlich von den erzielten unterscheiden; die grundsätzliche Bewertung sollte sich nicht ändern. Endgültige Klarheit könnte jedoch nur eine erneute Untersuchung liefern.

10 / 26

Page 11: Chamer Phonetik

Vergleich verschiedener Suchverfahren

5.4 Ergebnisse und Bewertung

5.4.1 Telefonbuch-Namensdatenbank

5.4.1.1 Generelles

Bei den Namen aus dem Telefonbuch zeigt sich sofort, dass Soundex und Metaphone für diesen Einsatzzweck ungeeignet sind. Aus den etwa 830.000 Namen generiert Soundex nur gut 6.200 unterschiedliche Codes. Der häufigste Code kommt dabei fast2.700 Mal vor. Bei knapp 200.000 unterschiedlichen Metaphone-Codes schneidet dasVerfahren zwar weit besser ab als Soundex, liefert im häufigsten Fall jedoch immer noch knapp 1.000 Namen.

Überraschend ist das Resultat zur Kölner Phonetik. Sie liefert nur gut 65.000 verschiedene Codes. Der häufigste Code kommt dabei knapp 2.800 Mal vor. In dieserHinsicht verhält sich die Kölner Phonetik demnach schlechter als Metaphone.

Weitaus besser verhalten sich Phonet und die Chamer Phonetik. Phonet liefert über 415.000 unterschiedliche Codes, die Chamer Phonetik sogar über 450.000 Codes. Beide Verfahren differenzieren die Familiennamen also viel stärker als die übrigen betrachteten Verfahren. Bei beiden Verfahren enthält ein Code maximal etwa 200 verschiedene Namen. Wenn man bedenkt, dass es sich hier um den Extremfall handelt, der von den übrigen Namen deutlich unterschieden wird, und im Durchschnitt nur etwa zwei Namen pro Code auftreten, bringen beide Verfahren gute Voraussetzungen mit, um auch inhaltlich Ähnlichkeiten korrekt zu erkennen.

5.4.1.2 Ausgewählte einzelne Namen

Zur Konkretisierung der Untersuchungsergebnisse wird im Folgenden auf den NamenMühlbauer und den bei den Verfahren ermittelten Ergebnisse eingegangen.

Soundex errechnet aus dem Namen den Code M614. Zu dem Code gibt es über 250 verschiedene Familiennamen. Zum Beispiel werden die Namen Milbradt, Mühlfriedel, Mölbert, Milferstädt und Malfertheiner vom Verfahren als ähnlich angesehen. Die Ergebnisse widersprechen der Vorstellung des Autors von ähnlichen Familiennamen. Somit bestätigt sich hier die Einschätzung, dass Soundex für den Anwendungsfall ungeeignet ist.

Metaphone verbindet mit dem Code nur noch 30 verschiedene Namen. Es sind viel weniger ungeeignete dabei, wie zum Beispiel Melber, Milobara, Malabar oder Milibor. Metaphone kommt also zu deutlich besseren Ergebnissen als Soundex, ist allerdings nach den Vorstellungen des Autors nicht gut genug für den Anwendungsfall.

11 / 26

Page 12: Chamer Phonetik

Vergleich verschiedener Suchverfahren

Die Kölner Phonetik errechnet den Code 6517. Der Code findet bei insgesamt 50 Namen Verwendung. Unter den Namen sind zum Beispiel dabei Himmelheber, Mallebre, Amelipour und Nilipour sowie eine Reihe weiterer, aus Sicht des Autors hinsichtlich Ähnlichkeit als abwegig erscheinende Ergebnisse. Etwas überraschend schneidet die Kölner Phonetik bei der Namensdatenbank schlechter als Metaphone ab.

Phonet errechnet aus dem Familiennamen den Code Nülbaua. Zum Code gibt es nur vier Namen: Mühlbauer, Müllbauer, Mühlbaur, Mülbauer. Die Ergebnisse erscheinen dem Autor als korrekt, allerdings fehlen weitere Namen, die der Autor als ähnlich einschätzen würde.

Die Chamer Phonetik ermittelt für den Familiennamen den Code milbaur. Dem Codesind sechs Ergebnisse zugeordnet: Mühlbauer, Milpauer, Müllbauer, Milbauer, Mühlbaur, Mülbauer. Allesamt hält der Autor für korrekt. Sowohl Phonet als auch dieChamer Phonetik liefern hier also ausschließlich korrekte Ergebnisse, die Chamer Phonetik jedoch mehr davon als Phonet.

Die Datenmenge erlaubt aus Aufwandsgründen nur stichprobenartige Tests. Beim Test weiterer Namen orientierte sich die Untersuchung an den von /Wilz/ verwendeten Namen (Müller, Schmidt, Meyer, Schultz, Groß, Thomas, Dietrich, Fuchs). Beim Vergleich zwischen Phonet und der Chamer Phonetik ist jedoch die Tendenz bei den Ergebnissen dieselbe wie beim Namen Mühlbauer.

Insgesamt also schneiden bei diesem Anwendungsfall Phonet und die Chamer Phonetik weit besser ab als das bei den anderen drei Verfahren der Fall ist. Die Chamer Phonetik ist hier sogar leicht besser als Phonet.

In der Betrachtung nicht enthalten sind Familiennamen ausländischen Ursprungs. Phonet enthält spezielle Regeln zur Abdeckung ausländischer Namen. Es könnte also sein, dass Phonet für diesen Bedarf besser geeignet ist, als die Chamer Phonetik.

5.4.2 Historische Namensdatenbank

Der zweite Anwendungsfall betrifft die kleinere Datenbasis mit den historischen Schreibvarianten. Hier werden einfach die falschen Ergebnisse gezählt und daraus der prozentuale Anteil, gemessen an der Gesamtzahl der Schreibvarianten, ermittelt.

Bei der Chamer Phonetik werden zusätzliche Regeln ergänzt, und zwar die, die im Anhang als Beispiel zur Implementierung angegeben sind. Die Chamer Phonetik berechnet für diesen Anwendungsfall mehrere Codes pro Namen. Von den drei Codeswurde der erste verwendet (der auch originär von der Chamer Phonetik erzeugt wird) sowie der dritte. Der dritte Code gibt das Ergebnis nach der Anwendung zusätzlicher Regeln wieder, die vor allem für diese Schreibvarianten ausgelegt sind.

12 / 26

Page 13: Chamer Phonetik

Vergleich verschiedener Suchverfahren

Diese Methode misst demnach nur die korrekten Ergebnisse. Wie viele falsche Ergebnisse das Verfahren jenseits der Datenbasis erzeugen würde, kann damit nicht ermittelt werden.

Das Soundex-Verfahren liefert nur 17 Prozent negative Ergebnisse, bei der Kölner Phonetik sind es sogar nur 8 Prozent. Das klingt zwar gut, jedoch liefern Soundex und die Kölner Phonetik auch viele falsche Ergebnisse. Phonet schneidet hier mit 42 Prozent wesentlich schlechter ab. Der originäre Code der Chamer Phonetik führt zu einer Fehlerrate von 17 Prozent, der Zusatz-Code zur Chamer Phonetik schafft 11 Prozent. Im zweiten Anwendungsfall schneidet also die Kölner Phonetik am besten ab, es folgen die Chamer Phonetik sowie Soundex. Erst mit weitem Abstand folgt Phonet. Die Resultate deuten darauf hin, dass Phonet für historische Schreibvariantenweniger geeignet ist.

6 Weitere Anmerkungen

6.1 Namensgebung

Die Verfahren Kölner Phonetik und Hannoveraner Phonetik sind nach einem Ort benannt. Im Zuge dieser Namensgebungspraxis nennt der Autor das in der vorliegenden Untersuchung betrachtete Verfahren Chamer Phonetik. Der Name bezieht sich allerdings nicht auf den Ort, sondern den Landkreis Cham im Bayerischen Wald. Dort liegen die Wurzeln des Autors.

6.2 Performanz

Die Implementierung der Chamer Phonetik in Form eines PHP-Skriptes ist naturgemäß deutlich langsamer als die kompilierbare Implementierung des Phonet-Verfahrens in der Programmiersprache C. Wenn Performanz eine Rolle spielt, sollte die Chamer Phonetik ebenfalls in einer kompilierbaren Sprache umgesetzt werden.

6.3 Präzisere Phonetik aus der Analyse des Bestandes an Familiennamen

Eine Charakteristik der Chamer Phonetik ist, dass sie mit einer vergleichsweise geringen Anzahl von Regeln auskommt. Der Ansatz ist dabei, mit einem einfachen Verfahren die komplexe Realität ausreichend gut zu beherrschen. Die Chamer Phonetik ist also nur - wie andere phonetische Verfahren auch - ein Näherungs- oder Schätzverfahren.

Wird der Fokus der Phonetik auf die deutschen Familiennamen beschränkt, so ist der Bestand im wesentlichen von vorne herein bekannt und kann im Detail analysiert werden. Mit entsprechendem Aufwand könnte der Aufbau der Familiennamen

13 / 26

Page 14: Chamer Phonetik

Weitere Anmerkungen

ermittelt und daraus eine präzisere Phonetik abgeleitet werden. Sind zu den Namen auch die örtliche Verbreitung und die Auftretenshäufigkeiten bekannt, könnten auch regionale Variationen des Regelsystems recherchiert werden. Das Regelsystem könnte relativ komplex ausfallen. Daher wäre die Einsetzbarkeit in Performance-kritischen Applikationen nicht unbedingt zu erwarten. Allerdings könnte das Regelsystem als Referenzsystem dienen, das die Güte anderer phonetischer Verfahrenbewerten oder helfen könnte, Abstandsmessverfahren zu verbessern.

14 / 26

Page 15: Chamer Phonetik

Anhang

7 Anhang

7.1 Implementierung des Algorithmus in PHP

7.1.1 Übersicht

Der größte Teil des Regelwerks besteht aus der Festlegung des Regelwerks. der eigentliche Code zur Abarbeitung besteht nur aus wenigen Zeilen (umgesetzt in der Programmiersprache PHP, Version 5.2). Der Einfachheit wurde im Code auf Validierungen verzichtet.

Die Implementierung ist auf ein Interface sowie zwei Klassen aufgeteilt.

Das Interface PhoneticCodesInterface gibt die Aufruf-Schnittstelle an.

Die Klasse PhoneticCodes ist eine generische Klasse zur Generierung phonetischer Codes. Dabei muss es sich nicht um die Chamer Phonetik handeln, jedoch um ein Regelsystem, das nach demselben Schema aufgebaut ist, wie die Chamer Phonetik.

Die Klasse ChamPhonetics ist von der Klasse PhoneticCodes abgeleitet. In der abgeleiteten Klasse werden im wesentlichen nur noch die Regeln der Phonetik festgelegt.

7.1.2 Schnittstellenklasse /* * Interface of the PhoneticCodes class * * The interface provides the public API of the PhoneticCodes class. * * @see PhoneticCodes */

interface PhoneticCodesInterface {

/** * Add a phonetic rule. * * The rule will be added at the end of the existing rules. This is just * a little helper method. * * @param string $type * Select the rule type: Either 'replace' or 'regexp'. * 'replace' calls the PHP function str_replace to apply the rule. * 'regexp' calls the PHP function preg_replace to apply the rule. * * @param mixed $from * A string or an array; the value(s) to be searched for; * the first parameter of the PHP function to apply the rule. *

15 / 26

Page 16: Chamer Phonetik

Anhang

* @param mixed $to * A string or an array; the replacement value(s); * the second parameter of the PHP function to apply the rule. * * @return * An array combining the given input parameters. */ public function addRule($type, $from, $to);

/** * Add a phonetic rule set. * * @param array $rules * A rule set. The rule set is an array of rules and can be built using * the addRule() method. * * @param string $description * Optional description of the rule set. * Default is an empty string. * * @return * None. */ public function addRuleSet($rules, $description = '');

/** * Get all phonetic rule sets in the given order. * * @return * An array containing all previously added rule sets. */ public function getRuleSets();

/** * Get the phonetic codes of a word. * * @param string $word * The word from which the codes are calculated. * * @param array $indexes * Pick to codes to return from the calculated sequence of codes. * Valid for every index in $indexes: 0 <= index < count($codes) * * @return * An array containing the resulting code sequence after encoding the given * word. */ public function getCodes($word, array $indexes = array());

/** * Get the phonetic code of a word. * * Takes from the sequence of phonetic codes the most important one. * Note: Reimplement the method to pick another element from the sequence. * * @param string $word * The word from which the code is calculated.

16 / 26

Page 17: Chamer Phonetik

Anhang

* * @return * A string which is the resulting code after encoding the given word. */ public function getCode($word); }

7.1.3 Generische Klasse zur Berechnung phonetischer Codes/** * PhoneticCodes * * The class provides a simple framework to calculate phonetic codes from a * given word. The calculation relies on replacement rules which have to be * added before generating the codes. The replacement rules are divided in * rule sets. Each rule set consists of rules. After applying a rule set * the next code is calculated, and duplicate characters are removed from the * code. * * The algorithm differs from most other phonetic algorithms. It is assumed * that more than one encoding steps are performed in general. The calculated * code of a calculation step is the input of the next step. The given rules * determine the number of steps and their order. The whole calculation * results in a sequence of codes. If such a code sequence is interpreted * as a path in a tree structure, the code sequences of several words create a * tree of codes. At the leaves of the tree are the words belonging to the * corresponding path. Depending on the given rules and the purpose of an * investigation, the tree shows how different words are related or if they * have a common origin. * * Either string replacements or replacements by regular expression matching * are supported. * * If there is only one resulting code needed (and not a sequence of codes) an * additional method is provided. */

class PhoneticCodes implements PhoneticCodesInterface { protected $ruleSets = array();

protected static $codes = array();

protected function deleteDuplicateCharacters($word) { $wordLength = drupal_strlen($word); $leftChar = drupal_substr($word, 0, 1); $reducedWord = $leftChar; for ($index = 1; $index <= $wordLength; $index++) { $rightChar = drupal_substr($word, $index, 1); if ($leftChar != $rightChar) { $reducedWord .= $rightChar; $leftChar = $rightChar; } } return $reducedWord; }

public function addRule($type, $from, $to) {

17 / 26

Page 18: Chamer Phonetik

Anhang

return array( 'type' => $type, 'from' => $from, 'to' => $to, ); }

public function addRuleSet($rules, $description = '') { $this->ruleSets[] = array( 'rules' => $rules, 'description' => $description, ); }

public function getRuleSets() { return $this->ruleSets; }

protected function selectCodes(array $codes, array $indexes = array()) { if (empty($indexes)) { return $codes; }

$selectedCodes = array(); foreach ($indexes as $index) { if (isset($codes[$index])) { $selectedCodes[] = $codes[$index]; } } return $selectedCodes; }

public function getCodes($word, array $indexes = array()) { $word = trim($word); $word = drupal_strtolower($word);

if (!isset(self::$codes[$word])) { $codes = array(); foreach ($this->ruleSets as $ruleSet) { foreach ($ruleSet['rules'] as $rule) { switch ($rule['type']) { case 'replace': $word = str_replace($rule['from'], $rule['to'], $word); break; case 'regexp': $word = preg_replace($rule['from'], $rule['to'], $word); break; default: break; } } $word = $this->deleteDuplicateCharacters($word); $codes[] = $word; } self::$codes[$word] = $codes; } return $this->selectCodes(self::$codes[$word], $indexes);

18 / 26

Page 19: Chamer Phonetik

Anhang

}

public function getCode($word) { $codes = $this->getCodes($word); if (empty($codes)) { return ''; } else { return array_pop($codes); } } }

7.1.4 Abgeleitete Klasse zur Berechnung von Codes der Chamer Phonetik

/** * ChamPhonetics implements the Cham phonetic algorithm. * * Cham phonetics is a special phonetic algorithm to calculate a code from a * given German family name. * * It is assumed that similar German family names share the same phonetic code. */

class ChamPhonetics extends PhoneticCodes {

const IMPORTANT_CODE_INDEX = 10;

/** * The constructor adds rule sets to be applied when calculating the phonetic * codes of a word. */ public function __construct() { // parent::__construct(); $rules = array(); $rules[] = $this->addRule( 'replace', array("Ä", "ä", "Ö", "ö", "Ü", "ü", "ß"), array("e", "e", "o", "o", "i", "i", "s") ); $this->addRuleSet($rules, 'Step 1: Transform Umlaute'); $rules = array(); $rules[] = $this->addRule( 'replace', array("j", "y", "z", "v", "ph", "p", "d", "x"), array("i", "i", "s", "f", "f", "b", "t", "chs") ); $this->addRuleSet($rules, 'Step 2.1: Transform j, y, z, v, ph, p, d, x');

$rules = array(); $rules[] = $this->addRule( 'regexp', array( '/([^s])ca/', '/([^s])ch/', '/([^s])ck/', '/([^s])cl/', '/([^s])co/', '/([^s])cq/', '/([^s])cr/', '/([^s])cu/',

19 / 26

Page 20: Chamer Phonetik

Anhang

), array(

'${1}ka', '${1}k', '${1}k', '${1}kl', '${1}ko', '${1}k', '${1}kr', '${1}ku')

); $this->addRuleSet($rules, 'Step 2.2.1.2: Transform other c to k'); $rules = array($this->addRule('regexp', '/^c/', 's')); $this->addRuleSet($rules, 'Step 2.2.2.1: Transform leading c to s');

$rules = array($this->addRule('regexp', '/sc/', 's')); $this->addRuleSet($rules, 'Step 2.2.2.2: Transform sc');

$rules = array($this->addRule('regexp', '/c/', 's')); $this->addRuleSet($rules, 'Step 2.2.2.3: Transform other c to s');

$rules = array($this->addRule('replace', 'h', '')); $this->addRuleSet($rules, 'Step 3.1: Remove h');

$rules = array($this->addRule( 'replace', array("ae", "oe", "ie"), array("e", "o", "i")

)); $this->addRuleSet($rules, 'Step 3.2.1: Transform ae, oe, ie');

$rules = array(); $rules[] = $this->addRule( 'regexp', array( '/e$/', '/er$/', '/([bfklmnrstw])er/', '/el$/', '/([bfklmnrstw])el/', '/ar$/', '/([bfklmnrstw])a$/' ), array('', 'r', '${1}r', 'l', '${1}l', 'r', '${1}r') ); $this->addRuleSet($rules, 'Step 3.2.2: Transform other e');

$rules = array($this->addRule('replace', 'ai', 'ei')); $this->addRuleSet($rules, 'Step 3.3: Transform ai');

$rules = array(); $rules[] = $this->addRule( 'replace', array("gk", "g", "qu", "q", "ts", "tk"), array("k", "k", "k", "k", "s", "s") ); $this->addRuleSet($rules, 'Step 3.4: Transform to k');

$rules = array(); $rules[] = $this->addRule( 'regexp', array( '/(e?r)(t|w)/', '/(se)m/', '/tke$/',

'/(in)t(el|er)/', '/(il|ele?r|le?r)$/', '/(irm)(il|en|e)/', '/(erm)(il|en|e?l)/',

'/kne?r/', '/tle?r/', '/tne?r/', '/sne?r$/', '/kt$/', '/([bfklmnrstw])in$/',

'/efe?r/', '/(in)(o|us|in)/',

20 / 26

Page 21: Chamer Phonetik

Anhang

'/([aeiou]k)t/', '/(lt)i$/', '/l(e|i|o)t$/', '/(ma)(r|us)/', '/nstl$/',

'/nft$/', '/^(se)r/', '/rlk$/', '/drik/', '/er(ink)/', '/al(i|t|u)(s.+)$/',

'/s(en|e?r|in)/' ), array( '${1}b', '${1}n', 't', '${1}s${2}', 'l', 'eren', '$1', 'kr', 'tel', 'tr', 's', 'kr', '$1', 'esr', '$1', '$1', '$1', 'lt', '${1}n', 'nsl', 'nf', '$1', 'lk', 's', '$1', 'al${2}', 's' ) ); $rules[] = $this->addRule( 'replace', array( 'mb', 'et', 'alt', 'tim', 'tw', 'ult',

'rik', 'ont', 'alk', 'link', 'elk', 'bok' ), array( 'm', 'es', 'als', 'sim', 'sw', 'olt',

'rk', 'on', 'lik', 'lik', 'ilk', 'buk' ) ); $this->addRuleSet($rules, 'Step 4: Special rules');

$rules = array(); $rules[] = $this->addRule( 'regexp', array('/(f|w)([aeiou])/', '/([aeiou])(f|w)/'), array('b$2', '${1}b') ); $this->addRuleSet($rules, 'Step 5: More special rules'); }

public function getCode($word) { $codes = $this->getCodes($word); if (empty($codes)) { return ''; } else { return $codes[self::IMPORTANT_CODE_INDEX]; } } }

7.1.5 Aufruf-Beispiele

Anbei ein Beispiel, wie die PHP-Klassen einzusetzen sind, um aus einem Wort den Code der Chamer Phonetik zu erhalten:

print Cham::get_code('Müller'); // gibt 'milr' aus

21 / 26

Page 22: Chamer Phonetik

Anhang

Zur Ergänzung eigener Regeln ist anbei ein umfangreicheres Beispiel dargestellt. Es enthält eine größere Anzahl zusätzlicher Regeln, die in zwei Schichten unterteilt sind.$additional_ruleset = array( array( 'description' => 'Level 1', 'rules' => array( array( 'type' => 'regexp', 'from' => array( '/(e?r)(t|w)/', '/(se)m/', '/tke$/',

'/(in)t(el|er)/', '/(il|ele?r|le?r)$/', '/(irm)(il|en|e)/', '/(erm)(il|en|e?l)/',

'/kne?r/', '/tle?r/', '/tne?r/', '/sne?r$/', '/kt$/', '/([bfklmnrstw])in$/',

'/efe?r/', '/(in)(o|us|in)/', '/([aeiou]k)t/', '/(lt)i$/', '/l(e|i|o)t$/',

'/(ma)(r|us)/', '/nstl$/', '/nft$/', '/^(se)r/', '/rlk$/', '/drik/',

'/er(ink)/', '/al(i|t|u)(s.+)$/', '/s(en|e?r|in)/' ), 'to' => array( '${1}b', '${1}n', 't', '${1}s${2}', 'l', 'eren', '$1', 'kr', 'tel', 'tr', 's', 'kr', '$1','esr', '$1', '$1', '$1', 'lt', '${1}n', 'nsl', 'nf', '$1', 'lk', 's', '$1', 'al${2}', 's' ), ), array( 'type' => 'replace', 'from' => array( 'mb', 'et', 'alt', 'tim', 'tw', 'ult',

'rik', 'ont', 'alk', 'link', 'elk', 'bok' ), 'to' => array( 'm', 'es', 'als', 'sim', 'sw', 'olt',

'rk', 'on', 'lik', 'lik', 'ilk', 'buk' ), ), ), ), array( 'description' => 'Level 2', 'rules' => array( array( 'type' => 'regexp', 'from' => array('/(f|w)([aeiou])/', '/([aeiou])(f|w)/'), 'to' => array('b$2', '${1}b'), ), ), ),);

Cham::set_ruleset($additional_ruleset);

22 / 26

Page 23: Chamer Phonetik

Anhang

$cham_codes = Cham::get_codes('Müller');

print "1. Code: " . $cham_codes[0] . "\n";print "2. Code: " . $cham_codes[1] . "\n";print "3. Code: " . $cham_codes[2] . "\n";

An die Cham-Klasse wird ein geschachteltes Array mit dem Regelwerk übergeben. Das Array besteht aus mehreren Schichten (im Code als Level bezeichnet). Pro Schicht wird ein eigenes Sub-Array angelegt. Jedes Sub-Array enthält einen Satz an Regeln, der über den Schlüssel 'rules' gekennzeichnet wird. Der weitere optionale Schlüssel 'description' dient nur zur Dokumentation. Unter 'rules' können beliebig viele Sub-Arrays für die Regeln angegeben werden, die in dieser Reihenfolge ausgeführt werden. Eine Regel wiederum besteht aus den Komponenten 'type', 'from' und 'to'. Als Werte für den Typ sind 'regexp' und 'replace' zugelassen. Bei Wahl von 'replace' wird für den Ersetzungsvorgang die PHP-Funktion str_replace ausgeführt (siehe /str_replace/), bei Wahl von 'regexp' die PHP-Funktion preg_replace (siehe /preg_replace/). Eine Besonderheit dieser beiden PHP-Funktionen ist, dass sie als Aufrufparameter sowohl einen einzelnen Wert als auch Arrays erlauben. Damit kann mit dem Aufruf einer einzigen Funktion gleich eine größere Anzahl von Ersetzungen durchgeführt werden (und der Programm-Code wird schnell unübersichtlich...).

23 / 26

Page 24: Chamer Phonetik

Anhang

7.2 Referenzen

/Andert2005/ Andert, Franz, Schliephake, Alexandra: Phonetik und Ähnlichkeit in der Linguistik; URL: http://www.ki.informatik.hu-berlin.de/wbi/teaching/archive/ws0405/se-verwandschaft/ausarbeitungen/05_aehnlichkeit_linguistik.pdf; 2005

/BachtelerSchnell2006/ Bachteler, Tobias; Schnell, Rainer: Ein Performanz-Vergleich zwischen der Kölner undder vonReth-Schek Phonetik; URL: http://www.uni-due.de/~hq0215/documents/2006/2006_Phonetiken.pdf; 2006

/DInfo1997/TopWare CD-Service Ges.m.b.H.; D-Info 97; Riezlern 1997

/ErnstGerlachFuhr2010/ Ernst-Gerlach, Andrea; Fuhr, Norbert: Semiautomatische Konstruktion von Trainingsdaten für die Suche in historischen Dokumenten; URL: http://www.kde.cs.uni-kassel.de/conf/lwa10/papers/ir10.pdf; 2010

/Friedrich/ Friedrich, Marc: Entwurf und Implementierung von Verfahren zur Bestimmung von Textinhalten aus Verkehrsmeldungen für die Überführung in das digitale RDS-TMC-Format, Kapitel 2: Fehlertolerantes Suchen; URL: http://www.smile-datentechnik.de/projek/dipl/main_dipl_kapitel_02.html; Jahr nicht angegeben

/Heller2006/ Heller, Markus: Approximative Indexierungstechnik für historische deutsche Textvarianten; URL: http://hsr-trans.zhsf.uni-koeln.de/hsrretro/docs/artikel/hsr/hsr2006_729.pdf; 2006

/Heise/ Heise Zeitschriften Verlag: Doppelgänger gesucht, Ein Programm für die kontextsensitive phonetische Stringumwandlung; URL: http://www.heise.de/ct/ftp/99/25/252/; 2007 (?)

/Hochmuth2004/ Hochmuth, Mirko: Stringbasierte Algorithmen zur Rekonstruktion von Sprachverwandtschaften; URL: http://www.ki.informatik.hu-berlin.de/wbi/teaching/studienDiplomArbeiten/finished/2004/hochmuth_041012.pdf; 2004

/Hofmann2010/ Hofmann, Peter: Information Retrieval Seminar: Phonetische Suche; URL: http://www.informatik.uni-mainz.de/lehre/ir/seminar-wise-0910/Hofmann-PS-v2.pdf; 2010

/JannedyMöbius/ Jannedy, Stefanie; Möbius, Bernd: Name pronounciation in German text-to-speech synthesis; URL: http://www.ims.uni-stuttgart.de/~moebius/pubs/anlp97.ps; 1997 (?)

/Kempken2005/ Kempken, Sebastian: Bewertung historischer und regionaler Schreibvarianten mit

24 / 26

Page 25: Chamer Phonetik

Anhang

Hilfe von Abstandsmaßen; URL: http://duepublico.uni-duisburg-essen.de/servlets/DerivateServlet/Derivate-17252/Bewertung%20historischer%20und%20regionaler%20Schreibvarianten.pdf; 2005

/KoelnerImpl2008/Zimmer, Nicolas; Implementierung der Kölner Phonetik, angefügt als Anmerkung zur Beschreibung der soundex-Funktion im PHP-Manual; URL: http://de2.php.net/manual/de/function.soundex.php#84881

/KoelnerPhonetik2010/ Wikipedia: Kölner Phonetik; URL: http://de.wikipedia.org/wiki/K%C3%B6lner_Phonetik; 2010

/Levenshtein2010/ Wikipedia: Levenshtein-Distanz; URL: http://de.wikipedia.org/wiki/Levenshtein-Distanz; 2010

/List2010/ Michael, Jörg: Distanz- und Alignmentanalysen in der historischen Linguistik; URL: http://www-public.rz.uni-duesseldorf.de/~jorom002/sequence.pdf; 2010

/Michael2008/ Michael, Jörg: Technische Verfahren zum Personen- und Adressdatenabgleich; URL: http://www.tmf-ev.de/DesktopModules/Bring2mind/DMX/Download.aspx?EntryId=3973&PortalId=0&rct=j&cad=rja; 2008

/NerbonneSiedle2004/ Nerbonne, John; Siedle, Christine: Dialektklassifikation auf der Grundlage aggregierterAusspracheunterschiede; URL: http://www.uni-leipzig.de/~siebenh/kurse/WS0910/s_raumstrukturen/nerbonne-igdd03.pdf; 2004

/PilzLutherAmmon2008/ Pilz, Thomas; Luther, Wolfram; Ammon Ulrich: Retrieval of Spelling Variants in Nonstandard Texts –Automated Support and Visualization; URL: http://www.ling.helsinki.fi/sky/julkaisut/SKY2008/Pilz_Luther_Ammon_Retrieval_of_Spelling_Variants.pdf; 2008

/preg_replace/PHP-Manual; Beschreibung der Funktion preg_replace;URL: http://de3.php.net/manual/de/function.preg-replace.php

/RaysonArcherSmith2005/ Rayson, Paul; Archer, Dawn; Smith, Nicolas: VARD versus Word, A comparison of theUCREL variant detector and modern spell checkers on English historical corpora; URL: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.63.5286&rep=rep1&type=pdf; 2005

/Reichel2010/ Reichel, Uwe: Graphem-Phonem- und Phonem-Phonem-Konvertierung; URL: http://www.phonetik.uni-muenchen.de/~reichelu/kurse/praktikum_symbolverarbeitung/ps_g2p.pdf; 2010

/RistadYanilos1998/ Ristad, Eric; Yanilos, Peter: Learning String Edit Distance; URL:

25 / 26

Page 26: Chamer Phonetik

Anhang

http://grfia.dlsi.ua.es/ml/algorithms/references/lsed_ristad.pdf; 1998 /SchnellBachtelerBender2004/

Schnell, Rainer; Bachteler, Tobias; Bender, Stefan: A Toolbox for Record Linkage; URL: http://www.stat.tugraz.at/AJS/ausg041+2/041+2Schnell.pdf; 2004

/str_replace/PHP-Manual; Beschreibung der Funktion str_replace;URL: http://de3.php.net/manual/de/function.str-replace.php

/Strunk2003/ Strunk, Jan: Information Retrieval for Languages that lack a fixed orthography; URL: http://www.linguistics.ruhr-uni-bochum.de/~strunk/LSreport.pdf; 2003

/Wilz/ Wilz, Martin: Aspekte der Kodierung phonetischer Ähnlichkeiten in deutschen Eigennamen; URL: http://www.uni-koeln.de/phil-fak/phonetik/Lehre/MA-Arbeiten/Martin_Wilz.pdf; Jahr nicht angegeben

/ZobelDart2008/ Zobel, Justin; Dart, Philip: Phonetic String Matching: Lessons from Information Retrieval; URL: http://www.cis.uab.edu/zhang/Spam-mining-papers/Phonetic.String.Matching.Lessons.from.Information.Retrieval.pdf; 2008

Hinweis:Die angegebenen Internet-Adressen beziehen sich auf den Stand Ende September 2010.

26 / 26