Chiusura fase di ristrutturazione e modularizzazione del workflow per favorire sviluppo modulare
This commit is contained in:
Vendored
+7
-6
@@ -4,11 +4,12 @@
|
||||
"""Core LSH (MinHash) per la ricerca di valori simili nei campi del database."""
|
||||
|
||||
import logging
|
||||
from typing import Dict, List, Tuple
|
||||
|
||||
from datasketch import MinHash, MinHashLSH
|
||||
from tqdm import tqdm
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def create_minhash(signature_size: int, string: str, n_gram: int) -> MinHash:
|
||||
m = MinHash(num_perm=signature_size)
|
||||
@@ -33,7 +34,7 @@ NAME_LIKE_TOKENS: tuple[str, ...] = (
|
||||
|
||||
def skip_column(
|
||||
column_name: str,
|
||||
column_values: List[str],
|
||||
column_values: list[str],
|
||||
max_total_chars: int = 50000,
|
||||
max_avg_length: int = 20,
|
||||
name_tokens: tuple[str, ...] = NAME_LIKE_TOKENS,
|
||||
@@ -51,20 +52,20 @@ def jaccard_similarity(m1: MinHash, m2: MinHash) -> float:
|
||||
|
||||
|
||||
def create_lsh_index(
|
||||
unique_values: Dict[str, Dict[str, List[str]]],
|
||||
unique_values: dict[str, dict[str, list[str]]],
|
||||
signature_size: int,
|
||||
n_gram: int,
|
||||
threshold: float,
|
||||
verbose: bool = True,
|
||||
) -> Tuple[MinHashLSH, Dict[str, Tuple[MinHash, str, str, str]]]:
|
||||
) -> tuple[MinHashLSH, dict[str, tuple[MinHash, str, str, str]]]:
|
||||
lsh = MinHashLSH(threshold=threshold, num_perm=signature_size)
|
||||
minhashes: Dict[str, Tuple[MinHash, str, str, str]] = {}
|
||||
minhashes: dict[str, tuple[MinHash, str, str, str]] = {}
|
||||
total = sum(
|
||||
len(column_values)
|
||||
for table_values in unique_values.values()
|
||||
for column_values in table_values.values()
|
||||
)
|
||||
logging.info("Total unique values: %s", total)
|
||||
logger.info("Total unique values: %s", total)
|
||||
progress_bar = tqdm(total=total, desc="Creating LSH") if verbose else None
|
||||
|
||||
for table_name, table_values in unique_values.items():
|
||||
|
||||
Reference in New Issue
Block a user