Sistema de classificação de mensagens como spam ou não spam (ham). O sistema tem a função de analisar o conteúdo das mensagens e determinar sua categoria, contribuindo para a redução do recebimento de mensagens indesejadas.
Este projeto foi desenvolvido como parte da disciplina de Processamento de Linguagem Natural, utilizando técnicas de Machine Learning para classificar SMS.
Spam-Classifier/
├── data/
│ └── spam.csv
├── notebooks/
│ └── Projeto_IA_Classificar_Spam.py
├── src/
│ ├── data_preprocessing.py
│ ├── model_training.py
│ └── main.py
├── .gitignore
├── README.md
└── requirements.txt
-
Clone o repositório:
git clone https://github.com/seu-usuario/Spam-Classifier.git cd Spam-Classifier -
Instale as dependências:
pip install -r requirements.txt
-
Fluxo de Trabalho
O projeto agora opera em três modos distintos:
train,evaluateepredict.Passo 1: Treinar o Modelo
Primeiro, você deve treinar um modelo e salvá-lo. O comando a seguir treina o modelo com a melhor configuração encontrada (Regressão Logística, Bag of Words e balanceamento de classes) e salva os artefatos na pasta
/models.python -m src.main train --model lr --vectorizer bow --balance
Você pode experimentar outras combinações, como
nb(Naive Bayes) etfidf.Passo 2: Avaliar o Modelo (Análise do
spam.csv)Para analisar a performance do modelo salvo em toda a base de dados, use o comando
evaluate. Ele irá gerar um relatório de performance e salvar um arquivoevaluation_results.csvna pasta/evaluationcom a previsão para cada mensagem do dataset.python -m src.main evaluate
Este passo permite uma análise detalhada de onde o modelo acerta e erra.
Passo 3: Prever Novas Mensagens (Testes Prontos)
Com o modelo treinado, você pode classificar novas mensagens instantaneamente usando o comando
predict.python -m src.main predict --message "Congratulations! You've won a $1000 gift card. Click here to claim."python -m src.main predict --message "Hi mom, I'll be home for dinner."
O conjunto de dados utilizado é o SMS Spam Collection Database, disponível no Kaggle. Ele contém 5,574 mensagens SMS rotuladas como "spam" ou "ham".