CoolFace
Apppublic

aravagarwal/CodeCloakPII

sourceHugging Faceupdated 3y agoView on Hugging Face
0likes
__init__.py109 linesDownload Raw Back to anoninterface
1from tree_sitter import Language2from tree_sitter import Parser3import json4import os5import re6import warnings7from typing import Optional as Opt8from collections import Counter9 10 11from presidio_analyzer import (12    AnalyzerEngine,13    BatchAnalyzerEngine,14    Pattern,15    PatternRecognizer,16)17from presidio_analyzer.nlp_engine import TransformersNlpEngine, NlpEngineProvider18from presidio_anonymizer import AnonymizerEngine, BatchAnonymizerEngine19from presidio_anonymizer.entities import OperatorResult, OperatorConfig20from presidio_analyzer import PatternRecognizer21 22from tqdm import tqdm23import typer24import spacy25 26# Putting package-level imports here as a test - probably terrible27 28Language.build_library(29    # Store the library in the `build` directory30    "build/my-languages.so",31    # Include one or more languages32    ["lib/tree-sitter-java", "lib/tree-sitter-python"],33)34 35JAVA_LANGUAGE = Language("build/my-languages.so", "java")36PYTHON_LANGUAGE = Language("build/my-languages.so", "python")37 38 39parser = Parser()40parser.set_language(PYTHON_LANGUAGE)41 42configuration = {43    "nlp_engine_name": "spacy",44    "models": [{"lang_code": "en", "model_name": "en_core_web_trf"}],45    "ner_model_configuration": {46        "labels_to_ignore": ["O"],47        "aggregation_strategy": "simple",48        "stride": 16,49        "alignment_mode": "expand",50        "model_to_presidio_entity_mapping": {51            "PER": "PERSON",52            "PERSON": "PERSON",53            "LOC": "LOCATION",54            "ORG": "ORGANIZATION",55            "AGE": "AGE",56            "ID": "ID",57            "EMAIL": "EMAIL",58            "PATIENT": "PERSON",59            "STAFF": "PERSON",60            "HOSP": "ORGANIZATION",61            "PATORG": "ORGANIZATION",62            "DATE": "DATE_TIME",63            "PHONE": "PHONE_NUMBER",64            "HCW": "PERSON",65            "HOSPITAL": "ORGANIZATION",66            "FIRSTNAME": "PERSON",67            "FULLNAME": "PERSON",68            "NAME": "PERSON",69            "GENDER": "PERSON",70            "DISPLAYNAME": "PERSON",71            "MIDDLENAME": "PERSON",72            "ACCOUNTNAME": "PERSON",73            "CARDINAL": "AGE",74            "FAC": "AGE",75            "PRODUCT": "AGE",76            "WORK_OF_ART": "AGE",77            "QUANTITY": "AGE",78            "LANGUAGE": "AGE",79            "PERCENT": "AGE",80            "TIME": "AGE",81            "ORDINAL": "AGE",82            "MONEY": "AGE",83            "GPE": "LOCATION",84            "NORP": "PERSON",85        },86    },87}88 89MAX_LENGTH = 100000090MAX_STRINGS_IN_SAMPLE = 10091 92provider = NlpEngineProvider(nlp_configuration=configuration)93provider = provider.create_engine()94provider.nlp["en"].max_length = MAX_LENGTH95 96analyzer = AnalyzerEngine(nlp_engine=provider)97anonymizer = AnonymizerEngine()98 99regex = r'(?!https?://)(?:[a-zA-Z]:\\(?:[^\\/:*?"<>|\r\n]+\\)+[^\\/:*?"<>|\s\r\n]*|\/(?:[^\\/:*?"<>|\r\n]+\/[^\\/:*?"<>|\s\r\n]+\/)*[^\\/:*?"<>|\s\r\n]*)'100path_pattern = Pattern(name="path_pattern", regex=regex, score=1.0)101 102path_re = PatternRecognizer(supported_entity="URL", patterns=[path_pattern])103analyzer.registry.add_recognizer(path_re)104 105# Not needed - just metrics106 107REMOVED_SET = Counter()108 109