2008-09-03 8 views

Antwort

13

Soundex ist eher primitiv - es wurde ursprünglich entwickelt, um von Hand berechnet zu werden. Es ergibt sich ein Schlüssel, der verglichen werden kann.

Soundex funktioniert gut mit westlichen Namen, wie es ursprünglich für US-Volkszählungsdaten entwickelt wurde. Es ist für den phonetischen Vergleich vorgesehen.

Die Levenshtein-Distanz betrachtet zwei Werte und erzeugt einen Wert basierend auf ihrer Ähnlichkeit. Es sucht nach fehlenden oder substituierten Buchstaben.

Grundsätzlich Soundex ist besser für die Feststellung, dass "Schmidt" und "Smith" könnte der gleiche Nachname sein.

Levenshtein-Distanz ist besser für das Auffinden, dass der Benutzer sich vertippt hat „Levnshtein“ ;-)

0

@Keith:

Als ich auf der anderen Frage gestellt, Daitch-Mokotoff ist besser für uns Europäer (und ich würde die USA streiten.

Ich habe auch das Wiki auf Levenshtein gelesen. Aber ich sehe nicht warum (im wirklichen Leben) es ist besser für den Benutzer als Soundex.

8

Ich würde vorschlagen, Metaphone, nicht Soundex. Wie bereits erwähnt, wurde Soundex im 19. Jahrhundert für amerikanische Namen entwickelt. Metaphone wird Ihnen einige Ergebnisse geben, wenn Sie die Arbeit von armen Spendern überprüfen, die "es austönen" und phonetisch schreiben.

Die Bearbeitungsentfernung ist gut, um Tippfehler wie wiederholte Buchstaben, transponierte Buchstaben oder die falsche Taste zu finden.

Betrachten Sie die Anwendung, um zu entscheiden, welche Ihren Benutzern am besten — passt oder beide zusammen verwenden, wobei Metaphone die Vorschläge ergänzt, die von Levenshtein produziert werden.

In Bezug auf die ursprüngliche Frage, habe ich n-grams erfolgreich in Information Retrieval-Anwendungen verwendet.

+0

und ich würde für Doppel-Metaphon gehen, gibt es 2 Codes, einen für Western-Sound, und einen anderen für "ausländische" (Slavic IIRC) klingt. – gbjbaanb

+0

Soundex wurde im frühen 20. Jahrhundert entwickelt und für Volkszählungsdaten aus dem 19. Jahrhundert verwendet. – webmaster777

2

Ich stimme mit Ihnen auf Daitch-Mokootoff überein, Soundex ist voreingenommen, weil die ursprünglichen US-Volkszählungnehmer 'amerikanisierte' Namen wollten.

Vielleicht wäre ein Beispiel auf der Differenz helfen:

Soundex legt zusätzlich Wert im Anfang eines Wortes - in der Tat ist es die Auffassung, nur die ersten vier Laut Sounds. So, während "Schmidt" und "Smith" übereinstimmen "Smith" und "With" werden nicht.

Levenshteins Algorithmus wäre besser zum Auffinden von Tippfehlern geeignet - ein oder zwei fehlende oder ersetzte Buchstaben erzeugen eine hohe Korrelation, während die phonetische Auswirkung dieser fehlenden Buchstaben weniger wichtig ist.

Ich denke nicht, dass auch beides besser ist, und ich würde sowohl einen Distanzalgorithmus als auch einen phonetischen Algorithmus in Betracht ziehen, um Benutzern zu helfen, eingegebene Eingaben zu korrigieren.