Downloads · 30 days
4
5% of all-time downloads
itman-inteli/nsync-sprint2-classificador-intencoes
nsync-sprint2-classificador-intencoes is a text classification model from itman-inteli. Use it when you need a label for a piece of text. It is set up for transformers. The card lists the license as mit.
Modelo híbrido BERT + Random Forest para classificação automática de intenções em mensagens de atendimento ao cliente em português brasileiro.
Downloads · 30 days
4
5% of all-time downloads
All-time downloads
84
Public
Repo size
17 MB
Likes
0
Public
Click a slice to open those files.
.pkl17 MB · 100%
From the Hugging Face model README
Modelo híbrido BERT + Random Forest para classificação automática de intenções em mensagens de atendimento ao cliente em português brasileiro.
Sistema completo de classificação automática de intenções que combina:
neuralmind/bert-base-portuguese-cased) para embeddings semânticos| Categoria | Nome Legível | Exemplo |
|---|---|---|
duvida_produto | Dúvida sobre Produto | "Este produto é resistente à água?" |
rastreamento_pedido | Rastreamento de Pedido | "Onde está meu pedido #123?" |
agradecimento | Agradecimento | "Muito obrigada pela ajuda!" |
saudacao | Saudação | "Bom dia, como estão?" |
troca_devolucao | Troca/Devolução | "Quero trocar por outro tamanho" |
problema_tecnico | Problema Técnico | "O app não está funcionando" |
solicitacao_informacao | Solicitação de Informação | "Preciso de mais detalhes" |
reacao_emocional | Reação Emocional | "Que decepção!" |
interesse_produto | Interesse em Produto | "Gostaria de saber mais sobre..." |
solicitacao_contato | Solicitação de Contato | "Podem me ligar?" |
mensagem_sistema | Mensagem do Sistema | "Mensagem enviada automaticamente" |
nao_identificado | Não Identificado | Mensagens ambíguas |
reposicao_estoque | Reposição de Estoque | "Quando volta ao estoque?" |
confirmacao | Confirmação | "Sim, pode prosseguir" |
parceria_comercial | Parceria Comercial | "Interesse em revenda" |
evento_presencial | Evento Presencial | "Quando será o evento?" |
import pickle
import torch
import numpy as np
from transformers import AutoTokenizer, AutoModel
class ClassificadorIntencoes:
def __init__(self):
# Carregar BERT
self.tokenizer = AutoTokenizer.from_pretrained("neuralmind/bert-base-portuguese-cased")
self.bert = AutoModel.from_pretrained("neuralmind/bert-base-portuguese-cased")
# Carregar modelo treinado
with open('modelo_classificacao_intencoes.pkl', 'rb') as f:
self.classificador = pickle.load(f)
def gerar_embedding(self, texto):
inputs = self.tokenizer(texto, return_tensors="pt", padding=True,
truncation=True, max_length=128)
with torch.no_grad():
outputs = self.bert(**inputs)
embedding = outputs.last_hidden_state.mean(dim=1).numpy()
return embedding
def classificar(self, mensagem):
embedding = self.gerar_embedding(mensagem)
predicao = self.classificador.predict(embedding)[0]
probabilidades = self.classificador.predict_proba(embedding)[0]
return {
'intencao': predicao,
'confianca': float(probabilidades.max()),
'intencao_legivel': self.get_readable_name(predicao)
}
def get_readable_name(self, categoria):
mapping = {
"duvida_produto": "Dúvida sobre Produto",
"solicitacao_informacao": "Solicitação de Informação",
"reacao_emocional": "Reação Emocional",
"interesse_produto": "Interesse em Produto",
"agradecimento": "Agradecimento",
"rastreamento_pedido": "Rastreamento de Pedido",
"saudacao": "Saudação",
"solicitacao_contato": "Solicitação de Contato",
"mensagem_sistema": "Mensagem do Sistema",
"troca_devolucao": "Troca/Devolução",
"problema_tecnico": "Problema Técnico",
"nao_identificado": "Não Identificado",
"reposicao_estoque": "Reposição de Estoque",
"confirmacao": "Confirmação",
"parceria_comercial": "Parceria Comercial",
"evento_presencial": "Evento Presencial"
}
return mapping.get(categoria, categoria)
# Exemplo de uso
classificador = ClassificadorIntencoes()
resultado = classificador.classificar("Muito obrigada pela ajuda!")
print(f"Intenção: {resultado['intencao_legivel']}")
print(f"Confiança: {resultado['confianca']:.3f}")
mensagens_teste = [
"Bom dia, como posso ser ajudado?",
"Onde está meu pedido?",
"Muito obrigada!",
"Quero trocar este produto"
]
for msg in mensagens_teste:
resultado = classificador.classificar(msg)
print(f"'{msg}' → {resultado['intencao_legivel']} ({resultado['confianca']:.3f})")
[Mensagem] → [BERT Embeddings] → [Random Forest] → [Classificação + Confiança]
class_weight='balanced' para classes desbalanceadas@misc{nsync_classificador_intencoes,
title={Classificador de Intenções para Atendimento ao Cliente},
author={NSYNC Team},
year={2024},
publisher={Hugging Face},
url={https://huggingface.co/itman-inteli/nsync-sprint2-classificador-intencoes}
}
MIT License - Uso livre para projetos comerciais e acadêmicos.