feat(analysis): el zero-shot deja de votar en la dimensión forma (#109) - #117
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Cierra #109.
formacontrasta tres señales y es la dimensión que sostiene la tesis delproyecto. Al medir el acoplamiento resultó que el contraste no existía.
Qué se midió
linear.featurize_cues()llama a
lexical.detect(), y conTHRESHOLD=1el veredicto del léxico esexactamente
any(featurize_cues(h))— verificado en el 100 % de 6.400titulares. El léxico es una función determinista del input del lineal.
de titulares el vector sale vacío y ambas responden «no» sin mirar (acuerdo
forzado del 100 %). Donde hay contenido, el acuerdo cae al 88,0 % — y al
59,1 % en Webis-17.
Webis-17, con recall medido de 0,478.
w · 0 = 0, así que reentrenar pesosno puede superarlo.
base dentro de Chakraborty y sólo +9,6 fuera.
en dev con n=300, F1 0,405 en Webis con n=600) y generaba el 37 % de
veredictos AMBIGUO, de los que el 78 % eran error suyo.
Qué cambia
El zero-shot deja de votar: se muestra como tarjeta, pero su veredicto no
entra en
forma. El criterio adoptado es que ambiguo debe significar que dosseñales fiables discrepan, no que alguna discrepa.
Qué NO arregla, y queda declarado
formaqueda sobre el par acoplado, es decir sobre una sola familia deevidencia. El modelo era además un placeholder de E3-02 elegido por
eliminación, así que silenciarlo mantiene ese aplazamiento: por eso la ficha lo
declara placeholder pendiente de #115 en vez de disimularlo.
Consecuencia de planificación
El punto ciego compartido y el techo de recall son el mismo hecho, así que
rellenarlo desacopla las señales y levanta el techo. #75 (featurización)
pasa a ser prerrequisito de #78 (reentrenamiento), no un experimento
opcional posterior. Razonamiento completo en los comentarios de ambas issues.
Descartado
THRESHOLDdel léxico: bajaría el kappa sin añadir información,porque esa magnitud ya está en el vector que el lineal recibe entero.
elozano/bert-base-cased-clickbait-news: 99,7 %en Chakraborty dev y F1 0,185 en Webis-17 completo, contra una clase
mayoritaria de 69,0 %. Memorización. Refuerza que la palanca es la
supervisión, no el algoritmo.
Resultado colateral
Estratificando por
truthMean, el recall del léxico sigue el juicio humano deintensidad casi linealmente (51,6 / 75,8 / 85,5 % por tercios), por delante de
las otras tres. El detalle fino importa: el lineal —que es el mismo featurizado
re-pesado sobre Chakraborty— se estanca en los tramos altos (61,3 % →
62,9 %) justo donde el léxico despega. Aprender los pesos sobre etiquetas
por-fuente no mejoró la regla: la empeoró donde el clickbait es más evidente.
Reproducibilidad
Las cifras dejan de vivir en scripts de usar y tirar. Tres módulos en
backend/evaluation/, separados por coste:eval_featurizado.py— lo estructural (cobertura, techo de recall, valor delatajo, descomposición del acuerdo). No carga ningún modelo: segundos.
eval_acoplamiento.py— kappa, correlación de errores, ambigüedad deforma.eval_transferencia.py— Webis-17 con el zero-shot y el dedicado, más elrecall por intensidad. Cachea en
var/con tamaño y semilla en la clave.Requiere
NLP_BACKEND=local: en remoto los veredictos dependen de qué sirvaHuggingFace ese día.
Dos defectos encontrados al escribir los módulos
se lee como «independientes» — cuando en realidad sale 0 porque el léxico es
constante ahí. Ahora imprime
—con la explicación.con un
TypeErroral indexar undataque eraNone, perdiendo diez minutos.Los dos scripts que llaman al backend comprueban el
ToolResulty fallandiciendo en qué titular y por qué.
Verificación
190 tests pasan (uno nuevo de regresión), ruff y formato limpios.