Joblib
File size: 1,933 Bytes
5c8f9d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
"""

Modu艂 do ekstrakcji cech opartych na wyra偶eniach regularnych.



Odpowiedzialny za wykrywanie i zliczanie predefiniowanych wzorc贸w,

takich jak dane osobowe i wra偶liwe (PII), numery identyfikacyjne,

daty, adresy e-mail i inne specyficzne formaty.

"""

from typing import Dict

from ..constants import PII_REGEX_PATTERNS

def calculate_all_regex_features(text: str) -> Dict[str, int]:
    """

    Przeszukuje tekst w poszukiwaniu wszystkich zdefiniowanych wzorc贸w i 

    zlicza ich wyst膮pienia, zachowuj膮c zgodno艣膰 z oryginalnym zestawem cech.



    Args:

        text (str): Tekst do analizy.



    Returns:

        Dict[str, int]: S艂ownik, w kt贸rym klucze to nazwy wzorc贸w (np. 'email_reg'),

                        a warto艣ci to liczba znalezionych dopasowa艅.

    """
    if not text:
        # Zwracamy s艂ownik z zerami dla wszystkich kluczy, kt贸re by powsta艂y.
        # Usuwamy 'domestic_phone_reg', bo nie jest to cecha ko艅cowa.
        original_keys = [k for k in PII_REGEX_PATTERNS.keys() if k != 'domestic_phone_reg']
        return {name: 0 for name in original_keys}

    features = {}
    
    # Przechodzimy przez wszystkie prekompilowane wzorce
    for name, pattern in PII_REGEX_PATTERNS.items():
        try:
            matches = pattern.findall(text)
            features[name] = len(matches)
        except Exception as e:
            print(f"B艂膮d podczas przetwarzania wzorca '{name}': {e}")
            features[name] = 0

    # Odtworzenie oryginalnej logiki: suma telefon贸w jest przypisana do 'phone_reg'
    # a 'domestic_phone_reg' nie jest cech膮 ko艅cow膮.
    if 'phone_reg' in features and 'domestic_phone_reg' in features:
        features['phone_reg'] += features['domestic_phone_reg']
        # Usuwamy klucz pomocniczy, aby nie pojawi艂 si臋 w wynikach ko艅cowych.
        del features['domestic_phone_reg']
    
    return features