
XXIX. Saber qué apuntes están escritos demasiado difícil, sin que lo decida la IA
Esta entrada nace de dos sitios distintos a la vez. Por un lado, de un documento de ideas que fue creciendo con aportaciones de varias IA distintas sobre hacia dónde podría crecer el proyecto; entre esas ideas había una que no pedía tocar el chat para nada: analizar los propios documentos de apuntes antes de que lleguen a un alumno, para saber cuáles están escritos con un lenguaje demasiado denso para el curso al que van dirigidos. Por otro lado, de algo muy concreto y ya anunciado varias veces en este blog: los apuntes de Computación y Robótica de 1º ESO están todavía en un estado irregular, y toca reorganizarlos a partir de septiembre. Juntando las dos cosas sale una herramienta pequeña con un objetivo muy claro: una lista objetiva de por dónde empezar esa reorganización, en vez de decidirlo a ojo.
La solución: una fórmula de 1959, no un modelo de IA
Aquí no hace falta preguntarle nada a PINSAPIA. La legibilidad de un texto en español tiene una fórmula estadística clásica, publicada por José Fernández Huerta en 1959 como adaptación al español de la fórmula de Flesch, y sigue siendo hoy la referencia más citada para este idioma:
L = 206,84 − 1,02·(palabras / frases) − 60·(sílabas / palabras)
Cuanto más alta la puntuación, más fácil de leer es el texto. Es una cuenta que hace Python con total certeza —contar sílabas, palabras y frases no tiene ambigüedad ni margen para que un modelo se lo invente—, así que aplica exactamente el mismo principio que ya usan la calculadora, el reloj o el verificador de sintaxis: donde existe una forma determinista y exacta de calcular un dato, se usa esa, y no se le pide opinión a la IA.
Una nota sobre cómo se comprobó la fórmula
Esto merece contarse porque es un buen ejemplo de por qué en este proyecto no nos fiamos de un número sin comprobarlo. La primera pasada usó un navegador para buscar la fórmula exacta (el buscador automático estaba bloqueado esa tarde) y triangular varias fuentes: un artículo de divulgación de “Muy Interesante” y una explicación técnica de otra web, coincidentes entre sí. Con eso, y una comprobación numérica propia con ejemplos de texto fácil, medio y difícil, la fórmula quedó anotada como “probable, verificada por varias fuentes, pero no contra la fuente original”. Poco después, José Luis aportó una fórmula equivalente que había encontrado por su lado, citando directamente la Wikipedia en español —que a su vez cita la referencia bibliográfica exacta: Fernández Huerta, J. (1959). Medidas sencillas de lecturabilidad. Consigna, 214, 29-32—. Al comprobarla, resultó ser matemáticamente la misma fórmula que ya estaba implementada, solo escrita de otra forma. Lo único que cambió de verdad fue la tabla de interpretación de las puntuaciones, que Wikipedia da más fina (8 tramos) que la que se había usado al principio (7 tramos), así que se corrigió para que coincidiera exactamente. El artículo original de 1959 en sí —una revista pedagógica de la época, no digitalizada— no se ha podido leer directamente, pero la cita bibliográfica coincide en todas las fuentes revisadas, así que ahora está anotado como confirmado, no solo como probable.
Cómo se usa
No es una función del chat: es una herramienta de mantenimiento que se ejecuta a mano, desde la terminal, sobre los documentos que ya están guardados en documentosmonterroso/. Se lanza así, desde la carpeta ia-monterroso-api/:
python analizar_legibilidad.py cyr1eso
Y con eso imprime una tabla con todos los documentos del corpus indicado, ordenados de más difícil a más fácil, cada uno con su puntuación y su nivel académico aproximado. Si además se quiere guardar como hoja de cálculo, para ordenar o filtrar con más comodidad:
python analizar_legibilidad.py cyr1eso --csv legibilidad_cyr1eso.csv
Si no se indica ningún corpus, analiza cyr1eso por defecto, precisamente porque es el que hay que reorganizar. Un ejemplo real, con los apuntes actuales:
Documento Puntuación Nivel Curso aproximado
--------------------------------------------------------------------------------------------------------------
pruebaseguridad-apuntes.odt 39.0 Difícil Grado universitario
CYR1ESO-AGENTESINTELIGENTESSIMPLES.odt 51.3 Relativamente difícil 4º de ESO a 2º de Bachillerato
...
ia01.odt 70.6 Relativamente fácil 1º de ESO
paginasweb1.odt 76.6 Relativamente fácil 1º de ESO
La mayoría de los apuntes cae, con sentido, alrededor de “1º de ESO” o “2º-3º de ESO”. El que más destaca por encima, pruebaseguridad-apuntes.odt, queda claramente señalado como el candidato más claro para revisar primero.
Qué detecta y qué no (límites honestos)
- El contador de sílabas es una heurística: cuenta vocales y separa en sílabas distintas solo cuando hay hiato (dos vocales fuertes juntas, como en “ca-os”, o una vocal débil con tilde, como en “pa-ís”). No es un analizador lingüístico perfecto, pero al promediar sobre miles de palabras de un documento entero, los errores puntuales en alguna palabra rara no cambian el resultado de forma apreciable.
- El contador de frases parte por los puntos, signos de exclamación e interrogación, y puntos suspensivos, pero no distingue un punto final de una abreviatura (“etc.”, “p.ej.”). Un documento con muchas abreviaturas puede salir con alguna frase “de más”, lo que hace parecer el texto ligeramente más fácil de lo que es en realidad. Efecto pequeño, no crítico.
- Los apuntes de Computación y Robótica mezclan prosa con código (Python, Scratch). La fórmula está pensada para lenguaje natural: un bloque de código no es “difícil de leer” en el sentido en que lo mide esta fórmula, así que un documento con mucho código puede salir con una puntuación que no refleja del todo bien su dificultad real. Es lo primero a tener en cuenta al mirar los resultados de
cyr1eso. - Un PDF escaneado sin OCR (solo imágenes, sin texto seleccionable) no tiene texto que extraer: ese documento se avisa por consola y se salta, no se cuenta con una puntuación de 0 que sería mentira.
Cómo ejecutar las pruebas
Antes de subir esto a ROCKY se probó con una batería propia de 39 comprobaciones, en el archivo test_legibilidad.py. Para ejecutarlas:
python test_legibilidad.py
Y debería terminar con la línea TOTAL: todo correcto, 0 fallos. Cubren, entre otras cosas:
- El contador de sílabas contra una lista de palabras con su conteo correcto conocido de antemano: casos de hiato (“le-er”, “ca-os”, “ba-ca-la-o”), de diptongo (“rei-na”, “ai-re”, “ciu-dad”), y el caso más delicado —una vocal débil con tilde que rompe un diptongo que existiría sin ella, como en “pa-ís” frente a “pais” sin tilde, que se lee de un tirón—.
- El contador de frases, incluyendo que los puntos suspensivos cuenten como un solo final de frase y no como tres.
- La fórmula completa, contra un ejemplo calculado a mano (“El perro come.”) para confirmar que las cuentas de sílabas, palabras y frases y el resultado final coinciden exactamente con lo esperado.
- Los límites exactos de las 8 bandas de clasificación, uno por uno, para que un cambio futuro en la tabla no se cuele sin que salte una prueba.
- Que pedir un corpus que no existe da un error claro, en vez de fallar en silencio.
Siguiente paso
Que José Luis lo ejecute en su propia terminal sobre los tres corpus (no solo cyr1eso), y que use la lista para decidir el orden real de la reorganización de apuntes de septiembre. Más adelante, si hace falta, se podría aplicar la misma herramienta a las programaciones didácticas o a nuevos documentos antes de añadirlos a un corpus, para detectar de entrada un texto demasiado denso antes de que forme parte del material del centro.

Etiqueta:apuntes, dificultad de lectura, Fernández Huerta, legibilidad, mantenimiento


