CoolFace
Apppublic

manjusha-r/email-classification-api

sourceHugging Facemitupdated 1y agoView on Hugging Face
0likes
utils.py51 linesDownload Raw Back to root
1import re2 3def mask_pii(text):4    entities = []5 6    # Full Name (basic pattern for names starting with capital letters)7    name_pattern = re.compile(r'\b([A-Z][a-z]+(?:\s[A-Z][a-z]+)+)\b')8    text, entities = _mask_and_store(text, name_pattern, 'full_name', entities)9 10    # Email11    email_pattern = re.compile(r'\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b')12    text, entities = _mask_and_store(text, email_pattern, 'email', entities)13 14    # Phone Number15    phone_pattern = re.compile(r'\b[789]\d{9}\b')16    text, entities = _mask_and_store(text, phone_pattern, 'phone_number', entities)17 18    # DOB - formats: DD/MM/YYYY, DD-MM-YYYY19    dob_pattern = re.compile(r'\b\d{2}[/-]\d{2}[/-]\d{4}\b')20    text, entities = _mask_and_store(text, dob_pattern, 'dob', entities)21 22    # Aadhar Number (12 digits)23    aadhar_pattern = re.compile(r'\b\d{4}\s\d{4}\s\d{4}\b')24    text, entities = _mask_and_store(text, aadhar_pattern, 'aadhar_num', entities)25 26    # Credit/Debit Card Number (16 digits)27    card_pattern = re.compile(r'\b(?:\d[ -]*?){13,16}\b')28    text, entities = _mask_and_store(text, card_pattern, 'credit_debit_no', entities)29 30    # CVV (3 digits)31    cvv_pattern = re.compile(r'\b\d{3}\b')32    text, entities = _mask_and_store(text, cvv_pattern, 'cvv_no', entities)33 34    # Expiry (MM/YY or MM/YYYY)35    expiry_pattern = re.compile(r'\b(0[1-9]|1[0-2])[/-](\d{2}|\d{4})\b')36    text, entities = _mask_and_store(text, expiry_pattern, 'expiry_no', entities)37 38    return text, entities39 40def _mask_and_store(text, pattern, entity_type, entities):41    for match in pattern.finditer(text):42        start, end = match.span()43        value = match.group()44        text = text[:start] + f'[{entity_type}]' + text[end:]45        entities.append({46            "position": [start, start + len(f'[{entity_type}]')],47            "classification": entity_type,48            "entity": value49        })50    return text, entities51