corpus-scrub 0.1.0: detecta y redacta PII y secretos en corpus de entrenamiento antes del entrenamiento Los modelos memorizan y filtran lo que hay en los datos de entrenamiento. corpus-scrub los limpia antes de entrenar: detecta PII (email, teléfono, IBAN, tarjeta, nombres) y secretos (API keys, tokens) y los redacta localmente, sin enviar nada a ningún servicio. El problema Los corpus raspados de la web contienen rutinariamente datos personales y credenciales. La literatura lo deja claro: Modelos de síntesis de imágenes que retroalimentan riesgos de privacidad amplificados en mezclas real-sintético (arXiv 2607.13541) Memorización no intencionada de información sensible en fine-tuning (arXiv 2601.17480) Direcciones de activación universales para fuga de PII (UniLeak) (arXiv 2602.16980) GDPR y el art. 10 de la EU AI Act prohíben datos personales no estructurados en conjuntos de entrenamiento sin consentimiento. La solución barata es limpiar el corpus antes de entrenar. Qué hace corpus-scrub es una CLI local-first (AGPL-3.0-or-later) que escanea JSONL/TXT/Parquet y: PII: Presidio (NER spaCy en_core_web_lg para PERSON) + regex propios para EMAIL / IBAN / CARD / PHONE que no dependen de modelo y funcionan en cualquier idioma. Secretos: un ruleset de 16 reglas portadas verbatim de gitleaks (commit fijado 4c232b5), verificadas regla por regla contra el gitleaks.toml original en los tests. Redacción: mask (), hash (sha256 truncado) o drop. Reporte: JSON de auditoría con conteo por tipo y localizaciones. Multi-idioma para nombres (ES/DE/FR) vía modelos spaCy _lg dedicados, con fallback multilingüe explícito y tests que fallan si el fallback se usa por accidente. Cómo funciona # Instalar python -m venv .venv && source .venv/bin/activate pip install -e . # el primer run descarga spaCy en_core_web_lg (~400 MB) # Escanear y enmascarar corpus-scrub scan --input corpus.jsonl --policy mask --out redacted.jsonl --report report.json # Solo inglés en el MVP; otros idiomas error explícito corpus-scrub scan --input corpus.jsonl --lang en Enter fullscreen mode Exit fullscreen mode Los detectores universales (email/teléfono/IBAN/tarjeta) son regex, así que no necesitan modelo y cubren cualquier idioma. El NER de PERSON usa Presidio para EN y spaCy directo para ES/DE/FR. Limits honestos No todo está garantizado, y está documentado: AC-1 garantiza recall >= 0.95 para EMAIL, PERSON y CREDIT_CARD. PHONE e IBAN no están garantizados en el MVP: Presidio puntúa el teléfono bajo el umbral y el reconocedor de IBAN falla en algunos formatos EN. Es un KNOWN_ISSUE, no una sorpresa. NER multilingüe exige los modelos _lg descargados; si faltan, los tests de precisión fallan en vez de pasar silenciosamente contra el fallback. Auditoría y gobernanza El ruleset de secretos pasó una auditoría regla-por-regla contra la fuente de gitleaks. Se encontró y corrigió una divergencia real: la regla pypi-upload-token usaba un comodín en vez del prefijo base64 fijo del token real, lo que generaba falsos positivos demostrados. El fix añadió un test que compara cada regla portada contra el gitleaks.toml embebido como fixture, así que futuras derivas se detectan solas. Cobertura de tests: 82% (fast suite sin descarga de modelos; slow suite con los _lg). Stack Componente Uso Presidio + spaCy NER PERSON (EN) spaCy es/de/fr_core_news_lg NER PERSON multilingüe regex gitleaks detección de secretos pytest + CI fast/slow suites, cobertura Pruébalo git clone https://github.com/amurlaniakea/corpus-scrub cd corpus-scrub python -m venv .venv && source .venv/bin/activate pip install -e . pytest -m "not slow" # suite rápida, sin descargas Enter fullscreen mode Exit fullscreen mode Repo: https://github.com/amurlaniakea/corpus-scrub Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez — amurlaniakea@gmail.com
corpus-scrub 0.1.0: detecta y redacta PII y secretos en corpus de entrenamiento antes del entrenamiento LLM
Full Article
Original Source
Read the full article at Dev →KhanList aggregates and links to publicly available news content. We do not host full articles from third-party sources. Always verify important information with original sources.