Projeto educacional, desenvolvido em parceria (backend + frontend), com o objetivo de estudar:
- Criação de APIs com Flask
- Leitura e filtragem de dados com Pandas
- Análise de sentimento usando Transformers (Hugging Face)
- Integração backend + frontend
O backend expõe rotas que permitem consultar reclamações de uma empresa a partir de um arquivo CSV e realizar uma análise de sentimento sobre essas reclamações.
BACK-END/
│
├── analyzer/
│ ├── __init__.py
│ └── analyzer.py
│
├── data/
│ └── basecompleta2025-12.csv
│
├── app.py
├── requirements.txt
└── README.md
- Python 3.10+
- Flask — API REST
- Pandas — Manipulação de dados
- Transformers (Hugging Face) — Análise de sentimento
- nlptown/bert-base-multilingual-uncased-sentiment — Modelo de NLP
git clone https://github.com/MarcosDasp/FlaskBackEnd
cd FlaskBackEndpython -m venv venv
# Windows
venv\Scripts\activate
# Linux / Mac
source venv/bin/activatepip install -r requirements.txt
⚠️ Observação: O primeiro uso da análise de sentimento pode demorar, pois o modelo será baixado automaticamente.
Para baixar o arquivo com os dados acesse o link abaixo:
https://dados.mj.gov.br/dataset/reclamacoes-do-consumidor-gov-br
É recomendado baixar a versão mais recente, porém fica ao critério do usuário.
Após baixar o arquivo, garanta que ele esteja na pasta data.
data/basecompleta2025-12.csv
Caso o nome seja diferente, atualizar a variavél CSV_PATH no arquivo analyzer.py.
Também é importante garantir que ele possui, no mínimo, as colunas:
Nome FantasiaProblema
python app.pyA API ficará disponível em:
http://localhost:5000
Retorna uma amostra de reclamações de uma empresa específica.
- Method:
POST - Content-Type:
application/json
{
"EMPRESA_ALVO": "Nome da Empresa"
}{
"data": [
{
"Nome Fantasia": "Empresa Exemplo",
"Problema": "Descrição da reclamação",
"...": "Outros campos do CSV"
}
]
}{
"error": "Erro ao consultar empresa",
"detail": "Nenhuma reclamação encontrada para a empresa 'Empresa X'."
}Executa a análise de sentimento das reclamações de uma empresa e retorna um índice de satisfação.
{
"EMPRESA_ALVO": "Nome da Empresa"
}{
"empresa": "Nome da Empresa",
"classificacao": "positiva | neutra | negativa",
"indice_satisfacao": "0.42"
}- O modelo retorna notas de 1 a 5 estrelas
- Conversão usada:
- 1–2 estrelas: Negativo
- 3 estrelas: Neutro
- 4–5 estrelas: Positivo
O índice de satisfação é calculado como:
(quantidade_positivos - quantidade_negativos) / total
- A amostra padrão é limitada a 200 reclamações por empresa
- O filtro por empresa usa
str.contains, portanto não exige nome exato - O projeto não possui autenticação, pois é voltado exclusivamente para fins educacionais
Projeto de uso livre para estudos e aprendizado.