Spaces:
Runtime error
Runtime error
File size: 4,002 Bytes
ff20e6e 379b083 265d133 379b083 265d133 379b083 265d133 379b083 265d133 379b083 265d133 379b083 265d133 379b083 aa96962 379b083 aa96962 167b14f 379b083 265d133 aa96962 379b083 265d133 aa96962 265d133 379b083 aa96962 265d133 379b083 aa96962 379b083 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
from typing import Tuple, List
import gradio as gr
from faker import Faker
from presidio_analyzer import AnalyzerEngine
from presidio_analyzer.nlp_engine import SpacyNlpEngine
from presidio_anonymizer import AnonymizerEngine
from presidio_anonymizer.entities.engine import OperatorConfig
from spacy import Language
from examples.common import NLP
# noinspection PyMissingConstructor
class HuSpaCyNlpEngine(SpacyNlpEngine):
def __init__(self, nlp: Language):
self.nlp = {"hu": nlp}
def process(text: str, fake_data: bool, entities: List) -> Tuple[str, List]:
nlp_engine = HuSpaCyNlpEngine(NLP)
analyzer = AnalyzerEngine(nlp_engine=nlp_engine, supported_languages=["hu"])
results = analyzer.analyze(
text=text, entities=entities, language="hu")
fake = Faker(locale=["hu_HU"])
fake_operators = {
"PERSON": OperatorConfig("custom", {"lambda": lambda x: fake.name()}),
"LOCATION": OperatorConfig("custom", {"lambda": lambda x: fake.address()}),
"EMAIL_ADDRESS": OperatorConfig("custom", {"lambda": lambda x: fake.email()}),
"PHONE_NUMBER": OperatorConfig("custom", {"lambda": lambda x: fake.phone_number()}),
"CRYPTO": OperatorConfig("custom", {"lambda": lambda x: fake.password()}),
"IP_ADDRESS": OperatorConfig("custom", {"lambda": lambda x: fake.ipv4()}),
"URL": OperatorConfig("custom", {"lambda": lambda x: fake.url()}),
"DATE_TIME": OperatorConfig("custom", {"lambda": lambda x: fake.date()}),
"CREDIT_CARD": OperatorConfig("custom", {"lambda": lambda x: fake.credit_card_number()}),
"IBAN_CODE": OperatorConfig("custom", {"lambda": lambda x: fake.iban()}),
}
anonymizer = AnonymizerEngine()
anonymized_text = anonymizer.anonymize(
text=text, analyzer_results=results, operators=fake_operators) if fake_data else anonymizer.anonymize(text=text,
analyzer_results=results)
return anonymized_text.text, anonymized_text.items
EXAMPLES = [
[
"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"]],
[
"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, [
"PERSON", "LOCATION"]],
[
"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 (1Fsb3io3hj1jKaRCTRQ89Du88Dp7NxgEcU), bankkártyájára (5200 8282 8282 8210) és IBAN számlaszámára (ES8201289482186115378819) fogadott. 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,
["PERSON", "LOCATION", "EMAIL_ADDRESS", "PHONE_NUMBER", "CRYPTO", "IP_ADDRESS", "URL", "DATE_TIME",
"CREDIT_CARD", "IBAN_CODE"]],
]
demo = gr.Interface(
fn=process,
inputs=[gr.Textbox(value=EXAMPLES[0][0], lines=10, label="Input text", show_label=True),
gr.Checkbox(value=EXAMPLES[0][1],
label="Apply de-identification", show_label=True),
gr.CheckboxGroup(
['PERSON', 'LOCATION', 'DATE_TIME', 'IP_ADDRESS', 'URL', 'EMAIL_ADDRESS', 'PHONE_NUMBER', 'CREDIT_CARD',
'IBAN_CODE', 'CRYPTO'], label="Entities", show_label=True, value=EXAMPLES[0][2])],
outputs=[gr.Textbox(label="Anonymized text", show_label=True),
gr.Textbox(label="Tags", show_label=True)],
examples=EXAMPLES,
# cache_examples=True,
)
|