Spaces:
Runtime error
Runtime error
feat: Added option to select entities in anonymizer demo
Browse files- examples/anon.py +19 -7
examples/anon.py
CHANGED
|
@@ -10,7 +10,7 @@ from faker import Faker
|
|
| 10 |
from presidio_anonymizer.entities.engine import OperatorConfig
|
| 11 |
|
| 12 |
|
| 13 |
-
def process(text: str, fake_data: bool) -> Tuple[str, List]:
|
| 14 |
configuration = {
|
| 15 |
"nlp_engine_name": "spacy",
|
| 16 |
"models": [{"lang_code": "hu", "model_name": "hu_core_news_lg", }],
|
|
@@ -20,35 +20,47 @@ def process(text: str, fake_data: bool) -> Tuple[str, List]:
|
|
| 20 |
nlp_engine = provider.create_engine()
|
| 21 |
|
| 22 |
analyzer = AnalyzerEngine(nlp_engine=nlp_engine,
|
| 23 |
-
supported_languages=["hu"])
|
| 24 |
|
| 25 |
results = analyzer.analyze(
|
| 26 |
-
text=text, entities=
|
| 27 |
|
| 28 |
fake = Faker(locale=["hu_HU"])
|
| 29 |
|
| 30 |
fake_operators = {
|
| 31 |
"PERSON": OperatorConfig("custom", {"lambda": lambda x: fake.name()}),
|
| 32 |
"LOCATION": OperatorConfig("custom", {"lambda": lambda x: fake.address()}),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 33 |
}
|
| 34 |
|
| 35 |
anonymizer = AnonymizerEngine()
|
| 36 |
anonymized_text = anonymizer.anonymize(
|
| 37 |
text=text, analyzer_results=results, operators=fake_operators) if fake_data else anonymizer.anonymize(text=text, analyzer_results=results)
|
|
|
|
| 38 |
return anonymized_text.text, anonymized_text.items
|
| 39 |
|
| 40 |
|
| 41 |
EXAMPLES = [
|
| 42 |
-
["Vespucci 1450-es években született Firenzében, és 1497 és 1504 között legalább két felfedező úton vett részt – az egyiket spanyol, a másikat portugál támogatással.", False],
|
| 43 |
-
["Elon Musk 1971-ben született a Dél-afrikai Köztársaságban, anyja Maye Musk (született: Haldeman) modell, apja Errol Musk mérnök, pilóta.", True
|
|
|
|
|
|
|
|
|
|
| 44 |
]
|
| 45 |
|
| 46 |
demo = gr.Interface(
|
| 47 |
fn=process,
|
| 48 |
inputs=[gr.Textbox(value=EXAMPLES[0][0], lines=10, label="Input text", show_label=True),
|
| 49 |
-
gr.Checkbox(value=EXAMPLES[0][1],
|
|
|
|
|
|
|
| 50 |
outputs=[gr.Textbox(label="Anonymized text", show_label=True),
|
| 51 |
gr.Textbox(label="Tags", show_label=True)],
|
| 52 |
examples=EXAMPLES,
|
| 53 |
-
cache_examples=True,
|
| 54 |
)
|
|
|
|
| 10 |
from presidio_anonymizer.entities.engine import OperatorConfig
|
| 11 |
|
| 12 |
|
| 13 |
+
def process(text: str, fake_data: bool, entities: List) -> Tuple[str, List]:
|
| 14 |
configuration = {
|
| 15 |
"nlp_engine_name": "spacy",
|
| 16 |
"models": [{"lang_code": "hu", "model_name": "hu_core_news_lg", }],
|
|
|
|
| 20 |
nlp_engine = provider.create_engine()
|
| 21 |
|
| 22 |
analyzer = AnalyzerEngine(nlp_engine=nlp_engine,
|
| 23 |
+
supported_languages=["hu"],)
|
| 24 |
|
| 25 |
results = analyzer.analyze(
|
| 26 |
+
text=text, entities=entities, language="hu")
|
| 27 |
|
| 28 |
fake = Faker(locale=["hu_HU"])
|
| 29 |
|
| 30 |
fake_operators = {
|
| 31 |
"PERSON": OperatorConfig("custom", {"lambda": lambda x: fake.name()}),
|
| 32 |
"LOCATION": OperatorConfig("custom", {"lambda": lambda x: fake.address()}),
|
| 33 |
+
"EMAIL_ADDRESS": OperatorConfig("custom", {"lambda": lambda x: fake.email()}),
|
| 34 |
+
"PHONE_NUMBER": OperatorConfig("custom", {"lambda": lambda x: fake.phone_number()}),
|
| 35 |
+
"CRYPTO": OperatorConfig("custom", {"lambda": lambda x: fake.password()}),
|
| 36 |
+
"IP_ADDRESS": OperatorConfig("custom", {"lambda": lambda x: fake.ipv4()}),
|
| 37 |
+
"URL": OperatorConfig("custom", {"lambda": lambda x: fake.url()}),
|
| 38 |
+
"DATE_TIME": OperatorConfig("custom", {"lambda": lambda x: fake.date()}),
|
| 39 |
}
|
| 40 |
|
| 41 |
anonymizer = AnonymizerEngine()
|
| 42 |
anonymized_text = anonymizer.anonymize(
|
| 43 |
text=text, analyzer_results=results, operators=fake_operators) if fake_data else anonymizer.anonymize(text=text, analyzer_results=results)
|
| 44 |
+
|
| 45 |
return anonymized_text.text, anonymized_text.items
|
| 46 |
|
| 47 |
|
| 48 |
EXAMPLES = [
|
| 49 |
+
["Vespucci 1450-es években született Firenzében, és 1497 és 1504 között legalább két felfedező úton vett részt – az egyiket spanyol, a másikat portugál támogatással.", False, ["PERSON", "LOCATION"]],
|
| 50 |
+
["Elon Musk 1971-ben született a Dél-afrikai Köztársaságban, anyja Maye Musk (született: Haldeman) modell, apja Errol Musk mérnök, pilóta.", True, [
|
| 51 |
+
"PERSON", "LOCATION"]],
|
| 52 |
+
["Vespucci 1450-es években született Firenzében, és 1497 és 1504 között legalább két felfedező úton vett részt. Bárorító leveleket a vespucci@deojeda.es email-címre várt, mellette működött egy hangrögzítője is a +3903827802737 telefonszámon. Adományokat a bitcoin tárcájába fogadott: 1Fsb3io3hj1jKaRCTRQ89Du88Dp7NxgEcU. Utazási blogja a https://firenze.it/vespucci címen volt elérhető. Legutóbb 1503-03-15-én publikált, ezt a 192.168.0.1 ip-címről tette meg.", True,
|
| 53 |
+
["PERSON", "LOCATION", "EMAIL_ADDRESS", "PHONE_NUMBER", "CRYPTO", "IP_ADDRESS", "URL", "DATE_TIME"]],
|
| 54 |
]
|
| 55 |
|
| 56 |
demo = gr.Interface(
|
| 57 |
fn=process,
|
| 58 |
inputs=[gr.Textbox(value=EXAMPLES[0][0], lines=10, label="Input text", show_label=True),
|
| 59 |
+
gr.Checkbox(value=EXAMPLES[0][1],
|
| 60 |
+
label="Apply de-identification", show_label=True),
|
| 61 |
+
gr.CheckboxGroup(['PERSON', 'DATE_TIME', 'IP_ADDRESS', 'LOCATION', 'URL', 'EMAIL_ADDRESS', 'CRYPTO', 'PHONE_NUMBER'], label="Entities", show_label=True, value=EXAMPLES[0][2])],
|
| 62 |
outputs=[gr.Textbox(label="Anonymized text", show_label=True),
|
| 63 |
gr.Textbox(label="Tags", show_label=True)],
|
| 64 |
examples=EXAMPLES,
|
| 65 |
+
# cache_examples=True,
|
| 66 |
)
|