Spaces:
Runtime error
Runtime error
| 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=False, | |
| ) | |