Tema
Modelos de n gramas
- Lenguaje natural y modelos de lenguaje
- Nivel base
- Con simulador interactivo
Un modelo de n gramas estima la probabilidad de la palabra siguiente contando cuántas veces siguió a las n menos 1 palabras anteriores en un corpus de entrenamiento.
Nombre en inglés
N-gram language models
Intuición
El supuesto de Markov recorta la memoria, porque en lugar de condicionar sobre toda la historia el modelo mira una ventana fija de dos o tres palabras y olvida el resto. Conviene imaginar un lector con memoria de tres segundos que aun así acierta mucho, ya que el idioma resulta muy predecible en distancias cortas y bastante menos a lo largo de un párrafo.
Fórmula
P(w_1 ... w_T) = \prod_{t=1}^{T} P(w_t | w_{t-n+1} ... w_{t-1}), con P(w_t | w_{t-1}) = C(w_{t-1} w_t) / C(w_{t-1})
Ejemplo resuelto
Sea un corpus de tres oraciones, cada una precedida por una marca de inicio, que son el gato duerme, el gato come y el perro duerme. Los conteos dan C(el) = 3, C(el gato) = 2 y C(el perro) = 1, de donde P(gato | el) = 2/3 = 0.667 y P(perro | el) = 1/3 = 0.333. Como C(gato) = 2 con una continuación duerme y otra come, resulta P(duerme | gato) = 0.5. La oración el gato duerme recibe entonces (3/3) por (2/3) por (1/2) = 1/3, es decir 0.333.
Errores frecuentes
- Contar bigramas sin marcas de inicio y de fin de oración, omisión que deja sin probabilidad a la primera palabra y permite que el modelo reparta masa entre oraciones que nunca terminan.
- Creer que subir n siempre mejora, cuando cada palabra añadida al contexto multiplica el número de contextos posibles y la mayoría termina con un solo conteo o con ninguno.
- Multiplicar probabilidades en coma flotante a lo largo de cientos de tokens, operación que llega a cero por desbordamiento inferior; la suma de logaritmos evita el problema sin alterar el orden de los resultados.
Ejercicio
Con el corpus del ejemplo, calcule la probabilidad de la oración el perro come bajo el modelo de bigramas sin suavizar.
Ver la solución
La oración se descompone en P(el | inicio) por P(perro | el) por P(come | perro). Los conteos dan P(el | inicio) = 3/3 = 1 y P(perro | el) = 1/3, pero tras perro solo se vio duerme, de modo que P(come | perro) = 0/1 = 0. Al aparecer un factor nulo, el producto entero vale 0 y la oración resulta imposible para el modelo, que es justo el defecto que corrige el suavizado.
Respuesta: 0
Temas relacionados
- Suavizado y palabras desconocidas
- Perplejidad
- Tokenización y normalización
- Probabilidad condicional y teorema de Bayes
Cursos a los que prepara
Simulador
Este tema tiene un simulador interactivo en la guía.