Skip to content

macoaure/prp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

51 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PRP - Multimodel Text Classification

Projeto de Reconhecimento de Padrões — aplicação de classificação de texto com deep learning que implementa o método do artigo "An Efficient Data Classification Decision Based on Multimodel Deep Learning" (Hu et al., 2022).

O sistema combina múltiplas arquiteturas (DNN, RNN, CNN) e otimizadores com Model Fusion (fusão por votação majoritária) para classificação de texto.


O que é o projeto

  • Objetivo: classificação de texto usando várias redes neurais e fusão de modelos.
  • Arquiteturas: DNN (6 camadas, 512 neurônios), RNN (GRU, 4 camadas), CNN (6 conv + pooling).
  • Otimizadores: AdamDeviationCorrection, ImprovedSGD, RMSPropNesterov.
  • Model Fusion: ensemble de 9 modelos (3 arquiteturas × 3 otimizadores) com majority voting.
  • Dataset: 20Newsgroups (20 categorias, ~20k documentos); outros planejados (Reuters, WOS).
  • Stack: Streamlit (UI), PyTorch (modelos), SQLAlchemy/SQLite (dados), NLTK (pré-processamento), GloVe (embeddings).

Pré-requisitos

  • Python 3.10+ (recomendado 3.12+)
  • pip (ou outro gerenciador de pacotes)

Opcional para GPU:

  • CUDA (para treino com GPU)

Passo a passo: como rodar

1. Clonar e entrar no projeto

git clone git@github.com:macoaure/prp.git

2. Criar ambiente virtual

python -m venv .venv
source .venv/bin/activate   # Linux/macOS
# ou: .venv\Scripts\activate   # Windows

3. Instalar dependências

pip install -r requirements.txt

4. Banco de dados

O app usa SQLite em database/database.sqlite. Crie a pasta e as tabelas:

mkdir -p database
./bin/prp --create-tables

Se o bin/prp não for executável ou estiver em outro ambiente:

python -c "
from app.database import engine
from app.models.base import Base
from app.models.job import Job
from app.models.training import Training
from app.models.trained_data import TrainedData
Base.metadata.create_all(bind=engine)
print('Tabelas criadas.')
"

5. Subir a aplicação Streamlit

Opção A – script do projeto:

./bin/prp --run-streamlit

Opção B – Streamlit direto:

streamlit run app/app.py

A interface abre no navegador (geralmente http://localhost:8501).

6. Rodar o worker (treinamento)

Os jobs de treino são processados por um worker. Em outro terminal, com o mesmo ambiente ativado:

./bin/prp --run-worker

Vários workers (ex.: 4):

./bin/prp --run-worker --num-workers 4

Polling a cada 10 segundos:

./bin/prp --run-worker --polling-interval 10

Fluxo de uso na interface

  1. Configurações — Criar/editar configurações de treino (dataset, modelo, otimizador, hiperparâmetros, fusion).
  2. Enfileirar job — Na configuração desejada, usar “Queue Training Job”.
  3. Worker — Manter o worker rodando para processar jobs pendentes.
  4. Trabalhos — Acompanhar status (pending → running → completed/failed).
  5. Dados Treinados — Ver métricas, gráficos e comparações após jobs concluídos.

Comandos CLI (bin/prp)

Comando Descrição
--run-streamlit Sobe o app Streamlit
--run-worker Inicia o worker de jobs
--run-worker --num-workers N N workers em paralelo
--create-tables Cria tabelas no SQLite
--seed-db Popula banco com jobs de exemplo
--reset-db Recria banco e opcionalmente faz seed
--reset-db --no-seed Só recria tabelas, sem seed
--clear-jobs (com --seed-db) limpa jobs antes de seedar
--job-status pending|completed|failed|running|mixed Status dos jobs no seed
--num-jobs N N jobs no seed (ou um por config se omitir)
--polling-interval N Intervalo de polling do worker (segundos)
--version Mostra versão
--help Lista opções

Estrutura do projeto

prp/
├── app/
│   ├── app.py              # Entrada do Streamlit
│   ├── database.py         # Config SQLite/SQLAlchemy
│   ├── navigation.py       # Páginas e menu
│   ├── worker.py           # Processador de jobs
│   ├── command/            # Comandos (ex.: train)
│   ├── models/             # Modelos de dados e ML (DNN/RNN/CNN, training, job)
│   ├── pages/              # Páginas Streamlit (Configurações, Jobs, Dados Treinados)
│   └── utils/              # Pré-processamento, embeddings, loaders, migrações
├── database/               # SQLite (database.sqlite); criar manualmente
├── bin/
│   └── prp                 # CLI (streamlit, worker, create-tables, seed, reset)
├── requirements.txt
└── README.md

Variáveis de ambiente (opcional)

  • SQLALCHEMY_ECHO=1 — Ativa log de SQL (debug).
  • CUDA — PyTorch usa GPU se disponível; caso contrário, CPU.

Referências

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages