Come selezionare un'opzione più probabile dall'elenco in base all'input del testo dell'utente


11

Sto lavorando su un'applicazione OCR in cui devo selezionare un'opzione in base all'immissione di testo da parte dell'utente.

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

Input: kava
Output: java

Input: ruby
Output: ruby

Input: clujuro
Output: clojure

etc.. 

la mia applicazione è basata su Python, esiste già un algoritmo per risolvere questo problema.


1
Potrebbe non valerne la pena correggerlo ora, ma IMO un titolo più appropriato sarebbe "come determinare la distanza (differenza) tra le stringhe"
Jeff Welling

3
@Jeff: e quindi non avrei mai trovato questa domanda, perché non avrei idea che ciò di cui avrei bisogno potesse essere chiamato "la differenza di distanza" ... E questa non è l'unica ragione per non mettere la soluzione di cui hai bisogno nel domanda. Potrebbe impedire alle persone di suggerire soluzioni alternative al problema che si sta effettivamente riscontrando. Caso in questione: risposta ad alta voce.
Marjan Venema,

1
Il mio punto era, ora che si fa sapere, con un titolo più accurata può contribuire ad attrarre risposte da persone che non sanno che cosa "come selezionare un più probabile ..." mezzi ma chi avrebbe riconosciuto "distanza tra le stringhe", ma a ciascuno il suo. Era solo un suggerimento. Non sapevo cosa volevi dire e quasi non ho fatto clic sulla tua domanda perché è tutto.
Jeff Welling,

Risposte:


10

Questo viene fatto dagli algoritmi della categoria " corrispondenza approssimativa della stringa ". Una misura comune per confrontare due stringhe è chiamata distanza di Levenshtein . C'è un'implementazione di Python disponibile qui .

Fondamentalmente si confronta l'ingresso con le uscite possibili e si sceglie quello con la distanza minima all'uscita desiderata.

L'articolo di Wikipedia menziona anche vari altri algoritmi che puoi provare nel caso in cui tu abbia bisogno di qualcosa di più specifico.


Ho avuto un problema simile nel rubino ed è esattamente come l'ho risolto.
Jeff Welling,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.