Comment sélectionner une option la plus probable dans la liste en fonction du texte de l'utilisateur

11

Je travaille sur une application OCR où je dois sélectionner une option basée sur la saisie de texte utilisateur.

Ex:
Available Options:
["python", "ruby", "java", "clojure", "haskell"]

Input: kava
Output: java

Input: ruby
Output: ruby

Input: clujuro
Output: clojure

etc.. 

mon application est basée sur python, existe-t-il déjà un algorithme pour résoudre ce problème.

Shiv Deepak
la source
1
Il ne vaut peut-être pas la peine de le corriger maintenant, mais l'OMI un titre plus approprié serait "comment déterminer la distance (différence) entre les cordes"
Jeff Welling
3
@Jeff: et puis je ne trouverais jamais cette question, car je n'aurais aucune idée que ce dont j'ai besoin pourrait être appelé "la différence de distance" ... Et ce n'est pas la seule raison de ne pas mettre la solution dont vous avez besoin dans le question. Cela peut empêcher les gens de suggérer des solutions alternatives au problème que vous rencontrez réellement. Exemple concret: la réponse de haut-parleur.
Marjan Venema
1
Mon point était, maintenant que vous le savez, l'utilisation d'un titre plus précis peut aider à attirer des réponses de personnes qui ne savent pas ce que signifie "comment sélectionner le plus probable ..." mais qui reconnaîtraient la "distance entre les chaînes", mais À chacun ses goûts. C'était juste une suggestion. Je ne savais pas ce que vous vouliez dire et j'ai failli ne pas cliquer sur votre question car c'est tout.
Jeff Welling

Réponses:

10

Cela se fait par des algorithmes de la catégorie " correspondance approximative des chaînes ". Une mesure courante pour comparer deux chaînes est appelée la distance de Levenshtein . Il y a une implémentation python disponible ici .

Vous comparez essentiellement l'entrée aux sorties possibles et choisissez celle avec la plus petite distance à la sortie souhaitée.

L'article de Wikipédia mentionne également divers autres algorithmes que vous pouvez essayer au cas où vous auriez besoin de quelque chose de plus spécifique.

Faucon
la source
J'ai eu un problème similaire en rubis et c'est exactement comme ça que je l'ai résolu.
Jeff Welling