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


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, и именно так я ее решил.
Джефф Веллинг

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.