Le français suit l'anglais
Create a virtual environment with Python >=3.9 .. code:
conda create -n=canonym python=3.9
conda activate canonym
You can install Canonym using the wheel located in the dist folder:
pip install dist\canonym_public-2023.9.15-py3-none-any.whl
from canonym import Canonym
anonymizer = Canonym()
text = "This is John Doe, from Ottawa, his phone number is 123-456-7890"
anonymizer.anonymize(text)
Canonym can accept as an input the following :
- string
- list of strings
- Textitem object
- Pandas Series
- Pandas DataFrame
You can use directly the anonymize() method, or use the input specific methods :
- str: anonymizer.anonymize_text,
- TextItem: anonymizer.anonymize_text,
- list: anonymizer.anonymize_list,
- DataFrame: anonymizer.anonymize_dataframe,
- Series: anonymizer.anonymize_pd_series
The following default are available by default:
- replace_all_with_tag : replaces all entities with their Entity Type
- redact_all : redacts all PI
- hash_all : Hashes the PI entities
- mask_all : Masks all DEFAULT entities
- scramble_all : Scrambles (changes the order of letters) for all entities
- mixed_per_entity_type : {hash : ALPHABET_ENTITIES, mask : SPECIAL_ENTITIES, randomize : NUMERIC_ENTITIES, redact : ALPHANUMERIC_ENTITIES}
- hash_one : {hash: [PERSON]}
- mask_some: {mask: [PERSON, FULL_ADDRESS], redact: [PHONE_NUMBER]}
- replace_custom: {replace: CUSTOM_ENTITIES}
- redact_custom: {redact : CUSTOM_ENTITIES}
- faker_custom: {faker : CUSTOM_ENTITIES}
- faker_all: {faker : DEFAULT_ENTITIES}
- replace_w_value_custom: {replace_val : CUSTOM_ENTITIES}
By default the anonymize method will use the replace_all_with_tag strategy, to use a different strategy use :
anonymizer.anonymize(text, strategy='redact_all')
The language parameter provides the language of the text, defaults to english, if None or "auto" are provided a search will be conducted to automatically find the right language for each text input. By default Canonym handles English and French text.
In the case of a Pandas DataFrame, also accepts a dict of format {column_name:language or auto, }, so each column can be set to a different language or to automatic search.
# a string
anonymizer.anonymize(text, strategy='redact_all', language='fr')
# a Pandas DataFrame
anonymizer.anonymize(df, language={'column1': 'en', 'column2': 'fr', 'column3': 'auto'} )
The behavior of Canonym can be modified, by editing the two configuration files :
- ner_config_default.yaml
- anonymizer_config_default.yaml
in ner_config_default.yaml the following can be defined :
AVAILABLE_LANGS : Which language Canonym can handle, defaults to en and fr
SCORE_THRESHOLD : The confidence score threshold over which an entity is tagged, defaults at 0.4
DEFAULT_RECOGNIZERS : List of recognizers loaded by Canonym
POST_PROCESSING_ENTITIES : Entity specific post-processing
PRESIDIO_NLP_ENGINE_CONFIG : Some entities will be handled by a spacy engine that needs to be defined
- nlp_engine_name
- models
SPACY_ENTITIES : List of entities, that need to be handled by Spacy
TRANSFORMER_MODELS_ENTITIES : List of entities, that need to be handled by the Transformers models
TRANSFORMER_MODELS_ENHANCERS : Post processing enhancement for the Tags provided by the Transformers models (Extending partial words or merging similar contiguous entities)
in anonymizer_config_default.yaml the following can be defined :
AVAILABLE_LANGS : Which language Canonym can handle, defaults to en and fr
DEFAULT_ENTITIES: List of all entities that can be anonymized
ALPHABET_ENTITIES: Set of Alphabet entities
SPECIAL_ENTITIES: Set of special entities ( email, url, etc..)
NUMERIC_ENTITIES:
ALPHANUMERIC_ENTITIES:
CUSTOM_ENTITIES: Custom set of entities to be redacted
ALL_ANONYMIZER_STRATEGIES: List of strategies, a strategy is defined as :
strategy_name : {anonymization_action_1 : SET_1_OF_ENTITES, anonymization_action_2 : SET_2_OF_ENTITES}
Before contributing please read the instructions in CONTRIBUTING.md
link: CONTRIBUTING.MD
Créer un environnement virtuel avec Python >=3.9 ... code:
conda create -n=canonym python=3.9
conda activate canonym
Vous pouvez installer Canonym en utilisant le fichier whl situé dans le dossier dist :
... code:
pip install dist\canonym_public-2023.9.15-py3-none-any.whl
... code:: python
from canonym import Canonym
anonymizer = Canonym()
text = "This is John Doe, from Ottawa, his phone number is 123-456-7890" anonymizer.anonymize(text)
Canonym peut accepter comme intrants :
- chaîne de caractères
- liste de chaînes de caractères
- objet Textitem
- Série Pandas
- DataFrame Pandas
Vous pouvez utiliser directement la méthode anonymize(), ou utiliser les méthodes spécifiques à chaque type d'intrants :
- str : anonymizer.anonymize_text,
- TextItem : anonymizer.anonymize_text,
- list : anonymizer.anonymize_list,
- DataFrame : anonymizer.anonymize_dataframe,
- Series : anonymizer.anonymize_pd_series
Les stratégies suivantes sont disponibles par défaut :
- replace_all_with_tag : remplace toutes les entités par leur type d'entité.
- redact_all : expurge tous les PI
- hash_all : Hache les entités PI
- mask_all : Masque toutes les entités DEFAULT
- scramble_all : Brouille (change l'ordre des lettres) toutes les entités.
- mixed_per_entity_type : {hash : ALPHABET_ENTITIES, mask : SPECIAL_ENTITIES, randomize : NUMERIC_ENTITIES, redact : ALPHANUMERIC_ENTITIES}
- hash_one : {hash : [PERSON]}
- mask_some : {mask : [PERSON, FULL_ADDRESS], redact : [PHONE_NUMBER]}
- replace_custom : {replace : CUSTOM_ENTITIES}
- redact_custom : {redact : CUSTOM_ENTITIES}
- faker_custom : {faker : CUSTOM_ENTITIES}
- faker_all : {faker : DEFAULT_ENTITIES}
- replace_w_value_custom : {replace_val : CUSTOM_ENTITIES}
Par défaut, la méthode d'anonymisation utilise la stratégie replace_all_with_tag, pour utiliser une stratégie différente, utilisez :
anonymizer.anonymize(text, strategy='redact_all')
Le paramètre language indique la langue du texte, par défaut l'anglais, si None ou "auto" sont fournis, une recherche sera effectuée pour trouver automatiquement la bonne langue pour chaque entrée de texte pour trouver automatiquement la bonne langue pour chaque texte saisi. Par défaut, Canonym est capable de traiter les textes en anglais et en français.
Dans le cas d'un DataFrame Pandas, Canonym accepte également un dict de format {nom_de_colonne:langue ou auto, }, afin que chaque colonne puisse être configurée pour une langue différente ou pour une recherche automatique.
# une chaîne de caractères
anonymizer.anonymize(text, strategy='redact_all', language='fr')
# un DataFrame Pandas
anonymizer.anonymize(df, language={'column1' : 'en', 'column2' : 'fr', 'column3' : 'auto'} )
Le comportement de Canonym peut être modifié en éditant les deux fichiers de configuration :
- ner_config_default.yaml
- anonymizer_config_default.yaml
dans ner_config_default.yaml les éléments suivants peuvent être définis :
AVAILABLE_LANGS : Les langues que Canonym peut gérer, par défaut en et fr.
SCORE_THRESHOLD : Le seuil de confiance à partir duquel une entité est étiquetée, par défaut 0.4.
DEFAULT_RECOGNIZERS : Liste des outils de reconnaissance chargés par Canonym
POST_PROCESSING_ENTITIES : Post-traitement spécifique aux entités
PRESIDIO_NLP_ENGINE_CONFIG : Certaines entités seront traitées par un moteur spacy qui doit être défini.
- nom du moteur nlp
- modèles
SPACY_ENTITIES : Liste des entités qui doivent être gérées par Spacy
TRANSFORMER_MODELS_ENTITIES : Liste des entités qui doivent être traitées par les modèles Transformers
TRANSFORMER_MODELS_ENHANCERS : Amélioration du post-traitement pour les étiquettes fournies par les modèles Transformers (extension des mots partiels ou fusion d'entités contiguës similaires)
dans anonymizer_config_default.yaml, les éléments suivants peuvent être définis :
AVAILABLE_LANGS : Les langues que Canonym peut gérer, par défaut en et fr.
DEFAULT_ENTITIES : Liste de toutes les entités qui peuvent être anonymisées
ALPHABET_ENTITIES : Ensemble d'entités alphabétiques
SPECIAL_ENTITIES : Ensemble d'entités spéciales (email, url, etc.)
NUMERIC_ENTITIES :
ALPHANUMERIC_ENTITIES :
CUSTOM_ENTITIES : Ensemble personnalisé d'entités à expurger
ALL_ANONYMIZER_STRATEGIES : Liste des stratégies, une stratégie est définie comme suit :
nom_de_la_stratégie : {anonymisation_action_1 : SET_1_OF_ENTITES, anonymisation_action_2 : SET_2_OF_ENTITES}
Avant de contribuer merci de lire les instructions présentes dans CONTRIBUTING.md
lien: CONTRIBUTING.MD