Como selecionar uma opção mais provável da lista com base no texto do usuário


11

Estou trabalhando em um aplicativo de OCR em que preciso selecionar uma opção com base na entrada de texto do usuário.

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

Input: kava
Output: java

Input: ruby
Output: ruby

Input: clujuro
Output: clojure

etc.. 

meu aplicativo é baseado em python, já existe um algoritmo para resolver esse problema.


1
Pode não valer a pena para corrigir agora, mas IMO um título mais apropriado seria "como determinar a distância (diferença) entre as cordas"
Jeff Welling

3
@ Jeff: e então eu nunca encontraria essa pergunta, porque eu não teria nenhuma idéia de que o que eu preciso poderia ser chamado de "a diferença de distância" ... E essa não é a única razão para não colocar a solução que você precisa no questão. Isso pode impedir as pessoas de sugerir soluções alternativas para o problema que você está realmente tendo. Caso em questão: resposta do megafone.
Marjan Venema

1
Meu ponto era, agora que você faz saber, utilizando um título mais preciso pode ajudar a atrair respostas de pessoas que não sabem o que é "como escolher um mais provável ..." meios, mas que iria reconhecer "a distância entre as cordas", mas cada um na sua. foi só uma sugestão. Eu não sabia o que você queria dizer e quase não cliquei na sua pergunta por causa disso.
Jeff Welling

Respostas:


10

Isso é feito por algoritmos da categoria " correspondência aproximada de seqüência de caracteres ". Uma medida comum para comparar duas cordas é chamada de distância de Levenshtein . Há uma implementação python disponível aqui .

Basicamente, você compara a entrada com as saídas possíveis e escolhe aquela com a menor distância para a saída desejada.

O artigo da Wikipedia também menciona vários outros algoritmos que você pode tentar caso precise de algo mais específico.


Eu tive um problema semelhante em ruby ​​e foi exatamente assim que resolvi.
91111 Jeff Welling

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.