Source code for langchain_experimental.data_anonymizer.base

from abc import ABC, abstractmethod
from typing import Callable, List, 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


[docs]class AnonymizerBase(ABC): """用于匿名化的基础抽象类。 它是公共的和非虚拟的,因为它允许在基类中包装所有方法的行为。"""
[docs] def anonymize( self, text: str, language: Optional[str] = None, allow_list: Optional[List[str]] = None, ) -> str: """文本匿名化。""" return self._anonymize(text, language, allow_list)
@abstractmethod def _anonymize( self, text: str, language: Optional[str], allow_list: Optional[List[str]] = None ) -> str: """用于对文本进行匿名化的抽象方法"""
[docs]class ReversibleAnonymizerBase(AnonymizerBase): """ 可逆匿名化器的基础抽象类。 """
[docs] def deanonymize( self, text_to_deanonymize: str, deanonymizer_matching_strategy: Callable[ [str, MappingDataType], str ] = DEFAULT_DEANONYMIZER_MATCHING_STRATEGY, ) -> str: """识别文本""" return self._deanonymize(text_to_deanonymize, deanonymizer_matching_strategy)
@abstractmethod def _deanonymize( self, text_to_deanonymize: str, deanonymizer_matching_strategy: Callable[[str, MappingDataType], str], ) -> str: """抽象方法,用于去匿名化文本"""
[docs] @abstractmethod def reset_deanonymizer_mapping(self) -> None: """重置去匿名化映射的抽象方法"""