Skip to content

Fase 1.2: Criar módulo text_preprocessing.py #20

@bdcdo

Description

@bdcdo

🚀 Fase 1.2: Criar Módulo text_preprocessing.py

📝 Descrição

Criar novo módulo para centralizar funcionalidades de pré-processamento de texto (stemming e lemmatization).

🎯 Objetivos

  • Criar arquivo src/cluster_facil/text_preprocessing.py
  • Definir interfaces abstratas para processadores
  • Implementar classe base e utilitários
  • Estrutura para futuras implementações

🔧 Implementação Técnica

Estrutura do módulo:

# src/cluster_facil/text_preprocessing.py
from abc import ABC, abstractmethod
from typing import List, Optional
import logging

class TextProcessor(ABC):
    """Interface base para processadores de texto."""
    
    @abstractmethod
    def process_text(self, text: str) -> str:
        """Processa um texto individual."""
        pass
    
    @abstractmethod
    def process_batch(self, texts: List[str]) -> List[str]:
        """Processa um lote de textos."""
        pass

class NoProcessor(TextProcessor):
    """Processador que não faz nada (padrão atual)."""
    
    def process_text(self, text: str) -> str:
        return text
    
    def process_batch(self, texts: List[str]) -> List[str]:
        return texts

# Funções utilitárias
def is_spacy_available() -> bool:
    """Verifica se spaCy está disponível."""
    
def check_spacy_model(model_name: str) -> bool:
    """Verifica se modelo spaCy está instalado."""
    
def download_spacy_model(model_name: str) -> bool:
    """Download automático do modelo spaCy."""

✅ Critérios de Aceitação

  • Arquivo criado com estrutura base
  • Interfaces bem definidas
  • Funções utilitárias implementadas
  • Documentação inline completa
  • Testes unitários básicos
  • Compatível com Python 3.10+

🔗 Relacionado

⏱️ Estimativa

4 horas - Estrutura base e utilitários

🧪 Testes

  • Interfaces funcionam corretamente
  • Utilitários detectam spaCy adequadamente
  • NoProcessor mantém comportamento atual
  • Documentação está completa

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions