Hi,
ja alle variationen in der tabelle eintragen. irgendjemand muss ja wissen wie münchen auf russisch oder spanisch genannt wird.
Google? Wikipedia? "Der Fisch"? Eine mühselige Suche, das kann ich Dir sagen. Ich würde die Liste zukaufen. Dürfte bei rein interner Benutzung und gröberer Auflösung auch nicht so teuer sein.
BTW: Das Beispiel ist gut gewählt, da hier das Problem der verschiedenen Zeichensätze geradezu in's Auge springt.
Ich mache das bei einer sehr rudimentären Fuzzy-Suche, die ich selbst geschrieben habe, so:
- Suche nach dem exakten Vorkommen. Wenn gefunden, gib aus und Ende.
- Suche nach dem Soundex-Wert des Suchterms. Wenn gefunden, gib aus und Ende.
- Suche den Treffer mit der geringsten Abweichung mithilfe des Levenshtein-Algorithmus. Wenn Differenz größer als Schwellwert ist, gib false zurück, ansonsten den Treffer.
Na, so rudimentär ist die schon gar nicht mehr, viel mehr gibt's da nämlich kaum noch.
Nachteil: Soundex vergleicht ähnlich klingende Worte aufgrund der englischen Aussprache.
Mmh, nein, ganz so ist das nicht. Dieser Algorithmus (US. Patent #1261167 (von 1918) und #1435663 (von 1922)) wurde zum Gebrauch im US-Amerikanischem Zensus erstellt und mußte auf die dort vorkommenden, aus fast dem gesamtem weltlichem Sprachraum stammenden Namen passen. Dadurch funktioniert er allgemein recht gut, auch wenn er bei indo-germanischem Sprachen stets ein klein wenig besser ist, dafür aber leichte Schwierigkeiten im finnisch-ugurischen hat.
Deshalb ist er auch für den allgemeinen Gebrauch recht gut geeignet. Aufgrund einiger, teilweise künstlicher, der damaligen Technik geschuldeter Beschränkungen wie zum Beispiel die begrenzte Wort- und Hashlänge gab es eine Reihe Verbesserungsversuche auch in sprachlich eingrenzender Weise. "Metaphone", "double Metaphone", "Phonem" und jede Menge anderer. Selbst ich habe mal einen gebastelt ;-)
Für internationale Vergleiche vielleicht nur bedingt einsetzbar, aber schon ein Ansatz.
Wo liegt die Beschränkung im internationalem Einsatz? In der Sprachverwandschaft: je weiter die individuellen Sprachen auseinandergelaufen sind, desto schwieriger wird's. Stadtnamen werden jedoch falls keine politischen Gründe dagegen stehen meist phonetisch übersetzt.
München -> munchen -> M525 (de)
Munich -> munich -> M52 (en)
Múnich -> munich -> M52 (es)
мюнхен -> mjunchen (ISO) -> M2525 (ru)
мюнхен -> múnchen (ISO Alternative) -> munchen -> M525 (ru)
Zur Not einfach Schritt 2 komplett auslassen.
Nö, Soundex o.ä., also eine imperfekte Hashfunktion ist schon ganz gut. Über das Ergebnis, also den Hash kann dann eine Ähnlchkeitsanalyse geführt werden. Sei es eine Variation über die Hammingdistanz wie der Damerau-Levenshtein-Algorithmus, eine longest-common-substring/subsequence o.ä.
Außerdem liefern manche Worte den gleichen Wert zurück, obwohl sie völlig unterschiedlich sind (rest und reset).
Nun, genau das ist ja auch der Witz daran!
Wichtiger beim Vergleich ist das, was ich bei meiner Liste oben angestellt habe: Minimieren der Unterschiede der Zeichensätze durch Überführung (hier: unter Verlust) in einen gemeinsamen Zeichensatz. Die Wahrscheinlichkeiten für eine Treffer sind sehr hoch, da der benötigte Datensatz recht klein ist. Es wird ja nicht der Name jedes Kuhdorfs in allen Sprachen benötigt, sondern nur die der Orte, die tatsächlich auch benutzt werden.
so short
Christoph Zurnieden