VoiceToWrite / privacy.py
Seicas's picture
Upload privacy.py
030aeb4 verified
class MedicalPrivacyProcessor:
def __init__(self):
# Anonimleştirme için gerekli kaynakları yükle
self.pii_patterns = {
"isim": [r'\b[A-Z][a-z]+ [A-Z][a-z]+\b'],
"tc_no": [r'\b[1-9][0-9]{10}\b'],
"telefon": [r'\b0?5[0-9]{2} ?[0-9]{3} ?[0-9]{2} ?[0-9]{2}\b'],
"email": [r'\b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b'],
"adres": [r'\b[A-Z][a-z]+ (Mahallesi|Mah\.)\b']
}
def anonymize_text(self, text):
"""Metindeki kişisel verileri tespit eder ve anonimleştirir"""
if not text:
return text, {}
# Basit bir örnek: gerçek uygulamada daha gelişmiş olmalı
identified_data = {}
anonymized = text
# Her bir PII (Personally Identifiable Information) tipini kontrol et
import re
for data_type, patterns in self.pii_patterns.items():
matches = []
for pattern in patterns:
for match in re.finditer(pattern, text):
matches.append(match.group(0))
# Eşleşen verileri anonimleştir
for i, match in enumerate(matches):
replacement = f"[{data_type.upper()}_{i+1}]"
anonymized = anonymized.replace(match, replacement)
if matches:
identified_data[data_type] = matches
return anonymized, identified_data