Capstone de Ciencia de Datos (Coursera / Johns Hopkins x SwiftKey)

El problema y el algoritmo

Problema: escribir en el móvil es lento. Un teclado inteligente adivina la próxima palabra y ahorra pulsaciones. Solución: una app web que sugiere la palabra siguiente de una frase en inglés.

Datos: corpus SwiftKey en inglés, 556 MB, 102 millones de palabras.

Algoritmo (n-gramas con stupid backoff):

  1. Se limpia el texto (minúsculas, sin números ni símbolos, sin lenguaje ofensivo).
  2. Se cuenta con qué frecuencia cada palabra sigue a las 1, 2 y 3 palabras anteriores.
  3. Para predecir se miran las últimas 3 palabras escritas. Si esa secuencia nunca se vio, se retrocede a las últimas 2 y luego a la última, penalizando cada paso (x0,4).
  4. Se muestran las 3 palabras con mayor puntuación.

Para mantenerlo ligero: vocabulario de 15.000 palabras, solo secuencias vistas al menos 2 veces y las 3 mejores continuaciones por contexto.

La aplicación

captura de la app

Cómo usarla 1. Escribe una frase en inglés en el cuadro (por ejemplo Thanks for the). 2. La palabra más probable aparece en grande; pulsa Predecir o espera un instante. 3. Haz clic en una opción para añadirla al texto, o prueba los ejemplos.

Resultados

Evaluación con 4.000 frases reservadas que el modelo no vio en el entrenamiento:

Medida Resultado
Acierto con la 1.ª sugerencia 16,6 %
La palabra correcta está entre las 3 sugerencias 27,4 %
Tiempo por predicción 1,5 ms
Tamaño del modelo 3,4 MB

Con tan poco peso, el modelo corre sin problemas en la nube gratuita y en dispositivos móviles.

Siguientes pasos

  • Mejor suavizado (Kneser-Ney) y más datos para subir el acierto.
  • Completar la palabra que se está escribiendo, no solo la siguiente.
  • Aprender del usuario y añadir otros idiomas del corpus (alemán, finés, ruso).

Pruébala: https://lraigosov.shinyapps.io/siguiente-palabra/

Gracias.