Clasificar: ¿Machado o Bécquer?
Páginas de este taller
En esta página
5. Antes de entrenar: cómo saber si un resultado es de fiar
Entrenamos una regresión logística, un clasificador lineal sencillo que deja ver qué palabras usa como pistas. Pero antes hay dos decisiones de método que cambian los resultados más que cualquier técnica.
La línea base. Con el mismo número de fragmentos de cada autor, responder al azar acierta el 50 %. Cualquier cifra hay que leerla frente a ese 50 %, no frente al 0 %.
Separar por poema.
Esa trampa se llama fuga de datos. Lo correcto es que cada poema entero quede o en el entrenamiento o en la prueba. Para no depender de una sola partición, usamos validación cruzada: repartimos los poemas en cinco grupos, entrenamos cinco veces dejando fuera un grupo distinto y promediamos.
from sklearn.model_selection import GroupKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.feature_extraction.text import TfidfVectorizer
modelo = make_pipeline(TfidfVectorizer(token_pattern=r"(?u)\b\w+\b"),
LogisticRegression(max_iter=2000))
notas = cross_val_score(modelo, X, autores, cv=GroupKFold(5), groups=poema)
print(notas.mean(), notas.min(), notas.max())
groups=poema es la línea que evita la fuga: le dice a scikit-learn que los fragmentos de un mismo poema van siempre juntos. token_pattern hace que cuente también palabras de una letra, como y o á.
6. Un 89 % por la razón equivocada
Empezamos sin normalizar nada. El modelo acierta el 89 %, y sus mejores pistas son estas:
- Bécquer: á, Que, De, Y, Del, Como, En, Las
- Machado: bajo, Alvargonzález, tarde, mil, agua, era
El modelo no ha aprendido a Bécquer: ha aprendido la edición. Es un atajo, una regularidad del corpus que permite acertar sin resolver la tarea. (En Machado asoma otro: Alvargonzález, el protagonista de un poema largo. Una pista que solo sirve para ese poema.)
Un atajo se demuestra cambiando algo que no debería importar. El cuaderno moderniza los fragmentos de Bécquer de la prueba (sin tilde en a ni mayúscula a principio de verso, salvo tras punto) y se los da a los dos modelos:
Salida real
La prueba del atajo: modernizar la ortografía de Bécquer
Saeta que voladora / Cruza, arrojada al azar, / … → Saeta que voladora / cruza, arrojada al azar, / …
Porcentaje de fragmentos de Bécquer de la prueba (74) que cada modelo atribuye a Bécquer.
La idea: Cambia algo que no debería importar y mira si la predicción cambia. Si cambia, el modelo había aprendido un atajo.
7. Comparar técnicas sin el atajo
Con el texto normalizado, comparamos las representaciones de la segunda parte:
Salida real
¿Machado o Bécquer? Exactitud evaluando por poemas
Fragmentos de 4 versos, 339 por autor. Media de cinco rondas de validación cruzada; entre paréntesis, la peor y la mejor ronda.
La idea: Sin el atajo, casi todas las técnicas quedan entre el 73 % y el 78 %, y sus márgenes se solapan: con este corpus, la elección de técnica importa menos que normalizar bien y evaluar bien.
Tres lecturas:
- Las diferencias son pequeñas y los márgenes se solapan. La bolsa de palabras, TF-IDF y los embeddings quedan casi empatados. Los n-gramas de caracteres (trozos de dos a cuatro letras) van un poco por delante: captan terminaciones verbales y palabras cortas a la vez.
- Quitar las palabras vacías no ayuda.
- Los embeddings no ganan, y se pierde algo valioso: ya no hay pistas que leer, porque sus 300 dimensiones no corresponden a palabras. Al promediar los vectores de un fragmento, además, se diluyen las palabras concretas que distinguen a los autores. La técnica más reciente no es siempre la mejor para una tarea concreta.
8. Tema o estilo
Mira la última fila de la demostración anterior: un modelo que solo ve palabras vacías, justo las que se suelen quitar, acierta el 63 %. Sin una sola palabra de contenido, supera con claridad el azar.
Es la idea central de la estilometría: las palabras gramaticales (pronombres, artículos, preposiciones, formas de ser y estar) se usan de forma poco consciente, no dependen del tema y delatan al autor aunque este cambie de asunto. Así atribuyeron Mosteller y Wallace los Federalist Papers en los años sesenta, y en eso se apoya la medida Delta de Burrows, que compara las frecuencias de las palabras más comunes de un texto, casi todas gramaticales.
Salida real
Tema y estilo: las pistas de cada modelo
TF-IDF sin palabras vacías (tema)
Bécquer: sé, allí, ojos, luz, beso, palabras, oscuro, dolor, pupila
Machado: rosas, montes, campo, oh, tierra, hacia, España, agua, bajo, tarde
Solo palabras vacías (estilo)
Bécquer: me, yo, que, qué, lo, al, cuando, soy, mía
Machado: esta, los, eran, este, quien, hay, ha, una, era, está
La idea: Las palabras de contenido dicen de qué escribe cada uno. Las gramaticales, cómo: Bécquer habla en primera persona y en presente; Machado describe y narra en imperfecto.
Las dos listas cuentan cosas distintas y complementarias. Las de contenido dicen de qué escribe cada uno: la amada, los ojos, el dolor; el campo, la tierra, España. Las gramaticales dicen cómo: me, yo, soy, mía frente a era, eran, está, hay. Bécquer habla en primera persona y en presente; Machado describe y narra en imperfecto. Es una caracterización que reconocería cualquier profesor de literatura, y ha salido de contar palabras.
9. Cuánto texto hace falta
Salida real
Cuánto texto hace falta
La idea: Cuanto más largo el fragmento, más pistas. Con dos versos, casi uno de cada tres fragmentos sale mal atribuido.
Por eso la atribución de autoría seria trabaja con textos largos, y por eso conviene desconfiar de quien atribuye un mensaje corto a alguien «por su estilo».
10. Por qué decide lo que decide
En una regresión logística, cada palabra empuja hacia un autor con un peso. El cuaderno incluye una función, quien_lo_escribio, que da la probabilidad y las palabras que más han pesado:
quien_lo_escribio("""Yo voy soñando caminos
de la tarde. ¡Las colinas
doradas, los verdes pinos,
las polvorientas encinas!""")
Bécquer 42% · Machado 58%
empujan hacia Bécquer: yo, las, verdes, voy
empujan hacia Machado: tarde, caminos, de, los, la
Acierta, pero por poco: el yo tira hacia Bécquer y la tarde y los caminos hacia Machado. Prueba con tus propios versos. Ten en cuenta que el modelo siempre responderá Machado o Bécquer, porque no conoce otra opción: es un conjunto cerrado. Un poema de Rosalía de Castro saldrá atribuido a uno de los dos con toda tranquilidad. Una probabilidad cercana al 50 % es la única señal de que no se parece claramente a ninguno.
11. Leer los errores
Con una partición por poemas, el modelo TF-IDF falla 43 de 168 fragmentos. Los cuatro poemas con más errores son de Machado, y tienen algo en común. Este es uno de ellos:
Hay en mis venas gotas de sangre jacobina,
pero mi verso brota de manantial sereno;
y, más que un hombre al uso que sabe su doctrina,
soy, en el buen sentido de la palabra, bueno.
Es el «Retrato», en primera persona. El poema con más errores es otro monólogo, «Heme aquí ya profesor», y entre los fallos aparecen también un poema de amor («Arde en tus ojos un misterio, virgen») y un diálogo («¡Mi hora!—grité—»). Cuando Machado dice yo y habla de amor, el modelo oye a Bécquer. El error tiene una explicación literaria, y esa explicación dice qué le falta al modelo: con cuatro versos no puede saber de qué libro ni de qué época vienen.
Para seguir
- Preprocesar, tokenizar y representar: el mapa de técnicas, de las palabras vacías a los Transformers, y cuándo usar cada una.
- Evaluar un clasificador: precisión, exhaustividad y por qué una exactitud alta puede engañar.
- NLTK, spaCy y Transformers: qué hace cada librería y cuándo conviene.
- Clasificación de textos, en la ruta principal.
- Tokenizador de OpenAI: prueba cómo parte tus propios textos.
- Resumen de tokenizadores de Hugging Face, en inglés: BPE, WordPiece, Unigram y SentencePiece con un ejemplo paso a paso.
- Introduction to stylometry with Python, de Programming Historian, en inglés: la medida Delta de Burrows aplicada a los Federalist Papers.
Referencias
- Machado, A. (1917). Poesías completas. Residencia de Estudiantes. Proyecto Gutenberg, n.º 68525.
- Bécquer, G. A. Obras escogidas. Proyecto Gutenberg, n.º 53552.
- Burrows, J. (2002). «Delta»: a measure of stylistic difference and a guide to likely authorship. Literary and Linguistic Computing, 17(3), 267-287.
- Mosteller, F. y Wallace, D. L. (1964). Inference and disputed authorship: The Federalist. Addison-Wesley. Resumen previo en Inference in an authorship problem (1963).
- Sennrich, R., Haddow, B. y Birch, A. (2016). Neural machine translation of rare words with subword units. ACL.
- Nissim, M., van Noord, R. y van der Goot, R. (2020). Fair is better than sensational: man is to doctor as woman is to doctor. Computational Linguistics, 46(2).
- Documentación de scikit-learn: TF-IDF y validación cruzada por grupos.