Christoph Zurnieden: Vielleicht mittels Soundex-Algorithmus?

Beitrag lesen

Hi,

Na, so rudimentär ist die schon gar nicht mehr, viel mehr gibt's da nämlich kaum noch.

Okay, dann habe ich wohl zu tief gestapelt.

Nun, meistens besser als zu hoch, denn das kann im Einzelfall als Bestseller enden ;-)

Das war nämlich die allererste Vorgehensweise, die mir einfiel, als ich auf die soundex-Funktion in PHP stieß. In einem Userkommentar stand dann noch der Hinweis auf levenshtein(), womit der Server fast schon zum "Gedankenlesen" gebracht werden könnte. ;-)

Beides zusammen funktioniert wirklich sehr gut bei Vertippern. Wenn Du Dir selbst mal etwas zusammenbasteln möchtest: es gibt das Perlmodul Lingua::TypoGenerator
das die Buchstaben eines Wortes auf recht typische Vertipper Art (englische Tastatur! Eine Anpassung auf deutsche Tastatur kannst Du selber basteln, ist nicht weiter schwierig) durcheinanderwirbelt. Soundex ist AFAIK Perlbuildin seit 5.8.7 ansonsten gibt es das hier:http://search.cpan.org/~markm/Text-Soundex-3.02/Soundex.pm denn es dürfte etwas bequemer sein, alles in Perl zu machen, als sich etwas in Perl+PHP zusammenzubasteln. Ich nehme zumindest an, das Du Windowsbenutzer ohne pipefähige Shell bist. Ansonsten habe ich alles hier beschriebene noch in Javascript vorrätig.

Da ich aber immer noch ein paar falsche Hits hatte, hab ich das für imperfekt gehalten. Allerdings für meine Zwecke hat es gereicht (ich überprüfe, ob es die entsprechende Firma schon gibt, also z.B. BMW = Bayerische Motorenwerke AG o.ä.). Da ist ein Fehler nicht allzu tragisch, zur Not müssen erkannte Duplikate manuell gelöscht werden.

Ja, das ist normal, da es natürlich keine exakten Suchalgorithmen sind. Selbst wenn die Wahrscheinlichkeiten recht hoch sind, so hat man doch immer noch den einen oder anderen Ausrutscher zu erwarten. Es ist daher stets abzuwägen ob dieses Risiko akzeptabel ist.

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 ;-)

Okay, hab mich da nicht wirklich eingearbeitet. Mir kam es aber so vor, als wäre das speziell auf eine Sprache angepasst.

Auf die Aussprache, ja, aber nicht auf die Sprache. Wie die Bezeichnung schon anzudeuten versucht.

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!

Bei Städtenamen mag das stimmen, wenn du aber z.B. übersetzen willst und dann für "I rested on the way" bekommst "Ich startete auf dem Weg neu", dann ist das falsch. ;-)

Auch für Benutzer eines bestimmten Redmonder Computerbetriebsystems? >;->

so short

Christoph Zurnieden