Wenn man im Terminal verschiedene Programme verwendet, kommt es oft vor, dass man einen Befehl falsch eingibt und das Programm dann einen Fehler anzeigt. Einige Programme wie Git oder npm schlagen jedoch ähnliche Befehle zu dem falsch eingegebenen Befehl vor oder korrigieren Tippfehler sogar direkt und machen passend weiter. Doch wie funktionieren solche Features eigentlich? Wir schauen uns das Prinzip an, indem wir eine ähnliche Funktion zur Empfehlung ähnlicher Befehle selbst implementieren.
- Problem definieren
→ Das Problem, einen ähnlichen Befehl zu finden, lässt sich in das Problem „die Ähnlichkeit zweier Zeichenketten prüfen“ umformulieren.
- Edit Distance
→ Levenshtein-Distanz
- Problem lösen
5 Kommentare
Ich komme nicht umhin, dieses Repo zu erwähnen.
https://github.com/nvbn/thefuck#how-it-works
Über das Beispiel ganz oben musste ich eine ganze Weile lachen, haha
Ich war also doch nicht der Einzige, der sich vertut..
Das war eine interessante Geschichte. Levenshtein-Distanz … wieder etwas Neues gelernt.
Mit Interesse gelesen.
Mich würde allerdings interessieren, ob git wirklich auf diese Weise implementiert ist.
Es scheint auch möglich zu sein, statistisch die Erfahrungen der Nutzer zu sammeln und auf dieser Basis zu verarbeiten.
git verwendet die Levenshtein-Distanz. Im git-Abschnitt unter dem folgenden Link findet sich der entsprechende Teil des git-Quellcodes. :)
https://vishnubharathi.codes/blog/levenshtein-distance/
Ein Ansatz, der statistisch die Erfahrungen der Nutzer nutzt, wäre ebenfalls interessant, aber a) sind git-Befehle kurz und b) ist ihre Anzahl begrenzt, sodass sich mit Levenshtein offenbar ausreichend gut das Gewünschte umsetzen lässt.