2026-09-22 — news-silo: filtro de boilerplate, fix HDBSCAN y The Atlantic
Contexto: corpus ML/AI (NYT+WaPo) con párrafos de módulos (newsletters, guías,
relacionados) que ensuciaban el silo; además --epsilon muerto en HDBSCAN.
Se filtró en extracción, se sumó The Atlantic (texto completo vía RSS) y se
re-corrió el pipeline. Repo ~/nef/news-silo, cambios sin commitear.
cd ~/nef/news-silo
.venv/bin/python scrape_mlai.py --discover
.venv/bin/python scrape_mlai.py --fetch --sitio atlantic --metodo cookies
.venv/bin/python scrape_mlai.py --limpia-corpus
.venv/bin/python silo_medios.py --dir data > data/silo-temas.txt
.venv/bin/python infografia.py -s nyt,atlantic --dias 7 --estilo dark -o infografia.html
.venv/bin/python infografia.py -s nyt,atlantic --dias 7 --estilo luz -o infografia-luz.html
Qué se hizo
1. Filtro de boilerplate en la extracción (scrape_mlai.py)
- Causa raíz (verificada con HTML real vía browser): los bloques repetidos no son
cuerpo del artículo sino módulos de página: menús
hamburger-pane, guías#styln-guide/[role=complementary], relacionados[data-testid=recirc-item],figure/figcaption(créditos). - Doble capa:
- Exclusión de contenedores en el path browser (
_JS_EXTRAE, selector RUIDO) y en el path cookies (_Parrafos, pila de ruido con tags vacíos). - Blacklist de párrafos (
es_boilerplate): créditos (Image by,via Getty,for The New York Times), promos (Catch up on big news,See all newsletters,Apple Podcasts |), bios (is a Times reporter/columnist...,@nytimes.com) y disclosures (The New York Times has sued...). limpia_texto: normaliza, deduplica y aplica la blacklist en ambos paths.
- Exclusión de contenedores en el path browser (
--limpia-corpus: aplica lo mismo al corpus ya capturado + descarta párrafos repetidos en >=3 docs (--min-docs), respaldo.bak, descarta docs <400 chars. Resultado: 836k → 711k chars, 699 párrafos fuera, 1 doc vaciado (stub de video).- Efecto: desapareció el TEMA basura de newsletter en
silo-temas.txt.
2. Fix HDBSCAN en silo_medios.py
--epsilonse parseaba pero nunca llegaba a HDBSCAN; faltabacopy=True. Ahora:cluster_selection_epsilon=args.epsilon, copy=True, default 0.0 (NumPy 2.5.3 + sklearn 1.9.1 = bug sklearn#33219 con epsilon>0). Sin FutureWarning.
3. The Atlantic como fuente (scrape_mlai.py)
- Su feed RSS trae el texto completo (sin paywall, sin navegador): 140 entradas indexadas, 31 artículos AI/tech bajados con 0 fallos (~316k chars).
- SITIOS + 6 feeds (all, technology, business, science, health, politics);
sin_utm()normaliza links;--sitioaceptaatlantic. - Login/cookies quedan soportados pero no se necesitan.
Estado verificado
- Corpus: 128 docs (NYT 87 · Atlantic 31 · WaPo 10); Atlantic sin boilerplate (0 párrafos repetidos, 0 promos al inicio).
- Silo con 101 docs: TEMA 1 AI safety (12, NYT+Atlantic), TEMA 0 incidentes OpenAI (6), TEMA 2 China/Trump-Xi (6). Outliers 77 (eventos únicos).
--status: 128 artículos · pendientes 7 (3 WaPo en cola, sesión inactiva).
Bloqueo / pendiente
- WaPo: la sesión del perfil muestra “Resubscribe” (suscripción/sesión inactiva)
y
requestsni conecta (timeout). Requiere--loginmanual y verificar la suscripción. Los 3 candidatos WaPo quedan encandidatos.jsonlpara el próximo fetch. - Sin commitear en
~/nef/news-silo:scrape_mlai.py(boilerplate + Atlantic + limpia-corpus) ysilo_medios.py(epsilon/copy). ~/nef/nef-silo: mejora 7 (salud/alertas/topes/dry-run) terminada ayer y sin commitear; siguiente del plan es mejora 6 (c-TF-IDF / calidad de silos).
Actualización — WaPo off + dataviz reciente
- WaPo desactivado sin borrar código:
PRENSA_SITIOS(defaultnyt,atlantic);--discover,--fetchy--sitiorespetan la lista. Reactivar conPRENSA_SITIOS=nyt,wapo,atlantic. Sus 3 candidatos fuera decandidatos.jsonl. infografia.py:-s/--sitios(filtra medios),--dias N(ventana desde la fecha más nueva), plantillas sin hardcodear NYT×WaPo (medios_html/etiquetas/conteos) y títulos de tema con nombres propios (OpenAI, Anthropic…).- Dataviz reciente generada: 71 artículos NYT+Atlantic (ventana 09-16→09-22),
8 silos, 590k palabras →
infografia.html/.png(dark) einfografia-luz.html/.png(editorial). Silos top: Anthropic/Amodei 18, OpenAI 17, Trump/safety 12. - Nota: los feeds de Atlantic incluyen piezas de archivo (2024/2026-07); por eso el
filtro
--diases necesario para la vista “semana”.