Cómo seleccionar una opción más probable de la lista basada en la entrada de texto del usuario

11

Estoy trabajando en una aplicación OCR donde necesito seleccionar una opción basada en la entrada de texto del usuario.

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

Input: kava
Output: java

Input: ruby
Output: ruby

Input: clujuro
Output: clojure

etc.. 

mi aplicación está basada en Python, ¿ya existe un algoritmo para resolver este problema?

Shiv Deepak
fuente
1
Puede que no valga la pena corregirlo ahora, pero en mi opinión, un título más apropiado sería "cómo determinar la distancia (diferencia) entre cadenas"
Jeff Welling
3
@Jeff: y luego nunca encontraría esta pregunta, porque no tendría idea de que lo que necesito podría llamarse "la diferencia de distancia" ... Y esa no es la única razón para no poner la solución que necesita en el pregunta. Puede impedir que las personas sugieran soluciones alternativas al problema que realmente tiene. Caso en cuestión: la respuesta de Loudsight.
Marjan Venema
1
Mi punto era, ahora que lo sabe, usar un título más preciso puede ayudar a atraer respuestas de personas que no saben qué significa "cómo seleccionar el más probable ...", pero que reconocerían "distancia entre cadenas", pero a cada uno lo suyo. Era solo una sugerencia. No sabía lo que querías decir y casi no hice clic en tu pregunta porque es todo.
Jeff Welling

Respuestas:

10

Esto se realiza mediante algoritmos de la categoría " coincidencia aproximada de cadenas ". Una medida común para comparar dos cadenas se llama distancia de Levenshtein . Hay una implementación de Python disponible aquí .

Básicamente, compara la entrada con las salidas posibles y elige la que tenga la menor distancia a la salida deseada.

El artículo de Wikipedia también menciona varios otros algoritmos que puedes probar en caso de que necesites algo más específico.

Halcón
fuente
Tuve un problema similar en ruby ​​y así es exactamente como lo resolví.
Jeff Welling