💬 Uma biblioteca Python para limpeza e processamento de texto
Project description
📚 /text-cleaner-for-py
🧹 /text-cleaner-for-py é um pacote Python leve e eficiente para limpeza e normalização de text. Ele oferece recursos para remoção de HTML, acentos, caracteres especiais, além de filtros, normalização e remoção de stopwords.
✨ Funcionalidades
- 🔡 Normalização de text:
- Conversão para minúsculas.
- Remoção de acentos e caracteres especiais.
- 🧹 Limpeza avançada:
- Remoção de HTML e tags indesejadas.
- Redução de múltiplos espaços e quebras de linha.
- 🔍 Filtros de text:
- Manutenção de letras e números.
- Remoção de stopwords com suporte a múltiplos idiomas.
- 🚀 Funcionalidades Avançadas:
- Detecção automática de idioma
- Remoção de emojis e emoticons
- Remoção de URLs e emails
- Normalização de números, datas e valores monetários
- Correção de erros comuns de digitação
- Remoção de texto duplicado
- Normalização de abreviações
- Stemming e lematização
⚡ Instalação
Instale o pacote diretamente do PyPI:
pip install text_cleaner_for_py
O pacote depende de
nltk,beautifulsoup4,emojielangdetect.
💡 Como Usar
🧹 Uso Básico:
from text_cleaner_for_py.cleaner import clean_text
text = "Olá, mundo! Bem-vindo ao Text Cleaner 🧹✨"
print(clean_text(text)) # Saída: ola mundo bem vindo ao text cleaner
🚀 Uso Avançado:
from text_cleaner_for_py.advanced_cleaner import AdvancedTextCleaner
cleaner = AdvancedTextCleaner()
# Limpeza completa com opções padrão
text = "Olá! 👋 Visite https://exemplo.com ou envie email para teste@exemplo.com. Data: 25/12/2023. Preço: R$ 1.234,56. vc sabe pq?"
cleaned = cleaner.clean_advanced(text)
print(cleaned)
# Limpeza personalizada
options = {
'remove_emojis': True,
'remove_urls': False,
'normalize_dates': True,
'remove_typos': True
}
cleaned = cleaner.clean_advanced(text, options)
print(cleaned)
🔡 Normalização de text:
from text_cleaner_for_py.cleaner_v1 import normalize_text
text = "<p>Olá, Mundo!</p> Bem-vindo ao /text-cleaner-for-py! 🧹✨"
texto_normalizado = normalize_text(text)
print(texto_normalizado) # Saída: ola mundo bem vindo ao text cleaner for py
🌐 Removendo HTML:
from text_cleaner_for_py.cleaner_v1 import remove_html_tags
html_text = "<div><p>Texto <b>importante</b></p></div>"
print(remove_html_tags(html_text)) # Saída: Texto importante
🧹 Reduzindo espaços:
from text_cleaner_for_py.cleaner_v1 import clean_whitespace
text = "Texto com espaços e \n\n quebras."
print(clean_whitespace(text)) # Saída: Texto com espaços e quebras.
🔠 Filtrando letras e números:
from text_cleaner_for_py.cleaner_v1 import filter_letters, filter_numbers
text = "Telefone: 123-456-789"
print(filter_letters(text)) # Saída: Telefone
print(filter_numbers(text)) # Saída: 123456789
📝 Removendo stopwords:
from text_cleaner_for_py.cleaner_v1 import remove_stopwords
text = "Este é um text simples para teste de stopwords."
print(remove_stopwords(text, language='portuguese')) # Saída: text simples teste stopwords.
🚀 Funcionalidades Avançadas:
from text_cleaner_for_py.advanced_cleaner import AdvancedTextCleaner
cleaner = AdvancedTextCleaner()
# Detecção de idioma
print(cleaner.detect_language("Olá, como vai você?")) # Saída: pt
# Remoção de emojis
text = "Olá! 👋 Como vai você? 😊"
print(cleaner.remove_emojis(text)) # Saída: Olá! Como vai você?
# Normalização de números
text = "1º lugar, 2º lugar, 3º lugar"
print(cleaner.normalize_numbers(text)) # Saída: primeiro lugar, segundo lugar, terceiro lugar
# Normalização de datas
text = "Data: 25/12/2023"
print(cleaner.normalize_dates(text)) # Saída: Data: 25 de dezembro de 2023
# Correção de erros comuns
text = "vc sabe pq isso aconteceu?"
print(cleaner.remove_typos(text)) # Saída: você sabe porque isso aconteceu?
# Stemming e lematização
text = "correndo pulando saltando"
print(cleaner.stem_text(text)) # Saída: corr pul salt
print(cleaner.lemmatize_text(text)) # Saída: correr pular saltar
🚀 Casos de Uso
📊 Processamento de Grandes Volumes de Texto
from text_cleaner_for_py.performance_cleaner import PerformanceTextCleaner
# Inicializa o limpeza com performance otimizada
cleaner = PerformanceTextCleaner()
# Processa múltiplos textos em paralelo
texts = [
"Olá, mundo! 🧹✨",
"Bem-vindo ao Text Cleaner!",
"Teste de performance"
]
cleaned_texts = cleaner.clean_texts_parallel(texts)
print(cleaned_texts) # ['ola mundo', 'bem vindo ao text cleaner', 'teste de performance']
# Processa um texto grande dividindo em chunks
large_text = "Olá, mundo! " * 1000
cleaned_large_text = cleaner.clean_large_text(large_text, chunk_size=1000)
print(len(cleaned_large_text)) # Tamanho do texto limpo
🔄 Cache para Textos Frequentes
from text_cleaner_for_py.performance_cleaner import PerformanceTextCleaner
cleaner = PerformanceTextCleaner()
# O mesmo texto será processado apenas uma vez
text = "Olá, mundo! 🧹✨"
result1 = cleaner.clean_text_cached(text) # Processa o texto
result2 = cleaner.clean_text_cached(text) # Usa o cache
assert result1 == result2 # True
⚙️ Limpeza com Opções Específicas
from text_cleaner_for_py.performance_cleaner import PerformanceTextCleaner
cleaner = PerformanceTextCleaner()
# Limpeza com opções específicas
text = "Olá! 👋 Visite https://exemplo.com"
options = {
'remove_emojis': True,
'remove_urls': True
}
cleaned_text = cleaner.clean_text_with_options(text, options)
print(cleaned_text) # 'ola visite'
📈 Benchmark de Performance
import time
from text_cleaner_for_py.performance_cleaner import PerformanceTextCleaner
cleaner = PerformanceTextCleaner()
# Teste de performance com texto grande
large_text = "Olá, mundo! " * 10000
# Tempo sem processamento paralelo
start_time = time.time()
result1 = cleaner.clean_text_cached(large_text)
end_time = time.time()
print(f"Tempo sem paralelismo: {end_time - start_time:.2f} segundos")
# Tempo com processamento paralelo
start_time = time.time()
result2 = cleaner.clean_large_text(large_text)
end_time = time.time()
print(f"Tempo com paralelismo: {end_time - start_time:.2f} segundos")
🔧 Configuração Avançada
from text_cleaner_for_py.performance_cleaner import PerformanceTextCleaner
# Configura o número de workers para processamento paralelo
cleaner = PerformanceTextCleaner(max_workers=4)
# Processa textos com configuração personalizada
texts = ["Texto 1", "Texto 2", "Texto 3"]
cleaned_texts = cleaner.clean_texts_parallel(texts)
🚀 Casos de Uso Avançados e Performance
🧵 Processamento Paralelo de Textos
from text_cleaner_for_py.performance_cleaner import PerformanceTextCleaner
cleaner = PerformanceTextCleaner()
texts = [
"Olá, mundo! 🧹✨",
"Bem-vindo ao Text Cleaner!",
"Teste de performance"
]
cleaned = cleaner.clean_texts_parallel(texts)
print(cleaned)
🧩 Processamento de Texto Grande em Chunks
large_text = "Olá, mundo! " * 1000
cleaned_large = cleaner.clean_large_text(large_text, chunk_size=1000)
print(len(cleaned_large))
🧠 Cache Local de Limpeza
text = "Olá, mundo! 🧹✨"
result1 = cleaner.clean_text_cached(text)
result2 = cleaner.clean_text_cached(text)
assert result1 == result2
🧬 Remoção de Ruído de OCR
text = "H3ll0 W0rld! Th1s 1s 4 t3st."
print(cleaner.remove_ocr_noise(text)) # Saída: Hello World! This is a test.
⚖️ Normalização de Unidades de Medida
text = "O produto pesa 1.5kg e mede 2.5m"
print(cleaner.normalize_measurements(text)) # Saída: O produto pesa 1.5 quilogramas e mede 2.5 metros
🔁 Remoção de Conteúdo Duplicado
text = "Olá mundo! Olá mundo! Como vai você?"
print(cleaner.remove_duplicates(text)) # Saída: Olá mundo! Como vai você?
🏷️ Normalização de Nomes Próprios
text = "joão da silva e maria santos"
print(cleaner.normalize_proper_names(text)) # Saída: João da Silva e Maria Santos
⚙️ Limpeza com Opções Específicas
text = "Olá! 👋 Visite https://exemplo.com"
options = {'remove_emojis': True, 'remove_urls': True}
print(cleaner.clean_text_with_options(text, options)) # Saída: ola visite
Correção Ortográfica
from text_cleaner_for_py.spell_checker import SpellCheckerCleaner
spell_checker = SpellCheckerCleaner(language='pt')
texto = "Olá mundu! Como vai vc?"
# Verificar erros ortográficos
erros = spell_checker.check_text(texto)
print(erros) # {'mundu': [...], 'vc': ['você']}
# Corrigir texto automaticamente
corrigido = spell_checker.correct_text(texto)
print(corrigido) # Olá mundo! Como vai você?
# Sugestões para uma palavra
sugestoes = spell_checker.get_suggestions('mundu')
print(sugestoes) # ['mundo', ...]
Processamento de Documentos
from text_cleaner_for_py.document_processor import DocumentProcessor
processor = DocumentProcessor()
# Ler um arquivo TXT
conteudo = processor.read_document('exemplo.txt')
print(conteudo)
# Ler um arquivo PDF
# conteudo_pdf = processor.read_document('exemplo.pdf')
# print(conteudo_pdf)
# Ler um arquivo DOCX
# conteudo_docx = processor.read_document('exemplo.docx')
# print(conteudo_docx)
# Extrair metadados
metadados = processor.extract_metadata('exemplo.txt')
print(metadados)
# Extrair tabelas de um DOCX
# tabelas = processor.extract_tables('exemplo.docx')
# print(tabelas)
🧪 Testes
Execute os testes com pytest:
pytest tests/
Para execução detalhada:
pytest -v
🏗 Estrutura do Projeto
text_cleaner_for_py/
│
├── text_cleaner_for_py/ # 📦 Código do pacote
│ ├── __init__.py
│ ├── cleaner_v1.py # ⚡ Funções básicas de limpeza
│ ├── cleaner.py # ⚡ Funções principais de limpeza
│ └── advanced_cleaner.py # 🚀 Funções avançadas de limpeza
│
├── tests/ # 🧪 Testes unitários
│ ├── test_cleaner_v1.py
│ ├── test_cleaner.py
│ └── test_advanced_cleaner.py
│
├── setup.py # ⚙️ Configuração do pacote para PyPI
├── pyproject.toml # 📦 Configuração moderna
├── README.md # 📚 Documentação do pacote
├── LICENSE # 📜 Licença MIT
└── MANIFEST.in # 📋 Inclusão de arquivos extras
📝 Licença
Distribuído sob a Licença MIT. Veja o arquivo LICENSE para mais informações.
👨💻 Autor
Desenvolvido por Roberto Lima 🚀✨
💬 Contato
- 📧 Email: robertolima.izphera@gmail.com
- 💼 LinkedIn: Roberto Lima
- 💼 Website: Roberto Lima
- 💼 Gravatar: Roberto Lima
⭐ Gostou do projeto?
Deixe uma ⭐ no repositório e compartilhe com a comunidade! 🚀✨
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file text_cleaner_for_py-1.5.0.tar.gz.
File metadata
- Download URL: text_cleaner_for_py-1.5.0.tar.gz
- Upload date:
- Size: 27.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b911cba7db971ab1dff40437d95e3296585b487b46a094edb9336fb10bc07af
|
|
| MD5 |
55bf880b6ce55783641677f4bef094d6
|
|
| BLAKE2b-256 |
f7fa404c450cfbacf7f6493a7e21265309a4c65b6f9f303eb1b3d82f164fc918
|
File details
Details for the file text_cleaner_for_py-1.5.0-py3-none-any.whl.
File metadata
- Download URL: text_cleaner_for_py-1.5.0-py3-none-any.whl
- Upload date:
- Size: 28.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c29300facc33eb4e9a18812bd187c91c1a3abef9a8ebe5862c1c5f3fe282e9fe
|
|
| MD5 |
fff6dc3eb57ef1b52b869e850e7b5569
|
|
| BLAKE2b-256 |
8d3bf19af25b4f4c60c4ca3ae33ce01d52ebd750309dabb194c3ab2d391158e5
|