---
name: extraction_stats
lang: py
domain: datascience
version: "1.0.0"
algebraic: product
definition: |
  @dataclass
  class ExtractionStats:
      total_chunks: int = 0
      total_chars: int = 0
      raw_entities_count: int = 0
      final_entities_count: int = 0
      entities_merged: int = 0
      raw_relations_count: int = 0
      final_relations_count: int = 0
      relations_merged: int = 0
      relations_discarded: int = 0
      entity_types_found: dict[str, int] = field(default_factory=dict)
      relation_types_found: dict[str, int] = field(default_factory=dict)
      processing_time_seconds: float = 0.0
description: "Estadisticas del proceso de extraccion de entidades y relaciones. Registra conteos antes y despues de deduplicacion, tiempo de procesamiento y distribucion de tipos."
tags: [extraction, stats, reporting, debugging, datascience]
uses_types: []
file_path: "python/types/datascience/extraction_stats.py"
---

## Campos

- `total_chunks`: numero total de chunks procesados
- `total_chars`: caracteres totales procesados
- `raw_entities_count`: entidades extraidas antes de deduplicacion
- `final_entities_count`: entidades restantes despues de deduplicacion
- `entities_merged`: cuantas entidades se colapsaron en otras
- `raw_relations_count`: relaciones extraidas antes de deduplicacion
- `final_relations_count`: relaciones restantes despues de deduplicacion
- `relations_merged`: relaciones duplicadas que se colapsaron
- `relations_discarded`: self-loops o relaciones sin match de entidad descartadas
- `entity_types_found`: mapa `type_ref → count` de entidades por tipo
- `relation_types_found`: mapa `relation_type → count` de relaciones por tipo
- `processing_time_seconds`: tiempo total del pipeline en segundos

## Ejemplo

```python
from python.types.datascience.extraction_stats import ExtractionStats

stats = ExtractionStats(
    total_chunks=42,
    total_chars=85000,
    raw_entities_count=120,
    final_entities_count=34,
    entities_merged=86,
    raw_relations_count=200,
    final_relations_count=67,
    relations_discarded=5,
    entity_types_found={"Person": 18, "Organization": 16},
    processing_time_seconds=12.4,
)
```

## Notas

Acumulable progresivamente durante el pipeline. Util para detectar documentos con baja densidad de informacion (pocos entities por chunk) o pipelines lentos. El ratio `entities_merged / raw_entities_count` indica que tan redundante fue el texto fuente.
