2012-06-16 20 views
13

Estoy investigando algunos algoritmos de coincidencia de cadenas. Uno de los más útiles que encontré es el que usa mi teléfono móvil (Android 2.3.4 en SE xPeria neo v).¿Qué algoritmo se está utilizando en el corrector ortográfico de Android?

enter image description here

Como se ve en la captura de pantalla, apreté los personajes jiw que son cerca de los que quería y se sugirió correctamente.

Parece que el algoritmo es similar a levenstein distance (distancia entre mi entrada y el diccionario). De alguna manera, los caracteres cercanos tienen algún valor de en la coincidencia de cadenas.

¿Alguna idea sobre el algoritmo que se está utilizando?

+5

¿Pueden algunos de los votantes cercanos explicar por qué creen que esto no es constructivo? La pregunta es muy precisa ("¿Qué algoritmo se usa?") Y el código fuente del sistema está disponible públicamente, por lo que la pregunta puede ser posible. –

+4

+1 para una pregunta concisa, responsable e interesante. – goat

+2

Pregunta de programación muy interesante, +1 VOTO y buena suerte para su proyecto – mm24

Respuesta

3

Tiré el Android source code y busqué la revisión ortográfica. He encontrado este directorio que parece contener las fuentes que usted está buscando:

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

spellcheck/AndroidSpellCheckerService.java El archivo se ve como el que hace todo el trabajo pesado, pero Suggest.java también parece estar implicado de alguna manera.

2

Este excellent information retrieval book tiene una sección detallada en Levenstein distance, incluyendo variaciones ponderadas. Los pesos se pueden tomar como la distancia entre las teclas de su teclado.

+0

Gracias @phs. El artículo proporciona mucha información y me señala mi sospecha inicial de que la distancia de Levenstein es la métrica para la comparación de cadenas en Android. Pero aún solo sospechas ... – Odys

Cuestiones relacionadas