---
name: deduplication_result
lang: py
domain: datascience
version: "1.0.0"
algebraic: product
definition: |
  @dataclass
  class DeduplicationResult:
      entities: list[EntityCandidate]
      entity_id_map: dict[str, str]
      name_to_id: dict[str, str]
      merge_log: list[dict] = field(default_factory=list)
      total_before: int = 0
      total_after: int = 0
description: "Resultado de deduplicacion de entidades. name_to_id mapea todos los nombres originales (incluyendo aliases mergeados) a su ID final para resolver relaciones."
tags: [deduplication, entity, merge, knowledge-graph, nlp, datascience]
uses_types: [entity_candidate_py_datascience]
file_path: "python/types/datascience/deduplication_result.py"
---

## Campos

- `entities`: lista final de `EntityCandidate` despues de deduplicacion
- `entity_id_map`: mapa `nombre_normalizado → entity_id` para lookup rapido
- `name_to_id`: mapa de TODOS los nombres originales (incluyendo aliases) a su ID final
- `merge_log`: lista de eventos de merge, cada uno con `{"merged": [...], "into": "...", "score": 0.92}`
- `total_before`: numero de entidades antes de deduplicacion
- `total_after`: numero de entidades despues de deduplicacion

## Ejemplo

```python
from python.types.datascience.deduplication_result import DeduplicationResult
from python.types.datascience.entity_candidate import EntityCandidate

result = DeduplicationResult(
    entities=[
        EntityCandidate(
            name="John Smith",
            name_normalized="john smith",
            merged_from=["John Smith", "Smith, John"],
        ),
    ],
    entity_id_map={"john smith": "ent_001"},
    name_to_id={
        "John Smith": "ent_001",
        "Smith, John": "ent_001",
        "john smith": "ent_001",
    },
    merge_log=[
        {"merged": ["John Smith", "Smith, John"], "into": "John Smith", "score": 0.92}
    ],
    total_before=2,
    total_after=1,
)
```

## Notas

El `name_to_id` es la clave para la resolucion de relaciones. Cuando una relacion dice `from_name="Smith, John"`, se puede buscar en `name_to_id` y encontrar el ID `ent_001` aunque el nombre canonico sea `"John Smith"`. `entity_id_map` es un subset que usa solo nombres normalizados, util para lookup durante la misma fase de deduplicacion.
