Quand on utilise plusieurs programmes dans le terminal, il arrive souvent de saisir une commande incorrecte et de voir le programme afficher une erreur. Pourtant, certains programmes comme Git ou npm peuvent aussi suggérer des commandes proches de celle mal saisie, voire corriger directement la faute de frappe et passer automatiquement à une commande appropriée. Mais comment cette fonctionnalité fonctionne-t-elle exactement ? Cet article en explore le principe en réimplémentant de manière similaire une fonctionnalité de suggestion de commandes proches.
- Définir le problème
→ Le problème consistant à trouver une commande similaire peut être reformulé comme « vérifier la similarité entre deux chaînes de caractères ».
- Distance d’édition (Edit distance)
→ Distance de Levenshtein (Levenshtein distance)
- Résoudre le problème
5 commentaires
Impossible de ne pas mentionner ce dépôt.
https://github.com/nvbn/thefuck#how-it-works
L’exemple tout en haut m’a bien fait rire pendant un moment haha
Je ne suis donc pas le seul à me tromper…
C’était une histoire intéressante. La distance de Levenshtein… j’ai appris quelque chose de nouveau.
J’ai lu ça avec plaisir.
Mais je me demande si git est vraiment implémenté de cette manière.
Il semble aussi possible d’utiliser une approche qui collecte statistiquement l’expérience des utilisateurs pour la traiter.
git utilise la distance de Levenshtein. Dans l’entrée consacrée à git au lien ci-dessous, on peut voir la partie correspondante du code source de git. :)
https://vishnubharathi.codes/blog/levenshtein-distance/
Une approche qui exploite statistiquement l’expérience des utilisateurs pourrait aussi être intéressante, mais a) les commandes git sont courtes et b) leur nombre est limité, donc la distance de Levenshtein semble suffire pour faire ce qu’on veut.