Как выбрать наиболее вероятный вариант из списка на основе пользовательского ввода текста

11

Я работаю над приложением OCR, где мне нужно выбрать опцию, основанную на вводе текста пользователем.

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

Input: kava
Output: java

Input: ruby
Output: ruby

Input: clujuro
Output: clojure

etc.. 

мое приложение основано на Python, существует ли алгоритм для решения этой проблемы.

Шив Дипак
источник
1
Возможно, не стоит исправлять это сейчас, но IMO более подходящим заголовком было бы «как определить расстояние (разницу) между строками»
Джефф Веллинг,
3
@Jeff: и тогда я бы никогда не нашел этот вопрос, потому что я бы не знал, что то, что мне нужно, можно назвать «разницей расстояний» ... И это не единственная причина, чтобы не помещать необходимое решение в вопрос. Это может помешать людям предлагать альтернативные решения проблемы, которая у вас есть. Показательный пример: ответ Loudsight.
Марьян Венема
1
Моя точка зрения была, теперь, когда вы делаете знаете, используя более точное название может помочь привлечь ответы от людей , которые не знают , что «как выбрать наиболее вероятным ...» означает , но кто признает «расстояние между строками», но каждому свое. Это было просто предложение. Я не знал, что вы имели в виду, и почти не щелкнул по вашему вопросу, потому что это все.
Джефф Веллинг

Ответы:

10

Это делается с помощью алгоритмов категории « приблизительное сопоставление строк ». Обычная мера для сравнения двух строк называется расстоянием Левенштейна . Там есть реализация питон доступна здесь .

Вы в основном сравниваете вход с возможными выходами и выбираете тот, у которого наименьшее расстояние до желаемого выхода.

В статье Википедии также упоминаются различные другие алгоритмы, которые вы можете попробовать, если вам нужно что-то более конкретное.

сокол
источник
У меня была похожая проблема в ruby, и именно так я ее решил.
Джефф Веллинг