Як вибрати найбільш імовірний варіант зі списку на основі введення тексту користувача


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: і тоді я ніколи не знайду цього питання, тому що я б не мав уявлення, що те, що мені потрібно, можна назвати "різницею відстаней" ... І це не єдина причина, щоб не помістити потрібне вам рішення в питання. Це може заважати людям пропонувати альтернативні варіанти вирішення проблеми, яка є насправді. Справа в суті: відповідь гучномовця.
Мар'ян Венема

1
Моя точка зору була, тепер, коли ви робите знаєте, використовуючи більш точну назву може допомогти залучити відповіді від людей , які не знають , що «як вибрати найбільш імовірним ...» означає , але хто визнає «відстань між рядками», але кожному своє. Це була лише пропозиція. Я не знав, що ви мали на увазі, і майже не натискав на ваше запитання через це все.
Джефф Веллінг

Відповіді:


10

Це робиться алгоритмами категорії « приблизне узгодження рядків ». Поширена міра порівняння двох рядків називається відстань Левенштейна . Там є реалізація пітон доступна тут .

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

У статті вікіпедії також згадуються різні інші алгоритми, які можна спробувати, якщо вам потрібно щось більш конкретне.


У мене була аналогічна проблема в рубіні, і саме цим я її вирішив.
Джефф Веллінг

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.