Tema 5
Tema 5
Ideas clave 4
5.1. Introducción y objetivos 4
5.2. Introducción al modelo del lenguaje 4
5.3. Modelos estadísticos del lenguaje basados en N-
© Universidad Internacional de La Rioja (UNIR)
gramas 6
5.4. Técnicas de suavizado 14
5.5. Modelos de representación vectorial 20
4.6. Referencias bibliográficas 25
A fondo 26
Test 27
Esquema
© Universidad Internacional de La Rioja (UNIR)
Objetivos
Definir qué es un modelo del lenguaje y para qué tareas de PLN puede ser útil.
Explicar cómo poder construir un modelo de lenguaje basado en n-gramas, y cómo
poder evaluar que funciona correctamente.
Identificar las limitaciones del modelado del lenguaje en base a n-gramas, y cómo
se pueden solucionar algunas de ellas con técnicas de suavizado.
Entender qué son los modelos de representación vectorial de los textos, para qué
sirven, y cómo se pueden construir mediante el modelado con bolsas de palabras.
Este mismo concepto es el que tratan de resolver los modelos de lenguaje (LM,
Language Model): teniendo un conocimiento estadístico de la lengua, ven qué
probabilidades hay en una secuencia de que continue con un determinado elemento
u otro. En general, con secuencia se hace referencia a secuencias de palabras, y con
elementos a las palabras que la forman, de manera que se obtiene la probabilidad de
que una determinada palabra siga a la secuencia previa de palabras
Los LM son útiles para distintas tareas de PLN. Un ejemplo de ello es en el caso del
reconocimiento de voz. Por ejemplo, supongamos el caso de un sistema de
reconocimiento de voz que recibe un mensaje que puede corresponder a las
siguientes frases:
Con el conocimiento que se tiene en el LM, se puede detectar que dada la secuencia
previa a la palabra introduce, es más probable que se tenga la primera secuencia que la
segunda. No sólo eso, sino que como se puede ver, la secuencia de palabras traducida al
castellano no sigue el orden textual de la secuencia de palabras en inglés. De esta
manera, es más probable tener una construcción en castellano como «Él es mi amigo
Stephen, déjame que te lo presente» que una más textual como «Él es mi amigo Stephen,
déjame que lo presente a ti».
Es decir, que la probabilidad se obtiene como el número de veces que aparece que
después de esa secuencia dividido entre el número de veces que se tiene esa
secuencia. Estos valores se obtienen en base a un análisis previo de uno o varios
corpus de la lengua.
𝑛𝑛
𝑃𝑃(𝑤𝑤𝑖𝑖 : 𝑛𝑛) = 𝑃𝑃(𝑤𝑤1 )𝑃𝑃(𝑤𝑤2 |𝑤𝑤1)𝑃𝑃(𝑤𝑤3 |𝑤𝑤1:2) … 𝑃𝑃(𝑤𝑤𝑛𝑛 |𝑤𝑤1:𝑛𝑛−1 ) = � 𝑃𝑃(𝑤𝑤𝑘𝑘 |𝑤𝑤1:𝑘𝑘−1 )
𝑘𝑘=1
© Universidad Internacional de La Rioja (UNIR)
La cuestión es que a medida que vaya creciendo la secuencia, esta expresión irá
también creciendo. Sin embargo, en muchas ocasiones es suficiente con definir un
tamaño de histórico previo concreto y calcular las probabilidades sólo dentro de esa
subsecuencia. Esto es lo que se hace con el modelo de n-gramas, donde la
𝑛𝑛
𝐶𝐶(𝑤𝑤𝑘𝑘−1 , 𝑤𝑤𝑘𝑘 )
𝑃𝑃(𝑤𝑤𝑘𝑘 |𝑤𝑤𝑘𝑘−1 ) =
𝐶𝐶(𝑤𝑤𝑘𝑘−1 )
𝐶𝐶(𝑤𝑤𝑘𝑘−𝑁𝑁+1:𝑘𝑘−1 , 𝑤𝑤𝑘𝑘 )
𝑃𝑃(𝑤𝑤𝑘𝑘 |𝑤𝑤𝑘𝑘−𝑁𝑁+1:𝑘𝑘−1 ) =
𝐶𝐶(𝑤𝑤𝑘𝑘−𝑁𝑁+1:𝑘𝑘−1 )
Por este motivo, existen también otro tipo de evaluaciones denominadas intrínsecas,
en las que se evalúan los resultados del LM con respecto a un conjunto de datos de
referencia. Este conjunto de datos de referencia se puede obtener directamente del
corpus que se fuese a usar para entrenar el LM, haciendo una separación en datos de
entrenamiento/test como se hace con los modelos de aprendizaje automático.
1 𝑁𝑁 1
𝑃𝑃𝑃𝑃(𝑊𝑊) = 𝑃𝑃(𝑤𝑤1 , 𝑤𝑤2 , … , 𝑤𝑤𝑁𝑁 )−𝑁𝑁 = �
𝑃𝑃(𝑤𝑤1 , 𝑤𝑤2 , … , 𝑤𝑤𝑁𝑁 )
𝑁𝑁
𝑁𝑁 1
𝑃𝑃𝑃𝑃(𝑊𝑊) = ��
𝑃𝑃(𝑤𝑤𝑖𝑖 |𝑤𝑤1 , … , 𝑤𝑤𝑖𝑖−1 )
𝑖𝑖=1
© Universidad Internacional de La Rioja (UNIR)
𝑁𝑁
𝑁𝑁
1
𝑃𝑃𝑃𝑃(𝑊𝑊) = ��
𝑃𝑃(𝑤𝑤𝑖𝑖 | 𝑤𝑤𝑖𝑖−1 )
𝑖𝑖=1
Si, por ejemplo, el LM está generado sobre textos de Shakespeare, las secuencias que
se podrán generar con ese LM serán distintas de las que se podrían generar con un
LM entrenado sobre textos de noticias, a pesar de que haya n-gramas que puedan
© Universidad Internacional de La Rioja (UNIR)
Por lo que, además del género, hay que tener en cuenta la variedad o el
dialecto de los textos utilizados.
Cuanto mayor sea el n-grama, las secuencias que se pueden generar serán
más fieles al texto original, pero precisamente por esto, será también más
fácil que haya secuencias válidas que no estén contempladas en el LM.
© Universidad Internacional de La Rioja (UNIR)
Figura 1. Ejemplo de secuencias generadas con un LM entrenado en textos de Shakespeare. Fuente: Jurafsky y
Martin, 2020.
Palabras desconocidas
Además de palabras que sean OOV, ocurre también que pueden aparecer palabras
en el conjunto de datos de test que, aunque existen en el de entrenamiento,
aparecen en contextos distintos. Es decir, que aparecen, por ejemplo, tenemos «gran
perro» en el conjunto de datos de test cuando en el de entrenamiento sólo se tenía
«pequeño perro». Para evitar que se dé directamente un valor de probabilidad 0 a
estos eventos (que es lo que ocurriría con las técnicas vistas hasta ahora), se aplican
técnicas denominadas de suavizado (smoothing), con las que se busca asignar un
pequeño valor de probabilidad para esos eventos no vistos, de manera que sus
probabilidades no sean 0 y, así, sea posible generar esas secuencias con el LM.
Suavizado de Laplace
Una de las técnicas más sencillas para hacer suavizado es el suavizado de Laplace,
donde se analizan todas las combinaciones posibles de n-gramas que se pueden dar
con los datos de entrenamiento (no sólo las que ocurren como tal). Con ello, se
aumentan en 1 todas las ocurrencias de n-gramas, de manera que los que no ocurren
en los datos de entrenamiento (y que tendrían, por tanto, una probabilidad de 0 al
dar 0 la cuenta de cuantas veces ocurre) tendrían una probabilidad por defecto
© Universidad Internacional de La Rioja (UNIR)
Esto se ve a modo de ejemplo en la Figura 2 y 3, donde se tiene una matriz con los
bigramas posibles que se obtendrían sobre un corpus de entrenamiento de ejemplo,
Figura 2. Ejemplo de combinaciones de n-gramas (bigramas) antes (arriba) y después (abajo) de aplicar el
suavizado de Laplace. Fuente: Jurafsky y Martin, 2020.
Figura 3. Ejemplo de combinaciones de n-gramas (bigramas) antes (arriba) y después (abajo) de aplicar el
suavizado de Laplace (continuación). Fuente: Jurafsky y Martin, 2020.
Como se puede ver, todas las probabilidades que eran 0 porque no se daban esos
bigramas, ahora tienen un valor de 1. Las demás probabilidades también aumentan
en 1.
Una vez se tiene esto se recalcularían las probabilidades de los n-gramas. A modo de
ejemplo, para el caso de unigramas sería:
© Universidad Internacional de La Rioja (UNIR)
𝑐𝑐𝑖𝑖 𝑐𝑐𝑖𝑖 + 1
𝑃𝑃(𝑤𝑤𝑖𝑖 ) = → 𝑃𝑃𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿 (𝑤𝑤𝑖𝑖 ) =
𝑁𝑁 𝑁𝑁 + 𝑉𝑉
𝐶𝐶(𝑤𝑤𝑛𝑛−1 , 𝑤𝑤𝑛𝑛 )
𝑃𝑃(𝑤𝑤𝑛𝑛 |𝑤𝑤𝑛𝑛−1 ) = →
𝐶𝐶(𝑤𝑤𝑛𝑛−1 )
𝑐𝑐𝑖𝑖 + 1 𝑐𝑐𝑖𝑖∗ 𝑁𝑁
𝑃𝑃𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿𝐿 (𝑤𝑤𝑖𝑖 ) = = → 𝑐𝑐𝑖𝑖∗ = (𝑐𝑐𝑖𝑖 + 1)
𝑁𝑁 + 𝑉𝑉 𝑁𝑁 𝑁𝑁 + 𝑉𝑉
De esta manera se puede ver cómo va a cambiar el peso que tiene un determinado
n-grama en el cálculo de las probabilidades finales. Así, al aplicar la técnica de
suavizado, es como si cambiase el número de veces que aparecía el n-grama
originalmente (𝑐𝑐𝑖𝑖 ) para pasar tener otro valor (𝑐𝑐𝑖𝑖∗ ).
© Universidad Internacional de La Rioja (UNIR)
𝑐𝑐 ∗
𝑑𝑑𝑐𝑐 =
𝑐𝑐
Esto se puede extender para el caso de otros n-gramas. A modo de ejemplo y para un
bigrama sería:
Suavizado Add-k
En este algoritmo se tiene que especificar a priori ese valor de k. Esto es algo que
también se puede considerar como un hiperparámetro a definir tras seguir un
proceso de optimización de los resultados sobre los datos de validación.
Backoff e interpolación
Los algoritmos vistos hasta ahora ayudan a resolver el problema de las combinaciones
de n-gramas con frecuencia 0. Ahora bien, otra consideración que se puede hacer es
que cuando no se tengan casos de un determinado n-grama, se estime esa
probabilidad con un n-grama más pequeño. Esto es lo que se lleva a cabo con el
algoritmo de backoff.
Por ejemplo, trabajando con trigramas, si se quiere calcular 𝑃𝑃(𝑤𝑤𝑛𝑛 |𝑤𝑤𝑛𝑛−2 𝑤𝑤𝑛𝑛−1 ) y no
se tiene el trigrama 𝑤𝑤𝑛𝑛−2 𝑤𝑤𝑛𝑛−1 𝑤𝑤𝑛𝑛 , se puede estimar esa probabilidad usando el
bigrama 𝑃𝑃(𝑤𝑤𝑛𝑛 |𝑤𝑤𝑛𝑛−1 ). De igual manera, si no se tienen casos para obtener
𝑃𝑃(𝑤𝑤𝑛𝑛 |𝑤𝑤𝑛𝑛−1 ), se puede estimar con la del unigrama 𝑃𝑃(𝑤𝑤𝑛𝑛 ). Así, este algoritmo se va
aplicando de manera recursiva sobre los n-gramas que no aparecen hasta encontrar
uno de menor orden que sí esté.
𝑃𝑃𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖 (𝑤𝑤𝑛𝑛 |𝑤𝑤𝑛𝑛−2 𝑤𝑤𝑛𝑛−1 ) = 𝜆𝜆1 𝑃𝑃(𝑤𝑤𝑛𝑛 ) + 𝜆𝜆2 𝑃𝑃(𝑤𝑤𝑛𝑛 | 𝑤𝑤𝑛𝑛−1 ) + 𝜆𝜆3 𝑃𝑃(𝑤𝑤𝑛𝑛 |𝑤𝑤𝑛𝑛−2 𝑤𝑤𝑛𝑛−1 )
Una última variación del algoritmo de backoff es el algoritmo Katz backoff, donde se
usan las probabilidades originales cuando ese n-grama existe en el corpus de
entrenamiento, y en caso de que no exista, se busca el primer n-grama de menor
orden para el que sí se tengan datos, ponderando ese valor en función de un
parámetro (como en el caso de la interpolación) que dependerá de la información de
contexto, como en el caso de la interpolación ya mencionado.
Suavizado de Kneser-Ney
En el vídeo Técnicas de suavizado se verá qué son y cómo aplicar técnicas de suavizado
para la construcción de modelos del lenguaje.
La cuestión es cómo construir esos vectores que modelen el contenido de los textos.
Existen muchas aproximaciones para hacerlo, y en este tema presentaremos algunas
de las más sencillas. Ahora bien, hoy en día existen representaciones vectoriales más
complejas basadas en redes neuronales, que se verán en detalle en el siguiente
capítulo.
De esta manera, partiendo de un corpus de varios textos, esta técnica daría como
salida una matriz donde cada fila representa uno de esos textos, y cada columna
representa cada una de las palabras que aparecen en el corpus.
Cada documento, representado por un vector con varias componentes, se puede ver
también desde la perspectiva de las matrices de rasgos que se usan en aprendizaje
automático para entrenar los modelos. Así, cada componente sería un rasgo o
variable, pudiéndose usar directamente estas matrices para entrenar los modelos.
Esto puede utilizarse para, por ejemplo, tareas de análisis de sentimiento, donde las
variables de entrada de un modelo supervisado son precisamente los elementos de
la matriz BOW, y la variable de salida sería la categoría del sentimiento (identificada
previamente) asociada a cada uno de esos documentos. Con estas representaciones
se tiene, por tanto, un vector por texto de una dimensionalidad N donde N es el
número de palabras del vocabulario del corpus. Por este motivo es importante
también normalizar antes los textos de cara a reducir la dimensionalidad de los
vectores.
Dentro del esquema de BoW, los valores que aparecen en la matriz se pueden
calcular de distinta manera. Existen dos aproximaciones, las locales y las globales. En
el caso de las locales, los valores de las componentes del vector que representa cada
© Universidad Internacional de La Rioja (UNIR)
Uno de los problemas de las representaciones binarias es que se ponderan por igual
todas las palabras, independientemente de que aparezcan mucho o poco en un
determinado texto. Por este motivo, existen otras representaciones, como las de
frecuencia de términos (Term Frequency, TF) donde en lugar de usar valores binarios,
se cuenta el número de veces que aparece la palabra en el texto en cuestión.
𝑇𝑇𝑇𝑇�𝑡𝑡𝑖𝑖 , 𝑑𝑑𝑗𝑗 � = 𝑓𝑓𝑖𝑖𝑖𝑖 , 𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠 𝑙𝑙𝑙𝑙 𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 𝑑𝑑𝑑𝑑𝑑𝑑 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡 𝑡𝑡𝑖𝑖 𝑒𝑒𝑒𝑒 𝑑𝑑𝑗𝑗
𝑓𝑓𝑖𝑖𝑖𝑖
𝑊𝑊𝑊𝑊𝑊𝑊�𝑡𝑡𝑖𝑖 , 𝑑𝑑𝑗𝑗 � =
∑𝑡𝑡𝑝𝑝 ∈ 𝑑𝑑𝑗𝑗 𝑓𝑓𝑝𝑝𝑝𝑝
© Universidad Internacional de La Rioja (UNIR)
Representaciones globales
Una de las utilidades de construir las componentes de los vectores con TF-IDF es la
siguiente. Con las técnicas vistas previamente, como TF, se puede acabar dando
importancia a palabras poco representativas que aparecen mucho en cualquier tipo
de texto. Es verdad que esto ocurre principalmente con palabras como
determinantes, conjunciones que se eliminarían al quitar las stopwords. Sin embargo,
puede haber otras palabras que no sean stopwords y que no sean representativas
por aparecer mucho. Por ejemplo, teniendo textos de sinopsis de películas, la palabra
«película» podría aparecer mucho en todos ellos, pero no es representativa para
modelar el contenido de esos textos. Esto precisamente se soluciona con TF-IDF,
donde el valor de la frecuencia (TF) se pondera en función de la rareza de las palabras
dentro del corpus de la siguiente manera:
𝑁𝑁
𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇𝑇�𝑡𝑡𝑖𝑖 , 𝑑𝑑𝑗𝑗 � = 𝑓𝑓𝑖𝑖𝑖𝑖 × log � �
𝑑𝑑𝑑𝑑(𝑡𝑡𝑖𝑖 )
Donde 𝑓𝑓𝑖𝑖𝑖𝑖 es la frecuencia del token 𝑡𝑡𝑖𝑖 en el documento (o texto) 𝑑𝑑𝑗𝑗 , N el número de
documentos en el corpus, y 𝑑𝑑𝑑𝑑(𝑡𝑡𝑖𝑖 ) el número de documentos en el corpus donde
aparece el token 𝑡𝑡𝑖𝑖 .
5. ¿Qué pasos se pueden seguir para tener un modelo de lenguaje que sea capaz de
trabajar con palabras desconocidas?
A. 1) Usar una lista de palabras abierta que pueda cambiar. 2) Convertir las
palabras del conjunto de test que no estén en la lista a UNK. 3) Obtener las
probabilidades de esos tokens UNK.
B. 1) Usar una lista de palabras cerrada. 2) Convertir las palabras del conjunto
de entrenamiento que no estén en la lista a UNK. 3) Obtener las probabilidades
de esos tokens UNK.
C. 1) Usar una lista de palabras cerrada. 2) Convertir las palabras del conjunto
de test que no estén en la lista a UNK. 3) Obtener las probabilidades de esos
tokens UNK.
D. Ninguna de las anteriores.
© Universidad Internacional de La Rioja (UNIR)