Saltar al contenido
Todos los trabajos

Datos no estructurados · PLN

Letterboxd · De qué habla quien reseña cine

Topic modeling sobre reseñas de películas estrenadas en 2024. El modelo encontró seis tópicos, y al mirarlos de cerca resultó que la mitad no hablaban de cine: separaban idiomas. Eso convirtió un hallazgo incómodo en la pregunta siguiente.

PapelEquipo de tres · trabajo conjunto
AutoresAlfredo Martín · Marcos Fernández · Pedro Pérez
Año2026 · MUBA, ICADE
HerramientasPython · spaCy · NLTK · Gensim · pyLDAvis
3 de 6tópicos eran idiomas
48idiomas en el corpus
32,3%de reseñas en tópicos de idioma

El corpus

De 847.000 películas a 12.000 reseñas.

El dataset de partida son 1,12 GB y 847.209 películas de Letterboxd, cada una con hasta diez reseñas. Filtrando por año de estreno quedan 40.486 películas de 2024 y 119.096 reseñas con texto, que bajan a 111.798 al deduplicar.

Sobre esas ~112.000 se trabaja con una muestra aleatoria de 12.000 reseñas con semilla fija —11.968 tras normalizar—. No es un recorte de conveniencia disimulado: procesar el corpus entero pasa de una hora solo en lematización y etiquetado, y el notebook está pensado para poder ejecutarse de principio a fin en unos minutos. Basta cambiar una constante para usarlo completo.

Hay además una discrepancia que no hemos sabido explicar. El trabajo entregado en su día decía 38.531 reseñas de 2024; ejecutando hoy el mismo filtro sobre el mismo dataset salen 119.096. Descartamos que sea un artefacto del agrupado, y ahí se quedó: el dataset no está versionado y no se puede comprobar qué había entonces.

Del dataset se usan el título, el año, la nota media y el texto. El nombre de usuario no se extrae en ningún momento: son personas reales y el trabajo iba a acabar en un repositorio público.

Películas en la fuente847.209
Estrenadas en 202440.486
Reseñas tras deduplicar111.798
Muestra analizada11.968
Del dataset completo a la muestra reproducible.

Escalones: 847.209 películas en la fuente, 111.798 reseñas de películas de 2024 tras deduplicar y una muestra de 11.968.

El preprocesado

Trece palabras por reseña.

Las reseñas de Letterboxd son cortas, irónicas y llenas de jerga. La mediana está en 16 palabras. Eso condiciona todo lo que se puede hacer después, porque casi ninguna técnica de PLN está pensada para textos tan breves.

El pipeline es el habitual: normalización, tokenización con NLTK, stopwords —del inglés, de industria y multilingües—, y lematización con spaCy más un diccionario de correcciones propias.

El etiquetado gramatical se hizo con tres métodos sobre el mismo texto para poder compararlos: spaCy, el perceptrón de NLTK y Flair. Este último, mucho más lento, solo sobre una muestra de 500 reseñas.

Se midió también la diversidad léxica con el Type-Token Ratio, y ahí hay una trampa que conviene declarar: sube de 0,918 a 0,965 tras el preprocesado, pero las reseñas pasan de 27,7 a 14,5 palabras, y el TTR sube casi solo cuando el texto se acorta. La subida no demuestra por sí sola más riqueza léxica.

Mediana de palabras16 por reseña
Etiquetadores comparadosspaCy · NLTK · Flair
TTR antes / después0,918 → 0,965
Palabras antes / después27,7 → 14,5
El preprocesado deja los textos a la mitad. El TTR sube por eso.

Comparación: 27,7 palabras por reseña antes del preprocesado y 14,5 después.

El hallazgo

La mitad de los tópicos no hablaban de cine.

LDA con seis tópicos sobre el corpus completo. Tres de ellos —el de alemán e italiano, el de ruso y persa, el de francés y portugués— no separan temas: separan idiomas. Se llevan el 32,3 % de las reseñas.

El criterio para llamarlo «tópico de idioma» no es que sus palabras suenen extranjeras, que sería una impresión. Es que más de la mitad de las reseñas que caen en él no están en inglés, y eso se mide: 92,4 %, 71,0 % y 96,5 % respectivamente.

El corpus tiene 48 idiomas y solo el 62,4 % de las reseñas están en inglés. La lista de stopwords multilingües del trabajo original eran 28 palabras escritas a mano, que no cubren ni de lejos el francés, el portugués, el español o el indonesio que hay ahí dentro.

Con once tópicos en lugar de seis el problema empeora: son siete de once los que separan idiomas. Más tópicos no dan más temas, dan más idiomas.

