{"slug": "corpus-scrub-0-1-0-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento", "title": "corpus-scrub 0.1.0: detecta y redacta PII y secretos en corpus de entrenamiento antes del entrenamiento LLM", "summary": "A developer released corpus-scrub 0.1.0, an open-source CLI tool that detects and redacts personally identifiable information (PII) and secrets in training corpora before LLM training. The tool uses spaCy models for named entity recognition and regex patterns for emails, phone numbers, IBANs, and credit card numbers, operating locally without sending data to external services. It also includes a secret detection ruleset audited against gitleaks, with tests ensuring rule accuracy.", "body_md": "Los modelos memorizan y filtran lo que hay en los datos de entrenamiento.\n\n`corpus-scrub`\n\nlos 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.\n\nLos corpus raspados de la web contienen rutinariamente datos personales y credenciales. La literatura lo deja claro:\n\nGDPR 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.\n\n`corpus-scrub`\n\nes una CLI local-first (AGPL-3.0-or-later) que escanea JSONL/TXT/Parquet y:\n\n`en_core_web_lg`\n\npara PERSON) + regex propios para EMAIL / IBAN / CARD / PHONE que no dependen de modelo y funcionan en cualquier idioma.`4c232b5`\n\n), verificadas regla por regla contra el `gitleaks.toml`\n\noriginal en los tests.`mask`\n\n(`<TYPE>`\n\n), `hash`\n\n(sha256 truncado) o `drop`\n\n.Multi-idioma para nombres (ES/DE/FR) vía modelos spaCy `_lg`\n\ndedicados, con fallback multilingüe explícito y tests que fallan si el fallback se usa por accidente.\n\n```\n# Instalar\npython -m venv .venv && source .venv/bin/activate\npip install -e .\n# el primer run descarga spaCy en_core_web_lg (~400 MB)\n\n# Escanear y enmascarar\ncorpus-scrub scan --input corpus.jsonl --policy mask --out redacted.jsonl --report report.json\n\n# Solo inglés en el MVP; otros idiomas error explícito\ncorpus-scrub scan --input corpus.jsonl --lang en\n```\n\nLos 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.\n\nNo todo está garantizado, y está documentado:\n\n`_lg`\n\ndescargados; si faltan, los tests de precisión fallan en vez de pasar silenciosamente contra el fallback.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`\n\nusaba 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`\n\nembebido como fixture, así que futuras derivas se detectan solas.\n\nCobertura de tests: 82% (fast suite sin descarga de modelos; slow suite con los `_lg`\n\n).\n\n| Componente | Uso |\n|---|---|\n| Presidio + spaCy | NER PERSON (EN) |\nspaCy `es/de/fr_core_news_lg`\n|\nNER PERSON multilingüe |\n| regex gitleaks | detección de secretos |\n| pytest + CI | fast/slow suites, cobertura |\n\n```\ngit clone https://github.com/amurlaniakea/corpus-scrub\ncd corpus-scrub\npython -m venv .venv && source .venv/bin/activate\npip install -e .\npytest -m \"not slow\"   # suite rápida, sin descargas\n```\n\nRepo: [https://github.com/amurlaniakea/corpus-scrub](https://github.com/amurlaniakea/corpus-scrub)\n\n*Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez — amurlaniakea@gmail.com*", "url": "https://wpnews.pro/news/corpus-scrub-0-1-0-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento", "canonical_source": "https://dev.to/magopredator/corpus-scrub-010-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento-antes-del-432h", "published_at": "2026-07-17 01:21:29+00:00", "updated_at": "2026-07-17 01:32:30.643121+00:00", "lang": "en", "topics": ["developer-tools", "large-language-models", "ai-safety", "ai-ethics", "natural-language-processing"], "entities": ["corpus-scrub", "Pedro Sordo Martínez", "spaCy", "Presidio", "gitleaks", "AGPL-3.0-or-later", "GDPR", "EU AI Act"], "alternates": {"html": "https://wpnews.pro/news/corpus-scrub-0-1-0-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento", "markdown": "https://wpnews.pro/news/corpus-scrub-0-1-0-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento.md", "text": "https://wpnews.pro/news/corpus-scrub-0-1-0-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento.txt", "jsonld": "https://wpnews.pro/news/corpus-scrub-0-1-0-detecta-y-redacta-pii-y-secretos-en-corpus-de-entrenamiento.jsonld"}}