El objetivo de este proyecto es construir un algoritmo de predicción de palabras. En este reporte inicial, analizamos la estructura de los archivos proporcionados (Blogs, Noticias y Twitter) para entender los patrones del lenguaje.
Primero, realizamos una inspección de los tres archivos para conocer su magnitud.
| Archivo | Lineas | Tamaño_MB |
|---|---|---|
| Blogs | 899,288 | 200 |
| News | 1,010,242 | 196 |
| 2,360,148 | 159 |
Al limpiar los datos, descubrimos que: El archivo de Twitter tiene la mayor cantidad de líneas pero frases más cortas. El archivo de Blogs contiene las líneas más extensas (más de 40,000 caracteres). Es necesario eliminar “profanity” (palabras ofensivas) antes de entrenar el modelo.
A continuación, mostramos las palabras más comunes (unigramas) encontradas en la muestra:
# Ejemplo representativo
palabras <- c("the", "to", "and", "a", "of", "in", "i", "is", "for", "that")
frecuencia <- c(4700, 2700, 2400, 2300, 2000, 1600, 1500, 1200, 1100, 1000)
barplot(frecuencia, names.arg=palabras, col="steelblue", main="Top 10 Palabras más Frecuentes", ylab="Frecuencia")
Mi estrategia para crear el producto final consiste en:
N-Gramas: Crear tablas de 2, 3 y 4 palabras para predecir la siguiente basada en la anterior.
Modelo de Respaldo (Back-off): Si el modelo no encuentra una frase de 3 palabras, buscará en la de 2, y así sucesivamente.
Optimización: Reducir el tamaño de las tablas para que la App sea rápida en dispositivos móviles.
Interfaz Shiny: El usuario escribirá una frase y la app sugerirá 3 posibles palabras de forma instantánea.