Better deanonymizer matching strategy (#11557)

@baskaryan, @hwchase17
This commit is contained in:
maks-operlejn-ds
2023-10-09 20:10:29 +02:00
committed by GitHub
parent a992b9670d
commit 4d62def9ff
5 changed files with 893 additions and 510 deletions

View File

@@ -1,5 +1,12 @@
from abc import ABC, abstractmethod
from typing import Optional
from typing import Callable, Optional
from langchain_experimental.data_anonymizer.deanonymizer_mapping import MappingDataType
from langchain_experimental.data_anonymizer.deanonymizer_matching_strategies import (
exact_matching_strategy,
)
DEFAULT_DEANONYMIZER_MATCHING_STRATEGY = exact_matching_strategy
class AnonymizerBase(ABC):
@@ -23,10 +30,20 @@ class ReversibleAnonymizerBase(AnonymizerBase):
Base abstract class for reversible anonymizers.
"""
def deanonymize(self, text: str) -> str:
def deanonymize(
self,
text_to_deanonymize: str,
deanonymizer_matching_strategy: Callable[
[str, MappingDataType], str
] = DEFAULT_DEANONYMIZER_MATCHING_STRATEGY,
) -> str:
"""Deanonymize text"""
return self._deanonymize(text)
return self._deanonymize(text_to_deanonymize, deanonymizer_matching_strategy)
@abstractmethod
def _deanonymize(self, text: str) -> str:
def _deanonymize(
self,
text_to_deanonymize: str,
deanonymizer_matching_strategy: Callable[[str, MappingDataType], str],
) -> str:
"""Abstract method to deanonymize text"""