app.services.nlp_service

Módulo responsável por processar texto para classificação de emails, incluindo limpeza (remoção de stopwords) e geração de hash do texto.

Funções:

  • preprocess_text: realiza tokenização, remoção de pontuação e stopwords em português.
  • get_text_hash: gera um hash SHA-256 único para o texto processado.
 1"""
 2Módulo responsável por processar texto para classificação de emails,
 3incluindo limpeza (remoção de stopwords) e geração de hash do texto.
 4
 5Funções:
 6- preprocess_text: realiza tokenização, remoção de pontuação e stopwords em português.
 7- get_text_hash: gera um hash SHA-256 único para o texto processado.
 8"""
 9
10import nltk
11from nltk.corpus import stopwords
12from nltk.tokenize import word_tokenize
13import hashlib
14
15# nltk.download("punkt", quiet=True)
16# nltk.download("stopwords", quiet=True)
17
18def preprocess_text(text):
19    """
20    Pré-processa o texto recebido:
21    - converte para minúsculas
22    - tokeniza em palavras
23    - remove pontuações e stopwords (português)
24
25    Args:
26        text (str): Texto original.
27
28    Returns:
29        str: Texto limpo, apenas com palavras significativas separadas por espaço.
30    """
31    text = text.lower()
32    words = word_tokenize(text, preserve_line=True)
33    stop_words = set(stopwords.words("portuguese"))
34    filtered_words = [w for w in words if w.isalnum() and w not in stop_words]
35    return " ".join(filtered_words)
36
37def get_text_hash(text):
38    """
39    Gera um hash SHA-256 para o texto processado.
40
41    Útil para usar como chave de cache, evitando processar o mesmo texto repetidamente.
42
43    Args:
44        text (str): Texto já pré-processado.
45
46    Returns:
47        str: Hash SHA-256 do texto.
48    """
49    return hashlib.sha256(text.encode('utf-8')).hexdigest()
def preprocess_text(text):
19def preprocess_text(text):
20    """
21    Pré-processa o texto recebido:
22    - converte para minúsculas
23    - tokeniza em palavras
24    - remove pontuações e stopwords (português)
25
26    Args:
27        text (str): Texto original.
28
29    Returns:
30        str: Texto limpo, apenas com palavras significativas separadas por espaço.
31    """
32    text = text.lower()
33    words = word_tokenize(text, preserve_line=True)
34    stop_words = set(stopwords.words("portuguese"))
35    filtered_words = [w for w in words if w.isalnum() and w not in stop_words]
36    return " ".join(filtered_words)

Pré-processa o texto recebido:

  • converte para minúsculas
  • tokeniza em palavras
  • remove pontuações e stopwords (português)

Args: text (str): Texto original.

Returns: str: Texto limpo, apenas com palavras significativas separadas por espaço.

def get_text_hash(text):
38def get_text_hash(text):
39    """
40    Gera um hash SHA-256 para o texto processado.
41
42    Útil para usar como chave de cache, evitando processar o mesmo texto repetidamente.
43
44    Args:
45        text (str): Texto já pré-processado.
46
47    Returns:
48        str: Hash SHA-256 do texto.
49    """
50    return hashlib.sha256(text.encode('utf-8')).hexdigest()

Gera um hash SHA-256 para o texto processado.

Útil para usar como chave de cache, evitando processar o mesmo texto repetidamente.

Args: text (str): Texto já pré-processado.

Returns: str: Hash SHA-256 do texto.