Idiomas detectados48
Reseñas en inglés62,4 %
Tópicos de idioma (K=6)3 de 6
Tópicos de idioma (K=11)7 de 11
Los seis tópicos como seis fotogramas. Tres de ellos no hablan de cine: separan idiomas, y se llevan el 32,3% del corpus.

Seis fotogramas, uno por tópico, con el porcentaje de reseñas que le corresponde: T0 el 29,7% sobre cine en inglés; T1 el 7,8% en alemán e italiano; T2 el 9,1% sobre festivales; T3 el 6,2% en ruso y persa; T4 el 18,3% en francés y portugués; T5 el 28,9% sobre narrativa en inglés. Los tópicos T1, T3 y T4 separan idiomas en lugar de temas y van marcados con un punto.

El experimento

Filtrar el idioma no mejora la métrica.

La pregunta obvia era qué pasa si se filtra. Se repitió todo el modelado sobre las 7.465 reseñas en inglés, con el mismo preprocesado, el mismo barrido de K y los mismos hiperparámetros. Lo único que cambia es el corpus.

Y el resultado va en contra de lo esperado: la coherencia baja. Con K=6, 0,5107 frente a 0,6038. Y no es un K concreto: el corpus filtrado puntúa por debajo en 12 de los 14 valores del barrido.

Se comprobó que no fuera un efecto del tamaño —el corpus filtrado tiene un 38 % menos de documentos—: submuestreando el multilingüe a las mismas 7.465 reseñas, doce veces, el filtrado queda por debajo de las doce. Aun así la dispersión de la métrica entre submuestras es mayor que la propia diferencia, así que lo honesto es decir que filtrar no mejora la coherencia, no que la empeore.

Pero la coherencia no era el objetivo. Emparejando los tópicos de los dos corpus por vocabulario compartido, los tres de idioma no tienen ningún equivalente en el filtrado. Filtrar deja de gastar la mitad de los tópicos en separar lenguas. La lección de fondo es sobre la métrica: las palabras de un mismo idioma co-ocurren siempre, así que un tópico puede ser perfectamente coherente y perfectamente inútil.

Corpus multilingüe11.968 reseñas · c_v 0,6038
Corpus solo inglés7.465 reseñas · c_v 0,5107
K en que gana el filtrado2 de 14
Tópicos de idioma tras filtrarNinguno
Coherencia c_v con seis tópicos en los dos corpus. Baja al filtrar a inglés; la interpretabilidad sube.

Dos coherencias c_v con seis tópicos, proyectadas una al lado de la otra: 0,6038 en el corpus multilingüe y 0,5107 en el corpus filtrado a inglés.

Los límites

Una cifra que nadie puede reproducir.

El trabajo entregado usaba LdaMulticore, que reparte los documentos entre procesos y los incorpora según terminan. Consecuencia: con la misma semilla no da el mismo modelo. Medido, dos ejecuciones idénticas dieron 0,5633 y 0,5404.

Todo el trabajo pasó a LdaModel, que repitió 0,5890 las dos veces. Entre una coherencia alta y una que otra persona puede comprobar, la segunda vale más. La consecuencia incómoda es que el 0,678 que figuraba en la presentación entregada no lo puede reproducir nadie.

Sobre el corpus quedan dos cosas dichas y no resueltas: se trabaja sobre una muestra de 11.968 reseñas de las ~112.000 disponibles, y la discrepancia con el recuento del trabajo original sigue sin explicación.

Y la detección de idioma no es infalible sobre textos de mediana 16 palabras. Las reseñas de menos de 20 caracteres se marcan aparte en vez de asignarles un idioma a la fuerza, pero el resto tampoco es perfecto.

Modelo reproducibleSí, con LdaModel
Muestra11.968 de ~112.000
Discrepancia del corpusSin explicar
Detección de idiomaImperfecta en textos cortos
Lo que el trabajo sostiene y lo que sigue abierto.

Veredictos: el modelo es reproducible, sí; el criterio de tópico de idioma está medido, sí; se usa el corpus completo, no; la discrepancia del corpus está explicada, no.

El trabajo

Fue un trabajo de tres.

Proyecto conjunto de Alfredo Martín, Marcos Fernández y Pedro Pérez para la asignatura de Datos No Estructurados del máster.

Lo que más me llevo no es el modelo, es el experimento que salió de mirar un resultado que no cuadraba. La primera versión daba por buenos seis tópicos; media hora mirándolos de cerca convirtió «el modelo funciona» en «el modelo está midiendo otra cosa».

Letterboxd · Presentación PDF · 26 páginas · 1,0 MB
Ponte en contacto Escríbeme cuando quieras