Cara memilih opsi yang paling memungkinkan dari daftar berdasarkan pada Input teks pengguna

11

Saya mengerjakan Aplikasi OCR di mana saya harus memilih opsi berdasarkan input teks pengguna.

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

Input: kava
Output: java

Input: ruby
Output: ruby

Input: clujuro
Output: clojure

etc.. 

aplikasi saya berbasis python, apakah sudah ada algoritma untuk menyelesaikan masalah ini.

Shiv Deepak
sumber
1
Mungkin tidak layak untuk diperbaiki sekarang tetapi IMO judul yang lebih tepat adalah "bagaimana menentukan jarak (perbedaan) antara string"
Jeff Welling
3
@ Jeff: dan kemudian saya tidak akan pernah menemukan pertanyaan ini, karena saya tidak akan tahu bahwa apa yang saya butuhkan mungkin disebut "perbedaan jarak" ... Dan itu bukan satu-satunya alasan untuk tidak memasukkan solusi yang Anda butuhkan di pertanyaan. Ini mungkin menghalangi orang untuk menyarankan solusi alternatif untuk masalah yang Anda alami. Contoh kasus: jawaban loudsight.
Marjan Venema
1
Maksud saya adalah, sekarang Anda sudah tahu, menggunakan judul yang lebih akurat dapat membantu menarik jawaban dari orang-orang yang tidak tahu apa "bagaimana memilih yang paling mungkin ..." berarti tetapi siapa yang akan mengenali "jarak antara string", tetapi untuk masing-masing miliknya. Itu hanya saran. Saya tidak tahu apa yang Anda maksud dan hampir tidak mengklik pertanyaan Anda karena itu saja.
Jeff Welling

Jawaban:

10

Ini dilakukan oleh algoritme kategori " perkiraan string yang cocok ". Ukuran umum untuk membandingkan dua string disebut jarak Levenshtein . Ada implementasi python yang tersedia di sini .

Anda pada dasarnya membandingkan input dengan output yang mungkin dan memilih satu dengan jarak terkecil ke output yang diinginkan.

Artikel wikipedia juga menyebutkan berbagai algoritma lain yang dapat Anda coba seandainya Anda membutuhkan sesuatu yang lebih spesifik.

Elang
sumber
Saya memiliki masalah yang sama di ruby ​​dan ini adalah persis bagaimana saya menyelesaikannya.
Jeff Welling