Spaces:
Sleeping
Sleeping
import os | |
import re | |
from typing import List | |
# Para PDF | |
try: | |
import PyPDF2 | |
except ImportError: | |
PyPDF2 = None | |
# Para NLP com spaCy | |
try: | |
import spacy | |
nlp = spacy.load('pt_core_news_sm') | |
except ImportError: | |
nlp = None | |
except OSError: | |
import spacy | |
spacy.cli.download('pt_core_news_sm') | |
nlp = spacy.load('pt_core_news_sm') | |
def ler_arquivo_email(caminho: str) -> str: | |
"""Lê o conteúdo de um arquivo .txt ou .pdf e retorna o texto extraído.""" | |
ext = os.path.splitext(caminho)[1].lower() | |
if ext == '.txt': | |
with open(caminho, 'r', encoding='utf-8') as f: | |
return f.read() | |
elif ext == '.pdf' and PyPDF2: | |
texto = '' | |
with open(caminho, 'rb') as f: | |
reader = PyPDF2.PdfReader(f) | |
for page in reader.pages: | |
texto += page.extract_text() or '' | |
return texto | |
else: | |
raise ValueError('Formato de arquivo não suportado ou biblioteca PyPDF2 não instalada.') | |
def preprocessar_texto(texto: str) -> List[str]: | |
"""Remove stopwords e aplica lematização usando spaCy para português.""" | |
if not nlp: | |
raise ImportError('spaCy ou modelo pt_core_news_sm não instalado.') | |
doc = nlp(texto) | |
tokens_proc = [token.lemma_ for token in doc if not token.is_stop and not token.is_punct and not token.is_space] | |
return tokens_proc | |
if __name__ == '__main__': | |
caminho = input('Digite o caminho do arquivo (.txt ou .pdf): ') | |
texto = ler_arquivo_email(caminho) | |
print('Texto extraído:') | |
print(texto[:500], '...') | |
tokens = preprocessar_texto(texto) | |
print('\nTokens após pré-processamento:') | |
print(tokens[:50], '...') | |