2012-06-16 7 views
13

Sto facendo qualche ricerca sugli algoritmi di corrispondenza delle stringhe. Uno dei più utilizzabili che ho trovato è quello che usa il mio cellulare (Android 2.3.4 su SE xPeria neo v).Quale algoritmo viene utilizzato nel correttore ortografico di Android?

enter image description here

Come si vede nello screenshot, ho premuto i personaggi jiw che sono vicino quelli che volevo e che ha suggerito in modo corretto.

Sembra che l'algoritmo sia simile a levenstein distance (distanza tra il mio input e il dizionario). In qualche modo i personaggi vicini hanno un valore di pari a nella corrispondenza delle stringhe.

Qualche idea sull'algoritmo in uso?

+5

Alcuni degli elettori vicini possono spiegare perché pensano che questo non sia costruttivo? La domanda è molto precisa ("Quale algoritmo è usato?") E il codice sorgente per il sistema è pubblicamente disponibile in modo che la domanda possa essere possibile rispondere. –

+4

+1 per una domanda concisa, comprensibile, interessante. – goat

+2

Domanda di programmazione molto interessante, +1 VOTA e buona fortuna per il tuo progetto – mm24

risposta

3

Ho tirato il Android source code e ho cercato il controllo ortografico. Ho trovato questo elenco che sembra contenere le fonti che stai cercando:

packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/ 

Il file spellcheck/AndroidSpellCheckerService.java sembra quello di fare tutto il lavoro pesante, ma Suggest.java sembra anche essere coinvolta in qualche modo.

2

Questo excellent information retrieval book ha una sezione dettagliata su Levenstein distance, comprese le variazioni ponderate. I pesi potrebbero quindi essere considerati come la distanza tra i tasti sulla tastiera.

+0

Grazie @phs. L'articolo fornisce molte informazioni e mi indica il mio primo sospetto che la distanza di Levenstein sia la metrica per il confronto delle stringhe in Android. Ma ancora solo sospetti ... – Odys