Seite 1 von 1

Ähnlichkeitsvergleich von Strings

Verfasst: Freitag 1. Dezember 2006, 14:12
von HWK
Gibt es in Python ein Modul, um ähnliche Strings zu vergleichen? Oder kennt zumindest jemand Artikel, die Algorithmen dazu beschreiben?
Ich möchte per Hand eingegebene und somit möglicherweise falsch geschriebene Namen mit Namen aus einer Liste automatisch korrigieren lassen.
Danke
HWK

Verfasst: Freitag 1. Dezember 2006, 14:44
von HWK
Ah!
Ich habe etwas mit dem Namen 'Levenshtein distance' gefunden. Könnte das dafür geeignet sein? Auch 'spell checker' wären vielleicht eine Möglichkeit. Habe dafür aber noch keine Python-Implementierung gefunden.

Verfasst: Freitag 1. Dezember 2006, 15:14
von CM
Auf der Seite mit dem ersten Google hit: http://www.hetland.org/python/distance.py

Aber der Algorithmus ist so einfach, da ist es leicht Variationen darauf selber zu programmieren.
Und ja, geeignet mag das schon sein ... kommt halt darauf an, was Du genau machen willst.

HTH
Christian

Verfasst: Freitag 1. Dezember 2006, 16:46
von BlackJack
Ich wäre mit automatischer Korrektur vorsichtig, die kann auch mal "falsch" Korrigieren. Fehlerhafte Eingaben gehören IMHO dem Benutzer um die Ohren gehauen anstatt still und leise korrigiert. Benutzer sollten sich gar nicht erst daran gewöhnen das sie schlampig sein dürfen.

Verfasst: Samstag 2. Dezember 2006, 00:45
von HWK
Es funktioniert genau so, wie ich mir das vorgestellt habe.
BlackJack hat aber natürlich recht: Bei ähnlichen Namen kann schon mal der falsche ausgewählt werden.
Danke
HWK

Verfasst: Sonntag 18. Februar 2007, 16:29
von HWK
Manchmal muss man gar nicht so weit weg suchen:
Die Methode get_close_matches() im Python-Standardmodul difflib macht ebenfalls genau das, was ich brauche.
Naja, jetzt bin ich wenigstens um ein paar Erfahrungen über die Erweiterung von Python-Scripts mit C-Funktionen reicher.
MfG
HWK