RedaktAIDocs

Anonymizer

Anonymization engine with token, synthetic, and hybrid strategies

Replaces detected entities with anonymized substitutes using configurable strategies.

Import

from rdakt_ai import Anonymizer, AnonymizationStrategy

AnonymizationStrategy

class AnonymizationStrategy(Enum):
    TOKEN = "token"
    SYNTHETIC = "synthetic"
    HYBRID = "hybrid"
ValueReplacementExample
TOKEN<TYPE_N> tokens"John Smith" → "<PERSON_1>"
SYNTHETICFaker-generated values"John Smith" → "Robert Johnson"
HYBRIDSynthetic for names/orgs, token for the restDefault strategy

Constructor

Anonymizer(
    *,
    default_strategy: AnonymizationStrategy = AnonymizationStrategy.HYBRID,
    type_strategies: dict[str, AnonymizationStrategy] | None = None,
)
ParameterTypeDefaultDescription
default_strategyAnonymizationStrategyHYBRIDDefault strategy when type not in type_strategies
type_strategiesdict[str, AnonymizationStrategy] | NoneNonePer-entity-type strategy overrides

Methods

anonymize

def anonymize(
    self,
    text: str,
    entities: list[Entity],
    *,
    session: RdaktSession | None = None,
) -> tuple[str, dict[str, str]]

Anonymize detected entities in text. Returns (anonymized_text, new_mappings).

ParameterTypeDescription
textstrOriginal text
entitieslist[Entity]Detected entities with positions
sessionRdaktSession | NoneSession to reuse existing mappings

Class Attributes

AttributeTypeValue
hybrid_synthetic_typesset[str]{"PERSON", "ORGANIZATION", "LOCATION", "ADDRESS"}

Usage

from rdakt_ai import Anonymizer, AnonymizationStrategy, Entity, RdaktSession

anonymizer = Anonymizer(
    default_strategy=AnonymizationStrategy.TOKEN,
    type_strategies={"PERSON": AnonymizationStrategy.SYNTHETIC},
)

entities = [
    Entity(value="John Smith", type="PERSON", start=0, end=10),
    Entity(value="john@example.com", type="EMAIL", start=23, end=39),
]

session = RdaktSession()
text, mapping = anonymizer.anonymize(
    "John Smith — email: john@example.com",
    entities,
    session=session,
)
# text: "Robert Johnson — email: <EMAIL_1>"
# mapping: {"Robert Johnson": "John Smith", "<EMAIL_1>": "john@example.com"}

See Also

On this page