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.