| --- |
| language: |
| - pt |
| tags: |
| - sentiment-analysis |
| - nps |
| - text-classification |
| - portuguese |
| license: mit |
| pipeline_tag: text-classification |
| datasets: |
| - nps |
| - customer-feedback |
| --- |
| |
| # 🤖 BERT NPS Feedback Analyzer (PT-BR) |
|
|
| Este modelo é uma adaptação de `cardiffnlp/twitter-xlm-roberta-base-sentiment` voltada para a **análise de sentimentos em textos longos de NPS** (Net Promoter Score), com foco em avaliações técnicas, institucionais e operacionais típicas de ambientes corporativos. |
|
|
| --- |
|
|
| ## 🧠 Contexto do Problema |
|
|
| Frases de NPS corporativas em português tendem a ser extensas e mistas, contendo tanto elogios quanto críticas em uma mesma resposta. A maioria dos modelos tradicionais apresenta falhas ao interpretar esse tipo de conteúdo, classificando erroneamente como **negativo** textos que relatam **problemas já resolvidos** ou **experiências neutras**. |
|
|
| --- |
|
|
| ## 🏗️ Arquitetura do Modelo |
|
|
| - **Base**: [`cardiffnlp/twitter-xlm-roberta-base-sentiment`](https://huggingface.co/cardiffnlp/twitter-xlm-roberta-base-sentiment) |
| - **Arquitetura**: XLM-RoBERTa base (multilíngue, robusto para entradas longas) |
| - **Tarefa**: `text-classification` com 3 classes: |
| - `Negative` |
| - `Neutral` |
| - `Positive` |
|
|
| --- |
|
|
| ## 📥 Uso do Modelo |
|
|
| ### 🔧 Requisitos |
|
|
| ```bash |
| pip install transformers torch |
| ``` |
|
|
| ### 📦 Código de uso |
|
|
| ```python |
| from transformers import AutoTokenizer, AutoModelForSequenceClassification |
| import torch.nn.functional as F |
| import torch |
| |
| # Nome do modelo no Hugging Face Hub |
| modelo = "ViniciusKhan/bert-nps-feedback-analyzer" |
| |
| # Carregar modelo e tokenizer |
| tokenizer = AutoTokenizer.from_pretrained(modelo) |
| model = AutoModelForSequenceClassification.from_pretrained(modelo) |
| |
| # Texto de NPS para avaliação |
| texto = """ |
| Conversei com Alexandre em 20/06 e ele relatou insatisfação com os relatórios, pois vieram misturados. |
| O chamado foi resolvido e desde então me procura sempre que precisa. Está satisfeito com os serviços atuais. |
| """ |
| |
| # Tokenizar e inferir |
| inputs = tokenizer(texto, return_tensors="pt", truncation=True) |
| with torch.no_grad(): |
| outputs = model(**inputs) |
| probs = F.softmax(outputs.logits, dim=1) |
| |
| # Rótulos |
| classes = ['Negative', 'Neutral', 'Positive'] |
| classe_predita = classes[probs.argmax().item()] |
| |
| print("Sentimento:", classe_predita) |
| ``` |
|
|
| --- |
|
|
| ## ✅ Aplicações práticas |
|
|
| Este modelo é ideal para: |
|
|
| - Classificação de feedback de clientes em **SAC, helpdesk e pós-venda** |
| - Avaliação de **sentimento em pesquisas de satisfação (NPS)** |
| - Processamento automatizado de tickets e reclamações |
| - Sistemas de BI e dashboards com análise textual |
|
|
| --- |
|
|
| ## 🗂️ Estrutura do Repositório |
|
|
| | Arquivo | Descrição | |
| |----------------------|-------------------------------------| |
| | `pytorch_model.bin` | Pesos do modelo | |
| | `config.json` | Configuração do modelo | |
| | `tokenizer.json` | Vocabulário do tokenizer | |
| | `README.md` | Descrição técnica do modelo | |
|
|
| --- |
|
|
| ## 🧬 Dataset original do modelo base |
|
|
| O modelo base foi treinado com dados multilingues do Twitter, incluindo português, e adaptado para generalização ampla de sentimentos. A robustez do XLM-RoBERTa permite interpretar frases com vocabulário técnico e institucional mesmo sem fine-tuning adicional. |
|
|
| --- |
|
|
| ## 👨💻 Autor |
|
|
| **Vinicius de Souza Santos** |
| Cientista de Dados • IFSP • Especialista em Machine Learning aplicado a serviços e experiência do cliente |
| 🔗 [GitHub](https://github.com/ViniciusKanh) |
|
|
| --- |
|
|
| ## 📄 Licença |
|
|
| Este modelo é disponibilizado sob a licença MIT. |
|
|